@scriptc/compiler 0.3.2 → 0.3.4
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 +1202 -64
- package/dist/backend/cycle-analysis.js +6 -1
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/alloc.js +24 -10
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +47 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- 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 +12 -1
- package/dist/backend/llvm/call-lifetimes.js +41 -11
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +85 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/classes.js +87 -36
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +6 -1
- package/dist/backend/llvm/common.js +8 -1
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +5 -0
- package/dist/backend/llvm/dense-array-access.js +3 -3
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +44 -1
- package/dist/backend/llvm/dyn.js +251 -36
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +77 -14
- package/dist/backend/llvm/emitter.js +461 -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 +52 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +169 -63
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.js +16 -2
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +57 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +57 -19
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +19 -8
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +28 -30
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +8 -4
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +35 -32
- package/dist/backend/llvm/expr-stream-bridges.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/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/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +255 -29
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +176 -7
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +25 -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.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +212 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +184 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +7 -3
- 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 +2 -0
- package/dist/backend/llvm/local-union-storage.js +5 -0
- package/dist/backend/llvm/local-union-storage.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +1 -0
- 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 +24 -0
- package/dist/backend/llvm/map-number-lookup.js +88 -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 +158 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +90 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +9 -0
- package/dist/backend/llvm/publish.js +25 -4
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/record-results.d.ts +8 -5
- package/dist/backend/llvm/record-results.js +20 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +13 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +19 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +5 -1
- package/dist/backend/llvm/regions.js +24 -10
- package/dist/backend/llvm/regions.js.map +1 -1
- 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 +56 -10
- package/dist/backend/llvm/shapes.js +178 -39
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +61 -3
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/stack-objects.js +16 -4
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/stack-objects.test.js +3 -0
- package/dist/backend/llvm/stack-objects.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +11 -0
- package/dist/backend/llvm/walkers.js +106 -10
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +13 -4
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +5 -2
- package/dist/backend/native/executable.js +27 -8
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +2 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -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/publication.js +3 -1
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-targets.test.js +2 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +2 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +11 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.js +4 -1
- package/dist/backend/target-diagnostics.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.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 +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.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 +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.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/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.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +178 -4
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +526 -121
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -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/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 +44 -11
- package/dist/frontend/lowering/builtins/module-calls.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 +107 -14
- package/dist/frontend/lowering/builtins/process.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/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.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 +26 -2
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
- 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 +4 -7
- package/dist/frontend/lowering/containers/array-callbacks.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/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/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/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 +16 -12
- package/dist/frontend/lowering/expressions/object-literals.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/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
- package/dist/frontend/lowering/lower-array-sort.js +561 -191
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +702 -63
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
- package/dist/frontend/lowering/lower-async-iteration.js +259 -4
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +118 -12
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +11 -2
- package/dist/frontend/lowering/lower-classes.js +76 -9
- 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-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.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 +124 -22
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +240 -49
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -1
- package/dist/frontend/lowering/lower-modules.js +14 -3
- 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.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +419 -44
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
- package/dist/frontend/lowering/lower-stdlib.js +10 -3
- 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 +69 -14
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +1020 -49
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +45 -5
- package/dist/frontend/lowering/lowerer.js +317 -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/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- 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 +11 -3
- package/dist/frontend/lowering/surfaces.js +334 -37
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.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 +3 -3
- package/dist/frontend/program.js +25 -18
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +15 -1
- package/dist/frontend/resolve.js.map +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 +3 -2
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +21 -1
- package/dist/frontend/type-mapper.js +245 -27
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +7 -5
- 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 +115 -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 +438 -46
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/int32-slots.js +1 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +84 -17
- package/dist/ir/ir.js +54 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +111 -7
- package/dist/ir/runtime-features.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 +295 -14
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +60 -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/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +4 -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 +1279 -221
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/* node:assert's Assert class (Node 24.22, lib/assert.js).
|
|
2
|
+
*
|
|
3
|
+
* `new Assert(options?)` merges `{ strict: true, skipPrototype: false }`
|
|
4
|
+
* with the options. A strict instance has own equal, deepEqual, notEqual and
|
|
5
|
+
* notDeepEqual properties that are the strict methods. The prototype methods
|
|
6
|
+
* read the instance options: `diff` reaches every AssertionError the method
|
|
7
|
+
* throws, and `skipPrototype` reaches deepStrictEqual and
|
|
8
|
+
* notDeepStrictEqual.
|
|
9
|
+
*
|
|
10
|
+
* Static instances lower here: a `const` binding initialized by
|
|
11
|
+
* `new Assert()` with literal options or none, whose every reference is a
|
|
12
|
+
* method call on it. The declaration emits nothing, and each method call
|
|
13
|
+
* lowers like the module function, with the options attached at compile
|
|
14
|
+
* time. Other uses of the class are refused with SC2020. */
|
|
15
|
+
import * as ts from "../ts7/adapter.js";
|
|
16
|
+
import { transformExpr } from "../../ir/traverse.js";
|
|
17
|
+
import { stripTypeCasts } from "./builtins/arguments.js";
|
|
18
|
+
/** The methods on an Assert instance: Assert.prototype's, plus a strict
|
|
19
|
+
* instance's own aliases, which share the names. */
|
|
20
|
+
const ASSERT_INSTANCE_METHODS = new Set([
|
|
21
|
+
"deepEqual",
|
|
22
|
+
"deepStrictEqual",
|
|
23
|
+
"doesNotMatch",
|
|
24
|
+
"doesNotReject",
|
|
25
|
+
"doesNotThrow",
|
|
26
|
+
"equal",
|
|
27
|
+
"fail",
|
|
28
|
+
"ifError",
|
|
29
|
+
"match",
|
|
30
|
+
"notDeepEqual",
|
|
31
|
+
"notDeepStrictEqual",
|
|
32
|
+
"notEqual",
|
|
33
|
+
"notStrictEqual",
|
|
34
|
+
"ok",
|
|
35
|
+
"partialDeepStrictEqual",
|
|
36
|
+
"rejects",
|
|
37
|
+
"strictEqual",
|
|
38
|
+
"throws",
|
|
39
|
+
]);
|
|
40
|
+
const STRICT_ALIASES = new Map([
|
|
41
|
+
["equal", "strictEqual"],
|
|
42
|
+
["notEqual", "notStrictEqual"],
|
|
43
|
+
["deepEqual", "deepStrictEqual"],
|
|
44
|
+
["notDeepEqual", "notDeepStrictEqual"],
|
|
45
|
+
]);
|
|
46
|
+
/** Assertion calls whose runtime function can construct an AssertionError.
|
|
47
|
+
* An instance call marks them with its options (`assertOptions`), which the
|
|
48
|
+
* native emitter hands to the runtime right before the call. */
|
|
49
|
+
export const ASSERT_FAILURE_LIB_FNS = new Set([
|
|
50
|
+
"assert.ok",
|
|
51
|
+
"assert.eqF64",
|
|
52
|
+
"assert.eqBigInt",
|
|
53
|
+
"assert.eqStr",
|
|
54
|
+
"assert.eqBool",
|
|
55
|
+
"assert.eqSym",
|
|
56
|
+
"assert.eqDyn",
|
|
57
|
+
"assert.expectsErrDyn",
|
|
58
|
+
"assert.looseDeepDyn",
|
|
59
|
+
"assert.partialDeepDyn",
|
|
60
|
+
"assert.looseResult",
|
|
61
|
+
"assert.deepResult",
|
|
62
|
+
"assert.looseDeepResult",
|
|
63
|
+
"assert.partialDeepResult",
|
|
64
|
+
"assert.match",
|
|
65
|
+
"assert.throwsNone",
|
|
66
|
+
"assert.throwsMismatch",
|
|
67
|
+
"assert.throwsRegex",
|
|
68
|
+
"assert.shapeEnd",
|
|
69
|
+
"assert.unwantedRejection",
|
|
70
|
+
"assert.unwantedError",
|
|
71
|
+
"assert.ifErrorErr",
|
|
72
|
+
"assert.ifErrorF64",
|
|
73
|
+
"assert.ifErrorStr",
|
|
74
|
+
"assert.ifErrorBool",
|
|
75
|
+
"assert.ifErrorDyn",
|
|
76
|
+
"assert.refEqFn",
|
|
77
|
+
"assert.refEqBytes",
|
|
78
|
+
"assert.bytesDeepEq",
|
|
79
|
+
]);
|
|
80
|
+
/** Whether `expr` is `new Assert(...)` for node:assert's Assert class, by
|
|
81
|
+
* import provenance: `import { Assert } from "node:assert"`, or
|
|
82
|
+
* `assert.Assert` through a module binding. */
|
|
83
|
+
export function isAssertClassNew(lowerer, expr) {
|
|
84
|
+
if (!ts.isNewExpression(expr))
|
|
85
|
+
return false;
|
|
86
|
+
const callee = stripTypeCasts(expr.expression);
|
|
87
|
+
const builtin = ts.isIdentifier(callee)
|
|
88
|
+
? lowerer.builtinImportOf(callee)
|
|
89
|
+
: ts.isPropertyAccessExpression(callee)
|
|
90
|
+
? lowerer.builtinMemberOf(callee)
|
|
91
|
+
: null;
|
|
92
|
+
return (builtin !== null &&
|
|
93
|
+
(builtin.module === "assert" || builtin.module === "assert/strict") &&
|
|
94
|
+
builtin.member === "Assert");
|
|
95
|
+
}
|
|
96
|
+
/** The options of `new Assert(<literal options>)`, or null when an option is
|
|
97
|
+
* not a literal or the argument list has another shape. */
|
|
98
|
+
export function literalAssertOptions(expr) {
|
|
99
|
+
const args = expr.arguments ?? [];
|
|
100
|
+
const options = { strict: true, diff: "simple", skipPrototype: false };
|
|
101
|
+
if (args.length === 0)
|
|
102
|
+
return options;
|
|
103
|
+
if (args.length > 1)
|
|
104
|
+
return null;
|
|
105
|
+
const arg = stripTypeCasts(args[0]);
|
|
106
|
+
if (ts.isIdentifier(arg) && arg.text === "undefined")
|
|
107
|
+
return options;
|
|
108
|
+
if (!ts.isObjectLiteralExpression(arg))
|
|
109
|
+
return null;
|
|
110
|
+
for (const prop of arg.properties) {
|
|
111
|
+
if (!ts.isPropertyAssignment(prop))
|
|
112
|
+
return null;
|
|
113
|
+
const name = ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) ? prop.name.text : null;
|
|
114
|
+
const value = stripTypeCasts(prop.initializer);
|
|
115
|
+
const flag = value.kind === ts.SyntaxKind.TrueKeyword
|
|
116
|
+
? true
|
|
117
|
+
: value.kind === ts.SyntaxKind.FalseKeyword
|
|
118
|
+
? false
|
|
119
|
+
: null;
|
|
120
|
+
if (name === "strict" && flag !== null)
|
|
121
|
+
options.strict = flag;
|
|
122
|
+
else if (name === "skipPrototype" && flag !== null)
|
|
123
|
+
options.skipPrototype = flag;
|
|
124
|
+
else if (name === "diff" &&
|
|
125
|
+
ts.isStringLiteral(value) &&
|
|
126
|
+
(value.text === "simple" || value.text === "full"))
|
|
127
|
+
options.diff = value.text;
|
|
128
|
+
else
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
return options;
|
|
132
|
+
}
|
|
133
|
+
/** The static instance a `const` declaration binds, or null. Every
|
|
134
|
+
* reference to the binding must be a method call on it, so the instance is
|
|
135
|
+
* never needed as a value. Cached on the lowerer per declaration. */
|
|
136
|
+
export function staticAssertInstanceDecl(lowerer, nameNode, init) {
|
|
137
|
+
if (!ts.isIdentifier(nameNode) || init === undefined)
|
|
138
|
+
return null;
|
|
139
|
+
const decl = nameNode.parent;
|
|
140
|
+
if (!ts.isVariableDeclaration(decl) || decl.name !== nameNode)
|
|
141
|
+
return null;
|
|
142
|
+
const cached = lowerer.assertInstances.get(decl);
|
|
143
|
+
if (cached !== undefined)
|
|
144
|
+
return cached;
|
|
145
|
+
let result = null;
|
|
146
|
+
const value = stripTypeCasts(init);
|
|
147
|
+
if (ts.isNewExpression(value) &&
|
|
148
|
+
isAssertClassNew(lowerer, value) &&
|
|
149
|
+
ts.isVariableDeclarationList(decl.parent) &&
|
|
150
|
+
(decl.parent.flags & ts.NodeFlags.Const) !== 0) {
|
|
151
|
+
const options = literalAssertOptions(value);
|
|
152
|
+
if (options !== null && onlyMethodCallReferences(lowerer, nameNode))
|
|
153
|
+
result = options;
|
|
154
|
+
}
|
|
155
|
+
lowerer.assertInstances.set(decl, result);
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/** The static instance an expression names, or null. */
|
|
159
|
+
export function assertInstanceOf(lowerer, expr) {
|
|
160
|
+
if (!ts.isIdentifier(expr))
|
|
161
|
+
return null;
|
|
162
|
+
const symbol = lowerer.checker.getSymbolAtLocation(expr);
|
|
163
|
+
const decl = symbol ? lowerer.checker.declarationsOf(symbol)[0] : undefined;
|
|
164
|
+
if (decl === undefined || !ts.isVariableDeclaration(decl))
|
|
165
|
+
return null;
|
|
166
|
+
return staticAssertInstanceDecl(lowerer, decl.name, decl.initializer);
|
|
167
|
+
}
|
|
168
|
+
function onlyMethodCallReferences(lowerer, name) {
|
|
169
|
+
const symbol = lowerer.checker.getSymbolAtLocation(name);
|
|
170
|
+
if (symbol === undefined)
|
|
171
|
+
return false;
|
|
172
|
+
let ok = true;
|
|
173
|
+
const visit = (node) => {
|
|
174
|
+
if (!ok)
|
|
175
|
+
return;
|
|
176
|
+
if (ts.isIdentifier(node) && node !== name && node.text === name.text) {
|
|
177
|
+
if (lowerer.checker.getSymbolAtLocation(node) === symbol && !isMethodCallReceiver(node))
|
|
178
|
+
ok = false;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
ts.forEachChild(node, visit);
|
|
182
|
+
};
|
|
183
|
+
visit(name.getSourceFile());
|
|
184
|
+
return ok;
|
|
185
|
+
}
|
|
186
|
+
function isMethodCallReceiver(node) {
|
|
187
|
+
const access = node.parent;
|
|
188
|
+
if (!ts.isPropertyAccessExpression(access) ||
|
|
189
|
+
access.expression !== node ||
|
|
190
|
+
access.questionDotToken !== undefined ||
|
|
191
|
+
!ASSERT_INSTANCE_METHODS.has(access.name.text))
|
|
192
|
+
return false;
|
|
193
|
+
const call = access.parent;
|
|
194
|
+
return ts.isCallExpression(call) && call.expression === access;
|
|
195
|
+
}
|
|
196
|
+
/** The methods whose AssertionError carries the instance's `diff`: Node
|
|
197
|
+
* 24.22 passes `this?.[kOptions]?.diff` from these. ok, match,
|
|
198
|
+
* doesNotMatch and the throws, rejects, doesNotThrow and doesNotReject
|
|
199
|
+
* expectations construct their errors without it (`diff` is "simple"). */
|
|
200
|
+
const DIFF_METHODS = new Set([
|
|
201
|
+
"fail",
|
|
202
|
+
"equal",
|
|
203
|
+
"notEqual",
|
|
204
|
+
"deepEqual",
|
|
205
|
+
"notDeepEqual",
|
|
206
|
+
"strictEqual",
|
|
207
|
+
"notStrictEqual",
|
|
208
|
+
"deepStrictEqual",
|
|
209
|
+
"notDeepStrictEqual",
|
|
210
|
+
"partialDeepStrictEqual",
|
|
211
|
+
"ifError",
|
|
212
|
+
]);
|
|
213
|
+
/** `instance.method(...)` on a static instance: the module function's
|
|
214
|
+
* lowering, with the strict aliases and the instance options that reach
|
|
215
|
+
* the method. Null when the receiver is not a static instance. */
|
|
216
|
+
export function lowerAssertInstanceCall(lowerer, expr, access, loc) {
|
|
217
|
+
const options = assertInstanceOf(lowerer, access.expression);
|
|
218
|
+
if (options === null)
|
|
219
|
+
return null;
|
|
220
|
+
const module = options.strict ? "assert/strict" : "assert";
|
|
221
|
+
const member = access.name.text;
|
|
222
|
+
// A strict instance's own aliases are the strict methods.
|
|
223
|
+
const method = options.strict && STRICT_ALIASES.has(member) ? STRICT_ALIASES.get(member) : member;
|
|
224
|
+
// Node passes skipPrototype to isDeepStrictEqual from deepStrictEqual and
|
|
225
|
+
// notDeepStrictEqual only.
|
|
226
|
+
const applied = {
|
|
227
|
+
strict: options.strict,
|
|
228
|
+
diff: DIFF_METHODS.has(method) ? options.diff : "simple",
|
|
229
|
+
skipPrototype: options.skipPrototype && (method === "deepStrictEqual" || method === "notDeepStrictEqual"),
|
|
230
|
+
};
|
|
231
|
+
const previous = lowerer.assertCallOptions;
|
|
232
|
+
lowerer.assertCallOptions = applied;
|
|
233
|
+
try {
|
|
234
|
+
const lowered = lowerer.lowerAssertModuleCall(expr, { module, member }, loc);
|
|
235
|
+
if (lowered === null)
|
|
236
|
+
return null;
|
|
237
|
+
return markAssertOptionsExpr(lowered, applied);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
lowerer.assertCallOptions = previous;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/** The runtime options an instance attaches to its failure calls, or null
|
|
244
|
+
* for the defaults. */
|
|
245
|
+
export function assertOptionsMark(options) {
|
|
246
|
+
if (options === null)
|
|
247
|
+
return null;
|
|
248
|
+
const mark = {};
|
|
249
|
+
if (options.diff === "full")
|
|
250
|
+
mark.diff = "full";
|
|
251
|
+
if (options.skipPrototype)
|
|
252
|
+
mark.skipPrototype = true;
|
|
253
|
+
return mark.diff === undefined && mark.skipPrototype === undefined ? null : mark;
|
|
254
|
+
}
|
|
255
|
+
const markLibCall = (mark) => ({
|
|
256
|
+
expr(node) {
|
|
257
|
+
if (node.kind === "libCall" && ASSERT_FAILURE_LIB_FNS.has(node.fn))
|
|
258
|
+
return { ...node, assertOptions: mark };
|
|
259
|
+
return node;
|
|
260
|
+
},
|
|
261
|
+
stmt: (node) => node,
|
|
262
|
+
});
|
|
263
|
+
/** Attaches the instance options to every assertion failure call in a
|
|
264
|
+
* lowered call site. */
|
|
265
|
+
export function markAssertOptionsExpr(expr, options) {
|
|
266
|
+
const mark = assertOptionsMark(options);
|
|
267
|
+
return mark === null ? expr : transformExpr(expr, markLibCall(mark));
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=assert-instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-instances.js","sourceRoot":"","sources":["../../../src/frontend/lowering/assert-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export declare function nullishValueUnitOf(lowerer: Lowerer, sym: ts.Symbol | nu
|
|
|
31
31
|
* and a RECORD-mapped one (`const i: I<A & B> = null as any` — an
|
|
32
32
|
* interface whose members are all generic signatures interns an empty
|
|
33
33
|
* shape) has a slot null can never inhabit, so storing would throw the
|
|
34
|
-
* representation error where Node stores null
|
|
34
|
+
* representation error where Node stores null. Either way the
|
|
35
35
|
* declaration emits nothing and reads know the value. Null-tolerant
|
|
36
36
|
* mappings (unions with a null/undefined arm, dyn) keep their real
|
|
37
37
|
* storage and every ordinary lowering. */
|
|
@@ -178,7 +178,7 @@ function usedInHeritageClause(lowerer, sym) {
|
|
|
178
178
|
* and a RECORD-mapped one (`const i: I<A & B> = null as any` — an
|
|
179
179
|
* interface whose members are all generic signatures interns an empty
|
|
180
180
|
* shape) has a slot null can never inhabit, so storing would throw the
|
|
181
|
-
* representation error where Node stores null
|
|
181
|
+
* representation error where Node stores null. Either way the
|
|
182
182
|
* declaration emits nothing and reads know the value. Null-tolerant
|
|
183
183
|
* mappings (unions with a null/undefined arm, dyn) keep their real
|
|
184
184
|
* storage and every ordinary lowering. */
|
|
@@ -40,4 +40,8 @@ export declare function optionMember(p: ts.ObjectLiteralElementLike): {
|
|
|
40
40
|
value: ts.Expression;
|
|
41
41
|
} | null;
|
|
42
42
|
export declare function errorFirstBytesCallback(lowerer: Lowerer, node: ts.Expression, api: string, arrayBuffer?: boolean): IrExpr;
|
|
43
|
+
/** An error-first callback (error, value) whose error parameter is
|
|
44
|
+
* Error | null or dyn and whose value parameter is dyn or accepted by
|
|
45
|
+
* `acceptValue`; `values` names the accepted values in the refusal. */
|
|
46
|
+
export declare function errorFirstCallback(lowerer: Lowerer, node: ts.Expression, api: string, acceptValue: (value: IrType) => boolean, values: string): IrExpr;
|
|
43
47
|
export declare function lowerBuiltinByteInput(lowerer: Lowerer, node: ts.Expression, loc: SrcLoc, module: "crypto" | "zlib"): IrExpr;
|
|
@@ -181,6 +181,12 @@ export function optionMember(p) {
|
|
|
181
181
|
return null;
|
|
182
182
|
}
|
|
183
183
|
export function errorFirstBytesCallback(lowerer, node, api, arrayBuffer = false) {
|
|
184
|
+
return errorFirstCallback(lowerer, node, api, (value) => !arrayBuffer && value.kind === "bytes" && value.elem === "u8", arrayBuffer ? "ArrayBuffer" : "Buffer/Uint8Array");
|
|
185
|
+
}
|
|
186
|
+
/** An error-first callback (error, value) whose error parameter is
|
|
187
|
+
* Error | null or dyn and whose value parameter is dyn or accepted by
|
|
188
|
+
* `acceptValue`; `values` names the accepted values in the refusal. */
|
|
189
|
+
export function errorFirstCallback(lowerer, node, api, acceptValue, values) {
|
|
184
190
|
let callback = lowerer.lowerExpr(node);
|
|
185
191
|
if (callback.type.kind === "dyn") {
|
|
186
192
|
callback = {
|
|
@@ -209,10 +215,8 @@ export function errorFirstBytesCallback(lowerer, node, api, arrayBuffer = false)
|
|
|
209
215
|
lowerer.unsupported("SC1090", node, `${api} callback error parameters must be Error | null`);
|
|
210
216
|
}
|
|
211
217
|
const value = callback.type.params[1];
|
|
212
|
-
if (value !== undefined &&
|
|
213
|
-
|
|
214
|
-
(arrayBuffer || !(value.kind === "bytes" && value.elem === "u8"))) {
|
|
215
|
-
lowerer.unsupported("SC1090", node, `${api} callback result parameters must be ${arrayBuffer ? "ArrayBuffer" : "Buffer/Uint8Array"} values`);
|
|
218
|
+
if (value !== undefined && value.kind !== "dyn" && !acceptValue(value)) {
|
|
219
|
+
lowerer.unsupported("SC1090", node, `${api} callback result parameters must be ${values} values`);
|
|
216
220
|
}
|
|
217
221
|
return voidizedCallback(lowerer, callback, locOf(node));
|
|
218
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/arguments.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as ts from "../../ts7/adapter.js";
|
|
2
|
+
import { type Lowerer } from "../lowerer.js";
|
|
3
|
+
import { type IrExpr } from "../../../ir/ir.js";
|
|
4
|
+
type BlobClass = "Blob" | "File";
|
|
5
|
+
/** The Blob or File constructor in any spelling: the globals, globalThis
|
|
6
|
+
* members, and node:buffer's named, namespace and require bindings. */
|
|
7
|
+
export declare function blobClassOf(lowerer: Lowerer, node: ts.Expression): BlobClass | null;
|
|
8
|
+
/** `new Blob(sources?, options?)` and `new File(bits, name, options?)`:
|
|
9
|
+
* the argument vector goes to the runtime, which validates it in Node's
|
|
10
|
+
* order. */
|
|
11
|
+
export declare function lowerBlobNew(lowerer: Lowerer, expr: ts.NewExpression): IrExpr | null;
|
|
12
|
+
/** slice(), text(), bytes() and arrayBuffer() on a Blob or File. */
|
|
13
|
+
export declare function lowerStaticBlobCall(lowerer: Lowerer, call: ts.CallExpression): IrExpr | null;
|
|
14
|
+
/** `v instanceof Blob` / `v instanceof File`. */
|
|
15
|
+
export declare function lowerBlobInstanceof(lowerer: Lowerer, expr: ts.BinaryExpression): IrExpr | null;
|
|
16
|
+
/** Members outside the native surface: Node keeps Blob's state in internal
|
|
17
|
+
* slots behind prototype getters and methods, so only the modeled reads
|
|
18
|
+
* and calls lower; stream() and the rest are refused here. */
|
|
19
|
+
export declare function fenceStaticBlobMember(lowerer: Lowerer, access: ts.PropertyAccessExpression | ts.ElementAccessExpression, use: "read" | "call"): IrExpr | null;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import * as ts from "../../ts7/adapter.js";
|
|
2
|
+
import {} from "../lowerer.js";
|
|
3
|
+
import { locOf } from "../../program.js";
|
|
4
|
+
import { BOOL, BYTES_U8, DYN, F64, STRING } from "../../../ir/ir.js";
|
|
5
|
+
import { lowerDynObjectLiteral } from "../expressions/object-literals.js";
|
|
6
|
+
import { stdlibGlobalNameOf } from "../surfaces.js";
|
|
7
|
+
import { builtinImportOf } from "./module-bindings.js";
|
|
8
|
+
const BLOB_READS = new Set(["size", "type"]);
|
|
9
|
+
const FILE_READS = new Set(["size", "type", "name", "lastModified"]);
|
|
10
|
+
const BLOB_CALLS = new Set(["slice", "text", "bytes", "arrayBuffer"]);
|
|
11
|
+
// The stream readers Node 24 defines (textStream() is newer than some type
|
|
12
|
+
// declarations, so it is matched by name).
|
|
13
|
+
const STREAM_MEMBERS = new Set(["stream", "textStream"]);
|
|
14
|
+
// Object.prototype members other than toString() (the handle answers the
|
|
15
|
+
// class tag): the native handle has no prototype chain to answer them.
|
|
16
|
+
const OBJECT_PROTOTYPE_MEMBERS = new Set([
|
|
17
|
+
"constructor",
|
|
18
|
+
"valueOf",
|
|
19
|
+
"hasOwnProperty",
|
|
20
|
+
"isPrototypeOf",
|
|
21
|
+
"propertyIsEnumerable",
|
|
22
|
+
"toLocaleString",
|
|
23
|
+
"__proto__",
|
|
24
|
+
]);
|
|
25
|
+
/** The Blob or File constructor in any spelling: the globals, globalThis
|
|
26
|
+
* members, and node:buffer's named, namespace and require bindings. */
|
|
27
|
+
export function blobClassOf(lowerer, node) {
|
|
28
|
+
const global = stdlibGlobalNameOf(lowerer, node);
|
|
29
|
+
if (global === "Blob" || global === "File")
|
|
30
|
+
return global;
|
|
31
|
+
const builtin = ts.isIdentifier(node)
|
|
32
|
+
? builtinImportOf(lowerer, node)
|
|
33
|
+
: ts.isPropertyAccessExpression(node) && !node.questionDotToken
|
|
34
|
+
? lowerer.builtinMemberOf(node)
|
|
35
|
+
: null;
|
|
36
|
+
if (builtin?.module === "buffer" && (builtin.member === "Blob" || builtin.member === "File")) {
|
|
37
|
+
return builtin.member;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/** The class of a stdlib Blob/File-typed receiver, or null. */
|
|
42
|
+
function blobReceiverClass(lowerer, node) {
|
|
43
|
+
const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(node));
|
|
44
|
+
const sym = type.getAliasSymbol() ?? type.getSymbol();
|
|
45
|
+
if (!sym || (sym.name !== "Blob" && sym.name !== "File") || !lowerer.isStdlibSymbol(sym)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return sym.name;
|
|
49
|
+
}
|
|
50
|
+
function memberNameOf(access) {
|
|
51
|
+
if (ts.isPropertyAccessExpression(access))
|
|
52
|
+
return access.name.text;
|
|
53
|
+
const key = access.argumentExpression;
|
|
54
|
+
return ts.isStringLiteralLike(key) ? key.text : null;
|
|
55
|
+
}
|
|
56
|
+
/** `new Blob(sources?, options?)` and `new File(bits, name, options?)`:
|
|
57
|
+
* the argument vector goes to the runtime, which validates it in Node's
|
|
58
|
+
* order. */
|
|
59
|
+
export function lowerBlobNew(lowerer, expr) {
|
|
60
|
+
const cls = blobClassOf(lowerer, expr.expression);
|
|
61
|
+
if (cls === null)
|
|
62
|
+
return null;
|
|
63
|
+
const args = expr.arguments ?? [];
|
|
64
|
+
if (args.some(ts.isSpreadElement))
|
|
65
|
+
return null;
|
|
66
|
+
const loc = locOf(expr);
|
|
67
|
+
const values = args.map((arg) => ts.isObjectLiteralExpression(arg)
|
|
68
|
+
? lowerDynObjectLiteral(lowerer, arg)
|
|
69
|
+
: lowerer.lowerExprExpecting(arg, DYN));
|
|
70
|
+
return {
|
|
71
|
+
kind: "libCall",
|
|
72
|
+
fn: cls === "Blob" ? "blob.new" : "blob.fileNew",
|
|
73
|
+
args: [{ kind: "dynArrLit", elems: values, type: DYN, loc }],
|
|
74
|
+
type: DYN,
|
|
75
|
+
loc,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** slice(), text(), bytes() and arrayBuffer() on a Blob or File. */
|
|
79
|
+
export function lowerStaticBlobCall(lowerer, call) {
|
|
80
|
+
if (call.questionDotToken || !ts.isPropertyAccessExpression(call.expression))
|
|
81
|
+
return null;
|
|
82
|
+
const access = call.expression;
|
|
83
|
+
const member = access.name.text;
|
|
84
|
+
if (access.questionDotToken || !BLOB_CALLS.has(member))
|
|
85
|
+
return null;
|
|
86
|
+
if (blobReceiverClass(lowerer, access.expression) === null)
|
|
87
|
+
return null;
|
|
88
|
+
if (call.arguments.some(ts.isSpreadElement))
|
|
89
|
+
return null;
|
|
90
|
+
const loc = locOf(call);
|
|
91
|
+
const receiver = lowerer.lowerExprExpecting(access.expression, DYN);
|
|
92
|
+
const args = call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN));
|
|
93
|
+
if (member === "slice") {
|
|
94
|
+
return {
|
|
95
|
+
kind: "libCall",
|
|
96
|
+
fn: "blob.slice",
|
|
97
|
+
args: [receiver, { kind: "dynArrLit", elems: args, type: DYN, loc }],
|
|
98
|
+
type: DYN,
|
|
99
|
+
loc,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const read = (recv) => ({
|
|
103
|
+
kind: "libCall",
|
|
104
|
+
fn: member === "text" ? "blob.text" : member === "bytes" ? "blob.bytes" : "blob.arrayBuffer",
|
|
105
|
+
args: [recv],
|
|
106
|
+
type: {
|
|
107
|
+
kind: "promise",
|
|
108
|
+
inner: member === "text" ? STRING : member === "bytes" ? BYTES_U8 : DYN,
|
|
109
|
+
},
|
|
110
|
+
loc,
|
|
111
|
+
});
|
|
112
|
+
if (args.length === 0)
|
|
113
|
+
return read(receiver);
|
|
114
|
+
// The readers take no arguments; extra ones still evaluate after the
|
|
115
|
+
// receiver and before the read.
|
|
116
|
+
const local = lowerer.declareHiddenLocal("%blobReceiver", DYN);
|
|
117
|
+
const stmts = [
|
|
118
|
+
{ kind: "varDecl", localId: local.id, init: receiver, loc },
|
|
119
|
+
...args.map((arg) => ({ kind: "exprStmt", expr: arg, loc: arg.loc })),
|
|
120
|
+
];
|
|
121
|
+
const result = read({ kind: "varRef", localId: local.id, type: DYN, loc });
|
|
122
|
+
return { kind: "seqExpr", stmts, result, type: result.type, loc };
|
|
123
|
+
}
|
|
124
|
+
/** `v instanceof Blob` / `v instanceof File`. */
|
|
125
|
+
export function lowerBlobInstanceof(lowerer, expr) {
|
|
126
|
+
const cls = blobClassOf(lowerer, expr.right);
|
|
127
|
+
if (cls === null)
|
|
128
|
+
return null;
|
|
129
|
+
const loc = locOf(expr);
|
|
130
|
+
const value = lowerer.coerceInto(expr.left, lowerer.lowerExpr(expr.left), DYN);
|
|
131
|
+
return {
|
|
132
|
+
kind: "libCall",
|
|
133
|
+
fn: "blob.is",
|
|
134
|
+
args: [value, { kind: "numLit", value: cls === "Blob" ? 0 : 1, type: F64, loc }],
|
|
135
|
+
type: BOOL,
|
|
136
|
+
loc,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/** Members outside the native surface: Node keeps Blob's state in internal
|
|
140
|
+
* slots behind prototype getters and methods, so only the modeled reads
|
|
141
|
+
* and calls lower; stream() and the rest are refused here. */
|
|
142
|
+
export function fenceStaticBlobMember(lowerer, access, use) {
|
|
143
|
+
const cls = blobReceiverClass(lowerer, access.expression);
|
|
144
|
+
if (cls === null)
|
|
145
|
+
return null;
|
|
146
|
+
const member = memberNameOf(access);
|
|
147
|
+
if (member !== null) {
|
|
148
|
+
if (use === "call" && (BLOB_CALLS.has(member) || member === "toString"))
|
|
149
|
+
return null;
|
|
150
|
+
if (use === "read" && (cls === "File" ? FILE_READS : BLOB_READS).has(member))
|
|
151
|
+
return null;
|
|
152
|
+
// Names the class does not declare keep the generic dynamic path
|
|
153
|
+
// (undefined reads, Node's "is not a function" TypeError, and the
|
|
154
|
+
// handle's toString()).
|
|
155
|
+
const type = lowerer.checker.getBaseTypeOfLiteralType(lowerer.typeOf(access.expression));
|
|
156
|
+
if (!OBJECT_PROTOTYPE_MEMBERS.has(member) &&
|
|
157
|
+
!STREAM_MEMBERS.has(member) &&
|
|
158
|
+
!lowerer.checker.getPropertyOfType(type, member)) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (member !== null && STREAM_MEMBERS.has(member)) {
|
|
163
|
+
lowerer.noLowering(`${cls}.${member}()`, access, "Blob streams are not supported yet; read the contents with bytes(), arrayBuffer() or text()");
|
|
164
|
+
}
|
|
165
|
+
lowerer.noLowering(member === null ? `computed ${cls} members` : `${cls}.${member}`, access, `the native ${cls} surface is ${cls === "File" ? "name, lastModified, " : ""}size and type plus slice(), text(), bytes() and arrayBuffer()`);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=blob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/builtins/blob.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { type Lowerer } from "../lowerer.js";
|
|
|
3
3
|
import { type IrExpr, type SrcLoc } from "../../../ir/ir.js";
|
|
4
4
|
/** A call THROUGH a promisified-execFile binding:
|
|
5
5
|
* `execFileAsync(file, args?, options?)` → one call of the interned
|
|
6
|
-
* %execFileAsync helper — an ASYNC IR function (throw
|
|
7
|
-
*
|
|
6
|
+
* %execFileAsync helper — an ASYNC IR function (a throw becomes a rejection
|
|
7
|
+
* automatically) that runs the exec core synchronously and returns
|
|
8
8
|
* `{ stdout, stderr }`, exactly Node's promisified execFile behind an
|
|
9
9
|
* already-settled promise (the fs/promises stance, divergence 23).
|
|
10
10
|
* Options are the exec-sync slice minus stdio (the async form always
|
|
@@ -8,8 +8,8 @@ import { BOOL, F64, SPAWNRES_T, STRING, arrayOf, } from "../../../ir/ir.js";
|
|
|
8
8
|
import { optionMember } from "./arguments.js";
|
|
9
9
|
/** A call THROUGH a promisified-execFile binding:
|
|
10
10
|
* `execFileAsync(file, args?, options?)` → one call of the interned
|
|
11
|
-
* %execFileAsync helper — an ASYNC IR function (throw
|
|
12
|
-
*
|
|
11
|
+
* %execFileAsync helper — an ASYNC IR function (a throw becomes a rejection
|
|
12
|
+
* automatically) that runs the exec core synchronously and returns
|
|
13
13
|
* `{ stdout, stderr }`, exactly Node's promisified execFile behind an
|
|
14
14
|
* already-settled promise (the fs/promises stance, divergence 23).
|
|
15
15
|
* Options are the exec-sync slice minus stdio (the async form always
|
|
@@ -127,7 +127,7 @@ export function lowerChildMethodCall(lowerer, call, access) {
|
|
|
127
127
|
if (cb.type.ret.kind !== "void") {
|
|
128
128
|
// `() => 5` IS assignable to a void-returning listener slot; the
|
|
129
129
|
// registry's call ABI is void, so a value-returning closure is
|
|
130
|
-
// fenced instead of
|
|
130
|
+
// fenced instead of being called through the wrong ABI.
|
|
131
131
|
lowerer.unsupported("SC1090", call.arguments[1], "listeners returning a value (make the callback body a block, or return nothing)");
|
|
132
132
|
}
|
|
133
133
|
const param = cb.type.params[0];
|