Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
319 commits
Select commit Hold shift + click to select a range
92c896b
Match Node directory import errors
noise64 Jun 29, 2026
7c68489
Trace module require and import diagnostics
noise64 Jun 29, 2026
e5dba1a
Implement module SourceMap API
noise64 Jun 29, 2026
d2280f4
Fix dynamic JSON import attributes
noise64 Jun 29, 2026
fb33100
Support package JSON dynamic import attributes
noise64 Jun 29, 2026
d0689ff
Support virtual JSON loader hooks
noise64 Jun 29, 2026
5dcb325
Use ESM resolver semantics for loader nextResolve
noise64 Jun 29, 2026
5b8f694
Initialize registered loader hooks with data
noise64 Jun 29, 2026
2bcfc4d
Support assertionless JSON loader attributes
noise64 Jun 29, 2026
3330370
Consolidate CJS dynamic import scanner
noise64 Jun 29, 2026
e8c5130
Support loader CommonJS source modules
noise64 Jun 30, 2026
3735972
Support loader module source validation
noise64 Jun 30, 2026
3d81ad6
Validate registered loader resolve URLs
noise64 Jun 30, 2026
911f33a
Promote passing loader fixtures
noise64 Jun 30, 2026
c558887
Clarify module global path gap
noise64 Jun 30, 2026
a414142
Clarify CommonJS module runnable coverage
noise64 Jun 30, 2026
aab7290
Handle VM dynamic import missing callback
noise64 Jun 30, 2026
dda8986
Handle VM dynamic import callbacks
noise64 Jun 30, 2026
84be8e2
Handle VM dynamic import callback errors
noise64 Jun 30, 2026
51521be
Support VM module dynamic namespace imports
noise64 Jun 30, 2026
27040ea
Promote VM module dynamic import compatibility
noise64 Jun 30, 2026
0f5a6b2
Harden VM module error semantics
noise64 Jun 30, 2026
ad3d63c
Support VM SyntheticModule live exports
noise64 Jun 30, 2026
ea30f6f
Mark VM module reevaluate runnable
noise64 Jun 30, 2026
cdfa83d
Constrain CJS reexport analysis target
noise64 Jun 30, 2026
84727e4
Support VM SourceTextModule import meta
noise64 Jun 30, 2026
3d6cb1b
Harden VM SourceTextModule scanning
noise64 Jun 30, 2026
63b22c5
Support VM SourceTextModule linking
noise64 Jun 30, 2026
27ebe64
Promote VM dynamic import lifetime
noise64 Jun 30, 2026
19461ab
Promote VM module basic coverage
noise64 Jun 30, 2026
36cc24f
Harden ESM resolver diagnostics
noise64 Jun 30, 2026
eac8559
Promote VM compileFunction coverage
noise64 Jun 30, 2026
4719754
Promote VM run filename coverage
noise64 Jun 30, 2026
e5e6014
Promote VM context validation coverage
noise64 Jun 30, 2026
432ae10
Harden import.meta.resolve runtime behavior
noise64 Jun 30, 2026
5e303ac
Clean up module compat split metadata
noise64 Jun 30, 2026
e4387d5
Cover CJS defineProperty lexer parity
noise64 Jun 30, 2026
aa48b91
Align require esm namespace descriptors
noise64 Jun 30, 2026
59cba4c
Classify ESM import.meta coverage
noise64 Jun 30, 2026
17e20a8
Clarify ESM CJS runner gaps
noise64 Jun 30, 2026
c56b314
Promote ESM import attribute fixtures
noise64 Jun 30, 2026
d2dd1e6
Promote core ESM runtime fixtures
noise64 Jul 1, 2026
b27c628
Promote ESM dynamic import fixtures
noise64 Jul 1, 2026
1829fb4
Promote ESM path and JSON fixtures
noise64 Jul 1, 2026
b767cac
Promote ESM symlink fixtures
noise64 Jul 1, 2026
7e91741
Promote remaining core ESM fixtures
noise64 Jul 1, 2026
4c39595
Promote ESM loader fixtures
noise64 Jul 1, 2026
356c261
Promote remaining VM module fixtures
noise64 Jul 1, 2026
eb01e3d
Cache ambiguous CJS syntax scan
noise64 Jul 1, 2026
f7bbc68
Cache require ESM graph classification
noise64 Jul 1, 2026
437b94d
Share loader CJS parser helpers
noise64 Jul 1, 2026
d365359
Harden loader CJS named export tracking
noise64 Jul 1, 2026
166d682
Hoist loader CJS parser helpers
noise64 Jul 1, 2026
76444da
Share loader chain error helper
noise64 Jul 1, 2026
fad2fa6
Collapse CJS analysis resolver candidates
noise64 Jul 1, 2026
b4dc075
Hoist loader ESM resolver helpers
noise64 Jul 1, 2026
412f1f6
Hoist loader package resolver helpers
noise64 Jul 1, 2026
860156e
Clarify module loading compat gap
noise64 Jul 1, 2026
e84cd20
Align loader hook conditions
noise64 Jul 1, 2026
6089fed
Parse loader CJS object exports
noise64 Jul 1, 2026
ee2c572
Parse loader CJS getter descriptors
noise64 Jul 1, 2026
d5d2203
Harden loader CJS descriptor parsing
noise64 Jul 1, 2026
748e832
Reject ambiguous loader CJS descriptors
noise64 Jul 1, 2026
26adaaf
Preserve loader CJS value descriptor parity
noise64 Jul 1, 2026
fe0fd36
Harden CJS descriptor export analysis
noise64 Jul 1, 2026
5673b6f
Align CJS descriptor key scanning
noise64 Jul 1, 2026
30315d6
Align loader CJS descriptor key scanning
noise64 Jul 1, 2026
bf1c873
Align CJS object spread export scanning
noise64 Jul 1, 2026
5d3fbb3
Align loader CJS object spread scanning
noise64 Jul 1, 2026
3d33afb
Share JS package exports resolver helpers
noise64 Jul 1, 2026
77bb3b2
Bridge static ESM sync loader resolution
noise64 Jul 1, 2026
b4010d2
Honor node compat import preloads
noise64 Jul 1, 2026
a9d26db
Promote CJS module loading fixture
noise64 Jul 1, 2026
b359e96
Fix ESM JSON URL cache keys
noise64 Jul 1, 2026
7c7d398
Hide tmpdir fs shim marker from namespace exports
noise64 Jul 1, 2026
9f8a54e
Normalize static loader entry specifiers
noise64 Jul 1, 2026
91ded63
Share JS identifier scanner helper
noise64 Jul 1, 2026
1b4e632
Clarify async static loader gaps
noise64 Jul 1, 2026
e98c387
Isolate registered loader module cache
noise64 Jul 1, 2026
f5a9e4e
Hide CommonJS globals from ESM
noise64 Jul 1, 2026
3da4d3d
Align CJS primitive object export scanning
noise64 Jul 1, 2026
f08f5b4
Share ESM CJS global scanner skips
noise64 Jul 1, 2026
1713d83
Share package target context resolution
noise64 Jul 1, 2026
0e4f6b6
Share JS package target context resolution
noise64 Jul 1, 2026
58e01fc
Classify loader mock worker dependency
noise64 Jul 1, 2026
ab2920a
Harden require esm rejection tracking
noise64 Jul 1, 2026
a8c14e4
Avoid array iterator in import meta resolve wiring
noise64 Jul 1, 2026
f692392
Harden module helpers against deleted array iterator
noise64 Jul 1, 2026
e23656f
Support async static loader pre-resolution
noise64 Jul 1, 2026
3536e8f
Honor parent module resolution in Module load
noise64 Jul 1, 2026
4028da7
Expose Module resolve filename helper
noise64 Jul 1, 2026
0847fb7
Share CommonJS resolve helper
noise64 Jul 1, 2026
7e7b0d9
Support Module compile on prototype
noise64 Jul 1, 2026
1028e74
Align Module constructor shape
noise64 Jul 1, 2026
5811cab
Support vm Script sourceMapURL
noise64 Jul 1, 2026
6d58221
Align vm Script receiver validation
noise64 Jul 1, 2026
32c57c1
Propagate vm sandbox writes
noise64 Jul 1, 2026
f58ea03
Hide vm context metadata
noise64 Jul 2, 2026
14d5801
Replay vm context string descriptors
noise64 Jul 2, 2026
30ec2de
Replay vm context symbol descriptors
noise64 Jul 2, 2026
1c93805
Promote vm create-and-run context test
noise64 Jul 2, 2026
b5a7e05
Clarify vm prototype context gaps
noise64 Jul 2, 2026
7cf9a6d
Validate vm Script options
noise64 Jul 2, 2026
0c70cd4
Promote vm strict mode coverage
noise64 Jul 2, 2026
f7a0405
Promote vm context fixture coverage
noise64 Jul 2, 2026
9039668
Hide extra vm context globals
noise64 Jul 2, 2026
d1ad461
Promote vm context property forwarding
noise64 Jul 2, 2026
ae5b6ee
Narrow vm strict assignment gap
noise64 Jul 2, 2026
3ffda0a
Harden vm baseline global writeback
noise64 Jul 2, 2026
c06f363
Harden vm validation and assert regex handling
noise64 Jul 2, 2026
3513473
Promote vm empty proxy execution
noise64 Jul 2, 2026
b03e972
Use explicit require in module resolution runtime tests
noise64 Jul 2, 2026
499db76
Match CJS export-star hasOwn guards
noise64 Jul 2, 2026
bb83bd2
Tighten CJS defineProperty enumerable detection
noise64 Jul 2, 2026
0969af3
Align CJS descriptor enumerable scanning
noise64 Jul 2, 2026
d246ba2
Support loader CJS Object.keys reexports
noise64 Jul 2, 2026
5a76b0a
Clarify preload self-reference gap
noise64 Jul 2, 2026
03a4ea7
Align Rust CJS reexport guard scanning
noise64 Jul 2, 2026
7a092a4
Share Rust CJS hasOwn guard parsing
noise64 Jul 2, 2026
fd6593c
Share Rust CJS key comparison parsing
noise64 Jul 2, 2026
966d407
Share Rust CJS require call parsing
noise64 Jul 2, 2026
9bbb759
Share Rust scanner whitespace skipping
noise64 Jul 2, 2026
5abc2c8
Share Rust CJS identifier matching
noise64 Jul 2, 2026
109538e
Share Rust package map target selection
noise64 Jul 2, 2026
3e73a33
Share Rust package target resolve context
noise64 Jul 2, 2026
7f920fd
Share JS package map target selection
noise64 Jul 2, 2026
5735a3d
Share Rust direct reexport key parsing
noise64 Jul 2, 2026
0b3e96a
Share Rust defineProperty call parsing
noise64 Jul 2, 2026
aade138
Share JS defineProperty call parsing
noise64 Jul 2, 2026
5f11384
Align CJS directory and loader guard resolution
noise64 Jul 2, 2026
5bfa305
Restore CJS directory resolution gate
noise64 Jul 2, 2026
4f9061d
Share CJS package file probe helpers
noise64 Jul 2, 2026
65c76a3
Tighten CJS reexport descriptor detection
noise64 Jul 2, 2026
0bee725
Handle loader CJS require spread reexports
noise64 Jul 2, 2026
1ea54ac
Harden package warning emitter contract
noise64 Jul 2, 2026
5765a74
Cover CJS package subpath fallbacks
noise64 Jul 2, 2026
686736f
Cover CJS native addon fallbacks
noise64 Jul 2, 2026
53ec05d
Clarify CJS analysis package fallbacks
noise64 Jul 2, 2026
e6d7d0c
Centralize package resolve mode decisions
noise64 Jul 2, 2026
a250279
Share loader descriptor scanner mechanics
noise64 Jul 2, 2026
809f9e0
Share loader has-own parser
noise64 Jul 2, 2026
80ba007
Share Rust descriptor scanner mechanics
noise64 Jul 2, 2026
ab75360
Remove unused CJS parser helper
noise64 Jul 2, 2026
8e9ce47
Move package conditions onto resolve mode
noise64 Jul 2, 2026
1d4d315
Share loader function getter parser
noise64 Jul 2, 2026
5b82122
Share registered loader default resolver
noise64 Jul 2, 2026
d2b81b7
Share CJS analysis directory fallbacks
noise64 Jul 2, 2026
faac61f
Hide package warning suppression state
noise64 Jul 2, 2026
a51b509
Hide package warning dedupe state
noise64 Jul 2, 2026
eb9b718
Remove package warning helper global
noise64 Jul 2, 2026
d1ab302
Share loader CJS identifier parsing
noise64 Jul 2, 2026
bfff83f
Share loader require binding parser
noise64 Jul 2, 2026
c96a08a
Share loader object keys parser
noise64 Jul 2, 2026
fb0ba3e
Share loader export name parser
noise64 Jul 2, 2026
b25e719
Share loader getter identifier parser
noise64 Jul 2, 2026
12aac5a
Share loader descriptor function parser
noise64 Jul 2, 2026
6296743
Hide private builtin modules from users
noise64 Jul 2, 2026
308343f
Share loader named identifier parser
noise64 Jul 2, 2026
468d303
Share CJS analyzer if parser
noise64 Jul 2, 2026
9e30d31
Share loader if guard parser
noise64 Jul 2, 2026
85a07e2
Share loader reexport identifier parser
noise64 Jul 2, 2026
95d6e7b
Share loader call identifier parser
noise64 Jul 2, 2026
d3aa604
Share loader Object keys parser
noise64 Jul 2, 2026
538fb99
Cover private builtin resolution APIs
noise64 Jul 2, 2026
407e874
Share loader export target parser
noise64 Jul 2, 2026
662798b
Share loader keyword parser
noise64 Jul 2, 2026
f484b29
Share Rust import keyword parser
noise64 Jul 2, 2026
e334b9d
Share ESM syntax keyword parser
noise64 Jul 2, 2026
ef8cd87
Share declaration keyword parser
noise64 Jul 2, 2026
c58d60b
Share CJS fixed-name parser
noise64 Jul 2, 2026
6808cba
Share CJS descriptor keyword parser
noise64 Jul 2, 2026
f31c61c
Share CJS Object keys parser
noise64 Jul 2, 2026
31f876f
Share CJS helper prefix parser
noise64 Jul 2, 2026
2b384a1
Share dynamic CJS identifier parser
noise64 Jul 2, 2026
7a73725
Share loader ESM syntax parser
noise64 Jul 2, 2026
1ac6fbb
Share loader identifier boundary parser
noise64 Jul 2, 2026
56ab0a5
Share Rust import meta parser
noise64 Jul 2, 2026
1678437
Parse loader import meta tokens
noise64 Jul 2, 2026
0060d4b
Share Rust object method parser
noise64 Jul 2, 2026
7cedf0a
Share Rust in-token parser
noise64 Jul 2, 2026
0d95108
Parse import meta main tokens
noise64 Jul 2, 2026
202968c
Share static import specifier parser
noise64 Jul 2, 2026
92f135f
Share import attribute string scanner
noise64 Jul 2, 2026
6661423
Share dynamic import specifier parser
noise64 Jul 2, 2026
2a5aace
Share package warning de-dupe state
noise64 Jul 2, 2026
766a6da
Share JS package exports lookup
noise64 Jul 2, 2026
89181dc
Share JS comment scanner
noise64 Jul 2, 2026
a8cf731
Cover CJS comment statement boundaries
noise64 Jul 2, 2026
8ba768c
Share Rust declaration keyword parsing
noise64 Jul 2, 2026
5d46a12
Reject private names as free CJS identifiers
noise64 Jul 2, 2026
59b564f
Share Rust CJS global name parsing
noise64 Jul 2, 2026
2405b57
Share Rust CJS declaration parsing
noise64 Jul 2, 2026
9836653
Remove unused Rust module scanner helpers
noise64 Jul 2, 2026
a8dda49
Parse createRequire graph imports as tokens
noise64 Jul 2, 2026
ed15a6d
Allow comments in createRequire wrapper scan
noise64 Jul 2, 2026
238106e
Allow comments in static import scans
noise64 Jul 2, 2026
3882423
Allow comments in static import attributes
noise64 Jul 2, 2026
31f3a2a
Allow comments in dynamic import attributes
noise64 Jul 2, 2026
9f4dbe8
Defer loader CJS previous-token checks
noise64 Jul 2, 2026
e0f4214
Share loader require binding keyword parsing
noise64 Jul 2, 2026
675e15b
Share Rust variable declaration keyword parsing
noise64 Jul 2, 2026
b690d3b
Align Rust CJS descriptor tests with Node
noise64 Jul 2, 2026
887986b
Mark ignored Rust scanner traversals
noise64 Jul 2, 2026
50ce3f1
Share JS CJS package fallback probing
noise64 Jul 2, 2026
b22879c
Reuse loader require call parser
noise64 Jul 2, 2026
e053455
Cover loader CJS continuation reexports
noise64 Jul 2, 2026
33da680
Cache require ESM graph file info
noise64 Jul 2, 2026
2a03800
Align JS package condition values
noise64 Jul 2, 2026
a8a31da
Reject node imports package targets
noise64 Jul 2, 2026
eae5e89
Align encoded imports package targets
noise64 Jul 3, 2026
d41acc5
Resolve loader CJS package reexports
noise64 Jul 3, 2026
4df7020
Harden CJS forEach reexport parsing
noise64 Jul 3, 2026
ff5b359
Align CJS require spread continuation exports
noise64 Jul 3, 2026
488808a
Align CJS direct require continuations
noise64 Jul 3, 2026
0f9e95f
Avoid CJS analysis probe Vec allocation
noise64 Jul 3, 2026
d89d10b
Cover CJS imports reexport analysis
noise64 Jul 3, 2026
ba520b7
Cover programmatic loader chaining
noise64 Jul 3, 2026
0c68c53
Clarify util inspect namespace compatibility
noise64 Jul 3, 2026
bbae930
Share Rust CJS ASI continuation scanner helper
noise64 Jul 3, 2026
920a901
Align loader CJS ASI continuation scanning
noise64 Jul 3, 2026
1d3036d
Avoid loader ASI pair substring allocation
noise64 Jul 3, 2026
6337078
Share CJS object literal entry parsing
noise64 Jul 3, 2026
fc90071
Share loader object literal entry parsing
noise64 Jul 3, 2026
0b18ad1
Avoid Rust CJS ASI pair slicing
noise64 Jul 3, 2026
9ddf93c
Share loader CJS operator parsing
noise64 Jul 3, 2026
e73e5bc
Share Rust CJS operator parsing
noise64 Jul 3, 2026
3b8f7a6
Share CJS spread token checks
noise64 Jul 3, 2026
51283eb
Share CJS assignment token checks
noise64 Jul 3, 2026
97fc0d9
Require loader CJS reexport boundaries
noise64 Jul 3, 2026
356d0de
Allow package root export targets
noise64 Jul 3, 2026
fddfc46
Share CJS getter return parsing
noise64 Jul 3, 2026
1e87112
Avoid loader getter member allocation
noise64 Jul 3, 2026
c296011
Fix ambiguous JS module syntax detection
noise64 Jul 3, 2026
db0cd7a
Defer CJS wrapper redeclaration scan
noise64 Jul 3, 2026
e08660f
Fix require ESM syntax detection bridge
noise64 Jul 3, 2026
d8e2595
Promote module diagnostics channel tests
noise64 Jul 3, 2026
79c5be1
Promote delayed require tests
noise64 Jul 3, 2026
f4b6bda
Clarify runnable module subtests
noise64 Jul 3, 2026
3fd8c31
Clarify runnable source map module subtests
noise64 Jul 3, 2026
09d40fc
Fix test module mock dynamic imports
noise64 Jul 3, 2026
81ae155
Cover dynamic import cache mutation
noise64 Jul 3, 2026
d7e99ae
Clarify loader CLI known gaps
noise64 Jul 3, 2026
3697f52
Promote extensionless ESM import subtests
noise64 Jul 3, 2026
57c8ddd
Promote ESM type flag import subtests
noise64 Jul 3, 2026
98844ca
Cover module syntax scanner false positives
noise64 Jul 3, 2026
710a5d2
Promote CJS source map cache cleanup
noise64 Jul 3, 2026
1df6794
Clarify VM module leak compatibility status
noise64 Jul 3, 2026
b4f3e14
Classify source map CallSite offset difference
noise64 Jul 3, 2026
7277585
Fix cjs require runtime fixture
noise64 Jul 3, 2026
15d62cd
Cover package exports CJS reexport analysis
noise64 Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,16 +78,22 @@ jobs:
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4, 5, 6, 7, 8]
group: [1, 2, 3, 4, 5, 6, 7, 8, 9]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/actions/setup
- name: Enable Golem wasmtime fork
run: bash .github/scripts/enable-wasmtime-fork.sh
- name: Runtime tests (group ${{ matrix.group }}/8)
- uses: actions/setup-node@v4
if: matrix.group == 9
with:
node-version: "22.14.0"
- name: Runtime tests (group ${{ matrix.group }}/9)
run: cargo test --test runtime $CI_WASMTIME_FORK_FEATURES -- --report-time --format ctrf --logfile target/ctrf.json ':tag:group${{ matrix.group }}'
env:
NODE_MODULES_APP_STRICT_NODE_BASELINE: "1"
- name: Publish Test Report
uses: ctrf-io/github-test-reporter@v1
if: always()
Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22.14.0
13 changes: 13 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,19 @@ The `tests/node_compat/` directory contains vendored Node.js test files used to

Load the `fixing-node-compat-test` skill for the full workflow when making a test pass.

## Node Modules App Tests

The `tests/node_modules_apps/` directory contains CI-enforced runtime tests for unbundled npm apps installed with real `node_modules` and attached to the component filesystem as `/app`. This suite is separate from `tests/libraries/`, which documents Rollup-bundled package compatibility.

Important rules:

- `tests/node_modules_apps/config.jsonc` is the source of truth for node modules app tests. Runtime tests in `tests/runtime/node_modules_apps.rs` are generated from it.
- Add app fixtures under `tests/node_modules_apps/apps/<app>/` with a `package.json`, `run-node.mjs`, and `test-*` files exporting `run()`.
- Node modules app tests run `npm install --install-links --ignore-scripts --no-audit --no-fund`, verify the raw test with host Node.js, then run it through wasm-rquickjs from `/app`.
- Keep this suite focused on real `node_modules` module loading, CJS/ESM interop, package maps, filesystem-backed package behavior, and high-value smoke tests. Do not use it for native `.node`, WASM artifact loading, subprocess-heavy, or live-network scenarios.
- CI runs node modules app tests as runtime `group9`; regular runtime tests use `group1` through `group8`.
- Before running node modules app runtime tests after skeleton changes, run `./cleanup-skeleton.sh`, then use `cargo test --test runtime --features use-golem-wasmtime -- ':tag:group9'` for the CI-like group, `cargo test --test runtime --features use-golem-wasmtime -- node_modules_app --nocapture` for the full node modules app suite, or a narrower node modules app filter.

### ⚠️ Keeping `node_compat` and `node_compat_report` in sync

The `tests/node_compat.rs` test harness and the `tests/node_compat_report.rs` report generator are **two separate runners** with independent Host types, linker setups, and WASI context configurations. **Whenever you change the WASI context, linker setup, or Host configuration in `tests/common/mod.rs` (used by `node_compat`), you MUST apply the same change to `tests/node_compat_report.rs`** — otherwise the two runners will produce different results.
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,8 @@ Compatibility stubs — no V8 inspector in WASM.
<details>
<summary><strong><code>node:module</code></strong></summary>

- `require`, `createRequire`, `builtinModules`, `isBuiltin`, `runMain`, `_nodeModulePaths`
- `require`, `require.resolve`, `createRequire`, `builtinModules`, `isBuiltin`, `runMain`, `_nodeModulePaths`
- Package resolution supports `package.json` `main`, `exports` root/subpath maps, wildcard `exports` patterns, `imports` maps, and wildcard `imports` patterns. CJS resolution recognizes `golem`, `node`, `require`, `module-sync`, and `default` conditions; ESM resolution recognizes `golem`, `node`, `import`, `module-sync`, and `default`. Package `imports` can target relative files, external packages, and `node:` builtins.

</details>

Expand Down
Loading