@athree/module-loader 4.0.0-wip.9 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/module-loader.js +37 -1
- package/out/main/module-loader.js.map +1 -1
- package/package.json +9 -3
- package/types.d.ts +4 -0
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { ModuleKind, ModuleResolutionKind, ScriptTarget, transpileModule } from 'typescript';
|
|
3
4
|
export async function resolve(specifier, context, nextResolve) {
|
|
4
|
-
const
|
|
5
|
+
const stripped = stripQuery(specifier);
|
|
6
|
+
const resolved = await nextResolve(stripped, context)
|
|
7
|
+
.catch(err => {
|
|
8
|
+
// Allow resolving .js extension from .ts files
|
|
9
|
+
if (isTypeScriptSpecifier(context.parentURL) && specifier.endsWith('.js')) {
|
|
10
|
+
return nextResolve(stripped.replace(/\.js$/, '.ts'), context);
|
|
11
|
+
}
|
|
12
|
+
throw err;
|
|
13
|
+
});
|
|
5
14
|
// Non-file URLs (e.g. `node:`) are always resolved as is
|
|
6
15
|
if (!resolved.url.startsWith('file://')) {
|
|
7
16
|
return resolved;
|
|
@@ -26,6 +35,27 @@ export async function load(specifier, context, nextLoad) {
|
|
|
26
35
|
source: `export default ${JSON.stringify(source)}`,
|
|
27
36
|
};
|
|
28
37
|
}
|
|
38
|
+
if (isTypeScriptSpecifier(specifier)) {
|
|
39
|
+
const file = fileURLToPath(stripQuery(specifier));
|
|
40
|
+
const source = await readFile(file, 'utf-8');
|
|
41
|
+
const transpiled = transpileModule(source, {
|
|
42
|
+
fileName: file,
|
|
43
|
+
compilerOptions: {
|
|
44
|
+
target: ScriptTarget.ES2024,
|
|
45
|
+
module: ModuleKind.ESNext,
|
|
46
|
+
moduleResolution: ModuleResolutionKind.NodeNext,
|
|
47
|
+
experimentalDecorators: true,
|
|
48
|
+
emitDecoratorMetadata: true,
|
|
49
|
+
useDefineForClassFields: false,
|
|
50
|
+
sourceMap: true,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
format: 'module',
|
|
55
|
+
shortCircuit: true,
|
|
56
|
+
source: transpiled.outputText,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
29
59
|
return nextLoad(specifier, context);
|
|
30
60
|
}
|
|
31
61
|
function extractCacheParam(specifier) {
|
|
@@ -35,4 +65,10 @@ function extractCacheParam(specifier) {
|
|
|
35
65
|
function stripQuery(specifier) {
|
|
36
66
|
return specifier.split('?')[0];
|
|
37
67
|
}
|
|
68
|
+
function isTypeScriptSpecifier(specifier) {
|
|
69
|
+
if (!specifier) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return /\.(?:ts|mts|cts)($|\?)/.test(specifier);
|
|
73
|
+
}
|
|
38
74
|
//# sourceMappingURL=module-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/main/module-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/main/module-loader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@athree/module-loader",
|
|
3
|
-
"version": "4.0.0
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./out/main/index.js",
|
|
7
|
-
"./register": "./out/main/register.js"
|
|
7
|
+
"./register": "./out/main/register.js",
|
|
8
|
+
"./types": "./types.d.ts"
|
|
8
9
|
},
|
|
10
|
+
"types": "./types.d.ts",
|
|
9
11
|
"files": [
|
|
10
|
-
"out"
|
|
12
|
+
"out",
|
|
13
|
+
"types.d.ts"
|
|
11
14
|
],
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"typescript": "^6.0.3"
|
|
17
|
+
},
|
|
12
18
|
"scripts": {
|
|
13
19
|
"clean": "rm -rf out/ *.tsbuildinfo"
|
|
14
20
|
}
|
package/types.d.ts
ADDED