From 7c6df1bb0dbbb56aa4472ede55fd7671cd007f05 Mon Sep 17 00:00:00 2001 From: Maciej Zieniuk Date: Mon, 4 Nov 2024 14:55:24 +0000 Subject: [PATCH] PM-14445: Enable strict mode for KM team owned code The aim was to enable `strictNullChecks` only, which will hopefully give better clarity on the types expectations from KM code, but to other teams and KM team. But since it is not possible to do that on individual module level (this flag is enabled everywhere in the code that KM module uses, resulting in 1000+ errors), the `typescript-strict-plugin` was used. As a consequence, the KM owned code is now in TS compiled strict mode. --- apps/browser/src/key-management/tsconfig.json | 12 ++ apps/cli/src/key-management/tsconfig.json | 12 ++ apps/desktop/src/key-management/tsconfig.json | 12 ++ apps/web/src/app/key-management/tsconfig.json | 12 ++ libs/key-management/package.json | 2 +- libs/key-management/tsconfig.json | 11 +- package-lock.json | 124 ++++++++++++++++++ package.json | 1 + 8 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 apps/browser/src/key-management/tsconfig.json create mode 100644 apps/cli/src/key-management/tsconfig.json create mode 100644 apps/desktop/src/key-management/tsconfig.json create mode 100644 apps/web/src/app/key-management/tsconfig.json diff --git a/apps/browser/src/key-management/tsconfig.json b/apps/browser/src/key-management/tsconfig.json new file mode 100644 index 00000000000..9d0e7445536 --- /dev/null +++ b/apps/browser/src/key-management/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "plugins": [ + { + "name": "typescript-strict-plugin", + "paths": ["./"], + "excludePattern": ["**/*.spec.ts"] + } + ] + } +} diff --git a/apps/cli/src/key-management/tsconfig.json b/apps/cli/src/key-management/tsconfig.json new file mode 100644 index 00000000000..9d0e7445536 --- /dev/null +++ b/apps/cli/src/key-management/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "plugins": [ + { + "name": "typescript-strict-plugin", + "paths": ["./"], + "excludePattern": ["**/*.spec.ts"] + } + ] + } +} diff --git a/apps/desktop/src/key-management/tsconfig.json b/apps/desktop/src/key-management/tsconfig.json new file mode 100644 index 00000000000..9d0e7445536 --- /dev/null +++ b/apps/desktop/src/key-management/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "plugins": [ + { + "name": "typescript-strict-plugin", + "paths": ["./"], + "excludePattern": ["**/*.spec.ts"] + } + ] + } +} diff --git a/apps/web/src/app/key-management/tsconfig.json b/apps/web/src/app/key-management/tsconfig.json new file mode 100644 index 00000000000..d563b1e89ff --- /dev/null +++ b/apps/web/src/app/key-management/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "plugins": [ + { + "name": "typescript-strict-plugin", + "paths": ["./"], + "excludePattern": ["**/*.spec.ts"] + } + ] + } +} diff --git a/libs/key-management/package.json b/libs/key-management/package.json index 083386cbc81..fe7d75530e7 100644 --- a/libs/key-management/package.json +++ b/libs/key-management/package.json @@ -14,7 +14,7 @@ "license": "GPL-3.0", "scripts": { "clean": "rimraf dist", - "build": "npm run clean && tsc", + "build": "npm run clean && tsc && tsc-strict", "build:watch": "npm run clean && tsc -watch" }, "dependencies": { diff --git a/libs/key-management/tsconfig.json b/libs/key-management/tsconfig.json index 6004a56fb55..4661e36d666 100644 --- a/libs/key-management/tsconfig.json +++ b/libs/key-management/tsconfig.json @@ -1,5 +1,14 @@ { "extends": "../shared/tsconfig.libs", "include": ["src", "spec"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "plugins": [ + { + "name": "typescript-strict-plugin", + "paths": ["./src"], + "excludePattern": ["**/*.spec.ts"] + } + ] + } } diff --git a/package-lock.json b/package-lock.json index a9b978b8554..380470a408c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -179,6 +179,7 @@ "tsconfig-paths-webpack-plugin": "4.1.0", "type-fest": "2.19.0", "typescript": "5.1.6", + "typescript-strict-plugin": "2.4.4", "url": "0.11.4", "util": "0.12.5", "wait-on": "8.0.1", @@ -37360,6 +37361,129 @@ "node": ">=14.17" } }, + "node_modules/typescript-strict-plugin": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/typescript-strict-plugin/-/typescript-strict-plugin-2.4.4.tgz", + "integrity": "sha512-OXcWHQk+pW9gqEL/Mb1eTgj/Yiqk1oHBERr9v4VInPOYN++p+cXejmQK/h/VlUPGD++FXQ8pgiqVMyEtxU4T6A==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "minimatch": "^9.0.3", + "ora": "^5.4.1", + "yargs": "^16.2.0" + }, + "bin": { + "tsc-strict": "dist/cli/tsc-strict/index.js", + "update-strict-comments": "dist/cli/update-strict-comments/index.js" + } + }, + "node_modules/typescript-strict-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript-strict-plugin/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/typescript-strict-plugin/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/typescript-strict-plugin/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/typescript-strict-plugin/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/typescript-strict-plugin/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/typescript-strict-plugin/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript-strict-plugin/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", diff --git a/package.json b/package.json index c5d963bef14..298c914b123 100644 --- a/package.json +++ b/package.json @@ -140,6 +140,7 @@ "tsconfig-paths-webpack-plugin": "4.1.0", "type-fest": "2.19.0", "typescript": "5.1.6", + "typescript-strict-plugin": "2.4.4", "url": "0.11.4", "util": "0.12.5", "wait-on": "8.0.1",