From 8e934450d88775acac0ec28089e8cf8b1e548138 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Mon, 7 Mar 2022 19:23:30 +0800 Subject: [PATCH] refactor: remove unnecessary default values normalized during validation (#6864) * refactor: remove unnecessary default values normalized during validation * more --- packages/docusaurus-mdx-loader/src/index.ts | 10 +-- .../src/collectRedirects.ts | 4 +- .../src/index.ts | 12 ++-- .../src/versions.ts | 2 +- .../src/index.ts | 4 +- packages/docusaurus-plugin-pwa/src/index.ts | 2 +- .../docusaurus-theme-classic/src/index.ts | 7 +- .../src/theme/BlogArchivePage/index.tsx | 13 ++-- .../src/theme/Footer/index.tsx | 72 ++++++++----------- .../src/theme/ThemedImage/index.tsx | 2 +- .../src/validateThemeConfig.ts | 2 +- .../src/utils/useThemeConfig.ts | 4 +- packages/docusaurus-types/src/index.d.ts | 12 ++-- .../src/client/exports/BrowserOnly.tsx | 2 +- .../docusaurus/src/client/exports/Link.tsx | 2 +- .../docusaurus/src/client/serverEntry.tsx | 8 +-- .../docusaurus/src/commands/commandUtils.ts | 2 +- packages/docusaurus/src/commands/start.ts | 11 ++- .../__snapshots__/config.test.ts.snap | 12 ++++ .../docusaurus/src/server/configValidation.ts | 48 ++++++++----- .../src/server/html-tags/htmlTags.ts | 2 +- .../docusaurus/src/server/html-tags/index.ts | 2 +- packages/docusaurus/src/server/index.ts | 38 +++++----- .../server/presets/__tests__/index.test.ts | 4 +- .../docusaurus/src/server/presets/index.ts | 3 +- .../src/webpack/plugins/CleanWebpackPlugin.ts | 2 +- packages/lqip-loader/src/index.ts | 2 +- 27 files changed, 146 insertions(+), 138 deletions(-) diff --git a/packages/docusaurus-mdx-loader/src/index.ts b/packages/docusaurus-mdx-loader/src/index.ts index 7a704ef847..4188651a09 100644 --- a/packages/docusaurus-mdx-loader/src/index.ts +++ b/packages/docusaurus-mdx-loader/src/index.ts @@ -114,7 +114,7 @@ export default async function mdxLoader( ): Promise { const callback = this.async(); const filePath = this.resourcePath; - const reqOptions = this.getOptions() || {}; + const reqOptions = this.getOptions() ?? {}; const {frontMatter, content: contentWithTitle} = parseFrontMatter(fileString); @@ -127,7 +127,7 @@ export default async function mdxLoader( const options: Options = { ...reqOptions, remarkPlugins: [ - ...(reqOptions.beforeDefaultRemarkPlugins || []), + ...(reqOptions.beforeDefaultRemarkPlugins ?? []), ...DEFAULT_OPTIONS.remarkPlugins, [ transformImage, @@ -143,12 +143,12 @@ export default async function mdxLoader( siteDir: reqOptions.siteDir, }, ], - ...(reqOptions.remarkPlugins || []), + ...(reqOptions.remarkPlugins ?? []), ], rehypePlugins: [ - ...(reqOptions.beforeDefaultRehypePlugins || []), + ...(reqOptions.beforeDefaultRehypePlugins ?? []), ...DEFAULT_OPTIONS.rehypePlugins, - ...(reqOptions.rehypePlugins || []), + ...(reqOptions.rehypePlugins ?? []), ], filepath: filePath, }; diff --git a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts index 6ffd68da51..1ffb8e568e 100644 --- a/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts +++ b/packages/docusaurus-plugin-client-redirects/src/collectRedirects.ts @@ -166,9 +166,7 @@ function createCreateRedirectsOptionRedirects( createRedirects: PluginOptions['createRedirects'], ): RedirectMetadata[] { function createPathRedirects(path: string): RedirectMetadata[] { - const fromsMixed: string | string[] = createRedirects - ? createRedirects(path) || [] - : []; + const fromsMixed: string | string[] = createRedirects?.(path) ?? []; const froms: string[] = typeof fromsMixed === 'string' ? [fromsMixed] : fromsMixed; diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index a1f92f23e9..2027f068ff 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -546,13 +546,11 @@ export default async function pluginContentBlog( const headTags: HtmlTags = []; feedTypes.forEach((feedType) => { - const feedConfig = feedsConfig[feedType] || {}; - - if (!feedsConfig) { - return; - } - - const {type, path: feedConfigPath, title: feedConfigTitle} = feedConfig; + const { + type, + path: feedConfigPath, + title: feedConfigTitle, + } = feedsConfig[feedType]; headTags.push({ tagName: 'link', diff --git a/packages/docusaurus-plugin-content-docs/src/versions.ts b/packages/docusaurus-plugin-content-docs/src/versions.ts index 26fd63773c..08dbb0a796 100644 --- a/packages/docusaurus-plugin-content-docs/src/versions.ts +++ b/packages/docusaurus-plugin-content-docs/src/versions.ts @@ -537,7 +537,7 @@ export function filterVersions( ): string[] { if (options.onlyIncludeVersions) { return versionNamesUnfiltered.filter((name) => - (options.onlyIncludeVersions || []).includes(name), + options.onlyIncludeVersions!.includes(name), ); } return versionNamesUnfiltered; diff --git a/packages/docusaurus-plugin-content-pages/src/index.ts b/packages/docusaurus-plugin-content-pages/src/index.ts index 9cc4e389b4..d7f4c48f90 100644 --- a/packages/docusaurus-plugin-content-pages/src/index.ts +++ b/packages/docusaurus-plugin-content-pages/src/index.ts @@ -47,7 +47,7 @@ export default async function pluginContentPages( ): Promise> { if (options.admonitions) { options.remarkPlugins = options.remarkPlugins.concat([ - [admonitions, options.admonitions || {}], + [admonitions, options.admonitions], ]); } const { @@ -77,7 +77,7 @@ export default async function pluginContentPages( name: 'docusaurus-plugin-content-pages', getPathsToWatch() { - const {include = []} = options; + const {include} = options; return getContentPathList(contentPaths).flatMap((contentPath) => include.map((pattern) => `${contentPath}/${pattern}`), ); diff --git a/packages/docusaurus-plugin-pwa/src/index.ts b/packages/docusaurus-plugin-pwa/src/index.ts index e099ec0411..fa94328d28 100644 --- a/packages/docusaurus-plugin-pwa/src/index.ts +++ b/packages/docusaurus-plugin-pwa/src/index.ts @@ -191,7 +191,7 @@ export default function pluginPWA( '**/*.{woff,woff2,eot,ttf,otf}', // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - ...(injectManifest.globPatterns || []), + ...(injectManifest.globPatterns ?? []), ], // those attributes are not overrideable swDest, diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index c401e48ddb..d5066c5d4f 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -97,16 +97,15 @@ export default function docusaurusThemeClassic( options: Options, ): Plugin { const { - siteConfig: {themeConfig: roughlyTypedThemeConfig}, i18n: {currentLocale, localeConfigs}, } = context; - const themeConfig = (roughlyTypedThemeConfig || {}) as ThemeConfig; + const themeConfig = context.siteConfig.themeConfig as ThemeConfig; const { announcementBar, colorMode, - prism: {additionalLanguages = []} = {}, + prism: {additionalLanguages}, } = themeConfig; - const {customCss} = options || {}; + const {customCss} = options ?? {}; const {direction} = localeConfigs[currentLocale]!; return { diff --git a/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx b/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx index dda63da77c..f10c59b191 100644 --- a/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/BlogArchivePage/index.tsx @@ -50,14 +50,11 @@ function YearsSection({years}: {years: YearProp[]}) { } function listPostsByYears(blogPosts: readonly ArchiveBlogPost[]): YearProp[] { - const postsByYear: Map = blogPosts.reduceRight( - (posts, post) => { - const year = post.metadata.date.split('-')[0]; - const yearPosts = posts.get(year) || []; - return posts.set(year, [post, ...yearPosts]); - }, - new Map(), - ); + const postsByYear = blogPosts.reduceRight((posts, post) => { + const year = post.metadata.date.split('-')[0]!; + const yearPosts = posts.get(year) ?? []; + return posts.set(year, [post, ...yearPosts]); + }, new Map()); return Array.from(postsByYear, ([year, posts]) => ({ year, diff --git a/packages/docusaurus-theme-classic/src/theme/Footer/index.tsx b/packages/docusaurus-theme-classic/src/theme/Footer/index.tsx index 8b53fb3f90..568c2022de 100644 --- a/packages/docusaurus-theme-classic/src/theme/Footer/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/Footer/index.tsx @@ -15,10 +15,10 @@ import { type MultiColumnFooter, type SimpleFooter, } from '@docusaurus/theme-common'; -import useBaseUrl from '@docusaurus/useBaseUrl'; +import useBaseUrl, {useBaseUrlUtils} from '@docusaurus/useBaseUrl'; import isInternalUrl from '@docusaurus/isInternalUrl'; import styles from './styles.module.css'; -import ThemedImage, {type Props as ThemedImageProps} from '@theme/ThemedImage'; +import ThemedImage from '@theme/ThemedImage'; import IconExternalLink from '@theme/IconExternalLink'; function FooterLink({ @@ -54,21 +54,35 @@ function FooterLink({ ); } -function FooterLogo({ - sources, - alt, - width, - height, -}: Pick) { - return ( +function FooterLogo({logo}: {logo: SimpleFooter['logo']}) { + const {withBaseUrl} = useBaseUrlUtils(); + if (!logo?.src) { + return null; + } + const sources = { + light: withBaseUrl(logo.src), + dark: withBaseUrl(logo.srcDark ?? logo.src), + }; + const image = ( ); + return ( +
+ {logo.href ? ( + + {image} + + ) : ( + image + )} +
+ ); } function MultiColumnLinks({links}: {links: MultiColumnFooter['links']}) { @@ -136,16 +150,10 @@ function isMultiColumnFooterLinks( function Footer(): JSX.Element | null { const {footer} = useThemeConfig(); - - const {copyright, links = [], logo = {}} = footer || {}; - const sources = { - light: useBaseUrl(logo.src), - dark: useBaseUrl(logo.srcDark || logo.src), - }; - if (!footer) { return null; } + const {copyright, links, logo} = footer; return (