@scriptc/compiler 0.4.6 → 0.4.8
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/ambient/node-fallback/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +29 -6
- package/ambient/node-fallback/fs-promises.d.ts +1 -1
- package/ambient/node-fallback/fs.d.ts +57 -12
- package/ambient/node-fallback/http.d.ts +26 -18
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +25 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/querystring.d.ts +3 -3
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +95 -20
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +22 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +12 -1
- package/dist/backend/immutability.js +50 -4
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/immutability.test.js +95 -1
- package/dist/backend/immutability.test.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +18 -5
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +20 -2
- package/dist/backend/linker.js +221 -35
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +15 -6
- package/dist/backend/lld.js +24 -16
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +13 -5
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +50 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +34 -9
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +64 -3
- package/dist/backend/llvm/dyn.js +251 -15
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +68 -5
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +226 -77
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +138 -34
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +142 -10
- package/dist/backend/llvm/emitter.js +523 -73
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +4 -1
- package/dist/backend/llvm/expr-calls.js +38 -6
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +237 -23
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +123 -12
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +59 -2
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +2 -0
- package/dist/backend/llvm/integer-values.js +6 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +57 -1
- package/dist/backend/llvm/js-ic.js +389 -22
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +152 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +116 -11
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +180 -27
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +139 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +67 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
- package/dist/backend/llvm/loop-entry-versions.js +43 -21
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +7 -1
- package/dist/backend/llvm/loop-state.js +26 -3
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
- package/dist/backend/llvm/map-number-lookup.js +7 -3
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +58 -17
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
- package/dist/backend/llvm/receiver-brackets.test.js +68 -0
- package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
- package/dist/backend/llvm/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.d.ts +22 -2
- package/dist/backend/llvm/record-views.js +147 -12
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/record-views.test.js +76 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +4 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +36 -3
- package/dist/backend/llvm/shapes.js +201 -16
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +4 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +10 -1
- package/dist/backend/llvm/speculative-integers.js +59 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +3 -3
- package/dist/backend/llvm/unwind-abi.js +8 -3
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +47 -3
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +94 -0
- package/dist/backend/native/executable.js +134 -10
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +10 -2
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +8 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +30 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +72 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.js +1 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-profile.d.ts +4 -1
- package/dist/backend/native-profile.js +12 -1
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +10 -0
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/publication.d.ts +4 -1
- package/dist/backend/publication.js +4 -2
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +46 -7
- package/dist/backend/runtime-pack-core.js +37 -2
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +18 -1
- package/dist/backend/runtime-pack-native.js +138 -29
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +166 -4
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -0
- package/dist/backend/runtime-pack.js +25 -3
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +213 -12
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +8 -1
- package/dist/backend/vendor-archives.js +313 -8
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +60 -3
- package/dist/backend/vendor-inputs.js +109 -3
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +62 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +2 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +7 -1
- package/dist/compat/fetch-profile.js +25 -12
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.d.ts +3 -0
- package/dist/contracts/check.js +18 -5
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +47 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +14 -0
- package/dist/diagnostics/codes.js +14 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +68 -0
- package/dist/diagnostics/diagnostic.js +186 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.js +3 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +48 -0
- package/dist/executable/executable-cache.js +38 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +127 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +13 -3
- package/dist/executable/prepare.js +438 -234
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +24 -0
- package/dist/frontend/early-errors.js +836 -0
- package/dist/frontend/early-errors.js.map +1 -0
- package/dist/frontend/early-errors.test.d.ts +1 -0
- package/dist/frontend/early-errors.test.js +207 -0
- package/dist/frontend/early-errors.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +88 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +47 -0
- package/dist/frontend/input-tracker.js +173 -36
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +86 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/js-inference.d.ts +2 -0
- package/dist/frontend/js-inference.js +18 -0
- package/dist/frontend/js-inference.js.map +1 -0
- package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
- package/dist/frontend/lowering/binding-analysis.js +86 -4
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +13 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +41 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js +52 -12
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +565 -28
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
- package/dist/frontend/lowering/builtins/dates.js +23 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
- package/dist/frontend/lowering/builtins/environment.js +213 -2
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +75 -18
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
- package/dist/frontend/lowering/builtins/filesystem.js +185 -16
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +42 -3
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +9 -5
- package/dist/frontend/lowering/builtins/operating-system.js +101 -20
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +18 -2
- package/dist/frontend/lowering/builtins/process.js +386 -25
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
- package/dist/frontend/lowering/builtins/querystring.js +202 -18
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +200 -38
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +60 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +55 -13
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
- package/dist/frontend/lowering/builtins/v8.js +7 -5
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +180 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +5 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +14 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1376 -1009
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +59 -10
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +20 -15
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +35 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/class-views.d.ts +13 -0
- package/dist/frontend/lowering/class-views.js +51 -0
- package/dist/frontend/lowering/class-views.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +63 -10
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +15 -0
- package/dist/frontend/lowering/coercions/state.js +24 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +75 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +39 -2
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +288 -90
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +37 -8
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +30 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +450 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +16 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +74 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +24 -0
- package/dist/frontend/lowering/expressions/array-literals.js +88 -10
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +216 -14
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +272 -11
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +173 -4
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +195 -18
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
- package/dist/frontend/lowering/expressions/object-literals.js +951 -240
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +71 -21
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +39 -0
- package/dist/frontend/lowering/expressions/property-access.js +1141 -87
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +262 -4
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +25 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +156 -22
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +6 -0
- package/dist/frontend/lowering/frozen-records.js +10 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
- package/dist/frontend/lowering/frozen-records.test.js +44 -0
- package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
- package/dist/frontend/lowering/function-names.d.ts +9 -0
- package/dist/frontend/lowering/function-names.js +95 -0
- package/dist/frontend/lowering/function-names.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +42 -13
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +75 -0
- package/dist/frontend/lowering/generic-functions.js +790 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +15 -4
- package/dist/frontend/lowering/global-values.js +67 -9
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.js +34 -1
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
- package/dist/frontend/lowering/key-order-witness.js +571 -9
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +25 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +140 -16
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
- package/dist/frontend/lowering/lower-builtin-values.js +342 -58
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +47 -1
- package/dist/frontend/lowering/lower-calls.js +1354 -273
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-calls.test.js +121 -0
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +36 -5
- package/dist/frontend/lowering/lower-classes.js +630 -89
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +15 -2
- package/dist/frontend/lowering/lower-event-emitter.js +610 -98
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +15 -1
- package/dist/frontend/lowering/lower-exprs.js +96 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +27 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +713 -92
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +135 -27
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
- package/dist/frontend/lowering/lower-node-island.js +472 -67
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +463 -96
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.js +13 -1
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
- package/dist/frontend/lowering/lower-stdlib.js +77 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +24 -4
- package/dist/frontend/lowering/lower-stmts.js +831 -136
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +126 -8
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +243 -48
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +363 -21
- package/dist/frontend/lowering/lowerer.js +1224 -129
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +19 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +15 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/new-target.js +2 -2
- package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
- package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +36 -0
- package/dist/frontend/lowering/partial-assertions.js +189 -0
- package/dist/frontend/lowering/partial-assertions.js.map +1 -0
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
- package/dist/frontend/lowering/primitive-wrappers.js +221 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
- package/dist/frontend/lowering/private-statics.d.ts +46 -0
- package/dist/frontend/lowering/private-statics.js +322 -0
- package/dist/frontend/lowering/private-statics.js.map +1 -0
- package/dist/frontend/lowering/record-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.js.map +1 -0
- package/dist/frontend/lowering/record-sources.d.ts +12 -1
- package/dist/frontend/lowering/record-sources.js +60 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.d.ts +4 -0
- package/dist/frontend/lowering/strict-equality.js +14 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +42 -1
- package/dist/frontend/lowering/surfaces.js +212 -71
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +136 -17
- package/dist/frontend/lowering/unit-journal.js +324 -53
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +126 -3
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
- package/dist/frontend/lowering/unit-reuse.js +1008 -0
- package/dist/frontend/lowering/unit-reuse.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +12 -0
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-file-import.test.d.ts +1 -0
- package/dist/frontend/npm-file-import.test.js +76 -0
- package/dist/frontend/npm-file-import.test.js.map +1 -0
- package/dist/frontend/npm-static.js +95 -11
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.d.ts +9 -0
- package/dist/frontend/npm.js +82 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +9 -4
- package/dist/frontend/pipeline.js +162 -38
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-node.d.ts +3 -0
- package/dist/frontend/program-node.js +13 -6
- package/dist/frontend/program-node.js.map +1 -1
- package/dist/frontend/program.d.ts +71 -2
- package/dist/frontend/program.js +836 -411
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/provenance-core.js +4 -0
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/services-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/services.d.ts +14 -0
- package/dist/frontend/services.js +52 -2
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +61 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +5 -0
- package/dist/frontend/shape-inference/analyze.js +104 -4
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/domain.js +0 -1
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/index.js +5 -1
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/memo.d.ts +2 -1
- package/dist/frontend/shape-inference/memo.js +6 -2
- package/dist/frontend/shape-inference/memo.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.d.ts +1 -1
- package/dist/frontend/shape-inference/overlay.js +184 -4
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.js +11 -6
- package/dist/frontend/shape-inference/static-objects.js.map +1 -1
- package/dist/frontend/source-phase-imports.test.d.ts +1 -0
- package/dist/frontend/source-phase-imports.test.js +37 -0
- package/dist/frontend/source-phase-imports.test.js.map +1 -0
- package/dist/frontend/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +6 -1
- package/dist/frontend/ts7/ast-node.js +12 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.js +3 -5
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +13 -0
- package/dist/frontend/ts7/checker-backend.js +84 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +126 -2
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +22 -1
- package/dist/frontend/ts7/program-host.js +49 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +83 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.d.ts +16 -1
- package/dist/frontend/ts7/rpc-process.js +170 -92
- package/dist/frontend/ts7/rpc-process.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.test.js +49 -21
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +956 -101
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +98 -11
- package/dist/frontend/type-mapper.js +770 -182
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +224 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/build.d.ts +3 -2
- package/dist/ir/build.js +4 -2
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +96 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +453 -26
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.d.ts +82 -0
- package/dist/ir/codec.generated.d.ts +13 -0
- package/dist/ir/codec.generated.js +5350 -0
- package/dist/ir/codec.generated.js.map +1 -0
- package/dist/ir/codec.js +325 -0
- package/dist/ir/codec.js.map +1 -0
- package/dist/ir/codec.test.d.ts +1 -0
- package/dist/ir/codec.test.js +225 -0
- package/dist/ir/codec.test.js.map +1 -0
- package/dist/ir/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +29 -10
- package/dist/ir/fields.generated.js +1039 -11
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/fields.test.js +46 -2
- package/dist/ir/fields.test.js.map +1 -1
- package/dist/ir/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +6 -4
- package/dist/ir/function-references.js +11 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +14 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.js.map +1 -1
- package/dist/ir/inline-array-sources.js +4 -1
- package/dist/ir/inline-array-sources.js.map +1 -1
- package/dist/ir/inline-array-views.d.ts +13 -0
- package/dist/ir/inline-array-views.js +945 -0
- package/dist/ir/inline-array-views.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +7 -0
- package/dist/ir/inline-arrays.js +190 -55
- package/dist/ir/inline-arrays.js.map +1 -1
- package/dist/ir/inline-arrays.test.js +140 -2
- package/dist/ir/inline-arrays.test.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/integer-ranges.js +16 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +130 -44
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.d.ts +10 -9
- package/dist/ir/js-ic.js +58 -25
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +37 -3
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/jsval.js +374 -63
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +96 -2
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.js +112 -9
- package/dist/ir/loop-entry-ranges.js.map +1 -1
- package/dist/ir/loop-entry-ranges.test.js +40 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -3
- package/dist/ir/parameter-versions.js +63 -40
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/receiver-readers.js +58 -2
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +139 -5
- package/dist/ir/runtime-features.js +397 -19
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +135 -1
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +11 -2
- package/dist/ir/saturating-loop-jams.js +56 -16
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/saturating-loop-jams.test.js +39 -1
- package/dist/ir/saturating-loop-jams.test.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +40 -28
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/self-captures.test.js +15 -0
- package/dist/ir/self-captures.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +8 -2
- package/dist/ir/serialize.js +92 -24
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +170 -22
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +46 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +4 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +49 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +2 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +26 -5
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +74 -28
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +63 -4
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +93 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.js +9 -2
- package/dist/native/toolchain.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +37 -1
- package/dist/node-islands/boundary.js +65 -7
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +27 -1
- package/dist/node-islands/detect.js +475 -40
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +175 -4
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/effect-gate.js +30 -20
- package/dist/node-islands/effect-gate.js.map +1 -1
- package/dist/node-islands/effect-gate.test.js +4 -1
- package/dist/node-islands/effect-gate.test.js.map +1 -1
- package/dist/node-islands/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- package/dist/node-islands/libnode.d.ts +1 -1
- package/dist/node-islands/libnode.js +1 -1
- package/dist/node-islands/libnode.js.map +1 -1
- package/dist/node-islands/modules.d.ts +28 -0
- package/dist/node-islands/modules.js +156 -0
- package/dist/node-islands/modules.js.map +1 -1
- package/dist/node-islands/modules.test.js +105 -1
- package/dist/node-islands/modules.test.js.map +1 -1
- package/dist/node-islands/policy.js +2 -3
- package/dist/node-islands/policy.js.map +1 -1
- package/dist/node-islands/probe-recorder.d.ts +1 -0
- package/dist/node-islands/probe-recorder.js +596 -0
- package/dist/node-islands/probe-recorder.js.map +1 -0
- package/dist/node-islands/probe-recorder.test.d.ts +1 -0
- package/dist/node-islands/probe-recorder.test.js +80 -0
- package/dist/node-islands/probe-recorder.test.js.map +1 -0
- package/dist/node-islands/report.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +4 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +9 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +16 -1
- package/dist/node-islands/scan.js +110 -9
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/node-islands/snapshot.d.ts +38 -1
- package/dist/node-islands/snapshot.js +165 -161
- package/dist/node-islands/snapshot.js.map +1 -1
- package/dist/node-islands/snapshot.test.js +63 -2
- package/dist/node-islands/snapshot.test.js.map +1 -1
- package/dist/node-islands/summary.js +8 -0
- package/dist/node-islands/summary.js.map +1 -1
- package/dist/node-islands/type-strip.d.ts +11 -0
- package/dist/node-islands/type-strip.js +157 -0
- package/dist/node-islands/type-strip.js.map +1 -0
- package/dist/node-islands/type-strip.test.d.ts +1 -0
- package/dist/node-islands/type-strip.test.js +31 -0
- package/dist/node-islands/type-strip.test.js.map +1 -0
- package/dist/project-config.d.ts +4 -0
- package/dist/project-config.js +19 -0
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +10 -0
- package/dist/project-config.test.js.map +1 -1
- package/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +221 -122
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
1
2
|
import { frontendDisposed } from "../frontend/dispose-hook.js";
|
|
2
|
-
import { checkerPanicDiag, nodeIslandNoteDiag, nodeIslandRetryFailedDiag, npmStaticRefusalDiag, iceDiag, isCheckerPanic, } from "../diagnostics/diagnostic.js";
|
|
3
|
+
import { checkerPanicDiag, nodeIslandEntryPatchDiag, nodeIslandEntryReadDiag, nodeIslandImplicitGlobalReadDiag, nodeIslandModuleNoteDiag, nodeIslandNoteDiag, nodeIslandReaderStripDiag, nodeIslandStripDiag, nodeIslandRetryFailedDiag, npmStaticRefusalDiag, nativePackageDiag, iceDiag, isCheckerPanic, stdioPatchAcrossIslandsDiag, } from "../diagnostics/diagnostic.js";
|
|
3
4
|
import { validateModule } from "../ir/validate.js";
|
|
4
5
|
import { checkContracts } from "../contracts/check.js";
|
|
5
6
|
import { fenceSpeculativeWasiFunctions, moduleWasiUnavailableSurface, targetRefusalDiag, } from "../backend/target-diagnostics.js";
|
|
6
7
|
import { readProjectConfig } from "../project-config.js";
|
|
7
|
-
import { nodeIslandPolicy } from "../node-islands/policy.js";
|
|
8
|
+
import { isMarkedUserModule, nodeIslandPolicy, } from "../node-islands/policy.js";
|
|
8
9
|
import { buildNodeIslandReport } from "../node-islands/report.js";
|
|
9
|
-
import { classifyDiagnostic, isIslandReasonCode } from "../node-islands/classify.js";
|
|
10
|
+
import { classifyDiagnostic, classifyMarker, isIslandReasonCode, } from "../node-islands/classify.js";
|
|
10
11
|
import { packageDirOf, packageVersionOf } from "../node-islands/origin.js";
|
|
11
12
|
import { describe } from "../node-islands/summary.js";
|
|
12
13
|
import { resolveBareModule } from "../frontend/resolve.js";
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
import { growIslandSet } from "../node-islands/growth.js";
|
|
15
|
+
import { isJsSourceFileName } from "../frontend/tsc-codes.js";
|
|
16
|
+
/** Release the parser/checker before native object generation begins.
|
|
17
|
+
* `unitStore` keeps the lowered units of this build for the next one
|
|
18
|
+
* (unit-reuse.ts). */
|
|
19
|
+
export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing = () => { }, lowerIslands = new Map(), retryFences = true, unitStore = null, lowerModules = new Map()) {
|
|
16
20
|
// The island decision reads the detector's scan unless islands are off.
|
|
17
21
|
const islandScan = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands).mode !== "off";
|
|
18
22
|
let fe = createFrontend(entryPath, opts.npmStatic, undefined, undefined, { islandScan });
|
|
@@ -20,20 +24,44 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
20
24
|
// Node islands (scope-B NI-4): packages refused natively run in Node,
|
|
21
25
|
// unless the policy says otherwise. The frontend reloads without them,
|
|
22
26
|
// so their declarations type the program.
|
|
23
|
-
const islandDecision = decideNodeIslands(entryPath, opts, fe, lowerIslands);
|
|
27
|
+
const islandDecision = decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules);
|
|
28
|
+
// A patched builtin the native build cannot represent (an entry module
|
|
29
|
+
// patch, or a native read of a patched member) fails here.
|
|
30
|
+
if (islandDecision !== null && islandDecision.errors.length > 0) {
|
|
31
|
+
const diagnostics = islandDecision.errors;
|
|
32
|
+
const sourceTexts = fe.sourceTexts();
|
|
33
|
+
fe.dispose();
|
|
34
|
+
return { ok: false, diagnostics, sourceTexts };
|
|
35
|
+
}
|
|
24
36
|
if (islandDecision !== null) {
|
|
25
37
|
fe.dispose();
|
|
26
38
|
fe = createFrontend(entryPath, opts.npmStatic, undefined, undefined, {
|
|
27
39
|
islandPackages: new Set(islandDecision.packages.keys()),
|
|
40
|
+
...(islandDecision.modules.size > 0
|
|
41
|
+
? { islandModules: new Set(islandDecision.modules.keys()) }
|
|
42
|
+
: {}),
|
|
28
43
|
islandScan,
|
|
29
44
|
});
|
|
30
45
|
timing("frontend-island-reload");
|
|
31
46
|
}
|
|
32
47
|
let lowered;
|
|
33
48
|
let sourceTexts;
|
|
49
|
+
let contractWarnings = [];
|
|
34
50
|
let disposed = false;
|
|
35
51
|
let fenceGrown = null;
|
|
36
52
|
const fenceSure = new Set();
|
|
53
|
+
// The growth inputs this build's frontend offers (node-islands/growth.ts).
|
|
54
|
+
// Built once: the frontend does not change inside a build, and its scan is
|
|
55
|
+
// a whole-program walk.
|
|
56
|
+
let growthInputs = null;
|
|
57
|
+
let growthBuilt = false;
|
|
58
|
+
const growthOf = () => {
|
|
59
|
+
if (!growthBuilt) {
|
|
60
|
+
growthInputs = islandGrowth(entryPath, opts, fe);
|
|
61
|
+
growthBuilt = true;
|
|
62
|
+
}
|
|
63
|
+
return growthInputs;
|
|
64
|
+
};
|
|
37
65
|
// The frontend (and its tsgo server) is released as soon as lowering
|
|
38
66
|
// ends — clang and the link never hold it open.
|
|
39
67
|
try {
|
|
@@ -50,12 +78,13 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
50
78
|
// An import of a natively compiled package that preflight refuses
|
|
51
79
|
// in the importer (a CommonJS namespace import) is that package's
|
|
52
80
|
// refusal: it runs in a Node island instead.
|
|
53
|
-
const
|
|
81
|
+
const growth = growthOf();
|
|
82
|
+
const grown = growth === null ? null : growIslandSet(growth, lowerIslands, { preflight: fe.preflight });
|
|
54
83
|
if (grown !== null) {
|
|
55
84
|
fe.dispose();
|
|
56
85
|
frontendDisposed();
|
|
57
86
|
disposed = true;
|
|
58
|
-
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences);
|
|
87
|
+
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences, unitStore, lowerModules);
|
|
59
88
|
}
|
|
60
89
|
return fail(fe.preflight);
|
|
61
90
|
}
|
|
@@ -65,6 +94,7 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
65
94
|
targetPlatform: buildPlatform,
|
|
66
95
|
...(ffi !== null ? { ffiImports: ffi.functions } : {}),
|
|
67
96
|
...(opts.tier !== undefined ? { tierMode: opts.tier } : {}),
|
|
97
|
+
...(unitStore !== null ? { unitStore } : {}),
|
|
68
98
|
}, (module) => validateModule(module).length === 0);
|
|
69
99
|
timing("lower");
|
|
70
100
|
}
|
|
@@ -82,12 +112,19 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
82
112
|
// Packages whose own modules refused to lower run in Node islands
|
|
83
113
|
// too (the authoritative lowering, DESIGN.md §1.4): build again with
|
|
84
114
|
// them as islands.
|
|
85
|
-
const
|
|
86
|
-
|
|
115
|
+
const growth = growthOf();
|
|
116
|
+
const grown = growth === null
|
|
117
|
+
? null
|
|
118
|
+
: growIslandSet(growth, lowerIslands, { diagnostics: lowered.diagnostics });
|
|
119
|
+
// Sloppy user modules the lowering refused join the same retry
|
|
120
|
+
// (DESIGN.md note 1 §3.2): one reload with every island at once,
|
|
121
|
+
// never one round per module.
|
|
122
|
+
const grownModules = loweringModules(entryPath, opts, lowered.diagnostics, lowerModules);
|
|
123
|
+
if (grown !== null || grownModules !== null) {
|
|
87
124
|
fe.dispose();
|
|
88
125
|
frontendDisposed();
|
|
89
126
|
disposed = true;
|
|
90
|
-
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown, retryFences);
|
|
127
|
+
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, grown ?? lowerIslands, retryFences, unitStore, grownModules ?? lowerModules);
|
|
91
128
|
}
|
|
92
129
|
// A failed program whose compiled packages need the runtime or a
|
|
93
130
|
// mutable object model (NI-2's report): try them as islands. If that
|
|
@@ -96,17 +133,28 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
96
133
|
// declare (interfaces, aliases such as `Static<T>`) are `any`, so its
|
|
97
134
|
// diagnostics describe a program the island build does not compile:
|
|
98
135
|
// there the packages' declarations type the user code.
|
|
99
|
-
const marked = retryFences
|
|
100
|
-
?
|
|
136
|
+
const marked = retryFences && growth !== null
|
|
137
|
+
? growIslandSet(growth, lowerIslands, {
|
|
138
|
+
diagnostics: lowered.diagnostics,
|
|
139
|
+
fences: lowered.runtimeFences,
|
|
140
|
+
fenceMode: "report",
|
|
141
|
+
})
|
|
101
142
|
: null;
|
|
102
143
|
if (marked !== null) {
|
|
103
144
|
fe.dispose();
|
|
104
145
|
frontendDisposed();
|
|
105
146
|
disposed = true;
|
|
106
|
-
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, marked, false);
|
|
147
|
+
return prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, marked, false, undefined, lowerModules);
|
|
107
148
|
}
|
|
108
149
|
return fail(lowered.diagnostics);
|
|
109
150
|
}
|
|
151
|
+
// A program that replaces a process output stream's write method has
|
|
152
|
+
// nowhere to route an island's writes: the island's process.stdout is
|
|
153
|
+
// its own object. Until islands share the native stream object (H2),
|
|
154
|
+
// refuse the combination instead of silently missing the patch.
|
|
155
|
+
if (islandDecision !== null && lowered.stdioPatches !== undefined) {
|
|
156
|
+
return fail(lowered.stdioPatches.map((p) => stdioPatchAcrossIslandsDiag(p.stream, p.loc)));
|
|
157
|
+
}
|
|
110
158
|
const validation = validateModule(lowered.module);
|
|
111
159
|
timing("ir-validate");
|
|
112
160
|
if (validation.length > 0) {
|
|
@@ -134,9 +182,20 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
134
182
|
return fail(checked.diagnostics);
|
|
135
183
|
if (checked.contracts)
|
|
136
184
|
lowered.module.contracts = checked.contracts;
|
|
185
|
+
contractWarnings = checked.warnings;
|
|
186
|
+
}
|
|
187
|
+
if (retryFences) {
|
|
188
|
+
const growth = growthOf();
|
|
189
|
+
fenceGrown =
|
|
190
|
+
growth === null
|
|
191
|
+
? null
|
|
192
|
+
: growIslandSet(growth, lowerIslands, {
|
|
193
|
+
diagnostics: lowered.diagnostics,
|
|
194
|
+
fences: lowered.runtimeFences,
|
|
195
|
+
fenceMode: "sure",
|
|
196
|
+
sure: fenceSure,
|
|
197
|
+
});
|
|
137
198
|
}
|
|
138
|
-
if (retryFences)
|
|
139
|
-
fenceGrown = fenceIslands(entryPath, opts, fe, lowered, lowerIslands, true, fenceSure);
|
|
140
199
|
}
|
|
141
200
|
finally {
|
|
142
201
|
if (!disposed) {
|
|
@@ -155,7 +214,16 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
155
214
|
...(fe.warnings ?? []),
|
|
156
215
|
...(lowered.divergences ?? []),
|
|
157
216
|
...(lowered.performance ?? []),
|
|
217
|
+
...contractWarnings,
|
|
158
218
|
],
|
|
219
|
+
...(islandDecision === null
|
|
220
|
+
? {}
|
|
221
|
+
: {
|
|
222
|
+
islands: {
|
|
223
|
+
packages: [...islandDecision.packages.keys()].sort(),
|
|
224
|
+
modules: [...islandDecision.modules.keys()].sort(),
|
|
225
|
+
},
|
|
226
|
+
}),
|
|
159
227
|
};
|
|
160
228
|
// Packages compiled with runtime fences that need the JavaScript
|
|
161
229
|
// runtime or a mutable object model (fenceIslands): build again with
|
|
@@ -171,7 +239,7 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
171
239
|
attempts.push(sure);
|
|
172
240
|
let firstError = null;
|
|
173
241
|
for (const islands of attempts) {
|
|
174
|
-
const islanded = prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, islands, false);
|
|
242
|
+
const islanded = prepareExecutableModule(entryPath, opts, ffi, buildPlatform, createFrontend, timing, islands, false, unitStore, lowerModules);
|
|
175
243
|
if (islanded.ok)
|
|
176
244
|
return islanded;
|
|
177
245
|
firstError ??= islanded.diagnostics[0] ?? null;
|
|
@@ -183,12 +251,84 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
183
251
|
}
|
|
184
252
|
return prepared;
|
|
185
253
|
}
|
|
186
|
-
/**
|
|
187
|
-
*
|
|
188
|
-
|
|
254
|
+
/** Whether two spellings name the same file (the checker resolves through
|
|
255
|
+
* symlinks; a CLI argument may not). */
|
|
256
|
+
function sameFile(a, b) {
|
|
257
|
+
if (samePath(a, b))
|
|
258
|
+
return true;
|
|
259
|
+
try {
|
|
260
|
+
const real = realpathSync(a);
|
|
261
|
+
const other = realpathSync(b);
|
|
262
|
+
return samePath(real, other);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function samePath(a, b) {
|
|
269
|
+
return a.replaceAll("\\", "/") === b.replaceAll("\\", "/");
|
|
270
|
+
}
|
|
271
|
+
/** The pre-scan reasons that make a user module a sloppy-semantics island
|
|
272
|
+
* by themselves (DESIGN.md note 1 §3.1): the constructs whose behavior
|
|
273
|
+
* needs the JavaScript engine and that a syntax scan decides exactly, plus
|
|
274
|
+
* the conservative `this` marker (decision S2). */
|
|
275
|
+
const SLOPPY_REASONS = new Set([
|
|
276
|
+
"with",
|
|
277
|
+
"direct-eval",
|
|
278
|
+
"annexb-block-function",
|
|
279
|
+
"sloppy-this",
|
|
280
|
+
]);
|
|
281
|
+
/** A module that patches a builtin module's CommonJS object (the user's
|
|
282
|
+
* decision, 2026-10-29): its patch is meant for code that shares Node's
|
|
283
|
+
* builtin, so it runs in Node, where an island consumer sees it. */
|
|
284
|
+
const PATCH_REASONS = new Set(["builtin-patch"]);
|
|
285
|
+
function moduleIslands(entryPath, policy, scan) {
|
|
286
|
+
const modules = new Map();
|
|
287
|
+
let entryPatch = null;
|
|
288
|
+
const stripProblems = [];
|
|
289
|
+
for (const m of scan.modules) {
|
|
290
|
+
if (m.origin !== "user")
|
|
291
|
+
continue;
|
|
292
|
+
const patches = m.markers.filter((marker) => PATCH_REASONS.has(marker.reason));
|
|
293
|
+
// A TypeScript module islands only for a builtin patch (H3.2).
|
|
294
|
+
if (!isJsSourceFileName(m.file) && patches.length === 0)
|
|
295
|
+
continue;
|
|
296
|
+
if (sameFile(m.file, entryPath)) {
|
|
297
|
+
if (patches.length > 0 && entryPatch === null)
|
|
298
|
+
entryPatch = { file: m.file, marker: patches[0] };
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (m.stripProblem !== null) {
|
|
302
|
+
stripProblems.push({ file: m.file, ...m.stripProblem });
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
const marked = isMarkedUserModule(policy, m.file);
|
|
306
|
+
const sloppy = m.markers.filter((marker) => SLOPPY_REASONS.has(marker.reason));
|
|
307
|
+
if (marked === null &&
|
|
308
|
+
(policy.mode !== "auto" || (sloppy.length === 0 && patches.length === 0)))
|
|
309
|
+
continue;
|
|
310
|
+
const first = sloppy[0] ?? patches[0];
|
|
311
|
+
const reason = first === undefined ? null : classifyMarker(first);
|
|
312
|
+
modules.set(m.file, {
|
|
313
|
+
file: m.file,
|
|
314
|
+
class: reason === null ? "marked" : reason.class,
|
|
315
|
+
reason: reason === null
|
|
316
|
+
? marked === "cli"
|
|
317
|
+
? "marked with --node-island"
|
|
318
|
+
: 'marked "node" in scriptc.nodeIslands.modules'
|
|
319
|
+
: describe(reason),
|
|
320
|
+
decision: marked === null ? "auto" : "marked",
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
return { modules, entryPatch, stripProblems };
|
|
324
|
+
}
|
|
325
|
+
/** The packages and modules a build runs in Node islands, or null for none:
|
|
326
|
+
* under `--node-islands=auto` (the default) every npm package the native
|
|
327
|
+
* pipeline refused plus the user modules the pre-scan found a sloppy
|
|
328
|
+
* construct in, and packages marked `node`; under `explicit` only the
|
|
189
329
|
* marked ones; under `off`, none (refusals stay SC2013). Each island is
|
|
190
330
|
* reported once as an SC8001 note. */
|
|
191
|
-
function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
|
|
331
|
+
function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
192
332
|
const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
|
|
193
333
|
if (policy.mode === "off" || fe.nodeIslandScan === undefined)
|
|
194
334
|
return null;
|
|
@@ -201,11 +341,168 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
|
|
|
201
341
|
: []);
|
|
202
342
|
for (const name of lowerIslands.keys())
|
|
203
343
|
refused.add(name);
|
|
204
|
-
|
|
344
|
+
// The pre-scan's user-JavaScript markers exist only where a build may act
|
|
345
|
+
// on them.
|
|
346
|
+
const scan = fe.nodeIslandScan({ userJs: policy.mode === "auto" });
|
|
347
|
+
const moduleDecision = moduleIslands(entryPath, policy, scan);
|
|
348
|
+
const modules = moduleDecision.modules;
|
|
349
|
+
// A sloppy write to an undeclared name creates a global — a sloppy-only
|
|
350
|
+
// semantic the native tier does not implement, so the module runs in
|
|
351
|
+
// Node (the user's policy, 2026-10-31). The checker decides this one, not
|
|
352
|
+
// the syntax pre-scan: a write target needs bindings, and its sloppiness
|
|
353
|
+
// depends on the enclosing function and file strictness. Preflight
|
|
354
|
+
// reports it as SC1091 carrying the R2.4 reason. The entry stays native
|
|
355
|
+
// (a whole-file island is a different feature), and a strict-mode write
|
|
356
|
+
// is an ordinary lowering gap, so neither joins here.
|
|
357
|
+
if (policy.mode === "auto") {
|
|
358
|
+
for (const d of fe.preflight) {
|
|
359
|
+
if (d.code !== "SC1091" || d.reason !== "implicit-global-write")
|
|
360
|
+
continue;
|
|
361
|
+
const file = d.loc.file;
|
|
362
|
+
if (modules.has(file) || sameFile(file, entryPath))
|
|
363
|
+
continue;
|
|
364
|
+
if (!isJsSourceFileName(file) || file.includes("/node_modules/"))
|
|
365
|
+
continue;
|
|
366
|
+
const reason = classifyDiagnostic(d, "refusal");
|
|
367
|
+
modules.set(file, {
|
|
368
|
+
file,
|
|
369
|
+
class: reason.class,
|
|
370
|
+
reason: describe(reason),
|
|
371
|
+
decision: "auto",
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Modules the lowering refused keep their first reason (the reload no
|
|
376
|
+
// longer compiles them).
|
|
377
|
+
for (const [file, island] of lowerModules)
|
|
378
|
+
if (!modules.has(file))
|
|
379
|
+
modules.set(file, island);
|
|
380
|
+
const errors = [];
|
|
381
|
+
if (moduleDecision.entryPatch !== null) {
|
|
382
|
+
const { file, marker } = moduleDecision.entryPatch;
|
|
383
|
+
errors.push(nodeIslandEntryPatchDiag(file, marker.member ?? marker.construct, builtinModuleOf(marker.member), marker.loc));
|
|
384
|
+
}
|
|
385
|
+
for (const problem of moduleDecision.stripProblems)
|
|
386
|
+
errors.push(nodeIslandStripDiag(problem.file, problem.construct, problem.loc));
|
|
387
|
+
// Who else must see the patch (H3.4): every module that reads a patched
|
|
388
|
+
// member through the builtin's CommonJS object joins the island set, npm
|
|
389
|
+
// package or user module alike — the patch lives in the islands' Node, and
|
|
390
|
+
// only sharing the builtin shows the read the patch, as in Node. The entry
|
|
391
|
+
// stays native, and a user TypeScript module Node cannot strip cannot run
|
|
392
|
+
// in Node at all: both are SC8006.
|
|
393
|
+
const patchedMembers = new Map();
|
|
394
|
+
for (const m of scan.modules) {
|
|
395
|
+
if (!modules.has(m.file))
|
|
396
|
+
continue;
|
|
397
|
+
for (const marker of m.markers) {
|
|
398
|
+
if (!PATCH_REASONS.has(marker.reason) || marker.member === undefined)
|
|
399
|
+
continue;
|
|
400
|
+
if (!patchedMembers.has(marker.member))
|
|
401
|
+
patchedMembers.set(marker.member, m.file);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
const readerPackages = new Map();
|
|
405
|
+
// A package the build marks native stays native: a read that only an
|
|
406
|
+
// island could satisfy is SC8003, once per package and construct.
|
|
407
|
+
const forcedNativeReads = new Set();
|
|
408
|
+
const readerModules = new Map();
|
|
409
|
+
if (policy.mode === "auto" && patchedMembers.size > 0) {
|
|
410
|
+
for (const m of scan.modules) {
|
|
411
|
+
if (modules.has(m.file))
|
|
412
|
+
continue;
|
|
413
|
+
for (const read of m.cjsReads) {
|
|
414
|
+
const patchFile = patchFileOf(patchedMembers, read.member);
|
|
415
|
+
if (patchFile === undefined)
|
|
416
|
+
continue;
|
|
417
|
+
if (m.origin === "npm" && m.packageName !== null && m.packageDir !== null) {
|
|
418
|
+
if (policy.forcedNative.has(m.packageName)) {
|
|
419
|
+
const key = `${m.packageName}:${read.member}`;
|
|
420
|
+
if (!forcedNativeReads.has(key)) {
|
|
421
|
+
forcedNativeReads.add(key);
|
|
422
|
+
errors.push(nativePackageDiag(m.packageName, `it reads '${read.member}' through the CommonJS ${builtinModuleOf(read.member)} object, which island module ${patchFile} patches; a native read cannot see the patch`, fe.npmImportSites.get(m.packageName) ?? read.loc));
|
|
423
|
+
}
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (!readerPackages.has(m.packageName) && !refused.has(m.packageName))
|
|
427
|
+
readerPackages.set(m.packageName, {
|
|
428
|
+
packageDir: m.packageDir,
|
|
429
|
+
member: read.member,
|
|
430
|
+
patchFile,
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
else if (m.origin === "user") {
|
|
434
|
+
if (sameFile(m.file, entryPath)) {
|
|
435
|
+
errors.push(nodeIslandEntryReadDiag(m.file, read.member, builtinModuleOf(read.member), patchFile, read.loc));
|
|
436
|
+
continue;
|
|
437
|
+
}
|
|
438
|
+
if (m.stripProblem !== null) {
|
|
439
|
+
errors.push(nodeIslandReaderStripDiag(m.file, read.member, patchFile, m.stripProblem.construct, m.stripProblem.loc));
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
if (!readerModules.has(m.file))
|
|
443
|
+
readerModules.set(m.file, { member: read.member, patchFile });
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
// Who else must see an implicit global (H3.4): a sloppy write creates the
|
|
449
|
+
// name on Node's global object when its island module runs, and native
|
|
450
|
+
// code has no global object to read it from. An npm package that reads
|
|
451
|
+
// the name joins the island set (its Node sees the global); a user module
|
|
452
|
+
// or the entry is SC8020.
|
|
453
|
+
const readerGlobals = new Map();
|
|
454
|
+
const createdGlobals = policy.mode === "auto" ? implicitGlobalWrites(fe, modules) : new Map();
|
|
455
|
+
if (createdGlobals.size > 0) {
|
|
456
|
+
for (const m of scan.modules) {
|
|
457
|
+
if (modules.has(m.file))
|
|
458
|
+
continue;
|
|
459
|
+
for (const read of m.globalReads) {
|
|
460
|
+
const writerFile = createdGlobals.get(read.name);
|
|
461
|
+
if (writerFile === undefined)
|
|
462
|
+
continue;
|
|
463
|
+
if (m.origin === "npm" && m.packageName !== null && m.packageDir !== null) {
|
|
464
|
+
if (policy.forcedNative.has(m.packageName)) {
|
|
465
|
+
const key = `${m.packageName}:${read.name}`;
|
|
466
|
+
if (!forcedNativeReads.has(key)) {
|
|
467
|
+
forcedNativeReads.add(key);
|
|
468
|
+
errors.push(nativePackageDiag(m.packageName, `it reads '${read.name}', which island module ${writerFile} creates as an implicit global; the native build has no global object, so the read cannot see it`, fe.npmImportSites.get(m.packageName) ?? read.loc));
|
|
469
|
+
}
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
if (!readerGlobals.has(m.packageName) && !refused.has(m.packageName))
|
|
473
|
+
readerGlobals.set(m.packageName, {
|
|
474
|
+
packageDir: m.packageDir,
|
|
475
|
+
global: read.name,
|
|
476
|
+
writerFile,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
else if (m.origin === "user") {
|
|
480
|
+
errors.push(nodeIslandImplicitGlobalReadDiag(read.name, writerFile, read.loc));
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
if (errors.length > 0)
|
|
486
|
+
return { packages: new Map(), modules: new Map(), notes: [], errors };
|
|
487
|
+
// A user module that reads a patched member runs in a Node island, so its
|
|
488
|
+
// read goes through the patched object exactly as in Node (H3.4).
|
|
489
|
+
for (const [file, reader] of readerModules) {
|
|
490
|
+
modules.set(file, {
|
|
491
|
+
file,
|
|
492
|
+
class: "object-model",
|
|
493
|
+
reason: `it reads '${reader.member}' through the CommonJS ${builtinModuleOf(reader.member)} object, which island module ${reader.patchFile} patches`,
|
|
494
|
+
decision: "auto",
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
if (refused.size === 0 &&
|
|
498
|
+
policy.forcedNode.size === 0 &&
|
|
499
|
+
modules.size === 0 &&
|
|
500
|
+
readerPackages.size === 0 &&
|
|
501
|
+
readerGlobals.size === 0)
|
|
205
502
|
return null;
|
|
206
503
|
const report = buildNodeIslandReport({
|
|
207
504
|
entry: entryPath,
|
|
208
|
-
scan
|
|
505
|
+
scan,
|
|
209
506
|
npm: fe.npmStatic,
|
|
210
507
|
diagnostics: [],
|
|
211
508
|
fences: [],
|
|
@@ -264,240 +561,147 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands) {
|
|
|
264
561
|
packages.set(name, island);
|
|
265
562
|
notes.push(nodeIslandNoteDiag(island.name, island.version, island.class, island.reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
|
|
266
563
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
function loweringIslands(entryPath, opts, fe, diagnostics, known, edges) {
|
|
272
|
-
const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
|
|
273
|
-
if (policy.mode !== "auto" || known.size > 16)
|
|
274
|
-
return null;
|
|
275
|
-
const compiled = new Set(fe.npmStatic.filter((e) => e.status === "static").map((e) => e.package));
|
|
276
|
-
const grown = new Map(known);
|
|
277
|
-
for (const d of diagnostics) {
|
|
278
|
-
// A use of a package outside the compiled module graph (an import()
|
|
279
|
-
// the frontend did not compile): that package runs in an island.
|
|
280
|
-
const named = d.code === "SC2013" ? /npm package '([^']+)'/.exec(d.message) : null;
|
|
281
|
-
if (named !== null) {
|
|
282
|
-
const name = named[1];
|
|
283
|
-
if (grown.has(name) || policy.forcedNative.has(name) || policy.unloaded.has(name))
|
|
284
|
-
continue;
|
|
285
|
-
const js = resolveBareModule(d.loc.file, name, "js-only") ??
|
|
286
|
-
resolveBareModule(d.loc.file, name, "js-only", "require");
|
|
287
|
-
const at = js === null ? null : packageDirOf(js.typesFile);
|
|
288
|
-
if (at === null || at.name !== name)
|
|
289
|
-
continue;
|
|
290
|
-
grown.set(name, {
|
|
291
|
-
name,
|
|
292
|
-
version: packageVersionOf(at.dir),
|
|
293
|
-
dir: at.dir,
|
|
294
|
-
class: "packaging",
|
|
295
|
-
reason: `${d.code}: ${d.message}`,
|
|
296
|
-
});
|
|
297
|
-
continue;
|
|
298
|
-
}
|
|
299
|
-
if (!isIslandReasonCode(d.code))
|
|
564
|
+
// npm packages that read a patched member join the island set: their
|
|
565
|
+
// patch lives in the island's Node, and only a shared builtin shows it.
|
|
566
|
+
for (const [name, reader] of readerPackages) {
|
|
567
|
+
if (packages.has(name))
|
|
300
568
|
continue;
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
version: packageVersionOf(at.dir),
|
|
310
|
-
dir: at.dir,
|
|
311
|
-
class: reason.class,
|
|
312
|
-
reason: describe(reason),
|
|
569
|
+
const version = packageVersionOf(reader.packageDir);
|
|
570
|
+
const reason = `it reads '${reader.member}' through the CommonJS ${builtinModuleOf(reader.member)} object, which island module ${reader.patchFile} patches`;
|
|
571
|
+
packages.set(name, {
|
|
572
|
+
name,
|
|
573
|
+
version,
|
|
574
|
+
dir: reader.packageDir,
|
|
575
|
+
class: "object-model",
|
|
576
|
+
reason,
|
|
313
577
|
});
|
|
578
|
+
notes.push(nodeIslandNoteDiag(name, version, "object-model", reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
|
|
314
579
|
}
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (!isEsmFile(edge.fromFile))
|
|
331
|
-
continue;
|
|
332
|
-
const target = resolveBareModule(edge.fromFile, name, "js-only") ??
|
|
333
|
-
resolveBareModule(edge.fromFile, name, "js-only", "require");
|
|
334
|
-
if (target === null || isEsmFile(target.typesFile))
|
|
335
|
-
continue;
|
|
336
|
-
grown.set(at.name, {
|
|
337
|
-
name: at.name,
|
|
338
|
-
version: packageVersionOf(at.dir),
|
|
339
|
-
dir: at.dir,
|
|
340
|
-
class: "packaging",
|
|
341
|
-
reason: `an ES module of the package imports the CommonJS island package '${name}'`,
|
|
342
|
-
});
|
|
343
|
-
added = true;
|
|
344
|
-
}
|
|
580
|
+
// npm packages that read an implicit global an island module creates join
|
|
581
|
+
// the island set: the global lives on their Node's global object.
|
|
582
|
+
for (const [name, reader] of readerGlobals) {
|
|
583
|
+
if (packages.has(name))
|
|
584
|
+
continue;
|
|
585
|
+
const version = packageVersionOf(reader.packageDir);
|
|
586
|
+
const reason = `it reads '${reader.global}', the implicit global island module ${reader.writerFile} creates`;
|
|
587
|
+
packages.set(name, {
|
|
588
|
+
name,
|
|
589
|
+
version,
|
|
590
|
+
dir: reader.packageDir,
|
|
591
|
+
class: "object-model",
|
|
592
|
+
reason,
|
|
593
|
+
});
|
|
594
|
+
notes.push(nodeIslandNoteDiag(name, version, "object-model", reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
|
|
345
595
|
}
|
|
346
|
-
|
|
596
|
+
for (const island of [...modules.values()].sort((a, b) => a.file < b.file ? -1 : a.file > b.file ? 1 : 0))
|
|
597
|
+
notes.push(nodeIslandModuleNoteDiag(island.file, island.class, island.reason, {
|
|
598
|
+
file: island.file,
|
|
599
|
+
start: 0,
|
|
600
|
+
end: 0,
|
|
601
|
+
}));
|
|
602
|
+
return packages.size === 0 && modules.size === 0 ? null : { packages, modules, notes, errors };
|
|
347
603
|
}
|
|
348
|
-
/**
|
|
349
|
-
*
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
const compiled = new Set(fe.npmStatic.filter((e) => e.status === "static").map((e) => e.package));
|
|
355
|
-
if (compiled.size === 0)
|
|
356
|
-
return null;
|
|
357
|
-
const texts = fe.sourceTexts();
|
|
358
|
-
const grown = new Map(known);
|
|
604
|
+
/** The names the island modules' sloppy implicit-global writes create, each
|
|
605
|
+
* with the file that creates it. Preflight reports each write as an SC1091
|
|
606
|
+
* whose range is the write target. */
|
|
607
|
+
function implicitGlobalWrites(fe, modules) {
|
|
608
|
+
const globals = new Map();
|
|
609
|
+
const sources = new Map();
|
|
359
610
|
for (const d of fe.preflight) {
|
|
360
|
-
if (d.code !== "
|
|
361
|
-
continue;
|
|
362
|
-
const text = texts.get(d.loc.file);
|
|
363
|
-
if (text === undefined)
|
|
364
|
-
continue;
|
|
365
|
-
// The import statement around the diagnostic: its module specifier.
|
|
366
|
-
const start = text.lastIndexOf("import", d.loc.start);
|
|
367
|
-
const end = text.indexOf(";", d.loc.end);
|
|
368
|
-
const stmt = text.slice(start < 0 ? d.loc.start : start, end < 0 ? text.length : end);
|
|
369
|
-
const m = /\bfrom\s*["']([^"']+)["']/.exec(stmt);
|
|
370
|
-
if (m === null)
|
|
611
|
+
if (d.code !== "SC1091" || d.reason !== "implicit-global-write")
|
|
371
612
|
continue;
|
|
372
|
-
const
|
|
373
|
-
|
|
374
|
-
if (!compiled.has(name) || grown.has(name))
|
|
613
|
+
const file = d.loc.file;
|
|
614
|
+
if (!modules.has(file))
|
|
375
615
|
continue;
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
name,
|
|
385
|
-
version: packageVersionOf(at.dir),
|
|
386
|
-
dir: at.dir,
|
|
387
|
-
class: "gap",
|
|
388
|
-
reason: `${d.code}: ${d.message}`,
|
|
389
|
-
});
|
|
616
|
+
let source = sources.get(file);
|
|
617
|
+
if (source === undefined) {
|
|
618
|
+
source = readFileSync(file, "utf8");
|
|
619
|
+
sources.set(file, source);
|
|
620
|
+
}
|
|
621
|
+
const name = source.slice(d.loc.start, d.loc.end);
|
|
622
|
+
if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) && !globals.has(name))
|
|
623
|
+
globals.set(name, file);
|
|
390
624
|
}
|
|
391
|
-
return
|
|
625
|
+
return globals;
|
|
392
626
|
}
|
|
393
|
-
/**
|
|
394
|
-
*
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const
|
|
408
|
-
if (
|
|
409
|
-
return
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
.filter((e) => e.status === "static" && !explicit.has(e.package))
|
|
414
|
-
.map((e) => e.package));
|
|
415
|
-
const fenced = new Map();
|
|
416
|
-
for (const d of lowered.runtimeFences) {
|
|
417
|
-
const at = packageDirOf(d.loc.file);
|
|
418
|
-
if (at === null || !compiled.has(at.name) || known.has(at.name))
|
|
419
|
-
continue;
|
|
420
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
627
|
+
/** The builtin module a patched member belongs to ("fs" of
|
|
628
|
+
* "fs.readFileSync"). */
|
|
629
|
+
function builtinModuleOf(member) {
|
|
630
|
+
if (member === undefined)
|
|
631
|
+
return "";
|
|
632
|
+
const end = /[.[]/.exec(member);
|
|
633
|
+
return end === null ? member : member.slice(0, end.index);
|
|
634
|
+
}
|
|
635
|
+
/** The island module that patches `member`, matching an exact member or a
|
|
636
|
+
* whole-module patch ("fs.*"). A read the scan cannot name ("fs.*", a
|
|
637
|
+
* computed key or a rest element) matches every patch of its module, and so
|
|
638
|
+
* does a patch through a computed key ("fs[…]"). */
|
|
639
|
+
function patchFileOf(patched, member) {
|
|
640
|
+
const module = builtinModuleOf(member);
|
|
641
|
+
const exact = patched.get(member) ?? patched.get(`${module}.*`);
|
|
642
|
+
if (exact !== undefined)
|
|
643
|
+
return exact;
|
|
644
|
+
const unnamedRead = member === `${module}.*`;
|
|
645
|
+
for (const [patch, file] of patched) {
|
|
646
|
+
if (builtinModuleOf(patch) !== module)
|
|
421
647
|
continue;
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
const runtime = d.moduleInit === true || classifyDiagnostic(d, "fence").class === "runtime";
|
|
425
|
-
fenced.set(at.name, (fenced.get(at.name) ?? false) || runtime);
|
|
426
|
-
if (runtime)
|
|
427
|
-
sure?.add(at.name);
|
|
648
|
+
if (unnamedRead || patch.includes("["))
|
|
649
|
+
return file;
|
|
428
650
|
}
|
|
429
|
-
|
|
651
|
+
return undefined;
|
|
652
|
+
}
|
|
653
|
+
/** The growth inputs this build's frontend offers the shared island-growth
|
|
654
|
+
* rules (node-islands/growth.ts), or null when the frontend holds no island
|
|
655
|
+
* scan: the rules then grow nothing. `npmStatic` keeps a `"auto"` request
|
|
656
|
+
* out: only an explicit list names the packages to keep native. */
|
|
657
|
+
function islandGrowth(entryPath, opts, fe) {
|
|
658
|
+
const scan = fe.nodeIslandScan?.({ userJs: false });
|
|
659
|
+
if (scan === undefined)
|
|
430
660
|
return null;
|
|
431
|
-
|
|
432
|
-
const report = buildNodeIslandReport({
|
|
661
|
+
return {
|
|
433
662
|
entry: entryPath,
|
|
663
|
+
policy: nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands),
|
|
434
664
|
scan,
|
|
435
665
|
npm: fe.npmStatic,
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
}
|
|
666
|
+
npmImportSites: fe.npmImportSites,
|
|
667
|
+
...(Array.isArray(opts.npmStatic) ? { explicitNpmStatic: opts.npmStatic } : {}),
|
|
668
|
+
sourceTexts: () => fe.sourceTexts(),
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
/** The island modules grown by the lowering's refusals in user JavaScript
|
|
672
|
+
* (`--node-islands=auto` only), or null when there are none: a sloppy
|
|
673
|
+
* module whose semantics the native pipeline refuses (an implicit global,
|
|
674
|
+
* a mapped `arguments`, a `with` the pre-scan could not decide) runs in
|
|
675
|
+
* Node. One retry adds every one of them at once. */
|
|
676
|
+
function loweringModules(entryPath, opts, diagnostics, known) {
|
|
677
|
+
const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
|
|
678
|
+
if (policy.mode !== "auto" || known.size > 16)
|
|
679
|
+
return null;
|
|
440
680
|
const grown = new Map(known);
|
|
441
|
-
for (const
|
|
442
|
-
|
|
443
|
-
? fenced.get(island.package)
|
|
444
|
-
: (fenced.get(island.package) ?? false);
|
|
445
|
-
if (runtimeFence === undefined || island.path === null)
|
|
681
|
+
for (const d of diagnostics) {
|
|
682
|
+
if (!isIslandReasonCode(d.code))
|
|
446
683
|
continue;
|
|
447
|
-
|
|
684
|
+
const file = d.loc.file;
|
|
685
|
+
// Packages run in Node through their own decision
|
|
686
|
+
// (node-islands/growth.ts).
|
|
687
|
+
if (file.includes("/node_modules/") || packageDirOf(file) !== null)
|
|
448
688
|
continue;
|
|
449
|
-
if (
|
|
689
|
+
if (!isJsSourceFileName(file) || sameFile(file, entryPath))
|
|
450
690
|
continue;
|
|
451
|
-
|
|
452
|
-
// gap fence inside a function body may never run (jose's typed paths
|
|
453
|
-
// stay native, DECISIONS.md 2026-10-21). After a failed build
|
|
454
|
-
// (!requireFence), the package's report class decides.
|
|
455
|
-
if (requireFence && !runtimeFence)
|
|
691
|
+
if (grown.has(file))
|
|
456
692
|
continue;
|
|
457
|
-
|
|
693
|
+
const reason = classifyDiagnostic(d, "refusal");
|
|
694
|
+
// A gap is a construct scriptc does not implement, not a sloppy
|
|
695
|
+
// semantic: running it in Node would hide a compiler limitation.
|
|
696
|
+
if (reason.class === "gap")
|
|
458
697
|
continue;
|
|
459
|
-
grown.set(
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
reason: island.reason,
|
|
698
|
+
grown.set(file, {
|
|
699
|
+
file,
|
|
700
|
+
class: reason.class,
|
|
701
|
+
reason: describe(reason),
|
|
702
|
+
decision: "auto",
|
|
465
703
|
});
|
|
466
704
|
}
|
|
467
|
-
// A native ES module that imports an island CommonJS module would read
|
|
468
|
-
// its bindings from the module's exports object, where Node gives it the
|
|
469
|
-
// namespace its CommonJS facade builds (the lexed names, module.exports
|
|
470
|
-
// as the default): the importing package runs in the island too.
|
|
471
|
-
for (let added = true; added;) {
|
|
472
|
-
added = false;
|
|
473
|
-
for (const edge of scan.edges) {
|
|
474
|
-
const name = edge.to;
|
|
475
|
-
if (!grown.has(name) || edge.fromDir === null || edge.shim)
|
|
476
|
-
continue;
|
|
477
|
-
const at = packageDirOf(edge.fromFile);
|
|
478
|
-
if (at === null || grown.has(at.name) || !compiled.has(at.name))
|
|
479
|
-
continue;
|
|
480
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
481
|
-
continue;
|
|
482
|
-
if (!isEsmFile(edge.fromFile))
|
|
483
|
-
continue;
|
|
484
|
-
const target = resolveBareModule(edge.fromFile, name, "js-only") ??
|
|
485
|
-
resolveBareModule(edge.fromFile, name, "js-only", "require");
|
|
486
|
-
if (target === null || isEsmFile(target.typesFile))
|
|
487
|
-
continue;
|
|
488
|
-
grown.set(at.name, {
|
|
489
|
-
name: at.name,
|
|
490
|
-
version: packageVersionOf(at.dir),
|
|
491
|
-
dir: at.dir,
|
|
492
|
-
class: "packaging",
|
|
493
|
-
reason: `an ES module of the package imports the CommonJS island package '${name}'`,
|
|
494
|
-
});
|
|
495
|
-
// It goes wherever that island goes, the sure-fence retry included.
|
|
496
|
-
if (known.has(name) || sure?.has(name) === true)
|
|
497
|
-
sure?.add(at.name);
|
|
498
|
-
added = true;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
705
|
return grown.size === known.size ? null : grown;
|
|
502
706
|
}
|
|
503
707
|
//# sourceMappingURL=prepare.js.map
|