@scriptc/compiler 0.4.1 → 0.4.3
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/scriptc-node-fallback.d.ts +977 -113
- package/dist/backend/cycle-analysis.d.ts +5 -1
- package/dist/backend/cycle-analysis.js +6 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +55 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +9 -1
- package/dist/backend/cycle-mutability.js +21 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +6 -1
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +7 -3
- package/dist/backend/immutability.js +33 -29
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +5 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +23 -4
- package/dist/backend/llvm/alloc.js +61 -8
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -1
- package/dist/backend/llvm/appended-array-literals.js +44 -36
- package/dist/backend/llvm/appended-array-literals.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +4 -3
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -1
- package/dist/backend/llvm/array-search.d.ts +4 -3
- package/dist/backend/llvm/array-search.js +23 -10
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/blocks.d.ts +1 -1
- package/dist/backend/llvm/blocks.js +2 -2
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/byte-windows.js +2 -0
- package/dist/backend/llvm/byte-windows.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +6 -1
- package/dist/backend/llvm/bytes-alias.js +8 -2
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +70 -7
- package/dist/backend/llvm/bytes-loop-versions.js +567 -30
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +389 -2
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +2 -0
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +74 -1
- package/dist/backend/llvm/classes.js +364 -54
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +384 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +10 -6
- package/dist/backend/llvm/common.js +10 -6
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +2 -1
- package/dist/backend/llvm/constant-callbacks.js +91 -56
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +11 -1
- package/dist/backend/llvm/counted-loops.js +80 -23
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +39 -8
- package/dist/backend/llvm/dense-array-access.js +222 -52
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +36 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +35 -16
- package/dist/backend/llvm/dense-array-loops.js +237 -12
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +140 -15
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js +6 -1
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +51 -1
- package/dist/backend/llvm/dyn.js +683 -69
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +33 -26
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-journal.d.ts +93 -0
- package/dist/backend/llvm/emit-journal.js +170 -0
- package/dist/backend/llvm/emit-journal.js.map +1 -0
- package/dist/backend/llvm/emit-module.js +208 -34
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +0 -27
- package/dist/backend/llvm/emit-statements.js +577 -93
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter-state.d.ts +7 -0
- package/dist/backend/llvm/emitter-state.js +14 -0
- package/dist/backend/llvm/emitter-state.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +314 -49
- package/dist/backend/llvm/emitter.js +1241 -129
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +54 -5
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +144 -52
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +47 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +62 -36
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +14 -2
- package/dist/backend/llvm/expr-containers.js +148 -40
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +14 -0
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +71 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +126 -36
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +11 -6
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +12 -0
- package/dist/backend/llvm/expr-records.js +106 -0
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-bridges.js +225 -64
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +200 -50
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-kind-loops.d.ts +39 -0
- package/dist/backend/llvm/int32-kind-loops.js +106 -0
- package/dist/backend/llvm/int32-kind-loops.js.map +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.d.ts +1 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js +118 -0
- package/dist/backend/llvm/integer-or-nan-indexes.test.js.map +1 -0
- package/dist/backend/llvm/integer-values.d.ts +20 -1
- package/dist/backend/llvm/integer-values.js +71 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +1 -1
- package/dist/backend/llvm/js-ic.js +1 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/key-orders.d.ts +7 -0
- package/dist/backend/llvm/key-orders.js +33 -0
- package/dist/backend/llvm/key-orders.js.map +1 -0
- package/dist/backend/llvm/lib-connect.js +4 -0
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +11 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +90 -2
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +65 -4
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +24 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +16 -6
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +65 -14
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +126 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -30
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +181 -64
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +28 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +33 -0
- package/dist/backend/llvm/loop-state.js +42 -0
- package/dist/backend/llvm/loop-state.js.map +1 -0
- package/dist/backend/llvm/map-number-lookup.d.ts +26 -8
- package/dist/backend/llvm/map-number-lookup.js +91 -31
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +55 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.js +4 -2
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.d.ts +2 -1
- package/dist/backend/llvm/nullable-unions.js +15 -3
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +18 -1
- package/dist/backend/llvm/publish.js +76 -25
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +7 -2
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +1 -9
- package/dist/backend/llvm/record-results.js +2 -11
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +7 -2
- package/dist/backend/llvm/reference-writes.js +91 -72
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/running-extrema.d.ts +11 -0
- package/dist/backend/llvm/running-extrema.js +115 -0
- package/dist/backend/llvm/running-extrema.js.map +1 -0
- package/dist/backend/llvm/running-extrema.test.d.ts +1 -0
- package/dist/backend/llvm/running-extrema.test.js +89 -0
- package/dist/backend/llvm/running-extrema.test.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +79 -21
- package/dist/backend/llvm/shapes.js +233 -42
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +53 -7
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +6 -0
- package/dist/backend/llvm/speculative-integers.js +2 -2
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +3 -2
- package/dist/backend/llvm/stack-objects.js +5 -2
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +15 -0
- package/dist/backend/llvm/string-reads.js +128 -0
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/walk-borrows.d.ts +3 -0
- package/dist/backend/llvm/walk-borrows.js +46 -41
- package/dist/backend/llvm/walk-borrows.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +3 -0
- package/dist/backend/llvm/walkers.js +88 -65
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/llvm/wrapping-sums.d.ts +16 -1
- package/dist/backend/llvm/wrapping-sums.js +126 -0
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +8 -10
- package/dist/backend/may-throw.js +14 -10
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +27 -4
- package/dist/backend/native/executable.js +31 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -0
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +11 -6
- package/dist/backend/native-codegen.js +36 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +0 -23
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +18 -4
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/optimization.d.ts +2 -2
- package/dist/backend/publication.d.ts +12 -1
- package/dist/backend/publication.js +37 -14
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/publication.test.js +30 -0
- package/dist/backend/publication.test.js.map +1 -1
- package/dist/backend/result-slots.d.ts +16 -0
- package/dist/backend/result-slots.js +23 -0
- package/dist/backend/result-slots.js.map +1 -0
- 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 +2 -1
- package/dist/backend/runtime-pack-core.js +2 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +5 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +10 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +2 -1
- package/dist/backend/stack-observations.js +67 -42
- package/dist/backend/stack-observations.js.map +1 -1
- package/dist/backend/target-diagnostics.js +33 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +4 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +26 -6
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/usage.d.ts +5 -1
- package/dist/cli/usage.js +10 -5
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +1 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +5 -4
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.js +10 -2
- package/dist/contracts/int32-elements.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +30 -3
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +4 -0
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +5 -1
- package/dist/diagnostics/envelope.js +6 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +25 -1
- package/dist/executable/executable-cache.js +60 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +46 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/decl-projection.d.ts +41 -0
- package/dist/frontend/decl-projection.js +854 -0
- package/dist/frontend/decl-projection.js.map +1 -0
- package/dist/frontend/decl-projection.test.d.ts +1 -0
- package/dist/frontend/decl-projection.test.js +30 -0
- package/dist/frontend/decl-projection.test.js.map +1 -0
- package/dist/frontend/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +15 -0
- package/dist/frontend/dts-paths.js +25 -0
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +6 -0
- package/dist/frontend/input-tracker.js +51 -28
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +19 -0
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +103 -4
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +46 -15
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +13 -2
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +4 -2
- package/dist/frontend/lowering/builtins/crypto.js +136 -5
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +12 -1
- package/dist/frontend/lowering/builtins/ecdh.js +7 -7
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.d.ts +3 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js +122 -0
- package/dist/frontend/lowering/builtins/global-namespace-keys.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +2 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +18 -6
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.js +3 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +6 -0
- package/dist/frontend/lowering/builtins/promises.js +91 -4
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js +2 -1
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +7 -2
- package/dist/frontend/lowering/builtins/readline.js +58 -9
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +1 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +28 -4
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +6 -3
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +13 -6
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-callbacks.d.ts +5 -2
- package/dist/frontend/lowering/class-callbacks.js +82 -12
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +6 -2
- package/dist/frontend/lowering/class-construction.js +25 -16
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +73 -2
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1334 -259
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +124 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +2 -1
- package/dist/frontend/lowering/class-iterables.js +9 -1
- package/dist/frontend/lowering/class-iterables.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +35 -9
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +7 -0
- package/dist/frontend/lowering/class-protocols.js +64 -4
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +67 -5
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +9 -3
- package/dist/frontend/lowering/class-runtime-statics.js +29 -4
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.js +25 -5
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +6 -5
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +48 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +99 -8
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js +2 -2
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +7 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +352 -31
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +12 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +25 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +21 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +21 -9
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
- package/dist/frontend/lowering/containers/bytes.js +131 -29
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +15 -9
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +6 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +205 -0
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -0
- package/dist/frontend/lowering/containers/indexed-objects.d.ts +0 -12
- package/dist/frontend/lowering/containers/indexed-objects.js +54 -14
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +87 -14
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +45 -20
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.js +25 -4
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +218 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/divergences.js +9 -1
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +51 -2
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +81 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +107 -14
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +79 -11
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +130 -6
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +3 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -3
- package/dist/frontend/lowering/expressions/object-literals.js +164 -56
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +17 -5
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +0 -4
- package/dist/frontend/lowering/expressions/property-access.js +211 -17
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +267 -30
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js +4 -0
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +85 -12
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +28 -0
- package/dist/frontend/lowering/frozen-records.js +322 -0
- package/dist/frontend/lowering/frozen-records.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +49 -0
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +42 -1
- package/dist/frontend/lowering/generic-functions.js +455 -20
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-values.d.ts +49 -0
- package/dist/frontend/lowering/iterable-values.js +297 -0
- package/dist/frontend/lowering/iterable-values.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +195 -9
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +8 -0
- package/dist/frontend/lowering/js-class-fields.js +45 -10
- package/dist/frontend/lowering/js-class-fields.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +24 -4
- package/dist/frontend/lowering/key-order-witness.js +790 -25
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +466 -10
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +7 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +11 -0
- package/dist/frontend/lowering/lower-calls.js +776 -126
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +29 -2
- package/dist/frontend/lowering/lower-classes.js +581 -46
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +6 -3
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +126 -13
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.d.ts +11 -0
- package/dist/frontend/lowering/lower-functions.js +387 -72
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +41 -31
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +6 -3
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +28 -12
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +47 -5
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +9 -4
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +239 -61
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +5 -0
- package/dist/frontend/lowering/lower-stdlib.js +42 -10
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +23 -0
- package/dist/frontend/lowering/lower-stmts.js +622 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +20 -2
- package/dist/frontend/lowering/lower-stream.js +2055 -318
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +4 -3
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +197 -29
- package/dist/frontend/lowering/lowerer.js +862 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +11 -1
- package/dist/frontend/lowering/module-namespace-elements.js +82 -5
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/new-target.d.ts +12 -0
- package/dist/frontend/lowering/new-target.js +280 -0
- package/dist/frontend/lowering/new-target.js.map +1 -0
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +2 -2
- package/dist/frontend/lowering/static-typeof.js +42 -3
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +60 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/undefined-index.d.ts +27 -0
- package/dist/frontend/lowering/undefined-index.js +82 -0
- package/dist/frontend/lowering/undefined-index.js.map +1 -0
- package/dist/frontend/lowering/var-hoisting.js +66 -16
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +18 -0
- package/dist/frontend/npm-static-bundled-chunks.js +9 -11
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +6 -5
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +9 -1
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +51 -22
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +3 -0
- package/dist/frontend/package-shims.js +71 -8
- package/dist/frontend/package-shims.js.map +1 -1
- package/dist/frontend/pipeline.js +18 -10
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/process-fork.d.ts +25 -0
- package/dist/frontend/process-fork.js +2 -0
- package/dist/frontend/process-fork.js.map +1 -0
- package/dist/frontend/program.d.ts +21 -1
- package/dist/frontend/program.js +586 -74
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +44 -4
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services.d.ts +6 -0
- package/dist/frontend/services.js +18 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/token-equivalence.d.ts +3 -0
- package/dist/frontend/token-equivalence.js +409 -0
- package/dist/frontend/token-equivalence.js.map +1 -0
- package/dist/frontend/token-equivalence.test.d.ts +1 -0
- package/dist/frontend/token-equivalence.test.js +67 -0
- package/dist/frontend/token-equivalence.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +43 -7
- package/dist/frontend/ts7/ast-node.js +1176 -129
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +84 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +29 -3
- package/dist/frontend/ts7/ast-wire.js +144 -31
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.test.js +23 -0
- package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +3 -4
- package/dist/frontend/ts7/checker-backend.js +2 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +5 -9
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +17 -1
- package/dist/frontend/ts7/checker.js +82 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/lib-diagnostics.d.ts +24 -0
- package/dist/frontend/ts7/lib-diagnostics.js +307 -0
- package/dist/frontend/ts7/lib-diagnostics.js.map +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.d.ts +1 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js +199 -0
- package/dist/frontend/ts7/lib-diagnostics.test.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +7 -0
- package/dist/frontend/ts7/program-host.js +30 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +15 -0
- package/dist/frontend/ts7/semantic-model.js +67 -19
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +14 -1
- package/dist/frontend/ts7/session.js +23 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +51 -7
- package/dist/frontend/type-mapper.js +456 -43
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +435 -89
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +5 -3
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +4 -0
- package/dist/ir/array-length-stability.js +26 -6
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +49 -0
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.d.ts +7 -0
- package/dist/ir/builtin-effects.js +80 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +7 -1
- package/dist/ir/builtin-signatures.js +303 -21
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +2 -1
- package/dist/ir/callback-specialization.js +23 -18
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +19 -0
- package/dist/ir/char-unit-locals.js +185 -0
- package/dist/ir/char-unit-locals.js.map +1 -0
- package/dist/ir/char-unit-locals.test.d.ts +1 -0
- package/dist/ir/char-unit-locals.test.js +94 -0
- package/dist/ir/char-unit-locals.test.js.map +1 -0
- package/dist/ir/final-fields.d.ts +3 -1
- package/dist/ir/final-fields.js +15 -17
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +2 -0
- package/dist/ir/function-references.js +2 -0
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +5 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/initializer-bindings.d.ts +2 -1
- package/dist/ir/initializer-bindings.js +27 -20
- package/dist/ir/initializer-bindings.js.map +1 -1
- package/dist/ir/int32-arrays.d.ts +108 -0
- package/dist/ir/int32-arrays.js +831 -0
- package/dist/ir/int32-arrays.js.map +1 -0
- package/dist/ir/int32-slots.d.ts +36 -6
- package/dist/ir/int32-slots.js +370 -171
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +9 -4
- package/dist/ir/integer-loop-facts.js +93 -18
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +202 -40
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +211 -1
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +5 -0
- package/dist/ir/integer-ranges.js +125 -12
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +94 -0
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +87 -9
- package/dist/ir/ir.js +61 -2
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +21 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +19 -2
- package/dist/ir/js-ic.js +95 -11
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +188 -0
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +57 -0
- package/dist/ir/node-index.js +215 -0
- package/dist/ir/node-index.js.map +1 -0
- package/dist/ir/paired-while-loops.d.ts +25 -0
- package/dist/ir/paired-while-loops.js +335 -0
- package/dist/ir/paired-while-loops.js.map +1 -0
- package/dist/ir/paired-while-loops.test.d.ts +1 -0
- package/dist/ir/paired-while-loops.test.js +163 -0
- package/dist/ir/paired-while-loops.test.js.map +1 -0
- package/dist/ir/parameter-versions.d.ts +25 -0
- package/dist/ir/parameter-versions.js +300 -0
- package/dist/ir/parameter-versions.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +60 -15
- package/dist/ir/runtime-features.js +276 -35
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/serialize.d.ts +12 -2
- package/dist/ir/serialize.js +16 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +17 -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.d.ts +2 -0
- package/dist/ir/traverse.js +29 -5
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +171 -45
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +12 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +6 -1
- package/dist/native/cache.js +28 -5
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +16 -2
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +26 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.d.ts +1 -1
- package/dist/native/executable-cache.js +2 -2
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -1
- package/dist/native/prepare.js +123 -31
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +78 -18
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.test.js +6 -1
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/text-file.d.ts +13 -3
- package/dist/native/text-file.js +63 -9
- package/dist/native/text-file.js.map +1 -1
- package/dist/native/text-file.test.d.ts +1 -0
- package/dist/native/text-file.test.js +49 -0
- package/dist/native/text-file.test.js.map +1 -0
- package/dist/native/toolchain.js +4 -4
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +3 -3
- package/dist/native/toolchain.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +21 -21
- package/shims/chalk/v5.ts +688 -0
- package/shims/hono-node-server/v2.ts +645 -0
- package/shims/hot-shots/client.ts +1126 -0
- package/shims/hot-shots/v8-unix-dgram.ts +8 -0
- package/shims/hot-shots/v8.ts +8 -0
- package/shims/undici/core/client.ts +4 -4
- package/surface-manifest.json +44 -52
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { isDirentShape, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_STREAM_CLASSES, } from "./ir.js";
|
|
1
|
+
import { isDirentShape, recordTextCodecClass, RUNTIME_EMITTER_CLASS, RUNTIME_EVENT_CLASS, RUNTIME_EVENT_TARGET_CLASS, RUNTIME_STREAM_CLASSES, } from "./ir.js";
|
|
2
2
|
import { everyModuleNode } from "./traverse.js";
|
|
3
|
+
import { eachNodeOfKinds } from "./node-index.js";
|
|
3
4
|
import { JsIcSites, hasJsIcSite } from "./js-ic.js";
|
|
4
|
-
|
|
5
|
-
* spellings) a checked-dynamic method call routes to scr_bytes_dyn.c. */
|
|
6
|
-
export const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) => [
|
|
5
|
+
const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) => [
|
|
7
6
|
...["UInt", "Uint"].flatMap((u) => ["8", "16LE", "16BE", "32LE", "32BE"].map((w) => `${rw}${u}${w}`)),
|
|
8
7
|
...[
|
|
9
8
|
"Int8",
|
|
@@ -17,6 +16,43 @@ export const DYN_BUFFER_NUM_METHODS = new Set(["read", "write"].flatMap((rw) =>
|
|
|
17
16
|
"DoubleBE",
|
|
18
17
|
].map((n) => `${rw}${n}`),
|
|
19
18
|
]));
|
|
19
|
+
/** Buffer.prototype members scr_bytes_dyn.c refuses on Buffer receivers. */
|
|
20
|
+
const DYN_BUFFER_REFUSED_METHODS = [
|
|
21
|
+
...["read", "write"].flatMap((rw) => [
|
|
22
|
+
...["UIntLE", "UIntBE", "UintLE", "UintBE", "IntLE", "IntBE"].map((n) => `${rw}${n}`),
|
|
23
|
+
...["BigUInt64", "BigUint64", "BigInt64"].flatMap((n) => [`${rw}${n}LE`, `${rw}${n}BE`]),
|
|
24
|
+
]),
|
|
25
|
+
...["ascii", "base64", "base64url", "latin1", "hex", "ucs2", "utf8"].flatMap((enc) => [
|
|
26
|
+
`${enc}Slice`,
|
|
27
|
+
`${enc}Write`,
|
|
28
|
+
]),
|
|
29
|
+
"inspect",
|
|
30
|
+
];
|
|
31
|
+
/** The scr_bytes_dyn.c entry, one per method family, that a checked-dynamic
|
|
32
|
+
* call of a Buffer.prototype method name routes to: the fixed-width reads and
|
|
33
|
+
* writes (both "UInt" and "Uint" spellings), write, fill, toString, the
|
|
34
|
+
* searches, and the other Buffer-only members. Each runs the method on a
|
|
35
|
+
* Buffer receiver and gives any other receiver the ordinary dispatch. */
|
|
36
|
+
export const DYN_BUFFER_METHODS = new Map([
|
|
37
|
+
...[...DYN_BUFFER_NUM_METHODS].map((m) => [m, "scr_dyn_invoke_buffer_num"]),
|
|
38
|
+
["write", "scr_dyn_invoke_buffer_write"],
|
|
39
|
+
["fill", "scr_dyn_invoke_buffer_fill"],
|
|
40
|
+
["toString", "scr_dyn_invoke_buffer_to_string"],
|
|
41
|
+
...["indexOf", "lastIndexOf", "includes"].map((m) => [
|
|
42
|
+
m,
|
|
43
|
+
"scr_dyn_invoke_buffer_search",
|
|
44
|
+
]),
|
|
45
|
+
...[
|
|
46
|
+
"toJSON",
|
|
47
|
+
"equals",
|
|
48
|
+
"compare",
|
|
49
|
+
"copy",
|
|
50
|
+
"swap16",
|
|
51
|
+
"swap32",
|
|
52
|
+
"swap64",
|
|
53
|
+
...DYN_BUFFER_REFUSED_METHODS,
|
|
54
|
+
].map((m) => [m, "scr_dyn_invoke_buffer"]),
|
|
55
|
+
]);
|
|
20
56
|
const DYN_ASYNC_LIB_FNS = new Set([
|
|
21
57
|
// DEP0040 rides the dyn-async unit's warning machinery.
|
|
22
58
|
"async.awaitDyn",
|
|
@@ -24,6 +60,8 @@ const DYN_ASYNC_LIB_FNS = new Set([
|
|
|
24
60
|
"child.propsInstall",
|
|
25
61
|
"child.propsResolve",
|
|
26
62
|
"crypto.native",
|
|
63
|
+
// The crypto global's object extends crypto.native's.
|
|
64
|
+
"webcrypto.object",
|
|
27
65
|
"dyn.promiseAll",
|
|
28
66
|
"dyn.promiseAllSettled",
|
|
29
67
|
"dyn.promiseAny",
|
|
@@ -156,6 +194,21 @@ const ABORT_SIGNAL_LIB_FNS = new Set([
|
|
|
156
194
|
/** Entry points that link the stream unit (with STREAM_LIB_PREFIXES). */
|
|
157
195
|
const STREAM_LIB_FNS = new Set([
|
|
158
196
|
"child.stdioStream",
|
|
197
|
+
"stream.chunkDone",
|
|
198
|
+
"stream.objectMode",
|
|
199
|
+
"stream.decodeStrings",
|
|
200
|
+
"stream.optionValues",
|
|
201
|
+
"stream.checkEncodingOption",
|
|
202
|
+
"stream.duplexFromGen",
|
|
203
|
+
"stream.duplexFromDyn",
|
|
204
|
+
"stream.duplexFromPromise",
|
|
205
|
+
"stream.duplexFromAsyncFn",
|
|
206
|
+
"stream.duplexFromGenSignal",
|
|
207
|
+
"stream.duplexFromAsyncFnSignal",
|
|
208
|
+
"fetch.readableFromWeb",
|
|
209
|
+
"stream.duplexifyReadable",
|
|
210
|
+
"stream.duplexifyWritable",
|
|
211
|
+
"stream.duplexifyPair",
|
|
159
212
|
"console.bind",
|
|
160
213
|
"crypto.hashStream",
|
|
161
214
|
"crypto.hashStreamPiped",
|
|
@@ -168,6 +221,7 @@ const STREAM_LIB_FNS = new Set([
|
|
|
168
221
|
"sp.finished",
|
|
169
222
|
"sp.pipeline",
|
|
170
223
|
"sp.pipelineStages",
|
|
224
|
+
"sp.pipelineStagesOpts",
|
|
171
225
|
"stream.addAbortSignal",
|
|
172
226
|
"stream.addAbortSignalFn",
|
|
173
227
|
"stream.destroy",
|
|
@@ -179,6 +233,7 @@ const STREAM_LIB_FNS = new Set([
|
|
|
179
233
|
"stream.prop",
|
|
180
234
|
"stream.stdioWritable",
|
|
181
235
|
"stream.unboxDyn",
|
|
236
|
+
"stream.handleStream",
|
|
182
237
|
"stream.unpipeDyn",
|
|
183
238
|
"stream.workerStdio",
|
|
184
239
|
]);
|
|
@@ -193,6 +248,7 @@ const STREAM_LIB_PREFIXES = [
|
|
|
193
248
|
"sp.pipelineOpts",
|
|
194
249
|
"stream.finishedOpts",
|
|
195
250
|
"stream.pipelineStages",
|
|
251
|
+
"stream.composeStages",
|
|
196
252
|
"stream.set",
|
|
197
253
|
"transform.",
|
|
198
254
|
"writable.",
|
|
@@ -205,6 +261,12 @@ const READABLE_DYN_ASYNC_LIB_FNS = new Set([
|
|
|
205
261
|
"readable.fromDone",
|
|
206
262
|
"readable.fromDyn",
|
|
207
263
|
"readable.fromIter",
|
|
264
|
+
"stream.duplexFromGen",
|
|
265
|
+
"stream.duplexFromDyn",
|
|
266
|
+
"stream.duplexFromPromise",
|
|
267
|
+
"stream.duplexFromAsyncFn",
|
|
268
|
+
"stream.duplexFromGenSignal",
|
|
269
|
+
"stream.duplexFromAsyncFnSignal",
|
|
208
270
|
]);
|
|
209
271
|
/** libCall name prefixes of the Readable entry points that await through the dyn-async unit. */
|
|
210
272
|
const READABLE_DYN_ASYNC_PREFIXES = ["readable.fromGen", "readable.op"];
|
|
@@ -302,8 +364,10 @@ const COPYING_BYTES_METHODS = new Set([
|
|
|
302
364
|
export function isDynUndefined(e) {
|
|
303
365
|
return e.kind === "dynFrom" && e.value.kind === "unitLit" && e.value.unit === "undefined";
|
|
304
366
|
}
|
|
305
|
-
|
|
306
|
-
|
|
367
|
+
/** With `nodes` (the module's node index), the scan reads the recorded
|
|
368
|
+
* expressions and types instead of walking the module. */
|
|
369
|
+
export function moduleRuntimeFeatures(mod, nodes) {
|
|
370
|
+
return scanRuntimeFeatures(mod, undefined, nodes);
|
|
307
371
|
}
|
|
308
372
|
/** Whether boxing a value of type `t` as dyn boxes a promise, which goes
|
|
309
373
|
* through scr_async_dyn.c: a promise, a function whose result type holds
|
|
@@ -363,22 +427,23 @@ function boxesPromise(t, tables, seen) {
|
|
|
363
427
|
return false;
|
|
364
428
|
}
|
|
365
429
|
}
|
|
366
|
-
/** Whether `t` carries a
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
function
|
|
430
|
+
/** Whether `t` carries a leaf, given the carrier sets so far: structural
|
|
431
|
+
* through functions (parameters and result), promises and collections;
|
|
432
|
+
* named records, unions and class instances by the sets. */
|
|
433
|
+
function carriesLeaf(t, carriers, leaf, tables) {
|
|
434
|
+
if (leaf(t, tables))
|
|
435
|
+
return true;
|
|
370
436
|
switch (t.kind) {
|
|
371
|
-
case "dgramSocket":
|
|
372
|
-
return true;
|
|
373
437
|
case "func":
|
|
374
|
-
return t.params.some((p) =>
|
|
438
|
+
return (t.params.some((p) => carriesLeaf(p, carriers, leaf, tables)) ||
|
|
439
|
+
carriesLeaf(t.ret, carriers, leaf, tables));
|
|
375
440
|
case "promise":
|
|
376
|
-
return
|
|
441
|
+
return carriesLeaf(t.inner, carriers, leaf, tables);
|
|
377
442
|
case "array":
|
|
378
443
|
case "set":
|
|
379
|
-
return
|
|
444
|
+
return carriesLeaf(t.elem, carriers, leaf, tables);
|
|
380
445
|
case "map":
|
|
381
|
-
return
|
|
446
|
+
return (carriesLeaf(t.key, carriers, leaf, tables) || carriesLeaf(t.value, carriers, leaf, tables));
|
|
382
447
|
case "record":
|
|
383
448
|
return carriers.records.has(t.shapeId);
|
|
384
449
|
case "union":
|
|
@@ -390,37 +455,65 @@ function carriesDgram(t, carriers) {
|
|
|
390
455
|
return false;
|
|
391
456
|
}
|
|
392
457
|
}
|
|
393
|
-
/** The module's
|
|
458
|
+
/** The module's carriers of `leaf`: a fixpoint over its records, unions and
|
|
394
459
|
* class fields. */
|
|
395
|
-
function
|
|
460
|
+
function leafCarriers(tables, leaf) {
|
|
396
461
|
const carriers = { records: new Set(), unions: new Set(), anyClass: false };
|
|
462
|
+
const carries = (t) => carriesLeaf(t, carriers, leaf, tables);
|
|
397
463
|
for (let changed = true; changed;) {
|
|
398
464
|
changed = false;
|
|
399
465
|
for (const [id, shape] of tables.records)
|
|
400
|
-
if (!carriers.records.has(id) &&
|
|
466
|
+
if (!carriers.records.has(id) &&
|
|
467
|
+
(leaf({ kind: "record", shapeId: id }, tables) || shape.fields.some((f) => carries(f.type)))) {
|
|
401
468
|
carriers.records.add(id);
|
|
402
469
|
changed = true;
|
|
403
470
|
}
|
|
404
471
|
for (const [id, def] of tables.unions)
|
|
405
|
-
if (!carriers.unions.has(id) && def.arms.some(
|
|
472
|
+
if (!carriers.unions.has(id) && def.arms.some(carries)) {
|
|
406
473
|
carriers.unions.add(id);
|
|
407
474
|
changed = true;
|
|
408
475
|
}
|
|
409
476
|
if (!carriers.anyClass &&
|
|
410
|
-
[...tables.classes.values()].some((c) => c.fields.some((f) =>
|
|
477
|
+
[...tables.classes.values()].some((c) => c.fields.some((f) => carries(f.type)))) {
|
|
411
478
|
carriers.anyClass = true;
|
|
412
479
|
changed = true;
|
|
413
480
|
}
|
|
414
481
|
}
|
|
415
482
|
return carriers;
|
|
416
483
|
}
|
|
484
|
+
const dgramLeaf = (t) => t.kind === "dgramSocket";
|
|
417
485
|
/** Whether converting a value of type `t` to or from dyn converts a dgram
|
|
418
486
|
* socket, which goes through scr_dgram_dyn.c: the socket itself, or a
|
|
419
487
|
* function, collection, record, union, promise or class instance that
|
|
420
488
|
* carries one (boxed functions convert their parameters too). */
|
|
421
489
|
function mentionsDgramSocket(t, tables) {
|
|
422
|
-
tables.dgramCarriers ??=
|
|
423
|
-
return
|
|
490
|
+
tables.dgramCarriers ??= leafCarriers(tables, dgramLeaf);
|
|
491
|
+
return carriesLeaf(t, tables.dgramCarriers, dgramLeaf, tables);
|
|
492
|
+
}
|
|
493
|
+
const textCodecLeaf = (t, tables) => {
|
|
494
|
+
if (t.kind !== "record")
|
|
495
|
+
return false;
|
|
496
|
+
const shape = tables.records.get(t.shapeId);
|
|
497
|
+
return shape !== undefined && recordTextCodecClass(shape) !== null;
|
|
498
|
+
};
|
|
499
|
+
const textDecoderLeaf = (t, tables) => {
|
|
500
|
+
if (t.kind !== "record")
|
|
501
|
+
return false;
|
|
502
|
+
const shape = tables.records.get(t.shapeId);
|
|
503
|
+
return shape !== undefined && recordTextCodecClass(shape) === "TextDecoder";
|
|
504
|
+
};
|
|
505
|
+
/** Whether converting a value of type `t` to or from dyn converts a
|
|
506
|
+
* TextEncoder or TextDecoder record, which boxes it as a handle of
|
|
507
|
+
* scr_text_codec_dyn.c (the same carrier walk as dgram sockets). */
|
|
508
|
+
function mentionsTextCodec(t, tables) {
|
|
509
|
+
tables.textCodecCarriers ??= leafCarriers(tables, textCodecLeaf);
|
|
510
|
+
return carriesLeaf(t, tables.textCodecCarriers, textCodecLeaf, tables);
|
|
511
|
+
}
|
|
512
|
+
/** The TextDecoder half: its boxed decode runs scr_text_decode_stream,
|
|
513
|
+
* which reaches the legacy decoders. */
|
|
514
|
+
function mentionsTextDecoder(t, tables) {
|
|
515
|
+
tables.textDecoderCarriers ??= leafCarriers(tables, textDecoderLeaf);
|
|
516
|
+
return carriesLeaf(t, tables.textDecoderCarriers, textDecoderLeaf, tables);
|
|
424
517
|
}
|
|
425
518
|
/** The libCall fns served by the OPTIONAL events unit (scr_events.c):
|
|
426
519
|
* process signal/exit listeners and the piped-stdin surface. */
|
|
@@ -498,6 +591,83 @@ const STDIO_EXTENDED_NAMES = new Set(["setEncoding", "resize"]);
|
|
|
498
591
|
const rule = (r) => r;
|
|
499
592
|
/* The HTTP, HTTPS, HTTP/2 and TLS surfaces, which link the net unit. */
|
|
500
593
|
const NET_PREFIXES = ["net.", "http.", "tls.", "https.", "http2."];
|
|
594
|
+
/** The scr_dh.c entry points (the dh unit). */
|
|
595
|
+
export const DH_LIB_FNS = new Set([
|
|
596
|
+
"crypto.dhNew",
|
|
597
|
+
"crypto.dhGroupNew",
|
|
598
|
+
"crypto.checkPrimeSync",
|
|
599
|
+
"crypto.checkPrimeCb",
|
|
600
|
+
"crypto.generatePrimeSync",
|
|
601
|
+
"crypto.generatePrimeCb",
|
|
602
|
+
]);
|
|
603
|
+
/** The scr_pki.c entry points (the pki unit). */
|
|
604
|
+
export const PKI_LIB_FNS = new Set([
|
|
605
|
+
"crypto.createPrivateKey",
|
|
606
|
+
"crypto.createPublicKey",
|
|
607
|
+
"crypto.createSign",
|
|
608
|
+
"crypto.createVerify",
|
|
609
|
+
"crypto.generateKeyPairCb",
|
|
610
|
+
"crypto.generateKeyPairSync",
|
|
611
|
+
"crypto.signOneshot",
|
|
612
|
+
"crypto.verifyOneshot",
|
|
613
|
+
]);
|
|
614
|
+
/** The WebCrypto algorithms scr_webcrypto_pki.c implements over the pki
|
|
615
|
+
* unit (lowercased). */
|
|
616
|
+
const WEBCRYPTO_ASYMMETRIC_NAMES = new Set([
|
|
617
|
+
"ecdsa",
|
|
618
|
+
"ed25519",
|
|
619
|
+
"rsa-pss",
|
|
620
|
+
"rsassa-pkcs1-v1_5",
|
|
621
|
+
]);
|
|
622
|
+
/** Whether a string literal in the module names Ed25519, without regard
|
|
623
|
+
* to case ("ed25519" for node:crypto, "Ed25519" for WebCrypto): the
|
|
624
|
+
* Ed25519 unit links then, alongside the pki unit. */
|
|
625
|
+
function ed25519NameScan() {
|
|
626
|
+
let named = false;
|
|
627
|
+
return {
|
|
628
|
+
expr: (node) => {
|
|
629
|
+
if (!named && node.kind === "strLit" && node.value.toLowerCase() === "ed25519")
|
|
630
|
+
named = true;
|
|
631
|
+
},
|
|
632
|
+
result: () => named,
|
|
633
|
+
};
|
|
634
|
+
}
|
|
635
|
+
/** moduleUsesWebCryptoAsymmetric's condition as a runtime-feature scan. */
|
|
636
|
+
function webCryptoAsymmetricScan() {
|
|
637
|
+
let webcrypto = false;
|
|
638
|
+
let named = false;
|
|
639
|
+
return {
|
|
640
|
+
expr: (node) => {
|
|
641
|
+
if (node.kind === "libCall" && node.fn.startsWith("webcrypto."))
|
|
642
|
+
webcrypto = true;
|
|
643
|
+
else if (!named &&
|
|
644
|
+
node.kind === "strLit" &&
|
|
645
|
+
WEBCRYPTO_ASYMMETRIC_NAMES.has(node.value.toLowerCase()))
|
|
646
|
+
named = true;
|
|
647
|
+
},
|
|
648
|
+
result: () => webcrypto && named,
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
/** Whether the module calls WebCrypto and a string literal in it names one
|
|
652
|
+
* of the asymmetric algorithms (matched without regard to case, as
|
|
653
|
+
* normalizeAlgorithm matches names): scr_webcrypto_pki.c and the pki unit
|
|
654
|
+
* link then. */
|
|
655
|
+
export function moduleUsesWebCryptoAsymmetric(mod) {
|
|
656
|
+
let webcrypto = false;
|
|
657
|
+
let named = false;
|
|
658
|
+
everyModuleNode(mod, {
|
|
659
|
+
expr: (node) => {
|
|
660
|
+
if (node.kind === "libCall" && node.fn.startsWith("webcrypto."))
|
|
661
|
+
webcrypto = true;
|
|
662
|
+
if (node.kind === "strLit" && WEBCRYPTO_ASYMMETRIC_NAMES.has(node.value.toLowerCase()))
|
|
663
|
+
named = true;
|
|
664
|
+
return !(webcrypto && named);
|
|
665
|
+
},
|
|
666
|
+
stmt: () => !(webcrypto && named),
|
|
667
|
+
type: () => true,
|
|
668
|
+
});
|
|
669
|
+
return webcrypto && named;
|
|
670
|
+
}
|
|
501
671
|
/** One rule per runtime feature, sorted by name. A new feature is an
|
|
502
672
|
* entry here and its line in noRuntimeFeatures; RuntimeFeatures, the scan
|
|
503
673
|
* and its early exit derive from this table. The lists above keep one
|
|
@@ -524,8 +694,17 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
524
694
|
}),
|
|
525
695
|
/** scr_cipher.c over the mbedTLS archive; DEP0182 reports through the
|
|
526
696
|
* process-warning unit, and unknown output encodings render through the
|
|
527
|
-
* inspect unit.
|
|
528
|
-
|
|
697
|
+
* inspect unit. WebCrypto's encrypt, decrypt, wrapKey and unwrapKey
|
|
698
|
+
* (scr_webcrypto_aes.c) link the same archive. */
|
|
699
|
+
cipher: rule({
|
|
700
|
+
fns: [
|
|
701
|
+
"crypto.cipherNew",
|
|
702
|
+
"webcrypto.encrypt",
|
|
703
|
+
"webcrypto.decrypt",
|
|
704
|
+
"webcrypto.wrapKey",
|
|
705
|
+
"webcrypto.unwrapKey",
|
|
706
|
+
],
|
|
707
|
+
}),
|
|
529
708
|
copying: rule({
|
|
530
709
|
expr: (node, _tables) => (node.kind === "arrIntrinsic" && COPYING_ARR_METHODS.has(node.method)) ||
|
|
531
710
|
(node.kind === "bytesIntrinsic" && COPYING_BYTES_METHODS.has(node.method)),
|
|
@@ -540,6 +719,14 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
540
719
|
expr: (node, tables) => (node.kind === "dynFrom" && mentionsDgramSocket(node.value.type, tables())) ||
|
|
541
720
|
(node.kind === "dynCheck" && mentionsDgramSocket(node.type, tables())),
|
|
542
721
|
}),
|
|
722
|
+
/** A TextEncoder or TextDecoder record converts to or from an untyped
|
|
723
|
+
* value (its handle box, or a boxed function, record or collection that
|
|
724
|
+
* carries one): scr_text_codec_dyn.c. */
|
|
725
|
+
textCodecDyn: rule({
|
|
726
|
+
fns: ["text.codecIs"],
|
|
727
|
+
expr: (node, tables) => (node.kind === "dynFrom" && mentionsTextCodec(node.value.type, tables())) ||
|
|
728
|
+
(node.kind === "dynCheck" && mentionsTextCodec(node.type, tables())),
|
|
729
|
+
}),
|
|
543
730
|
/** node:dns/promises: scr_dns_promises.c over the dgram unit. */
|
|
544
731
|
dnsPromises: rule({ fns: ["dns.promisesLookup", "dns.promisesLookupService"] }),
|
|
545
732
|
dynAsync: rule({
|
|
@@ -547,12 +734,17 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
547
734
|
mod.functions.some((fn) => fn.async === true && fn.generator === undefined && fn.returnType.kind === "dyn"),
|
|
548
735
|
// The legacy url functions, crypto.createCipheriv and
|
|
549
736
|
// ecdh.setPublicKey emit their deprecation warnings through the
|
|
550
|
-
// dyn-async unit
|
|
737
|
+
// dyn-async unit (WebCrypto's encrypt and decrypt link scr_cipher.c
|
|
738
|
+
// too); scr_wasm.c boxes its handles and promises through it.
|
|
551
739
|
fns: [
|
|
552
740
|
...DYN_ASYNC_LIB_FNS,
|
|
553
741
|
...READABLE_DYN_ASYNC_LIB_FNS,
|
|
554
742
|
...LEGACY_URL_LIB_FNS,
|
|
555
743
|
"crypto.cipherNew",
|
|
744
|
+
"webcrypto.encrypt",
|
|
745
|
+
"webcrypto.decrypt",
|
|
746
|
+
"webcrypto.wrapKey",
|
|
747
|
+
"webcrypto.unwrapKey",
|
|
556
748
|
"crypto.ecdhNew",
|
|
557
749
|
],
|
|
558
750
|
prefixes: [...READABLE_DYN_ASYNC_PREFIXES, "wasm."],
|
|
@@ -599,12 +791,16 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
599
791
|
}),
|
|
600
792
|
/** Own properties JavaScript adds to children (scr_dyn_handle_props.c). */
|
|
601
793
|
handleProps: rule({ fns: ["child.propsInstall"] }),
|
|
794
|
+
/** The declaration-typed boundary's adoption (scr_decl_adopt.c): its
|
|
795
|
+
* casts, and closures boxed in a boundary program, which adopt their
|
|
796
|
+
* arguments. */
|
|
797
|
+
declAdopt: rule({ fns: ["dyn.declAdopt"], initial: (mod) => mod.declBoundary === true }),
|
|
602
798
|
/** for await over checked-dynamic values (scr_dyn_for_await.c). */
|
|
603
799
|
dynForAwait: rule({ fns: ["dyn.asyncIteratorOpen", "dyn.asyncIteratorWasSync"] }),
|
|
604
|
-
/**
|
|
605
|
-
*
|
|
606
|
-
|
|
607
|
-
expr: (node, _tables) => node.kind === "dynInvoke" &&
|
|
800
|
+
/** Buffer.prototype methods called on checked-dynamic values
|
|
801
|
+
* (scr_bytes_dyn.c). */
|
|
802
|
+
dynBuffer: rule({
|
|
803
|
+
expr: (node, _tables) => node.kind === "dynInvoke" && DYN_BUFFER_METHODS.has(node.method),
|
|
608
804
|
}),
|
|
609
805
|
/** Builtin functions read as values (scr_builtin_values.c). */
|
|
610
806
|
builtinValues: rule({ fns: ["buffer.byteLenValue", "buffer.allocValue", "fs.realpathValue"] }),
|
|
@@ -614,6 +810,10 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
614
810
|
* process-warning unit, and unknown encodings and formats render through
|
|
615
811
|
* the inspect unit. */
|
|
616
812
|
ecdh: rule({ fns: ["crypto.ecdhNew", "crypto.ecdhConvertKey"] }),
|
|
813
|
+
/** scr_dh.c over the mbedTLS archive, also for checkPrime and
|
|
814
|
+
* generatePrime; unknown encodings and argument values render through
|
|
815
|
+
* the inspect unit. */
|
|
816
|
+
dh: rule({ fns: [...DH_LIB_FNS] }),
|
|
617
817
|
emitter: rule({
|
|
618
818
|
initial: (mod) => mod.workers === true || (mod.classes ?? []).some((c) => c.name === RUNTIME_EMITTER_CLASS),
|
|
619
819
|
fns: [...STREAM_LIB_FNS, ...BUILTIN_CLASS_LIB_FNS],
|
|
@@ -653,15 +853,24 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
653
853
|
"global.native",
|
|
654
854
|
"util.styleText",
|
|
655
855
|
"crypto.cipherNew",
|
|
856
|
+
"webcrypto.encrypt",
|
|
857
|
+
"webcrypto.decrypt",
|
|
858
|
+
"webcrypto.wrapKey",
|
|
859
|
+
"webcrypto.unwrapKey",
|
|
656
860
|
"crypto.ecdhNew",
|
|
657
861
|
"crypto.ecdhConvertKey",
|
|
862
|
+
...DH_LIB_FNS,
|
|
658
863
|
...BUILTIN_CLASS_LIB_FNS,
|
|
659
864
|
...UTIL_CALLABLE_LIB_FNS,
|
|
660
865
|
],
|
|
661
866
|
prefixes: ["insp.", "console.", "test."],
|
|
662
867
|
libCall: (node) => node.fn === "rl.terminal" && !isDynUndefined(node.args[3]),
|
|
663
868
|
}),
|
|
664
|
-
legacyTextDecoder: rule({
|
|
869
|
+
legacyTextDecoder: rule({
|
|
870
|
+
fns: [...LEGACY_TEXT_DECODER_LIB_FNS],
|
|
871
|
+
expr: (node, tables) => (node.kind === "dynFrom" && mentionsTextDecoder(node.value.type, tables())) ||
|
|
872
|
+
(node.kind === "dynCheck" && mentionsTextDecoder(node.type, tables())),
|
|
873
|
+
}),
|
|
665
874
|
/** The program calls mock.timers members: its timer calls go through
|
|
666
875
|
* scr_test.c's mock-aware entry points. */
|
|
667
876
|
mockTimers: rule({ prefixes: ["test.mockTimers", "test.ctxMockTimers"] }),
|
|
@@ -685,6 +894,12 @@ const RUNTIME_FEATURE_RULES = {
|
|
|
685
894
|
/** perf_hooks event-loop metrics (eventLoopUtilization,
|
|
686
895
|
* monitorEventLoopDelay): scr_perf_loop.c. */
|
|
687
896
|
perfLoop: rule({ fns: ["perf.idleTime"], prefixes: ["perf.loop", "perf.eld"] }),
|
|
897
|
+
/** scr_pki.c over the mbedTLS archive: asymmetric KeyObjects and
|
|
898
|
+
* signatures. */
|
|
899
|
+
pki: rule({ scan: webCryptoAsymmetricScan, fns: [...PKI_LIB_FNS] }),
|
|
900
|
+
/** scr_ed25519.c (the vendored libsodium Ed25519), linked with pki: a
|
|
901
|
+
* string literal in the module names Ed25519. */
|
|
902
|
+
ed25519: rule({ scan: ed25519NameScan }),
|
|
688
903
|
processEvents: rule({ fns: [...PROCESS_EVENT_LIB_FNS, "util.styleText"], types: ["procStream"] }),
|
|
689
904
|
/** scr_url_legacy.c parses and stringifies queries. */
|
|
690
905
|
qs: rule({ fns: [...QS_LIB_FNS, ...LEGACY_URL_LIB_FNS] }),
|
|
@@ -761,6 +976,7 @@ function noRuntimeFeatures() {
|
|
|
761
976
|
dc: false,
|
|
762
977
|
dgram: false,
|
|
763
978
|
dgramDyn: false,
|
|
979
|
+
textCodecDyn: false,
|
|
764
980
|
dnsPromises: false,
|
|
765
981
|
dynAsync: false,
|
|
766
982
|
dynBuiltinClass: false,
|
|
@@ -768,6 +984,7 @@ function noRuntimeFeatures() {
|
|
|
768
984
|
dynInvoke: false,
|
|
769
985
|
dynTier: false,
|
|
770
986
|
ecdh: false,
|
|
987
|
+
dh: false,
|
|
771
988
|
emitter: false,
|
|
772
989
|
eventTarget: false,
|
|
773
990
|
eventsOnceSignal: false,
|
|
@@ -784,6 +1001,8 @@ function noRuntimeFeatures() {
|
|
|
784
1001
|
nodeTest: false,
|
|
785
1002
|
parseArgs: false,
|
|
786
1003
|
perfLoop: false,
|
|
1004
|
+
pki: false,
|
|
1005
|
+
ed25519: false,
|
|
787
1006
|
processEvents: false,
|
|
788
1007
|
qs: false,
|
|
789
1008
|
regex: false,
|
|
@@ -792,8 +1011,9 @@ function noRuntimeFeatures() {
|
|
|
792
1011
|
stream: false,
|
|
793
1012
|
streamDyn: false,
|
|
794
1013
|
handleProps: false,
|
|
1014
|
+
declAdopt: false,
|
|
795
1015
|
dynForAwait: false,
|
|
796
|
-
|
|
1016
|
+
dynBuffer: false,
|
|
797
1017
|
builtinValues: false,
|
|
798
1018
|
symbol: false,
|
|
799
1019
|
tls: false,
|
|
@@ -836,12 +1056,15 @@ for (const name of RUNTIME_FEATURE_NAMES) {
|
|
|
836
1056
|
if (rule.expr)
|
|
837
1057
|
FEATURE_EXPR_TESTS.push(name);
|
|
838
1058
|
}
|
|
839
|
-
function scanRuntimeFeatures(mod, stopAt) {
|
|
1059
|
+
function scanRuntimeFeatures(mod, stopAt, nodes) {
|
|
840
1060
|
const features = noRuntimeFeatures();
|
|
1061
|
+
const scans = [];
|
|
841
1062
|
for (const name of RUNTIME_FEATURE_NAMES) {
|
|
842
|
-
const initial = ruleOf(name)
|
|
1063
|
+
const { initial, scan } = ruleOf(name);
|
|
843
1064
|
if (initial && initial(mod))
|
|
844
1065
|
features[name] = true;
|
|
1066
|
+
if (scan)
|
|
1067
|
+
scans.push({ name, scan: scan() });
|
|
845
1068
|
}
|
|
846
1069
|
const keepGoing = () => stopAt === undefined || !features[stopAt];
|
|
847
1070
|
let tables;
|
|
@@ -851,6 +1074,8 @@ function scanRuntimeFeatures(mod, stopAt) {
|
|
|
851
1074
|
classes: new Map((mod.classes ?? []).map((c) => [c.name, c])),
|
|
852
1075
|
});
|
|
853
1076
|
const expr = (node) => {
|
|
1077
|
+
for (let i = 0; i < scans.length; i++)
|
|
1078
|
+
scans[i].scan.expr(node);
|
|
854
1079
|
if (node.kind === "libCall") {
|
|
855
1080
|
const fn = node.fn;
|
|
856
1081
|
for (const name of FEATURES_BY_FN.get(fn) ?? [])
|
|
@@ -874,8 +1099,24 @@ function scanRuntimeFeatures(mod, stopAt) {
|
|
|
874
1099
|
features[name] = true;
|
|
875
1100
|
return keepGoing();
|
|
876
1101
|
};
|
|
877
|
-
|
|
1102
|
+
// Each condition is a fact about one expression or one type (the rule
|
|
1103
|
+
// scans combine such facts in no particular order), so the index's
|
|
1104
|
+
// expressions and distinct types answer as the walk does. An early stop
|
|
1105
|
+
// (stopAt) keeps the walk.
|
|
1106
|
+
if (nodes !== undefined && stopAt === undefined) {
|
|
1107
|
+
const expressions = nodes.expressions();
|
|
1108
|
+
for (const fn of mod.functions)
|
|
1109
|
+
eachNodeOfKinds(fn, expressions, (node) => {
|
|
1110
|
+
expr(node);
|
|
1111
|
+
});
|
|
1112
|
+
for (const t of nodes.types)
|
|
1113
|
+
type(t);
|
|
1114
|
+
}
|
|
1115
|
+
else if (keepGoing())
|
|
878
1116
|
everyModuleNode(mod, { expr, stmt: keepGoing, type });
|
|
1117
|
+
for (const { name, scan } of scans)
|
|
1118
|
+
if (scan.result())
|
|
1119
|
+
features[name] = true;
|
|
879
1120
|
// Inline-cache sites of dynamic-tier functions use the tier's shapes
|
|
880
1121
|
// (scr_js_object.c, with the SCR_JS_TIER build of scr_json.c).
|
|
881
1122
|
if (!features.dynTier && mod.functions.some((fn) => fn.tier === "dynamic")) {
|