diff --git a/.github/workflows/v2-tests.yml b/.github/workflows/v2-tests.yml index 8353d64fa0..4f6546d86a 100644 --- a/.github/workflows/v2-tests.yml +++ b/.github/workflows/v2-tests.yml @@ -28,3 +28,5 @@ jobs: install-command: yarn - name: Test run: yarn test + - name: TypeCheck website + run: yarn workspace website tsc diff --git a/packages/docusaurus-init/templates/classic-typescript/package.json b/packages/docusaurus-init/templates/classic-typescript/package.json index be7bf047b5..b9c0c4b704 100644 --- a/packages/docusaurus-init/templates/classic-typescript/package.json +++ b/packages/docusaurus-init/templates/classic-typescript/package.json @@ -28,7 +28,7 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-beta.5", - "@tsconfig/docusaurus": "^1.0.3", + "@tsconfig/docusaurus": "^1.0.4", "@types/react": "^17.0.14", "@types/react-helmet": "^6.1.2", "@types/react-router-dom": "^5.1.8", diff --git a/packages/docusaurus-init/templates/classic-typescript/tsconfig.json b/packages/docusaurus-init/templates/classic-typescript/tsconfig.json index 2070d53f0d..6f4756980d 100644 --- a/packages/docusaurus-init/templates/classic-typescript/tsconfig.json +++ b/packages/docusaurus-init/templates/classic-typescript/tsconfig.json @@ -2,9 +2,6 @@ // This file is not used in compilation. It is here just for a nice editor experience. "extends": "@tsconfig/docusaurus/tsconfig.json", "compilerOptions": { - "paths": { - "@site/*": ["./*"] - } - }, - "include": ["src/"] + "baseUrl": "." + } } diff --git a/packages/docusaurus-mdx-loader/src/types.d.ts b/packages/docusaurus-mdx-loader/src/types.d.ts index 8586ee3732..be027f7702 100644 --- a/packages/docusaurus-mdx-loader/src/types.d.ts +++ b/packages/docusaurus-mdx-loader/src/types.d.ts @@ -6,6 +6,9 @@ */ declare module '@docusaurus/mdx-loader' { + type RemarkOrRehypePlugin = + // eslint-disable-next-line @typescript-eslint/ban-types + [Function, Record] | Function; export interface RemarkAndRehypePluginOptions { remarkPlugins: RemarkOrRehypePlugin[]; rehypePlugins: string[]; @@ -18,7 +21,7 @@ declare module '@docusaurus/mdx-loader' { declare module '@mdx-js/mdx' { import type {Plugin, Processor} from 'unified'; - export namespace mdx { + namespace mdx { interface Options { filepath?: string; skipExport?: boolean; @@ -31,8 +34,7 @@ declare module '@mdx-js/mdx' { function createMdxAstCompiler(options?: Options): Processor; function createCompiler(options?: Options): Processor; } - export default function mdx( - content: string, - options?: mdx.Options, - ): Promise; + function mdx(content: string, options?: mdx.Options): Promise; + + export default mdx; } diff --git a/packages/docusaurus-plugin-content-blog/index.d.ts b/packages/docusaurus-plugin-content-blog/index.d.ts index e2e5d15c02..4c23e4ed0b 100644 --- a/packages/docusaurus-plugin-content-blog/index.d.ts +++ b/packages/docusaurus-plugin-content-blog/index.d.ts @@ -22,6 +22,7 @@ declare module '@theme/BlogSidebar' { declare module '@theme/BlogPostPage' { import type {BlogSidebar} from '@theme/BlogSidebar'; + import type {TOCItem} from '@docusaurus/types'; export type FrontMatter = import('./src/blogFrontMatter').BlogPostFrontMatter; export type Assets = import('./src/types').Assets; diff --git a/packages/docusaurus-plugin-content-docs/src/client/docsClientUtils.ts b/packages/docusaurus-plugin-content-docs/src/client/docsClientUtils.ts index 2b38ccfa5f..ddfe321f20 100644 --- a/packages/docusaurus-plugin-content-docs/src/client/docsClientUtils.ts +++ b/packages/docusaurus-plugin-content-docs/src/client/docsClientUtils.ts @@ -20,22 +20,11 @@ export type ActivePlugin = { pluginData: GlobalPluginData; }; -export type GetActivePluginOptions = {failfast?: boolean}; +export type GetActivePluginOptions = {failfast?: boolean}; // use fail-fast option if you know for sure one plugin instance is active // get the data of the plugin that is currently "active" // ie the docs of that plugin are currently browsed // it is useful to support multiple docs plugin instances -export function getActivePlugin( - allPluginDatas: Record, - pathname: string, - options: {failfast: true}, // use fail-fast option if you know for sure one plugin instance is active -): ActivePlugin; -export function getActivePlugin( - allPluginDatas: Record, - pathname: string, - options?: GetActivePluginOptions, -): ActivePlugin | undefined; - export function getActivePlugin( allPluginDatas: Record, pathname: string, diff --git a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts index 9d21d08fce..d64f5629f9 100644 --- a/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts +++ b/packages/docusaurus-plugin-content-docs/src/plugin-content-docs.d.ts @@ -166,6 +166,8 @@ declare module '@theme/DocPage' { } declare module '@theme/Seo' { + import type {ReactNode} from 'react'; + export type Props = { readonly title?: string; readonly description?: string; @@ -184,15 +186,16 @@ declare module '@theme/hooks/useDocs' { type ActivePlugin = import('./client/docsClientUtils').ActivePlugin; type ActiveDocContext = import('./client/docsClientUtils').ActiveDocContext; type DocVersionSuggestions = import('./client/docsClientUtils').DocVersionSuggestions; + type GetActivePluginOptions = import('./client/docsClientUtils').GetActivePluginOptions; export type {GlobalPluginData, GlobalVersion}; export const useAllDocsData: () => Record; export const useDocsData: (pluginId?: string) => GlobalPluginData; export const useActivePlugin: ( - options: GetActivePluginOptions = {}, + options?: GetActivePluginOptions, ) => ActivePlugin | undefined; export const useActivePluginAndVersion: ( - options: GetActivePluginOptions = {}, + options?: GetActivePluginOptions, ) => | {activePlugin: ActivePlugin; activeVersion: GlobalVersion | undefined} | undefined; diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 2797594b20..60a49d2b4b 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -51,7 +51,8 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-beta.5", - "@types/parse-numeric-range": "^0.0.1" + "@types/parse-numeric-range": "^0.0.1", + "utility-types": "^3.10.0" }, "peerDependencies": { "react": "^16.8.4 || ^17.0.0", diff --git a/packages/docusaurus-theme-classic/src/types.d.ts b/packages/docusaurus-theme-classic/src/types.d.ts index e4dbbdba12..a39d5af3bb 100644 --- a/packages/docusaurus-theme-classic/src/types.d.ts +++ b/packages/docusaurus-theme-classic/src/types.d.ts @@ -743,6 +743,7 @@ declare module '@theme/TagsListInline' { declare module '@theme/Tag' { import type {TagsListItem} from '@theme/TagsListByLetter'; + import type {Optional} from 'utility-types'; export type Props = Optional; diff --git a/website/package.json b/website/package.json index 17adfdfbdc..f1201534a3 100644 --- a/website/package.json +++ b/website/package.json @@ -25,7 +25,8 @@ "netlify:crowdin:downloadTranslations": "yarn netlify:crowdin:wait && yarn --cwd .. crowdin:download:website", "netlify:crowdin:downloadTranslationsFailSafe": "yarn netlify:crowdin:wait && (yarn --cwd .. crowdin:download:website || echo 'Crowdin translation download failure (only internal PRs have access to the Crowdin env token)')", "netlify:crowdin:uploadSources": "yarn --cwd .. crowdin:upload:website", - "netlify:test": "yarn netlify:build:deployPreview && yarn netlify dev --debug" + "netlify:test": "yarn netlify:build:deployPreview && yarn netlify dev --debug", + "typecheck": "tsc" }, "dependencies": { "@crowdin/cli": "^3.5.2", @@ -63,7 +64,7 @@ ] }, "devDependencies": { - "@tsconfig/docusaurus": "^1.0.3", + "@tsconfig/docusaurus": "^1.0.4", "cross-env": "^7.0.3", "raw-loader": "^4.0.2" } diff --git a/website/tsconfig.json b/website/tsconfig.json index 6dcb360a9a..183db790ab 100644 --- a/website/tsconfig.json +++ b/website/tsconfig.json @@ -2,10 +2,8 @@ // This file is not used in compilation. It is here just for a nice editor experience. "extends": "@tsconfig/docusaurus/tsconfig.json", "compilerOptions": { - "paths": { - "@site/*": ["./*"] - }, + "baseUrl": ".", "resolveJsonModule": true }, - "include": ["src/"] + "exclude": ["src/sw.js"] } diff --git a/yarn.lock b/yarn.lock index 71eeb018fa..ffa1712a76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3849,10 +3849,10 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== -"@tsconfig/docusaurus@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.3.tgz#040582bdceb27336d7abf2301fb0f4c909a9ac2f" - integrity sha512-g4X3HvNXbkowvEdPLu759fZjbXoazPjvi2a/fAAITp2yMOGeSKpHuY6N538ZY+1u6Z91Er3QKPtYGdZQ+tqXUA== +"@tsconfig/docusaurus@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz#fc40f87a672568678d83533dd4031a09d75877ca" + integrity sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.14"