diff --git a/packages/docusaurus-theme-classic/src/theme/hooks/useWindowSize.ts b/packages/docusaurus-theme-classic/src/theme/hooks/useWindowSize.ts index 330869965fb4..84e60b168b58 100644 --- a/packages/docusaurus-theme-classic/src/theme/hooks/useWindowSize.ts +++ b/packages/docusaurus-theme-classic/src/theme/hooks/useWindowSize.ts @@ -51,9 +51,8 @@ function useWindowSize(): WindowSize { setWindowSize(getWindowSize()); } - // @ts-expect-error: annoying TS setTimeout typing... - const timeout: number | undefined = DevSimulateSSR - ? setTimeout(updateWindowSize, 1000) + const timeout = DevSimulateSSR + ? window.setTimeout(updateWindowSize, 1000) : undefined; window.addEventListener('resize', updateWindowSize); diff --git a/packages/docusaurus-theme-classic/src/types.d.ts b/packages/docusaurus-theme-classic/src/types.d.ts index cabd03ed3e94..b1f9dba5d5f3 100644 --- a/packages/docusaurus-theme-classic/src/types.d.ts +++ b/packages/docusaurus-theme-classic/src/types.d.ts @@ -778,7 +778,7 @@ declare module '@theme/TagsListByLetter' { } declare module '@theme/TagsListInline' { - export type Tag = Readonly<{label: string; permalink}>; + export type Tag = Readonly<{label: string; permalink: string}>; export interface Props { readonly tags: readonly Tag[]; } diff --git a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx index 4be84b641d50..bcfd8e563ddb 100644 --- a/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx +++ b/packages/docusaurus-theme-common/src/components/Collapsible/index.tsx @@ -189,7 +189,7 @@ function CollapsibleBase({ return ( { diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index cbba730789b1..e21f77c13123 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -18,7 +18,6 @@ import { TranslationFile, } from '@docusaurus/types'; -// @ts-expect-error: no typedefs :s import resolvePathnameUnsafe from 'resolve-pathname'; import {posixPath as posixPathImport} from './posixPath'; diff --git a/packages/docusaurus-utils/src/types.d.ts b/packages/docusaurus-utils/src/types.d.ts new file mode 100644 index 000000000000..79a7896f34cf --- /dev/null +++ b/packages/docusaurus-utils/src/types.d.ts @@ -0,0 +1,10 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +declare module 'resolve-pathname' { + export default function resolvePathname(to: string, from?: string): string; +} diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 939c72d33ec2..2e681c6daf3c 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -35,7 +35,7 @@ "@types/copy-webpack-plugin": "^8.0.1", "@types/css-minimizer-webpack-plugin": "^3.0.2", "@types/detect-port": "^1.3.0", - "@types/mini-css-extract-plugin": "^2.3.0", + "@types/mini-css-extract-plugin": "^1.4.3", "@types/module-alias": "^2.0.1", "@types/nprogress": "^0.2.0", "@types/react-dom": "^17.0.9", diff --git a/packages/docusaurus/src/choosePort.ts b/packages/docusaurus/src/choosePort.ts index 1a6583726836..0302b43acf94 100644 --- a/packages/docusaurus/src/choosePort.ts +++ b/packages/docusaurus/src/choosePort.ts @@ -87,8 +87,7 @@ export default async function choosePort( host: string, defaultPort: number, ): Promise { - // @ts-expect-error: bad lib typedef? - return detect(defaultPort, host).then( + return detect({port: defaultPort, hostname: host}).then( (port) => new Promise((resolve) => { if (port === defaultPort) { diff --git a/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx b/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx index 98701a456cec..24e20d745440 100644 --- a/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx +++ b/packages/docusaurus/src/client/exports/__tests__/Translate.test.tsx @@ -23,6 +23,7 @@ describe('translate', () => { }); test('reject when no id or message', () => { + // TODO tests are not resolving type defs correctly // @ts-expect-error: TS should protect when both id/message are missing expect(() => translate({})).toThrowErrorMatchingInlineSnapshot( `"Docusaurus translation declarations must have at least a translation id or a default translation message"`, diff --git a/packages/docusaurus/src/types.d.ts b/packages/docusaurus/src/types.d.ts index 57e8b4c0a8a4..d543d4c85218 100644 --- a/packages/docusaurus/src/types.d.ts +++ b/packages/docusaurus/src/types.d.ts @@ -9,7 +9,9 @@ declare module 'remark-admonitions'; declare module 'react-loadable-ssr-addon-v5-slorber'; -declare module 'resolve-pathname'; +declare module 'resolve-pathname' { + export default function resolvePathname(to: string, from?: string): string; +} declare module '@slorber/static-site-generator-webpack-plugin'; diff --git a/packages/docusaurus/src/webpack/utils.ts b/packages/docusaurus/src/webpack/utils.ts index f6e02283d996..4d75cb0d40c0 100644 --- a/packages/docusaurus/src/webpack/utils.ts +++ b/packages/docusaurus/src/webpack/utils.ts @@ -10,7 +10,6 @@ import { mergeWithCustomize, customizeArray, customizeObject, - CustomizeRule, } from 'webpack-merge'; import webpack, { Configuration, @@ -224,8 +223,7 @@ export function applyConfigureWebpack( content, ); if (res && typeof res === 'object') { - // @ts-expect-error: annoying error due to enums: https://github.com/survivejs/webpack-merge/issues/179 - const customizeRules: Record = mergeStrategy ?? {}; + const customizeRules = mergeStrategy ?? {}; return mergeWithCustomize({ customizeArray: customizeArray(customizeRules), customizeObject: customizeObject(customizeRules), diff --git a/yarn.lock b/yarn.lock index 3ceb217f44c9..bfceb86164c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4280,10 +4280,10 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/mini-css-extract-plugin@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@types/mini-css-extract-plugin/-/mini-css-extract-plugin-2.3.0.tgz#2637bc09347ffa21b75f91b93dd00ce3d3971872" - integrity sha512-DeEkl1HsCDij3P7tfIWhQENVXz4wE17Ew0+5+KRh5HAcFcIZMfQg4HxKwEIqulVALYyv7JKisn4BPu3f7OHPVQ== +"@types/mini-css-extract-plugin@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@types/mini-css-extract-plugin/-/mini-css-extract-plugin-1.4.3.tgz#4907ee3953fecd199fab24ef056dabef51ff19a2" + integrity sha512-jyOSVaF4ie2jUGr1uohqeyDrp7ktRthdFxDKzTgbPZtl0QI5geEopW7UKD/DEfn0XgV1KEq/RnZlUmnrEAWbmg== dependencies: "@types/node" "*" tapable "^2.2.0" @@ -20371,9 +20371,9 @@ webpack-sources@^3.2.0: integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== webpack@^5, webpack@^5.1.0, webpack@^5.37.0, webpack@^5.40.0: - version "5.54.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.54.0.tgz#629f0cd14c7a4340af758a3c7cef25c50670ae4d" - integrity sha512-MAVKJMsIUotOQKzFOmN8ZkmMlj7BOyjDU6t1lomW9dWOme5WTStzGa3HMLdV1KYD1AiFETGsznL4LMSvj4tukw== + version "5.59.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c" + integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50"