Skip to content

Commit

Permalink
refactor: improve types (#6866)
Browse files Browse the repository at this point in the history
  • Loading branch information
Josh-Cena authored Mar 7, 2022
1 parent 8e93445 commit a4e37c4
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 50 deletions.
3 changes: 1 addition & 2 deletions packages/docusaurus-plugin-pwa/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
51 changes: 16 additions & 35 deletions packages/docusaurus-types/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,31 +226,27 @@ 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[]};

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)
Expand All @@ -269,36 +265,21 @@ 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;
};
// 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;
Expand Down
13 changes: 2 additions & 11 deletions packages/docusaurus/src/client/preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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?.()),
);
}
9 changes: 7 additions & 2 deletions packages/docusaurus/src/webpack/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit a4e37c4

Please sign in to comment.