From 34df8b6238932e1b384cd1e3edcfd5b5c16791ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Tue, 1 Aug 2023 17:32:43 +0200 Subject: [PATCH] refactor: Consolidate tsconfig and eslintrc files (no-changelog) (#6816) Co-authored-by: Csaba Tuncsik --- docker/images/n8n-custom/Dockerfile | 2 +- jest.config.js | 14 ++++++++++---- package.json | 2 ++ packages/@n8n/client-oauth2/tsconfig.build.json | 7 ++----- packages/cli/jest.config.js | 4 ---- packages/cli/package.json | 4 +--- packages/cli/tsconfig.build.json | 16 +++------------- packages/cli/tsconfig.json | 5 +---- packages/core/tsconfig.build.json | 7 ++----- packages/core/tsconfig.json | 5 +---- packages/design-system/tsconfig.json | 1 - packages/editor-ui/tsconfig.json | 1 - packages/node-dev/tsconfig.json | 3 +-- packages/nodes-base/jest.config.js | 4 ---- packages/nodes-base/tsconfig.build.json | 7 ++----- packages/nodes-base/tsconfig.json | 4 +--- packages/workflow/tsconfig.build.json | 7 ++----- packages/workflow/tsconfig.json | 3 --- pnpm-lock.yaml | 14 +++++++------- tsconfig.backend.json | 7 +++++++ tsconfig.build.json | 15 +++++++++++++++ tsconfig.json | 2 +- 22 files changed, 59 insertions(+), 75 deletions(-) create mode 100644 tsconfig.backend.json create mode 100644 tsconfig.build.json diff --git a/docker/images/n8n-custom/Dockerfile b/docker/images/n8n-custom/Dockerfile index 03dc11c4b9..66ae1888c0 100644 --- a/docker/images/n8n-custom/Dockerfile +++ b/docker/images/n8n-custom/Dockerfile @@ -3,7 +3,7 @@ ARG NODE_VERSION=18 # 1. Create an image to build n8n FROM n8nio/base:${NODE_VERSION} as builder -COPY --chown=node:node turbo.json package.json .npmrc pnpm-lock.yaml pnpm-workspace.yaml jest.config.js tsconfig.json ./ +COPY --chown=node:node turbo.json package.json .npmrc pnpm-lock.yaml pnpm-workspace.yaml jest.config.js tsconfig*.json ./ COPY --chown=node:node scripts ./scripts COPY --chown=node:node packages ./packages COPY --chown=node:node patches ./patches diff --git a/jest.config.js b/jest.config.js index 729d2d3a59..7752aecad0 100644 --- a/jest.config.js +++ b/jest.config.js @@ -6,10 +6,11 @@ const tsJestOptions = { ...compilerOptions, declaration: false, sourceMap: true, - skipLibCheck: true, }, }; +const { baseUrl, paths } = require('get-tsconfig').getTsconfig().config?.compilerOptions; + /** @type {import('jest').Config} */ const config = { verbose: true, @@ -19,9 +20,14 @@ const config = { transform: { '^.+\\.ts$': ['ts-jest', tsJestOptions], }, - moduleNameMapper: { - '^@/(.*)$': '/src/$1', - }, + // This resolve the path mappings from the tsconfig relative to each jest.config.js + moduleNameMapper: Object.entries(paths || {}).reduce((acc, [path, [mapping]]) => { + path = `^${path.replace(/\/\*$/, '/(.*)$')}`; + mapping = mapping.replace(/^\.\/(?:(.*)\/)?\*$/, '$1'); + mapping = mapping ? `/${mapping}` : ''; + acc[path] = '' + (baseUrl ? `/${baseUrl.replace(/^\.\//, '')}` : '') + mapping + '/$1'; + return acc; + }, {}), setupFilesAfterEnv: ['jest-expect-message'], collectCoverage: true, coverageReporters: [process.env.COVERAGE_REPORT === 'true' ? 'text' : 'text-summary'], diff --git a/package.json b/package.json index 1f8eb5a477..6fd2a21fc1 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,9 @@ "start-server-and-test": "^2.0.0", "supertest": "^6.3.3", "ts-jest": "^29.1.1", + "tsc-alias": "^1.8.7", "tsc-watch": "^6.0.4", + "tsconfig-paths": "^4.2.0", "turbo": "1.10.12", "typescript": "*", "vite": "^4.4.7", diff --git a/packages/@n8n/client-oauth2/tsconfig.build.json b/packages/@n8n/client-oauth2/tsconfig.build.json index c8f44354c7..0e85ac05d2 100644 --- a/packages/@n8n/client-oauth2/tsconfig.build.json +++ b/packages/@n8n/client-oauth2/tsconfig.build.json @@ -1,11 +1,8 @@ { - "extends": "./tsconfig.json", + "extends": ["./tsconfig.json", "../../../tsconfig.build.json"], "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "types": ["node"], - "noEmit": false, - "tsBuildInfoFile": "dist/build.tsbuildinfo" + "outDir": "dist" }, "include": ["src/**/*.ts"], "exclude": ["test/**"] diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js index 9cbb4a4f91..d946590a51 100644 --- a/packages/cli/jest.config.js +++ b/packages/cli/jest.config.js @@ -7,10 +7,6 @@ module.exports = { globalSetup: '/test/setup.ts', globalTeardown: '/test/teardown.ts', setupFilesAfterEnv: ['/test/setup-mocks.ts', '/test/extend-expect.ts'], - moduleNameMapper: { - '^@/(.*)$': '/src/$1', - '^@db/(.*)$': '/src/databases/$1', - }, coveragePathIgnorePatterns: ['/src/databases/migrations/'], testTimeout: 10_000, }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 5cb213c996..bc61227c14 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -96,9 +96,7 @@ "@types/yamljs": "^0.2.31", "chokidar": "^3.5.2", "concurrently": "^8.2.0", - "ts-essentials": "^7.0.3", - "tsc-alias": "^1.8.7", - "tsconfig-paths": "^4.2.0" + "ts-essentials": "^7.0.3" }, "dependencies": { "@n8n/client-oauth2": "workspace:*", diff --git a/packages/cli/tsconfig.build.json b/packages/cli/tsconfig.build.json index 7ad0351c61..a3e52c5ffc 100644 --- a/packages/cli/tsconfig.build.json +++ b/packages/cli/tsconfig.build.json @@ -1,19 +1,9 @@ { - "extends": "./tsconfig.json", + "extends": ["./tsconfig.json", "../../tsconfig.build.json"], "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "types": ["node"], - "noEmit": false, - "tsBuildInfoFile": "dist/build.tsbuildinfo" + "outDir": "dist" }, "include": ["src/**/*.ts"], - "exclude": ["test/**"], - "tsc-alias": { - "replacers": { - "base-url": { - "enabled": false - } - } - } + "exclude": ["test/**"] } diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 461b082baa..5ecbe401a2 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -1,9 +1,7 @@ { - "extends": "../../tsconfig.json", + "extends": ["../../tsconfig.json", "../../tsconfig.backend.json"], "compilerOptions": { "rootDir": ".", - "types": ["node", "jest"], - "noEmit": true, "preserveSymlinks": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, @@ -12,7 +10,6 @@ "@/*": ["./*"], "@db/*": ["./databases/*"] }, - "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "strict": false, "noUnusedLocals": false, diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index c8f44354c7..a3e52c5ffc 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -1,11 +1,8 @@ { - "extends": "./tsconfig.json", + "extends": ["./tsconfig.json", "../../tsconfig.build.json"], "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "types": ["node"], - "noEmit": false, - "tsBuildInfoFile": "dist/build.tsbuildinfo" + "outDir": "dist" }, "include": ["src/**/*.ts"], "exclude": ["test/**"] diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index ed61b927dd..d69a889767 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,15 +1,12 @@ { - "extends": "../../tsconfig.json", + "extends": ["../../tsconfig.json", "../../tsconfig.backend.json"], "compilerOptions": { "rootDir": ".", - "types": ["node", "jest"], "composite": true, - "noEmit": true, "baseUrl": "src", "paths": { "@/*": ["./*"] }, - "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "useUnknownInCatchVariables": false }, diff --git a/packages/design-system/tsconfig.json b/packages/design-system/tsconfig.json index 9d40abae50..ab9873b3ac 100644 --- a/packages/design-system/tsconfig.json +++ b/packages/design-system/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "importHelpers": true, - "skipLibCheck": true, "allowJs": true, "incremental": false, "allowSyntheticDefaultImports": true, diff --git a/packages/editor-ui/tsconfig.json b/packages/editor-ui/tsconfig.json index fd6a19a4cb..8161cdc907 100644 --- a/packages/editor-ui/tsconfig.json +++ b/packages/editor-ui/tsconfig.json @@ -5,7 +5,6 @@ "outDir": "dist", "target": "esnext", "module": "esnext", - "skipLibCheck": true, "allowJs": true, "importHelpers": true, "incremental": false, diff --git a/packages/node-dev/tsconfig.json b/packages/node-dev/tsconfig.json index 3d6b4f8517..fa967bf216 100644 --- a/packages/node-dev/tsconfig.json +++ b/packages/node-dev/tsconfig.json @@ -1,8 +1,7 @@ { - "extends": "../../tsconfig.json", + "extends": ["../../tsconfig.json", "../../tsconfig.backend.json"], "compilerOptions": { "outDir": "dist", - "types": ["node"], "preserveSymlinks": true, // TODO: remove all options below this line "noUnusedLocals": false, diff --git a/packages/nodes-base/jest.config.js b/packages/nodes-base/jest.config.js index d21cd780b8..54696ffb30 100644 --- a/packages/nodes-base/jest.config.js +++ b/packages/nodes-base/jest.config.js @@ -2,8 +2,4 @@ module.exports = { ...require('../../jest.config'), collectCoverageFrom: ['credentials/**/*.ts', 'nodes/**/*.ts', 'utils/**/*.ts'], - moduleNameMapper: { - '^@test/(.*)$': '/test/$1', - '^@utils/(.*)$': '/utils/$1', - }, }; diff --git a/packages/nodes-base/tsconfig.build.json b/packages/nodes-base/tsconfig.build.json index 10e0fa38b1..301f652cd1 100644 --- a/packages/nodes-base/tsconfig.build.json +++ b/packages/nodes-base/tsconfig.build.json @@ -1,10 +1,7 @@ { - "extends": "./tsconfig.json", + "extends": ["./tsconfig.json", "../../tsconfig.build.json"], "compilerOptions": { - "outDir": "dist", - "types": ["node"], - "noEmit": false, - "tsBuildInfoFile": "dist/build.tsbuildinfo" + "outDir": "dist" }, "include": [ "credentials/**/*.ts", diff --git a/packages/nodes-base/tsconfig.json b/packages/nodes-base/tsconfig.json index 7031bb62f1..80d4ebd3b6 100644 --- a/packages/nodes-base/tsconfig.json +++ b/packages/nodes-base/tsconfig.json @@ -1,9 +1,7 @@ { - "extends": "../../tsconfig.json", + "extends": ["../../tsconfig.json", "../../tsconfig.backend.json"], "compilerOptions": { "lib": ["dom", "es2020", "es2022.error"], - "types": ["node", "jest"], - "noEmit": true, "paths": { "@test/*": ["./test/*"], "@utils/*": ["./utils/*"] diff --git a/packages/workflow/tsconfig.build.json b/packages/workflow/tsconfig.build.json index c8f44354c7..a3e52c5ffc 100644 --- a/packages/workflow/tsconfig.build.json +++ b/packages/workflow/tsconfig.build.json @@ -1,11 +1,8 @@ { - "extends": "./tsconfig.json", + "extends": ["./tsconfig.json", "../../tsconfig.build.json"], "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "types": ["node"], - "noEmit": false, - "tsBuildInfoFile": "dist/build.tsbuildinfo" + "outDir": "dist" }, "include": ["src/**/*.ts"], "exclude": ["test/**"] diff --git a/packages/workflow/tsconfig.json b/packages/workflow/tsconfig.json index 84ea36482c..c813c072a0 100644 --- a/packages/workflow/tsconfig.json +++ b/packages/workflow/tsconfig.json @@ -2,14 +2,11 @@ "extends": "../../tsconfig.json", "compilerOptions": { "rootDir": ".", - "types": ["node", "jest"], "composite": true, - "noEmit": true, "baseUrl": "src", "paths": { "@/*": ["./*"] }, - "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "useUnknownInCatchVariables": false }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a77a86f9d..69413ca463 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,9 +108,15 @@ importers: ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.22.9)(jest@29.6.2)(typescript@5.1.6) + tsc-alias: + specifier: ^1.8.7 + version: 1.8.7 tsc-watch: specifier: ^6.0.4 version: 6.0.4(typescript@5.1.6) + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 turbo: specifier: 1.10.12 version: 1.10.12 @@ -556,12 +562,6 @@ importers: ts-essentials: specifier: ^7.0.3 version: 7.0.3(typescript@5.1.6) - tsc-alias: - specifier: ^1.8.7 - version: 1.8.7 - tsconfig-paths: - specifier: ^4.2.0 - version: 4.2.0 packages/core: dependencies: @@ -19805,7 +19805,7 @@ packages: engines: {node: '>=6'} dependencies: json5: 2.2.3 - minimist: 1.2.7 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true diff --git a/tsconfig.backend.json b/tsconfig.backend.json new file mode 100644 index 0000000000..b6212e58c5 --- /dev/null +++ b/tsconfig.backend.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "types": ["node", "jest"], + "noEmit": true, + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo" + } +} diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000000..5da6e15df6 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "types": ["node"], + "noEmit": false, + "declaration": true, + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "tsc-alias": { + "replacers": { + "base-url": { + "enabled": false + } + } + } +} diff --git a/tsconfig.json b/tsconfig.json index 0f396ac22e..d1a4a4d263 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,7 @@ "esModuleInterop": true, "resolveJsonModule": true, "incremental": true, - "declaration": true, + "declaration": false, "sourceMap": true, "skipLibCheck": true },