Skip to content

Commit ffca7e0

Browse files
authored
Merge pull request #239 from laverdet/main
Use npm published resolution
2 parents 8179698 + f118862 commit ffca7e0

File tree

9 files changed

+65
-1069
lines changed

9 files changed

+65
-1069
lines changed

.changeset/cuddly-comics-poke.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@arethetypeswrong/core": patch
3+
---
4+
5+
Use `@loaderkit/resolve` for module resolution

packages/core/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
},
5252
"dependencies": {
5353
"@andrewbranch/untar.js": "^1.0.3",
54+
"@loaderkit/resolve": "^1.0.2",
5455
"cjs-module-lexer": "^1.2.3",
5556
"fflate": "^0.8.2",
5657
"lru-cache": "^10.4.3",

packages/core/src/internal/esm/cjsNamespace.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Package } from "../../createPackage.js";
22
import { getCjsModuleBindings } from "./cjsBindings.js";
3-
import { cjsResolve } from "./cjsResolve.js";
3+
import { cjsResolve } from "./resolve.js";
44

55
export function getCjsModuleNamespace(fs: Package, file: URL, seen = new Set<string>()): Set<string> {
66
seen.add(file.pathname);
@@ -17,9 +17,9 @@ export function getCjsModuleNamespace(fs: Package, file: URL, seen = new Set<str
1717

1818
for (const source of bindings.reexports.reverse()) {
1919
try {
20-
const { format, resolved } = cjsResolve(fs, source, file);
21-
if (format === "commonjs" && !seen.has(resolved.pathname)) {
22-
const reexported = getCjsModuleNamespace(fs, resolved, seen);
20+
const { format, url } = cjsResolve(fs, source, file);
21+
if (format === "commonjs" && !seen.has(url.pathname)) {
22+
const reexported = getCjsModuleNamespace(fs, url, seen);
2323
reexported.forEach((name) => exports.add(name));
2424
}
2525
} catch {}

packages/core/src/internal/esm/cjsResolve.ts

-298
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Package } from "../../createPackage.js";
22
import { getEsmModuleBindings } from "./esmBindings.js";
3-
import { esmResolve } from "./esmResolve.js";
43
import { getCjsModuleNamespace } from "./cjsNamespace.js";
4+
import { esmResolve } from "./resolve.js";
55

66
// Note: this doesn't handle ambiguous indirect exports which probably isn't worth the
77
// implementation complexity.
@@ -13,28 +13,28 @@ export function getEsmModuleNamespace(
1313
seen = new Set<string>(),
1414
): string[] {
1515
// Resolve specifier
16-
const { format, resolved } = esmResolve(fs, specifier, parentURL);
16+
const { format, url } = esmResolve(fs, specifier, parentURL);
1717

1818
// Don't recurse for circular indirect exports
19-
if (seen.has(resolved.pathname)) {
19+
if (seen.has(url.pathname)) {
2020
return [];
2121
}
22-
seen.add(resolved.pathname);
22+
seen.add(url.pathname);
2323

2424
if (format === "commonjs") {
25-
return [...getCjsModuleNamespace(fs, resolved)];
25+
return [...getCjsModuleNamespace(fs, url)];
2626
}
2727

2828
// Parse module bindings
2929
const bindings =
3030
(format ?? "module") === "module"
31-
? getEsmModuleBindings(fs.readFile(resolved.pathname))
31+
? getEsmModuleBindings(fs.readFile(url.pathname))
3232
: // Maybe JSON, WASM, etc
3333
{ exports: ["default"], reexports: [] };
3434

3535
// Concat indirect exports
3636
const indirect = bindings.reexports
37-
.flatMap((specifier) => getEsmModuleNamespace(fs, specifier, resolved, seen))
37+
.flatMap((specifier) => getEsmModuleNamespace(fs, specifier, url, seen))
3838
.filter((name) => name !== "default");
3939
return [...new Set([...bindings.exports, ...indirect])];
4040
}

0 commit comments

Comments
 (0)