@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,3 +1,4 @@
|
|
|
1
|
+
import { BIGINT_BYTES_NAMES, } from "./ir.js";
|
|
1
2
|
import { isDirentShape, recordHandleCodecClass, recordTextCodecClass, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_STREAM_CLASSES, } from "./ir.js";
|
|
2
3
|
import { everyModuleNode, everyStmtList } from "./traverse.js";
|
|
3
4
|
import { eachNodeOfKinds } from "./node-index.js";
|
|
@@ -16,12 +17,16 @@ const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) => [
|
|
|
16
17
|
"DoubleBE",
|
|
17
18
|
].map((n) => `${rw}${n}`),
|
|
18
19
|
]));
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
/** The variable-width and BigInt reads and writes, which
|
|
21
|
+
* scr_dyn_invoke_buffer_wide runs. */
|
|
22
|
+
const DYN_BUFFER_WIDE_METHODS = ["read", "write"].flatMap((rw) => [
|
|
23
|
+
...["UIntLE", "UIntBE", "UintLE", "UintBE", "IntLE", "IntBE"].map((n) => `${rw}${n}`),
|
|
24
|
+
...["BigUInt64", "BigUint64", "BigInt64"].flatMap((n) => [`${rw}${n}LE`, `${rw}${n}BE`]),
|
|
25
|
+
]);
|
|
26
|
+
/** The Buffer.prototype members scr_dyn_invoke_buffer refuses on Buffer
|
|
27
|
+
* receivers besides running the named ones: the per-encoding slices and
|
|
28
|
+
* writes, and inspect. */
|
|
29
|
+
const DYN_BUFFER_FAMILY_METHODS = [
|
|
25
30
|
...["ascii", "base64", "base64url", "latin1", "hex", "ucs2", "utf8"].flatMap((enc) => [
|
|
26
31
|
`${enc}Slice`,
|
|
27
32
|
`${enc}Write`,
|
|
@@ -30,11 +35,13 @@ const DYN_BUFFER_REFUSED_METHODS = [
|
|
|
30
35
|
];
|
|
31
36
|
/** The scr_bytes_dyn.c entry, one per method family, that a checked-dynamic
|
|
32
37
|
* call of a Buffer.prototype method name routes to: the fixed-width reads and
|
|
33
|
-
* writes (both "UInt" and "Uint" spellings),
|
|
34
|
-
* searches, and the other Buffer-only
|
|
35
|
-
* Buffer receiver and gives any other
|
|
38
|
+
* writes (both "UInt" and "Uint" spellings), the variable-width and BigInt
|
|
39
|
+
* ones, write, fill, toString, the searches, and the other Buffer-only
|
|
40
|
+
* members. Each runs the method on a Buffer receiver and gives any other
|
|
41
|
+
* receiver the ordinary dispatch. */
|
|
36
42
|
export const DYN_BUFFER_METHODS = new Map([
|
|
37
43
|
...[...DYN_BUFFER_NUM_METHODS].map((m) => [m, "scr_dyn_invoke_buffer_num"]),
|
|
44
|
+
...DYN_BUFFER_WIDE_METHODS.map((m) => [m, "scr_dyn_invoke_buffer_wide"]),
|
|
38
45
|
["write", "scr_dyn_invoke_buffer_write"],
|
|
39
46
|
["fill", "scr_dyn_invoke_buffer_fill"],
|
|
40
47
|
["toString", "scr_dyn_invoke_buffer_to_string"],
|
|
@@ -50,12 +57,14 @@ export const DYN_BUFFER_METHODS = new Map([
|
|
|
50
57
|
"swap16",
|
|
51
58
|
"swap32",
|
|
52
59
|
"swap64",
|
|
53
|
-
...
|
|
60
|
+
...DYN_BUFFER_FAMILY_METHODS,
|
|
54
61
|
].map((m) => [m, "scr_dyn_invoke_buffer"]),
|
|
55
62
|
]);
|
|
56
63
|
const DYN_ASYNC_LIB_FNS = new Set([
|
|
57
64
|
// DEP0040 rides the dyn-async unit's warning machinery.
|
|
58
65
|
"async.awaitDyn",
|
|
66
|
+
// So does SlowBuffer's DEP0030.
|
|
67
|
+
"buffer.slowBuffer",
|
|
59
68
|
// The child property table adopts thenables through the dyn-async unit.
|
|
60
69
|
"child.propsInstall",
|
|
61
70
|
"child.propsResolve",
|
|
@@ -70,6 +79,9 @@ const DYN_ASYNC_LIB_FNS = new Set([
|
|
|
70
79
|
"dyn.promiseAllSettled",
|
|
71
80
|
"dyn.promiseAny",
|
|
72
81
|
"dyn.promiseResolve",
|
|
82
|
+
// The generic Promise statics build and settle their capability's promise
|
|
83
|
+
// with dyn values (scr_dyn_new_promise, scr_dyn_promise_resolve).
|
|
84
|
+
"promise.genericStatic",
|
|
73
85
|
"fs.callbackCall",
|
|
74
86
|
"fs.callbackGlob",
|
|
75
87
|
"fs.callbackValue",
|
|
@@ -82,6 +94,7 @@ const DYN_ASYNC_LIB_FNS = new Set([
|
|
|
82
94
|
"process.offWarning",
|
|
83
95
|
"process.onRejectionHandled",
|
|
84
96
|
"process.onUncaughtException",
|
|
97
|
+
"process.prependUncaughtException",
|
|
85
98
|
"process.onUnhandledRejection",
|
|
86
99
|
"process.onWarning",
|
|
87
100
|
"process.setDeprecationFlag",
|
|
@@ -95,6 +108,8 @@ const DYN_ASYNC_LIB_FNS = new Set([
|
|
|
95
108
|
"util.debounce",
|
|
96
109
|
"util.throttle",
|
|
97
110
|
"timers.immediatePromise",
|
|
111
|
+
// A timer callback bound to its handle as `this`.
|
|
112
|
+
"timers.thisCallback",
|
|
98
113
|
// The performance timeline (scr_perf.c, linked with this unit for its
|
|
99
114
|
// MaxPerformanceEntryBufferExceededWarning).
|
|
100
115
|
"perf.clearMarks",
|
|
@@ -203,6 +218,10 @@ const ABORT_SIGNAL_LIB_FNS = new Set([
|
|
|
203
218
|
"http.requestDynCb",
|
|
204
219
|
"https.requestDyn",
|
|
205
220
|
"https.requestDynCb",
|
|
221
|
+
"http.requestUrlDyn",
|
|
222
|
+
"http.requestUrlDynCb",
|
|
223
|
+
"https.requestUrlDyn",
|
|
224
|
+
"https.requestUrlDynCb",
|
|
206
225
|
"rl.createSignal",
|
|
207
226
|
"rl.questionAsyncSignal",
|
|
208
227
|
"sp.finishedOptsSignal",
|
|
@@ -301,18 +320,24 @@ const READABLE_DYN_ASYNC_PREFIXES = ["readable.fromGen", "readable.op"];
|
|
|
301
320
|
/** Entry points that link the dyn-invoke unit. */
|
|
302
321
|
const DYN_INVOKE_LIB_FNS = new Set([
|
|
303
322
|
"dyn.arrayProtoCall",
|
|
323
|
+
"dyn.arrayLikeProtoCall",
|
|
324
|
+
"dyn.builtinPrototype",
|
|
304
325
|
"dyn.arrayPrototype",
|
|
305
326
|
"dyn.builtinFunction",
|
|
306
327
|
"dyn.builtinMethod",
|
|
328
|
+
"dyn.stdlibPrototype",
|
|
307
329
|
"dyn.defineProperty",
|
|
330
|
+
"dyn.definePropertyShapes",
|
|
308
331
|
"child.propsDefine",
|
|
309
332
|
"dyn.defineProps",
|
|
333
|
+
"dyn.definePropsShapes",
|
|
310
334
|
"dyn.definePrototypeProps",
|
|
311
335
|
"dyn.functionApply",
|
|
312
336
|
"dyn.globalConstructor",
|
|
313
337
|
"dyn.namespaceDefine",
|
|
314
338
|
"dyn.namespaceNew",
|
|
315
339
|
"dyn.objCreateWithProperties",
|
|
340
|
+
"dyn.objCreateWithPropertiesShapes",
|
|
316
341
|
"dyn.objectTag",
|
|
317
342
|
"stream.dynNative",
|
|
318
343
|
"stream.dynNativePipe",
|
|
@@ -327,6 +352,47 @@ const INHERITED_MEMBER_NAMES = new Set([
|
|
|
327
352
|
"toString",
|
|
328
353
|
"valueOf",
|
|
329
354
|
]);
|
|
355
|
+
/** Array.prototype's method names. A constant-key dynamic read of one on an array answers the method the array's implicit prototype installs, so the read links the dyn-invoke unit. Mirrors the method table in scr_dyn_invoke.c (runtime-registries.test.ts checks the two agree). */
|
|
356
|
+
export const ARRAY_PROTOTYPE_MEMBER_NAMES = new Set([
|
|
357
|
+
"at",
|
|
358
|
+
"concat",
|
|
359
|
+
"copyWithin",
|
|
360
|
+
"fill",
|
|
361
|
+
"find",
|
|
362
|
+
"findIndex",
|
|
363
|
+
"findLast",
|
|
364
|
+
"findLastIndex",
|
|
365
|
+
"lastIndexOf",
|
|
366
|
+
"pop",
|
|
367
|
+
"push",
|
|
368
|
+
"reverse",
|
|
369
|
+
"shift",
|
|
370
|
+
"unshift",
|
|
371
|
+
"slice",
|
|
372
|
+
"sort",
|
|
373
|
+
"splice",
|
|
374
|
+
"includes",
|
|
375
|
+
"indexOf",
|
|
376
|
+
"join",
|
|
377
|
+
"keys",
|
|
378
|
+
"entries",
|
|
379
|
+
"values",
|
|
380
|
+
"forEach",
|
|
381
|
+
"filter",
|
|
382
|
+
"flat",
|
|
383
|
+
"flatMap",
|
|
384
|
+
"map",
|
|
385
|
+
"every",
|
|
386
|
+
"some",
|
|
387
|
+
"reduce",
|
|
388
|
+
"reduceRight",
|
|
389
|
+
"toReversed",
|
|
390
|
+
"toSorted",
|
|
391
|
+
"toSpliced",
|
|
392
|
+
"with",
|
|
393
|
+
"toLocaleString",
|
|
394
|
+
"toString",
|
|
395
|
+
]);
|
|
330
396
|
/** Entry points that link the child-process unit (with CHILD_PROCESS_LIB_PREFIXES): the fork IPC channel on the process object. */
|
|
331
397
|
const CHILD_PROCESS_LIB_FNS = new Set([
|
|
332
398
|
"process.connected",
|
|
@@ -367,9 +433,18 @@ const SYMBOL_LIB_FNS = new Set([
|
|
|
367
433
|
"buffer.constructor",
|
|
368
434
|
"buffer.staticValue",
|
|
369
435
|
"buffer.prototypeMember",
|
|
436
|
+
"buffer.prototypeObject",
|
|
370
437
|
]);
|
|
371
438
|
/** Entry points that link the querystring unit. */
|
|
372
|
-
const QS_LIB_FNS = new Set([
|
|
439
|
+
const QS_LIB_FNS = new Set([
|
|
440
|
+
"qs.parse",
|
|
441
|
+
"qs.parseCustom",
|
|
442
|
+
"qs.stringify",
|
|
443
|
+
"qs.stringifyCustom",
|
|
444
|
+
"qs.separator",
|
|
445
|
+
"qs.unescape",
|
|
446
|
+
"qs.unescapeBuffer",
|
|
447
|
+
]);
|
|
373
448
|
/** Entry points that link the parseArgs unit. */
|
|
374
449
|
const PARSE_ARGS_LIB_FNS = new Set([
|
|
375
450
|
"util.isDeepStrictEqual",
|
|
@@ -560,11 +635,22 @@ const PROCESS_EVENT_LIB_FNS = new Set([
|
|
|
560
635
|
"process.offSignal",
|
|
561
636
|
"process.onExit",
|
|
562
637
|
"process.onSignal",
|
|
638
|
+
"process.prependExit",
|
|
639
|
+
"process.prependSignal",
|
|
563
640
|
"process.stdio",
|
|
641
|
+
"process.stdinIsRaw",
|
|
642
|
+
"process.stdioSlot",
|
|
643
|
+
"process.stdioWriteDyn",
|
|
564
644
|
"stdin.nextChunk",
|
|
565
645
|
"stdin.onData",
|
|
566
646
|
"stdin.onEnd",
|
|
567
647
|
"stdin.onError",
|
|
648
|
+
"stdin.onReadable",
|
|
649
|
+
"stdin.pause",
|
|
650
|
+
"stdin.resume",
|
|
651
|
+
"stdin.isPaused",
|
|
652
|
+
"stdin.readableLength",
|
|
653
|
+
"stdin.read",
|
|
568
654
|
// node:readline rides the stdin unit (scr_readline.c links beside
|
|
569
655
|
// scr_events.c under the same gate).
|
|
570
656
|
"rl.checkCompleter",
|
|
@@ -693,6 +779,54 @@ function webCryptoAsymmetricScan() {
|
|
|
693
779
|
result: () => webcrypto && named,
|
|
694
780
|
};
|
|
695
781
|
}
|
|
782
|
+
/** The Buffer.prototype method names a checked-dynamic read can answer from
|
|
783
|
+
* scr_bytes_dyn.c: the ones calls route there, and the members Buffer
|
|
784
|
+
* defines over %TypedArray%.prototype's. */
|
|
785
|
+
const BUFFER_PROTOTYPE_METHOD_NAMES = new Set([
|
|
786
|
+
...DYN_BUFFER_METHODS.keys(),
|
|
787
|
+
"subarray",
|
|
788
|
+
"slice",
|
|
789
|
+
"toLocaleString",
|
|
790
|
+
]);
|
|
791
|
+
const u8BytesLeaf = (t) => t.kind === "bytes" && t.elem === "u8";
|
|
792
|
+
/** Whether converting a value of type `t` to dyn can box a Buffer: a
|
|
793
|
+
* Uint8Array or Buffer, or a function, collection, record, union, promise
|
|
794
|
+
* or class instance that carries one. */
|
|
795
|
+
function mentionsU8Bytes(t, tables) {
|
|
796
|
+
tables.u8BytesCarriers ??= leafCarriers(tables, u8BytesLeaf);
|
|
797
|
+
return carriesLeaf(t, tables.u8BytesCarriers, u8BytesLeaf, tables);
|
|
798
|
+
}
|
|
799
|
+
/** A checked-dynamic read with a key computed at run time, or one naming a
|
|
800
|
+
* Buffer.prototype method, in a module that makes Buffer values and boxes a
|
|
801
|
+
* value that can hold one: `buf[name]` and `buf.indexOf` read as values
|
|
802
|
+
* name Buffer.prototype methods, which scr_bytes_dyn.c answers. A Buffer
|
|
803
|
+
* value also comes from a typed file read, which answers a branded Buffer
|
|
804
|
+
* with no `buffer.*` call, so those reads count as making one. */
|
|
805
|
+
function computedBufferMemberScan(mod) {
|
|
806
|
+
let tables;
|
|
807
|
+
const typeTables = () => (tables ??= {
|
|
808
|
+
records: new Map((mod.records ?? []).map((r) => [r.id, r])),
|
|
809
|
+
unions: new Map((mod.unions ?? []).map((u) => [u.id, u])),
|
|
810
|
+
classes: new Map((mod.classes ?? []).map((c) => [c.name, c])),
|
|
811
|
+
});
|
|
812
|
+
let computed = false;
|
|
813
|
+
let buffer = false;
|
|
814
|
+
let boxed = false;
|
|
815
|
+
return {
|
|
816
|
+
expr: (node) => {
|
|
817
|
+
if (node.kind === "dynKeyGet" &&
|
|
818
|
+
(node.key.kind !== "strLit" || BUFFER_PROTOTYPE_METHOD_NAMES.has(node.key.value)))
|
|
819
|
+
computed = true;
|
|
820
|
+
else if (node.kind === "libCall" && node.fn.startsWith("buffer."))
|
|
821
|
+
buffer = true;
|
|
822
|
+
else if (node.kind === "libCall" && FS_READ_BYTES_FNS.has(node.fn))
|
|
823
|
+
buffer = true;
|
|
824
|
+
else if (!boxed && node.kind === "dynFrom" && mentionsU8Bytes(node.value.type, typeTables()))
|
|
825
|
+
boxed = true;
|
|
826
|
+
},
|
|
827
|
+
result: () => computed && buffer && boxed,
|
|
828
|
+
};
|
|
829
|
+
}
|
|
696
830
|
/** Whether the module calls WebCrypto and a string literal in it names one
|
|
697
831
|
* of the asymmetric algorithms (matched without regard to case, as
|
|
698
832
|
* normalizeAlgorithm matches names): scr_webcrypto_pki.c and the pki unit
|
|
@@ -713,6 +847,38 @@ export function moduleUsesWebCryptoAsymmetric(mod) {
|
|
|
713
847
|
});
|
|
714
848
|
return webcrypto && named;
|
|
715
849
|
}
|
|
850
|
+
/** The typed file reads that answer a ScrBytes: Node answers a Buffer, and
|
|
851
|
+
* scr_lib.c's read entries brand it, so a typed read makes a Buffer value. */
|
|
852
|
+
const FS_READ_BYTES_FNS = new Set([
|
|
853
|
+
"fs.readFileSyncBuf",
|
|
854
|
+
"fs.readFileSyncBytes",
|
|
855
|
+
"fs.readFdSyncBytes",
|
|
856
|
+
"fsp.readFileBytes",
|
|
857
|
+
"fileHandle.readFileBytes",
|
|
858
|
+
]);
|
|
859
|
+
/** The entries that need the JavaScript object model build (t262-da §J):
|
|
860
|
+
* the runtime code a JavaScript source reaches for builtin intrinsics,
|
|
861
|
+
* array attributes, BigInt views, handle property tables and buffer views
|
|
862
|
+
* that no typed program can observe. Empty until the first slice lands
|
|
863
|
+
* (A1 adds dyn.intrinsic); the slices share one SCR_JS_OBJECT_MODEL build
|
|
864
|
+
* of every unit they touch instead of one build column per feature. */
|
|
865
|
+
export const JS_OBJECT_MODEL_LIB_FNS = new Set([
|
|
866
|
+
// Resizable ArrayBuffers and growable SharedArrayBuffers (t262-dc C2), and
|
|
867
|
+
// the arming call that turns on the buffer views registry.
|
|
868
|
+
"arrayBuffer.newResizable",
|
|
869
|
+
"sharedArrayBuffer.newGrowable",
|
|
870
|
+
"arrayBuffer.armMutable",
|
|
871
|
+
]);
|
|
872
|
+
/** The JavaScript object model build's program facts (t262-da §J): every
|
|
873
|
+
* runtime feature that shares the one SCR_JS_OBJECT_MODEL build ORs in here
|
|
874
|
+
* (BigInt views today, array attributes and handle property tables next), so
|
|
875
|
+
* pack selection and the source build (RUNTIME_DEFINES, the library's
|
|
876
|
+
* cflags) agree on when the build is on. */
|
|
877
|
+
export function jsObjectModelFact(features) {
|
|
878
|
+
return (features.jsObjectModel === true ||
|
|
879
|
+
features.bigintBytes === true ||
|
|
880
|
+
features.mutableBuffers === true);
|
|
881
|
+
}
|
|
716
882
|
/** One rule per runtime feature, sorted by name. A new feature is an
|
|
717
883
|
* entry here and its line in noRuntimeFeatures; RuntimeFeatures, the scan
|
|
718
884
|
* and its early exit derive from this table. The lists above keep one
|
|
@@ -755,6 +921,13 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
755
921
|
"child.signalCode",
|
|
756
922
|
],
|
|
757
923
|
}),
|
|
924
|
+
/** spawnSync's and the exec/execFile callback form's `cwd`/`input`/
|
|
925
|
+
* `shell` entries (SCR_CHILD_CP_OPTIONS): a build of scr_child.c of its
|
|
926
|
+
* own, so a program that never passes those options keeps the default
|
|
927
|
+
* object, byte for byte. */
|
|
928
|
+
childOptionExt: rule({
|
|
929
|
+
fns: ["cp.spawnSyncExt", "cp.spawnSyncExtEnv", "cp.execFileCwd"],
|
|
930
|
+
}),
|
|
758
931
|
/** scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
|
|
759
932
|
* process-warning unit, and unknown output encodings render through the
|
|
760
933
|
* inspect unit. WebCrypto's encrypt, decrypt, wrapKey and unwrapKey
|
|
@@ -821,6 +994,10 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
821
994
|
(node.name === "promise.allSettled" || node.name === "promise.any")) ||
|
|
822
995
|
(node.kind === "dynFrom" && boxesPromise(node.value.type, tables(), new Set())),
|
|
823
996
|
}),
|
|
997
|
+
/** The Promise statics through Function.prototype.call with a foreign
|
|
998
|
+
* constructor (scr_js_promise_generic.c): NewPromiseCapability(C), the
|
|
999
|
+
* C.resolve lookup and the iterator protocol. */
|
|
1000
|
+
promiseGeneric: rule({ fns: ["promise.genericStatic"] }),
|
|
824
1001
|
/** EventEmitter and the stream classes as untyped constructor values
|
|
825
1002
|
* (scr_dyn_builtin_class.c), which call listeners through the dyn-invoke
|
|
826
1003
|
* unit, render unhandled 'error' payloads through the inspect unit and
|
|
@@ -832,25 +1009,55 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
832
1009
|
* half (scr_dyn_builtin_stream.c): native stream state for constructor
|
|
833
1010
|
* functions, over the stream unit. */
|
|
834
1011
|
dynBuiltinStream: rule({ fns: ["dyn.builtinStreamClass"] }),
|
|
1012
|
+
/** A standard library prototype object read as a value in a JavaScript
|
|
1013
|
+
* source (scr_dyn_stdlib_prototype.c): `Date.prototype`. */
|
|
1014
|
+
stdlibPrototypeValue: rule({ fns: ["dyn.stdlibPrototype"] }),
|
|
1015
|
+
/** The dynamic global object's answer for the Node globals the native
|
|
1016
|
+
* runtime does not implement (scr_global_host_absent.c, plus the
|
|
1017
|
+
* SCR_GLOBAL_HOST_ABSENT build of scr_node_builtin.c): a computed read of
|
|
1018
|
+
* the global object, or `… in globalThis` (host-globals.ts). */
|
|
1019
|
+
hostAbsentGlobals: rule({ fns: ["global.hostAbsent", "dyn.globalHas"] }),
|
|
1020
|
+
/** Array.prototype's generic algorithms over array-like receivers
|
|
1021
|
+
* (scr_dyn_array_like.c), which delegates every other name to the
|
|
1022
|
+
* dyn-invoke unit's array dispatch. */
|
|
1023
|
+
arrayLikeDispatch: rule({ fns: ["dyn.arrayLikeProtoCall"] }),
|
|
1024
|
+
/** Number.prototype and Boolean.prototype as values
|
|
1025
|
+
* (scr_dyn_builtin_prototype.c). */
|
|
1026
|
+
builtinPrototypeValue: rule({ fns: ["dyn.builtinPrototype"] }),
|
|
835
1027
|
dynInvoke: rule({
|
|
836
1028
|
initial: (mod) => mod.workers === true,
|
|
1029
|
+
scan: computedBufferMemberScan,
|
|
837
1030
|
fns: [
|
|
838
1031
|
...DYN_INVOKE_LIB_FNS,
|
|
839
1032
|
...UTIL_CALLABLE_LIB_FNS,
|
|
840
1033
|
...BUILTIN_CLASS_LIB_FNS,
|
|
841
1034
|
"util.promisifyDyn",
|
|
842
1035
|
"buffer.prototypeMember",
|
|
1036
|
+
"buffer.prototypeObject",
|
|
843
1037
|
// scr_webstreams.c calls the iterators ReadableStream.from reads.
|
|
844
1038
|
"webstream.class",
|
|
845
1039
|
"webstream.instanceOf",
|
|
846
1040
|
"webstream.install",
|
|
1041
|
+
// scr_js_wrapper.c answers other values' tags through
|
|
1042
|
+
// scr_dyn_object_tag_of, and its prototype methods call scr_dyn_invoke.
|
|
1043
|
+
"wrapper.objectTag",
|
|
1044
|
+
"wrapper.new",
|
|
1045
|
+
"wrapper.toObject",
|
|
1046
|
+
// The Boolean prototype's methods run scr_js_wrapper_apply in the
|
|
1047
|
+
// same unit, which calls scr_dyn_invoke.
|
|
1048
|
+
"wrapper.booleanPrototype",
|
|
1049
|
+
// The generic Promise statics call C's resolve and the iterable's
|
|
1050
|
+
// next/return through scr_dyn_invoke.
|
|
1051
|
+
"promise.genericStatic",
|
|
847
1052
|
],
|
|
848
|
-
// Constant-key reads of Object.prototype member names
|
|
849
|
-
// inherited member
|
|
1053
|
+
// Constant-key reads of Object.prototype member names, and of
|
|
1054
|
+
// Array.prototype method names on arrays, answer the inherited member
|
|
1055
|
+
// through scr_dyn_invoke.c.
|
|
850
1056
|
expr: (node, _tables) => node.kind === "dynInvoke" ||
|
|
851
1057
|
(node.kind === "dynKeyGet" &&
|
|
852
1058
|
node.key.kind === "strLit" &&
|
|
853
|
-
INHERITED_MEMBER_NAMES.has(node.key.value)
|
|
1059
|
+
(INHERITED_MEMBER_NAMES.has(node.key.value) ||
|
|
1060
|
+
ARRAY_PROTOTYPE_MEMBER_NAMES.has(node.key.value))),
|
|
854
1061
|
}),
|
|
855
1062
|
/** The program has dynamic-tier jsval operations (js.* builtins, the
|
|
856
1063
|
* jsval pass): links the scr_js_* units (two-tier design I3). */
|
|
@@ -874,13 +1081,36 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
874
1081
|
typeOrigins: rule({ initial: (mod) => (mod.declOrigins?.length ?? 0) > 0 }),
|
|
875
1082
|
/** for await over checked-dynamic values (scr_dyn_for_await.c). */
|
|
876
1083
|
dynForAwait: rule({ fns: ["dyn.asyncIteratorOpen", "dyn.asyncIteratorWasSync"] }),
|
|
1084
|
+
/** Object.isExtensible and Object.isSealed of a value typed dynamically
|
|
1085
|
+
* (scr_dyn_integrity.c, a unit of its own so scr_json.c keeps its layout). */
|
|
1086
|
+
dynIntegrityQueries: rule({ fns: ["dyn.isExtensibleQuery", "dyn.isSealedQuery"] }),
|
|
1087
|
+
/** A generator that binds its parameters at the call (scr_gen_bind.c):
|
|
1088
|
+
* the spawn wrapper's eager step imports the bind helper, and every other
|
|
1089
|
+
* program links the default runtime objects. */
|
|
1090
|
+
genBind: rule({
|
|
1091
|
+
initial: (mod) => mod.functions.some((fn) => fn.generator?.bindAtCall === true),
|
|
1092
|
+
}),
|
|
877
1093
|
/** Buffer.prototype methods called on checked-dynamic values
|
|
878
1094
|
* (scr_bytes_dyn.c). */
|
|
879
1095
|
dynBuffer: rule({
|
|
880
|
-
// Buffer.prototype members read as values
|
|
881
|
-
|
|
1096
|
+
// Buffer.prototype members read as values, and Buffer members read with
|
|
1097
|
+
// a computed key, dispatch to the same entries.
|
|
1098
|
+
fns: ["buffer.prototypeMember", "buffer.prototypeObject"],
|
|
1099
|
+
scan: computedBufferMemberScan,
|
|
882
1100
|
expr: (node, _tables) => node.kind === "dynInvoke" && DYN_BUFFER_METHODS.has(node.method),
|
|
883
1101
|
}),
|
|
1102
|
+
/** Checked-dynamic reads that answer Buffer.prototype methods by name
|
|
1103
|
+
* (`buf[name]`, `buf.indexOf` as a value, Buffer.prototype): the program
|
|
1104
|
+
* installs scr_bytes_dyn.c's member hook, which references every
|
|
1105
|
+
* scr_dyn_invoke_buffer entry. */
|
|
1106
|
+
dynBufferMembers: rule({
|
|
1107
|
+
fns: ["buffer.prototypeMember", "buffer.prototypeObject"],
|
|
1108
|
+
scan: computedBufferMemberScan,
|
|
1109
|
+
}),
|
|
1110
|
+
/** Buffer.prototype as a value: the program installs the symbol unit's
|
|
1111
|
+
* Symbol.for for scr_bytes_dyn.c, which registers
|
|
1112
|
+
* Symbol(nodejs.util.inspect.custom) as one of its keys. */
|
|
1113
|
+
bufferPrototypeObject: rule({ fns: ["buffer.prototypeObject"] }),
|
|
884
1114
|
/** createRequire's require and require.resolve with specifiers computed
|
|
885
1115
|
* at run time (scr_require.c). */
|
|
886
1116
|
computedRequire: rule({ fns: ["module.requireComputed", "module.resolveComputed"] }),
|
|
@@ -894,6 +1124,14 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
894
1124
|
"buffer.installValue",
|
|
895
1125
|
"buffer.staticValue",
|
|
896
1126
|
"buffer.prototypeMember",
|
|
1127
|
+
"buffer.prototypeObject",
|
|
1128
|
+
"dyn.validateString",
|
|
1129
|
+
"dyn.validateStrings",
|
|
1130
|
+
"path.resolveValue",
|
|
1131
|
+
"path.parseValue",
|
|
1132
|
+
"path.formatValue",
|
|
1133
|
+
"path.toNamespacedValue",
|
|
1134
|
+
"dyn.installBuiltinStatics",
|
|
897
1135
|
],
|
|
898
1136
|
}),
|
|
899
1137
|
/** The stream unit emits through the emitter unit, also when the
|
|
@@ -939,6 +1177,9 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
939
1177
|
fetch: rule({ prefixes: ["fetch."] }),
|
|
940
1178
|
fileHandle: rule({ types: ["fileHandle"] }),
|
|
941
1179
|
fsWatch: rule({ prefixes: ["fs.watch", "watcher."], types: ["fsWatcher"] }),
|
|
1180
|
+
/** fs.watchFile / fs.unwatchFile (scr_watch_file.c): the stat-polling
|
|
1181
|
+
* half of the watching surface, gated on its own unit. */
|
|
1182
|
+
fsWatchFile: rule({ fns: ["fs.watchFile", "fs.unwatchFile"] }),
|
|
942
1183
|
/** A socket 'lookup' listener: the C main installs the net unit's
|
|
943
1184
|
* lookup records (scr_net_lookup_install). */
|
|
944
1185
|
netLookup: rule({ fns: ["net.sockOnLookup"] }),
|
|
@@ -952,6 +1193,12 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
952
1193
|
libCall: (node) => node.fn.startsWith("http2.") && !HTTP2_LEGACY_FNS.has(node.fn),
|
|
953
1194
|
types: ["http2Session", "http2Stream"],
|
|
954
1195
|
}),
|
|
1196
|
+
/** Intl over ICU: scr_intl.c plus the ICU archive and the data
|
|
1197
|
+
* file that ships beside the executable. The prefix is `icu.` because the
|
|
1198
|
+
* `intl.` libCalls are the engine-free fast paths — the embedded en-US
|
|
1199
|
+
* number format and the table-driven grapheme segmenter — which must keep
|
|
1200
|
+
* linking no ICU code. */
|
|
1201
|
+
icu: rule({ prefixes: ["icu."] }),
|
|
955
1202
|
/** scr_test.c renders thrown strings with the inspect unit's string
|
|
956
1203
|
* formatting; scr_util_callable.c wraps the inspect unit; readline's
|
|
957
1204
|
* terminal unit prints completion errors through it when there is a
|
|
@@ -959,10 +1206,17 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
959
1206
|
inspect: rule({
|
|
960
1207
|
fns: [
|
|
961
1208
|
"global.native",
|
|
1209
|
+
// formatBigInt renders a bigint's digits in Node's form, and the
|
|
1210
|
+
// numericSeparator groups they take are inspect state.
|
|
1211
|
+
"bigint.inspect",
|
|
962
1212
|
// ERR_ARG_NOT_ITERABLE renders the value as util.format's %s does.
|
|
963
1213
|
"webstream.class",
|
|
1214
|
+
// ERR_UNKNOWN_ENCODING formats an encoding that is not a string with %s.
|
|
1215
|
+
"strdec.encodingValue",
|
|
964
1216
|
"webstream.install",
|
|
965
1217
|
"util.styleText",
|
|
1218
|
+
// ERR_UNHANDLED_ERROR quotes util.inspect of a non-Error payload.
|
|
1219
|
+
"emitter.emitErrorValue",
|
|
966
1220
|
"crypto.cipherNew",
|
|
967
1221
|
"webcrypto.encrypt",
|
|
968
1222
|
"webcrypto.decrypt",
|
|
@@ -977,6 +1231,13 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
977
1231
|
prefixes: ["insp.", "console.", "test."],
|
|
978
1232
|
libCall: (node) => node.fn === "rl.terminal" && !isDynUndefined(node.args[3]),
|
|
979
1233
|
}),
|
|
1234
|
+
/** The JavaScript object model build (t262-da §J): every runtime feature
|
|
1235
|
+
* only a JavaScript source reaches shares one SCR_JS_OBJECT_MODEL build
|
|
1236
|
+
* of the units it touches, so a program with one of them selects that
|
|
1237
|
+
* build rather than a variant column of its own. The program has no
|
|
1238
|
+
* typed-to-dynamic bridge of its own to lose: jsObjectModel implies
|
|
1239
|
+
* dynTier. */
|
|
1240
|
+
jsObjectModel: rule({ fns: [...JS_OBJECT_MODEL_LIB_FNS] }),
|
|
980
1241
|
legacyTextDecoder: rule({
|
|
981
1242
|
fns: [...LEGACY_TEXT_DECODER_LIB_FNS],
|
|
982
1243
|
expr: (node, tables) => (node.kind === "dynFrom" && mentionsTextDecoder(node.value.type, tables())) ||
|
|
@@ -1029,6 +1290,9 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
1029
1290
|
...UTIL_CALLABLE_LIB_FNS,
|
|
1030
1291
|
"rl.terminal",
|
|
1031
1292
|
"str.localeCase",
|
|
1293
|
+
// win32.relative compares with String.prototype.toLowerCase's
|
|
1294
|
+
// Unicode case mapping.
|
|
1295
|
+
"path.win32Relative",
|
|
1032
1296
|
],
|
|
1033
1297
|
prefixes: URL_PREFIXES,
|
|
1034
1298
|
expr: (node, _tables) => node.kind === "regexLit" ||
|
|
@@ -1051,6 +1315,18 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
1051
1315
|
expr: (node, _tables) => (node.kind === "dynInvoke" && STDIO_EXTENDED_NAMES.has(node.method)) ||
|
|
1052
1316
|
(node.kind === "strLit" && STDIO_EXTENDED_NAMES.has(node.value)),
|
|
1053
1317
|
}),
|
|
1318
|
+
/** A write completion callback that takes the error argument lowers
|
|
1319
|
+
* through writable.writeEcb: the SCR_STREAM_WRITE_ERRORS stream unit
|
|
1320
|
+
* publishes the error the adapter delivers. */
|
|
1321
|
+
streamWriteErrors: rule({ fns: ["writable.writeEcb"] }),
|
|
1322
|
+
/** The program reaches the process output streams' write slot — the
|
|
1323
|
+
* write method as a value (process.stdioSlot), its replacement, a patched
|
|
1324
|
+
* program's typed writes, or a run-time-typed chunk
|
|
1325
|
+
* (process.stdioWriteDyn): the SCR_STDIO_WRITE_SLOT build of the events
|
|
1326
|
+
* unit carries the shared write body, the dynamic-chunk entry point and
|
|
1327
|
+
* Node's anonymous write function. Every other program links the default
|
|
1328
|
+
* object, byte for byte. */
|
|
1329
|
+
stdioWriteSlot: rule({ fns: ["process.stdioSlot", "process.stdioWriteDyn"] }),
|
|
1054
1330
|
stream: rule({
|
|
1055
1331
|
initial: (mod) => (mod.classes ?? []).some((c) => RUNTIME_STREAM_CLASSES.has(c.name)),
|
|
1056
1332
|
fns: [...STREAM_LIB_FNS, "dyn.builtinStreamClass"],
|
|
@@ -1061,9 +1337,19 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
1061
1337
|
symbol: rule({
|
|
1062
1338
|
initial: (mod) => (mod.records ?? []).some(isDirentShape),
|
|
1063
1339
|
fns: [...SYMBOL_LIB_FNS],
|
|
1064
|
-
|
|
1340
|
+
// %Iterator.prototype% (scr_js_iterator.c) defines its Symbol.iterator,
|
|
1341
|
+
// Symbol.toStringTag and Symbol.dispose members with the well-known
|
|
1342
|
+
// symbols scr_sym_well_known makes.
|
|
1343
|
+
prefixes: ["sym.", "disposable.", "iterator."],
|
|
1065
1344
|
types: ["symbol"],
|
|
1066
1345
|
}),
|
|
1346
|
+
/** Symbol.toPrimitive is read (sym.wellKnown with that name, or a name
|
|
1347
|
+
* computed at run time): the program installs ToNumber's
|
|
1348
|
+
* Symbol.toPrimitive step (scr_dyn_to_primitive_number_install). */
|
|
1349
|
+
toPrimitiveNumber: rule({
|
|
1350
|
+
libCall: (node) => node.fn === "sym.wellKnown" &&
|
|
1351
|
+
(node.args[0]?.kind !== "strLit" || node.args[0].value === "toPrimitive"),
|
|
1352
|
+
}),
|
|
1067
1353
|
tls: rule({ prefixes: ["tls.", "https.", "http2."], types: ["secureCtx"] }),
|
|
1068
1354
|
tlsCa: rule({ prefixes: ["tlsca."] }),
|
|
1069
1355
|
/** util.promisify over an untyped function (scr_util_promisify.c): its
|
|
@@ -1072,11 +1358,36 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
1072
1358
|
utilPromisify: rule({ fns: ["util.promisifyDyn"] }),
|
|
1073
1359
|
/** process.emitWarning is assigned (process.setEmitWarning). */
|
|
1074
1360
|
warningReplace: rule({ fns: ["process.setEmitWarning"] }),
|
|
1361
|
+
/** A BigInt typed-array constructor read as a value (BigInt64Array,
|
|
1362
|
+
* BigUint64Array): their element kinds, which no double represents, live
|
|
1363
|
+
* in the JavaScript object model build (t262-da §J) of scr_bytes.c,
|
|
1364
|
+
* scr_json.c, scr_dyn_invoke.c and the assert, inspect and console units.
|
|
1365
|
+
* The fact ORs into jsObjectModel (jsObjectModelFact), so it selects no
|
|
1366
|
+
* build column of its own. Every other program keeps the byte-for-byte
|
|
1367
|
+
* default objects. */
|
|
1368
|
+
bigintBytes: rule({
|
|
1369
|
+
libCall: (node) => node.fn === "bytes.constructor" &&
|
|
1370
|
+
node.args[0]?.kind === "strLit" &&
|
|
1371
|
+
BIGINT_BYTES_NAMES.has(node.args[0].value),
|
|
1372
|
+
}),
|
|
1075
1373
|
/** Module namespace objects as checked-dynamic values
|
|
1076
1374
|
* (scr_module_namespace.c). */
|
|
1077
1375
|
moduleNamespace: rule({ fns: ["module.namespaceValue"] }),
|
|
1376
|
+
/** A JavaScript source resizes, grows or detaches an ArrayBuffer
|
|
1377
|
+
* (frontend/lowering/buffers.ts): the program arms the buffer views
|
|
1378
|
+
* registry, which lives in the gated unit scr_js_buffers.c, and its bytes
|
|
1379
|
+
* headers stop being invariant (IrModule.bytesHeadersMutable). The fact
|
|
1380
|
+
* ORs into jsObjectModel (jsObjectModelFact), so it selects no build
|
|
1381
|
+
* column of its own. Every other program links no part of the unit. */
|
|
1382
|
+
mutableBuffers: rule({
|
|
1383
|
+
fns: ["arrayBuffer.armMutable", "arrayBuffer.newResizable", "sharedArrayBuffer.newGrowable"],
|
|
1384
|
+
}),
|
|
1078
1385
|
/** A module namespace boxed for typed code (scr_module_namespace_dyn.c). */
|
|
1079
1386
|
moduleNamespaceDyn: rule({ fns: ["module.namespaceDyn"] }),
|
|
1387
|
+
/** Primitive wrapper objects (scr_js_wrapper.c). */
|
|
1388
|
+
primitiveWrapper: rule({ prefixes: ["wrapper."] }),
|
|
1389
|
+
/** %Iterator% and %Iterator.prototype% as values (scr_js_iterator.c). */
|
|
1390
|
+
iteratorProto: rule({ prefixes: ["iterator."] }),
|
|
1080
1391
|
/** The WebAssembly API (scr_wasm.c). */
|
|
1081
1392
|
wasm: rule({ prefixes: ["wasm."] }),
|
|
1082
1393
|
/** crypto.subtle importKey/sign/verify/digest and CryptoKey:
|
|
@@ -1110,10 +1421,40 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
1110
1421
|
"tls.sockGetCertificate",
|
|
1111
1422
|
],
|
|
1112
1423
|
}),
|
|
1424
|
+
/** writeFile's `flag` disposition ("w" / "wx") and copyFile's mode
|
|
1425
|
+
* argument: scr_fs_flags.c and the SCR_FS_FLAGS build of scr_fs_cp.c.
|
|
1426
|
+
* Programs that never pass either keep both units' default objects. */
|
|
1427
|
+
fsFlags: rule({
|
|
1428
|
+
fns: [
|
|
1429
|
+
"fs.copyFileFlagsSync",
|
|
1430
|
+
"fs.writeFileFlagsSync",
|
|
1431
|
+
"fsp.copyFileFlags",
|
|
1432
|
+
"fsp.writeFileFlags",
|
|
1433
|
+
],
|
|
1434
|
+
}),
|
|
1435
|
+
/** string_decoder's checked-dynamic chunk forms (a stream "data" payload):
|
|
1436
|
+
* scr_bytes_strdec_dyn.c. */
|
|
1437
|
+
strdecDyn: rule({ fns: ["strdec.nextDyn", "strdec.writeDyn"] }),
|
|
1438
|
+
/** The process and stream event registries' extras — prependListener for
|
|
1439
|
+
* signals, 'exit' and uncaught exceptions, stdin.isRaw, and server.off:
|
|
1440
|
+
* the SCR_PROCESS_EXTRAS builds of scr_events.c and scr_async_dyn.c and
|
|
1441
|
+
* the SCR_NET_SERVER_OFF build of scr_net.c. */
|
|
1442
|
+
processExtras: rule({
|
|
1443
|
+
fns: [
|
|
1444
|
+
"net.serverOff",
|
|
1445
|
+
"process.prependExit",
|
|
1446
|
+
"process.prependSignal",
|
|
1447
|
+
"process.prependUncaughtException",
|
|
1448
|
+
"process.stdinIsRaw",
|
|
1449
|
+
],
|
|
1450
|
+
}),
|
|
1113
1451
|
zlib: rule({ prefixes: ["zlib."] }),
|
|
1114
1452
|
/** node:zlib's Brotli forms: zlib.brotliInstall, which %main calls when
|
|
1115
1453
|
* the program uses Brotli (scr_brotli.c). */
|
|
1116
1454
|
brotli: rule({ fns: ["zlib.brotliInstall"] }),
|
|
1455
|
+
/** node:zlib's zstd forms: zlib.zstdInstall, which %main calls when the
|
|
1456
|
+
* program uses zstd (scr_zstd.c). */
|
|
1457
|
+
zstd: rule({ fns: ["zlib.zstdInstall"] }),
|
|
1117
1458
|
};
|
|
1118
1459
|
const RUNTIME_FEATURE_NAMES = [];
|
|
1119
1460
|
for (const name in RUNTIME_FEATURE_RULES)
|
|
@@ -1135,9 +1476,14 @@ function noRuntimeFeatures() {
|
|
|
1135
1476
|
textCodecDyn: false,
|
|
1136
1477
|
dnsPromises: false,
|
|
1137
1478
|
dynAsync: false,
|
|
1479
|
+
promiseGeneric: false,
|
|
1138
1480
|
dynBuiltinClass: false,
|
|
1139
1481
|
dynBuiltinStream: false,
|
|
1482
|
+
stdlibPrototypeValue: false,
|
|
1483
|
+
hostAbsentGlobals: false,
|
|
1140
1484
|
dynInvoke: false,
|
|
1485
|
+
arrayLikeDispatch: false,
|
|
1486
|
+
builtinPrototypeValue: false,
|
|
1141
1487
|
dynTier: false,
|
|
1142
1488
|
ecdh: false,
|
|
1143
1489
|
x509: false,
|
|
@@ -1147,10 +1493,16 @@ function noRuntimeFeatures() {
|
|
|
1147
1493
|
eventsOnceSignal: false,
|
|
1148
1494
|
fetch: false,
|
|
1149
1495
|
fileHandle: false,
|
|
1496
|
+
fsFlags: false,
|
|
1150
1497
|
fsWatch: false,
|
|
1498
|
+
fsWatchFile: false,
|
|
1499
|
+
genBind: false,
|
|
1151
1500
|
http2: false,
|
|
1152
1501
|
http: false,
|
|
1502
|
+
icu: false,
|
|
1153
1503
|
inspect: false,
|
|
1504
|
+
jsObjectModel: false,
|
|
1505
|
+
mutableBuffers: false,
|
|
1154
1506
|
legacyTextDecoder: false,
|
|
1155
1507
|
mime: false,
|
|
1156
1508
|
webStreams: false,
|
|
@@ -1166,32 +1518,45 @@ function noRuntimeFeatures() {
|
|
|
1166
1518
|
pki: false,
|
|
1167
1519
|
ed25519: false,
|
|
1168
1520
|
processEvents: false,
|
|
1521
|
+
processExtras: false,
|
|
1169
1522
|
qs: false,
|
|
1170
1523
|
regex: false,
|
|
1171
1524
|
searchParams: false,
|
|
1172
1525
|
urlIdna: false,
|
|
1173
1526
|
stdioExtended: false,
|
|
1527
|
+
stdioWriteSlot: false,
|
|
1528
|
+
streamWriteErrors: false,
|
|
1174
1529
|
moduleNamespace: false,
|
|
1175
1530
|
moduleNamespaceDyn: false,
|
|
1531
|
+
primitiveWrapper: false,
|
|
1532
|
+
iteratorProto: false,
|
|
1176
1533
|
stream: false,
|
|
1534
|
+
strdecDyn: false,
|
|
1177
1535
|
streamDyn: false,
|
|
1178
1536
|
handleProps: false,
|
|
1179
1537
|
childLifecycle: false,
|
|
1538
|
+
childOptionExt: false,
|
|
1180
1539
|
declAdopt: false,
|
|
1181
1540
|
typeOrigins: false,
|
|
1182
1541
|
dynForAwait: false,
|
|
1542
|
+
dynIntegrityQueries: false,
|
|
1183
1543
|
dynBuffer: false,
|
|
1544
|
+
dynBufferMembers: false,
|
|
1545
|
+
bufferPrototypeObject: false,
|
|
1184
1546
|
builtinValues: false,
|
|
1185
1547
|
computedRequire: false,
|
|
1186
1548
|
symbol: false,
|
|
1549
|
+
toPrimitiveNumber: false,
|
|
1187
1550
|
tls: false,
|
|
1188
1551
|
tlsCa: false,
|
|
1189
1552
|
utilPromisify: false,
|
|
1190
1553
|
warningReplace: false,
|
|
1554
|
+
bigintBytes: false,
|
|
1191
1555
|
wasm: false,
|
|
1192
1556
|
webcrypto: false,
|
|
1193
1557
|
zlib: false,
|
|
1194
1558
|
brotli: false,
|
|
1559
|
+
zstd: false,
|
|
1195
1560
|
};
|
|
1196
1561
|
}
|
|
1197
1562
|
const ruleOf = (name) => RUNTIME_FEATURE_RULES[name];
|
|
@@ -1233,7 +1598,7 @@ function scanRuntimeFeatures(mod, stopAt, nodes) {
|
|
|
1233
1598
|
if (initial && initial(mod))
|
|
1234
1599
|
features[name] = true;
|
|
1235
1600
|
if (scan)
|
|
1236
|
-
scans.push({ name, scan: scan() });
|
|
1601
|
+
scans.push({ name, scan: scan(mod) });
|
|
1237
1602
|
}
|
|
1238
1603
|
const keepGoing = () => stopAt === undefined || !features[stopAt];
|
|
1239
1604
|
let tables;
|
|
@@ -1287,11 +1652,16 @@ function scanRuntimeFeatures(mod, stopAt, nodes) {
|
|
|
1287
1652
|
if (scan.result())
|
|
1288
1653
|
features[name] = true;
|
|
1289
1654
|
// Inline-cache sites of dynamic-tier functions use the tier's caches
|
|
1290
|
-
// (scr_js_object.c
|
|
1655
|
+
// (scr_js_object.c).
|
|
1291
1656
|
if (!features.dynTier && mod.functions.some((fn) => fn.tier === "dynamic")) {
|
|
1292
1657
|
const sites = new JsIcSites(mod);
|
|
1293
1658
|
features.dynTier = mod.functions.some((fn) => fn.tier === "dynamic" && hasJsIcSite(fn, sites));
|
|
1294
1659
|
}
|
|
1660
|
+
// A jsval parameter or result (ir/jsval.ts) is retained and released
|
|
1661
|
+
// through the tier's word reference counting, with or without a js.*
|
|
1662
|
+
// operation in the body.
|
|
1663
|
+
if (!features.dynTier)
|
|
1664
|
+
features.dynTier = mod.functions.some((fn) => fn.returnType.kind === "jsval" || fn.params.some((p) => p.type.kind === "jsval"));
|
|
1295
1665
|
return features;
|
|
1296
1666
|
}
|
|
1297
1667
|
/** True when the module contains any regex construct — a regexLit /
|
|
@@ -1480,6 +1850,14 @@ export function moduleUsesParseArgs(mod) {
|
|
|
1480
1850
|
export function moduleUsesFsWatch(mod) {
|
|
1481
1851
|
return scanRuntimeFeatures(mod, "fsWatch").fsWatch;
|
|
1482
1852
|
}
|
|
1853
|
+
/** True when the module contains an fs.watchFile/fs.unwatchFile libCall —
|
|
1854
|
+
* the link switch that pulls scr_watch_file.c into the binary and has the
|
|
1855
|
+
* emitted main call scr_watch_file_install (the moduleUsesFsWatch
|
|
1856
|
+
* precedent, one unit of its own). Programs that never poll pay zero bytes
|
|
1857
|
+
* and keep their exact link line. */
|
|
1858
|
+
export function moduleUsesFsWatchFile(mod) {
|
|
1859
|
+
return scanRuntimeFeatures(mod, "fsWatchFile").fsWatchFile;
|
|
1860
|
+
}
|
|
1483
1861
|
/** True when the module contains any test.* libCall or a testCtx handle
|
|
1484
1862
|
* type — the link switch that pulls scr_test.c into the binary and has
|
|
1485
1863
|
* the emitted main return scr_test_exit_code() after the loop drains
|