From b43936ea87d7996c14f93dc0de8c8182c72d80b0 Mon Sep 17 00:00:00 2001 From: Hoang Nguyen Date: Sat, 15 Mar 2025 16:28:02 +0700 Subject: [PATCH] feat: add jiti support --- index.js | 15 ++++++++++++++- test/fixtures/cts/1/package.json | 5 +++++ test/fixtures/cts/1/test.cts | 19 +++++++++++++++++++ test/fixtures/cts/1/tsconfig.json | 11 +++++++++++ test/fixtures/jsx/2/package.json | 5 +++++ test/fixtures/jsx/2/test.jsx | 17 +++++++++++++++++ test/fixtures/ts/5/package.json | 5 +++++ test/fixtures/ts/5/test.ts | 15 +++++++++++++++ test/fixtures/tsx/5/package.json | 5 +++++ test/fixtures/tsx/5/test.tsx | 18 ++++++++++++++++++ 10 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/cts/1/package.json create mode 100644 test/fixtures/cts/1/test.cts create mode 100644 test/fixtures/cts/1/tsconfig.json create mode 100644 test/fixtures/jsx/2/package.json create mode 100644 test/fixtures/jsx/2/test.jsx create mode 100644 test/fixtures/ts/5/package.json create mode 100644 test/fixtures/ts/5/test.ts create mode 100644 test/fixtures/tsx/5/package.json create mode 100644 test/fixtures/tsx/5/test.tsx diff --git a/index.js b/index.js index b951fd9..3010a47 100644 --- a/index.js +++ b/index.js @@ -215,6 +215,12 @@ var extensions = { hook(Object.assign({}, config, { extensions: '.jsx' })); }, }, + { + module: 'jiti/lib/jiti-register.mjs', + register: function () { + process.env.JITI_JSX = true + }, + }, 'sucrase/register/jsx', ], '.litcoffee': 'coffeescript/register', @@ -366,6 +372,7 @@ var extensions = { '.ts': [ 'ts-node/register', 'sucrase/register/ts', + 'jiti/lib/jiti-register.mjs', { module: '@babel/register', register: function (hook, config) { @@ -425,10 +432,16 @@ var extensions = { }, }, ], - '.cts': ['ts-node/register'], + '.cts': ['ts-node/register', 'jiti/lib/jiti-register.mjs'], '.tsx': [ 'ts-node/register', 'sucrase/register/tsx', + { + module: 'jiti/lib/jiti-register.mjs', + register: function () { + process.env.JITI_JSX = true + }, + }, { module: '@babel/register', register: function (hook, config) { diff --git a/test/fixtures/cts/1/package.json b/test/fixtures/cts/1/package.json new file mode 100644 index 0000000..15f2ac2 --- /dev/null +++ b/test/fixtures/cts/1/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "jiti": "^2.4.2" + } +} diff --git a/test/fixtures/cts/1/test.cts b/test/fixtures/cts/1/test.cts new file mode 100644 index 0000000..3fa0969 --- /dev/null +++ b/test/fixtures/cts/1/test.cts @@ -0,0 +1,19 @@ +var test: { + data: { + trueKey: boolean; + falseKey: boolean; + subKey: { + subProp: number; + }; + }; +} = { + data: { + trueKey: true, + falseKey: false, + subKey: { + subProp: 1, + }, + }, +}; + +export default test; diff --git a/test/fixtures/cts/1/tsconfig.json b/test/fixtures/cts/1/tsconfig.json new file mode 100644 index 0000000..ca687b6 --- /dev/null +++ b/test/fixtures/cts/1/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "declaration": false, + "noImplicitAny": false, + "removeComments": true, + "sourceMap": true, + "outDir": ".tmp" + } +} diff --git a/test/fixtures/jsx/2/package.json b/test/fixtures/jsx/2/package.json new file mode 100644 index 0000000..15f2ac2 --- /dev/null +++ b/test/fixtures/jsx/2/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "jiti": "^2.4.2" + } +} diff --git a/test/fixtures/jsx/2/test.jsx b/test/fixtures/jsx/2/test.jsx new file mode 100644 index 0000000..1e2bee9 --- /dev/null +++ b/test/fixtures/jsx/2/test.jsx @@ -0,0 +1,17 @@ +const React = { + createElement: function (Component) { + return Component(); + }, +}; + +// Test harmony arrow functions +const Component = () => { + var trueKey = true; + var falseKey = false; + var subKey = { subProp: 1 }; + // Test harmony object short notation + return { data: { trueKey, falseKey, subKey } }; +}; + +// Test JSX syntax +module.exports = ; diff --git a/test/fixtures/ts/5/package.json b/test/fixtures/ts/5/package.json new file mode 100644 index 0000000..15f2ac2 --- /dev/null +++ b/test/fixtures/ts/5/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "jiti": "^2.4.2" + } +} diff --git a/test/fixtures/ts/5/test.ts b/test/fixtures/ts/5/test.ts new file mode 100644 index 0000000..5044977 --- /dev/null +++ b/test/fixtures/ts/5/test.ts @@ -0,0 +1,15 @@ +var test = { + data: { + trueKey: true, + falseKey: false, + subKey: { + subProp: 1, + }, + }, +}; + +var main = { + default: test, +}; + +export = main; diff --git a/test/fixtures/tsx/5/package.json b/test/fixtures/tsx/5/package.json new file mode 100644 index 0000000..15f2ac2 --- /dev/null +++ b/test/fixtures/tsx/5/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "jiti": "^2.4.2" + } +} diff --git a/test/fixtures/tsx/5/test.tsx b/test/fixtures/tsx/5/test.tsx new file mode 100644 index 0000000..d26bcf1 --- /dev/null +++ b/test/fixtures/tsx/5/test.tsx @@ -0,0 +1,18 @@ +const React = { + createElement(Component: () => any) { + return Component(); + }, +}; + +// Test harmony arrow functions. +const Component = () => { + var trueKey: boolean = true; + var falseKey: boolean = false; + var subKey = { subProp: 1 }; + + // Test harmony object short notation. + return { data: { trueKey, falseKey, subKey } }; +}; + +// Test TSX syntax. +export default ;