@scriptc/compiler 0.4.7 → 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 +23 -5
- package/ambient/node-fallback/fs.d.ts +3 -2
- package/ambient/node-fallback/http.d.ts +23 -17
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +6 -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/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +37 -7
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +11 -3
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +17 -6
- 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 +9 -2
- package/dist/backend/linker.js +190 -32
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +8 -4
- package/dist/backend/lld.js +19 -13
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +3 -1
- 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/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +31 -7
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +12 -3
- package/dist/backend/llvm/dyn.js +31 -7
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +67 -4
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +90 -39
- 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 +99 -15
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +113 -8
- package/dist/backend/llvm/emitter.js +438 -67
- 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.js +18 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +31 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +31 -3
- 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.js +17 -0
- package/dist/backend/llvm/expr-stream-bridges.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 +19 -1
- package/dist/backend/llvm/js-ic.js +96 -23
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +132 -1
- package/dist/backend/llvm/lib-dispatch.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 +44 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +69 -2
- package/dist/backend/llvm/lib-shared.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-state.js +7 -2
- 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.test.js +6 -6
- 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/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.js +12 -6
- package/dist/backend/llvm/record-views.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 +3 -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 +33 -3
- package/dist/backend/llvm/shapes.js +183 -13
- package/dist/backend/llvm/shapes.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/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +46 -2
- 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 +48 -8
- package/dist/backend/native/executable.js +55 -13
- 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 +9 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -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 +27 -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 +37 -8
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/runtime-pack-core.d.ts +17 -2
- package/dist/backend/runtime-pack-core.js +18 -3
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +211 -2
- 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 +5 -1
- package/dist/backend/vendor-archives.js +51 -7
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +25 -4
- package/dist/backend/vendor-inputs.js +68 -4
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +35 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -1
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +2 -2
- 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/diagnostics/codes.d.ts +8 -0
- package/dist/diagnostics/codes.js +8 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +27 -9
- package/dist/diagnostics/diagnostic.js +60 -19
- package/dist/diagnostics/diagnostic.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 +21 -2
- package/dist/executable/executable-cache.js +21 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +123 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +199 -248
- 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 +12 -2
- package/dist/frontend/early-errors.js +535 -4
- package/dist/frontend/early-errors.js.map +1 -1
- package/dist/frontend/early-errors.test.js +165 -0
- package/dist/frontend/early-errors.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- 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.js +21 -3
- 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 +4 -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 +24 -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.js +2 -2
- 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 +560 -27
- 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/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
- package/dist/frontend/lowering/builtins/filesystem-calls.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 +3 -1
- package/dist/frontend/lowering/builtins/module-calls.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 +6 -3
- package/dist/frontend/lowering/builtins/operating-system.js +96 -16
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +103 -8
- 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/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +180 -36
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +35 -12
- package/dist/frontend/lowering/builtins/url.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 +103 -0
- package/dist/frontend/lowering/call-signatures.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 +9 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
- 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-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 +20 -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/coercions/function-adapters.js +9 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +8 -0
- package/dist/frontend/lowering/coercions/state.js +17 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +10 -1
- 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.js +156 -62
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +21 -3
- 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 +14 -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 +446 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +21 -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/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 +10 -0
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +115 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +151 -7
- 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 +31 -2
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +175 -22
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +173 -11
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
- package/dist/frontend/lowering/expressions/property-access.js +379 -109
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +237 -7
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +8 -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 +74 -55
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +37 -10
- 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 +27 -1
- package/dist/frontend/lowering/generic-functions.js +432 -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 +6 -4
- package/dist/frontend/lowering/global-values.js +24 -10
- package/dist/frontend/lowering/global-values.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.js +43 -22
- 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 +11 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +30 -15
- 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.js +11 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +25 -0
- package/dist/frontend/lowering/lower-calls.js +929 -227
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.js +59 -16
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +20 -0
- package/dist/frontend/lowering/lower-classes.js +468 -44
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
- package/dist/frontend/lowering/lower-event-emitter.js +253 -83
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
- package/dist/frontend/lowering/lower-exprs.js +71 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +25 -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 +638 -64
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +48 -2
- 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.js +16 -6
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +303 -87
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
- package/dist/frontend/lowering/lower-stmts.js +270 -52
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +110 -27
- 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 +227 -21
- package/dist/frontend/lowering/lowerer.js +651 -92
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +18 -0
- 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/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/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 +0 -3
- package/dist/frontend/lowering/partial-assertions.js +9 -15
- package/dist/frontend/lowering/partial-assertions.js.map +1 -1
- 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.js +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
- 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/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-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 +15 -1
- package/dist/frontend/lowering/surfaces.js +78 -10
- 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 +8 -0
- package/dist/frontend/lowering/unit-journal.js +14 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +36 -1
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-static.js +78 -9
- 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/pipeline.d.ts +5 -4
- package/dist/frontend/pipeline.js +94 -31
- 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.d.ts +62 -2
- package/dist/frontend/program.js +695 -422
- 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/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/shape-inference/overlay.js +68 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- 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/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +935 -150
- 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 +91 -9
- package/dist/frontend/type-mapper.js +622 -181
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +80 -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/builtin-effects.js +43 -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 +242 -16
- 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.generated.d.ts +1 -1
- package/dist/ir/codec.generated.js +724 -648
- package/dist/ir/codec.generated.js.map +1 -1
- 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 +11 -2
- package/dist/ir/fields.generated.js +8 -0
- package/dist/ir/fields.generated.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 +5 -4
- package/dist/ir/function-references.js +7 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +7 -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-views.js +1 -0
- package/dist/ir/inline-array-views.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +59 -4
- 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.js +30 -5
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +27 -1
- package/dist/ir/js-ic.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 -4
- package/dist/ir/parameter-versions.js +63 -42
- 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/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 +87 -12
- package/dist/ir/runtime-features.js +263 -160
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +109 -139
- 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 +4 -2
- package/dist/ir/saturating-loop-jams.js +11 -10
- package/dist/ir/saturating-loop-jams.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 +32 -27
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +6 -1
- package/dist/ir/serialize.js +87 -23
- 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 +88 -18
- package/dist/ir/validate.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 +1 -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 +47 -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 +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +18 -3
- 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 +43 -26
- 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 +10 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +7 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +12 -0
- package/dist/node-islands/boundary.js +38 -6
- 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 +9 -0
- package/dist/node-islands/detect.js +110 -0
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +24 -0
- package/dist/node-islands/detect.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/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 +2 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +5 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +11 -2
- package/dist/node-islands/scan.js +61 -9
- package/dist/node-islands/scan.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 +184 -117
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { realpathSync } from "node:fs";
|
|
1
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
2
2
|
import { frontendDisposed } from "../frontend/dispose-hook.js";
|
|
3
|
-
import { checkerPanicDiag, nodeIslandEntryPatchDiag, nodeIslandModuleNoteDiag, nodeIslandNoteDiag,
|
|
3
|
+
import { checkerPanicDiag, nodeIslandEntryPatchDiag, nodeIslandEntryReadDiag, nodeIslandImplicitGlobalReadDiag, nodeIslandModuleNoteDiag, nodeIslandNoteDiag, nodeIslandReaderStripDiag, nodeIslandStripDiag, nodeIslandRetryFailedDiag, npmStaticRefusalDiag, nativePackageDiag, iceDiag, isCheckerPanic, stdioPatchAcrossIslandsDiag, } from "../diagnostics/diagnostic.js";
|
|
4
4
|
import { validateModule } from "../ir/validate.js";
|
|
5
5
|
import { checkContracts } from "../contracts/check.js";
|
|
6
6
|
import { fenceSpeculativeWasiFunctions, moduleWasiUnavailableSurface, targetRefusalDiag, } from "../backend/target-diagnostics.js";
|
|
@@ -11,7 +11,7 @@ import { classifyDiagnostic, classifyMarker, isIslandReasonCode, } from "../node
|
|
|
11
11
|
import { packageDirOf, packageVersionOf } from "../node-islands/origin.js";
|
|
12
12
|
import { describe } from "../node-islands/summary.js";
|
|
13
13
|
import { resolveBareModule } from "../frontend/resolve.js";
|
|
14
|
-
import {
|
|
14
|
+
import { growIslandSet } from "../node-islands/growth.js";
|
|
15
15
|
import { isJsSourceFileName } from "../frontend/tsc-codes.js";
|
|
16
16
|
/** Release the parser/checker before native object generation begins.
|
|
17
17
|
* `unitStore` keeps the lowered units of this build for the next one
|
|
@@ -50,6 +50,18 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
50
50
|
let disposed = false;
|
|
51
51
|
let fenceGrown = null;
|
|
52
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
|
+
};
|
|
53
65
|
// The frontend (and its tsgo server) is released as soon as lowering
|
|
54
66
|
// ends — clang and the link never hold it open.
|
|
55
67
|
try {
|
|
@@ -66,7 +78,8 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
66
78
|
// An import of a natively compiled package that preflight refuses
|
|
67
79
|
// in the importer (a CommonJS namespace import) is that package's
|
|
68
80
|
// refusal: it runs in a Node island instead.
|
|
69
|
-
const
|
|
81
|
+
const growth = growthOf();
|
|
82
|
+
const grown = growth === null ? null : growIslandSet(growth, lowerIslands, { preflight: fe.preflight });
|
|
70
83
|
if (grown !== null) {
|
|
71
84
|
fe.dispose();
|
|
72
85
|
frontendDisposed();
|
|
@@ -99,7 +112,10 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
99
112
|
// Packages whose own modules refused to lower run in Node islands
|
|
100
113
|
// too (the authoritative lowering, DESIGN.md §1.4): build again with
|
|
101
114
|
// them as islands.
|
|
102
|
-
const
|
|
115
|
+
const growth = growthOf();
|
|
116
|
+
const grown = growth === null
|
|
117
|
+
? null
|
|
118
|
+
: growIslandSet(growth, lowerIslands, { diagnostics: lowered.diagnostics });
|
|
103
119
|
// Sloppy user modules the lowering refused join the same retry
|
|
104
120
|
// (DESIGN.md note 1 §3.2): one reload with every island at once,
|
|
105
121
|
// never one round per module.
|
|
@@ -117,8 +133,12 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
117
133
|
// declare (interfaces, aliases such as `Static<T>`) are `any`, so its
|
|
118
134
|
// diagnostics describe a program the island build does not compile:
|
|
119
135
|
// there the packages' declarations type the user code.
|
|
120
|
-
const marked = retryFences
|
|
121
|
-
?
|
|
136
|
+
const marked = retryFences && growth !== null
|
|
137
|
+
? growIslandSet(growth, lowerIslands, {
|
|
138
|
+
diagnostics: lowered.diagnostics,
|
|
139
|
+
fences: lowered.runtimeFences,
|
|
140
|
+
fenceMode: "report",
|
|
141
|
+
})
|
|
122
142
|
: null;
|
|
123
143
|
if (marked !== null) {
|
|
124
144
|
fe.dispose();
|
|
@@ -164,8 +184,18 @@ export function prepareExecutableModule(entryPath, opts, ffi, buildPlatform, cre
|
|
|
164
184
|
lowered.module.contracts = checked.contracts;
|
|
165
185
|
contractWarnings = checked.warnings;
|
|
166
186
|
}
|
|
167
|
-
if (retryFences)
|
|
168
|
-
|
|
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
|
+
});
|
|
198
|
+
}
|
|
169
199
|
}
|
|
170
200
|
finally {
|
|
171
201
|
if (!disposed) {
|
|
@@ -316,6 +346,32 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
316
346
|
const scan = fe.nodeIslandScan({ userJs: policy.mode === "auto" });
|
|
317
347
|
const moduleDecision = moduleIslands(entryPath, policy, scan);
|
|
318
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
|
+
}
|
|
319
375
|
// Modules the lowering refused keep their first reason (the reload no
|
|
320
376
|
// longer compiles them).
|
|
321
377
|
for (const [file, island] of lowerModules)
|
|
@@ -328,10 +384,12 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
328
384
|
}
|
|
329
385
|
for (const problem of moduleDecision.stripProblems)
|
|
330
386
|
errors.push(nodeIslandStripDiag(problem.file, problem.construct, problem.loc));
|
|
331
|
-
// Who else must see the patch (H3.4): every
|
|
332
|
-
//
|
|
333
|
-
// package
|
|
334
|
-
//
|
|
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.
|
|
335
393
|
const patchedMembers = new Map();
|
|
336
394
|
for (const m of scan.modules) {
|
|
337
395
|
if (!modules.has(m.file))
|
|
@@ -344,6 +402,10 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
344
402
|
}
|
|
345
403
|
}
|
|
346
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();
|
|
347
409
|
if (policy.mode === "auto" && patchedMembers.size > 0) {
|
|
348
410
|
for (const m of scan.modules) {
|
|
349
411
|
if (modules.has(m.file))
|
|
@@ -353,6 +415,14 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
353
415
|
if (patchFile === undefined)
|
|
354
416
|
continue;
|
|
355
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
|
+
}
|
|
356
426
|
if (!readerPackages.has(m.packageName) && !refused.has(m.packageName))
|
|
357
427
|
readerPackages.set(m.packageName, {
|
|
358
428
|
packageDir: m.packageDir,
|
|
@@ -361,17 +431,74 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
361
431
|
});
|
|
362
432
|
}
|
|
363
433
|
else if (m.origin === "user") {
|
|
364
|
-
|
|
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));
|
|
365
481
|
}
|
|
366
482
|
}
|
|
367
483
|
}
|
|
368
484
|
}
|
|
369
485
|
if (errors.length > 0)
|
|
370
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
|
+
}
|
|
371
497
|
if (refused.size === 0 &&
|
|
372
498
|
policy.forcedNode.size === 0 &&
|
|
373
499
|
modules.size === 0 &&
|
|
374
|
-
readerPackages.size === 0
|
|
500
|
+
readerPackages.size === 0 &&
|
|
501
|
+
readerGlobals.size === 0)
|
|
375
502
|
return null;
|
|
376
503
|
const report = buildNodeIslandReport({
|
|
377
504
|
entry: entryPath,
|
|
@@ -450,6 +577,22 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
450
577
|
});
|
|
451
578
|
notes.push(nodeIslandNoteDiag(name, version, "object-model", reason, fe.npmImportSites.get(name) ?? { file: entryPath, start: 0, end: 0 }));
|
|
452
579
|
}
|
|
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 }));
|
|
595
|
+
}
|
|
453
596
|
for (const island of [...modules.values()].sort((a, b) => a.file < b.file ? -1 : a.file > b.file ? 1 : 0))
|
|
454
597
|
notes.push(nodeIslandModuleNoteDiag(island.file, island.class, island.reason, {
|
|
455
598
|
file: island.file,
|
|
@@ -458,6 +601,29 @@ function decideNodeIslands(entryPath, opts, fe, lowerIslands, lowerModules) {
|
|
|
458
601
|
}));
|
|
459
602
|
return packages.size === 0 && modules.size === 0 ? null : { packages, modules, notes, errors };
|
|
460
603
|
}
|
|
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();
|
|
610
|
+
for (const d of fe.preflight) {
|
|
611
|
+
if (d.code !== "SC1091" || d.reason !== "implicit-global-write")
|
|
612
|
+
continue;
|
|
613
|
+
const file = d.loc.file;
|
|
614
|
+
if (!modules.has(file))
|
|
615
|
+
continue;
|
|
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);
|
|
624
|
+
}
|
|
625
|
+
return globals;
|
|
626
|
+
}
|
|
461
627
|
/** The builtin module a patched member belongs to ("fs" of
|
|
462
628
|
* "fs.readFileSync"). */
|
|
463
629
|
function builtinModuleOf(member) {
|
|
@@ -484,84 +650,23 @@ function patchFileOf(patched, member) {
|
|
|
484
650
|
}
|
|
485
651
|
return undefined;
|
|
486
652
|
}
|
|
487
|
-
/** The
|
|
488
|
-
*
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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)
|
|
492
660
|
return null;
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
continue;
|
|
503
|
-
const js = resolveBareModule(d.loc.file, name, "js-only") ??
|
|
504
|
-
resolveBareModule(d.loc.file, name, "js-only", "require");
|
|
505
|
-
const at = js === null ? null : packageDirOf(js.typesFile);
|
|
506
|
-
if (at === null || at.name !== name)
|
|
507
|
-
continue;
|
|
508
|
-
grown.set(name, {
|
|
509
|
-
name,
|
|
510
|
-
version: packageVersionOf(at.dir),
|
|
511
|
-
dir: at.dir,
|
|
512
|
-
class: "packaging",
|
|
513
|
-
reason: `${d.code}: ${d.message}`,
|
|
514
|
-
});
|
|
515
|
-
continue;
|
|
516
|
-
}
|
|
517
|
-
if (!isIslandReasonCode(d.code))
|
|
518
|
-
continue;
|
|
519
|
-
const at = packageDirOf(d.loc.file);
|
|
520
|
-
if (at === null || !compiled.has(at.name) || grown.has(at.name))
|
|
521
|
-
continue;
|
|
522
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
523
|
-
continue;
|
|
524
|
-
const reason = classifyDiagnostic(d, "refusal");
|
|
525
|
-
grown.set(at.name, {
|
|
526
|
-
name: at.name,
|
|
527
|
-
version: packageVersionOf(at.dir),
|
|
528
|
-
dir: at.dir,
|
|
529
|
-
class: reason.class,
|
|
530
|
-
reason: describe(reason),
|
|
531
|
-
});
|
|
532
|
-
}
|
|
533
|
-
// A native ES module that imports an island CommonJS module would read
|
|
534
|
-
// its bindings from the module's exports object, where Node gives it the
|
|
535
|
-
// namespace its CommonJS facade builds (the lexed names, module.exports
|
|
536
|
-
// as the default): the importing package runs in the island too.
|
|
537
|
-
for (let added = edges !== undefined; added;) {
|
|
538
|
-
added = false;
|
|
539
|
-
for (const edge of edges) {
|
|
540
|
-
const name = edge.to;
|
|
541
|
-
if (!grown.has(name) || edge.fromDir === null || edge.shim)
|
|
542
|
-
continue;
|
|
543
|
-
const at = packageDirOf(edge.fromFile);
|
|
544
|
-
if (at === null || grown.has(at.name) || !compiled.has(at.name))
|
|
545
|
-
continue;
|
|
546
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
547
|
-
continue;
|
|
548
|
-
if (!isEsmFile(edge.fromFile))
|
|
549
|
-
continue;
|
|
550
|
-
const target = resolveBareModule(edge.fromFile, name, "js-only") ??
|
|
551
|
-
resolveBareModule(edge.fromFile, name, "js-only", "require");
|
|
552
|
-
if (target === null || isEsmFile(target.typesFile))
|
|
553
|
-
continue;
|
|
554
|
-
grown.set(at.name, {
|
|
555
|
-
name: at.name,
|
|
556
|
-
version: packageVersionOf(at.dir),
|
|
557
|
-
dir: at.dir,
|
|
558
|
-
class: "packaging",
|
|
559
|
-
reason: `an ES module of the package imports the CommonJS island package '${name}'`,
|
|
560
|
-
});
|
|
561
|
-
added = true;
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
return grown.size === known.size ? null : grown;
|
|
661
|
+
return {
|
|
662
|
+
entry: entryPath,
|
|
663
|
+
policy: nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands),
|
|
664
|
+
scan,
|
|
665
|
+
npm: fe.npmStatic,
|
|
666
|
+
npmImportSites: fe.npmImportSites,
|
|
667
|
+
...(Array.isArray(opts.npmStatic) ? { explicitNpmStatic: opts.npmStatic } : {}),
|
|
668
|
+
sourceTexts: () => fe.sourceTexts(),
|
|
669
|
+
};
|
|
565
670
|
}
|
|
566
671
|
/** The island modules grown by the lowering's refusals in user JavaScript
|
|
567
672
|
* (`--node-islands=auto` only), or null when there are none: a sloppy
|
|
@@ -577,7 +682,8 @@ function loweringModules(entryPath, opts, diagnostics, known) {
|
|
|
577
682
|
if (!isIslandReasonCode(d.code))
|
|
578
683
|
continue;
|
|
579
684
|
const file = d.loc.file;
|
|
580
|
-
// Packages run in Node through their own decision
|
|
685
|
+
// Packages run in Node through their own decision
|
|
686
|
+
// (node-islands/growth.ts).
|
|
581
687
|
if (file.includes("/node_modules/") || packageDirOf(file) !== null)
|
|
582
688
|
continue;
|
|
583
689
|
if (!isJsSourceFileName(file) || sameFile(file, entryPath))
|
|
@@ -598,159 +704,4 @@ function loweringModules(entryPath, opts, diagnostics, known) {
|
|
|
598
704
|
}
|
|
599
705
|
return grown.size === known.size ? null : grown;
|
|
600
706
|
}
|
|
601
|
-
/** Preflight refusals at import statements of natively compiled npm
|
|
602
|
-
* packages (`--node-islands=auto` only): those packages become islands. */
|
|
603
|
-
function preflightIslands(entryPath, opts, fe, known) {
|
|
604
|
-
const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
|
|
605
|
-
if (policy.mode !== "auto" || known.size > 16)
|
|
606
|
-
return null;
|
|
607
|
-
const compiled = new Set(fe.npmStatic.filter((e) => e.status === "static").map((e) => e.package));
|
|
608
|
-
if (compiled.size === 0)
|
|
609
|
-
return null;
|
|
610
|
-
const texts = fe.sourceTexts();
|
|
611
|
-
const grown = new Map(known);
|
|
612
|
-
for (const d of fe.preflight) {
|
|
613
|
-
if (d.code !== "SC1013")
|
|
614
|
-
continue;
|
|
615
|
-
const text = texts.get(d.loc.file);
|
|
616
|
-
if (text === undefined)
|
|
617
|
-
continue;
|
|
618
|
-
// The import statement around the diagnostic: its module specifier.
|
|
619
|
-
const start = text.lastIndexOf("import", d.loc.start);
|
|
620
|
-
const end = text.indexOf(";", d.loc.end);
|
|
621
|
-
const stmt = text.slice(start < 0 ? d.loc.start : start, end < 0 ? text.length : end);
|
|
622
|
-
const m = /\bfrom\s*["']([^"']+)["']/.exec(stmt);
|
|
623
|
-
if (m === null)
|
|
624
|
-
continue;
|
|
625
|
-
const spec = m[1];
|
|
626
|
-
const name = spec.startsWith("@") ? spec.split("/").slice(0, 2).join("/") : spec.split("/")[0];
|
|
627
|
-
if (!compiled.has(name) || grown.has(name))
|
|
628
|
-
continue;
|
|
629
|
-
if (policy.forcedNative.has(name) || policy.unloaded.has(name))
|
|
630
|
-
continue;
|
|
631
|
-
const site = fe.npmImportSites.get(name);
|
|
632
|
-
const jsEntry = site === undefined ? null : resolveBareModule(site.file, spec, "js-only");
|
|
633
|
-
const at = jsEntry === null ? null : packageDirOf(jsEntry.typesFile);
|
|
634
|
-
if (at === null)
|
|
635
|
-
continue;
|
|
636
|
-
grown.set(name, {
|
|
637
|
-
name,
|
|
638
|
-
version: packageVersionOf(at.dir),
|
|
639
|
-
dir: at.dir,
|
|
640
|
-
class: "gap",
|
|
641
|
-
reason: `${d.code}: ${d.message}`,
|
|
642
|
-
});
|
|
643
|
-
}
|
|
644
|
-
return grown.size === known.size ? null : grown;
|
|
645
|
-
}
|
|
646
|
-
/** Packages compiled natively with runtime fences (refusals deferred to the
|
|
647
|
-
* operation that reaches them) that should run in islands instead: those
|
|
648
|
-
* with a fence that surely fires (one in top-level module code, which runs
|
|
649
|
-
* when the module evaluates) or that itself needs the runtime (R1). Other
|
|
650
|
-
* fences stay deferred refusals until decision 8 (D6) retires them, so
|
|
651
|
-
* typed packages like jose stay native. With `requireFence` false (after a
|
|
652
|
-
* failed build) the package's island class by NI-2's report decides
|
|
653
|
-
* instead: runtime (R1) or object-model (R2). `--node-islands=auto` only;
|
|
654
|
-
* null for none. */
|
|
655
|
-
function fenceIslands(entryPath, opts, fe, lowered, known, requireFence = true, sure) {
|
|
656
|
-
if (fe.nodeIslandScan === undefined)
|
|
657
|
-
return null;
|
|
658
|
-
if (requireFence && lowered.runtimeFences.length === 0)
|
|
659
|
-
return null;
|
|
660
|
-
const policy = nodeIslandPolicy(readProjectConfig(entryPath), opts.nodeIslands);
|
|
661
|
-
if (policy.mode !== "auto" || known.size > 32)
|
|
662
|
-
return null;
|
|
663
|
-
// An explicit --npm-static request keeps its package native.
|
|
664
|
-
const explicit = new Set(Array.isArray(opts.npmStatic) ? opts.npmStatic.map((n) => n.replace(/\.\.\.$/, "")) : []);
|
|
665
|
-
const compiled = new Set(fe.npmStatic
|
|
666
|
-
.filter((e) => e.status === "static" && !explicit.has(e.package))
|
|
667
|
-
.map((e) => e.package));
|
|
668
|
-
const fenced = new Map();
|
|
669
|
-
for (const d of lowered.runtimeFences) {
|
|
670
|
-
const at = packageDirOf(d.loc.file);
|
|
671
|
-
if (at === null || !compiled.has(at.name) || known.has(at.name))
|
|
672
|
-
continue;
|
|
673
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
674
|
-
continue;
|
|
675
|
-
// A fence in top-level module code throws when the module evaluates:
|
|
676
|
-
// it counts like one that needs the runtime.
|
|
677
|
-
const runtime = d.moduleInit === true || classifyDiagnostic(d, "fence").class === "runtime";
|
|
678
|
-
fenced.set(at.name, (fenced.get(at.name) ?? false) || runtime);
|
|
679
|
-
if (runtime)
|
|
680
|
-
sure?.add(at.name);
|
|
681
|
-
}
|
|
682
|
-
if (requireFence && fenced.size === 0)
|
|
683
|
-
return null;
|
|
684
|
-
const scan = fe.nodeIslandScan({ userJs: false });
|
|
685
|
-
const report = buildNodeIslandReport({
|
|
686
|
-
entry: entryPath,
|
|
687
|
-
scan,
|
|
688
|
-
npm: fe.npmStatic,
|
|
689
|
-
diagnostics: lowered.diagnostics,
|
|
690
|
-
fences: lowered.runtimeFences,
|
|
691
|
-
policy,
|
|
692
|
-
});
|
|
693
|
-
const grown = new Map(known);
|
|
694
|
-
for (const island of report.islands) {
|
|
695
|
-
const runtimeFence = requireFence
|
|
696
|
-
? fenced.get(island.package)
|
|
697
|
-
: (fenced.get(island.package) ?? false);
|
|
698
|
-
if (runtimeFence === undefined || island.path === null)
|
|
699
|
-
continue;
|
|
700
|
-
if (!compiled.has(island.package) || known.has(island.package))
|
|
701
|
-
continue;
|
|
702
|
-
if (policy.forcedNative.has(island.package) || policy.unloaded.has(island.package))
|
|
703
|
-
continue;
|
|
704
|
-
// With fences (requireFence), only fences that surely fire count: a
|
|
705
|
-
// gap fence inside a function body may never run (jose's typed paths
|
|
706
|
-
// stay native, DECISIONS.md 2026-10-21). After a failed build
|
|
707
|
-
// (!requireFence), the package's report class decides.
|
|
708
|
-
if (requireFence && !runtimeFence)
|
|
709
|
-
continue;
|
|
710
|
-
if (!runtimeFence && island.class !== "runtime" && island.class !== "object-model")
|
|
711
|
-
continue;
|
|
712
|
-
grown.set(island.package, {
|
|
713
|
-
name: island.package,
|
|
714
|
-
version: island.version,
|
|
715
|
-
dir: island.path,
|
|
716
|
-
class: island.class,
|
|
717
|
-
reason: island.reason,
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
// A native ES module that imports an island CommonJS module would read
|
|
721
|
-
// its bindings from the module's exports object, where Node gives it the
|
|
722
|
-
// namespace its CommonJS facade builds (the lexed names, module.exports
|
|
723
|
-
// as the default): the importing package runs in the island too.
|
|
724
|
-
for (let added = true; added;) {
|
|
725
|
-
added = false;
|
|
726
|
-
for (const edge of scan.edges) {
|
|
727
|
-
const name = edge.to;
|
|
728
|
-
if (!grown.has(name) || edge.fromDir === null || edge.shim)
|
|
729
|
-
continue;
|
|
730
|
-
const at = packageDirOf(edge.fromFile);
|
|
731
|
-
if (at === null || grown.has(at.name) || !compiled.has(at.name))
|
|
732
|
-
continue;
|
|
733
|
-
if (policy.forcedNative.has(at.name) || policy.unloaded.has(at.name))
|
|
734
|
-
continue;
|
|
735
|
-
if (!isEsmFile(edge.fromFile))
|
|
736
|
-
continue;
|
|
737
|
-
const target = resolveBareModule(edge.fromFile, name, "js-only") ??
|
|
738
|
-
resolveBareModule(edge.fromFile, name, "js-only", "require");
|
|
739
|
-
if (target === null || isEsmFile(target.typesFile))
|
|
740
|
-
continue;
|
|
741
|
-
grown.set(at.name, {
|
|
742
|
-
name: at.name,
|
|
743
|
-
version: packageVersionOf(at.dir),
|
|
744
|
-
dir: at.dir,
|
|
745
|
-
class: "packaging",
|
|
746
|
-
reason: `an ES module of the package imports the CommonJS island package '${name}'`,
|
|
747
|
-
});
|
|
748
|
-
// It goes wherever that island goes, the sure-fence retry included.
|
|
749
|
-
if (known.has(name) || sure?.has(name) === true)
|
|
750
|
-
sure?.add(at.name);
|
|
751
|
-
added = true;
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
return grown.size === known.size ? null : grown;
|
|
755
|
-
}
|
|
756
707
|
//# sourceMappingURL=prepare.js.map
|