From 9231e4eb66595f671dd2f554bc550907f98deb1d Mon Sep 17 00:00:00 2001 From: chentsulin Date: Fri, 28 Apr 2023 11:25:09 +0800 Subject: [PATCH 1/3] Support Node 20 --- .github/workflows/continuous-integration.yml | 17 ++++++++++++++--- node20/tsconfig.json | 3 +++ package.json | 7 +++++-- src/test/index.spec.ts | 4 +++- src/tsconfigs.ts | 4 ++++ tests/tsconfig-bases/node20/tsconfig.json | 3 +++ yarn.lock | 8 ++++++++ 7 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 node20/tsconfig.json create mode 100644 tests/tsconfig-bases/node20/tsconfig.json diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index f54553da4..eb407a118 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -87,10 +87,21 @@ jobs: nodeFlag: 18 typescript: next typescriptFlag: next - # Node nightly + # Node 20 - flavor: 5 - node: 20-nightly - nodeFlag: 20_nightly + node: 20 + nodeFlag: 20 + typescript: latest + typescriptFlag: latest + - flavor: 6 + node: 20 + nodeFlag: 20 + typescript: next + typescriptFlag: next + # Node nightly + - flavor: 7 + node: nightly + nodeFlag: nightly typescript: latest typescriptFlag: latest steps: diff --git a/node20/tsconfig.json b/node20/tsconfig.json new file mode 100644 index 000000000..b99454516 --- /dev/null +++ b/node20/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json" +} diff --git a/package.json b/package.json index 8f3f4464e..70e66328e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "./transpilers/swc-experimental": "./transpilers/swc-experimental.js", "./node14/tsconfig.json": "./node14/tsconfig.json", "./node16/tsconfig.json": "./node16/tsconfig.json", - "./node18/tsconfig.json": "./node18/tsconfig.json" + "./node18/tsconfig.json": "./node18/tsconfig.json", + "./node20/tsconfig.json": "./node20/tsconfig.json" }, "types": "dist/index.d.ts", "bin": { @@ -55,7 +56,8 @@ "/tsconfig.schemastore-schema.json", "/node14/", "/node16/", - "/node18/" + "/node18/", + "/node20/" ], "scripts": { "lint": "dprint check", @@ -157,6 +159,7 @@ "@tsconfig/node14": "*", "@tsconfig/node16": "*", "@tsconfig/node18": "*", + "@tsconfig/node20": "*", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", diff --git a/src/test/index.spec.ts b/src/test/index.spec.ts index 760d1b295..4fe6e5b4c 100644 --- a/src/test/index.spec.ts +++ b/src/test/index.spec.ts @@ -80,6 +80,7 @@ test.suite('ts-node', (test) => { testsDirRequire.resolve('ts-node/node14/tsconfig.json'); testsDirRequire.resolve('ts-node/node16/tsconfig.json'); testsDirRequire.resolve('ts-node/node18/tsconfig.json'); + testsDirRequire.resolve('ts-node/node20/tsconfig.json'); }); test('should not load typescript outside of loadConfig', async () => { @@ -581,7 +582,7 @@ test.suite('ts-node', (test) => { : semver.gte(process.versions.node, '16.0.0') && tsSupportsEs2021 ? 'es2021' : 'es2020'; - test('implicitly uses @tsconfig/node14, @tsconfig/node16, or @tsconfig/node18 compilerOptions when both TS and node versions support it', async (t) => { + test('implicitly uses @tsconfig/node14, @tsconfig/node16, @tsconfig/node18, or @tsconfig/node20 compilerOptions when both TS and node versions support it', async (t) => { const r1 = await exec(`${BIN_PATH} --showConfig`, { cwd: t.context.tmpDir, }); @@ -646,6 +647,7 @@ test.suite('ts-node', (test) => { test(`ts-node/node14/tsconfig.json`, macro, 'node14'); test(`ts-node/node16/tsconfig.json`, macro, 'node16'); test(`ts-node/node18/tsconfig.json`, macro, 'node18'); + test(`ts-node/node20/tsconfig.json`, macro, 'node20'); } ); diff --git a/src/tsconfigs.ts b/src/tsconfigs.ts index 71c3ffaf1..f4dde9cf6 100644 --- a/src/tsconfigs.ts +++ b/src/tsconfigs.ts @@ -8,6 +8,10 @@ const nodeMajor = parseInt(process.versions.node.split('.')[0], 10); */ export function getDefaultTsconfigJsonForNodeVersion(ts: TSCommon): any { const tsInternal = ts as any as TSInternal; + if (nodeMajor >= 20) { + const config = require('@tsconfig/node20/tsconfig.json'); + if (configCompatible(config)) return config; + } if (nodeMajor >= 18) { const config = require('@tsconfig/node18/tsconfig.json'); if (configCompatible(config)) return config; diff --git a/tests/tsconfig-bases/node20/tsconfig.json b/tests/tsconfig-bases/node20/tsconfig.json new file mode 100644 index 000000000..dd64cc1e4 --- /dev/null +++ b/tests/tsconfig-bases/node20/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "ts-node/node20/tsconfig.json" +} diff --git a/yarn.lock b/yarn.lock index 359b2fa03..c90598b18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -654,6 +654,13 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node20@npm:*": + version: 1.0.0 + resolution: "@tsconfig/node20@npm:1.0.0" + checksum: bb2f9ffeb73d1317f3ebfb260109b5e382cab228da2bc8b6202979605820a771fa7cf7a8defc19c9c9ae9d91d6da7b586ca3d9a1e7e1547af6a5118c462bacef + languageName: node + linkType: hard + "@types/argparse@npm:1.0.38": version: 1.0.38 resolution: "@types/argparse@npm:1.0.38" @@ -3812,6 +3819,7 @@ __metadata: "@tsconfig/node14": "*" "@tsconfig/node16": "*" "@tsconfig/node18": "*" + "@tsconfig/node20": "*" "@types/diff": ^4.0.2 "@types/lodash": ^4.14.151 "@types/node": 13.13.5 From cf941e7a8ba74250d935d3fa10be5c878aade5a8 Mon Sep 17 00:00:00 2001 From: chentsulin Date: Sun, 14 May 2023 21:57:46 +0800 Subject: [PATCH 2/3] Fix CI flavor array in matrix --- .github/workflows/continuous-integration.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index eb407a118..c8d21ebe2 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -63,7 +63,7 @@ jobs: matrix: os: [ubuntu, windows] # Don't forget to add all new flavors to this list! - flavor: [1, 2, 3, 4, 5] + flavor: [1, 2, 3, 4, 5, 6] include: # Node 16 - flavor: 1 @@ -93,13 +93,8 @@ jobs: nodeFlag: 20 typescript: latest typescriptFlag: latest - - flavor: 6 - node: 20 - nodeFlag: 20 - typescript: next - typescriptFlag: next # Node nightly - - flavor: 7 + - flavor: 6 node: nightly nodeFlag: nightly typescript: latest From 4f4369cdbd0aef1e91fd38e0cafddb2e352b91c8 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Wed, 31 May 2023 12:23:06 -0400 Subject: [PATCH 3/3] Update .github/workflows/continuous-integration.yml --- .github/workflows/continuous-integration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index c8d21ebe2..a1d7fb7d6 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -95,8 +95,8 @@ jobs: typescriptFlag: latest # Node nightly - flavor: 6 - node: nightly - nodeFlag: nightly + node: 21-nightly + nodeFlag: 21_nightly typescript: latest typescriptFlag: latest steps: