@scriptc/compiler 0.3.6 → 0.4.1
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 +717 -55
- package/ambient/scriptc.d.ts +134 -0
- package/dist/backend/cycle-analysis.d.ts +1 -1
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +13 -1
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/cycle-mutability.js +16 -5
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +20 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.test.js +1 -1
- package/dist/backend/library-pack.js +9 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +41 -4
- package/dist/backend/llvm/alloc.js +138 -7
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +30 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.test.js +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/array-search.test.js +1 -1
- package/dist/backend/llvm/blocks.d.ts +8 -0
- package/dist/backend/llvm/blocks.js +43 -1
- package/dist/backend/llvm/blocks.js.map +1 -1
- package/dist/backend/llvm/blocks.test.js +22 -1
- package/dist/backend/llvm/blocks.test.js.map +1 -1
- package/dist/backend/llvm/byte-numbers.js +15 -5
- package/dist/backend/llvm/byte-numbers.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.d.ts +14 -0
- package/dist/backend/llvm/bytes-alias.js +20 -0
- package/dist/backend/llvm/bytes-alias.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.d.ts +86 -0
- package/dist/backend/llvm/bytes-loop-versions.js +506 -0
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.d.ts +1 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js +244 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.js +50 -1
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +34 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/checked-narrows.test.js +1 -1
- package/dist/backend/llvm/checked-value-lifetimes.js +4 -1
- package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +38 -1
- package/dist/backend/llvm/classes.js +185 -35
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +79 -17
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +51 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.d.ts +5 -1
- package/dist/backend/llvm/constant-callbacks.js +55 -12
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +88 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -0
- package/dist/backend/llvm/counted-loops.js +37 -0
- package/dist/backend/llvm/counted-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +15 -4
- package/dist/backend/llvm/dense-array-access.js +125 -44
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +63 -3
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.d.ts +51 -0
- package/dist/backend/llvm/dense-array-loops.js +162 -0
- package/dist/backend/llvm/dense-array-loops.js.map +1 -0
- package/dist/backend/llvm/dense-array-loops.test.d.ts +1 -0
- package/dist/backend/llvm/dense-array-loops.test.js +128 -0
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.d.ts +1 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js +38 -0
- package/dist/backend/llvm/dyn-handle-tags.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +37 -4
- package/dist/backend/llvm/dyn.js +354 -183
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.d.ts +64 -0
- package/dist/backend/llvm/emit-function.js +1193 -0
- package/dist/backend/llvm/emit-function.js.map +1 -0
- package/dist/backend/llvm/emit-module.d.ts +24 -0
- package/dist/backend/llvm/emit-module.js +1557 -0
- package/dist/backend/llvm/emit-module.js.map +1 -0
- package/dist/backend/llvm/emit-statements.d.ts +59 -0
- package/dist/backend/llvm/emit-statements.js +2041 -0
- package/dist/backend/llvm/emit-statements.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +566 -291
- package/dist/backend/llvm/emitter.js +728 -4671
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +57 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +73 -46
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-async.test.js +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +2 -0
- package/dist/backend/llvm/expr-bytes.js +76 -29
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +6 -2
- package/dist/backend/llvm/expr-callbacks.js +48 -11
- 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 +87 -56
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-calls.test.js +1 -1
- package/dist/backend/llvm/expr-containers.js +45 -24
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +16 -16
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.d.ts +3 -0
- package/dist/backend/llvm/expr-dynamic.js +113 -66
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +124 -28
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +57 -2
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +32 -11
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +65 -27
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +22 -1
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +2 -2
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/integer-clones.test.js +3 -3
- package/dist/backend/llvm/integer-remainder.d.ts +34 -13
- package/dist/backend/llvm/integer-remainder.js +156 -22
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.js +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval-encoding.d.ts +21 -0
- package/dist/backend/llvm/jsval-encoding.js +20 -0
- package/dist/backend/llvm/jsval-encoding.js.map +1 -0
- package/dist/backend/llvm/jsval.d.ts +12 -0
- package/dist/backend/llvm/jsval.js +616 -0
- package/dist/backend/llvm/jsval.js.map +1 -0
- package/dist/backend/llvm/lazy-captures.d.ts +12 -2
- package/dist/backend/llvm/lazy-captures.js +39 -17
- package/dist/backend/llvm/lazy-captures.js.map +1 -1
- package/dist/backend/llvm/lib-abi.js +1 -1
- package/dist/backend/llvm/lib-abi.js.map +1 -1
- package/dist/backend/llvm/lib-connect.js +1 -1
- package/dist/backend/llvm/lib-connect.js.map +1 -1
- package/dist/backend/llvm/lib-datagram.js +14 -8
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +189 -23
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +42 -13
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.js +3 -3
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-lookup.js +2 -2
- package/dist/backend/llvm/lib-lookup.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +56 -22
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +94 -53
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +12 -0
- package/dist/backend/llvm/lib-shared.js +209 -6
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +46 -16
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +43 -7
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +4 -9
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +42 -33
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +1 -1
- package/dist/backend/llvm/local-extents.d.ts +19 -0
- package/dist/backend/llvm/local-extents.js +169 -0
- package/dist/backend/llvm/local-extents.js.map +1 -0
- package/dist/backend/llvm/local-extents.test.d.ts +1 -0
- package/dist/backend/llvm/local-extents.test.js +92 -0
- package/dist/backend/llvm/local-extents.test.js.map +1 -0
- package/dist/backend/llvm/local-union-storage.js +7 -7
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +2 -2
- package/dist/backend/llvm/map-entry-fusion.test.js +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +45 -9
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +2 -2
- package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
- package/dist/backend/llvm/narrow-guards.d.ts +38 -0
- package/dist/backend/llvm/narrow-guards.js +215 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -0
- package/dist/backend/llvm/nullable-unions.d.ts +64 -6
- package/dist/backend/llvm/nullable-unions.js +103 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.d.ts +1 -0
- package/dist/backend/llvm/nullable-unions.test.js +65 -0
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -0
- package/dist/backend/llvm/publish.d.ts +7 -0
- package/dist/backend/llvm/publish.js +50 -19
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +1 -1
- package/dist/backend/llvm/receivers.d.ts +31 -0
- package/dist/backend/llvm/receivers.js +395 -0
- package/dist/backend/llvm/receivers.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +12 -1
- package/dist/backend/llvm/record-results.js +64 -4
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +9 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.d.ts +4 -0
- package/dist/backend/llvm/reference-writes.js +142 -6
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/reference-writes.test.d.ts +1 -0
- package/dist/backend/llvm/reference-writes.test.js +88 -0
- package/dist/backend/llvm/reference-writes.test.js.map +1 -0
- package/dist/backend/llvm/regex-matchers.d.ts +8 -0
- package/dist/backend/llvm/regex-matchers.js +33 -0
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +23 -1
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +1 -1
- package/dist/backend/llvm/regions.js +10 -7
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +8 -2
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +74 -45
- package/dist/backend/llvm/shapes.js +289 -28
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +37 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +2 -2
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +26 -6
- package/dist/backend/llvm/stack-objects.js +133 -10
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +55 -1
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.test.js +1 -1
- package/dist/backend/llvm/string-construction.test.js +1 -1
- package/dist/backend/llvm/string-lifetimes.test.js +15 -14
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.d.ts +25 -0
- package/dist/backend/llvm/string-slices.js +207 -1
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/string-slices.test.js +139 -2
- package/dist/backend/llvm/string-slices.test.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.test.js +2 -2
- package/dist/backend/llvm/thread-slots.d.ts +5 -0
- package/dist/backend/llvm/thread-slots.js +142 -0
- package/dist/backend/llvm/thread-slots.js.map +1 -0
- package/dist/backend/llvm/thread-slots.test.d.ts +1 -0
- package/dist/backend/llvm/thread-slots.test.js +111 -0
- package/dist/backend/llvm/thread-slots.test.js.map +1 -0
- package/dist/backend/llvm/union-repr.d.ts +7 -7
- package/dist/backend/llvm/union-repr.js +18 -2
- package/dist/backend/llvm/union-repr.js.map +1 -1
- package/dist/backend/llvm/union-retype.test.js +17 -3
- package/dist/backend/llvm/union-retype.test.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +2 -2
- package/dist/backend/llvm/walkers.js +51 -26
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/llvm/wasm-modules.d.ts +16 -0
- package/dist/backend/llvm/wasm-modules.js +66 -0
- package/dist/backend/llvm/wasm-modules.js.map +1 -0
- package/dist/backend/llvm/wrapping-sums.d.ts +7 -0
- package/dist/backend/llvm/wrapping-sums.js +11 -3
- package/dist/backend/llvm/wrapping-sums.js.map +1 -1
- package/dist/backend/mangle.d.ts +12 -0
- package/dist/backend/mangle.js +18 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.d.ts +3 -0
- package/dist/backend/may-throw.js +4 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +1 -1
- package/dist/backend/native/contracts.d.ts +57 -0
- package/dist/backend/native/executable.js +211 -139
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -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 +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +48 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/publication.test.js +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 +13 -1
- package/dist/backend/runtime-pack-core.js +14 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.js +1 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.d.ts +1 -0
- package/dist/backend/runtime-pack-native.test.js +31 -0
- package/dist/backend/runtime-pack-native.test.js.map +1 -0
- package/dist/backend/runtime-pack-targets.test.js +9 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +9 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/stack-observations.d.ts +22 -0
- package/dist/backend/stack-observations.js +382 -0
- package/dist/backend/stack-observations.js.map +1 -0
- package/dist/backend/stack-observations.test.d.ts +1 -0
- package/dist/backend/stack-observations.test.js +233 -0
- package/dist/backend/stack-observations.test.js.map +1 -0
- package/dist/backend/target-diagnostics.js +15 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +1 -1
- package/dist/backend/warm-cache.js +8 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/backend/young-nursery.d.ts +7 -0
- package/dist/backend/young-nursery.js +10 -0
- package/dist/backend/young-nursery.js.map +1 -0
- package/dist/cli/command.js +106 -4
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +21 -1
- package/dist/cli/usage.js +43 -1
- package/dist/cli/usage.js.map +1 -1
- package/dist/compat/fetch-profile.js +10 -1
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +22 -0
- package/dist/contracts/check.js +25 -8
- package/dist/contracts/check.js.map +1 -1
- package/dist/contracts/int32-elements.d.ts +115 -0
- package/dist/contracts/int32-elements.js +1179 -0
- package/dist/contracts/int32-elements.js.map +1 -0
- package/dist/coverage/report.d.ts +16 -0
- package/dist/coverage/report.js +182 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +2 -0
- package/dist/coverage/verdict-cache.js +12 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-cache.test.js +2 -1
- package/dist/coverage/verdict-cache.test.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -6
- package/dist/diagnostics/diagnostic.js +29 -21
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +39 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/diagnostics/render.d.ts +7 -0
- package/dist/diagnostics/render.js +50 -13
- package/dist/diagnostics/render.js.map +1 -1
- package/dist/diagnostics/render.test.d.ts +1 -0
- package/dist/diagnostics/render.test.js +49 -0
- package/dist/diagnostics/render.test.js.map +1 -0
- package/dist/executable/executable-cache.d.ts +27 -0
- package/dist/executable/executable-cache.js +19 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +12 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +6 -1
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-modules.d.ts +16 -2
- package/dist/frontend/builtin-modules.js +40 -7
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/cjs-syntax.js +52 -51
- package/dist/frontend/cjs-syntax.js.map +1 -1
- package/dist/frontend/contract-types.d.ts +3 -0
- package/dist/frontend/contract-types.js +36 -7
- package/dist/frontend/contract-types.js.map +1 -1
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +26 -7
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/fork-target.js +20 -22
- package/dist/frontend/fork-target.js.map +1 -1
- package/dist/frontend/fork-target.test.js +2 -1
- package/dist/frontend/fork-target.test.js.map +1 -1
- package/dist/frontend/function-completion.js +6 -6
- package/dist/frontend/function-completion.js.map +1 -1
- package/dist/frontend/helper-tokens.js +15 -3
- package/dist/frontend/helper-tokens.js.map +1 -1
- package/dist/frontend/helper-tokens.test.js +7 -1
- package/dist/frontend/helper-tokens.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.js +14 -17
- package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +3 -0
- package/dist/frontend/input-tracker.js +32 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/lib-contract.js +36 -32
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lib-exports.js +3 -3
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -3
- package/dist/frontend/lowering/array-values.js +60 -11
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.js +4 -4
- package/dist/frontend/lowering/assert-instances.js.map +1 -1
- package/dist/frontend/lowering/assertion-identity.d.ts +12 -0
- package/dist/frontend/lowering/assertion-identity.js +70 -0
- package/dist/frontend/lowering/assertion-identity.js.map +1 -0
- package/dist/frontend/lowering/assertion-members.d.ts +28 -0
- package/dist/frontend/lowering/assertion-members.js +185 -0
- package/dist/frontend/lowering/assertion-members.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.js +27 -20
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +63 -5
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-function-fences.d.ts +14 -0
- package/dist/frontend/lowering/builtin-function-fences.js +42 -0
- package/dist/frontend/lowering/builtin-function-fences.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.js +1 -1
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/async-context.js +53 -52
- package/dist/frontend/lowering/builtins/async-context.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +6 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.js +8 -6
- package/dist/frontend/lowering/builtins/blob.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +31 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +205 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -0
- package/dist/frontend/lowering/builtins/callable-aliases.js +17 -5
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-async.js +7 -7
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process-methods.js +310 -57
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +16 -10
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +6 -4
- package/dist/frontend/lowering/builtins/child-process.js +85 -61
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/class-values.d.ts +60 -0
- package/dist/frontend/lowering/builtins/class-values.js +226 -0
- package/dist/frontend/lowering/builtins/class-values.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
- package/dist/frontend/lowering/builtins/compression.js +107 -44
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.d.ts +9 -1
- package/dist/frontend/lowering/builtins/constants.js +28 -7
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
- package/dist/frontend/lowering/builtins/crypto.js +215 -38
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +7 -1
- package/dist/frontend/lowering/builtins/dates.js +92 -16
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/disposable-stack.d.ts +18 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +137 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -0
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/environment.js +3 -3
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.d.ts +14 -10
- package/dist/frontend/lowering/builtins/errors.js +169 -3
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +128 -116
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +77 -77
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.js +3 -3
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-streams.js +10 -11
- package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -1
- package/dist/frontend/lowering/builtins/ipc.js +45 -8
- package/dist/frontend/lowering/builtins/ipc.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +284 -24
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.js +4 -4
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-bindings.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-bindings.js +71 -22
- package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +55 -44
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +4 -3
- package/dist/frontend/lowering/builtins/module-resolution.js +24 -23
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/navigator.d.ts +13 -0
- package/dist/frontend/lowering/builtins/navigator.js +40 -0
- package/dist/frontend/lowering/builtins/navigator.js.map +1 -0
- package/dist/frontend/lowering/builtins/net-address.d.ts +19 -0
- package/dist/frontend/lowering/builtins/net-address.js +156 -0
- package/dist/frontend/lowering/builtins/net-address.js.map +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +25 -9
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +4 -0
- package/dist/frontend/lowering/builtins/operating-system.js +25 -12
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +12 -0
- package/dist/frontend/lowering/builtins/performance.js +259 -8
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +41 -1
- package/dist/frontend/lowering/builtins/process.js +505 -99
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.d.ts +5 -1
- package/dist/frontend/lowering/builtins/promises.js +326 -43
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +40 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +338 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -0
- package/dist/frontend/lowering/builtins/properties.js +37 -1
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.js +14 -14
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +12 -2
- package/dist/frontend/lowering/builtins/readline.js +136 -39
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/receiver-types.js +3 -5
- package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +42 -14
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/runtime-constructor.d.ts +26 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js +165 -0
- package/dist/frontend/lowering/builtins/runtime-constructor.js.map +1 -0
- package/dist/frontend/lowering/builtins/strings.js +101 -12
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +41 -38
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +79 -30
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.d.ts +3 -0
- package/dist/frontend/lowering/builtins/url.js +120 -17
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/util-types.js +20 -4
- package/dist/frontend/lowering/builtins/util-types.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +11 -0
- package/dist/frontend/lowering/builtins/v8.js +105 -0
- package/dist/frontend/lowering/builtins/v8.js.map +1 -0
- package/dist/frontend/lowering/builtins/webassembly.d.ts +33 -0
- package/dist/frontend/lowering/builtins/webassembly.js +388 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -0
- package/dist/frontend/lowering/builtins/webcrypto.d.ts +20 -0
- package/dist/frontend/lowering/builtins/webcrypto.js +112 -0
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -0
- package/dist/frontend/lowering/builtins/workers.d.ts +12 -0
- package/dist/frontend/lowering/builtins/workers.js +193 -8
- package/dist/frontend/lowering/builtins/workers.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +69 -14
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +23 -1
- package/dist/frontend/lowering/call-signatures.js +379 -55
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +3 -0
- package/dist/frontend/lowering/checked-promise-all.js +1 -1
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +53 -0
- package/dist/frontend/lowering/cjs-exports-object.js +561 -0
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -0
- package/dist/frontend/lowering/cjs-inline-require.d.ts +86 -0
- package/dist/frontend/lowering/cjs-inline-require.js +314 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -0
- package/dist/frontend/lowering/cjs-tsc-interop.d.ts +28 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js +208 -0
- package/dist/frontend/lowering/cjs-tsc-interop.js.map +1 -0
- package/dist/frontend/lowering/class-attributes.d.ts +19 -0
- package/dist/frontend/lowering/class-attributes.js +378 -0
- package/dist/frontend/lowering/class-attributes.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +3 -1
- package/dist/frontend/lowering/class-callbacks.js +21 -10
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.js +49 -4
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -0
- package/dist/frontend/lowering/class-descriptors.js +8 -8
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +64 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1124 -90
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-iterables.d.ts +11 -0
- package/dist/frontend/lowering/class-iterables.js +31 -0
- package/dist/frontend/lowering/class-iterables.js.map +1 -0
- package/dist/frontend/lowering/class-method-mutations.js +73 -35
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +56 -10
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.js +24 -22
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +76 -45
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +6 -0
- package/dist/frontend/lowering/class-prototypes.js +86 -19
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-static-data.js +2 -2
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +25 -0
- package/dist/frontend/lowering/class-to-primitive.js +264 -0
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -0
- package/dist/frontend/lowering/class-unions.d.ts +25 -0
- package/dist/frontend/lowering/class-unions.js +102 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/code-generation.d.ts +14 -0
- package/dist/frontend/lowering/code-generation.js +127 -0
- package/dist/frontend/lowering/code-generation.js.map +1 -0
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +16 -2
- package/dist/frontend/lowering/coercions/function-adapters.js +239 -68
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +25 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +35 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +15 -0
- package/dist/frontend/lowering/coercions/unions.js +57 -1
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -2
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/collection-narrowing.js +2 -4
- package/dist/frontend/lowering/collection-narrowing.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.js +8 -8
- package/dist/frontend/lowering/construction-escapes.js.map +1 -1
- package/dist/frontend/lowering/construction-escapes.test.js +4 -4
- package/dist/frontend/lowering/construction-escapes.test.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +61 -0
- package/dist/frontend/lowering/constructor-returns.js +477 -0
- package/dist/frontend/lowering/constructor-returns.js.map +1 -0
- package/dist/frontend/lowering/containers/array-callback-call.js +1 -1
- package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +17 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +287 -118
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +1 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.d.ts +0 -1
- package/dist/frontend/lowering/containers/array-construction.js +58 -13
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.d.ts +6 -5
- package/dist/frontend/lowering/containers/array-from-async.js +159 -14
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +94 -77
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -0
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +649 -113
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +9 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +55 -5
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.d.ts +7 -8
- package/dist/frontend/lowering/containers/collection-grouping.js +217 -26
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +126 -28
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js +1 -1
- package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -1
- package/dist/frontend/lowering/containers/exec-result-uses.js +2 -2
- package/dist/frontend/lowering/containers/exec-result-uses.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +6 -0
- package/dist/frontend/lowering/containers/for-of.js +19 -19
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +142 -57
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +53 -4
- package/dist/frontend/lowering/containers/iterator-helpers.js +1581 -462
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/match-row-uses.d.ts +17 -0
- package/dist/frontend/lowering/containers/match-row-uses.js +264 -0
- package/dist/frontend/lowering/containers/match-row-uses.js.map +1 -0
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +14 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js +455 -30
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +30 -10
- package/dist/frontend/lowering/cycle-initialization.js +191 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +47 -43
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/devirtualize.d.ts +1 -1
- package/dist/frontend/lowering/devirtualize.js +27 -7
- package/dist/frontend/lowering/devirtualize.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +0 -5
- package/dist/frontend/lowering/divergences.js +62 -125
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/dyn-streams.d.ts +25 -0
- package/dist/frontend/lowering/dyn-streams.js +257 -0
- package/dist/frontend/lowering/dyn-streams.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/error-name-order.d.ts +19 -0
- package/dist/frontend/lowering/error-name-order.js +93 -0
- package/dist/frontend/lowering/error-name-order.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +21 -0
- package/dist/frontend/lowering/expressions/array-literals.js +723 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -0
- package/dist/frontend/lowering/expressions/binary.d.ts +35 -0
- package/dist/frontend/lowering/expressions/binary.js +2557 -0
- package/dist/frontend/lowering/expressions/binary.js.map +1 -0
- package/dist/frontend/lowering/expressions/element-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/element-access.js +1804 -0
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -3
- package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +38 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +160 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/identifiers.d.ts +4 -0
- package/dist/frontend/lowering/expressions/identifiers.js +830 -0
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +52 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +307 -0
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -0
- package/dist/frontend/lowering/expressions/narrowing.d.ts +37 -0
- package/dist/frontend/lowering/expressions/narrowing.js +1337 -0
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -0
- package/dist/frontend/lowering/expressions/native-proxy.js +4 -4
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +45 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/object-literals.js +301 -86
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -2
- package/dist/frontend/lowering/expressions/optional-chains.js +103 -17
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +115 -0
- package/dist/frontend/lowering/expressions/property-access.js +3787 -0
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -0
- package/dist/frontend/lowering/expressions/relational.d.ts +28 -0
- package/dist/frontend/lowering/expressions/relational.js +1724 -0
- package/dist/frontend/lowering/expressions/relational.js.map +1 -0
- package/dist/frontend/lowering/expressions/typeof.d.ts +22 -0
- package/dist/frontend/lowering/expressions/typeof.js +551 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -0
- package/dist/frontend/lowering/expressions/union-fields.js +1 -1
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.d.ts +21 -0
- package/dist/frontend/lowering/expressions/updates.js +780 -0
- package/dist/frontend/lowering/expressions/updates.js.map +1 -0
- package/dist/frontend/lowering/function-context.d.ts +10 -0
- package/dist/frontend/lowering/function-context.js +11 -1
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +52 -28
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.d.ts +25 -0
- package/dist/frontend/lowering/general-streams.js +108 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -0
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +7 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +172 -69
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +43 -0
- package/dist/frontend/lowering/generic-functions.js +593 -118
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/import-meta.js +2 -2
- package/dist/frontend/lowering/import-meta.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.js +10 -9
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.d.ts +19 -0
- package/dist/frontend/lowering/iterator-adapters.js +331 -3
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-class-fields.d.ts +28 -0
- package/dist/frontend/lowering/js-class-fields.js +170 -0
- package/dist/frontend/lowering/js-class-fields.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.d.ts +15 -0
- package/dist/frontend/lowering/js-dynamic-objects.js +299 -0
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.d.ts +1 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js +35 -0
- package/dist/frontend/lowering/js-dynamic-objects.test.js.map +1 -0
- package/dist/frontend/lowering/json-require.d.ts +22 -0
- package/dist/frontend/lowering/json-require.js +131 -0
- package/dist/frontend/lowering/json-require.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.d.ts +44 -0
- package/dist/frontend/lowering/key-order-witness.js +641 -0
- package/dist/frontend/lowering/key-order-witness.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.test.d.ts +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js +239 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -0
- package/dist/frontend/lowering/lifetime-regions.js +7 -7
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +61 -60
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +10 -1
- package/dist/frontend/lowering/lower-async-iteration.js +34 -6
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +5 -0
- package/dist/frontend/lowering/lower-builtin-values.js +33 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1404 -448
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +54 -3
- package/dist/frontend/lowering/lower-classes.js +1529 -472
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +4 -2
- package/dist/frontend/lowering/lower-comptime.js +111 -13
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.js +13 -11
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.d.ts +10 -0
- package/dist/frontend/lowering/lower-dgram.js +241 -21
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-enums.js +113 -14
- package/dist/frontend/lowering/lower-enums.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +16 -7
- package/dist/frontend/lowering/lower-event-emitter.js +258 -70
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.js +2 -2
- package/dist/frontend/lowering/lower-event-target.js.map +1 -1
- package/dist/frontend/lowering/lower-expando.js +17 -13
- package/dist/frontend/lowering/lower-expando.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +188 -186
- package/dist/frontend/lowering/lower-exprs.js +1509 -12486
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +72 -22
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +6 -0
- package/dist/frontend/lowering/lower-generators.js +39 -20
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.js +5 -1
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +900 -107
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +23 -20
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +8 -1
- package/dist/frontend/lowering/lower-mock.js +185 -18
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +445 -94
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +6 -0
- package/dist/frontend/lowering/lower-namespaces.js +65 -33
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-module.d.ts +16 -0
- package/dist/frontend/lowering/lower-node-module.js +147 -14
- package/dist/frontend/lowering/lower-node-module.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +6 -6
- package/dist/frontend/lowering/lower-server.js +514 -101
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +4 -0
- package/dist/frontend/lowering/lower-stdlib.js +179 -118
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +30 -7
- package/dist/frontend/lowering/lower-stmts.js +1950 -433
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +398 -56
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.d.ts +3 -0
- package/dist/frontend/lowering/lower-test.js +437 -62
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +96 -32
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +1 -1
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +424 -27
- package/dist/frontend/lowering/lowerer.js +2062 -310
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +10 -4
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/maybe-promise.d.ts +46 -0
- package/dist/frontend/lowering/maybe-promise.js +249 -0
- package/dist/frontend/lowering/maybe-promise.js.map +1 -0
- package/dist/frontend/lowering/module-member-this.d.ts +3 -0
- package/dist/frontend/lowering/module-member-this.js +262 -0
- package/dist/frontend/lowering/module-member-this.js.map +1 -0
- package/dist/frontend/lowering/module-namespace-elements.js +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/nan-coded-reads.d.ts +3 -0
- package/dist/frontend/lowering/nan-coded-reads.js +45 -32
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.d.ts +18 -3
- package/dist/frontend/lowering/narrowing-stability.js +104 -32
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +11 -11
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-factory-new.js +6 -8
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +46 -0
- package/dist/frontend/lowering/private-brands.js +265 -0
- package/dist/frontend/lowering/private-brands.js.map +1 -0
- package/dist/frontend/lowering/promise-executor-adapter.d.ts +11 -0
- package/dist/frontend/lowering/promise-executor-adapter.js +87 -0
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -0
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.d.ts +32 -0
- package/dist/frontend/lowering/require-initialization.js +246 -0
- package/dist/frontend/lowering/require-initialization.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-bounds.js +7 -7
- package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.js +12 -12
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.js +10 -10
- package/dist/frontend/lowering/runtime-optional-guards.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js +1 -1
- package/dist/frontend/lowering/runtime-optional-guards.test.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-ownership.js +10 -9
- package/dist/frontend/lowering/runtime-optional-ownership.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-provenance.js +2 -2
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +35 -0
- package/dist/frontend/lowering/runtime-optional-records.js +205 -32
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js +19 -1
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -1
- package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
- package/dist/frontend/lowering/split-consumers.js +4 -4
- package/dist/frontend/lowering/split-consumers.js.map +1 -1
- package/dist/frontend/lowering/static-function-names.d.ts +28 -0
- package/dist/frontend/lowering/static-function-names.js +212 -0
- package/dist/frontend/lowering/static-function-names.js.map +1 -0
- package/dist/frontend/lowering/static-this.js +6 -6
- package/dist/frontend/lowering/static-this.js.map +1 -1
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-mode.d.ts +5 -0
- package/dist/frontend/lowering/strict-mode.js +31 -0
- package/dist/frontend/lowering/strict-mode.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +13 -12
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/string-index.d.ts +12 -0
- package/dist/frontend/lowering/string-index.js +72 -1
- package/dist/frontend/lowering/string-index.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +12 -3
- package/dist/frontend/lowering/surfaces.js +282 -45
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/symbol-fields.d.ts +7 -0
- package/dist/frontend/lowering/symbol-fields.js +204 -36
- package/dist/frontend/lowering/symbol-fields.js.map +1 -1
- package/dist/frontend/lowering/symbol-methods.d.ts +2 -1
- package/dist/frontend/lowering/symbol-methods.js +24 -6
- package/dist/frontend/lowering/symbol-methods.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/lowering/thread-slots.d.ts +13 -0
- package/dist/frontend/lowering/thread-slots.js +208 -0
- package/dist/frontend/lowering/thread-slots.js.map +1 -0
- package/dist/frontend/lowering/typed-arguments.d.ts +74 -0
- package/dist/frontend/lowering/typed-arguments.js +472 -0
- package/dist/frontend/lowering/typed-arguments.js.map +1 -0
- package/dist/frontend/lowering/union-retag.d.ts +8 -0
- package/dist/frontend/lowering/union-retag.js +27 -0
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +24 -1
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.js +6 -6
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/lowering/width-lift.d.ts +4 -0
- package/dist/frontend/mock-shapes.js +13 -6
- package/dist/frontend/mock-shapes.js.map +1 -1
- package/dist/frontend/module-source-candidates.js +1 -1
- package/dist/frontend/module-source-candidates.js.map +1 -1
- package/dist/frontend/module-source-candidates.test.js +2 -1
- package/dist/frontend/module-source-candidates.test.js.map +1 -1
- package/dist/frontend/module-syntax.js +8 -8
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +58 -0
- package/dist/frontend/npm-static-bundled-chunks.js +981 -0
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js +399 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -0
- package/dist/frontend/npm-static-bundled-cjs.js +24 -23
- package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.d.ts +9 -0
- package/dist/frontend/npm-static-bundled-esm.js +988 -0
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.d.ts +1 -0
- package/dist/frontend/npm-static-bundled-esm.test.js +336 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js +186 -0
- package/dist/frontend/npm-static-cjs-exports-alias.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.d.ts +1 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js +73 -0
- package/dist/frontend/npm-static-cjs-exports-alias.test.js.map +1 -0
- package/dist/frontend/npm-static-cjs-exports-var.d.ts +2 -0
- package/dist/frontend/npm-static-cjs-exports-var.js +236 -0
- package/dist/frontend/npm-static-cjs-exports-var.js.map +1 -0
- package/dist/frontend/npm-static-declaration-syntax.js +102 -101
- package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static-prune.js +36 -24
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-host.d.ts +4 -1
- package/dist/frontend/npm-static-rewrite-host.js +14 -3
- package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.d.ts +19 -0
- package/dist/frontend/npm-static-rewrite-syntax.js +274 -101
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/npm-static-subtyping.js +7 -9
- package/dist/frontend/npm-static-subtyping.js.map +1 -1
- package/dist/frontend/npm-static.d.ts +25 -1
- package/dist/frontend/npm-static.js +212 -16
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +22 -1
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +230 -26
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +22 -1
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program-analysis.d.ts +6 -1
- package/dist/frontend/program-analysis.js +7 -0
- package/dist/frontend/program-analysis.js.map +1 -1
- package/dist/frontend/program.d.ts +100 -2
- package/dist/frontend/program.js +1627 -262
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +76 -6
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +49 -2
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +49 -0
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/services.d.ts +26 -1
- package/dist/frontend/services.js +59 -3
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +2 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/threads-import.js +1 -1
- package/dist/frontend/threads-import.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +71 -0
- package/dist/frontend/tier-analysis.js +522 -0
- package/dist/frontend/tier-analysis.js.map +1 -0
- package/dist/frontend/ts7/api-conformance.d.ts +234 -0
- package/dist/frontend/ts7/api-conformance.js +7 -0
- package/dist/frontend/ts7/api-conformance.js.map +1 -0
- package/dist/frontend/ts7/ast-guards.generated.js +2 -1
- package/dist/frontend/ts7/ast-guards.generated.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +47 -25
- package/dist/frontend/ts7/ast-node.js +64 -18
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +36 -12
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-types.d.ts +10 -3
- package/dist/frontend/ts7/ast-types.generated.d.ts +39 -39
- package/dist/frontend/ts7/ast.d.ts +1 -0
- package/dist/frontend/ts7/ast.js +3 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +23 -0
- package/dist/frontend/ts7/checker-backend.js +88 -0
- package/dist/frontend/ts7/checker-backend.js.map +1 -0
- package/dist/frontend/ts7/checker-backend.test.d.ts +1 -0
- package/dist/frontend/ts7/checker-backend.test.js +63 -0
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -0
- package/dist/frontend/ts7/checker-cache.d.ts +0 -3
- package/dist/frontend/ts7/checker-cache.js +0 -6
- package/dist/frontend/ts7/checker-cache.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +18 -11
- package/dist/frontend/ts7/checker.js +42 -55
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +10 -7
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/diagnostic.d.ts +19 -0
- package/dist/frontend/ts7/diagnostic.js +22 -0
- package/dist/frontend/ts7/diagnostic.js.map +1 -0
- package/dist/frontend/ts7/node-functions.d.ts +8 -0
- package/dist/frontend/ts7/node-functions.js +18 -0
- package/dist/frontend/ts7/node-functions.js.map +1 -0
- package/dist/frontend/ts7/program-host.d.ts +10 -5
- package/dist/frontend/ts7/program-host.js +19 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/rpc-api.d.ts +5 -1
- package/dist/frontend/ts7/rpc-api.js +8 -1
- package/dist/frontend/ts7/rpc-api.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +13 -6
- package/dist/frontend/ts7/semantic-checker.js +26 -8
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.test.js +12 -9
- package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +57 -24
- package/dist/frontend/ts7/semantic-model.js +114 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +4 -4
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-types.d.ts +7 -3
- package/dist/frontend/ts7/semantic-types.js +1 -1
- package/dist/frontend/ts7/semantic-types.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +30 -15
- package/dist/frontend/ts7/session.js +8 -5
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/ts7/session.test.js +9 -5
- package/dist/frontend/ts7/session.test.js.map +1 -1
- package/dist/frontend/ts7/source-parser.d.ts +6 -2
- package/dist/frontend/ts7/source-parser.js +24 -3
- package/dist/frontend/ts7/source-parser.js.map +1 -1
- package/dist/frontend/ts7/source-parser.test.js +38 -17
- package/dist/frontend/ts7/source-parser.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +122 -2
- package/dist/frontend/type-mapper.js +2735 -723
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-only-imports.d.ts +28 -0
- package/dist/frontend/type-only-imports.js +122 -0
- package/dist/frontend/type-only-imports.js.map +1 -0
- package/dist/frontend/worker-target.js +8 -8
- package/dist/frontend/worker-target.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +87 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +4 -2
- package/dist/ir/analysis.js.map +1 -1
- 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/array-length-stability.d.ts +31 -0
- package/dist/ir/array-length-stability.js +249 -0
- package/dist/ir/array-length-stability.js.map +1 -0
- package/dist/ir/array-length-stability.test.d.ts +1 -0
- package/dist/ir/array-length-stability.test.js +134 -0
- package/dist/ir/array-length-stability.test.js.map +1 -0
- package/dist/ir/build.d.ts +2 -2
- package/dist/ir/build.js +1 -1
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +116 -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 +540 -29
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/byte-numbers.js +3 -0
- package/dist/ir/byte-numbers.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +37 -0
- package/dist/ir/callback-specialization.js +459 -0
- package/dist/ir/callback-specialization.js.map +1 -0
- package/dist/ir/callback-specialization.test.d.ts +1 -0
- package/dist/ir/callback-specialization.test.js +208 -0
- package/dist/ir/callback-specialization.test.js.map +1 -0
- package/dist/ir/capture-values.d.ts +0 -1
- package/dist/ir/capture-values.js +51 -40
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/constant-globals.test.js +1 -1
- package/dist/ir/constant-tables.test.js +1 -1
- package/dist/ir/field-values.test.js +1 -1
- package/dist/ir/final-fields.test.js +1 -1
- package/dist/ir/function-references.test.js +9 -1
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.test.js +1 -1
- package/dist/ir/initializer-bindings.test.js +1 -1
- package/dist/ir/int32-slots.d.ts +14 -0
- package/dist/ir/int32-slots.js +97 -14
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +1 -1
- package/dist/ir/integer-loop-facts.d.ts +7 -0
- package/dist/ir/integer-loop-facts.js +103 -17
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +1 -1
- package/dist/ir/integer-loops.js +39 -9
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +104 -0
- package/dist/ir/integer-loops.test.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +13 -1
- package/dist/ir/integer-ranges.js +125 -26
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +273 -2
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +6 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +221 -58
- package/dist/ir/ir.js +127 -12
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +10 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.d.ts +8 -0
- package/dist/ir/jsval.js +399 -0
- package/dist/ir/jsval.js.map +1 -0
- package/dist/ir/jsval.test.d.ts +1 -0
- package/dist/ir/jsval.test.js +239 -0
- package/dist/ir/jsval.test.js.map +1 -0
- package/dist/ir/runtime-features.d.ts +183 -33
- package/dist/ir/runtime-features.js +795 -422
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.test.js +1 -1
- package/dist/ir/self-captures.d.ts +33 -0
- package/dist/ir/self-captures.js +245 -0
- package/dist/ir/self-captures.js.map +1 -0
- package/dist/ir/self-captures.test.d.ts +1 -0
- package/dist/ir/self-captures.test.js +135 -0
- package/dist/ir/self-captures.test.js.map +1 -0
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +7 -4
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/tiers.d.ts +26 -0
- package/dist/ir/tiers.js +101 -0
- package/dist/ir/tiers.js.map +1 -0
- package/dist/ir/tiers.test.d.ts +1 -0
- package/dist/ir/tiers.test.js +140 -0
- package/dist/ir/tiers.test.js.map +1 -0
- package/dist/ir/traverse.js +201 -150
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/traverse.test.js +33 -30
- package/dist/ir/traverse.test.js.map +1 -1
- package/dist/ir/unshare.js +65 -3
- package/dist/ir/unshare.js.map +1 -1
- package/dist/ir/unshare.test.js +1 -1
- package/dist/ir/validate.js +196 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +41 -11
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.test.js +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/ir-policy.js +14 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +5 -5
- package/dist/library/library-profile.d.ts +4 -4
- package/dist/library/library-profile.js +35 -7
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +13 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +35 -6
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/compiler.test.js +2 -2
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +10 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +19 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.d.ts +2 -0
- package/dist/native/toolchain.js +10 -1
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +39 -1
- 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/wasm/base64.d.ts +5 -0
- package/dist/wasm/base64.js +62 -0
- package/dist/wasm/base64.js.map +1 -0
- package/dist/wasm/binary.d.ts +36 -0
- package/dist/wasm/binary.js +1976 -0
- package/dist/wasm/binary.js.map +1 -0
- package/dist/wasm/binary.test.d.ts +1 -0
- package/dist/wasm/binary.test.js +190 -0
- package/dist/wasm/binary.test.js.map +1 -0
- package/dist/wasm/discover.d.ts +38 -0
- package/dist/wasm/discover.js +377 -0
- package/dist/wasm/discover.js.map +1 -0
- package/dist/wasm/discover.test.d.ts +1 -0
- package/dist/wasm/discover.test.js +24 -0
- package/dist/wasm/discover.test.js.map +1 -0
- package/dist/wasm/module.d.ts +151 -0
- package/dist/wasm/module.js +575 -0
- package/dist/wasm/module.js.map +1 -0
- package/dist/wasm/translate.d.ts +48 -0
- package/dist/wasm/translate.js +2129 -0
- package/dist/wasm/translate.js.map +1 -0
- package/dist/wasm/translate.test.d.ts +1 -0
- package/dist/wasm/translate.test.js +207 -0
- package/dist/wasm/translate.test.js.map +1 -0
- package/package.json +22 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +304 -22
|
@@ -41,6 +41,8 @@ import { sideEffectFreeOptionValue } from "./surfaces.js";
|
|
|
41
41
|
import { lowerDynObjectLiteral } from "./expressions/object-literals.js";
|
|
42
42
|
import { dynUndefinedExpr, varRef } from "../../ir/build.js";
|
|
43
43
|
import { genResultRecord } from "../type-mapper.js";
|
|
44
|
+
import { noteUntypedStreamFlow, requestGeneralStreamSurface } from "./general-streams.js";
|
|
45
|
+
import { dynNativeBranch } from "./dyn-streams.js";
|
|
44
46
|
import { extractIteratorValue, genStep, genValue, stepDrivable } from "./lower-generators.js";
|
|
45
47
|
import { BOOL, DYN, F64, RUNTIME_STREAM_CLASSES, STRING, VOID, arrayOf, BYTES_U8, canBoxFuncIntoDyn, canConvertToDyn, funcOf, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
46
48
|
const BYTES = BYTES_U8;
|
|
@@ -129,6 +131,15 @@ export const UNDERSCORE_METHODS = new Map([
|
|
|
129
131
|
["transform", "_transform"],
|
|
130
132
|
["flush", "_flush"],
|
|
131
133
|
]);
|
|
134
|
+
/** The completion callback's parameter position in each underscore
|
|
135
|
+
* method that takes one (cbTuples' "fn" positions). */
|
|
136
|
+
export const STREAM_COMPLETION_CALLBACK_INDEX = new Map([
|
|
137
|
+
["_write", 2],
|
|
138
|
+
["_final", 0],
|
|
139
|
+
["_destroy", 1],
|
|
140
|
+
["_transform", 2],
|
|
141
|
+
["_flush", 0],
|
|
142
|
+
]);
|
|
132
143
|
/** The accepted option-callback names (canonical flag order) and the
|
|
133
144
|
* duplex-shaped-head answer for one runtime stream class. */
|
|
134
145
|
export function streamCtorShape(cls) {
|
|
@@ -221,7 +232,7 @@ export function streamForcedTuple(lowerer, info, name) {
|
|
|
221
232
|
function lowerStreamCallback(lowerer, which, node, thisType, fullTuple) {
|
|
222
233
|
const loc = locOf(node);
|
|
223
234
|
const { shapes, funcType } = lowerer.lambdaSignature(node);
|
|
224
|
-
if (node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
|
|
235
|
+
if (node.modifiers?.nodes.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {
|
|
225
236
|
lowerer.unsupported("SC1090", node, `async stream '${which}' callbacks`);
|
|
226
237
|
}
|
|
227
238
|
if (funcType.params.length > fullTuple.length) {
|
|
@@ -248,10 +259,10 @@ function lowerStreamCallback(lowerer, which, node, thisType, fullTuple) {
|
|
|
248
259
|
const thisLocal = ts.isArrowFunction(node)
|
|
249
260
|
? lowerer.declareHiddenLocal("this", thisType)
|
|
250
261
|
: lowerer.declareThis(thisType);
|
|
251
|
-
const { params, prologue } = lowerer.declareParams(node.parameters, shapes);
|
|
262
|
+
const { params, prologue } = lowerer.declareParams(node.parameters.nodes, shapes);
|
|
252
263
|
let body;
|
|
253
264
|
if (node.body !== undefined && ts.isBlock(node.body)) {
|
|
254
|
-
body = lowerer.lowerStmts(node.body.statements);
|
|
265
|
+
body = lowerer.lowerStmts(node.body.statements.nodes);
|
|
255
266
|
}
|
|
256
267
|
else if (node.body !== undefined) {
|
|
257
268
|
// Bare-expression bodies (`read: () => this.push(null)`): the value
|
|
@@ -402,7 +413,7 @@ function followOptionsArg(lowerer, arg) {
|
|
|
402
413
|
catch {
|
|
403
414
|
return node;
|
|
404
415
|
}
|
|
405
|
-
const decl = sym ?
|
|
416
|
+
const decl = sym ? sym.valueDeclaration : undefined;
|
|
406
417
|
if (!sym || !decl || !ts.isVariableDeclaration(decl) || decl.initializer === undefined)
|
|
407
418
|
return node;
|
|
408
419
|
if ((ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) === 0)
|
|
@@ -485,6 +496,28 @@ function dynOptionsValue(lowerer, arg) {
|
|
|
485
496
|
const v = lowerer.lowerExpr(followed);
|
|
486
497
|
return v.type.kind === "dyn" ? v : null;
|
|
487
498
|
}
|
|
499
|
+
/** @types/node declares the transform/flush completion callback as
|
|
500
|
+
* `(error?: Error | null, data?: any) => void`. Outside objectMode Node
|
|
501
|
+
* accepts only a Buffer, a string or nothing as `data`, so the callback
|
|
502
|
+
* parameter is typed with that union while the option callback lowers: a
|
|
503
|
+
* checked-dynamic value passed as `data` converts at the call. Returns the
|
|
504
|
+
* pinned parameter symbol (the caller unpins it), or null when the
|
|
505
|
+
* declared type needs no pin. */
|
|
506
|
+
function pinAnyDataCompletion(lowerer, which, fnNode) {
|
|
507
|
+
const index = which === "transform" ? 2 : which === "flush" ? 0 : -1;
|
|
508
|
+
const param = index < 0 ? undefined : fnNode.parameters.nodes[index];
|
|
509
|
+
if (param === undefined || !ts.isIdentifier(param.name) || param.dotDotDotToken)
|
|
510
|
+
return null;
|
|
511
|
+
const symbol = lowerer.checker.getSymbolAtLocation(param.name);
|
|
512
|
+
if (!symbol || lowerer.stageSourceTypes.has(symbol))
|
|
513
|
+
return null;
|
|
514
|
+
const declared = lowerer.paramShape(param).type;
|
|
515
|
+
if (declared.kind !== "func" || declared.rest || declared.params[1]?.kind !== "dyn")
|
|
516
|
+
return null;
|
|
517
|
+
const data = unionOf(lowerer, [BYTES, STRING, { kind: "undefinedT" }]);
|
|
518
|
+
lowerer.stageSourceTypes.set(symbol, funcOf([declared.params[0], data, ...declared.params.slice(2)], declared.ret));
|
|
519
|
+
return symbol;
|
|
520
|
+
}
|
|
488
521
|
/** Parses the options object literal of a stream constructor. `which`
|
|
489
522
|
* names the callbacks this class accepts, in canonical flag order. */
|
|
490
523
|
function parseStreamOptions(lowerer, ctorName, arg, thisType, accepted, loc,
|
|
@@ -515,7 +548,7 @@ fallbackCb) {
|
|
|
515
548
|
}
|
|
516
549
|
const tuples = cbTuples(lowerer);
|
|
517
550
|
const present = new Map();
|
|
518
|
-
for (const prop of optsLit?.properties ?? []) {
|
|
551
|
+
for (const prop of optsLit?.properties?.nodes ?? []) {
|
|
519
552
|
const propName = ts.isSpreadAssignment(prop) ? undefined : prop.name;
|
|
520
553
|
const name = propName && ts.isIdentifier(propName)
|
|
521
554
|
? propName.text
|
|
@@ -550,20 +583,27 @@ fallbackCb) {
|
|
|
550
583
|
continue;
|
|
551
584
|
}
|
|
552
585
|
const full = tuples[name].map((t) => (t === "fn" ? null : t));
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
586
|
+
const pinned = pinAnyDataCompletion(lowerer, name, fnNode);
|
|
587
|
+
try {
|
|
588
|
+
// The completion-callback tail: typed by the checker contextually;
|
|
589
|
+
// accept the user's declared func type as the tuple's entry so the
|
|
590
|
+
// prefix check compares like with like.
|
|
591
|
+
const { funcType } = lowerer.lambdaSignature(fnNode);
|
|
592
|
+
const tuple = full.map((t, i) => {
|
|
593
|
+
if (t !== null)
|
|
594
|
+
return t;
|
|
595
|
+
const declared = funcType.params[i];
|
|
596
|
+
if (declared !== undefined && declared.kind !== "func" && declared.kind !== "dyn") {
|
|
597
|
+
lowerer.noLowering(`a '${name}' callback whose parameter ${i} is '${lowerer.fmt(declared)}' where Node passes the completion callback`, fnNode);
|
|
598
|
+
}
|
|
599
|
+
return declared ?? funcOf([], VOID);
|
|
600
|
+
});
|
|
601
|
+
present.set(name, lowerStreamCallback(lowerer, name, fnNode, thisType, tuple));
|
|
602
|
+
}
|
|
603
|
+
finally {
|
|
604
|
+
if (pinned)
|
|
605
|
+
lowerer.stageSourceTypes.delete(pinned);
|
|
606
|
+
}
|
|
567
607
|
continue;
|
|
568
608
|
}
|
|
569
609
|
// `{ signal }` shorthand: the binding is the value.
|
|
@@ -758,7 +798,7 @@ export function lowerStreamNew(lowerer, expr, info) {
|
|
|
758
798
|
if (!RUNTIME_STREAM_CLASSES.has(cls))
|
|
759
799
|
lowerer.unsupported("SC1090", expr, `constructing ${cls}`);
|
|
760
800
|
const thisType = { kind: "object", className: cls };
|
|
761
|
-
const args = expr.arguments ?? [];
|
|
801
|
+
const args = expr.arguments?.nodes ?? [];
|
|
762
802
|
if (args.length > 1) {
|
|
763
803
|
lowerer.noLowering(`new ${info.def.name.slice(1)} with ${args.length} arguments`, expr, "the supported form takes one options object");
|
|
764
804
|
}
|
|
@@ -815,6 +855,15 @@ export function lowerStreamNew(lowerer, expr, info) {
|
|
|
815
855
|
loc,
|
|
816
856
|
};
|
|
817
857
|
}
|
|
858
|
+
/** True when a value of Node's argument type `passed` widens implicitly
|
|
859
|
+
* into the declared parameter type `declared` (one of its union arms, or a
|
|
860
|
+
* sub-union of it). */
|
|
861
|
+
function widensInto(lowerer, passed, declared, loc) {
|
|
862
|
+
if (declared.kind !== "union")
|
|
863
|
+
return false;
|
|
864
|
+
const probe = { kind: "varRef", localId: "%probe", type: passed, loc };
|
|
865
|
+
return typeEquals(lowerer.coerceToExpected(probe, declared).type, declared);
|
|
866
|
+
}
|
|
818
867
|
/* ── user subclasses (`extends Readable`, the underscore-override form) ── */
|
|
819
868
|
/** The wrapper closure binding one overridden underscore method as the
|
|
820
869
|
* runtime's option callback: a lifted (this, ...prefix) function whose
|
|
@@ -865,7 +914,14 @@ function streamMethodWrapper(lowerer, info, which, methodName, thisType, loc, bl
|
|
|
865
914
|
}
|
|
866
915
|
}
|
|
867
916
|
else if (!typeEquals(got.type, want)) {
|
|
868
|
-
|
|
917
|
+
// A declared supertype of what Node passes (`chunk: Buffer | string`)
|
|
918
|
+
// is sound: the wrapper takes Node's value and widens it into the
|
|
919
|
+
// declared parameter.
|
|
920
|
+
if (widensInto(lowerer, want, got.type, loc)) {
|
|
921
|
+
paramTypes.push(want);
|
|
922
|
+
continue;
|
|
923
|
+
}
|
|
924
|
+
lowerer.noLowering(`a '${methodName}' method whose parameter ${i} is '${lowerer.fmt(got.type)}' where Node passes '${lowerer.fmt(want)}'`, blame, "annotate the parameter with the Node signature's type or a supertype of it (chunks are Buffers here)");
|
|
869
925
|
}
|
|
870
926
|
paramTypes.push(got.type);
|
|
871
927
|
}
|
|
@@ -880,7 +936,9 @@ function streamMethodWrapper(lowerer, info, which, methodName, thisType, loc, bl
|
|
|
880
936
|
for (let i = 0; i < paramTypes.length; i++) {
|
|
881
937
|
const local = lowerer.declareHiddenLocal(`a${i}`, paramTypes[i]);
|
|
882
938
|
params.push({ localId: local.id, name: local.name, type: paramTypes[i] });
|
|
883
|
-
|
|
939
|
+
const arg = { kind: "varRef", localId: local.id, type: paramTypes[i], loc };
|
|
940
|
+
const declaredType = declared[i].type;
|
|
941
|
+
argRefs.push(typeEquals(arg.type, declaredType) ? arg : lowerer.coerceToExpected(arg, declaredType));
|
|
884
942
|
}
|
|
885
943
|
const thisRef = { kind: "varRef", localId: thisLocal.id, type: thisType, loc };
|
|
886
944
|
let call;
|
|
@@ -1164,14 +1222,14 @@ export function lowerStreamStaticCall(lowerer, call, access) {
|
|
|
1164
1222
|
// exists; valid shapes keep the fence — the web bridge has no lowering.
|
|
1165
1223
|
if (member === "toWeb" &&
|
|
1166
1224
|
cls === "%Readable" &&
|
|
1167
|
-
call.arguments.length === 2 &&
|
|
1168
|
-
isJsSourceFile(
|
|
1169
|
-
ts.isObjectLiteralExpression(call.arguments[1])) {
|
|
1170
|
-
for (const p of call.arguments[1].properties) {
|
|
1225
|
+
call.arguments.nodes.length === 2 &&
|
|
1226
|
+
isJsSourceFile(ts.getSourceFileOfNode(call)) &&
|
|
1227
|
+
ts.isObjectLiteralExpression(call.arguments.nodes[1])) {
|
|
1228
|
+
for (const p of call.arguments.nodes[1].properties.nodes) {
|
|
1171
1229
|
if (ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === "type") {
|
|
1172
1230
|
const t = lowerer.typeOf(p.initializer);
|
|
1173
1231
|
if (t.isStringLiteralType() && t.value !== "bytes") {
|
|
1174
|
-
lowerer.lowerExpr(call.arguments[0]); // evaluation order (the stream argument)
|
|
1232
|
+
lowerer.lowerExpr(call.arguments.nodes[0]); // evaluation order (the stream argument)
|
|
1175
1233
|
return nodeThrowExpr(1, "ERR_INVALID_ARG_VALUE", `The property 'options.type' must be one of: 'bytes', undefined. Received '${t.value}'`, lowerer.mapTypeOf(lowerer.typeOf(call)) ?? DYN, loc);
|
|
1176
1234
|
}
|
|
1177
1235
|
}
|
|
@@ -1183,12 +1241,12 @@ export function lowerStreamStaticCall(lowerer, call, access) {
|
|
|
1183
1241
|
if (cls !== "%Readable") {
|
|
1184
1242
|
lowerer.noLowering(`${cls.slice(1)}.from`, call, "Readable.from is the lowered form");
|
|
1185
1243
|
}
|
|
1186
|
-
const args = call.arguments;
|
|
1244
|
+
const args = call.arguments.nodes;
|
|
1187
1245
|
if (args.length > 2) {
|
|
1188
1246
|
lowerer.noLowering(`Readable.from with ${args.length} arguments`, call, "Readable.from(iterable, options) is the supported form");
|
|
1189
1247
|
}
|
|
1190
1248
|
const type = { kind: "object", className: "%Readable" };
|
|
1191
|
-
const js = isJsSourceFile(
|
|
1249
|
+
const js = isJsSourceFile(ts.getSourceFileOfNode(call));
|
|
1192
1250
|
const srcNode = args[0];
|
|
1193
1251
|
const optsNode = args[1];
|
|
1194
1252
|
const srcT = srcNode ? lowerer.mapTypeOf(lowerer.typeOf(srcNode)) : null;
|
|
@@ -1626,7 +1684,7 @@ function fromOptions(lowerer, node) {
|
|
|
1626
1684
|
return null;
|
|
1627
1685
|
let flags = 0;
|
|
1628
1686
|
let hwm = null;
|
|
1629
|
-
for (const prop of node.properties) {
|
|
1687
|
+
for (const prop of node.properties.nodes) {
|
|
1630
1688
|
if (!ts.isPropertyAssignment(prop) ||
|
|
1631
1689
|
!(ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name))) {
|
|
1632
1690
|
return null;
|
|
@@ -1690,6 +1748,24 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1690
1748
|
const v = isHashValueType(lowered.type)
|
|
1691
1749
|
? hashStreamOf(lowered, what === "pipeline" || what === "compose")
|
|
1692
1750
|
: lowered;
|
|
1751
|
+
// A checked-dynamic pipeline stage (an untyped source or destination):
|
|
1752
|
+
// a boxed native stream unwraps at run time; other values (iterables,
|
|
1753
|
+
// functions) throw the not-supported Error there.
|
|
1754
|
+
if (v.type.kind === "dyn" && what === "pipeline") {
|
|
1755
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
1756
|
+
return {
|
|
1757
|
+
kind: "libCall",
|
|
1758
|
+
fn: "stream.unboxDyn",
|
|
1759
|
+
args: [
|
|
1760
|
+
v,
|
|
1761
|
+
strLit(lowerer.dynNodeStreams
|
|
1762
|
+
? "pipeline stages other than native streams (JavaScript stream objects, iterables, generators, plain functions, and { readable, writable } pairs) are not supported yet"
|
|
1763
|
+
: "pipeline stages other than native streams (iterables, generators, plain functions, and { readable, writable } pairs) are not supported yet", locOf(node)),
|
|
1764
|
+
],
|
|
1765
|
+
type: { kind: "object", className: "%Duplex" },
|
|
1766
|
+
loc: locOf(node),
|
|
1767
|
+
};
|
|
1768
|
+
}
|
|
1693
1769
|
const info = v.type.kind === "object" ? lowerer.classes.get(v.type.className) : undefined;
|
|
1694
1770
|
if (!streamSidesOf(lowerer, info)) {
|
|
1695
1771
|
// A provably-non-stream value in a JS source (the invalid-input
|
|
@@ -1708,7 +1784,7 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1708
1784
|
loc: locOf(node),
|
|
1709
1785
|
});
|
|
1710
1786
|
};
|
|
1711
|
-
if (isJsSourceFile(
|
|
1787
|
+
if (isJsSourceFile(ts.getSourceFileOfNode(node)) && lowerer.dynConvertible(v.type)) {
|
|
1712
1788
|
if (what === "pipeline") {
|
|
1713
1789
|
// Strings and arrays are iterables — VALID pipeline stages in
|
|
1714
1790
|
// Node — and a record carrying a readable/writable member may be
|
|
@@ -1723,7 +1799,7 @@ function lowerStreamArg(lowerer, node, what) {
|
|
|
1723
1799
|
argTypeThrow("body", PIPELINE_STAGE_EXPECTED);
|
|
1724
1800
|
}
|
|
1725
1801
|
}
|
|
1726
|
-
else if ((ts.isObjectLiteralExpression(node) && node.properties.length === 0) ||
|
|
1802
|
+
else if ((ts.isObjectLiteralExpression(node) && node.properties.nodes.length === 0) ||
|
|
1727
1803
|
v.type.kind === "record" ||
|
|
1728
1804
|
v.type.kind === "string" ||
|
|
1729
1805
|
v.type.kind === "f64" ||
|
|
@@ -1829,7 +1905,7 @@ function eosOptions(lowerer, node, promiseForm) {
|
|
|
1829
1905
|
return false;
|
|
1830
1906
|
lowerer.noLowering(`the finished option '${key}' with a non-literal value`, p.initializer, "pass true or false");
|
|
1831
1907
|
};
|
|
1832
|
-
for (const p of node.properties) {
|
|
1908
|
+
for (const p of node.properties.nodes) {
|
|
1833
1909
|
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1834
1910
|
? p.name.text
|
|
1835
1911
|
: null;
|
|
@@ -1863,7 +1939,7 @@ function eosOptions(lowerer, node, promiseForm) {
|
|
|
1863
1939
|
* any expression, end as a boolean literal. */
|
|
1864
1940
|
function pipelineOptions(lowerer, node) {
|
|
1865
1941
|
const out = { end: true, signal: null };
|
|
1866
|
-
for (const p of node.properties) {
|
|
1942
|
+
for (const p of node.properties.nodes) {
|
|
1867
1943
|
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1868
1944
|
? p.name.text
|
|
1869
1945
|
: null;
|
|
@@ -1892,7 +1968,7 @@ function pipelineOptions(lowerer, node) {
|
|
|
1892
1968
|
* does not own — the caller's module-qualified fence speaks. */
|
|
1893
1969
|
export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
1894
1970
|
if (bi.module === "stream/promises") {
|
|
1895
|
-
const args = call.arguments;
|
|
1971
|
+
const args = call.arguments.nodes;
|
|
1896
1972
|
// finished(stream) → a pending void promise the terminal watcher
|
|
1897
1973
|
// settles (rejected with the stream's error, or
|
|
1898
1974
|
// ERR_STREAM_PREMATURE_CLOSE — the callback form's status, boxed
|
|
@@ -1993,7 +2069,7 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1993
2069
|
return null;
|
|
1994
2070
|
}
|
|
1995
2071
|
if (bi.module === "stream/consumers") {
|
|
1996
|
-
const args = call.arguments;
|
|
2072
|
+
const args = call.arguments.nodes;
|
|
1997
2073
|
// text/json/buffer/arrayBuffer(stream) → a pending promise the
|
|
1998
2074
|
// accumulate-and-settle machinery resolves at the terminal point (the
|
|
1999
2075
|
// utf8 decode / the parsed JSON dyn tree / the concatenated bytes / an
|
|
@@ -2034,7 +2110,7 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
2034
2110
|
}
|
|
2035
2111
|
if (bi.module !== "stream")
|
|
2036
2112
|
return null;
|
|
2037
|
-
const args = call.arguments;
|
|
2113
|
+
const args = call.arguments.nodes;
|
|
2038
2114
|
if (bi.member === "getDefaultHighWaterMark") {
|
|
2039
2115
|
// Node 24: 65536 bytes / 16 objects — compile-time literals only.
|
|
2040
2116
|
// The byte default is platform-split at Node's source
|
|
@@ -2206,7 +2282,7 @@ function lowerPipelineStages(lowerer, stageArgs, loc) {
|
|
|
2206
2282
|
for (let i = first; i < end; i++) {
|
|
2207
2283
|
const fn = stageArgs[i];
|
|
2208
2284
|
const isLast = destFn && i === end - 1;
|
|
2209
|
-
const isAsync = (fn.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
|
|
2285
|
+
const isAsync = (fn.modifiers?.nodes ?? []).some((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
|
|
2210
2286
|
const isGen = ts.isFunctionExpression(fn) && fn.asteriskToken !== undefined;
|
|
2211
2287
|
if (isLast && isGen) {
|
|
2212
2288
|
// pipeline() pumps it into an object-mode PassThrough, whose
|
|
@@ -2221,14 +2297,14 @@ function lowerPipelineStages(lowerer, stageArgs, loc) {
|
|
|
2221
2297
|
: "pipeline stages that are not async generator functions", fn, "write the stage as async function* (source) { for await (const chunk of source) ... }");
|
|
2222
2298
|
}
|
|
2223
2299
|
const optionsAt = srcT === null ? 0 : 1;
|
|
2224
|
-
if (fn.parameters.length > optionsAt + 1) {
|
|
2225
|
-
lowerer.noLowering("pipeline stages with parameters after the options argument", fn.parameters[optionsAt + 1], "a stage takes the source and { signal }");
|
|
2300
|
+
if (fn.parameters.nodes.length > optionsAt + 1) {
|
|
2301
|
+
lowerer.noLowering("pipeline stages with parameters after the options argument", fn.parameters.nodes[optionsAt + 1], "a stage takes the source and { signal }");
|
|
2226
2302
|
}
|
|
2227
2303
|
const lowered = lowerStageFunction(lowerer, fn, srcT);
|
|
2228
2304
|
const params = lowered.closure.type.kind === "func" ? lowered.closure.type.params : [];
|
|
2229
2305
|
if (params.length > optionsAt) {
|
|
2230
2306
|
if (params[optionsAt].kind !== "dyn") {
|
|
2231
|
-
lowerer.noLowering("a pipeline stage's options argument with this type", fn.parameters[optionsAt], "type it as { signal: AbortSignal }");
|
|
2307
|
+
lowerer.noLowering("a pipeline stage's options argument with this type", fn.parameters.nodes[optionsAt], "type it as { signal: AbortSignal }");
|
|
2232
2308
|
}
|
|
2233
2309
|
mask |= 1 << (i - first);
|
|
2234
2310
|
}
|
|
@@ -2411,7 +2487,7 @@ function pipelineAbortHelper(lowerer, ac, loc) {
|
|
|
2411
2487
|
* `for await` loops. Answers the closure and what it returns: an async
|
|
2412
2488
|
* generator, or a promise for a destination async function. */
|
|
2413
2489
|
function lowerStageFunction(lowerer, fn, srcT) {
|
|
2414
|
-
const param = srcT === null ? undefined : fn.parameters[0];
|
|
2490
|
+
const param = srcT === null ? undefined : fn.parameters.nodes[0];
|
|
2415
2491
|
const symbol = param && ts.isIdentifier(param.name)
|
|
2416
2492
|
? lowerer.checker.getSymbolAtLocation(param.name)
|
|
2417
2493
|
: undefined;
|
|
@@ -2456,7 +2532,7 @@ function lowerStageFunction(lowerer, fn, srcT) {
|
|
|
2456
2532
|
* the wrong position, a single Readable or Writable (Duplex.from wraps
|
|
2457
2533
|
* those), and functions, iterables or web streams have no lowering. */
|
|
2458
2534
|
function lowerStreamCompose(lowerer, call, loc) {
|
|
2459
|
-
const args = call.arguments;
|
|
2535
|
+
const args = call.arguments.nodes;
|
|
2460
2536
|
const duplex = { kind: "object", className: "%Duplex" };
|
|
2461
2537
|
if (args.some((a) => ts.isSpreadElement(a))) {
|
|
2462
2538
|
lowerer.noLowering("compose with spread arguments", call, "pass the streams directly");
|
|
@@ -2520,14 +2596,14 @@ function lowerOperatorCallback(lowerer, node, member, maxParams) {
|
|
|
2520
2596
|
const loc = locOf(node);
|
|
2521
2597
|
const optionsParam = (at) => lowerer.noLowering(`${member} callbacks that declare the options argument`, at, "the { signal } argument has no lowering — take only the chunk");
|
|
2522
2598
|
if ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
|
|
2523
|
-
node.parameters.length > maxParams) {
|
|
2524
|
-
optionsParam(node.parameters[maxParams]);
|
|
2599
|
+
node.parameters.nodes.length > maxParams) {
|
|
2600
|
+
optionsParam(node.parameters.nodes[maxParams]);
|
|
2525
2601
|
}
|
|
2526
2602
|
const v = lowerer.lowerExpr(node);
|
|
2527
2603
|
if (v.type.kind === "dyn")
|
|
2528
2604
|
return v;
|
|
2529
2605
|
if (v.type.kind !== "func" &&
|
|
2530
|
-
isJsSourceFile(
|
|
2606
|
+
isJsSourceFile(ts.getSourceFileOfNode(node)) &&
|
|
2531
2607
|
lowerer.dynConvertible(v.type)) {
|
|
2532
2608
|
// JavaScript passes any value; Node's validateFunction throws.
|
|
2533
2609
|
return { kind: "dynFrom", value: v, type: DYN, loc };
|
|
@@ -2577,7 +2653,7 @@ function lowerOperatorValue(lowerer, node, what, loc, literalObject) {
|
|
|
2577
2653
|
}
|
|
2578
2654
|
function lowerStreamOperator(lowerer, call, access, member) {
|
|
2579
2655
|
const loc = locOf(call);
|
|
2580
|
-
const args = call.arguments;
|
|
2656
|
+
const args = call.arguments.nodes;
|
|
2581
2657
|
const recv = lowerer.lowerExpr(access.expression);
|
|
2582
2658
|
const readable = { kind: "object", className: "%Readable" };
|
|
2583
2659
|
const opts = (i) => lowerOperatorValue(lowerer, args[i], `${member} options`, loc, true);
|
|
@@ -2688,7 +2764,7 @@ function pipeEndOption(lowerer, options, loc) {
|
|
|
2688
2764
|
if (!ts.isObjectLiteralExpression(options)) {
|
|
2689
2765
|
lowerer.noLowering("pipe with a non-literal options argument", options, "{ end: <bool> } inline is the supported form");
|
|
2690
2766
|
}
|
|
2691
|
-
for (const prop of options.properties) {
|
|
2767
|
+
for (const prop of options.properties.nodes) {
|
|
2692
2768
|
if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name) || prop.name.text !== "end") {
|
|
2693
2769
|
lowerer.noLowering("a pipe option other than 'end'", prop);
|
|
2694
2770
|
}
|
|
@@ -2696,6 +2772,210 @@ function pipeEndOption(lowerer, options, loc) {
|
|
|
2696
2772
|
}
|
|
2697
2773
|
return end;
|
|
2698
2774
|
}
|
|
2775
|
+
/** `readable.pipe(process.stdout)`: the process stream joins the pipe as
|
|
2776
|
+
* an fd-backed Writable (stream.stdioWritable), and — like Node, which
|
|
2777
|
+
* never ends process.stdout or process.stderr from a pipe — the source's
|
|
2778
|
+
* end does not end it. pipe() answers the process stream itself. */
|
|
2779
|
+
function pipeIntoStdio(lowerer, call, access, target) {
|
|
2780
|
+
const loc = locOf(call);
|
|
2781
|
+
// JS order: the receiver, then the destination, then the options.
|
|
2782
|
+
const receiverValue = lowerer.lowerExpr(access.expression);
|
|
2783
|
+
const source = lowerer.declareHiddenLocal("%pipeSource", receiverValue.type);
|
|
2784
|
+
const stdio = lowerer.declareHiddenLocal("%pipeStdio", target.type);
|
|
2785
|
+
const options = call.arguments.nodes[1];
|
|
2786
|
+
const stmts = [
|
|
2787
|
+
{ kind: "varDecl", localId: source.id, init: receiverValue, loc },
|
|
2788
|
+
{ kind: "varDecl", localId: stdio.id, init: target, loc },
|
|
2789
|
+
];
|
|
2790
|
+
// The options literal still evaluates; its end flag has no effect here.
|
|
2791
|
+
if (options !== undefined) {
|
|
2792
|
+
stmts.push({ kind: "exprStmt", expr: pipeEndOption(lowerer, options, loc), loc });
|
|
2793
|
+
}
|
|
2794
|
+
const receiver = { kind: "varRef", localId: source.id, type: receiverValue.type, loc };
|
|
2795
|
+
const writable = { kind: "object", className: "%Writable" };
|
|
2796
|
+
stmts.push({
|
|
2797
|
+
kind: "exprStmt",
|
|
2798
|
+
expr: {
|
|
2799
|
+
kind: "libCall",
|
|
2800
|
+
fn: "readable.pipe",
|
|
2801
|
+
args: [
|
|
2802
|
+
receiver,
|
|
2803
|
+
{
|
|
2804
|
+
kind: "libCall",
|
|
2805
|
+
fn: "stream.stdioWritable",
|
|
2806
|
+
args: [{ kind: "varRef", localId: stdio.id, type: target.type, loc }],
|
|
2807
|
+
type: writable,
|
|
2808
|
+
loc,
|
|
2809
|
+
},
|
|
2810
|
+
boolLit(false, loc),
|
|
2811
|
+
],
|
|
2812
|
+
type: writable,
|
|
2813
|
+
loc,
|
|
2814
|
+
},
|
|
2815
|
+
loc,
|
|
2816
|
+
});
|
|
2817
|
+
return {
|
|
2818
|
+
kind: "seqExpr",
|
|
2819
|
+
stmts,
|
|
2820
|
+
result: { kind: "varRef", localId: stdio.id, type: target.type, loc },
|
|
2821
|
+
type: target.type,
|
|
2822
|
+
loc,
|
|
2823
|
+
};
|
|
2824
|
+
}
|
|
2825
|
+
/** `readable.unpipe(untyped)`: a native destination (boxed) unpipes as a
|
|
2826
|
+
* typed one does; any other value unpipes the JavaScript destination a
|
|
2827
|
+
* pipe into it registered (scr_stream_dyn.c), or does nothing when there
|
|
2828
|
+
* is none, as Node's unpipe does for a destination it is not piped into.
|
|
2829
|
+
* The call answers the source. */
|
|
2830
|
+
function unpipeDyn(lowerer, receiver, dst, loc) {
|
|
2831
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
2832
|
+
const source = lowerer.declareHiddenLocal("%unpipeSource", receiver.type);
|
|
2833
|
+
const destination = lowerer.declareHiddenLocal("%unpipeDestination", dst.type);
|
|
2834
|
+
const sourceRef = varRef(source.id, receiver.type, loc);
|
|
2835
|
+
const destinationRef = varRef(destination.id, dst.type, loc);
|
|
2836
|
+
const stmts = [
|
|
2837
|
+
{ kind: "varDecl", localId: source.id, init: receiver, loc },
|
|
2838
|
+
{ kind: "varDecl", localId: destination.id, init: dst, loc },
|
|
2839
|
+
];
|
|
2840
|
+
const unpipeNative = (native) => ({
|
|
2841
|
+
kind: "exprStmt",
|
|
2842
|
+
expr: {
|
|
2843
|
+
kind: "libCall",
|
|
2844
|
+
fn: "readable.unpipe",
|
|
2845
|
+
args: [sourceRef, native],
|
|
2846
|
+
type: receiver.type,
|
|
2847
|
+
loc,
|
|
2848
|
+
},
|
|
2849
|
+
loc,
|
|
2850
|
+
});
|
|
2851
|
+
if (lowerer.dynNodeStreams) {
|
|
2852
|
+
stmts.push(dynNativeBranch(lowerer, destinationRef, "w", unpipeNative, {
|
|
2853
|
+
kind: "exprStmt",
|
|
2854
|
+
expr: {
|
|
2855
|
+
kind: "libCall",
|
|
2856
|
+
fn: "stream.unpipeDyn",
|
|
2857
|
+
args: [sourceRef, destinationRef],
|
|
2858
|
+
type: VOID,
|
|
2859
|
+
loc,
|
|
2860
|
+
},
|
|
2861
|
+
loc,
|
|
2862
|
+
}));
|
|
2863
|
+
}
|
|
2864
|
+
else {
|
|
2865
|
+
stmts.push(unpipeNative({
|
|
2866
|
+
kind: "libCall",
|
|
2867
|
+
fn: "stream.unboxDyn",
|
|
2868
|
+
args: [
|
|
2869
|
+
destinationRef,
|
|
2870
|
+
strLit("unpipe destinations other than native streams are not supported yet", loc),
|
|
2871
|
+
],
|
|
2872
|
+
type: { kind: "object", className: "%Duplex" },
|
|
2873
|
+
loc,
|
|
2874
|
+
}));
|
|
2875
|
+
}
|
|
2876
|
+
return { kind: "seqExpr", stmts, result: sourceRef, type: receiver.type, loc };
|
|
2877
|
+
}
|
|
2878
|
+
/** The pipe() libCall for a destination of type `dst`. Under the general
|
|
2879
|
+
* stream representation a Writable slot can hold the converted
|
|
2880
|
+
* process.stdout / process.stderr, which a pipe never ends (as in Node), so
|
|
2881
|
+
* the pipe takes readable.pipeGeneral, which checks for them. */
|
|
2882
|
+
function generalPipe(lowerer, dst) {
|
|
2883
|
+
return lowerer.generalNodeStreams && dst.kind === "object" && dst.className === "%Writable"
|
|
2884
|
+
? "readable.pipeGeneral"
|
|
2885
|
+
: "readable.pipe";
|
|
2886
|
+
}
|
|
2887
|
+
/** `readable.pipe(untyped)`: a checked-dynamic destination unwraps a boxed
|
|
2888
|
+
* native stream at run time (stream.unboxDyn; other values throw the
|
|
2889
|
+
* not-supported Error), and pipe() answers the destination value itself. */
|
|
2890
|
+
function pipeIntoDyn(lowerer, call, access, target) {
|
|
2891
|
+
const loc = locOf(call);
|
|
2892
|
+
noteUntypedStreamFlow(lowerer, null);
|
|
2893
|
+
const receiverValue = lowerer.lowerExpr(access.expression);
|
|
2894
|
+
const source = lowerer.declareHiddenLocal("%pipeSource", receiverValue.type);
|
|
2895
|
+
const destination = lowerer.declareHiddenLocal("%pipeDestination", target.type);
|
|
2896
|
+
const stmts = [
|
|
2897
|
+
{ kind: "varDecl", localId: source.id, init: receiverValue, loc },
|
|
2898
|
+
{ kind: "varDecl", localId: destination.id, init: target, loc },
|
|
2899
|
+
];
|
|
2900
|
+
const end = pipeEndOption(lowerer, call.arguments.nodes[1], loc);
|
|
2901
|
+
const duplex = { kind: "object", className: "%Duplex" };
|
|
2902
|
+
// Checked-dynamic stream slots (dyn-streams.ts): a JavaScript stream
|
|
2903
|
+
// object is a destination too, piped with Node's listener protocol.
|
|
2904
|
+
if (lowerer.dynNodeStreams) {
|
|
2905
|
+
const sourceRef = { kind: "varRef", localId: source.id, type: receiverValue.type, loc };
|
|
2906
|
+
const destinationRef = {
|
|
2907
|
+
kind: "varRef",
|
|
2908
|
+
localId: destination.id,
|
|
2909
|
+
type: target.type,
|
|
2910
|
+
loc,
|
|
2911
|
+
};
|
|
2912
|
+
const ending = lowerer.declareHiddenLocal("%pipeEnd", BOOL);
|
|
2913
|
+
stmts.push({ kind: "varDecl", localId: ending.id, init: end, loc });
|
|
2914
|
+
const endRef = { kind: "varRef", localId: ending.id, type: BOOL, loc };
|
|
2915
|
+
stmts.push(dynNativeBranch(lowerer, destinationRef, "w", (native) => ({
|
|
2916
|
+
kind: "exprStmt",
|
|
2917
|
+
expr: {
|
|
2918
|
+
kind: "libCall",
|
|
2919
|
+
// Checked-dynamic slots come with the general representation,
|
|
2920
|
+
// where a boxed native destination can be the converted
|
|
2921
|
+
// process.stdout (generalPipe).
|
|
2922
|
+
fn: "readable.pipeGeneral",
|
|
2923
|
+
args: [sourceRef, native, endRef],
|
|
2924
|
+
type: native.type,
|
|
2925
|
+
loc,
|
|
2926
|
+
},
|
|
2927
|
+
loc,
|
|
2928
|
+
}), {
|
|
2929
|
+
kind: "exprStmt",
|
|
2930
|
+
expr: {
|
|
2931
|
+
kind: "libCall",
|
|
2932
|
+
fn: "stream.pipeDyn",
|
|
2933
|
+
args: [sourceRef, lowerer.coerceToExpected(sourceRef, DYN), destinationRef, endRef],
|
|
2934
|
+
type: VOID,
|
|
2935
|
+
loc,
|
|
2936
|
+
},
|
|
2937
|
+
loc,
|
|
2938
|
+
}));
|
|
2939
|
+
return {
|
|
2940
|
+
kind: "seqExpr",
|
|
2941
|
+
stmts,
|
|
2942
|
+
result: destinationRef,
|
|
2943
|
+
type: target.type,
|
|
2944
|
+
loc,
|
|
2945
|
+
};
|
|
2946
|
+
}
|
|
2947
|
+
stmts.push({
|
|
2948
|
+
kind: "exprStmt",
|
|
2949
|
+
expr: {
|
|
2950
|
+
kind: "libCall",
|
|
2951
|
+
fn: lowerer.generalNodeStreams ? "readable.pipeGeneral" : "readable.pipe",
|
|
2952
|
+
args: [
|
|
2953
|
+
{ kind: "varRef", localId: source.id, type: receiverValue.type, loc },
|
|
2954
|
+
{
|
|
2955
|
+
kind: "libCall",
|
|
2956
|
+
fn: "stream.unboxDyn",
|
|
2957
|
+
args: [
|
|
2958
|
+
{ kind: "varRef", localId: destination.id, type: target.type, loc },
|
|
2959
|
+
strLit("pipe destinations other than native streams are not supported yet", loc),
|
|
2960
|
+
],
|
|
2961
|
+
type: duplex,
|
|
2962
|
+
loc,
|
|
2963
|
+
},
|
|
2964
|
+
end,
|
|
2965
|
+
],
|
|
2966
|
+
type: duplex,
|
|
2967
|
+
loc,
|
|
2968
|
+
},
|
|
2969
|
+
loc,
|
|
2970
|
+
});
|
|
2971
|
+
return {
|
|
2972
|
+
kind: "seqExpr",
|
|
2973
|
+
stmts,
|
|
2974
|
+
result: { kind: "varRef", localId: destination.id, type: target.type, loc },
|
|
2975
|
+
type: target.type,
|
|
2976
|
+
loc,
|
|
2977
|
+
};
|
|
2978
|
+
}
|
|
2699
2979
|
export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
2700
2980
|
const member = access.name.text;
|
|
2701
2981
|
if (STREAM_OPERATORS.has(member)) {
|
|
@@ -2709,7 +2989,7 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2709
2989
|
if (!sides)
|
|
2710
2990
|
return null;
|
|
2711
2991
|
const loc = locOf(call);
|
|
2712
|
-
const args = call.arguments;
|
|
2992
|
+
const args = call.arguments.nodes;
|
|
2713
2993
|
const readableSide = sides === "r" || sides === "rw";
|
|
2714
2994
|
const writableSide = sides === "w" || sides === "rw";
|
|
2715
2995
|
const cls = info.def.name.slice(1);
|
|
@@ -2914,17 +3194,23 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2914
3194
|
loc,
|
|
2915
3195
|
};
|
|
2916
3196
|
}
|
|
2917
|
-
const
|
|
3197
|
+
const target = lowerer.lowerExpr(args[0]);
|
|
3198
|
+
if (target.type.kind === "procStream")
|
|
3199
|
+
return pipeIntoStdio(lowerer, call, access, target);
|
|
3200
|
+
if (target.type.kind === "dyn")
|
|
3201
|
+
return pipeIntoDyn(lowerer, call, access, target);
|
|
3202
|
+
const dst = target;
|
|
2918
3203
|
const dstInfo = dst.type.kind === "object" ? lowerer.classes.get(dst.type.className) : undefined;
|
|
2919
3204
|
const dstSides = streamSidesOf(lowerer, dstInfo);
|
|
2920
3205
|
if (dstSides !== "w" && dstSides !== "rw") {
|
|
2921
|
-
|
|
3206
|
+
requestGeneralStreamSurface(lowerer, args[0]);
|
|
3207
|
+
lowerer.noLowering(`pipe into a '${lowerer.fmt(dst.type)}'`, args[0], "the destination must be a stream Writable/Duplex, process.stdout or process.stderr (sockets are not pipe destinations yet)");
|
|
2922
3208
|
}
|
|
2923
3209
|
const end = pipeEndOption(lowerer, args[1], loc);
|
|
2924
3210
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
2925
3211
|
return {
|
|
2926
3212
|
kind: "libCall",
|
|
2927
|
-
fn:
|
|
3213
|
+
fn: generalPipe(lowerer, dst.type),
|
|
2928
3214
|
args: [receiver, dst, end],
|
|
2929
3215
|
type: dst.type,
|
|
2930
3216
|
loc,
|
|
@@ -2937,6 +3223,8 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2937
3223
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
2938
3224
|
if (args[0] !== undefined) {
|
|
2939
3225
|
const dst = lowerer.lowerExpr(args[0]);
|
|
3226
|
+
if (dst.type.kind === "dyn")
|
|
3227
|
+
return unpipeDyn(lowerer, receiver, dst, loc);
|
|
2940
3228
|
const dstInfo = dst.type.kind === "object" ? lowerer.classes.get(dst.type.className) : undefined;
|
|
2941
3229
|
const dstSides = streamSidesOf(lowerer, dstInfo);
|
|
2942
3230
|
if (dstSides !== "w" && dstSides !== "rw") {
|
|
@@ -2950,6 +3238,44 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
2950
3238
|
loc,
|
|
2951
3239
|
};
|
|
2952
3240
|
}
|
|
3241
|
+
// Checked-dynamic slots: unpipe() also unpipes the JavaScript
|
|
3242
|
+
// destinations stream.pipeDyn registered (stream.unpipeDyn with an
|
|
3243
|
+
// undefined destination), as Node's unpipe() empties every pipe.
|
|
3244
|
+
if (lowerer.dynNodeStreams) {
|
|
3245
|
+
const source = lowerer.declareHiddenLocal("%unpipeSource", receiver.type);
|
|
3246
|
+
const sourceRef = varRef(source.id, receiver.type, loc);
|
|
3247
|
+
return {
|
|
3248
|
+
kind: "seqExpr",
|
|
3249
|
+
stmts: [
|
|
3250
|
+
{ kind: "varDecl", localId: source.id, init: receiver, loc },
|
|
3251
|
+
{
|
|
3252
|
+
kind: "exprStmt",
|
|
3253
|
+
expr: {
|
|
3254
|
+
kind: "libCall",
|
|
3255
|
+
fn: "readable.unpipe",
|
|
3256
|
+
args: [sourceRef],
|
|
3257
|
+
type: receiver.type,
|
|
3258
|
+
loc,
|
|
3259
|
+
},
|
|
3260
|
+
loc,
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
kind: "exprStmt",
|
|
3264
|
+
expr: {
|
|
3265
|
+
kind: "libCall",
|
|
3266
|
+
fn: "stream.unpipeDyn",
|
|
3267
|
+
args: [sourceRef, dynUndefinedExpr(loc)],
|
|
3268
|
+
type: VOID,
|
|
3269
|
+
loc,
|
|
3270
|
+
},
|
|
3271
|
+
loc,
|
|
3272
|
+
},
|
|
3273
|
+
],
|
|
3274
|
+
result: sourceRef,
|
|
3275
|
+
type: receiver.type,
|
|
3276
|
+
loc,
|
|
3277
|
+
};
|
|
3278
|
+
}
|
|
2953
3279
|
return { kind: "libCall", fn: "readable.unpipe", args: [receiver], type: receiver.type, loc };
|
|
2954
3280
|
}
|
|
2955
3281
|
if (member === "destroy") {
|
|
@@ -3038,8 +3364,10 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
3038
3364
|
: lowerer.lowerExprExpecting(args[0], STRING);
|
|
3039
3365
|
const fn = kind === "bytes" ? "writable.write" : "writable.writeStr";
|
|
3040
3366
|
if (cbArg !== undefined) {
|
|
3041
|
-
const cb =
|
|
3042
|
-
|
|
3367
|
+
const cb = callbackDeclaresParameters(cbArg)
|
|
3368
|
+
? null
|
|
3369
|
+
: lowerer.lowerExprExpecting(cbArg, funcOf([], VOID));
|
|
3370
|
+
if (cb === null || cb.type.kind !== "func" || cb.type.params.length > 0) {
|
|
3043
3371
|
lowerer.noLowering("write completion callbacks taking the error argument", cbArg, "() => void callbacks are supported (listen for 'error' to observe failures)");
|
|
3044
3372
|
}
|
|
3045
3373
|
return { kind: "libCall", fn, args: [receiver, chunk, cb], type: BOOL, loc };
|
|
@@ -3099,8 +3427,10 @@ export function lowerStreamMethodCall(lowerer, call, access, info) {
|
|
|
3099
3427
|
: lowerer.lowerExprExpecting(chunkNode, STRING));
|
|
3100
3428
|
}
|
|
3101
3429
|
if (cbArg !== undefined) {
|
|
3102
|
-
const cb =
|
|
3103
|
-
|
|
3430
|
+
const cb = callbackDeclaresParameters(cbArg)
|
|
3431
|
+
? null
|
|
3432
|
+
: lowerer.lowerExprExpecting(cbArg, funcOf([], VOID));
|
|
3433
|
+
if (cb === null || cb.type.kind !== "func" || cb.type.params.length > 0) {
|
|
3104
3434
|
lowerer.noLowering("end callbacks with parameters", cbArg, "() => void callbacks are supported");
|
|
3105
3435
|
}
|
|
3106
3436
|
flags |= 4;
|
|
@@ -3334,4 +3664,16 @@ export function lowerStreamProperty(lowerer, expr, info) {
|
|
|
3334
3664
|
}
|
|
3335
3665
|
return null;
|
|
3336
3666
|
}
|
|
3667
|
+
/** Whether an inline completion callback declares a parameter. Node calls
|
|
3668
|
+
* write and end callbacks with an error argument (null on success), but the
|
|
3669
|
+
* native callback receives none, so the parameter would read undefined
|
|
3670
|
+
* where Node passes null or the error. A function literal with parameters
|
|
3671
|
+
* would otherwise adapt to the zero-parameter slot silently. */
|
|
3672
|
+
function callbackDeclaresParameters(node) {
|
|
3673
|
+
let callback = node;
|
|
3674
|
+
while (ts.isParenthesizedExpression(callback))
|
|
3675
|
+
callback = callback.expression;
|
|
3676
|
+
return ((ts.isArrowFunction(callback) || ts.isFunctionExpression(callback)) &&
|
|
3677
|
+
callback.parameters.nodes.length > 0);
|
|
3678
|
+
}
|
|
3337
3679
|
//# sourceMappingURL=lower-stream.js.map
|