Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit c4b4e12

Browse files
committed
improve implementation
1 parent c2d2997 commit c4b4e12

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

src/loaders.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,39 +35,38 @@ type resolve = (
3535
recursiveCall?: boolean,
3636
) => MaybePromise<Resolved>;
3737

38-
const extensions = ['.js', '.json', '.ts', '.tsx', '.jsx'] as const;
39-
40-
const mappedExtensions = {
41-
'.js': ['.ts'],
38+
const mappedExtensions: Record<string, string[]> = {
39+
'.js': ['.ts', '.tsx', 'jsx'],
4240
'.cjs': ['.cts'],
4341
'.mjs': ['.mts'],
44-
} as const;
42+
'': ['.js', '.json', '.ts', '.tsx', '.jsx'],
43+
};
44+
45+
function resolveTsAlternativePaths(specifier: string) {
46+
const specifierExtension = path.extname(specifier);
47+
const extensionsToTry = mappedExtensions[specifierExtension] ?? [];
48+
specifier = specifier.slice(0, -specifierExtension.length);
49+
return extensionsToTry.map(extension => `${specifier}${extension}`);
50+
}
4551

4652
async function tryExtensions(
4753
specifier: string,
4854
context: Context,
4955
defaultResolve: resolve,
5056
) {
5157
let error;
52-
const extension = path.extname(specifier);
53-
let extensionsToTry = mappedExtensions[extension];
54-
if (extensionsToTry) {
55-
specifier = specifier.slice(0, -extension.length);
56-
} else {
57-
extensionsToTry = extensions;
58-
}
59-
for (const extension of extensionsToTry) {
58+
for (const fileToTry of resolveTsAlternativePaths(specifier)) {
6059
try {
6160
return await resolve(
62-
specifier + extension,
61+
fileToTry,
6362
context,
6463
defaultResolve,
6564
true,
6665
);
6766
} catch (_error: any) {
6867
if (error === undefined) {
6968
const { message } = _error;
70-
_error.message = _error.message.replace(`${extension}'`, "'");
69+
_error.message = _error.message.replace(`${specifier}'`, `${fileToTry}'`);
7170
_error.stack = _error.stack.replace(message, _error.message);
7271
error = _error;
7372
}

0 commit comments

Comments
 (0)