@scriptc/compiler 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +35 -5
- package/dist/backend/executable-features.js +7 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +3 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/array-search.js +3 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +27 -1
- package/dist/backend/llvm/classes.js +115 -22
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +21 -9
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -3
- package/dist/backend/llvm/common.js +50 -3
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.d.ts +3 -1
- package/dist/backend/llvm/dense-array-access.js +61 -38
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.test.js +4 -0
- package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.js +3 -3
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +9 -0
- package/dist/backend/llvm/dyn.js +62 -6
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +5 -2
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +54 -32
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +3 -2
- package/dist/backend/llvm/emit-statements.js +90 -13
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +20 -9
- package/dist/backend/llvm/emitter.js +42 -31
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +17 -4
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +6 -9
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +46 -4
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +3 -3
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.js +55 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +11 -15
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/integer-clones.js +3 -3
- package/dist/backend/llvm/integer-clones.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +18 -0
- package/dist/backend/llvm/js-ic.js +712 -0
- package/dist/backend/llvm/js-ic.js.map +1 -0
- package/dist/backend/llvm/jsval.js +139 -11
- package/dist/backend/llvm/jsval.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +4 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +22 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +40 -31
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +20 -4
- package/dist/backend/llvm/map-number-lookup.js +43 -7
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/narrow-guards.js +64 -0
- package/dist/backend/llvm/narrow-guards.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +3 -0
- package/dist/backend/llvm/publish.js +36 -17
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/regions.js +2 -2
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/regions.test.js +7 -1
- package/dist/backend/llvm/regions.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +8 -2
- package/dist/backend/llvm/shapes.js +9 -7
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +20 -1
- package/dist/backend/llvm/speculative-integers.js +94 -6
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.test.js +55 -1
- package/dist/backend/llvm/speculative-integers.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +1 -1
- package/dist/backend/llvm/string-reads.js +4 -4
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/thread-slots.test.js +5 -4
- package/dist/backend/llvm/thread-slots.test.js.map +1 -1
- package/dist/backend/mangle.d.ts +5 -0
- package/dist/backend/mangle.js +7 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +20 -0
- package/dist/backend/native/executable.js +20 -3
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +2 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +6 -0
- package/dist/backend/native-codegen.js +19 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +27 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +18 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-profile.d.ts +32 -0
- package/dist/backend/native-profile.js +39 -0
- package/dist/backend/native-profile.js.map +1 -0
- package/dist/backend/native-profile.test.d.ts +1 -0
- package/dist/backend/native-profile.test.js +58 -0
- package/dist/backend/native-profile.test.js.map +1 -0
- package/dist/backend/native-tools.d.ts +14 -0
- package/dist/backend/native-tools.js +13 -0
- package/dist/backend/native-tools.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +4 -0
- package/dist/backend/runtime-pack-core.js +4 -0
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +4 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +4 -1
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +7 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +3 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +63 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/host.d.ts +3 -0
- package/dist/cli/output-options.d.ts +2 -0
- package/dist/cli/output-options.js +9 -0
- package/dist/cli/output-options.js.map +1 -1
- package/dist/cli/usage.d.ts +11 -1
- package/dist/cli/usage.js +23 -0
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +9 -0
- package/dist/contracts/check.js +1 -2
- package/dist/contracts/check.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +10 -0
- package/dist/executable/executable-cache.js +6 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +5 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/arguments-usage.d.ts +8 -0
- package/dist/frontend/arguments-usage.js +98 -0
- package/dist/frontend/arguments-usage.js.map +1 -1
- package/dist/frontend/arguments-usage.test.d.ts +1 -0
- package/dist/frontend/arguments-usage.test.js +32 -0
- package/dist/frontend/arguments-usage.test.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.d.ts +24 -0
- package/dist/frontend/builtin-package-aliases.js +133 -0
- package/dist/frontend/builtin-package-aliases.js.map +1 -0
- package/dist/frontend/builtin-package-aliases.test.d.ts +1 -0
- package/dist/frontend/builtin-package-aliases.test.js +48 -0
- package/dist/frontend/builtin-package-aliases.test.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.d.ts +8 -0
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js +50 -1
- package/dist/frontend/lowering/builtins/builtin-class-dyn.js.map +1 -1
- package/dist/frontend/lowering/builtins/callable-aliases.js +3 -2
- package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +3 -0
- package/dist/frontend/lowering/builtins/crypto.js +4 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +10 -0
- package/dist/frontend/lowering/builtins/ecdh.js +208 -0
- package/dist/frontend/lowering/builtins/ecdh.js.map +1 -0
- package/dist/frontend/lowering/builtins/json.js +52 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +9 -0
- package/dist/frontend/lowering/builtins/process.js +44 -0
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +21 -3
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +26 -0
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +5 -1
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/call-signatures.d.ts +4 -0
- package/dist/frontend/lowering/call-signatures.js +126 -9
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +34 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +9 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +10 -0
- package/dist/frontend/lowering/class-protocols.js +53 -3
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +6 -1
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-to-primitive.d.ts +2 -2
- package/dist/frontend/lowering/class-to-primitive.js +6 -3
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/coercions/fresh-spread.d.ts +13 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js +95 -0
- package/dist/frontend/lowering/coercions/fresh-spread.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.js +99 -70
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +22 -19
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +7 -0
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +5 -0
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +9 -0
- package/dist/frontend/lowering/containers/bytes.js +493 -17
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +72 -3
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +49 -13
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
- package/dist/frontend/lowering/cycle-initialization.js +152 -35
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +33 -13
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +79 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +13 -6
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +14 -2
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +91 -10
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +17 -2
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +48 -1
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +12 -3
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +5 -0
- package/dist/frontend/lowering/expressions/property-access.js +252 -9
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +49 -4
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +13 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +1 -1
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
- package/dist/frontend/lowering/generator-delegation.js +191 -1
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +4 -0
- package/dist/frontend/lowering/generic-functions.js +213 -56
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.d.ts +24 -0
- package/dist/frontend/lowering/handle-properties.js +281 -0
- package/dist/frontend/lowering/handle-properties.js.map +1 -0
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +1 -0
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +166 -7
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +4 -0
- package/dist/frontend/lowering/lower-classes.js +59 -7
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +62 -13
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +32 -1
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +4 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +10 -4
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +569 -11
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +212 -67
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +20 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +26 -1
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +28 -9
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -10
- package/dist/frontend/lowering/lower-stmts.js +418 -51
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +17 -1
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +29 -5
- package/dist/frontend/lowering/lowerer.js +172 -25
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +133 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/string-index-bounds.js +3 -2
- package/dist/frontend/lowering/string-index-bounds.js.map +1 -1
- package/dist/frontend/lowering/surfaces.js +30 -4
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/thenables.d.ts +16 -0
- package/dist/frontend/lowering/thenables.js +124 -0
- package/dist/frontend/lowering/thenables.js.map +1 -0
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +8 -1
- package/dist/frontend/npm-static-bundled-chunks.js +173 -2
- package/dist/frontend/npm-static-bundled-chunks.js.map +1 -1
- package/dist/frontend/npm-static-bundled-chunks.test.js +112 -0
- package/dist/frontend/npm-static-bundled-chunks.test.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.js +224 -4
- package/dist/frontend/npm-static-bundled-esm.js.map +1 -1
- package/dist/frontend/npm-static-bundled-esm.test.js +129 -0
- package/dist/frontend/npm-static-bundled-esm.test.js.map +1 -1
- package/dist/frontend/npm-static-enum-iife.d.ts +6 -0
- package/dist/frontend/npm-static-enum-iife.js +280 -0
- package/dist/frontend/npm-static-enum-iife.js.map +1 -0
- package/dist/frontend/npm-static-enum-iife.test.d.ts +1 -0
- package/dist/frontend/npm-static-enum-iife.test.js +116 -0
- package/dist/frontend/npm-static-enum-iife.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +8 -0
- package/dist/frontend/npm-static.js +46 -1
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.js +13 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/package-shims.d.ts +47 -0
- package/dist/frontend/package-shims.js +300 -0
- package/dist/frontend/package-shims.js.map +1 -0
- package/dist/frontend/pipeline.js +67 -1
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.d.ts +8 -0
- package/dist/frontend/program.js +72 -9
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.js +13 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/services.d.ts +6 -0
- package/dist/frontend/services.js +19 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +6 -5
- package/dist/frontend/ts7/program-host.js +7 -0
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +3 -0
- package/dist/frontend/ts7/semantic-model.js +26 -0
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -4
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/type-mapper.js +201 -15
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +58 -6
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +3 -2
- package/dist/ir/array-length-stability.js +15 -2
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +22 -1
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +13 -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 +46 -4
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +5 -0
- package/dist/ir/integer-loop-facts.js +79 -14
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-ranges.d.ts +10 -1
- package/dist/ir/integer-ranges.js +122 -25
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/integer-ranges.test.js +191 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.js +8 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +52 -0
- package/dist/ir/js-ic.js +199 -0
- package/dist/ir/js-ic.js.map +1 -0
- package/dist/ir/js-ic.test.d.ts +1 -0
- package/dist/ir/js-ic.test.js +148 -0
- package/dist/ir/js-ic.test.js.map +1 -0
- package/dist/ir/jsval.js +38 -4
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +39 -4
- package/dist/ir/runtime-features.js +229 -99
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/traverse.js +110 -68
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +21 -8
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +15 -2
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cli.js +17 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +33 -4
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache.js +3 -0
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.js +3 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +7 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +21 -20
- package/shims/fs-extra/core/api.ts +1192 -0
- package/shims/fs-extra/index.ts +9 -0
- package/shims/undici/core/agent.ts +163 -0
- package/shims/undici/core/api.ts +93 -0
- package/shims/undici/core/client.ts +1304 -0
- package/shims/undici/core/connector.ts +157 -0
- package/shims/undici/core/diagnostics-types.ts +68 -0
- package/shims/undici/core/diagnostics.ts +16 -0
- package/shims/undici/core/dispatcher.ts +574 -0
- package/shims/undici/core/errors-v5.ts +22 -0
- package/shims/undici/core/errors-v7.ts +25 -0
- package/shims/undici/core/errors.ts +255 -0
- package/shims/undici/core/fetch.ts +635 -0
- package/shims/undici/core/pool.ts +280 -0
- package/shims/undici/core/readable.ts +268 -0
- package/shims/undici/core/request.ts +313 -0
- package/shims/undici/core/timers.ts +80 -0
- package/shims/undici/core/types.ts +167 -0
- package/shims/undici/core/util.ts +67 -0
- package/shims/undici/v5.ts +119 -0
- package/shims/undici/v7.ts +119 -0
- package/surface-manifest.json +2 -4
|
@@ -62,6 +62,7 @@ import { lowerReflectCall } from "./builtins/reflection.js";
|
|
|
62
62
|
import { lowerAbsenceProbe, v8CalleeText, lowerOptionalNumber, lowerPromiseAllTupleCall, lowerPromiseRejectCall, lowerToNumberArgument, stringWrapperToString, symbolFieldInfo, templateRawTextOf, } from "./lower-exprs.js";
|
|
63
63
|
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
64
64
|
import { tryLowerExpression } from "./expressions/try-lower-expression.js";
|
|
65
|
+
import { lowerChildMethodValue, lowerChildPropertyCall } from "./handle-properties.js";
|
|
65
66
|
import { classToNumberConversion } from "./class-to-primitive.js";
|
|
66
67
|
import { hasRuntimeStatics } from "./class-runtime-statics.js";
|
|
67
68
|
import { structuralReadType } from "./class-unions.js";
|
|
@@ -1160,6 +1161,7 @@ export function lowerCall(lowerer, expr) {
|
|
|
1160
1161
|
lowerCipherMethodCall(lowerer, expr, expr.expression) ??
|
|
1161
1162
|
lowerFileHandleMethodCall(lowerer, expr, expr.expression) ??
|
|
1162
1163
|
lowerDirMethodCall(lowerer, expr, expr.expression) ??
|
|
1164
|
+
lowerChildPropertyCall(lowerer, expr, expr.expression) ??
|
|
1163
1165
|
lowerer.lowerChildMethodCall(expr, expr.expression) ??
|
|
1164
1166
|
// Piped child-output stream receivers — on/once("data" | "end").
|
|
1165
1167
|
lowerChildStreamMethodCall(lowerer, expr, expr.expression) ??
|
|
@@ -1335,6 +1337,11 @@ export function lowerCall(lowerer, expr) {
|
|
|
1335
1337
|
return nsUndefRead(lowerer, ambientRoot.text, expr, t);
|
|
1336
1338
|
}
|
|
1337
1339
|
}
|
|
1340
|
+
{
|
|
1341
|
+
const childCall = lowerChildPropertyCall(lowerer, expr, expr.expression, true);
|
|
1342
|
+
if (childCall)
|
|
1343
|
+
return childCall;
|
|
1344
|
+
}
|
|
1338
1345
|
// The lib fence's METHOD-CALL chokepoint: a stdlib-declared member
|
|
1339
1346
|
// that every lowering above declined — an unlowered member
|
|
1340
1347
|
// (m.keys(), p.then(f), Object.keys(o)) or an unlowered call FORM of
|
|
@@ -1774,6 +1781,59 @@ function lowerStringMethodCallWithOptionalArgs(lowerer, call, access, receiver,
|
|
|
1774
1781
|
}
|
|
1775
1782
|
return changed ? { ...lowered, args } : lowered;
|
|
1776
1783
|
}
|
|
1784
|
+
/** `.then(String)` / `.then(Number)` / `.then(Boolean)` over a promise of
|
|
1785
|
+
* a number, string or boolean: the ambient constructor converts its first
|
|
1786
|
+
* argument (the settled value), so the handler is an interned closure over
|
|
1787
|
+
* the settled type applying that conversion. The constructors' own value
|
|
1788
|
+
* form takes a string, which a number or boolean settled value is not.
|
|
1789
|
+
* Null for every other handler. */
|
|
1790
|
+
function primitiveConversionHandler(lowerer, node, inner) {
|
|
1791
|
+
if (!ts.isIdentifier(node))
|
|
1792
|
+
return null;
|
|
1793
|
+
const name = node.text;
|
|
1794
|
+
if (name !== "String" && name !== "Number" && name !== "Boolean")
|
|
1795
|
+
return null;
|
|
1796
|
+
// A string settled value already fits the constructors' value form.
|
|
1797
|
+
if (inner.kind !== "f64" && inner.kind !== "bool")
|
|
1798
|
+
return null;
|
|
1799
|
+
if (!lowerer.isStdlibSymbol(lowerer.resolveValueSymbol(node) ?? undefined))
|
|
1800
|
+
return null;
|
|
1801
|
+
const loc = locOf(node);
|
|
1802
|
+
const ret = name === "String" ? STRING : name === "Number" ? F64 : BOOL;
|
|
1803
|
+
const fnT = funcOf([inner], ret);
|
|
1804
|
+
const key = `then.${name}:${typeKey(inner)}`;
|
|
1805
|
+
let fnName = lowerer.arrHofHelpers.get(key);
|
|
1806
|
+
if (fnName === undefined) {
|
|
1807
|
+
fnName = `%then.${name}.${lowerer.arrHofHelpers.size}`;
|
|
1808
|
+
lowerer.arrHofHelpers.set(key, fnName);
|
|
1809
|
+
const value = varRef("v.0", inner, loc);
|
|
1810
|
+
let body;
|
|
1811
|
+
if (name === "Boolean")
|
|
1812
|
+
body = { kind: "toBool", operand: value, type: BOOL, loc };
|
|
1813
|
+
else if (name === "String")
|
|
1814
|
+
body = { kind: "toString", operand: value, type: STRING, loc };
|
|
1815
|
+
else if (inner.kind === "f64")
|
|
1816
|
+
body = value;
|
|
1817
|
+
else
|
|
1818
|
+
body = {
|
|
1819
|
+
kind: "ternary",
|
|
1820
|
+
cond: value,
|
|
1821
|
+
then: { kind: "numLit", value: 1, type: F64, loc },
|
|
1822
|
+
else_: { kind: "numLit", value: 0, type: F64, loc },
|
|
1823
|
+
type: F64,
|
|
1824
|
+
loc,
|
|
1825
|
+
};
|
|
1826
|
+
lowerer.liftedFns.push({
|
|
1827
|
+
name: fnName,
|
|
1828
|
+
params: [{ localId: "v.0", name: "v", type: inner }],
|
|
1829
|
+
returnType: ret,
|
|
1830
|
+
locals: [{ id: "v.0", name: "v", type: inner, mutable: false }],
|
|
1831
|
+
body: [{ kind: "return", value: body, loc }],
|
|
1832
|
+
loc,
|
|
1833
|
+
});
|
|
1834
|
+
}
|
|
1835
|
+
return { kind: "closure", fnName, captures: [], type: fnT, loc };
|
|
1836
|
+
}
|
|
1777
1837
|
function lowerNumberConstructorValue(lowerer, argNode, loc) {
|
|
1778
1838
|
const undefinedArg = lowerStaticallyUndefinedArgument(lowerer, argNode);
|
|
1779
1839
|
if (undefinedArg) {
|
|
@@ -2781,6 +2841,9 @@ function lowerDynReceiverMethodCall(lowerer, call, access, boxTypedTemporary = f
|
|
|
2781
2841
|
? lowerer.checker.getNonNullableType(rawRecvTs)
|
|
2782
2842
|
: rawRecvTs;
|
|
2783
2843
|
if (lowerer.classImplementedProtocol(recvTs)) {
|
|
2844
|
+
const viewed = pickViewGenericMethodCall(lowerer, call, access, recvTs);
|
|
2845
|
+
if (viewed)
|
|
2846
|
+
return viewed;
|
|
2784
2847
|
const property = lowerer.checker.getPropertyOfType(recvTs, access.name.text);
|
|
2785
2848
|
if (property &&
|
|
2786
2849
|
isGenericCallableMemberType(lowerer.checker.getTypeOfSymbol(property), lowerer.checker))
|
|
@@ -3116,7 +3179,18 @@ function lowerDynReceiverMethodCall(lowerer, call, access, boxTypedTemporary = f
|
|
|
3116
3179
|
?.arms.every((arm) => arm.kind === "object" &&
|
|
3117
3180
|
lowerer.classes.get(arm.className)?.fields.has(access.name.text)))
|
|
3118
3181
|
return true;
|
|
3182
|
+
// A standard-library member spelled as a function-typed property
|
|
3183
|
+
// (undici-types declares Headers.append/forEach/... and the body mixin
|
|
3184
|
+
// as `readonly append: (...) => void`; scriptc's own declarations use
|
|
3185
|
+
// methods) is still the handle's native method: it takes the shared
|
|
3186
|
+
// receiver dispatch below either way (which also calls a plain object's
|
|
3187
|
+
// own member), so the lowering does not depend on which declaration
|
|
3188
|
+
// file supplies the type.
|
|
3189
|
+
const libMethod = prop !== undefined &&
|
|
3190
|
+
prop.declarations.length > 0 &&
|
|
3191
|
+
prop.declarations.every((decl) => lowerer.isStdlibFile(decl.getSourceFile()));
|
|
3119
3192
|
return (prop !== undefined &&
|
|
3193
|
+
!libMethod &&
|
|
3120
3194
|
prop.declarations.some((decl) => ts.isPropertyDeclaration(decl) || ts.isPropertySignature(decl)));
|
|
3121
3195
|
})();
|
|
3122
3196
|
// Protocol methods keep their static signature: instances of the
|
|
@@ -3656,8 +3730,14 @@ function lowerArrayIsArrayCall(lowerer, call, access) {
|
|
|
3656
3730
|
if (call.arguments.nodes.length !== 1)
|
|
3657
3731
|
return null; // the stdlib chokepoint fences
|
|
3658
3732
|
const argNode = call.arguments.nodes[0];
|
|
3659
|
-
|
|
3733
|
+
let arg = lowerer.lowerExpr(argNode);
|
|
3660
3734
|
const loc = locOf(call);
|
|
3735
|
+
// A checker-narrowed dyn read arrives as a validated extraction (the
|
|
3736
|
+
// dynCheck bridge). The runtime value may be wider than the flow type
|
|
3737
|
+
// claims (an overload narrower than what arrives), so test the dyn value
|
|
3738
|
+
// itself instead of folding on the extracted type (typeof's rule).
|
|
3739
|
+
if (arg.kind === "dynCheck" && arg.value.type.kind === "dyn")
|
|
3740
|
+
arg = arg.value;
|
|
3661
3741
|
if (arg.type.kind === "dyn") {
|
|
3662
3742
|
return { kind: "dynTest", test: "array", value: arg, type: BOOL, loc };
|
|
3663
3743
|
}
|
|
@@ -4982,7 +5062,8 @@ export function lowerPromiseMethodCall(lowerer, call, access) {
|
|
|
4982
5062
|
// the handle is the value's only story, isIslandExpr's local rule).
|
|
4983
5063
|
if (inner.kind === "moduleNs")
|
|
4984
5064
|
markModuleNsHandlerParams(lowerer, call.arguments.nodes[0], inner);
|
|
4985
|
-
let cb = lowerer
|
|
5065
|
+
let cb = primitiveConversionHandler(lowerer, call.arguments.nodes[0], inner) ??
|
|
5066
|
+
lowerer.lowerExpr(call.arguments.nodes[0]);
|
|
4986
5067
|
// A TYPED handler on a DYN-settling promise (the tracePromise
|
|
4987
5068
|
// result's `.then((value) => ...)` — the checker's generic
|
|
4988
5069
|
// instantiation typed the parameter, but the settled value is a
|
|
@@ -8174,13 +8255,31 @@ function lowerObjLitGenericMethodCall(lowerer, call, access) {
|
|
|
8174
8255
|
if ((name === "apply" || name === "call" || name === "bind") &&
|
|
8175
8256
|
lowerer.checker.getCallSignatures(recvT).length > 0) {
|
|
8176
8257
|
const value = tryLowerExpression(lowerer, access.expression);
|
|
8177
|
-
|
|
8178
|
-
|
|
8258
|
+
// Builtin function values held as checked-dynamic functions
|
|
8259
|
+
// (String.fromCharCode, JSON.stringify) bind the same way, and so
|
|
8260
|
+
// does a member that lowers to a checked-dynamic value (a native
|
|
8261
|
+
// handle's method read in JavaScript).
|
|
8262
|
+
if (value &&
|
|
8263
|
+
(value.type.kind === "dyn" ||
|
|
8264
|
+
(value.type.kind === "func" && lowerer.dynConvertible(value.type))) &&
|
|
8179
8265
|
!call.arguments.nodes.some(ts.isSpreadElement)) {
|
|
8180
8266
|
const loc = locOf(call);
|
|
8181
8267
|
return {
|
|
8182
8268
|
kind: "dynInvoke",
|
|
8183
|
-
recv: { kind: "dynFrom", value, type: DYN, loc },
|
|
8269
|
+
recv: value.type.kind === "dyn" ? value : { kind: "dynFrom", value, type: DYN, loc },
|
|
8270
|
+
method: name,
|
|
8271
|
+
calleeName: ts.getTextOfNode(access),
|
|
8272
|
+
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
8273
|
+
type: DYN,
|
|
8274
|
+
loc,
|
|
8275
|
+
};
|
|
8276
|
+
}
|
|
8277
|
+
const childMethod = lowerChildMethodValue(lowerer, access.expression);
|
|
8278
|
+
if (childMethod && !call.arguments.nodes.some(ts.isSpreadElement)) {
|
|
8279
|
+
const loc = locOf(call);
|
|
8280
|
+
return {
|
|
8281
|
+
kind: "dynInvoke",
|
|
8282
|
+
recv: childMethod,
|
|
8184
8283
|
method: name,
|
|
8185
8284
|
calleeName: ts.getTextOfNode(access),
|
|
8186
8285
|
args: call.arguments.nodes.map((arg) => lowerer.lowerExprExpecting(arg, DYN)),
|
|
@@ -8919,7 +9018,28 @@ export function lowerStaticNumberGlobal(lowerer, name, call, args, loc) {
|
|
|
8919
9018
|
const radix = args[1]
|
|
8920
9019
|
? lowerer.lowerExprExpecting(args[1], F64)
|
|
8921
9020
|
: { kind: "numLit", value: 0, type: F64, loc };
|
|
8922
|
-
|
|
9021
|
+
let optional = optionalCallValue(lowerer, args[0]);
|
|
9022
|
+
let lowered = null;
|
|
9023
|
+
// A possibly-missing or untyped text in JavaScript (`parseInt(process.
|
|
9024
|
+
// env.PORT, 10)`): TypeScript rejects the call, Node parses the text
|
|
9025
|
+
// of whatever arrives ("undefined").
|
|
9026
|
+
if (optional === null && isJsSourceFile(ts.getSourceFileOfNode(call))) {
|
|
9027
|
+
const argT = lowerer.typeOf(args[0]);
|
|
9028
|
+
const parts = argT.isUnionType() ? ts.constituentTypes(argT) : [argT];
|
|
9029
|
+
if (parts.some((part) => (part.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Null | ts.TypeFlags.Any)) !== 0)) {
|
|
9030
|
+
const raw = lowerer.lowerExpr(args[0]);
|
|
9031
|
+
if (raw.type.kind === "union") {
|
|
9032
|
+
optional = raw;
|
|
9033
|
+
lowered = raw;
|
|
9034
|
+
}
|
|
9035
|
+
else {
|
|
9036
|
+
const text = raw.type.kind === "dyn"
|
|
9037
|
+
? { kind: "libCall", fn: "dyn.toStringCoerce", args: [raw], type: STRING, loc }
|
|
9038
|
+
: lowerer.coerceInto(args[0], raw, STRING);
|
|
9039
|
+
return { kind: "libCall", fn: "num.parseInt", args: [text, radix], type: F64, loc };
|
|
9040
|
+
}
|
|
9041
|
+
}
|
|
9042
|
+
}
|
|
8923
9043
|
if (optional?.type.kind === "union") {
|
|
8924
9044
|
const def = lowerer.unions.get(optional.type.unionId);
|
|
8925
9045
|
const stringTag = def?.arms.findIndex((arm) => arm.kind === "string") ?? -1;
|
|
@@ -9014,7 +9134,9 @@ export function lowerStaticNumberGlobal(lowerer, name, call, args, loc) {
|
|
|
9014
9134
|
return { kind: "call", callee: helper, args: [optional, radix], type: F64, loc };
|
|
9015
9135
|
}
|
|
9016
9136
|
}
|
|
9017
|
-
const s =
|
|
9137
|
+
const s = lowered !== null
|
|
9138
|
+
? lowerer.coerceInto(args[0], lowered, STRING)
|
|
9139
|
+
: lowerer.lowerExprExpecting(args[0], STRING);
|
|
9018
9140
|
return { kind: "libCall", fn: "num.parseInt", args: [s, radix], type: F64, loc };
|
|
9019
9141
|
}
|
|
9020
9142
|
// STATIC parseFloat/isFinite over exactly-typed arguments —
|
|
@@ -9084,6 +9206,43 @@ function maybePromiseHandlerResult(lowerer, call, value, R) {
|
|
|
9084
9206
|
}
|
|
9085
9207
|
return stmt;
|
|
9086
9208
|
}
|
|
9209
|
+
/** `view.m(args)` where `view` is a `Pick<C, K>` / `Omit<C, K>` view of a
|
|
9210
|
+
* program class C and `m` is one of C's GENERIC methods (its overloads
|
|
9211
|
+
* included): generic methods have no dispatchable method value, so the
|
|
9212
|
+
* view's live receiver is extracted as the C instance it holds (a checked
|
|
9213
|
+
* extraction — a value of another class throws Node-style TypeError
|
|
9214
|
+
* text naming C) and the call monomorphizes statically against C, the
|
|
9215
|
+
* same lowering a C-typed receiver gets. Null for other receivers. */
|
|
9216
|
+
function pickViewGenericMethodCall(lowerer, call, access, recvTs) {
|
|
9217
|
+
const alias = recvTs.getAliasSymbol();
|
|
9218
|
+
if (alias === undefined || (ts.symbolName(alias) !== "Pick" && ts.symbolName(alias) !== "Omit"))
|
|
9219
|
+
return null;
|
|
9220
|
+
if (!alias.declarations.every((d) => ts.getSourceFileOfNode(d).isDeclarationFile))
|
|
9221
|
+
return null;
|
|
9222
|
+
const source = recvTs.getAliasTypeArguments()[0];
|
|
9223
|
+
const symbol = source?.getSymbol();
|
|
9224
|
+
const info = symbol ? lowerer.classBySymbol.get(symbol) : undefined;
|
|
9225
|
+
if (!info || call.questionDotToken || access.questionDotToken)
|
|
9226
|
+
return null;
|
|
9227
|
+
const found = findGenericMethodOn(lowerer, info, access.name.text);
|
|
9228
|
+
if (!found)
|
|
9229
|
+
return null;
|
|
9230
|
+
const loc = locOf(access.expression);
|
|
9231
|
+
const lowered = lowerer.lowerExpr(access.expression);
|
|
9232
|
+
const instance = { kind: "object", className: info.def.name };
|
|
9233
|
+
// A view that statically holds an instance of another class (a
|
|
9234
|
+
// structurally compatible one) calls that class's method in Node, not
|
|
9235
|
+
// C's: the call is refused rather than extracted as a C instance.
|
|
9236
|
+
if (lowered.type.kind === "object" &&
|
|
9237
|
+
lowered.type.className !== info.def.name &&
|
|
9238
|
+
!lowerer.isSubclassOf(lowered.type.className, info.def.name)) {
|
|
9239
|
+
lowerer.unsupported("SC1090", access, `calling the generic method '${access.name.text}' through a '${ts.symbolName(alias)}' view of '${info.def.name}' that holds a '${lowerer.fmt(lowered.type)}'`);
|
|
9240
|
+
}
|
|
9241
|
+
const receiver = lowered.type.kind === "object"
|
|
9242
|
+
? lowered
|
|
9243
|
+
: { kind: "dynCheck", value: lowerer.coerceToExpected(lowered, DYN), type: instance, loc };
|
|
9244
|
+
return lowerClassGenericMethodCall(lowerer, call, access, info, found, receiver);
|
|
9245
|
+
}
|
|
9087
9246
|
/** `Object.assign(err, ...sources)` in TypeScript onto an error-hierarchy
|
|
9088
9247
|
* target (`Object.assign(new Error(message), details)`): the sources'
|
|
9089
9248
|
* own members land on the error — the runtime copy over its
|