mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-13 00:57:53 +02:00
refactor: improve types (#6866)
This commit is contained in:
parent
8e934450d8
commit
a4e37c4054
4 changed files with 26 additions and 50 deletions
|
@ -189,8 +189,7 @@ export default function pluginPWA(
|
|||
'**/*.{js,json,css,html}',
|
||||
'**/*.{png,jpg,jpeg,gif,svg,ico}',
|
||||
'**/*.{woff,woff2,eot,ttf,otf}',
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
// @ts-expect-error: internal API?
|
||||
...(injectManifest.globPatterns ?? []),
|
||||
],
|
||||
// those attributes are not overrideable
|
||||
|
|
51
packages/docusaurus-types/src/index.d.ts
vendored
51
packages/docusaurus-types/src/index.d.ts
vendored
|
@ -226,18 +226,15 @@ export interface Props extends LoadContext, InjectedHtmlTags {
|
|||
|
||||
export interface PluginContentLoadedActions {
|
||||
addRoute: (config: RouteConfig) => void;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
createData: (name: string, data: any) => Promise<string>;
|
||||
createData: (name: string, data: string) => Promise<string>;
|
||||
setGlobalData: <T = unknown>(data: T) => void;
|
||||
}
|
||||
|
||||
export type AllContent = Record<
|
||||
string, // plugin name
|
||||
Record<
|
||||
string, // plugin id
|
||||
unknown // plugin data
|
||||
>
|
||||
>;
|
||||
export type AllContent = {
|
||||
[pluginName: string]: {
|
||||
[pluginID: string]: unknown;
|
||||
};
|
||||
};
|
||||
|
||||
// TODO improve type (not exposed by postcss-loader)
|
||||
export type PostCssOptions = Record<string, unknown> & {plugins: unknown[]};
|
||||
|
@ -245,12 +242,11 @@ export type PostCssOptions = Record<string, unknown> & {plugins: unknown[]};
|
|||
export interface Plugin<Content = unknown> {
|
||||
name: string;
|
||||
loadContent?: () => Promise<Content>;
|
||||
contentLoaded?: ({
|
||||
content,
|
||||
actions,
|
||||
}: {
|
||||
content: Content; // the content loaded by this plugin instance
|
||||
allContent: AllContent; // content loaded by ALL the plugins
|
||||
contentLoaded?: (args: {
|
||||
/** the content loaded by this plugin instance */
|
||||
content: Content; //
|
||||
/** content loaded by ALL the plugins */
|
||||
allContent: AllContent;
|
||||
actions: PluginContentLoadedActions;
|
||||
}) => Promise<void>;
|
||||
routesLoaded?: (routes: RouteConfig[]) => void; // TODO remove soon, deprecated (alpha-60)
|
||||
|
@ -269,7 +265,7 @@ export interface Plugin<Content = unknown> {
|
|||
getPathsToWatch?: () => string[];
|
||||
getClientModules?: () => string[];
|
||||
extendCli?: (cli: CommanderStatic) => void;
|
||||
injectHtmlTags?: ({content}: {content: Content}) => {
|
||||
injectHtmlTags?: (args: {content: Content}) => {
|
||||
headTags?: HtmlTags;
|
||||
preBodyTags?: HtmlTags;
|
||||
postBodyTags?: HtmlTags;
|
||||
|
@ -277,28 +273,13 @@ export interface Plugin<Content = unknown> {
|
|||
// TODO before/afterDevServer implementation
|
||||
|
||||
// translations
|
||||
getTranslationFiles?: ({
|
||||
content,
|
||||
}: {
|
||||
content: Content;
|
||||
}) => Promise<TranslationFiles>;
|
||||
getDefaultCodeTranslationMessages?: () => Promise<
|
||||
Record<
|
||||
string, // id
|
||||
string // message
|
||||
>
|
||||
>;
|
||||
translateContent?: ({
|
||||
content,
|
||||
translationFiles,
|
||||
}: {
|
||||
getTranslationFiles?: (args: {content: Content}) => Promise<TranslationFiles>;
|
||||
getDefaultCodeTranslationMessages?: () => Promise<{[id: string]: string}>;
|
||||
translateContent?: (args: {
|
||||
content: Content; // the content loaded by this plugin instance
|
||||
translationFiles: TranslationFiles;
|
||||
}) => Content;
|
||||
translateThemeConfig?: ({
|
||||
themeConfig,
|
||||
translationFiles,
|
||||
}: {
|
||||
translateThemeConfig?: (args: {
|
||||
themeConfig: ThemeConfig;
|
||||
translationFiles: TranslationFiles;
|
||||
}) => ThemeConfig;
|
||||
|
|
|
@ -23,16 +23,7 @@ export default function preload(
|
|||
const matches = matchRoutes(routes, pathname);
|
||||
|
||||
return Promise.all(
|
||||
matches.map((match) => {
|
||||
const {component} = match.route;
|
||||
|
||||
// @ts-expect-error: ComponentCreator injected this method.
|
||||
if (component && component.preload) {
|
||||
// @ts-expect-error: checked above.
|
||||
return component.preload();
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}),
|
||||
// @ts-expect-error: ComponentCreator injected this method.
|
||||
matches.map((match) => match.route.component?.preload?.()),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -236,15 +236,20 @@ export function applyConfigurePostCss(
|
|||
return config;
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Error {
|
||||
/** @see https://webpack.js.org/api/node/#error-handling */
|
||||
details: unknown;
|
||||
}
|
||||
}
|
||||
|
||||
export function compile(config: Configuration[]): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const compiler = webpack(config);
|
||||
compiler.run((err, stats) => {
|
||||
if (err) {
|
||||
logger.error(err.stack || err);
|
||||
// @ts-expect-error: see https://webpack.js.org/api/node/#error-handling
|
||||
if (err.details) {
|
||||
// @ts-expect-error: see https://webpack.js.org/api/node/#error-handling
|
||||
logger.error(err.details);
|
||||
}
|
||||
reject(err);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue