diff --git a/bin/tsconfig.json b/bin/tsconfig.json index 4baf899c9dce9e..9a97bd05e84a6d 100644 --- a/bin/tsconfig.json +++ b/bin/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "module": "commonjs", "esModuleInterop": true, diff --git a/docs/manifest.json b/docs/manifest.json index 94610061e430b5..16f2ad6f00a74c 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -1961,6 +1961,12 @@ "markdown_source": "../packages/token-list/README.md", "parent": "packages" }, + { + "title": "@wordpress/ts-config", + "slug": "packages-ts-config", + "markdown_source": "../packages/ts-config/README.md", + "parent": "packages" + }, { "title": "@wordpress/undo-manager", "slug": "packages-undo-manager", diff --git a/package-lock.json b/package-lock.json index 8c8ec35e2c3a99..7772d323f40c23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16149,6 +16149,10 @@ "resolved": "packages/token-list", "link": true }, + "node_modules/@wordpress/ts-config": { + "resolved": "packages/ts-config", + "link": true + }, "node_modules/@wordpress/undo-manager": { "resolved": "packages/undo-manager", "link": true @@ -52645,6 +52649,15 @@ "npm": ">=8.19.2" } }, + "packages/ts-config": { + "name": "@wordpress/ts-config", + "version": "1.0.0-prerelease", + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, "packages/undo-manager": { "name": "@wordpress/undo-manager", "version": "1.17.0", diff --git a/packages/README.md b/packages/README.md index 9a3d077ba671b9..d53531c4fa393d 100644 --- a/packages/README.md +++ b/packages/README.md @@ -236,7 +236,7 @@ A `tsconfig.json` file should look like the following (comments are not necessar ```jsonc { // Extends a base configuration common to most packages - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", // Options for the TypeScript compiler // We'll usually set our `rootDir` and `declarationDir` as follows, which is specific diff --git a/packages/a11y/tsconfig.json b/packages/a11y/tsconfig.json index 13229eadde8f21..8a631f903fcdb7 100644 --- a/packages/a11y/tsconfig.json +++ b/packages/a11y/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../dom-ready" }, { "path": "../i18n" } ] } diff --git a/packages/api-fetch/tsconfig.json b/packages/api-fetch/tsconfig.json index 635fe4a8c0d353..2232591c5b3b65 100644 --- a/packages/api-fetch/tsconfig.json +++ b/packages/api-fetch/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../i18n" }, { "path": "../url" } ], "exclude": [ "**/test" ] } diff --git a/packages/autop/tsconfig.json b/packages/autop/tsconfig.json index f68a855bab79cc..daa9a89c445de2 100644 --- a/packages/autop/tsconfig.json +++ b/packages/autop/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../dom-ready" } ] } diff --git a/packages/blob/tsconfig.json b/packages/blob/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/blob/tsconfig.json +++ b/packages/blob/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/block-editor/tsconfig.json b/packages/block-editor/tsconfig.json index 30fe326d35b83e..24a1dba40a0ef7 100644 --- a/packages/block-editor/tsconfig.json +++ b/packages/block-editor/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../a11y" }, { "path": "../api-fetch" }, diff --git a/packages/block-library/tsconfig.json b/packages/block-library/tsconfig.json index a8423ee4a27093..81b9182857ac55 100644 --- a/packages/block-library/tsconfig.json +++ b/packages/block-library/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ], "strictNullChecks": true diff --git a/packages/block-serialization-default-parser/tsconfig.json b/packages/block-serialization-default-parser/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/block-serialization-default-parser/tsconfig.json +++ b/packages/block-serialization-default-parser/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/components/tsconfig.json b/packages/components/tsconfig.json index 09bfef2c53b076..29d87919f11d43 100644 --- a/packages/components/tsconfig.json +++ b/packages/components/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env", diff --git a/packages/compose/tsconfig.json b/packages/compose/tsconfig.json index 90ab223f044987..688a09dc949fa7 100644 --- a/packages/compose/tsconfig.json +++ b/packages/compose/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "rootDir": "src", "declarationDir": "build-types", diff --git a/packages/core-data/tsconfig.json b/packages/core-data/tsconfig.json index 57c9d208e4c689..e50ff1583a4b7a 100644 --- a/packages/core-data/tsconfig.json +++ b/packages/core-data/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false, "noImplicitAny": false diff --git a/packages/data-controls/tsconfig.json b/packages/data-controls/tsconfig.json index faa13b152672b6..3848a6756c195a 100644 --- a/packages/data-controls/tsconfig.json +++ b/packages/data-controls/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] }, diff --git a/packages/data/tsconfig.json b/packages/data/tsconfig.json index b73eca0d342f04..e50e9e072edb98 100644 --- a/packages/data/tsconfig.json +++ b/packages/data/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false }, diff --git a/packages/dataviews/tsconfig.json b/packages/dataviews/tsconfig.json index a7c8759d257cb2..c27f75d2e3fbd6 100644 --- a/packages/dataviews/tsconfig.json +++ b/packages/dataviews/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env", diff --git a/packages/date/tsconfig.json b/packages/date/tsconfig.json index 605262dd7cc952..489d18c24af25f 100644 --- a/packages/date/tsconfig.json +++ b/packages/date/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../deprecated" } ] } diff --git a/packages/deprecated/tsconfig.json b/packages/deprecated/tsconfig.json index b2186db14f4cc4..302c7f78ef6afc 100644 --- a/packages/deprecated/tsconfig.json +++ b/packages/deprecated/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../hooks" } ] } diff --git a/packages/docgen/tsconfig.json b/packages/docgen/tsconfig.json index eebc743289aec2..79132c2b77ee70 100644 --- a/packages/docgen/tsconfig.json +++ b/packages/docgen/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "rootDir": "lib" }, diff --git a/packages/dom-ready/tsconfig.json b/packages/dom-ready/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/dom-ready/tsconfig.json +++ b/packages/dom-ready/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/dom/tsconfig.json b/packages/dom/tsconfig.json index e44d6b98c50856..9f1dd5eb8ae0d7 100644 --- a/packages/dom/tsconfig.json +++ b/packages/dom/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] }, diff --git a/packages/e2e-test-utils-playwright/tsconfig.json b/packages/e2e-test-utils-playwright/tsconfig.json index 947a4a0f82fc76..6f5018cab4e304 100644 --- a/packages/e2e-test-utils-playwright/tsconfig.json +++ b/packages/e2e-test-utils-playwright/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "incremental": false, "composite": false, diff --git a/packages/edit-site/tsconfig.json b/packages/edit-site/tsconfig.json index d6c82614bf534d..17662fbdbefa3f 100644 --- a/packages/edit-site/tsconfig.json +++ b/packages/edit-site/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../a11y" }, { "path": "../api-fetch" }, diff --git a/packages/editor/tsconfig.json b/packages/editor/tsconfig.json index 00a8f3860e2925..3c67a4da7b0f28 100644 --- a/packages/editor/tsconfig.json +++ b/packages/editor/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false }, diff --git a/packages/element/tsconfig.json b/packages/element/tsconfig.json index a1df062eb218b3..2c21fdfb87cdea 100644 --- a/packages/element/tsconfig.json +++ b/packages/element/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "noImplicitAny": false, "strictNullChecks": false diff --git a/packages/escape-html/tsconfig.json b/packages/escape-html/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/escape-html/tsconfig.json +++ b/packages/escape-html/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index a769c50a12df4c..1c176a5f0e8333 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "module": "CommonJS", "rootDir": "rules" diff --git a/packages/fields/tsconfig.json b/packages/fields/tsconfig.json index 552aa73b8e5cce..ab9cd09761e095 100644 --- a/packages/fields/tsconfig.json +++ b/packages/fields/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false }, diff --git a/packages/hooks/tsconfig.json b/packages/hooks/tsconfig.json index f197b56919708b..8d7ed7e81db77d 100644 --- a/packages/hooks/tsconfig.json +++ b/packages/hooks/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] } diff --git a/packages/html-entities/tsconfig.json b/packages/html-entities/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/html-entities/tsconfig.json +++ b/packages/html-entities/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json index b2186db14f4cc4..302c7f78ef6afc 100644 --- a/packages/i18n/tsconfig.json +++ b/packages/i18n/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../hooks" } ] } diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json index 75638a3b50a790..ac501b5e0ef8c1 100644 --- a/packages/icons/tsconfig.json +++ b/packages/icons/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../element" }, { "path": "../primitives" } ] } diff --git a/packages/interactivity-router/tsconfig.json b/packages/interactivity-router/tsconfig.json index 616718560d02cc..255bc0caed444c 100644 --- a/packages/interactivity-router/tsconfig.json +++ b/packages/interactivity-router/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false, "strict": false diff --git a/packages/interactivity/tsconfig.json b/packages/interactivity/tsconfig.json index a4d86e65fa1dd6..4ea548c7b7c0da 100644 --- a/packages/interactivity/tsconfig.json +++ b/packages/interactivity/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "noImplicitAny": false } diff --git a/packages/interactivity/tsconfig.test.json b/packages/interactivity/tsconfig.test.json index ad6813d6fec0ff..edeb63e1b74ce4 100644 --- a/packages/interactivity/tsconfig.test.json +++ b/packages/interactivity/tsconfig.test.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "noEmit": true, "emitDeclarationOnly": false, diff --git a/packages/is-shallow-equal/tsconfig.json b/packages/is-shallow-equal/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/is-shallow-equal/tsconfig.json +++ b/packages/is-shallow-equal/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/keycodes/tsconfig.json b/packages/keycodes/tsconfig.json index 9534c034fa89e7..4193ee1159db08 100644 --- a/packages/keycodes/tsconfig.json +++ b/packages/keycodes/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../i18n" } ] } diff --git a/packages/lazy-import/tsconfig.json b/packages/lazy-import/tsconfig.json index 9647e449d35454..d5dfc90bd9a931 100644 --- a/packages/lazy-import/tsconfig.json +++ b/packages/lazy-import/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "rootDir": "lib", "useUnknownInCatchVariables": false diff --git a/packages/media-utils/tsconfig.json b/packages/media-utils/tsconfig.json index 380e55bc58ff09..225d42b8222271 100644 --- a/packages/media-utils/tsconfig.json +++ b/packages/media-utils/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ], "checkJs": false diff --git a/packages/notices/tsconfig.json b/packages/notices/tsconfig.json index 9c48147297764e..8ad6334ff67c82 100644 --- a/packages/notices/tsconfig.json +++ b/packages/notices/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ], "checkJs": false diff --git a/packages/plugins/tsconfig.json b/packages/plugins/tsconfig.json index 66fb760f8896d0..4dc195537ff9bf 100644 --- a/packages/plugins/tsconfig.json +++ b/packages/plugins/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] }, diff --git a/packages/prettier-config/tsconfig.json b/packages/prettier-config/tsconfig.json index 7899aeee7dfbc9..ac5b32c478ded8 100644 --- a/packages/prettier-config/tsconfig.json +++ b/packages/prettier-config/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "rootDir": "lib", "types": [ "node" ] diff --git a/packages/primitives/tsconfig.json b/packages/primitives/tsconfig.json index 5dea3e64597b43..4ff392811fccf4 100644 --- a/packages/primitives/tsconfig.json +++ b/packages/primitives/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../element" } ] } diff --git a/packages/priority-queue/tsconfig.json b/packages/priority-queue/tsconfig.json index 2a790d65e67612..629d9c6e1021c4 100644 --- a/packages/priority-queue/tsconfig.json +++ b/packages/priority-queue/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "requestidlecallback" ] } diff --git a/packages/private-apis/tsconfig.json b/packages/private-apis/tsconfig.json index f197b56919708b..8d7ed7e81db77d 100644 --- a/packages/private-apis/tsconfig.json +++ b/packages/private-apis/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] } diff --git a/packages/project-management-automation/tsconfig.json b/packages/project-management-automation/tsconfig.json index 7899aeee7dfbc9..ac5b32c478ded8 100644 --- a/packages/project-management-automation/tsconfig.json +++ b/packages/project-management-automation/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "rootDir": "lib", "types": [ "node" ] diff --git a/packages/react-i18n/tsconfig.json b/packages/react-i18n/tsconfig.json index 32b019421ed3d5..c145842d2f7c39 100644 --- a/packages/react-i18n/tsconfig.json +++ b/packages/react-i18n/tsconfig.json @@ -1,5 +1,5 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "references": [ { "path": "../element" }, { "path": "../i18n" } ] } diff --git a/packages/redux-routine/tsconfig.json b/packages/redux-routine/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/redux-routine/tsconfig.json +++ b/packages/redux-routine/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/report-flaky-tests/tsconfig.json b/packages/report-flaky-tests/tsconfig.json index 26fcd6f5e51c6f..137228adc820e4 100644 --- a/packages/report-flaky-tests/tsconfig.json +++ b/packages/report-flaky-tests/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "module": "CommonJS", "types": [ "jest" ] diff --git a/packages/rich-text/tsconfig.json b/packages/rich-text/tsconfig.json index 5dadcb0ed0045c..b0199892d72267 100644 --- a/packages/rich-text/tsconfig.json +++ b/packages/rich-text/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ], "checkJs": false diff --git a/packages/router/tsconfig.json b/packages/router/tsconfig.json index 7d9ba227795ad6..ea891b11e44d01 100644 --- a/packages/router/tsconfig.json +++ b/packages/router/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] }, diff --git a/packages/shortcode/tsconfig.json b/packages/shortcode/tsconfig.json index 2ab16a25d51788..083993215f15eb 100644 --- a/packages/shortcode/tsconfig.json +++ b/packages/shortcode/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false } diff --git a/packages/style-engine/tsconfig.json b/packages/style-engine/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/style-engine/tsconfig.json +++ b/packages/style-engine/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/sync/tsconfig.json b/packages/sync/tsconfig.json index f0a5cb0530d297..5c4df5ac816f3d 100644 --- a/packages/sync/tsconfig.json +++ b/packages/sync/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "node" ] }, diff --git a/packages/token-list/tsconfig.json b/packages/token-list/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/token-list/tsconfig.json +++ b/packages/token-list/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/ts-config/.npmrc b/packages/ts-config/.npmrc new file mode 100644 index 00000000000000..43c97e719a5a82 --- /dev/null +++ b/packages/ts-config/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/packages/ts-config/CHANGELOG.md b/packages/ts-config/CHANGELOG.md new file mode 100644 index 00000000000000..9054f06ae397a0 --- /dev/null +++ b/packages/ts-config/CHANGELOG.md @@ -0,0 +1,7 @@ + + +## Unreleased + +## 1.0.0 + +- Initial version of the package. diff --git a/packages/ts-config/README.md b/packages/ts-config/README.md new file mode 100644 index 00000000000000..08e86e508ead62 --- /dev/null +++ b/packages/ts-config/README.md @@ -0,0 +1,33 @@ +# Typescript config (@wordpress/ts-config) + +A sharable TypeScript configuration package for WordPress projects. + +## Installation + +Install the module + +```bash +$ npm install @wordpress/ts-config --save-dev +``` + +**Note**: This package requires Node.js version with long-term support status (check [Active LTS or Maintenance LTS releases](https://nodejs.org/en/about/previous-releases)). It is not compatible with older versions. + +## Usage + +Extend the base TypeScript configuration in your `tsconfig.json` file: + +```json +{ + "extends": "@wordpress/ts-config/tsconfig.base.json" +} +``` + +This ensures consistency across WordPress projects and aligns with Gutenberg's TypeScript standards. + +## Contributing to this package + +This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to [npm](https://www.npmjs.com/) and used by [WordPress](https://make.wordpress.org/core/) as well as other software projects. + +To find out more about contributing to this package or Gutenberg as a whole, please read the project's main [contributor guide](https://github.com/WordPress/gutenberg/tree/HEAD/CONTRIBUTING.md). + +

Code is Poetry.

diff --git a/packages/ts-config/package.json b/packages/ts-config/package.json new file mode 100644 index 00000000000000..c31edea741abaf --- /dev/null +++ b/packages/ts-config/package.json @@ -0,0 +1,32 @@ +{ + "name": "@wordpress/ts-config", + "version": "1.0.0-prerelease", + "description": "Shared TypeScript configuration for WordPress packages.", + "author": "The WordPress Contributors", + "license": "GPL-2.0-or-later", + "keywords": [ + "wordpress", + "typescript", + "config" + ], + "homepage": "https://github.com/WordPress/gutenberg/tree/HEAD/packages/ts-config/README.md", + "repository": { + "type": "git", + "url": "https://github.com/WordPress/gutenberg.git", + "directory": "packages/ts-config" + }, + "bugs": { + "url": "https://github.com/WordPress/gutenberg/issues" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "main": "tsconfig.base.json", + "types": "tsconfig.base.json", + "sideEffects": false, + "dependencies": {}, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/ts-config/tsconfig.base.json b/packages/ts-config/tsconfig.base.json new file mode 100644 index 00000000000000..f23d70b2e01d52 --- /dev/null +++ b/packages/ts-config/tsconfig.base.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "allowSyntheticDefaultImports": true, + "jsx": "preserve", + "target": "esnext", + "module": "esnext", + "lib": [ "DOM", "DOM.Iterable", "ESNext" ], + "declaration": true, + "declarationMap": true, + "composite": true, + "emitDeclarationOnly": true, + "isolatedModules": true, + + "skipDefaultLibCheck": true, + + /* Strict Type-Checking Options */ + "strict": true, + + /* Additional Checks */ + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + + /* Module Resolution Options */ + "moduleResolution": "node", + + /* This needs to be false so our types are possible to consume without setting this */ + "esModuleInterop": false, + "resolveJsonModule": true, + + "typeRoots": [ "../../typings", "../../node_modules/@types" ], + "types": [], + "rootDir": "${configDir}/src", + "declarationDir": "${configDir}/build-types" + }, + "include": [ "${configDir}/src" ], + "exclude": [ + "${configDir}/**/*.android.js", + "${configDir}/**/*.ios.js", + "${configDir}/**/*.native.js", + "${configDir}/**/benchmark", + "${configDir}/packages/*/build-*/**", + "${configDir}/packages/*/build/**", + "${configDir}/**/test/**", + "${configDir}/packages/**/react-native-*/**" + ] +} diff --git a/packages/undo-manager/tsconfig.json b/packages/undo-manager/tsconfig.json index a3c336bec45609..52f3eec0787fc0 100644 --- a/packages/undo-manager/tsconfig.json +++ b/packages/undo-manager/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "node" ] }, diff --git a/packages/upload-media/tsconfig.json b/packages/upload-media/tsconfig.json index df9f913b1e11b7..b97f825f6e33bb 100644 --- a/packages/upload-media/tsconfig.json +++ b/packages/upload-media/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] }, diff --git a/packages/url/tsconfig.json b/packages/url/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/url/tsconfig.json +++ b/packages/url/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/vips/tsconfig.json b/packages/vips/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/vips/tsconfig.json +++ b/packages/vips/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/packages/warning/tsconfig.json b/packages/warning/tsconfig.json index f197b56919708b..8d7ed7e81db77d 100644 --- a/packages/warning/tsconfig.json +++ b/packages/warning/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "types": [ "gutenberg-env" ] } diff --git a/packages/wordcount/tsconfig.json b/packages/wordcount/tsconfig.json index 7ff060ab6ce105..0708ee12a25d89 100644 --- a/packages/wordcount/tsconfig.json +++ b/packages/wordcount/tsconfig.json @@ -1,4 +1,4 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json" + "extends": "@wordpress/ts-config/tsconfig.base.json" } diff --git a/test/e2e/tsconfig.json b/test/e2e/tsconfig.json index 080d514f6f3634..636fccda233779 100644 --- a/test/e2e/tsconfig.json +++ b/test/e2e/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false, "noEmit": true, diff --git a/test/performance/tsconfig.json b/test/performance/tsconfig.json index 080d514f6f3634..636fccda233779 100644 --- a/test/performance/tsconfig.json +++ b/test/performance/tsconfig.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig.json", - "extends": "../../tsconfig.base.json", + "extends": "@wordpress/ts-config/tsconfig.base.json", "compilerOptions": { "checkJs": false, "noEmit": true,