diff --git a/src/esm/loaders.ts b/src/esm/loaders.ts index 95db51fff..f80526e62 100644 --- a/src/esm/loaders.ts +++ b/src/esm/loaders.ts @@ -39,7 +39,7 @@ type resolve = ( export const initialize: InitializeHook = async (data) => { if (!data) { - throw new Error('tsx must be loaded with --import instead of --loader\nThe --loader flag was deprecated in Node v20.6.0'); + throw new Error('tsx must be loaded with --import instead of --loader\nThe --loader flag was deprecated in Node v20.6.0 and v18.19.0'); } }; diff --git a/src/utils/node-features.ts b/src/utils/node-features.ts index fc33e723e..6f456b286 100644 --- a/src/utils/node-features.ts +++ b/src/utils/node-features.ts @@ -11,18 +11,21 @@ export const compareNodeVersion = ( || nodeVersion[2] - version[2] ); -/** - * Node.js loaders are isolated from v20 - * https://github.com/nodejs/node/issues/49455#issuecomment-1703812193 - * https://github.com/nodejs/node/blob/33710e7e7d39d19449a75911537d630349110a0c/doc/api/module.md#L375-L376 - */ -export const isolatedLoader = compareNodeVersion([20, 0, 0]) >= 0; - -export const supportsModuleRegister = compareNodeVersion([20, 6, 0]) >= 0; +export const supportsModuleRegister = ( + compareNodeVersion([20, 6, 0]) >= 0 + || ( + compareNodeVersion([20, 0, 0]) < 0 + && compareNodeVersion([18, 19, 0]) >= 0 + ) +); export const importAttributes = ( compareNodeVersion([21, 0, 0]) >= 0 || compareNodeVersion([20, 10, 0]) >= 0 + || ( + compareNodeVersion([20, 0, 0]) < 0 + && compareNodeVersion([18, 19, 0]) >= 0 + ) ); // Added in v21.0.0 diff --git a/tests/utils/node-versions.ts b/tests/utils/node-versions.ts index 735c7f0d7..056811918 100644 --- a/tests/utils/node-versions.ts +++ b/tests/utils/node-versions.ts @@ -14,7 +14,9 @@ export const nodeVersions = [ ) ? [ latestMajor('20.10.0'), - latestMajor('18.18.2'), + // TODO: + // '20.0.0', + latestMajor('18.19.0'), '18.0.0', ] as const : [] as const diff --git a/tests/utils/tsx.ts b/tests/utils/tsx.ts index 35dd8508a..7af361038 100644 --- a/tests/utils/tsx.ts +++ b/tests/utils/tsx.ts @@ -44,7 +44,13 @@ export const createNode = async ( const versionParsed = node.version.split('.').map(Number) as Version; const supports = { - moduleRegister: compareNodeVersion([20, 6, 0], versionParsed) >= 0, + moduleRegister: ( + compareNodeVersion([20, 6, 0], versionParsed) >= 0 + || ( + compareNodeVersion([20, 0, 0], versionParsed) < 0 + && compareNodeVersion([18, 19, 0], versionParsed) >= 0 + ) + ), // https://nodejs.org/docs/latest-v18.x/api/cli.html#--test cliTestFlag: compareNodeVersion([18, 1, 0], versionParsed) >= 0,