From 3696ed5977bc30a2c8f39de7b48838a6a082eca5 Mon Sep 17 00:00:00 2001 From: hiroki osame Date: Sat, 21 May 2022 01:12:53 -0400 Subject: [PATCH] fix: handle extension-less files (#12) --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- src/loaders-deprecated.ts | 4 ++-- src/loaders.ts | 19 ++++++++++++------- src/utils.ts | 4 ++-- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 76083a9..9305d16 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "test": "node --loader @esbuild-kit/esm-loader tests" }, "dependencies": { - "@esbuild-kit/core-utils": "^1.1.1", + "@esbuild-kit/core-utils": "^1.1.2", "es-module-lexer": "^0.10.5", "get-tsconfig": "^3.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bae4b38..2dcc0f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: 5.4 specifiers: - '@esbuild-kit/core-utils': ^1.1.1 + '@esbuild-kit/core-utils': ^1.1.2 '@pvtnbr/eslint-config': ^0.22.0 '@types/node': ^17.0.33 '@types/semver': ^7.3.9 @@ -17,7 +17,7 @@ specifiers: typescript: ^4.6.4 dependencies: - '@esbuild-kit/core-utils': 1.1.1 + '@esbuild-kit/core-utils': 1.1.2 es-module-lexer: 0.10.5 get-tsconfig: 3.0.1 @@ -57,8 +57,8 @@ packages: js-tokens: 4.0.0 dev: true - /@esbuild-kit/core-utils/1.1.1: - resolution: {integrity: sha512-Y5QM1ip6nUvycH8dc/bfNPLNyVt2ccBLB09lAndUvfCza/UwkAfYSiNMbcAnkLcEciEENMm6Lsyt1L98K57v3w==} + /@esbuild-kit/core-utils/1.1.2: + resolution: {integrity: sha512-t5uqG23MYDR0e664jP4B6aPXnX1/mJVxbvJKgQDMzOS3NblKZEwwOG1D/JM7Sju+R+gpV6fD1N7L3ouHCLTAAA==} dependencies: esbuild: 0.14.38 dev: false diff --git a/src/loaders-deprecated.ts b/src/loaders-deprecated.ts index 09a648a..e142616 100644 --- a/src/loaders-deprecated.ts +++ b/src/loaders-deprecated.ts @@ -37,7 +37,7 @@ const _getFormat: getFormat = async function ( return { format: 'module' }; } - if (tsExtensionsPattern.test(url)) { + if (url.startsWith('file:')) { const format = getFormatFromExtension(url) ?? await getPackageType(url); return { format }; } @@ -89,7 +89,7 @@ const _transformSource: transformSource = async function ( } const result = await defaultTransformSource(source, context, defaultTransformSource); - const dynamicImportTransformed = transformDynamicImport({ code: result.source }); + const dynamicImportTransformed = transformDynamicImport({ code: result.source.toString() }); if (dynamicImportTransformed) { result.source = dynamicImportTransformed.code; diff --git a/src/loaders.ts b/src/loaders.ts index a8a163a..6f2348a 100644 --- a/src/loaders.ts +++ b/src/loaders.ts @@ -108,15 +108,20 @@ export const resolve: resolve = async function ( }; } - if (tsExtensionsPattern.test(resolved.url)) { - const format = getFormatFromExtension(resolved.url) ?? await getPackageType(resolved.url); - return { - ...resolved, - format, - }; + let { format } = resolved; + + if (resolved.url.startsWith('file:')) { + format = getFormatFromExtension(resolved.url) ?? format; + + if (!format) { + format = await getPackageType(resolved.url); + } } - return resolved; + return { + ...resolved, + format, + }; }; type load = ( diff --git a/src/utils.ts b/src/utils.ts index c98be3b..88e3983 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -6,11 +6,11 @@ export const tsExtensionsPattern = /\.([cm]?ts|[tj]sx)$/; export const getFormatFromExtension = (filePath: string): ModuleFormat | undefined => { const extension = path.extname(filePath); - if (extension === '.mts') { + if (extension === '.mjs' || extension === '.mts') { return 'module'; } - if (extension === '.cts') { + if (extension === '.cjs' || extension === '.cts') { return 'commonjs'; } };