Skip to content

Commit

Permalink
fix: fix a lot of declaration semantic errors (#7194)
Browse files Browse the repository at this point in the history
  • Loading branch information
Josh-Cena authored Apr 17, 2022
1 parent b154318 commit 7f06857
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 63 deletions.
8 changes: 4 additions & 4 deletions packages/docusaurus-mdx-loader/src/deps.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@
// TODO Types provided by MDX 2.0 https://github.com/mdx-js/mdx/blob/main/packages/mdx/types/index.d.ts
declare module '@mdx-js/mdx' {
import type {Processor} from 'unified';
import type {RemarkOrRehypePlugin} from '@docusaurus/mdx-loader';
import type {MDXPlugin} from '@docusaurus/mdx-loader';

export type Options = {
filepath?: string;
skipExport?: boolean;
wrapExport?: string;
remarkPlugins?: RemarkOrRehypePlugin[];
rehypePlugins?: RemarkOrRehypePlugin[];
remarkPlugins?: MDXPlugin[];
rehypePlugins?: MDXPlugin[];
};

export function sync(content: string, options?: Options): string;
export function createMdxAstCompiler(options?: Options): Processor;
export function createCompiler(options?: Options): Processor;
export default function mdx(
content: string,
options?: mdx.Options,
options?: Options,
): Promise<string>;
}
82 changes: 40 additions & 42 deletions packages/docusaurus-plugin-content-blog/src/feed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@

import {Feed, type Author as FeedAuthor, type Item as FeedItem} from 'feed';
import type {BlogPost} from './types';
import {
normalizeUrl,
mapAsyncSequential,
readOutputHTMLFile,
} from '@docusaurus/utils';
import {normalizeUrl, readOutputHTMLFile} from '@docusaurus/utils';
import {load as cheerioLoad} from 'cheerio';
import type {DocusaurusConfig} from '@docusaurus/types';
import path from 'path';
Expand Down Expand Up @@ -61,46 +57,48 @@ async function generateBlogFeed({
return {name: author.name, link: author.url, email: author.email};
}

await mapAsyncSequential(blogPosts, async (post) => {
const {
id,
metadata: {
await Promise.all(
blogPosts.map(async (post) => {
const {
id,
metadata: {
title: metadataTitle,
permalink,
date,
description,
authors,
tags,
},
} = post;

const content = await readOutputHTMLFile(
permalink.replace(siteConfig.baseUrl, ''),
outDir,
siteConfig.trailingSlash,
);
const $ = cheerioLoad(content);

const feedItem: FeedItem = {
title: metadataTitle,
permalink,
id,
link: normalizeUrl([siteUrl, permalink]),
date,
description,
authors,
tags,
},
} = post;

const content = await readOutputHTMLFile(
permalink.replace(siteConfig.baseUrl, ''),
outDir,
siteConfig.trailingSlash,
);
const $ = cheerioLoad(content);

const feedItem: FeedItem = {
title: metadataTitle,
id,
link: normalizeUrl([siteUrl, permalink]),
date,
description,
// Atom feed demands the "term", while other feeds use "name"
category: tags.map((tag) => ({name: tag.label, term: tag.label})),
content: $(`#${blogPostContainerID}`).html()!,
};

// json1() method takes the first item of authors array
// it causes an error when authors array is empty
const feedItemAuthors = authors.map(toFeedAuthor);
if (feedItemAuthors.length > 0) {
feedItem.author = feedItemAuthors;
}

feed.addItem(feedItem);
});
// Atom feed demands the "term", while other feeds use "name"
category: tags.map((tag) => ({name: tag.label, term: tag.label})),
content: $(`#${blogPostContainerID}`).html()!,
};

// json1() method takes the first item of authors array
// it causes an error when authors array is empty
const feedItemAuthors = authors.map(toFeedAuthor);
if (feedItemAuthors.length > 0) {
feedItem.author = feedItemAuthors;
}

return feedItem;
}),
).then((items) => items.forEach(feed.addItem));

return feed;
}
Expand Down
3 changes: 2 additions & 1 deletion packages/docusaurus-plugin-ideal-image/src/deps.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ declare module '@endiliey/react-ideal-image' {

type ThemeKey = 'placeholder' | 'img' | 'icon' | 'noscript';

export interface ImageProps extends ComponentProps<'img'> {
export interface ImageProps
extends Omit<ComponentProps<'img'>, 'srcSet' | 'placeholder'> {
/**
* This function decides what icon to show based on the current state of the
* component.
Expand Down
2 changes: 1 addition & 1 deletion packages/docusaurus-plugin-pwa/src/plugin-pwa.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ declare module '@docusaurus/plugin-pwa' {
tagName: string;
href?: string;
content?: string;
[attributeName: string]: string | boolean;
[attributeName: string]: string | boolean | undefined;
}[];
/**
* Useful for additional Workbox rules. You can do whatever a service worker
Expand Down
3 changes: 2 additions & 1 deletion packages/docusaurus-theme-live-codeblock/src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
/// <reference types="@docusaurus/module-type-aliases" />

declare module '@theme-init/CodeBlock' {
import type CodeBlock, {Props as BaseProps} from '@theme/CodeBlock';
import type CodeBlock from '@theme/CodeBlock';
import type {Props as BaseProps} from '@theme/CodeBlock';

export interface Props extends BaseProps {
live?: boolean;
Expand Down
2 changes: 1 addition & 1 deletion packages/docusaurus/src/commands/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ async function buildLocale({
new ReactLoadableSSRAddon({
filename: clientManifestPath,
}),
].filter(Boolean),
].filter(<T>(x: T | undefined | false): x is T => Boolean(x)),
},
);

Expand Down
2 changes: 1 addition & 1 deletion packages/docusaurus/src/commands/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ You can also set the deploymentBranch property in docusaurus.config.js .`);
if (!cliOptions.skipBuild) {
// Build site, then push to deploymentBranch branch of specified repo.
try {
await runDeploy(await build(siteDir, cliOptions, false));
await build(siteDir, cliOptions, false).then(runDeploy);
} catch (err) {
logger.error('Deployment of the build output failed.');
throw err;
Expand Down
25 changes: 13 additions & 12 deletions packages/docusaurus/src/deps.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
declare module 'remark-admonitions';

declare module 'react-loadable-ssr-addon-v5-slorber' {
import type {WebpackPluginInstance, Compiler} from 'webpack';

type Asset = {
file: string;
hash: string;
Expand All @@ -26,15 +28,14 @@ declare module 'react-loadable-ssr-addon-v5-slorber' {
modulesToBeLoaded: string[],
): {js: Asset[]; css: Asset[]};

type ReactLoadableSSRAddon = {
new (props: {filename: string});
};

const plugin: ReactLoadableSSRAddon;
export default plugin;
export default class ReactLoadableSSRAddon implements WebpackPluginInstance {
constructor(props: {filename: string});
apply(compiler: Compiler): void;
}
}

declare module '@slorber/static-site-generator-webpack-plugin' {
import type {WebpackPluginInstance, Compiler} from 'webpack';
import type {HelmetServerState} from 'react-helmet-async';

export type Locals = {
Expand All @@ -53,18 +54,18 @@ declare module '@slorber/static-site-generator-webpack-plugin' {
noIndex: boolean;
};

type StaticSiteGeneratorPlugin = {
new (props: {
export default class StaticSiteGeneratorPlugin
implements WebpackPluginInstance
{
constructor(props: {
entry: string;
locals: Locals;
paths: string[];
preferFoldersOutput?: boolean;
globals: {[key: string]: unknown};
});
};

const plugin: StaticSiteGeneratorPlugin;
export default plugin;
apply(compiler: Compiler): void;
}
}

declare module 'webpack/lib/HotModuleReplacementPlugin' {
Expand Down

0 comments on commit 7f06857

Please sign in to comment.