Skip to content

Commit ffca7e0

Browse files
authoredFeb 21, 2025··
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
 

Diff for: ‎.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

Diff for: ‎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",

Diff for: ‎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 {}

Diff for: ‎packages/core/src/internal/esm/cjsResolve.ts

-298
This file was deleted.

Diff for: ‎packages/core/src/internal/esm/esmNamespace.ts

+7-7
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
}

Diff for: ‎packages/core/src/internal/esm/esmResolve.ts

-689
This file was deleted.

Diff for: ‎packages/core/src/internal/esm/nodeModules.ts

-60
This file was deleted.

Diff for: ‎packages/core/src/internal/esm/resolve.ts

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import type { Package } from "#createPackage.js";
2+
import * as cjs from "@loaderkit/resolve/cjs";
3+
import * as esm from "@loaderkit/resolve/esm";
4+
import type { FileSystemSync } from "@loaderkit/resolve/fs";
5+
6+
function makeFileSystemAdapter(fs: Package): FileSystemSync {
7+
return {
8+
directoryExists: url => fs.directoryExists(url.pathname),
9+
fileExists: url => fs.fileExists(url.pathname),
10+
readFileJSON: (url) => JSON.parse(fs.readFile(url.pathname)),
11+
readLink: () => undefined,
12+
}
13+
}
14+
15+
export function cjsResolve(fs: Package, specifier: string, parentURL: URL) {
16+
return cjs.resolveSync(makeFileSystemAdapter(fs), specifier, parentURL);
17+
}
18+
19+
export function esmResolve(fs: Package, specifier: string, parentURL: URL) {
20+
return esm.resolveSync(makeFileSystemAdapter(fs), specifier, parentURL);
21+
}

Diff for: ‎pnpm-lock.yaml

+27-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.