@scriptc/compiler 0.4.0 → 0.4.2
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 +617 -83
- package/dist/backend/cycle-analysis.d.ts +2 -1
- package/dist/backend/cycle-analysis.js +4 -4
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-mutability.d.ts +2 -1
- package/dist/backend/cycle-mutability.js +2 -2
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +10 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +2 -1
- package/dist/backend/immutability.js +2 -2
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/library-pack.js +7 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/link-plan-core.d.ts +2 -0
- package/dist/backend/link-plan-core.js +2 -0
- package/dist/backend/link-plan-core.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +1 -0
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +7 -3
- package/dist/backend/llvm/alloc.js +7 -4
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/array-search.js +4 -1
- package/dist/backend/llvm/array-search.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.d.ts +23 -2
- package/dist/backend/llvm/bytes-loop-versions.js +115 -19
- package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +131 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +99 -2
- package/dist/backend/llvm/classes.js +436 -57
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +235 -16
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +21 -5
- package/dist/backend/llvm/common.js +50 -5
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.js +8 -4
- package/dist/backend/llvm/constant-callbacks.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +4 -4
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/counted-loops.d.ts +4 -1
- package/dist/backend/llvm/counted-loops.js +62 -23
- package/dist/backend/llvm/counted-loops.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.d.ts +19 -16
- package/dist/backend/llvm/dense-array-loops.js +49 -13
- package/dist/backend/llvm/dense-array-loops.js.map +1 -1
- package/dist/backend/llvm/dense-array-loops.test.js +50 -14
- package/dist/backend/llvm/dense-array-loops.test.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +34 -1
- package/dist/backend/llvm/dyn.js +393 -14
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +27 -8
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +67 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.d.ts +3 -25
- package/dist/backend/llvm/emit-statements.js +414 -37
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +159 -22
- package/dist/backend/llvm/emitter.js +573 -89
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -0
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +5 -2
- package/dist/backend/llvm/expr-bytes.js +110 -40
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +1 -1
- package/dist/backend/llvm/expr-calls.js +51 -26
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +27 -14
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +2 -3
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +95 -5
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +29 -11
- 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 +48 -20
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.js +131 -35
- package/dist/backend/llvm/expr-stream-callbacks.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-dispatch.js +10 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +61 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-http2.d.ts +4 -0
- package/dist/backend/llvm/lib-http2.js +20 -17
- package/dist/backend/llvm/lib-http2.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +69 -17
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +75 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +65 -28
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-tls.js +23 -0
- package/dist/backend/llvm/lib-tls.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.js +91 -61
- package/dist/backend/llvm/local-array-reads.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.test.js +14 -0
- package/dist/backend/llvm/local-array-reads.test.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 +11 -1
- package/dist/backend/llvm/publish.js +80 -22
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/publish.test.js +3 -0
- package/dist/backend/llvm/publish.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +1 -1
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +2 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.js +161 -14
- package/dist/backend/llvm/regex-matchers.js.map +1 -1
- package/dist/backend/llvm/regex-matchers.test.js +18 -0
- package/dist/backend/llvm/regex-matchers.test.js.map +1 -1
- package/dist/backend/llvm/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 +17 -9
- package/dist/backend/llvm/shapes.js +21 -17
- 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-lifetimes.test.js +2 -1
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/string-reads.d.ts +4 -1
- package/dist/backend/llvm/string-reads.js +88 -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/llvm/wasm-modules.d.ts +6 -5
- package/dist/backend/llvm/wasm-modules.js +32 -9
- package/dist/backend/llvm/wasm-modules.js.map +1 -1
- package/dist/backend/mangle.d.ts +8 -0
- package/dist/backend/mangle.js +12 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +40 -2
- package/dist/backend/native/executable.js +40 -7
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +3 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +17 -6
- package/dist/backend/native-codegen.js +55 -9
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +18 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +30 -2
- 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/optimization.d.ts +2 -2
- 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 +7 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +0 -21
- package/dist/backend/runtime-pack.js +0 -29
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +12 -69
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +38 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +6 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/cli/command.js +89 -7
- 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 +15 -1
- package/dist/cli/usage.js +30 -2
- package/dist/cli/usage.js.map +1 -1
- package/dist/compile-types.d.ts +9 -0
- package/dist/contracts/check.js +2 -3
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/report.d.ts +7 -2
- package/dist/coverage/report.js +18 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/verdict-cache.d.ts +1 -0
- package/dist/coverage/verdict-cache.js +4 -0
- package/dist/coverage/verdict-cache.js.map +1 -1
- package/dist/coverage/verdict-semantic.js +4 -0
- package/dist/coverage/verdict-semantic.js.map +1 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.d.ts +40 -0
- package/dist/diagnostics/dynamic-tier.js +57 -0
- package/dist/diagnostics/dynamic-tier.js.map +1 -0
- package/dist/diagnostics/envelope.d.ts +2 -1
- package/dist/diagnostics/envelope.js +5 -2
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +32 -0
- package/dist/executable/executable-cache.js +65 -7
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +50 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +3 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +1 -0
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/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/dispose-hook.d.ts +2 -0
- package/dist/frontend/dispose-hook.js +14 -0
- package/dist/frontend/dispose-hook.js.map +1 -0
- package/dist/frontend/dts-paths.d.ts +4 -0
- package/dist/frontend/dts-paths.js +9 -1
- package/dist/frontend/dts-paths.js.map +1 -1
- package/dist/frontend/jsx-entities.d.ts +4 -0
- package/dist/frontend/jsx-entities.js +259 -0
- package/dist/frontend/jsx-entities.js.map +1 -0
- package/dist/frontend/jsx-source.d.ts +71 -0
- package/dist/frontend/jsx-source.js +781 -0
- package/dist/frontend/jsx-source.js.map +1 -0
- package/dist/frontend/jsx-source.test.d.ts +1 -0
- package/dist/frontend/jsx-source.test.js +200 -0
- package/dist/frontend/jsx-source.test.js.map +1 -0
- package/dist/frontend/literal-values.test.js +8 -9
- package/dist/frontend/literal-values.test.js.map +1 -1
- package/dist/frontend/lowering/array-indexed-mutation.js +2 -1
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
- package/dist/frontend/lowering/array-values.js +3 -2
- package/dist/frontend/lowering/array-values.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
- package/dist/frontend/lowering/binding-analysis.js +2 -2
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtins/arguments.d.ts +3 -0
- package/dist/frontend/lowering/builtins/arguments.js +30 -15
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.js +10 -6
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/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/child-process-async.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js +2 -1
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +7 -2
- package/dist/frontend/lowering/builtins/crypto.js +63 -4
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/date-classes.d.ts +46 -0
- package/dist/frontend/lowering/builtins/date-classes.js +477 -0
- package/dist/frontend/lowering/builtins/date-classes.js.map +1 -0
- package/dist/frontend/lowering/builtins/dates.d.ts +11 -1
- package/dist/frontend/lowering/builtins/dates.js +55 -26
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/dh.d.ts +15 -0
- package/dist/frontend/lowering/builtins/dh.js +151 -0
- package/dist/frontend/lowering/builtins/dh.js.map +1 -0
- package/dist/frontend/lowering/builtins/disposable-stack.js +2 -1
- package/dist/frontend/lowering/builtins/disposable-stack.js.map +1 -1
- package/dist/frontend/lowering/builtins/ecdh.d.ts +21 -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/errors.d.ts +15 -0
- package/dist/frontend/lowering/builtins/errors.js +110 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +23 -17
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.js +6 -4
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/fs-paths.d.ts +15 -0
- package/dist/frontend/lowering/builtins/fs-paths.js +209 -0
- package/dist/frontend/lowering/builtins/fs-paths.js.map +1 -0
- package/dist/frontend/lowering/builtins/hash-stream.d.ts +16 -4
- package/dist/frontend/lowering/builtins/hash-stream.js +86 -23
- package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +54 -1
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/key-object.d.ts +2 -1
- package/dist/frontend/lowering/builtins/key-object.js +20 -7
- package/dist/frontend/lowering/builtins/key-object.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +11 -4
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.js +9 -5
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.js +4 -3
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/performance.js +3 -2
- package/dist/frontend/lowering/builtins/performance.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +9 -0
- package/dist/frontend/lowering/builtins/process.js +47 -2
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +3 -2
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/promisify-callback.d.ts +3 -0
- package/dist/frontend/lowering/builtins/promisify-callback.js +23 -4
- package/dist/frontend/lowering/builtins/promisify-callback.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +2 -1
- package/dist/frontend/lowering/builtins/readline.js +23 -6
- package/dist/frontend/lowering/builtins/readline.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/strings.js +13 -5
- package/dist/frontend/lowering/builtins/strings.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +2 -1
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.js +6 -2
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/builtins/typed-array-members.d.ts +7 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js +160 -0
- package/dist/frontend/lowering/builtins/typed-array-members.js.map +1 -0
- package/dist/frontend/lowering/builtins/url.js +4 -3
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.js +2 -1
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/webcrypto.js +39 -20
- package/dist/frontend/lowering/builtins/webcrypto.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.js +2 -1
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +4 -0
- package/dist/frontend/lowering/call-signatures.js +137 -13
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/caught-value-dispatch.d.ts +18 -1
- package/dist/frontend/lowering/caught-value-dispatch.js +201 -32
- package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js +34 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/class-assertions.js +3 -2
- package/dist/frontend/lowering/class-assertions.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +2 -1
- package/dist/frontend/lowering/class-construction.js +8 -13
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-descriptors.js +1 -1
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +34 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +577 -152
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +77 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-method-mutations.js +3 -0
- package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.js +1 -1
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.d.ts +17 -0
- package/dist/frontend/lowering/class-protocols.js +117 -7
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +5 -0
- package/dist/frontend/lowering/class-prototypes.js +42 -4
- 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 +31 -8
- package/dist/frontend/lowering/class-to-primitive.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +2 -1
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/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 +105 -75
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +8 -7
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.js +8 -7
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.js +2 -1
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +15 -0
- package/dist/frontend/lowering/containers/array-callbacks.js +36 -32
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-concat.js +2 -1
- package/dist/frontend/lowering/containers/array-concat.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +32 -4
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +11 -5
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/array-pipelines.js +2 -1
- package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +10 -1
- package/dist/frontend/lowering/containers/bytes.js +601 -24
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.js +52 -2
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +3 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +80 -10
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +8 -7
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +32 -1
- package/dist/frontend/lowering/containers/iterator-helpers.js +6 -5
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +85 -22
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/containers/string-replacement.js +2 -1
- package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
- package/dist/frontend/lowering/cycle-initialization.d.ts +26 -10
- package/dist/frontend/lowering/cycle-initialization.js +177 -39
- package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +18 -1
- package/dist/frontend/lowering/deferred-module-initializers.js +226 -115
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
- package/dist/frontend/lowering/dispatch-sites.d.ts +59 -0
- package/dist/frontend/lowering/dispatch-sites.js +204 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.d.ts +1 -0
- package/dist/frontend/lowering/dispatch-sites.test.js +59 -0
- package/dist/frontend/lowering/dispatch-sites.test.js.map +1 -0
- package/dist/frontend/lowering/dyn-streams.d.ts +3 -0
- package/dist/frontend/lowering/dyn-streams.js +1 -1
- package/dist/frontend/lowering/dyn-streams.js.map +1 -1
- package/dist/frontend/lowering/dynamic-tier.d.ts +25 -0
- package/dist/frontend/lowering/dynamic-tier.js +327 -0
- package/dist/frontend/lowering/dynamic-tier.js.map +1 -0
- package/dist/frontend/lowering/error-methods.js +4 -0
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.js +48 -13
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +124 -8
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +30 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +46 -7
- package/dist/frontend/lowering/expressions/identifiers.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 +52 -7
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +0 -3
- package/dist/frontend/lowering/expressions/object-literals.js +75 -7
- 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 +17 -8
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +5 -4
- package/dist/frontend/lowering/expressions/property-access.js +351 -16
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +112 -9
- 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 +64 -10
- 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/generator-dynamic-dispatch.d.ts +6 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +20 -30
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +46 -1
- package/dist/frontend/lowering/generic-functions.js +660 -73
- 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/intern-tables.js +2 -1
- package/dist/frontend/lowering/intern-tables.js.map +1 -1
- package/dist/frontend/lowering/iterable-spelling.d.ts +7 -0
- package/dist/frontend/lowering/iterable-spelling.js +38 -0
- package/dist/frontend/lowering/iterable-spelling.js.map +1 -0
- package/dist/frontend/lowering/iterator-adapters.js +9 -8
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/js-dynamic-objects.js +3 -2
- package/dist/frontend/lowering/js-dynamic-objects.js.map +1 -1
- package/dist/frontend/lowering/json-require.js +2 -1
- package/dist/frontend/lowering/json-require.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +7 -2
- package/dist/frontend/lowering/key-order-witness.js +21 -4
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +38 -2
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lifetime-regions.js +2 -1
- package/dist/frontend/lowering/lifetime-regions.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.d.ts +33 -15
- package/dist/frontend/lowering/lower-array-sort.js +117 -21
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
- package/dist/frontend/lowering/lower-array-sort.test.js +93 -14
- package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +6 -5
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +3 -1
- package/dist/frontend/lowering/lower-async-iteration.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.d.ts +4 -0
- package/dist/frontend/lowering/lower-calls.js +504 -97
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +22 -0
- package/dist/frontend/lowering/lower-classes.js +339 -32
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +65 -15
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +14 -0
- package/dist/frontend/lowering/lower-event-emitter.js +267 -20
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +19 -2
- package/dist/frontend/lowering/lower-exprs.js +148 -12
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +308 -72
- 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 +578 -16
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mixins.js +2 -1
- package/dist/frontend/lowering/lower-mixins.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.js +2 -1
- package/dist/frontend/lowering/lower-mock.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +11 -3
- package/dist/frontend/lowering/lower-modules.js +227 -72
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.js +2 -2
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +2 -1
- package/dist/frontend/lowering/lower-namespaces.js +24 -3
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +10 -0
- package/dist/frontend/lowering/lower-server.js +263 -60
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +39 -18
- 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 +584 -69
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js +1 -1
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +575 -165
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +21 -4
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +151 -30
- package/dist/frontend/lowering/lowerer.js +725 -84
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +21 -9
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/narrowing-stability.js +5 -0
- package/dist/frontend/lowering/narrowing-stability.js.map +1 -1
- package/dist/frontend/lowering/native-ffi.js +1 -1
- package/dist/frontend/lowering/native-ffi.js.map +1 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js +2 -1
- package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.js +2 -1
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/private-brands.d.ts +9 -0
- package/dist/frontend/lowering/private-brands.js +66 -15
- package/dist/frontend/lowering/private-brands.js.map +1 -1
- package/dist/frontend/lowering/promise-executor-adapter.js +2 -1
- package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
- package/dist/frontend/lowering/rebindable-functions.d.ts +8 -0
- package/dist/frontend/lowering/rebindable-functions.js +54 -0
- package/dist/frontend/lowering/rebindable-functions.js.map +1 -0
- package/dist/frontend/lowering/require-initialization.js +2 -1
- package/dist/frontend/lowering/require-initialization.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-elements.d.ts +5 -0
- package/dist/frontend/lowering/runtime-optional-elements.js +17 -1
- package/dist/frontend/lowering/runtime-optional-elements.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-records.d.ts +2 -0
- package/dist/frontend/lowering/runtime-optional-records.js +18 -5
- package/dist/frontend/lowering/runtime-optional-records.js.map +1 -1
- package/dist/frontend/lowering/site-dependencies.d.ts +35 -0
- package/dist/frontend/lowering/site-dependencies.js +84 -0
- package/dist/frontend/lowering/site-dependencies.js.map +1 -0
- package/dist/frontend/lowering/site-dependencies.test.d.ts +1 -0
- package/dist/frontend/lowering/site-dependencies.test.js +53 -0
- package/dist/frontend/lowering/site-dependencies.test.js.map +1 -0
- package/dist/frontend/lowering/stable-names.d.ts +11 -0
- package/dist/frontend/lowering/stable-names.js +35 -0
- package/dist/frontend/lowering/stable-names.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +26 -0
- package/dist/frontend/lowering/static-typeof.js +172 -0
- package/dist/frontend/lowering/static-typeof.js.map +1 -0
- package/dist/frontend/lowering/strict-equality.js +2 -1
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- 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/structural-positions.d.ts +32 -0
- package/dist/frontend/lowering/structural-positions.js +108 -0
- package/dist/frontend/lowering/structural-positions.js.map +1 -0
- package/dist/frontend/lowering/surfaces.js +72 -30
- 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/lowering/var-hoisting.js +37 -3
- package/dist/frontend/lowering/var-hoisting.js.map +1 -1
- package/dist/frontend/npm-static-builtin-aliases.d.ts +8 -0
- package/dist/frontend/npm-static-builtin-aliases.js +65 -0
- package/dist/frontend/npm-static-builtin-aliases.js.map +1 -0
- package/dist/frontend/npm-static-bundled-chunks.d.ts +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-tsc-helpers.d.ts +5 -0
- package/dist/frontend/npm-static-tsc-helpers.js +106 -0
- package/dist/frontend/npm-static-tsc-helpers.js.map +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.d.ts +1 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js +58 -0
- package/dist/frontend/npm-static-tsc-helpers.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.d.ts +8 -0
- package/dist/frontend/npm-static-type-exports-host.js +214 -0
- package/dist/frontend/npm-static-type-exports-host.js.map +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports-host.test.js +53 -0
- package/dist/frontend/npm-static-type-exports-host.test.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.d.ts +52 -0
- package/dist/frontend/npm-static-type-exports.js +261 -0
- package/dist/frontend/npm-static-type-exports.js.map +1 -0
- package/dist/frontend/npm-static-type-exports.test.d.ts +1 -0
- package/dist/frontend/npm-static-type-exports.test.js +103 -0
- package/dist/frontend/npm-static-type-exports.test.js.map +1 -0
- package/dist/frontend/npm-static-umd.d.ts +6 -0
- package/dist/frontend/npm-static-umd.js +203 -0
- package/dist/frontend/npm-static-umd.js.map +1 -0
- package/dist/frontend/npm-static-umd.test.d.ts +1 -0
- package/dist/frontend/npm-static-umd.test.js +105 -0
- package/dist/frontend/npm-static-umd.test.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +16 -0
- package/dist/frontend/npm-static.js +93 -3
- 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 +21 -0
- package/dist/frontend/program.js +174 -14
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +1 -1
- package/dist/frontend/program.test.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 +12 -0
- package/dist/frontend/services.js +37 -0
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +21 -7
- package/dist/frontend/ts7/ast-node.js +131 -29
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -0
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.d.ts +27 -2
- package/dist/frontend/ts7/ast-wire.js +124 -21
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/ast.d.ts +23 -2
- package/dist/frontend/ts7/ast.js +143 -2
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/checker.d.ts +13 -1
- package/dist/frontend/ts7/checker.js +75 -1
- package/dist/frontend/ts7/checker.js.map +1 -1
- package/dist/frontend/ts7/checker.test.js +9 -6
- package/dist/frontend/ts7/checker.test.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +3 -3
- package/dist/frontend/ts7/enums.generated.d.ts +10 -0
- package/dist/frontend/ts7/enums.generated.js +21 -0
- package/dist/frontend/ts7/enums.generated.js.map +1 -1
- package/dist/frontend/ts7/enums.js +19 -0
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +6 -5
- package/dist/frontend/ts7/program-host.js +12 -2
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/semantic-checker.d.ts +10 -0
- package/dist/frontend/ts7/semantic-checker.js +25 -20
- package/dist/frontend/ts7/semantic-checker.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.d.ts +13 -0
- package/dist/frontend/ts7/semantic-json.js +146 -0
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.test.js +57 -1
- package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.d.ts +18 -0
- package/dist/frontend/ts7/semantic-model.js +90 -16
- package/dist/frontend/ts7/semantic-model.js.map +1 -1
- package/dist/frontend/ts7/semantic-model.test.js +3 -2
- package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
- package/dist/frontend/ts7/session.d.ts +19 -4
- package/dist/frontend/ts7/session.js +1 -1
- package/dist/frontend/ts7/session.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +1 -1
- package/dist/frontend/tsc-codes.js +7 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +38 -6
- package/dist/frontend/type-mapper.js +466 -47
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +1 -1
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend-process-args.d.ts +4 -0
- package/dist/frontend-process-args.js +52 -0
- package/dist/frontend-process-args.js.map +1 -0
- package/dist/frontend-process-args.test.d.ts +1 -0
- package/dist/frontend-process-args.test.js +47 -0
- package/dist/frontend-process-args.test.js.map +1 -0
- package/dist/frontend-process.d.ts +1 -0
- package/dist/frontend-process.js +23 -0
- package/dist/frontend-process.js.map +1 -0
- package/dist/heap-collection.d.ts +16 -0
- package/dist/heap-collection.js +42 -0
- package/dist/heap-collection.js.map +1 -0
- package/dist/heap-collection.test.d.ts +1 -0
- package/dist/heap-collection.test.js +59 -0
- package/dist/heap-collection.test.js.map +1 -0
- package/dist/heap-pressure.d.ts +2 -0
- package/dist/heap-pressure.js +12 -0
- package/dist/heap-pressure.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +453 -85
- package/dist/index.js.map +1 -1
- package/dist/ir/array-length-stability.d.ts +3 -2
- package/dist/ir/array-length-stability.js +22 -2
- package/dist/ir/array-length-stability.js.map +1 -1
- package/dist/ir/array-length-stability.test.js +47 -1
- package/dist/ir/array-length-stability.test.js.map +1 -1
- package/dist/ir/builtin-effects.js +41 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +5 -1
- package/dist/ir/builtin-signatures.js +187 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/final-fields.d.ts +2 -1
- package/dist/ir/final-fields.js +2 -2
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.test.js +2 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/int32-slots.d.ts +13 -5
- package/dist/ir/int32-slots.js +112 -115
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/int32-slots.test.js +3 -1
- package/dist/ir/int32-slots.test.js.map +1 -1
- package/dist/ir/integer-loop-facts.d.ts +14 -4
- package/dist/ir/integer-loop-facts.js +172 -32
- package/dist/ir/integer-loop-facts.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +49 -0
- package/dist/ir/integer-loops.js +193 -39
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.js +201 -1
- package/dist/ir/integer-loops.test.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 +255 -1
- package/dist/ir/integer-ranges.test.js.map +1 -1
- package/dist/ir/ir.d.ts +17 -2
- package/dist/ir/ir.js +11 -1
- 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 +64 -5
- package/dist/ir/runtime-features.js +358 -101
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.d.ts +2 -0
- package/dist/ir/traverse.js +124 -70
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +77 -24
- 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 +11 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/prepare.js +2 -0
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cli.js +22 -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 +8 -1
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +10 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/startup-cache.d.ts +1 -0
- package/dist/startup-cache.js +1 -0
- package/dist/startup-cache.js.map +1 -1
- package/dist/text-parts.d.ts +7 -0
- package/dist/text-parts.js +44 -0
- package/dist/text-parts.js.map +1 -1
- package/dist/text-parts.test.d.ts +1 -0
- package/dist/text-parts.test.js +46 -0
- package/dist/text-parts.test.js.map +1 -0
- package/dist/timing.d.ts +9 -2
- package/dist/timing.js +7 -4
- package/dist/timing.js.map +1 -1
- package/dist/wasm/translate.d.ts +4 -0
- package/dist/wasm/translate.js +2 -2
- package/dist/wasm/translate.js.map +1 -1
- package/package.json +22 -21
- 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 +20 -52
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { keyedHelperName } from "./stable-names.js";
|
|
1
2
|
import { dynUndefinedExpr, nodeThrowExpr, boolLit, numLit, strLit, varRef, } from "../../ir/build.js";
|
|
2
3
|
import * as ts from "../ts7/adapter.js";
|
|
3
4
|
import { ladderFenceExpr } from "./lowerer.js";
|
|
@@ -124,7 +125,7 @@ export function voidizedCallback(lowerer, cb, loc) {
|
|
|
124
125
|
const toT = funcOf([...fromT.params], VOID);
|
|
125
126
|
const key = `server.voidcb:${typeKey(fromT)}`;
|
|
126
127
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
127
|
-
const name = existing ??
|
|
128
|
+
const name = existing ?? keyedHelperName(lowerer, "%server.voidcb", key);
|
|
128
129
|
if (!existing) {
|
|
129
130
|
lowerer.arrHofHelpers.set(key, name);
|
|
130
131
|
const impl = `${name}.impl`;
|
|
@@ -197,7 +198,7 @@ function lowerSocketDynListener(lowerer, node, what) {
|
|
|
197
198
|
function receiverReturningCall(lowerer, fn, callArgs, recvT, loc, opts) {
|
|
198
199
|
const key = `server.recvret:${fn}:${opts?.prefix?.fn ?? ""}:${(opts?.mainArgIndices ?? []).join(".")}:${callArgs.map((a) => typeKey(a.type)).join(",")}`;
|
|
199
200
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
200
|
-
const name = existing ??
|
|
201
|
+
const name = existing ?? keyedHelperName(lowerer, "%server.recvret", key);
|
|
201
202
|
if (!existing) {
|
|
202
203
|
lowerer.arrHofHelpers.set(key, name);
|
|
203
204
|
const params = callArgs.map((a, i) => ({ localId: `p${i}.0`, name: `p${i}`, type: a.type }));
|
|
@@ -472,7 +473,7 @@ function h2HeadersCallbackAdapter(lowerer, node, what, handleKind, withStatus, l
|
|
|
472
473
|
const toT = funcOf(abiParams.map((p) => p.type), VOID);
|
|
473
474
|
const key = `h2.hdrcb:${handleKind}:${withStatus}:${typeKey(fromT)}:${shapeId ?? ""}`;
|
|
474
475
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
475
|
-
const name = existing ??
|
|
476
|
+
const name = existing ?? keyedHelperName(lowerer, "%h2.hdrcb", key);
|
|
476
477
|
if (!existing) {
|
|
477
478
|
lowerer.arrHofHelpers.set(key, name);
|
|
478
479
|
const impl = `${name}.impl`;
|
|
@@ -758,6 +759,7 @@ function lowerNetConnectOptions(lowerer, expr, member, loc) {
|
|
|
758
759
|
let port = null;
|
|
759
760
|
let host = null;
|
|
760
761
|
let lookup = null;
|
|
762
|
+
let dynLookup = null;
|
|
761
763
|
let autoSelect = false;
|
|
762
764
|
let attempt = null;
|
|
763
765
|
let optionThrow = null;
|
|
@@ -840,7 +842,19 @@ function lowerNetConnectOptions(lowerer, expr, member, loc) {
|
|
|
840
842
|
lowerer.noLowering(`${member} with a shorthand lookup option`, prop, "spell it out: lookup: theResolver");
|
|
841
843
|
}
|
|
842
844
|
lookup = lowerer.lowerExpr(initializer);
|
|
843
|
-
|
|
845
|
+
// A lookup of Node's own type (net.LookupFunction: options and a
|
|
846
|
+
// callback taking an address string or list) crosses as a checked-
|
|
847
|
+
// dynamic function the runtime calls the way Node's dial does.
|
|
848
|
+
if (!lookupFnShapeOk(lowerer, lookup.type) &&
|
|
849
|
+
lookup.type.kind === "func" &&
|
|
850
|
+
lookup.type.params.length === 3 &&
|
|
851
|
+
canBoxFuncIntoDyn(lookup.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))) {
|
|
852
|
+
dynLookup = { kind: "dynFrom", value: lookup, type: DYN, loc: locOf(initializer) };
|
|
853
|
+
}
|
|
854
|
+
else if (lookup.type.kind === "dyn") {
|
|
855
|
+
dynLookup = lookup;
|
|
856
|
+
}
|
|
857
|
+
else if (!lookupFnShapeOk(lowerer, lookup.type)) {
|
|
844
858
|
lowerer.noLowering(`a ${member} 'lookup' option of '${lowerer.fmt(lookup.type)}' values`, prop, "the lowered resolver is (hostname: string, options: unknown, callback: (err: NodeJS.ErrnoException | null, addresses: { address: string; family: number }[]) => void) => void");
|
|
845
859
|
}
|
|
846
860
|
}
|
|
@@ -869,6 +883,18 @@ function lowerNetConnectOptions(lowerer, expr, member, loc) {
|
|
|
869
883
|
loc,
|
|
870
884
|
};
|
|
871
885
|
}
|
|
886
|
+
if (dynLookup !== null) {
|
|
887
|
+
if (args.length !== 1) {
|
|
888
|
+
lowerer.noLowering(`${member} with a lookup and a connect listener`, expr, "register the listener separately: socket.once('connect', ...)");
|
|
889
|
+
}
|
|
890
|
+
return {
|
|
891
|
+
kind: "libCall",
|
|
892
|
+
fn: "net.connectLookupDyn",
|
|
893
|
+
args: [port, host, dynLookup],
|
|
894
|
+
type: NETSOCKET_T,
|
|
895
|
+
loc,
|
|
896
|
+
};
|
|
897
|
+
}
|
|
872
898
|
if (lookup !== null) {
|
|
873
899
|
if (!autoSelect) {
|
|
874
900
|
lowerer.noLowering(`${member} with a lookup but no autoSelectFamily: true`, optsNode, "the lookup form dials every answered address in order — Node does that under autoSelectFamily: true, so spell it");
|
|
@@ -2293,6 +2319,18 @@ function lowerNetSocketMethodCall(lowerer, call, access) {
|
|
|
2293
2319
|
loc,
|
|
2294
2320
|
};
|
|
2295
2321
|
}
|
|
2322
|
+
if (event === "secure") {
|
|
2323
|
+
// The handshake's completion on a TLS socket (after secureConnect on
|
|
2324
|
+
// a client); plain sockets never fire it.
|
|
2325
|
+
const { cb } = lowerCallbackArg(lowerer, args[1], "secure listeners", 0, () => false, "use ()", []);
|
|
2326
|
+
return {
|
|
2327
|
+
kind: "libCall",
|
|
2328
|
+
fn: "tls.sockOnSecure",
|
|
2329
|
+
args: [receiver, cb, once],
|
|
2330
|
+
type: VOID,
|
|
2331
|
+
loc,
|
|
2332
|
+
};
|
|
2333
|
+
}
|
|
2296
2334
|
if (event === "session") {
|
|
2297
2335
|
// The received-ticket event: fires once per TLS client socket with
|
|
2298
2336
|
// the serialized session (a Buffer); plain sockets never fire it.
|
|
@@ -2305,7 +2343,7 @@ function lowerNetSocketMethodCall(lowerer, call, access) {
|
|
|
2305
2343
|
loc,
|
|
2306
2344
|
};
|
|
2307
2345
|
}
|
|
2308
|
-
lowerer.noLowering(`socket.${name}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, args[0], '"data", "end", "close", "error", "connect", "lookup", "ready", "timeout", "readable", "secureConnect", and "session" are the supported socket events (as literals)');
|
|
2346
|
+
lowerer.noLowering(`socket.${name}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, args[0], '"data", "end", "close", "error", "connect", "lookup", "ready", "timeout", "readable", "secureConnect", "secure", and "session" are the supported socket events (as literals)');
|
|
2309
2347
|
}
|
|
2310
2348
|
lowerer.noLowering(`Socket.${name}`, call, "write, end, destroy, pipe, setTimeout, setKeepAlive, setNoDelay, the address fields, read, unshift, and on/once of data/end/close/error/connect/ready/timeout/readable are the supported Socket members", lowerer.checker.getSymbolAtLocation(access.name));
|
|
2311
2349
|
}
|
|
@@ -2745,7 +2783,7 @@ export function lowerCompatReqStreamOptionalCall(lowerer, call) {
|
|
|
2745
2783
|
type: unionT,
|
|
2746
2784
|
loc,
|
|
2747
2785
|
};
|
|
2748
|
-
const id =
|
|
2786
|
+
const id = lowerer.closureName(loc, "", "chain");
|
|
2749
2787
|
const body = lowerH2StreamMethodCall(lowerer, call, call.expression, {
|
|
2750
2788
|
kind: "chainRecv",
|
|
2751
2789
|
id,
|
|
@@ -3463,7 +3501,7 @@ function lowerHttpCreateServerForms(lowerer, expr, what, loc) {
|
|
|
3463
3501
|
const hasMax = opts.maxHeaderSize !== null;
|
|
3464
3502
|
const key = `server.opts:${opts.joinDup ? 1 : 0}:${opts.allowMissingHost ? 1 : 0}:${hasBuffer ? 1 : 0}:${hasMax ? 1 : 0}`;
|
|
3465
3503
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
3466
|
-
const name = existing ??
|
|
3504
|
+
const name = existing ?? keyedHelperName(lowerer, "%server.opts", key);
|
|
3467
3505
|
if (!existing) {
|
|
3468
3506
|
lowerer.arrHofHelpers.set(key, name);
|
|
3469
3507
|
const params = [
|
|
@@ -3685,6 +3723,96 @@ export function lowerHttpServerNew(lowerer, expr) {
|
|
|
3685
3723
|
return null;
|
|
3686
3724
|
return lowerHttpCreateServerForms(lowerer, expr, "new http.Server", locOf(expr));
|
|
3687
3725
|
}
|
|
3726
|
+
/** `new tls.TLSSocket(socket, options)` in server mode: a new TLS socket
|
|
3727
|
+
* takes over the socket's connection and runs the server handshake
|
|
3728
|
+
* (scr_tls_wrap_socket). The options record reads at runtime, the
|
|
3729
|
+
* tls.connect precedent. A literal's secureContext member is a
|
|
3730
|
+
* SecureContext handle, which the checked-dynamic record cannot hold, so
|
|
3731
|
+
* it passes as its own argument; members after it must be free of side
|
|
3732
|
+
* effects, because it is read after them. Node never starts the handshake
|
|
3733
|
+
* of a client-mode TLSSocket, so a literal without isServer: true fences
|
|
3734
|
+
* here. */
|
|
3735
|
+
export function lowerTlsSocketNew(lowerer, expr) {
|
|
3736
|
+
const callee = expr.expression;
|
|
3737
|
+
const isTlsSocket = (ts.isPropertyAccessExpression(callee) &&
|
|
3738
|
+
callee.name.text === "TLSSocket" &&
|
|
3739
|
+
lowerer.builtinMemberOf(callee)?.module === "tls") ||
|
|
3740
|
+
(ts.isIdentifier(callee) &&
|
|
3741
|
+
lowerer.builtinImportOf(callee)?.module === "tls" &&
|
|
3742
|
+
lowerer.builtinImportOf(callee)?.member === "TLSSocket");
|
|
3743
|
+
if (!isTlsSocket)
|
|
3744
|
+
return null;
|
|
3745
|
+
const loc = locOf(expr);
|
|
3746
|
+
const HINT = "the supported forms are new tls.TLSSocket(socket, { isServer: true, cert, key }) and new tls.TLSSocket(socket, { isServer: true, secureContext })";
|
|
3747
|
+
const args = expr.arguments?.nodes ?? [];
|
|
3748
|
+
if (args.length !== 2 || args.some(ts.isSpreadElement)) {
|
|
3749
|
+
lowerer.noLowering(`new tls.TLSSocket with ${args.length} argument(s)`, expr, HINT);
|
|
3750
|
+
}
|
|
3751
|
+
const socket = lowerer.lowerExpr(args[0]);
|
|
3752
|
+
if (socket.type.kind !== "netSocket") {
|
|
3753
|
+
lowerer.noLowering(`new tls.TLSSocket over a '${lowerer.fmt(socket.type)}' value`, args[0], "the wrapped value must be a net.Socket (a server connection or an http CONNECT socket)");
|
|
3754
|
+
}
|
|
3755
|
+
let optsNode = args[1];
|
|
3756
|
+
while (ts.isParenthesizedExpression(optsNode))
|
|
3757
|
+
optsNode = optsNode.expression;
|
|
3758
|
+
if (!ts.isObjectLiteralExpression(optsNode)) {
|
|
3759
|
+
const o = lowerer.lowerExpr(optsNode);
|
|
3760
|
+
const opts = o.type.kind === "dyn"
|
|
3761
|
+
? o
|
|
3762
|
+
: canConvertToDyn(o.type, (id) => lowerer.shapes.get(id), (id) => lowerer.unions.get(id))
|
|
3763
|
+
? { kind: "dynFrom", value: o, type: DYN, loc }
|
|
3764
|
+
: lowerer.noLowering(`new tls.TLSSocket with a '${lowerer.fmt(o.type)}' options record`, optsNode, `${HINT} — a secureContext member lowers in an options object literal`);
|
|
3765
|
+
return { kind: "libCall", fn: "tls.wrapSocket", args: [socket, opts], type: NETSOCKET_T, loc };
|
|
3766
|
+
}
|
|
3767
|
+
const props = optsNode.properties.nodes;
|
|
3768
|
+
const nameOf = (p) => (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) &&
|
|
3769
|
+
(ts.isIdentifier(p.name) || ts.isStringLiteral(p.name))
|
|
3770
|
+
? p.name.text
|
|
3771
|
+
: null;
|
|
3772
|
+
const isServer = props.find((p) => nameOf(p) === "isServer");
|
|
3773
|
+
if (isServer === undefined ||
|
|
3774
|
+
(ts.isPropertyAssignment(isServer) && isServer.initializer.kind === ts.SyntaxKind.FalseKeyword)) {
|
|
3775
|
+
lowerer.noLowering("new tls.TLSSocket in client mode", optsNode, "Node starts no handshake for a client-mode TLSSocket — pass isServer: true for the server side; tls.connect makes client sockets");
|
|
3776
|
+
}
|
|
3777
|
+
const ctxIndex = props.findIndex((p) => nameOf(p) === "secureContext");
|
|
3778
|
+
if (ctxIndex < 0) {
|
|
3779
|
+
const opts = lowerDynObjectLiteral(lowerer, optsNode);
|
|
3780
|
+
return { kind: "libCall", fn: "tls.wrapSocket", args: [socket, opts], type: NETSOCKET_T, loc };
|
|
3781
|
+
}
|
|
3782
|
+
const ctxProp = props[ctxIndex];
|
|
3783
|
+
const ctxNode = ts.isShorthandPropertyAssignment(ctxProp)
|
|
3784
|
+
? ctxProp.name
|
|
3785
|
+
: ctxProp.initializer;
|
|
3786
|
+
for (const p of props.slice(ctxIndex + 1)) {
|
|
3787
|
+
const pure = ts.isShorthandPropertyAssignment(p) ||
|
|
3788
|
+
(ts.isPropertyAssignment(p) && sideEffectFreeOptionValue(p.initializer));
|
|
3789
|
+
if (!pure) {
|
|
3790
|
+
lowerer.noLowering("a new tls.TLSSocket options literal with side effects after secureContext", p, "secureContext is read after the other members — move it to the end of the object");
|
|
3791
|
+
}
|
|
3792
|
+
}
|
|
3793
|
+
let ctx = null;
|
|
3794
|
+
const opts = lowerDynObjectLiteral(lowerer, optsNode, (node, value) => {
|
|
3795
|
+
if (node !== ctxNode)
|
|
3796
|
+
return lowerer.coerceToExpected(value, DYN);
|
|
3797
|
+
if (value.type.kind !== "secureCtx") {
|
|
3798
|
+
lowerer.noLowering(`a '${lowerer.fmt(value.type)}' secureContext`, node, "pass a tls.createSecureContext({ cert, key }) result");
|
|
3799
|
+
}
|
|
3800
|
+
ctx = value;
|
|
3801
|
+
return {
|
|
3802
|
+
kind: "dynFrom",
|
|
3803
|
+
value: { kind: "unitLit", unit: "undefined", type: UNDEFINED_T, loc },
|
|
3804
|
+
type: DYN,
|
|
3805
|
+
loc,
|
|
3806
|
+
};
|
|
3807
|
+
});
|
|
3808
|
+
return {
|
|
3809
|
+
kind: "libCall",
|
|
3810
|
+
fn: "tls.wrapSocketCtx",
|
|
3811
|
+
args: [socket, opts, ctx],
|
|
3812
|
+
type: NETSOCKET_T,
|
|
3813
|
+
loc,
|
|
3814
|
+
};
|
|
3815
|
+
}
|
|
3688
3816
|
/** Module-function calls on http import bindings: createServer([options][,
|
|
3689
3817
|
* handler]) and the call-form Server (Node's constructor works without
|
|
3690
3818
|
* `new` — test/parallel's http.Server(fn) spelling). The handler takes
|
|
@@ -3733,13 +3861,15 @@ function lowerHttpModuleCall(lowerer, expr, bi, loc) {
|
|
|
3733
3861
|
* runtime-valued (dyn) entry rides the tls.pemDyn extraction, throwing
|
|
3734
3862
|
* the fence at runtime for non-PEM kinds (the divergence-66 stance).
|
|
3735
3863
|
* Every other key fences by name; SNICallback gets the pointed hint. */
|
|
3736
|
-
function lowerTlsServerOptions(lowerer, node, what) {
|
|
3864
|
+
function lowerTlsServerOptions(lowerer, node, what, allowSni = false) {
|
|
3737
3865
|
if (!ts.isObjectLiteralExpression(node)) {
|
|
3738
3866
|
lowerer.noLowering(`${what} with a non-literal options argument`, node, "pass the options as an object literal: { cert, key }");
|
|
3739
3867
|
}
|
|
3740
3868
|
const loc = locOf(node);
|
|
3741
3869
|
let cert = null;
|
|
3742
3870
|
let key = null;
|
|
3871
|
+
let sni;
|
|
3872
|
+
let pendingSni = null;
|
|
3743
3873
|
for (const prop of node.properties.nodes) {
|
|
3744
3874
|
let initializer;
|
|
3745
3875
|
if (ts.isPropertyAssignment(prop) &&
|
|
@@ -3753,6 +3883,25 @@ function lowerTlsServerOptions(lowerer, node, what) {
|
|
|
3753
3883
|
lowerer.noLowering(`${what} options with computed keys or spreads`, prop, "each option must be a plain `name: value` (or shorthand) entry with a literal key");
|
|
3754
3884
|
}
|
|
3755
3885
|
const k = prop.name.text;
|
|
3886
|
+
if (k === "SNICallback" && allowSni) {
|
|
3887
|
+
const value = initializer !== null
|
|
3888
|
+
? lowerer.lowerExpr(initializer)
|
|
3889
|
+
: lowerer.lowerShorthandValue(prop);
|
|
3890
|
+
const checked = checkSniCallbackValue(lowerer, value, prop, what);
|
|
3891
|
+
if (cert !== null && key !== null) {
|
|
3892
|
+
sni = checked;
|
|
3893
|
+
}
|
|
3894
|
+
else {
|
|
3895
|
+
// The runtime call reads cert and key first. A cert or key entry
|
|
3896
|
+
// after the callback can change the binding the callback reads,
|
|
3897
|
+
// so the callback is saved ahead of the next of them, in source
|
|
3898
|
+
// order.
|
|
3899
|
+
const saved = lowerer.declareHiddenLocal("%sniCallback", checked.type);
|
|
3900
|
+
pendingSni = { kind: "varDecl", localId: saved.id, init: checked, loc: locOf(prop) };
|
|
3901
|
+
sni = varRef(saved.id, checked.type, locOf(prop));
|
|
3902
|
+
}
|
|
3903
|
+
continue;
|
|
3904
|
+
}
|
|
3756
3905
|
if (k !== "cert" && k !== "key") {
|
|
3757
3906
|
const init = ts.isPropertyAssignment(prop) ? prop.initializer : null;
|
|
3758
3907
|
if ((k === "ca" || k === "rejectUnauthorized") &&
|
|
@@ -3767,7 +3916,7 @@ function lowerTlsServerOptions(lowerer, node, what) {
|
|
|
3767
3916
|
continue; // Node's false default, spelled out
|
|
3768
3917
|
}
|
|
3769
3918
|
fenceOrDropOptionKey(lowerer, prop, k, what, TLS_SERVER_DOCUMENTED_OPTIONS, "cert and key (PEM strings or Buffers) are the supported options", {
|
|
3770
|
-
SNICallback: "SNICallback lowers
|
|
3919
|
+
SNICallback: "SNICallback lowers on tls.createServer and http2.createSecureServer({ allowHTTP1: true, ... }) — serve one cert/key pair here",
|
|
3771
3920
|
requestCert: "client-certificate handshakes are not modeled (SEMANTICS.md divergence 55) — requestCert: false is the lowered value",
|
|
3772
3921
|
});
|
|
3773
3922
|
continue; // an undocumented key, dropped like Node drops it
|
|
@@ -3797,6 +3946,10 @@ function lowerTlsServerOptions(lowerer, node, what) {
|
|
|
3797
3946
|
else if (v.type.kind !== "string" && !(v.type.kind === "bytes" && v.type.elem === "u8")) {
|
|
3798
3947
|
lowerer.noLowering(`a ${what} '${k}' option of '${lowerer.fmt(v.type)}' values`, prop, "cert/key are PEM strings or Buffers here");
|
|
3799
3948
|
}
|
|
3949
|
+
if (pendingSni !== null) {
|
|
3950
|
+
v = { kind: "seqExpr", stmts: [pendingSni], result: v, type: v.type, loc };
|
|
3951
|
+
pendingSni = null;
|
|
3952
|
+
}
|
|
3800
3953
|
if (k === "cert")
|
|
3801
3954
|
cert = v;
|
|
3802
3955
|
else
|
|
@@ -3805,7 +3958,7 @@ function lowerTlsServerOptions(lowerer, node, what) {
|
|
|
3805
3958
|
if (cert === null || key === null) {
|
|
3806
3959
|
lowerer.noLowering(`${what} without both cert and key`, node, "the supported options object is { cert, key } (PEM strings or Buffers)");
|
|
3807
3960
|
}
|
|
3808
|
-
return { cert, key };
|
|
3961
|
+
return sni === undefined ? { cert, key } : { cert, key, sni };
|
|
3809
3962
|
}
|
|
3810
3963
|
/** The options argument of tls/https createServer, split three ways: an
|
|
3811
3964
|
* object literal takes the static walk above; a RUNTIME (dyn) value — the
|
|
@@ -3832,20 +3985,35 @@ const TLS_VALIDATED_OPTIONS = new Set([
|
|
|
3832
3985
|
"ticketKeys",
|
|
3833
3986
|
]);
|
|
3834
3987
|
/** True when a literal options bag must ride the runtime walker: JS uses
|
|
3835
|
-
* it for the typed TLS validation ladders,
|
|
3988
|
+
* it for the typed TLS validation ladders, HTTPS uses it for
|
|
3836
3989
|
* keepAliveTimeoutBuffer so the HTTP option is consumed without losing
|
|
3837
|
-
* the literal's evaluation order
|
|
3838
|
-
|
|
3990
|
+
* the literal's evaluation order, and `runtimeKeys` names options only the
|
|
3991
|
+
* runtime walk implements (tls.createServer's ALPNProtocols). */
|
|
3992
|
+
function tlsLiteralNeedsRuntimeWalk(node, includeHttpTimeoutOptions = false, runtimeKeys = new Set()) {
|
|
3839
3993
|
const jsSource = isJsSourceFile(ts.getSourceFileOfNode(node));
|
|
3840
3994
|
return node.properties.nodes.some((p) => (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) &&
|
|
3841
3995
|
(ts.isIdentifier(p.name) || ts.isStringLiteral(p.name)) &&
|
|
3842
3996
|
((includeHttpTimeoutOptions && p.name.text === "keepAliveTimeoutBuffer") ||
|
|
3997
|
+
runtimeKeys.has(p.name.text) ||
|
|
3843
3998
|
(jsSource && TLS_VALIDATED_OPTIONS.has(p.name.text))));
|
|
3844
3999
|
}
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
4000
|
+
/** tls.createServer options the runtime walk implements and the literal
|
|
4001
|
+
* cert/key lowering does not. */
|
|
4002
|
+
const TLS_SERVER_RUNTIME_OPTIONS = new Set([
|
|
4003
|
+
"ALPNProtocols",
|
|
4004
|
+
"minVersion",
|
|
4005
|
+
"maxVersion",
|
|
4006
|
+
]);
|
|
4007
|
+
function lowerTlsServerOptionsOrDyn(lowerer, node, what, includeHttpTimeoutOptions = false, runtimeKeys = new Set(), allowSni = false) {
|
|
4008
|
+
if (ts.isObjectLiteralExpression(node)) {
|
|
4009
|
+
if (!tlsLiteralNeedsRuntimeWalk(node, includeHttpTimeoutOptions, runtimeKeys))
|
|
4010
|
+
return lowerTlsServerOptions(lowerer, node, what, allowSni);
|
|
4011
|
+
const sniOption = node.properties.nodes.find((p) => (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) &&
|
|
4012
|
+
(ts.isIdentifier(p.name) || ts.isStringLiteral(p.name)) &&
|
|
4013
|
+
p.name.text === "SNICallback");
|
|
4014
|
+
if (allowSni && sniOption !== undefined) {
|
|
4015
|
+
lowerer.noLowering(`${what} with SNICallback and options the runtime walk reads`, sniOption, "SNICallback lowers with cert and key; ALPNProtocols, minVersion, maxVersion and the validated options are not combined with it yet");
|
|
4016
|
+
}
|
|
3849
4017
|
}
|
|
3850
4018
|
const v = lowerer.lowerExpr(node);
|
|
3851
4019
|
if (v.type.kind === "dyn")
|
|
@@ -3865,13 +4033,13 @@ function lowerTlsServerOptionsOrDyn(lowerer, node, what, includeHttpTimeoutOptio
|
|
|
3865
4033
|
* connect(options[, cb]) and connect(port[, host][, options][, cb]) with
|
|
3866
4034
|
* a RUNTIME options record (the checked-dynamic JS lane's shape — a dyn
|
|
3867
4035
|
* value, or a record that converts): the runtime walk implements
|
|
3868
|
-
* port/host/rejectUnauthorized/ca/servername and throws the catchable
|
|
4036
|
+
* port/host/socket/rejectUnauthorized/ca/servername/ALPNProtocols/minVersion/maxVersion/timeout and throws the catchable
|
|
3869
4037
|
* fence for other documented members (the divergence-66 stance). The
|
|
3870
4038
|
* callback (and 'secureConnect'/'connect' listeners) fires
|
|
3871
4039
|
* post-handshake — Node's secureConnect timing. */
|
|
3872
4040
|
function lowerTlsConnectCall(lowerer, expr, loc) {
|
|
3873
4041
|
const args = expr.arguments.nodes;
|
|
3874
|
-
const FORMS_HINT = "the supported forms are connect(options[, cb]) and connect(port[, host][, options][, cb]) — options implement port/host/rejectUnauthorized/ca/servername";
|
|
4042
|
+
const FORMS_HINT = "the supported forms are connect(options[, cb]) and connect(port[, host][, options][, cb]) — options implement port/host/socket/rejectUnauthorized/ca/servername/ALPNProtocols/minVersion/maxVersion/timeout";
|
|
3875
4043
|
if (args.length < 1 || args.length > 4 || args.some(ts.isSpreadElement)) {
|
|
3876
4044
|
lowerer.noLowering(`tls.connect with ${args.length} arguments`, expr, FORMS_HINT);
|
|
3877
4045
|
}
|
|
@@ -3924,7 +4092,19 @@ function lowerTlsConnectCall(lowerer, expr, loc) {
|
|
|
3924
4092
|
// The options value rides whole to the runtime walk: dyn passes
|
|
3925
4093
|
// directly; a typed record that converts boxes into the checked-dynamic tree.
|
|
3926
4094
|
let opts;
|
|
3927
|
-
|
|
4095
|
+
let literal = optsNode;
|
|
4096
|
+
while (literal !== null && ts.isParenthesizedExpression(literal))
|
|
4097
|
+
literal = literal.expression;
|
|
4098
|
+
if (literal !== null &&
|
|
4099
|
+
ts.isObjectLiteralExpression(literal) &&
|
|
4100
|
+
literal.properties.nodes.some((p) => (ts.isPropertyAssignment(p) || ts.isShorthandPropertyAssignment(p)) &&
|
|
4101
|
+
ts.isIdentifier(p.name) &&
|
|
4102
|
+
p.name.text === "socket")) {
|
|
4103
|
+
// A socket member is a handle the record form cannot box: the literal
|
|
4104
|
+
// builds the checked-dynamic object member by member.
|
|
4105
|
+
opts = lowerDynObjectLiteral(lowerer, literal);
|
|
4106
|
+
}
|
|
4107
|
+
else if (optsNode !== null) {
|
|
3928
4108
|
const o = lowerer.lowerExpr(optsNode);
|
|
3929
4109
|
if (o.type.kind === "dyn") {
|
|
3930
4110
|
opts = o;
|
|
@@ -3967,10 +4147,24 @@ function lowerTlsModuleCall(lowerer, expr, bi, loc) {
|
|
|
3967
4147
|
if (args.length < 1 || args.length > 2) {
|
|
3968
4148
|
lowerer.noLowering(`createServer with ${args.length} arguments`, expr, "the supported form is createServer({ cert, key }, socket => ...)");
|
|
3969
4149
|
}
|
|
3970
|
-
const opts = lowerTlsServerOptionsOrDyn(lowerer, args[0], "tls.createServer");
|
|
4150
|
+
const opts = lowerTlsServerOptionsOrDyn(lowerer, args[0], "tls.createServer", false, TLS_SERVER_RUNTIME_OPTIONS, true);
|
|
3971
4151
|
if (args.length === 1) {
|
|
3972
|
-
|
|
3973
|
-
|
|
4152
|
+
if (opts.dyn !== undefined)
|
|
4153
|
+
return {
|
|
4154
|
+
kind: "libCall",
|
|
4155
|
+
fn: "tls.createServerDyn",
|
|
4156
|
+
args: [opts.dyn],
|
|
4157
|
+
type: NETSERVER_T,
|
|
4158
|
+
loc,
|
|
4159
|
+
};
|
|
4160
|
+
return opts.sni !== undefined
|
|
4161
|
+
? {
|
|
4162
|
+
kind: "libCall",
|
|
4163
|
+
fn: "tls.createServerSni",
|
|
4164
|
+
args: [opts.cert, opts.key, opts.sni],
|
|
4165
|
+
type: NETSERVER_T,
|
|
4166
|
+
loc,
|
|
4167
|
+
}
|
|
3974
4168
|
: {
|
|
3975
4169
|
kind: "libCall",
|
|
3976
4170
|
fn: "tls.createServer",
|
|
@@ -3980,13 +4174,21 @@ function lowerTlsModuleCall(lowerer, expr, bi, loc) {
|
|
|
3980
4174
|
};
|
|
3981
4175
|
}
|
|
3982
4176
|
const { cb } = lowerCallbackArg(lowerer, args[1], "secureConnection listeners", 1, (p) => p.kind === "netSocket", "use (socket) or ()", [NETSOCKET_T]);
|
|
3983
|
-
|
|
3984
|
-
|
|
4177
|
+
if (opts.dyn !== undefined)
|
|
4178
|
+
return {
|
|
3985
4179
|
kind: "libCall",
|
|
3986
4180
|
fn: "tls.createServerDynCb",
|
|
3987
4181
|
args: [opts.dyn, cb],
|
|
3988
4182
|
type: NETSERVER_T,
|
|
3989
4183
|
loc,
|
|
4184
|
+
};
|
|
4185
|
+
return opts.sni !== undefined
|
|
4186
|
+
? {
|
|
4187
|
+
kind: "libCall",
|
|
4188
|
+
fn: "tls.createServerSniCb",
|
|
4189
|
+
args: [opts.cert, opts.key, opts.sni, cb],
|
|
4190
|
+
type: NETSERVER_T,
|
|
4191
|
+
loc,
|
|
3990
4192
|
}
|
|
3991
4193
|
: {
|
|
3992
4194
|
kind: "libCall",
|
|
@@ -4279,6 +4481,40 @@ const HTTP2_IGNORED_TUNING_OPTIONS = new Set([
|
|
|
4279
4481
|
const SNI_HINT = "SNICallback lowers as a direct option or the conditional spread " +
|
|
4280
4482
|
"...(x ? { SNICallback: x } : {}) — the callback is (servername, cb) => void " +
|
|
4281
4483
|
"with cb: (err: Error | null, ctx?: tls.SecureContext) => void";
|
|
4484
|
+
/** An SNICallback option value: (servername: string, cb) => void where cb
|
|
4485
|
+
* is (err: Error | null, ctx?: SecureContext) => void, or that function
|
|
4486
|
+
* unioned with undefined (no callback). cb may declare fewer params (the
|
|
4487
|
+
* emitted answer thunk matches its ABI), but what it does declare must
|
|
4488
|
+
* carry the arms the thunk decodes. */
|
|
4489
|
+
function lowerSniCallbackValue(lowerer, node, blame, what) {
|
|
4490
|
+
return checkSniCallbackValue(lowerer, lowerer.lowerExpr(node), blame, what);
|
|
4491
|
+
}
|
|
4492
|
+
function checkSniCallbackValue(lowerer, v, blame, what) {
|
|
4493
|
+
const shapeOk = (t) => {
|
|
4494
|
+
if (t.kind !== "func" || t.ret.kind !== "void" || t.params.length !== 2)
|
|
4495
|
+
return false;
|
|
4496
|
+
if (t.params[0].kind !== "string")
|
|
4497
|
+
return false;
|
|
4498
|
+
const cbT = t.params[1];
|
|
4499
|
+
if (cbT.kind !== "func" || cbT.ret.kind !== "void" || cbT.params.length > 2)
|
|
4500
|
+
return false;
|
|
4501
|
+
const armKinds = (u) => u.kind === "union" ? (lowerer.unions.get(u.unionId)?.arms ?? []).map((a) => a.kind) : [];
|
|
4502
|
+
const p0 = cbT.params[0];
|
|
4503
|
+
if (p0 !== undefined && !armKinds(p0).includes("nullT"))
|
|
4504
|
+
return false;
|
|
4505
|
+
const p1 = cbT.params[1];
|
|
4506
|
+
if (p1 !== undefined && !armKinds(p1).includes("secureCtx"))
|
|
4507
|
+
return false;
|
|
4508
|
+
return true;
|
|
4509
|
+
};
|
|
4510
|
+
const arms = v.type.kind === "union" ? (lowerer.unions.get(v.type.unionId)?.arms ?? []) : [];
|
|
4511
|
+
const funcArm = v.type.kind === "func" ? v.type : arms.find((a) => a.kind === "func");
|
|
4512
|
+
const unionOk = v.type.kind !== "union" || (arms.length === 2 && arms.some((a) => a.kind === "undefinedT"));
|
|
4513
|
+
if (funcArm === undefined || !unionOk || !shapeOk(funcArm)) {
|
|
4514
|
+
lowerer.noLowering(`a ${what} SNICallback of '${lowerer.fmt(v.type)}' values`, blame, SNI_HINT);
|
|
4515
|
+
}
|
|
4516
|
+
return v;
|
|
4517
|
+
}
|
|
4282
4518
|
/** Strips parentheses and type assertions: the portless spelling wraps
|
|
4283
4519
|
* an options spread as `...({ ... } as Record<string, unknown>)`. */
|
|
4284
4520
|
function stripParensAndCasts(node) {
|
|
@@ -4490,41 +4726,8 @@ function lowerHttp2ModuleCall(lowerer, expr, bi, loc) {
|
|
|
4490
4726
|
let sni = null;
|
|
4491
4727
|
let allowHttp1 = false;
|
|
4492
4728
|
let enableConnectProtocol = false;
|
|
4493
|
-
// The SNICallback value shape: (servername: string, cb) => void where
|
|
4494
|
-
// cb is (err: Error | null, ctx?: SecureContext) => void — cb may
|
|
4495
|
-
// declare fewer params (the emitted answer thunk matches its ABI),
|
|
4496
|
-
// but what it does declare must carry the arms the thunk decodes.
|
|
4497
|
-
const sniShapeOk = (t) => {
|
|
4498
|
-
if (t.kind !== "func" || t.ret.kind !== "void" || t.params.length !== 2)
|
|
4499
|
-
return false;
|
|
4500
|
-
if (t.params[0].kind !== "string")
|
|
4501
|
-
return false;
|
|
4502
|
-
const cbT = t.params[1];
|
|
4503
|
-
if (cbT.kind !== "func" || cbT.ret.kind !== "void" || cbT.params.length > 2)
|
|
4504
|
-
return false;
|
|
4505
|
-
const armKinds = (u) => u.kind === "union" ? (lowerer.unions.get(u.unionId)?.arms ?? []).map((a) => a.kind) : [];
|
|
4506
|
-
const p0 = cbT.params[0];
|
|
4507
|
-
if (p0 !== undefined && !armKinds(p0).includes("nullT"))
|
|
4508
|
-
return false;
|
|
4509
|
-
const p1 = cbT.params[1];
|
|
4510
|
-
if (p1 !== undefined && !armKinds(p1).includes("secureCtx"))
|
|
4511
|
-
return false;
|
|
4512
|
-
return true;
|
|
4513
|
-
};
|
|
4514
4729
|
const lowerSniValue = (node, blame) => {
|
|
4515
|
-
|
|
4516
|
-
const funcArm = v.type.kind === "func"
|
|
4517
|
-
? v.type
|
|
4518
|
-
: v.type.kind === "union"
|
|
4519
|
-
? (lowerer.unions.get(v.type.unionId)?.arms ?? []).find((a) => a.kind === "func")
|
|
4520
|
-
: undefined;
|
|
4521
|
-
const unionOk = v.type.kind !== "union" ||
|
|
4522
|
-
((lowerer.unions.get(v.type.unionId)?.arms ?? []).length === 2 &&
|
|
4523
|
-
(lowerer.unions.get(v.type.unionId)?.arms ?? []).some((a) => a.kind === "undefinedT"));
|
|
4524
|
-
if (funcArm === undefined || !unionOk || !sniShapeOk(funcArm)) {
|
|
4525
|
-
lowerer.noLowering(`a createSecureServer SNICallback of '${lowerer.fmt(v.type)}' values`, blame, SNI_HINT);
|
|
4526
|
-
}
|
|
4527
|
-
sni = v;
|
|
4730
|
+
sni = lowerSniCallbackValue(lowerer, node, blame, "createSecureServer");
|
|
4528
4731
|
};
|
|
4529
4732
|
const lowerOption = (prop) => {
|
|
4530
4733
|
if (ts.isSpreadAssignment(prop)) {
|
|
@@ -6150,7 +6353,7 @@ function lowerHttpResMethodCall(lowerer, call, access) {
|
|
|
6150
6353
|
const all = [...callArgs, cb];
|
|
6151
6354
|
const key = `server.endcb:${fn}:${all.map((a) => typeKey(a.type)).join(",")}`;
|
|
6152
6355
|
const existing = lowerer.arrHofHelpers.get(key);
|
|
6153
|
-
const helper = existing ??
|
|
6356
|
+
const helper = existing ?? keyedHelperName(lowerer, "%server.endcb", key);
|
|
6154
6357
|
if (!existing) {
|
|
6155
6358
|
lowerer.arrHofHelpers.set(key, helper);
|
|
6156
6359
|
const params = all.map((a, i) => ({ localId: `p${i}.0`, name: `p${i}`, type: a.type }));
|