From 6084866b8041f838b17bd86158962f2fdf63cc14 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sat, 15 May 2021 17:53:49 -0400 Subject: [PATCH] Add @tsconfig/node16 (#1313) * Add @tsconfig/node16; remove @tsconfig/node10 * fix tests * Re-add node10 config because ts2.7 can't handle node12 config * Fix * fix packagelock --- node16/tsconfig.json | 3 +++ package-lock.json | 5 +++++ package.json | 7 +++++-- src/test/index.spec.ts | 7 +++++-- src/tsconfigs.ts | 4 ++++ tests/package.json | 4 ++-- tests/tsconfig-bases/node16/tsconfig.json | 3 +++ 7 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 node16/tsconfig.json create mode 100644 tests/tsconfig-bases/node16/tsconfig.json diff --git a/node16/tsconfig.json b/node16/tsconfig.json new file mode 100644 index 000000000..e9c0bafec --- /dev/null +++ b/node16/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/node16/tsconfig.json" +} diff --git a/package-lock.json b/package-lock.json index fdc6430b5..02b9605bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -520,6 +520,11 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.0.tgz", "integrity": "sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==" }, + "@tsconfig/node16": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", + "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==" + }, "@types/chai": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.10.tgz", diff --git a/package.json b/package.json index b923d6456..e8c5494da 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "./transpilers/swc-experimental": "./transpilers/swc-experimental.js", "./node10/tsconfig.json": "./node10/tsconfig.json", "./node12/tsconfig.json": "./node12/tsconfig.json", - "./node14/tsconfig.json": "./node14/tsconfig.json" + "./node14/tsconfig.json": "./node14/tsconfig.json", + "./node16/tsconfig.json": "./node16/tsconfig.json" }, "types": "dist/index.d.ts", "bin": { @@ -49,7 +50,8 @@ "/tsconfig.schemastore-schema.json", "/node10/", "/node12/", - "/node14/" + "/node14/", + "/node16/" ], "scripts": { "lint": "prettier --check .", @@ -156,6 +158,7 @@ "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", diff --git a/src/test/index.spec.ts b/src/test/index.spec.ts index 4eb6fa21c..4d66f41a7 100644 --- a/src/test/index.spec.ts +++ b/src/test/index.spec.ts @@ -133,6 +133,7 @@ test.suite('ts-node', (test) => { testsDirRequire.resolve('ts-node/node10/tsconfig.json'); testsDirRequire.resolve('ts-node/node12/tsconfig.json'); testsDirRequire.resolve('ts-node/node14/tsconfig.json'); + testsDirRequire.resolve('ts-node/node16/tsconfig.json'); }); test.suite('cli', (test) => { @@ -683,7 +684,8 @@ test.suite('ts-node', (test) => { semver.gte(ts.version, '3.5.0') && semver.gte(process.versions.node, '14.0.0') ) { - test('implicitly uses @tsconfig/node14 compilerOptions when both TS and node versions support it', async (t) => { + test('implicitly uses @tsconfig/node14 or @tsconfig/node16 compilerOptions when both TS and node versions support it', async (t) => { + // node14 and node16 configs are identical, hence the "or" const { context: { tempDir }, } = t; @@ -708,7 +710,7 @@ test.suite('ts-node', (test) => { expect(stdout2).to.equal('10n\n'); }); } else { - test('implicitly uses @tsconfig/* lower than node14 (node10 or node12) when either TS or node versions do not support @tsconfig/node14', async ({ + test('implicitly uses @tsconfig/* lower than node14 (node12) when either TS or node versions do not support @tsconfig/node14', async ({ context: { tempDir }, }) => { const { err, stdout, stderr } = await exec(`${BIN_PATH} -pe 10n`, { @@ -778,6 +780,7 @@ test.suite('ts-node', (test) => { test(`ts-node/node10/tsconfig.json`, macro, 'node10'); test(`ts-node/node12/tsconfig.json`, macro, 'node12'); test(`ts-node/node14/tsconfig.json`, macro, 'node14'); + test(`ts-node/node16/tsconfig.json`, macro, 'node16'); } ); } diff --git a/src/tsconfigs.ts b/src/tsconfigs.ts index f984f6c14..74a927449 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 >= 16) { + const config = require('@tsconfig/node16/tsconfig.json'); + if (configCompatible(config)) return config; + } if (nodeMajor >= 14) { const config = require('@tsconfig/node14/tsconfig.json'); if (configCompatible(config)) return config; diff --git a/tests/package.json b/tests/package.json index 2c03119b3..1b91c8b50 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "ts-node": "file:ts-node-packed.tgz", - "@swc/core": "latest" + "@swc/core": "latest", + "ts-node": "file:ts-node-packed.tgz" } } diff --git a/tests/tsconfig-bases/node16/tsconfig.json b/tests/tsconfig-bases/node16/tsconfig.json new file mode 100644 index 000000000..96b21f735 --- /dev/null +++ b/tests/tsconfig-bases/node16/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "ts-node/node16/tsconfig.json" +}