@scriptc/compiler 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +832 -55
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/literals.d.ts +7 -0
- package/dist/backend/literals.js +32 -0
- package/dist/backend/literals.js.map +1 -1
- package/dist/backend/literals.test.js +17 -1
- package/dist/backend/literals.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -4
- package/dist/backend/llvm/alloc.js +63 -25
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +62 -2
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
- package/dist/backend/llvm/appended-array-literals.js +109 -0
- package/dist/backend/llvm/appended-array-literals.js.map +1 -0
- package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
- package/dist/backend/llvm/appended-array-literals.test.js +90 -0
- package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
- package/dist/backend/llvm/array-search.d.ts +8 -0
- package/dist/backend/llvm/array-search.js +52 -0
- package/dist/backend/llvm/array-search.js.map +1 -0
- package/dist/backend/llvm/array-search.test.d.ts +1 -0
- package/dist/backend/llvm/array-search.test.js +72 -0
- package/dist/backend/llvm/array-search.test.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
- package/dist/backend/llvm/call-lifetimes.js +74 -4
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +54 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +97 -38
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +2 -2
- package/dist/backend/llvm/common.d.ts +1 -1
- package/dist/backend/llvm/common.js +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +18 -13
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +15 -2
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +6 -0
- package/dist/backend/llvm/dyn.js +84 -11
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +108 -16
- package/dist/backend/llvm/emitter.js +598 -108
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +26 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +174 -7
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +11 -0
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
- package/dist/backend/llvm/expr-callbacks.js +96 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +12 -1
- package/dist/backend/llvm/expr-calls.js +133 -54
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +7 -0
- package/dist/backend/llvm/expr-containers.js +80 -22
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +2 -0
- package/dist/backend/llvm/expr-control.d.ts +8 -0
- package/dist/backend/llvm/expr-control.js +103 -69
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +21 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +7 -0
- package/dist/backend/llvm/expr-primitives.js +53 -51
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +19 -5
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +111 -39
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
- package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/inline-unions.d.ts +48 -0
- package/dist/backend/llvm/inline-unions.js +134 -0
- package/dist/backend/llvm/inline-unions.js.map +1 -0
- package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
- package/dist/backend/llvm/inline-unions.test.js +124 -0
- package/dist/backend/llvm/inline-unions.test.js.map +1 -0
- package/dist/backend/llvm/int32-abi.d.ts +18 -2
- package/dist/backend/llvm/int32-abi.js +23 -2
- package/dist/backend/llvm/int32-abi.js.map +1 -1
- package/dist/backend/llvm/int32-abi.test.js +75 -1
- package/dist/backend/llvm/int32-abi.test.js.map +1 -1
- package/dist/backend/llvm/integer-remainder.d.ts +28 -5
- package/dist/backend/llvm/integer-remainder.js +80 -9
- package/dist/backend/llvm/integer-remainder.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +170 -28
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +181 -5
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +9 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +2 -2
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +208 -9
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +97 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +12 -6
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +6 -3
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.d.ts +26 -2
- package/dist/backend/llvm/local-union-storage.js +132 -12
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +107 -1
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
- package/dist/backend/llvm/loop-array-borrows.js +93 -13
- package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
- package/dist/backend/llvm/map-number-lookup.js +66 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
- package/dist/backend/llvm/map-number-lookup.test.js +102 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js +1 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +4 -0
- package/dist/backend/llvm/publish.js +3 -1
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +29 -0
- package/dist/backend/llvm/record-results.js +260 -0
- package/dist/backend/llvm/record-results.js.map +1 -0
- package/dist/backend/llvm/reference-effects.js +15 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +29 -9
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +68 -0
- package/dist/backend/llvm/regions.js +314 -0
- package/dist/backend/llvm/regions.js.map +1 -0
- package/dist/backend/llvm/regions.test.d.ts +1 -0
- package/dist/backend/llvm/regions.test.js +173 -0
- package/dist/backend/llvm/regions.test.js.map +1 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +86 -13
- package/dist/backend/llvm/shapes.js +208 -54
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +68 -9
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/split-loops.js +1 -1
- package/dist/backend/llvm/split-loops.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +29 -0
- package/dist/backend/llvm/stack-objects.js +142 -0
- package/dist/backend/llvm/stack-objects.js.map +1 -0
- package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
- package/dist/backend/llvm/stack-objects.test.js +255 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -0
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +89 -9
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/switch-dispatch.js +5 -4
- package/dist/backend/llvm/switch-dispatch.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +13 -0
- package/dist/backend/llvm/walkers.js +108 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +10 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +7 -2
- package/dist/backend/native/executable.js +28 -2
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- 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 +3 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +1 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +1 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +1 -0
- package/dist/backend/runtime-pack-core.js +1 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.js +17 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +16 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/compat/fetch-profile.js +4 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/contracts/check.js +2 -0
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.js +1 -1
- package/dist/coverage/report.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +6 -5
- package/dist/diagnostics/diagnostic.js +7 -6
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/comptime-node.js +2 -2
- package/dist/frontend/comptime-node.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +12 -0
- package/dist/frontend/experimental-import.js +63 -0
- package/dist/frontend/experimental-import.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +1 -1
- package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
- package/dist/frontend/lowering/builtin-calls.js +36 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +8 -4
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
- package/dist/frontend/lowering/builtins/blob.js +167 -0
- package/dist/frontend/lowering/builtins/blob.js.map +1 -0
- package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
- package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.js +3 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/console.d.ts +16 -6
- package/dist/frontend/lowering/builtins/console.js +33 -9
- package/dist/frontend/lowering/builtins/console.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.js +415 -120
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +20 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
- package/dist/frontend/lowering/builtins/filesystem.js +97 -15
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
- package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
- package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
- package/dist/frontend/lowering/builtins/json.d.ts +2 -2
- package/dist/frontend/lowering/builtins/json.js +13 -4
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
- package/dist/frontend/lowering/builtins/key-object.js +56 -0
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
- package/dist/frontend/lowering/builtins/module-calls.js +60 -12
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
- package/dist/frontend/lowering/builtins/numbers.js +17 -0
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
- package/dist/frontend/lowering/builtins/operating-system.js +361 -1
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
- package/dist/frontend/lowering/builtins/performance.js +340 -5
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +122 -17
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +109 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
- package/dist/frontend/lowering/builtins/properties.js +39 -11
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
- package/dist/frontend/lowering/builtins/readline.js +266 -90
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.d.ts +8 -0
- package/dist/frontend/lowering/builtins/url.js +36 -0
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +1 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +20 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
- package/dist/frontend/lowering/checked-promise-all.js +52 -6
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +8 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.js +159 -32
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
- package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
- package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +3 -3
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/collation-repertoire.js +6 -5
- package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +33 -6
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +8 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
- package/dist/frontend/lowering/containers/array-methods.js +43 -2
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +38 -26
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
- package/dist/frontend/lowering/containers/for-of.js +5 -1
- package/dist/frontend/lowering/containers/for-of.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +77 -12
- package/dist/frontend/lowering/crypto-tables.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
- package/dist/frontend/lowering/cycle-initialization.js +166 -12
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +21 -68
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +231 -10
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +2 -2
- package/dist/frontend/lowering/generic-functions.js +2 -2
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
- package/dist/frontend/lowering/lifetime-regions.js +216 -0
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +40 -3
- package/dist/frontend/lowering/lower-array-sort.js +661 -194
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +103 -4
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +2 -2
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +248 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +173 -111
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +12 -5
- package/dist/frontend/lowering/lower-classes.js +156 -11
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
- package/dist/frontend/lowering/lower-comptime.js +4 -4
- package/dist/frontend/lowering/lower-comptime.js.map +1 -1
- package/dist/frontend/lowering/lower-console.d.ts +13 -0
- package/dist/frontend/lowering/lower-console.js +460 -4
- package/dist/frontend/lowering/lower-console.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
- package/dist/frontend/lowering/lower-event-emitter.js +124 -38
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
- package/dist/frontend/lowering/lower-event-target.js +362 -0
- package/dist/frontend/lowering/lower-event-target.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.js +2 -2
- package/dist/frontend/lowering/lower-exprs.js +247 -42
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.d.ts +15 -7
- package/dist/frontend/lowering/lower-generators.js +183 -99
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
- package/dist/frontend/lowering/lower-inspect.js +247 -28
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +27 -17
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
- package/dist/frontend/lowering/lower-namespaces.js +2 -2
- package/dist/frontend/lowering/lower-server.js +39 -14
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +11 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -4
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
- package/dist/frontend/lowering/lower-stmts.js +112 -23
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +234 -22
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -6
- package/dist/frontend/lowering/lowerer.js +360 -48
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +2 -2
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
- package/dist/frontend/lowering/regex-span-reads.js +164 -0
- package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
- package/dist/frontend/lowering/runtime-optional-records.js +715 -0
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
- package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +7 -3
- package/dist/frontend/lowering/surfaces.js +385 -32
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
- package/dist/frontend/lowering/var-hoisting.js +261 -0
- package/dist/frontend/lowering/var-hoisting.js.map +1 -0
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +1 -1
- package/dist/frontend/npm-static-prune.js +1 -1
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
- package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
- package/dist/frontend/pipeline.js +6 -4
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +6 -5
- package/dist/frontend/program.js +42 -22
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +13 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/resolve.js +1 -1
- package/dist/frontend/ts7/adapter.js +1 -1
- package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
- package/dist/frontend/ts7/ast-bytes.js +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +1 -1
- package/dist/frontend/ts7/semantic-json.js +1 -1
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/world-check.js +1 -1
- package/dist/frontend/tsc-codes.js +2 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +28 -1
- package/dist/frontend/type-mapper.js +288 -30
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +12 -6
- package/dist/ir/analysis.js +26 -10
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +15 -3
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +108 -2
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +436 -53
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/function-references.test.js +1 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.js +2 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/intrinsic-signatures.js +2 -0
- package/dist/ir/intrinsic-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +129 -36
- package/dist/ir/ir.js +42 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +116 -5
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/scalar-records.js +1 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/traverse.js +1 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +250 -34
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +125 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.d.ts +1 -1
- package/dist/library/fence-eval.js +5 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/ir-policy.js +11 -4
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-profile.js +13 -13
- package/dist/library/library-profile.js.map +1 -1
- package/dist/library/prepare.js +1 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/library/sidecar.js +3 -3
- package/dist/library/sidecar.js.map +1 -1
- package/dist/native/prepare.js +3 -2
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +537 -142
|
@@ -35,8 +35,29 @@ import { newFnCtx, own } from "./lowerer.js";
|
|
|
35
35
|
import { appendImplicitUndefinedReturn } from "./function-returns.js";
|
|
36
36
|
import { bufEncoding, knownBufEncoding } from "./containers/bytes.js";
|
|
37
37
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
38
|
+
import { sideEffectFreeOptionValue } from "./surfaces.js";
|
|
38
39
|
import { BOOL, DYN, F64, RUNTIME_STREAM_CLASSES, STRING, VOID, arrayOf, BYTES_U8, canBoxFuncIntoDyn, funcOf, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
39
40
|
const BYTES = BYTES_U8;
|
|
41
|
+
/** An expression that only reads bindings and properties (no calls,
|
|
42
|
+
* assignments or construction): reading it a step later observes the
|
|
43
|
+
* same values. */
|
|
44
|
+
function pureRead(node) {
|
|
45
|
+
if (ts.isParenthesizedExpression(node) ||
|
|
46
|
+
ts.isNonNullExpression(node) ||
|
|
47
|
+
ts.isAsExpression(node)) {
|
|
48
|
+
return pureRead(node.expression);
|
|
49
|
+
}
|
|
50
|
+
if (ts.isIdentifier(node) || node.kind === ts.SyntaxKind.ThisKeyword)
|
|
51
|
+
return true;
|
|
52
|
+
if (ts.isPropertyAccessExpression(node))
|
|
53
|
+
return pureRead(node.expression);
|
|
54
|
+
if (ts.isElementAccessExpression(node)) {
|
|
55
|
+
return ((ts.isStringLiteral(node.argumentExpression) ||
|
|
56
|
+
ts.isNumericLiteral(node.argumentExpression)) &&
|
|
57
|
+
pureRead(node.expression));
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
40
61
|
/** The stream sides of a receiver class: the nearest stream-class
|
|
41
62
|
* ancestor's, or null off the stream hierarchy. */
|
|
42
63
|
export function streamSidesOf(lowerer, info) {
|
|
@@ -466,6 +487,7 @@ fallbackCb) {
|
|
|
466
487
|
encoding: null,
|
|
467
488
|
badEncoding: null,
|
|
468
489
|
pushEncoding: null,
|
|
490
|
+
signal: null,
|
|
469
491
|
flags: 0,
|
|
470
492
|
cbs: [],
|
|
471
493
|
};
|
|
@@ -527,6 +549,12 @@ fallbackCb) {
|
|
|
527
549
|
present.set(name, lowerStreamCallback(lowerer, name, fnNode, thisType, tuple));
|
|
528
550
|
continue;
|
|
529
551
|
}
|
|
552
|
+
// `{ signal }` shorthand: the binding is the value.
|
|
553
|
+
if (name === "signal" && ts.isShorthandPropertyAssignment(prop)) {
|
|
554
|
+
if (ts.isIdentifier(prop.name))
|
|
555
|
+
out.signal = lowerer.lowerExprExpecting(prop.name, DYN);
|
|
556
|
+
continue;
|
|
557
|
+
}
|
|
530
558
|
// Scalar options.
|
|
531
559
|
if (!ts.isPropertyAssignment(prop)) {
|
|
532
560
|
lowerer.unsupported("SC1090", prop, `the ${ctorName} option '${name}' as a shorthand/method member`);
|
|
@@ -609,9 +637,20 @@ fallbackCb) {
|
|
|
609
637
|
}
|
|
610
638
|
lowerer.noLowering(`the ${ctorName} option 'defaultEncoding'`, prop, "utf8 (the default) is the supported write-side string encoding");
|
|
611
639
|
break;
|
|
612
|
-
case "signal":
|
|
613
|
-
|
|
640
|
+
case "signal": {
|
|
641
|
+
// `if (options.signal) addAbortSignal(options.signal, this)`:
|
|
642
|
+
// applied over the fresh stream, so the value is read after the
|
|
643
|
+
// constructor — only values whose evaluation has no effects.
|
|
644
|
+
if (value.kind === ts.SyntaxKind.NullKeyword)
|
|
645
|
+
break;
|
|
646
|
+
if (ts.isIdentifier(value) && value.text === "undefined")
|
|
647
|
+
break;
|
|
648
|
+
if (!sideEffectFreeOptionValue(value) && !pureRead(value)) {
|
|
649
|
+
lowerer.noLowering(`the ${ctorName} option 'signal' with this value`, prop, "pass a variable or property read (const signal = controller.signal) — the signal is read after construction");
|
|
650
|
+
}
|
|
651
|
+
out.signal = lowerer.lowerExprExpecting(value, DYN);
|
|
614
652
|
break;
|
|
653
|
+
}
|
|
615
654
|
case "captureRejections": {
|
|
616
655
|
// `false` is the default — admit the literal; the rejection-
|
|
617
656
|
// capturing mode has no lowering (async listeners' promises are
|
|
@@ -691,6 +730,7 @@ function streamCtorArgs(lowerer, cls, arg, thisType, loc, fallbackCb) {
|
|
|
691
730
|
encoding: o.encoding,
|
|
692
731
|
badEncoding: o.badEncoding,
|
|
693
732
|
pushEncoding: o.pushEncoding,
|
|
733
|
+
signal: o.signal,
|
|
694
734
|
};
|
|
695
735
|
}
|
|
696
736
|
/** `new Readable(opts?)` and friends — called from lowerNew once the
|
|
@@ -736,14 +776,24 @@ export function lowerStreamNew(lowerer, expr, info) {
|
|
|
736
776
|
loc,
|
|
737
777
|
};
|
|
738
778
|
}
|
|
739
|
-
if (parsed.encoding
|
|
779
|
+
if (parsed.encoding !== null) {
|
|
780
|
+
// { encoding }: chain a setEncoding over the fresh stream (the operand
|
|
781
|
+
// temp releases with the frame; setEncoding answers the receiver +1).
|
|
782
|
+
built = {
|
|
783
|
+
kind: "libCall",
|
|
784
|
+
fn: "readable.setEncoding",
|
|
785
|
+
args: [built, strLit(parsed.encoding, loc)],
|
|
786
|
+
type: thisType,
|
|
787
|
+
loc,
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
if (parsed.signal === null)
|
|
740
791
|
return built;
|
|
741
|
-
// {
|
|
742
|
-
// temp releases with the frame; setEncoding answers the receiver +1).
|
|
792
|
+
// { signal }: addAbortSignal over the fresh stream (answers it +1).
|
|
743
793
|
return {
|
|
744
794
|
kind: "libCall",
|
|
745
|
-
fn: "
|
|
746
|
-
args: [built,
|
|
795
|
+
fn: "stream.addAbortSignal",
|
|
796
|
+
args: [built, parsed.signal],
|
|
747
797
|
type: thisType,
|
|
748
798
|
loc,
|
|
749
799
|
};
|
|
@@ -759,8 +809,8 @@ function streamMethodWrapper(lowerer, info, which, methodName, thisType, loc, bl
|
|
|
759
809
|
const found = lowerer.findMethodOn(info, methodName);
|
|
760
810
|
if (!found) {
|
|
761
811
|
// A DESCENDANT-only declaration (the base chain never declares it):
|
|
762
|
-
// this constructor cannot see it, and
|
|
763
|
-
// diverge from Node (which dispatches through the prototype chain).
|
|
812
|
+
// this constructor cannot see it, and binding nothing without a
|
|
813
|
+
// diagnostic would diverge from Node (which dispatches through the prototype chain).
|
|
764
814
|
if (lowerer.overrideBelow(info, methodName)) {
|
|
765
815
|
lowerer.noLowering(`a subclass of ${info.def.name.replace(/^%/, "")} declaring '${methodName}' below a base whose constructor cannot see it`, blame, `declare '${methodName}' on the class whose constructor calls the stream super(), and override it below`);
|
|
766
816
|
}
|
|
@@ -959,6 +1009,19 @@ export function lowerStreamSuperCall(lowerer, info, base, argNodes, thisLocal, l
|
|
|
959
1009
|
loc,
|
|
960
1010
|
});
|
|
961
1011
|
}
|
|
1012
|
+
if (parsed.signal !== null) {
|
|
1013
|
+
out.push({
|
|
1014
|
+
kind: "exprStmt",
|
|
1015
|
+
expr: {
|
|
1016
|
+
kind: "libCall",
|
|
1017
|
+
fn: "stream.addAbortSignal",
|
|
1018
|
+
args: [thisRef(), parsed.signal],
|
|
1019
|
+
type: thisType,
|
|
1020
|
+
loc,
|
|
1021
|
+
},
|
|
1022
|
+
loc,
|
|
1023
|
+
});
|
|
1024
|
+
}
|
|
962
1025
|
return out;
|
|
963
1026
|
}
|
|
964
1027
|
/* ── the underscore-method assignment surface ─────────────────────────── */
|
|
@@ -1284,6 +1347,85 @@ function lowerEosCallback(lowerer, which, node, thisType) {
|
|
|
1284
1347
|
}
|
|
1285
1348
|
lowerer.noLowering(`${which} with this callback value`, node, "write the callback inline, or pass a function value that crosses the checked-dynamic boundary");
|
|
1286
1349
|
}
|
|
1350
|
+
/** finished()'s options literal: readable/writable/error (and cleanup
|
|
1351
|
+
* for the promise form) as boolean literals, signal as any expression.
|
|
1352
|
+
* readable/writable answer -1 when absent (Node's default: whether the
|
|
1353
|
+
* stream has that side). */
|
|
1354
|
+
function eosOptions(lowerer, node, promiseForm) {
|
|
1355
|
+
const out = {
|
|
1356
|
+
readable: -1,
|
|
1357
|
+
writable: -1,
|
|
1358
|
+
error: true,
|
|
1359
|
+
cleanup: false,
|
|
1360
|
+
signal: null,
|
|
1361
|
+
};
|
|
1362
|
+
if (!ts.isObjectLiteralExpression(node)) {
|
|
1363
|
+
lowerer.noLowering("finished options that are not an object literal", node, "write the options inline: finished(stream, { readable, writable, error, signal })");
|
|
1364
|
+
}
|
|
1365
|
+
const literal = (p, key) => {
|
|
1366
|
+
if (p.initializer.kind === ts.SyntaxKind.TrueKeyword)
|
|
1367
|
+
return true;
|
|
1368
|
+
if (p.initializer.kind === ts.SyntaxKind.FalseKeyword)
|
|
1369
|
+
return false;
|
|
1370
|
+
lowerer.noLowering(`the finished option '${key}' with a non-literal value`, p.initializer, "pass true or false");
|
|
1371
|
+
};
|
|
1372
|
+
for (const p of node.properties) {
|
|
1373
|
+
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1374
|
+
? p.name.text
|
|
1375
|
+
: null;
|
|
1376
|
+
if (key === "signal") {
|
|
1377
|
+
out.signal = ts.isShorthandPropertyAssignment(p)
|
|
1378
|
+
? lowerer.lowerExprExpecting(p.name, DYN)
|
|
1379
|
+
: lowerer.lowerExprExpecting(p.initializer, DYN);
|
|
1380
|
+
continue;
|
|
1381
|
+
}
|
|
1382
|
+
if (key !== null && ts.isPropertyAssignment(p)) {
|
|
1383
|
+
if (key === "readable")
|
|
1384
|
+
out.readable = literal(p, key) ? 1 : 0;
|
|
1385
|
+
else if (key === "writable")
|
|
1386
|
+
out.writable = literal(p, key) ? 1 : 0;
|
|
1387
|
+
else if (key === "error")
|
|
1388
|
+
out.error = literal(p, key);
|
|
1389
|
+
else if (key === "cleanup" && promiseForm)
|
|
1390
|
+
out.cleanup = literal(p, key);
|
|
1391
|
+
else {
|
|
1392
|
+
lowerer.noLowering(`the finished option '${key}'`, p, promiseForm
|
|
1393
|
+
? "readable, writable, error, cleanup and signal are the supported options"
|
|
1394
|
+
: "readable, writable, error and signal are the supported options");
|
|
1395
|
+
}
|
|
1396
|
+
continue;
|
|
1397
|
+
}
|
|
1398
|
+
lowerer.noLowering("finished options with this member", p, "write each option as a plain property");
|
|
1399
|
+
}
|
|
1400
|
+
return out;
|
|
1401
|
+
}
|
|
1402
|
+
/** pipeline()'s trailing options literal (the promise form): signal as
|
|
1403
|
+
* any expression, end as a boolean literal. */
|
|
1404
|
+
function pipelineOptions(lowerer, node) {
|
|
1405
|
+
const out = { end: true, signal: null };
|
|
1406
|
+
for (const p of node.properties) {
|
|
1407
|
+
const key = (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) && ts.isIdentifier(p.name)
|
|
1408
|
+
? p.name.text
|
|
1409
|
+
: null;
|
|
1410
|
+
if (key === "signal") {
|
|
1411
|
+
out.signal = ts.isShorthandPropertyAssignment(p)
|
|
1412
|
+
? lowerer.lowerExprExpecting(p.name, DYN)
|
|
1413
|
+
: lowerer.lowerExprExpecting(p.initializer, DYN);
|
|
1414
|
+
continue;
|
|
1415
|
+
}
|
|
1416
|
+
if (key === "end" && ts.isPropertyAssignment(p)) {
|
|
1417
|
+
if (p.initializer.kind === ts.SyntaxKind.TrueKeyword)
|
|
1418
|
+
continue;
|
|
1419
|
+
if (p.initializer.kind === ts.SyntaxKind.FalseKeyword) {
|
|
1420
|
+
out.end = false;
|
|
1421
|
+
continue;
|
|
1422
|
+
}
|
|
1423
|
+
lowerer.noLowering("the pipeline option 'end' with a non-literal value", p.initializer, "pass true or false");
|
|
1424
|
+
}
|
|
1425
|
+
lowerer.noLowering(key === null ? "pipeline options with this member" : `the pipeline option '${key}'`, p, "signal and end are the supported pipeline options");
|
|
1426
|
+
}
|
|
1427
|
+
return out;
|
|
1428
|
+
}
|
|
1287
1429
|
/** `finished(...)` / `pipeline(...)` / `getDefaultHighWaterMark(...)`
|
|
1288
1430
|
* imported from node:stream (named imports, destructured requires, and
|
|
1289
1431
|
* namespace-member calls all land here). Null for members this spoke
|
|
@@ -1296,10 +1438,8 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1296
1438
|
// ERR_STREAM_PREMATURE_CLOSE — the callback form's status, boxed
|
|
1297
1439
|
// through the promise instead). The options argument has no lowering.
|
|
1298
1440
|
if (bi.member === "finished") {
|
|
1299
|
-
if (args.length !== 1) {
|
|
1300
|
-
lowerer.noLowering(`stream/promises.finished with ${args.length} arguments`, call,
|
|
1301
|
-
? "the options argument has no lowering yet — the one-argument form is supported"
|
|
1302
|
-
: "the supported form is finished(stream)");
|
|
1441
|
+
if (args.length !== 1 && args.length !== 2) {
|
|
1442
|
+
lowerer.noLowering(`stream/promises.finished with ${args.length} arguments`, call, "the supported forms are finished(stream) and finished(stream, options)");
|
|
1303
1443
|
}
|
|
1304
1444
|
let recv;
|
|
1305
1445
|
try {
|
|
@@ -1310,6 +1450,24 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1310
1450
|
return e.expr;
|
|
1311
1451
|
throw e;
|
|
1312
1452
|
}
|
|
1453
|
+
const optsNode = args[1];
|
|
1454
|
+
if (optsNode !== undefined && optsNode.kind !== ts.SyntaxKind.NullKeyword) {
|
|
1455
|
+
const o = eosOptions(lowerer, optsNode, true);
|
|
1456
|
+
const head = [
|
|
1457
|
+
recv,
|
|
1458
|
+
numLit(o.readable, loc),
|
|
1459
|
+
numLit(o.writable, loc),
|
|
1460
|
+
boolLit(o.error, loc),
|
|
1461
|
+
boolLit(o.cleanup, loc),
|
|
1462
|
+
];
|
|
1463
|
+
return {
|
|
1464
|
+
kind: "libCall",
|
|
1465
|
+
fn: o.signal ? "sp.finishedOptsSignal" : "sp.finishedOpts",
|
|
1466
|
+
args: o.signal ? [...head, o.signal] : head,
|
|
1467
|
+
type: { kind: "promise", inner: VOID },
|
|
1468
|
+
loc,
|
|
1469
|
+
};
|
|
1470
|
+
}
|
|
1313
1471
|
return {
|
|
1314
1472
|
kind: "libCall",
|
|
1315
1473
|
fn: "sp.finished",
|
|
@@ -1326,15 +1484,30 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1326
1484
|
if (args.length < 2) {
|
|
1327
1485
|
lowerer.noLowering(`stream/promises.pipeline with ${args.length} arguments`, call, "the supported form is pipeline(source, ...streams)");
|
|
1328
1486
|
}
|
|
1487
|
+
const lastArg = args[args.length - 1];
|
|
1488
|
+
const opts = ts.isObjectLiteralExpression(lastArg) && args.length >= 3
|
|
1489
|
+
? pipelineOptions(lowerer, lastArg)
|
|
1490
|
+
: null;
|
|
1491
|
+
const stageArgs = opts ? args.slice(0, -1) : args;
|
|
1329
1492
|
let streams;
|
|
1330
1493
|
try {
|
|
1331
|
-
streams =
|
|
1494
|
+
streams = stageArgs.map((a) => lowerStreamArg(lowerer, a, "pipeline"));
|
|
1332
1495
|
}
|
|
1333
1496
|
catch (e) {
|
|
1334
1497
|
if (e instanceof StreamArgTypeThrow)
|
|
1335
1498
|
return e.expr;
|
|
1336
1499
|
throw e;
|
|
1337
1500
|
}
|
|
1501
|
+
if (opts) {
|
|
1502
|
+
const head = [numLit(streams.length, loc), ...streams, boolLit(opts.end, loc)];
|
|
1503
|
+
return {
|
|
1504
|
+
kind: "libCall",
|
|
1505
|
+
fn: opts.signal ? "sp.pipelineOptsSignal" : "sp.pipelineOpts",
|
|
1506
|
+
args: opts.signal ? [...head, opts.signal] : head,
|
|
1507
|
+
type: { kind: "promise", inner: VOID },
|
|
1508
|
+
loc,
|
|
1509
|
+
};
|
|
1510
|
+
}
|
|
1338
1511
|
return {
|
|
1339
1512
|
kind: "libCall",
|
|
1340
1513
|
fn: "sp.pipeline",
|
|
@@ -1352,9 +1525,9 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1352
1525
|
// utf8 decode / the parsed JSON dyn tree / the concatenated bytes / an
|
|
1353
1526
|
// ArrayBuffer dyn over them) or rejects — with the stream's error,
|
|
1354
1527
|
// ERR_STREAM_PREMATURE_CLOSE on an early close, or json's SyntaxError
|
|
1355
|
-
// on malformed text, Node's own rejection set. blob returns null here
|
|
1356
|
-
//
|
|
1357
|
-
//
|
|
1528
|
+
// on malformed text, Node's own rejection set. blob returns null here,
|
|
1529
|
+
// so the module-qualified fence (with the pointed hint in
|
|
1530
|
+
// BUILTIN_MODULE_FENCE_HINTS) speaks.
|
|
1358
1531
|
if (bi.member === "text" ||
|
|
1359
1532
|
bi.member === "json" ||
|
|
1360
1533
|
bi.member === "buffer" ||
|
|
@@ -1400,11 +1573,33 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1400
1573
|
return numLit(16, loc);
|
|
1401
1574
|
lowerer.noLowering("getDefaultHighWaterMark with a non-literal argument", call, "the objectMode flag must be a compile-time boolean");
|
|
1402
1575
|
}
|
|
1403
|
-
if (bi.member === "
|
|
1576
|
+
if (bi.member === "addAbortSignal") {
|
|
1577
|
+
// addAbortSignal(signal, stream) → the stream: destroyed with an
|
|
1578
|
+
// AbortError when the signal aborts (now, if it already has).
|
|
1404
1579
|
if (args.length !== 2) {
|
|
1405
|
-
lowerer.noLowering(`
|
|
1406
|
-
|
|
1407
|
-
|
|
1580
|
+
lowerer.noLowering(`addAbortSignal with ${args.length} arguments`, call, "the supported form is addAbortSignal(signal, stream)");
|
|
1581
|
+
}
|
|
1582
|
+
const signal = lowerer.lowerExprExpecting(args[0], DYN);
|
|
1583
|
+
let stream;
|
|
1584
|
+
try {
|
|
1585
|
+
stream = lowerStreamArg(lowerer, args[1], "addAbortSignal");
|
|
1586
|
+
}
|
|
1587
|
+
catch (e) {
|
|
1588
|
+
if (e instanceof StreamArgTypeThrow)
|
|
1589
|
+
return e.expr;
|
|
1590
|
+
throw e;
|
|
1591
|
+
}
|
|
1592
|
+
return {
|
|
1593
|
+
kind: "libCall",
|
|
1594
|
+
fn: "stream.addAbortSignalFn",
|
|
1595
|
+
args: [signal, stream],
|
|
1596
|
+
type: stream.type,
|
|
1597
|
+
loc,
|
|
1598
|
+
};
|
|
1599
|
+
}
|
|
1600
|
+
if (bi.member === "finished") {
|
|
1601
|
+
if (args.length !== 2 && args.length !== 3) {
|
|
1602
|
+
lowerer.noLowering(`finished with ${args.length} arguments`, call, "the supported forms are finished(stream, callback) and finished(stream, options, callback)");
|
|
1408
1603
|
}
|
|
1409
1604
|
let recv;
|
|
1410
1605
|
try {
|
|
@@ -1415,7 +1610,24 @@ export function lowerStreamModuleCall(lowerer, call, bi, loc) {
|
|
|
1415
1610
|
return e.expr;
|
|
1416
1611
|
throw e;
|
|
1417
1612
|
}
|
|
1418
|
-
|
|
1613
|
+
if (args.length === 3 && args[1].kind !== ts.SyntaxKind.NullKeyword) {
|
|
1614
|
+
const o = eosOptions(lowerer, args[1], false);
|
|
1615
|
+
const { cb } = lowerEosCallback(lowerer, "finished", args[2], recv.type);
|
|
1616
|
+
const head = [
|
|
1617
|
+
recv,
|
|
1618
|
+
numLit(o.readable, loc),
|
|
1619
|
+
numLit(o.writable, loc),
|
|
1620
|
+
boolLit(o.error, loc),
|
|
1621
|
+
];
|
|
1622
|
+
return {
|
|
1623
|
+
kind: "libCall",
|
|
1624
|
+
fn: o.signal ? "stream.finishedOptsSignal" : "stream.finishedOpts",
|
|
1625
|
+
args: o.signal ? [...head, o.signal, cb] : [...head, cb],
|
|
1626
|
+
type: funcOf([], VOID),
|
|
1627
|
+
loc,
|
|
1628
|
+
};
|
|
1629
|
+
}
|
|
1630
|
+
const { cb, dyn } = lowerEosCallback(lowerer, "finished", args[args.length - 1], recv.type);
|
|
1419
1631
|
return {
|
|
1420
1632
|
kind: "libCall",
|
|
1421
1633
|
fn: dyn ? "stream.finishedDyn" : "stream.finished",
|