From 4e27b9b83a0ee5dbc84464def58d9d16ef3d91f2 Mon Sep 17 00:00:00 2001 From: Spencer Tuft Date: Fri, 20 Sep 2024 01:04:27 -0600 Subject: [PATCH] feat: add support for tsimp (#410) --- .gitignore | 3 +++ lib/runtime.js | 9 ++++++++- package.json | 4 +++- scripts/unit-typescript-tsimp.js | 18 ++++++++++++++++++ tsconfig.tsimp.json | 7 +++++++ 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 scripts/unit-typescript-tsimp.js create mode 100644 tsconfig.tsimp.json diff --git a/.gitignore b/.gitignore index 2b6aed4e..8e19263a 100644 --- a/.gitignore +++ b/.gitignore @@ -150,3 +150,6 @@ yarn.lock #tap files .tap/ + +# tsimp cache +.tsimp/ diff --git a/lib/runtime.js b/lib/runtime.js index ed3623f2..0dd3cd5a 100644 --- a/lib/runtime.js +++ b/lib/runtime.js @@ -98,6 +98,12 @@ Object.defineProperties(runtime, { return cache.tsx } }, + tsimp: { + get () { + cache.tsimp ??= checkProcessArgv('tsimp/import') + return cache.tsimp + } + }, supportTypeScript: { get () { cache.supportTypeScript ??= ( @@ -109,7 +115,8 @@ Object.defineProperties(runtime, { runtime.swc || runtime.tsm || runtime.tsx || - runtime.esbuild + runtime.esbuild || + runtime.tsimp ) return cache.supportTypeScript } diff --git a/package.json b/package.json index 59a8c14d..151b92df 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "typescript:swc-node-register": "node scripts/unit-typescript-swc-node-register.js", "typescript:tsm": "node scripts/unit-typescript-tsm.js", "typescript:tsx": "node scripts/unit-typescript-tsx.js", + "typescript:tsimp": "node scripts/unit-typescript-tsimp.js", "typescript:esbuild": "node scripts/unit-typescript-esbuild.js", "typescript:vitest": "vitest run", "typescript:vitest:dev": "vitest", @@ -62,9 +63,10 @@ "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", "tsd": "^0.31.1", + "tsimp": "^2.0.11", "tsm": "^2.3.0", "tsx": "^4.15.7", - "typescript": "^5.4.5", + "typescript": "5.5", "vite": "^5.2.12", "vitest": "^2.0.3" }, diff --git a/scripts/unit-typescript-tsimp.js b/scripts/unit-typescript-tsimp.js new file mode 100644 index 00000000..9a880c93 --- /dev/null +++ b/scripts/unit-typescript-tsimp.js @@ -0,0 +1,18 @@ +'use strict' + +const { exec } = require('node:child_process') + +const args = [ + 'TSIMP_PROJECT=tsconfig.tsimp.json', + 'node', + '--import=tsimp/import', + 'test/typescript/basic.ts' +] + +const child = exec(args.join(' '), { + shell: true +}) + +child.stdout.pipe(process.stdout) +child.stderr.pipe(process.stderr) +child.once('close', process.exit) diff --git a/tsconfig.tsimp.json b/tsconfig.tsimp.json new file mode 100644 index 00000000..fa90c567 --- /dev/null +++ b/tsconfig.tsimp.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "noEmit": true, + "strict": true + }, + "include": ["test/typescript/**/*.ts"] +}