@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
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
// undici's per-dispatch request record (lib/core/request.js): option
|
|
2
|
+
// validation, header processing, and the handler callbacks with their
|
|
3
|
+
// diagnostics_channel publications.
|
|
4
|
+
import { channels } from "./diagnostics.ts";
|
|
5
|
+
import { InvalidArgumentError, NotSupportedError } from "./errors.ts";
|
|
6
|
+
import type { DispatchHandlers, DispatchOptions, Profile } from "./types.ts";
|
|
7
|
+
|
|
8
|
+
const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;
|
|
9
|
+
const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
|
|
10
|
+
const invalidPathRegex = /[^!-ÿ]/;
|
|
11
|
+
|
|
12
|
+
export class Request {
|
|
13
|
+
origin: string;
|
|
14
|
+
method: string;
|
|
15
|
+
path: string;
|
|
16
|
+
body: Buffer | null;
|
|
17
|
+
/** Header name/value pairs in insertion order (host and content-length
|
|
18
|
+
* are consumed into their own fields, like undici). */
|
|
19
|
+
headerPairs: string[];
|
|
20
|
+
host: string | null;
|
|
21
|
+
contentLength: number | null;
|
|
22
|
+
contentType: string | null;
|
|
23
|
+
completed: boolean;
|
|
24
|
+
aborted: boolean;
|
|
25
|
+
idempotent: boolean;
|
|
26
|
+
blocking: boolean;
|
|
27
|
+
reset: boolean | null;
|
|
28
|
+
headersTimeout: number | null;
|
|
29
|
+
bodyTimeout: number | null;
|
|
30
|
+
throwOnError: boolean;
|
|
31
|
+
servername: string | null;
|
|
32
|
+
error: Error | null;
|
|
33
|
+
abortFn: ((err?: Error) => void) | null;
|
|
34
|
+
handler: DispatchHandlers;
|
|
35
|
+
profile: Profile;
|
|
36
|
+
/** The request as diagnostics_channel subscribers see it: one untyped
|
|
37
|
+
* object per request, so its identity is stable across publications.
|
|
38
|
+
* The request keeps its completed and headers fields current. */
|
|
39
|
+
diagnostic: unknown;
|
|
40
|
+
|
|
41
|
+
constructor(origin: string, opts: DispatchOptions, handler: DispatchHandlers, profile: Profile) {
|
|
42
|
+
const path = opts.path;
|
|
43
|
+
const method = opts.method;
|
|
44
|
+
if (typeof path !== "string") {
|
|
45
|
+
throw new InvalidArgumentError("path must be a string");
|
|
46
|
+
} else if (
|
|
47
|
+
path[0] !== "/" &&
|
|
48
|
+
!(path.startsWith("http://") || path.startsWith("https://")) &&
|
|
49
|
+
method !== "CONNECT"
|
|
50
|
+
) {
|
|
51
|
+
throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
|
|
52
|
+
} else if (invalidPathRegex.test(path)) {
|
|
53
|
+
throw new InvalidArgumentError("invalid request path");
|
|
54
|
+
}
|
|
55
|
+
if (typeof method !== "string") {
|
|
56
|
+
throw new InvalidArgumentError("method must be a string");
|
|
57
|
+
} else if (!tokenRegExp.test(method)) {
|
|
58
|
+
throw new InvalidArgumentError("invalid request method");
|
|
59
|
+
}
|
|
60
|
+
if (method === "CONNECT") {
|
|
61
|
+
throw new NotSupportedError(
|
|
62
|
+
"scriptc's undici client does not implement CONNECT requests yet",
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
const headersTimeout = opts.headersTimeout ?? null;
|
|
66
|
+
if (headersTimeout !== null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
|
|
67
|
+
throw new InvalidArgumentError("invalid headersTimeout");
|
|
68
|
+
}
|
|
69
|
+
const bodyTimeout = opts.bodyTimeout ?? null;
|
|
70
|
+
if (bodyTimeout !== null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {
|
|
71
|
+
throw new InvalidArgumentError("invalid bodyTimeout");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
this.origin = origin;
|
|
75
|
+
this.method = method;
|
|
76
|
+
this.path = path;
|
|
77
|
+
this.headersTimeout = headersTimeout;
|
|
78
|
+
this.bodyTimeout = bodyTimeout;
|
|
79
|
+
// 7.x dropped throwOnError (the responseError interceptor replaced it).
|
|
80
|
+
if (profile.major >= 7 && opts.throwOnError !== undefined) {
|
|
81
|
+
throw new InvalidArgumentError("invalid throwOnError");
|
|
82
|
+
}
|
|
83
|
+
this.throwOnError = opts.throwOnError === true;
|
|
84
|
+
|
|
85
|
+
const body = opts.body ?? null;
|
|
86
|
+
if (body === null) {
|
|
87
|
+
this.body = null;
|
|
88
|
+
} else if (typeof body === "string") {
|
|
89
|
+
this.body = body.length > 0 ? Buffer.from(body) : null;
|
|
90
|
+
} else {
|
|
91
|
+
this.body =
|
|
92
|
+
body.byteLength > 0 ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
this.completed = false;
|
|
96
|
+
this.profile = profile;
|
|
97
|
+
this.aborted = false;
|
|
98
|
+
this.idempotent = opts.idempotent ?? (method === "HEAD" || method === "GET");
|
|
99
|
+
this.blocking = opts.blocking ?? (profile.major >= 7 ? method !== "HEAD" : false);
|
|
100
|
+
this.reset = opts.reset ?? null;
|
|
101
|
+
this.host = null;
|
|
102
|
+
this.contentLength = null;
|
|
103
|
+
this.contentType = null;
|
|
104
|
+
this.headerPairs = [];
|
|
105
|
+
this.error = null;
|
|
106
|
+
this.abortFn = null;
|
|
107
|
+
|
|
108
|
+
const headers = opts.headers ?? null;
|
|
109
|
+
if (headers !== null) {
|
|
110
|
+
if (Array.isArray(headers)) {
|
|
111
|
+
if (headers.length % 2 !== 0) throw new InvalidArgumentError("headers array must be even");
|
|
112
|
+
for (let i = 0; i < headers.length; i += 2) {
|
|
113
|
+
processHeader(this, headers[i]!, headers[i + 1]!, profile);
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
for (const key of Object.keys(headers)) {
|
|
117
|
+
const value = headers[key];
|
|
118
|
+
if (value === undefined) continue;
|
|
119
|
+
if (typeof value === "string") {
|
|
120
|
+
processHeader(this, key, value, profile);
|
|
121
|
+
} else if (profile.major >= 7) {
|
|
122
|
+
for (const item of value) processHeader(this, key, item, profile);
|
|
123
|
+
} else {
|
|
124
|
+
throw new InvalidArgumentError(`invalid ${key} header`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
this.servername = serverName(this.host);
|
|
131
|
+
this.handler = handler;
|
|
132
|
+
this.diagnostic = null;
|
|
133
|
+
if (channels.create.hasSubscribers) channels.create.publish({ request: this.diagnosticView() });
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
diagnosticView(): unknown {
|
|
137
|
+
if (this.diagnostic === null) {
|
|
138
|
+
// addHeader adds a header as undici's Request.addHeader does (the
|
|
139
|
+
// tracing instrumentations' header injection).
|
|
140
|
+
const view: any = {
|
|
141
|
+
origin: this.origin,
|
|
142
|
+
completed: this.completed,
|
|
143
|
+
method: this.method,
|
|
144
|
+
path: this.path,
|
|
145
|
+
headers: this.diagnosticHeaders(),
|
|
146
|
+
addHeader: (key: string, value: string): unknown => {
|
|
147
|
+
this.addHeader(key, value);
|
|
148
|
+
return view;
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
this.diagnostic = view;
|
|
152
|
+
}
|
|
153
|
+
return this.diagnostic;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** The diagnostics view's headers: undici 7 publishes its header array,
|
|
157
|
+
* undici 5 the raw block. */
|
|
158
|
+
diagnosticHeaders(): string | string[] {
|
|
159
|
+
return this.profile.major >= 7 ? this.headerPairs.slice() : this.headers;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** The DiagnosticsChannel.Request view's raw header block. */
|
|
163
|
+
get headers(): string {
|
|
164
|
+
let out = "";
|
|
165
|
+
for (let i = 0; i < this.headerPairs.length; i += 2) {
|
|
166
|
+
out += `${this.headerPairs[i]}: ${this.headerPairs[i + 1]}\r\n`;
|
|
167
|
+
}
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
addHeader(key: string, value: string): Request {
|
|
172
|
+
processHeader(this, key, value, this.profile);
|
|
173
|
+
const view: any = this.diagnostic;
|
|
174
|
+
if (view !== null) view.headers = this.diagnosticHeaders();
|
|
175
|
+
return this;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
onBodySent(chunk: Buffer): void {
|
|
179
|
+
const cb = this.handler.onBodySent;
|
|
180
|
+
if (cb !== undefined) {
|
|
181
|
+
try {
|
|
182
|
+
this.handler.onBodySent!(chunk.length, chunk.length);
|
|
183
|
+
} catch (err) {
|
|
184
|
+
this.onError(err as Error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
onRequestSent(): void {
|
|
190
|
+
if (channels.bodySent.hasSubscribers)
|
|
191
|
+
channels.bodySent.publish({ request: this.diagnosticView() });
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
onConnect(abort: (err?: Error) => void): void {
|
|
195
|
+
if (this.error !== null) {
|
|
196
|
+
abort(this.error);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.abortFn = abort;
|
|
200
|
+
if (this.handler.onConnect !== undefined) this.handler.onConnect!(abort);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
onHeaders(
|
|
204
|
+
statusCode: number,
|
|
205
|
+
headers: Buffer[],
|
|
206
|
+
resume: () => void,
|
|
207
|
+
statusText: string,
|
|
208
|
+
): boolean {
|
|
209
|
+
if (channels.headers.hasSubscribers) {
|
|
210
|
+
channels.headers.publish({
|
|
211
|
+
request: this.diagnosticView(),
|
|
212
|
+
response: { statusCode, headers, statusText },
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
if (this.handler.onHeaders === undefined) return true;
|
|
216
|
+
return this.handler.onHeaders!(statusCode, headers, resume, statusText);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
onData(chunk: Buffer): boolean {
|
|
220
|
+
if (this.handler.onData === undefined) return true;
|
|
221
|
+
return this.handler.onData!(chunk);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
onComplete(trailers: Buffer[]): void {
|
|
225
|
+
this.completed = true;
|
|
226
|
+
const view: any = this.diagnostic;
|
|
227
|
+
if (view !== null) view.completed = true;
|
|
228
|
+
if (channels.trailers.hasSubscribers)
|
|
229
|
+
channels.trailers.publish({ request: this.diagnosticView(), trailers });
|
|
230
|
+
if (this.handler.onComplete !== undefined) {
|
|
231
|
+
const raw: string[] = [];
|
|
232
|
+
for (const t of trailers) raw.push(t.toString("latin1"));
|
|
233
|
+
this.handler.onComplete!(raw);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
onError(error: Error): void {
|
|
238
|
+
if (channels.error.hasSubscribers)
|
|
239
|
+
channels.error.publish({ request: this.diagnosticView(), error });
|
|
240
|
+
if (this.aborted) return;
|
|
241
|
+
this.aborted = true;
|
|
242
|
+
if (this.handler.onError !== undefined) this.handler.onError!(error);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function processHeader(request: Request, key: string, val: string, profile: Profile): void {
|
|
247
|
+
const lower = key.toLowerCase();
|
|
248
|
+
// undici 7 checks the name and every value before the special cases;
|
|
249
|
+
// undici 5 checks the first Host value before storing it. Either way a
|
|
250
|
+
// CR or LF in a value never reaches the request head.
|
|
251
|
+
if (profile.major >= 7) {
|
|
252
|
+
if (!tokenRegExp.test(lower)) throw new InvalidArgumentError("invalid header key");
|
|
253
|
+
if (headerCharRegex.test(val)) throw new InvalidArgumentError(`invalid ${key} header`);
|
|
254
|
+
}
|
|
255
|
+
if (lower === "host") {
|
|
256
|
+
// The client writes the Host value into the request head as given.
|
|
257
|
+
if (headerCharRegex.test(val)) throw new InvalidArgumentError(`invalid ${key} header`);
|
|
258
|
+
if (request.host === null) {
|
|
259
|
+
if (headerCharRegex.test(val)) throw new InvalidArgumentError(`invalid ${key} header`);
|
|
260
|
+
request.host = val;
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (profile.major >= 7) throw new InvalidArgumentError("duplicate host header");
|
|
264
|
+
} else if (lower === "content-length") {
|
|
265
|
+
if (request.contentLength === null) {
|
|
266
|
+
const n = parseInt(val, 10);
|
|
267
|
+
if (!Number.isFinite(n) || (profile.major >= 7 && !/^\d+$/.test(val))) {
|
|
268
|
+
throw new InvalidArgumentError("invalid content-length header");
|
|
269
|
+
}
|
|
270
|
+
request.contentLength = n;
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
// The client writes the one Content-Length it validated or computed
|
|
274
|
+
// from the body; a second field would frame the request twice. Both
|
|
275
|
+
// profiles reject it with undici 7's error (5.x sends it as given).
|
|
276
|
+
throw new InvalidArgumentError("duplicate content-length header");
|
|
277
|
+
}
|
|
278
|
+
if (lower === "content-type" && request.contentType === null && !headerCharRegex.test(val)) {
|
|
279
|
+
request.contentType = val;
|
|
280
|
+
request.headerPairs.push(key, val);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
if (lower === "transfer-encoding" || lower === "keep-alive" || lower === "upgrade") {
|
|
284
|
+
throw new InvalidArgumentError(`invalid ${lower} header`);
|
|
285
|
+
}
|
|
286
|
+
if (lower === "connection") {
|
|
287
|
+
if (profile.major < 7) throw new InvalidArgumentError("invalid connection header");
|
|
288
|
+
for (const token of val.toLowerCase().split(",")) {
|
|
289
|
+
const trimmed = token.trim();
|
|
290
|
+
if (!tokenRegExp.test(trimmed)) throw new InvalidArgumentError("invalid connection header");
|
|
291
|
+
if (trimmed === "close") request.reset = true;
|
|
292
|
+
}
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
if (lower === "expect") throw new NotSupportedError("expect header not supported");
|
|
296
|
+
if (!tokenRegExp.test(key)) throw new InvalidArgumentError("invalid header key");
|
|
297
|
+
if (headerCharRegex.test(val)) throw new InvalidArgumentError(`invalid ${key} header`);
|
|
298
|
+
request.headerPairs.push(key, val);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** util.getServerName: the Host header without its port; null for IPs. */
|
|
302
|
+
function serverName(host: string | null): string | null {
|
|
303
|
+
if (host === null || host === "") return null;
|
|
304
|
+
let name = host;
|
|
305
|
+
if (name.startsWith("[")) {
|
|
306
|
+
const idx = name.indexOf("]");
|
|
307
|
+
if (idx !== -1) name = name.slice(1, idx);
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
const idx = name.indexOf(":");
|
|
311
|
+
if (idx !== -1) name = name.slice(0, idx);
|
|
312
|
+
return /^\d+\.\d+\.\d+\.\d+$/.test(name) ? null : name;
|
|
313
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// undici 7.x's fast timers (lib/util/timers.js): one unref'd native timer
|
|
2
|
+
// ticking every 499 ms drives every headers/body timeout, so those fire on
|
|
3
|
+
// the first tick at least `delay` after the timer (re)started.
|
|
4
|
+
const RESOLUTION_MS = 1e3;
|
|
5
|
+
const TICK_MS = (RESOLUTION_MS >> 1) - 1;
|
|
6
|
+
const NOT_IN_LIST = -2;
|
|
7
|
+
const TO_BE_CLEARED = -1;
|
|
8
|
+
const PENDING = 0;
|
|
9
|
+
const ACTIVE = 1;
|
|
10
|
+
|
|
11
|
+
let fastNow = 0;
|
|
12
|
+
// The ticking native timer, held as its refresh closure.
|
|
13
|
+
let refreshTick: (() => void) | null = null;
|
|
14
|
+
const fastTimers: FastTimer[] = [];
|
|
15
|
+
|
|
16
|
+
function onTick(): void {
|
|
17
|
+
fastNow += TICK_MS;
|
|
18
|
+
let idx = 0;
|
|
19
|
+
let len = fastTimers.length;
|
|
20
|
+
while (idx < len) {
|
|
21
|
+
const timer = fastTimers[idx]!;
|
|
22
|
+
if (timer.state === PENDING) {
|
|
23
|
+
timer.idleStart = fastNow - TICK_MS;
|
|
24
|
+
timer.state = ACTIVE;
|
|
25
|
+
} else if (timer.state === ACTIVE && fastNow >= timer.idleStart + timer.idleTimeout) {
|
|
26
|
+
timer.state = TO_BE_CLEARED;
|
|
27
|
+
timer.idleStart = -1;
|
|
28
|
+
timer.onTimeout();
|
|
29
|
+
}
|
|
30
|
+
if (timer.state === TO_BE_CLEARED) {
|
|
31
|
+
timer.state = NOT_IN_LIST;
|
|
32
|
+
if (--len !== 0) fastTimers[idx] = fastTimers[len]!;
|
|
33
|
+
} else {
|
|
34
|
+
++idx;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
fastTimers.length = len;
|
|
38
|
+
// An idle tick stops; the next timer schedules a new one.
|
|
39
|
+
if (fastTimers.length !== 0) refreshTimeout();
|
|
40
|
+
else refreshTick = null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function refreshTimeout(): void {
|
|
44
|
+
const refresh = refreshTick;
|
|
45
|
+
if (refresh !== null) {
|
|
46
|
+
refresh();
|
|
47
|
+
} else {
|
|
48
|
+
const timeout = setTimeout(onTick, TICK_MS);
|
|
49
|
+
timeout.unref();
|
|
50
|
+
refreshTick = () => {
|
|
51
|
+
timeout.refresh();
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export class FastTimer {
|
|
57
|
+
state: number;
|
|
58
|
+
idleTimeout: number;
|
|
59
|
+
idleStart: number;
|
|
60
|
+
onTimeout: () => void;
|
|
61
|
+
|
|
62
|
+
constructor(callback: () => void, delay: number) {
|
|
63
|
+
this.state = NOT_IN_LIST;
|
|
64
|
+
this.idleTimeout = delay;
|
|
65
|
+
this.idleStart = -1;
|
|
66
|
+
this.onTimeout = callback;
|
|
67
|
+
this.refresh();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
refresh(): void {
|
|
71
|
+
if (this.state === NOT_IN_LIST) fastTimers.push(this);
|
|
72
|
+
if (refreshTick === null || fastTimers.length === 1) refreshTimeout();
|
|
73
|
+
this.state = PENDING;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
clear(): void {
|
|
77
|
+
this.state = TO_BE_CLEARED;
|
|
78
|
+
this.idleStart = -1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Types shared by the undici entries. They restate the subset of undici's
|
|
2
|
+
// own declarations (types/dispatcher.d.ts, connector.d.ts, ...) that the
|
|
3
|
+
// shim implements; test/package-shims/undici-types.test.ts checks them
|
|
4
|
+
// against the installed 5.x and 7.x declarations.
|
|
5
|
+
import type { Socket } from "node:net";
|
|
6
|
+
import type { Dispatcher } from "./dispatcher.ts";
|
|
7
|
+
|
|
8
|
+
/** Response and request header records (undici's IncomingHttpHeaders). */
|
|
9
|
+
export type IncomingHttpHeaders = Record<string, string | string[] | undefined>;
|
|
10
|
+
|
|
11
|
+
/** What a request's `headers` option accepts here: a record or a flat
|
|
12
|
+
* [name, value, ...] array. */
|
|
13
|
+
export type UndiciHeaders = Record<string, string | string[] | undefined> | string[] | null;
|
|
14
|
+
|
|
15
|
+
/** The payloads the shim writes. Streams, iterables, Blob and FormData
|
|
16
|
+
* bodies are outside the implemented subset. */
|
|
17
|
+
export type RequestBody = string | Buffer | Uint8Array | null;
|
|
18
|
+
|
|
19
|
+
export interface DispatchOptions {
|
|
20
|
+
origin?: string | URL;
|
|
21
|
+
path: string;
|
|
22
|
+
method: string;
|
|
23
|
+
body?: RequestBody;
|
|
24
|
+
headers?: UndiciHeaders;
|
|
25
|
+
idempotent?: boolean;
|
|
26
|
+
blocking?: boolean;
|
|
27
|
+
headersTimeout?: number | null;
|
|
28
|
+
bodyTimeout?: number | null;
|
|
29
|
+
reset?: boolean;
|
|
30
|
+
throwOnError?: boolean;
|
|
31
|
+
// Dispatcher.RequestOptions' members live here too: a record passed to
|
|
32
|
+
// dispatch() is copied to this shape, and interceptors read them back
|
|
33
|
+
// through a `params as Dispatcher.RequestOptions` cast, as with undici.
|
|
34
|
+
opaque?: unknown;
|
|
35
|
+
signal?: AbortSignal | null;
|
|
36
|
+
onInfo?: (info: { statusCode: number; headers: IncomingHttpHeaders }) => void;
|
|
37
|
+
highWaterMark?: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** undici's dispatch-controller (7.x handler API). */
|
|
41
|
+
export interface DispatchController {
|
|
42
|
+
readonly aborted: boolean;
|
|
43
|
+
readonly paused: boolean;
|
|
44
|
+
readonly reason: Error | null;
|
|
45
|
+
abort(reason: Error): void;
|
|
46
|
+
pause(): void;
|
|
47
|
+
resume(): void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Dispatch handlers: the 5.x callbacks, plus 7.x's controller callbacks. */
|
|
51
|
+
export interface DispatchHandlers {
|
|
52
|
+
onConnect?(abort: (err?: Error) => void): void;
|
|
53
|
+
onError?(err: Error): void;
|
|
54
|
+
onHeaders?(
|
|
55
|
+
statusCode: number,
|
|
56
|
+
headers: Buffer[],
|
|
57
|
+
resume: () => void,
|
|
58
|
+
statusText: string,
|
|
59
|
+
): boolean;
|
|
60
|
+
onData?(chunk: Buffer): boolean;
|
|
61
|
+
onComplete?(trailers: string[] | null): void;
|
|
62
|
+
onBodySent?(chunkSize: number, totalBytesSent: number): void;
|
|
63
|
+
onRequestStart?(controller: DispatchController, context: unknown): void;
|
|
64
|
+
onResponseStart?(
|
|
65
|
+
controller: DispatchController,
|
|
66
|
+
statusCode: number,
|
|
67
|
+
headers: IncomingHttpHeaders,
|
|
68
|
+
statusMessage?: string,
|
|
69
|
+
): void;
|
|
70
|
+
onResponseData?(controller: DispatchController, chunk: Buffer): void;
|
|
71
|
+
onResponseEnd?(controller: DispatchController, trailers: IncomingHttpHeaders): void;
|
|
72
|
+
onResponseError?(controller: DispatchController, error: Error): void;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export type DispatchFn = (options: DispatchOptions, handler: DispatchHandlers) => boolean;
|
|
76
|
+
|
|
77
|
+
export type DispatchInterceptor = (dispatch: DispatchFn) => DispatchFn;
|
|
78
|
+
|
|
79
|
+
/** buildConnector's per-connection parameters. */
|
|
80
|
+
export interface ConnectorOptions {
|
|
81
|
+
hostname: string;
|
|
82
|
+
host?: string;
|
|
83
|
+
protocol: string;
|
|
84
|
+
port: string;
|
|
85
|
+
servername?: string;
|
|
86
|
+
localAddress?: string | null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export type ConnectorCallback = (err: Error | null, socket: Socket | null) => void;
|
|
90
|
+
|
|
91
|
+
/** A connector: dials, reports through the callback, and returns the socket
|
|
92
|
+
* (undici 5 and 7 both return it although their types declare void). */
|
|
93
|
+
export type Connector = (options: ConnectorOptions, callback: ConnectorCallback) => Socket;
|
|
94
|
+
|
|
95
|
+
/** net/tls connect options a connector forwards (the implemented subset). */
|
|
96
|
+
export interface ConnectorBuildOptions {
|
|
97
|
+
timeout?: number | null;
|
|
98
|
+
maxCachedSessions?: number | null;
|
|
99
|
+
socketPath?: string | null;
|
|
100
|
+
port?: number;
|
|
101
|
+
rejectUnauthorized?: boolean;
|
|
102
|
+
ca?: string | Buffer | (string | Buffer)[];
|
|
103
|
+
servername?: string;
|
|
104
|
+
/** net.connect's resolver hook: @types/node's LookupFunction is
|
|
105
|
+
* assignable (method syntax; the callback takes one address or all). */
|
|
106
|
+
lookup?(
|
|
107
|
+
hostname: string,
|
|
108
|
+
options: unknown,
|
|
109
|
+
callback: (
|
|
110
|
+
err: NodeJS.ErrnoException | null,
|
|
111
|
+
address: string | LookupAddress[],
|
|
112
|
+
family?: number,
|
|
113
|
+
) => void,
|
|
114
|
+
): void;
|
|
115
|
+
keepAlive?: boolean;
|
|
116
|
+
keepAliveInitialDelay?: number;
|
|
117
|
+
noDelay?: boolean;
|
|
118
|
+
autoSelectFamily?: boolean;
|
|
119
|
+
autoSelectFamilyAttemptTimeout?: number;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface LookupAddress {
|
|
123
|
+
address: string;
|
|
124
|
+
family: number;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface ClientOptions {
|
|
128
|
+
keepAliveTimeout?: number | null;
|
|
129
|
+
keepAliveMaxTimeout?: number | null;
|
|
130
|
+
keepAliveTimeoutThreshold?: number | null;
|
|
131
|
+
pipelining?: number | null;
|
|
132
|
+
connect?: ConnectorBuildOptions | Connector | null;
|
|
133
|
+
maxHeaderSize?: number | null;
|
|
134
|
+
bodyTimeout?: number | null;
|
|
135
|
+
headersTimeout?: number | null;
|
|
136
|
+
strictContentLength?: boolean;
|
|
137
|
+
maxRequestsPerClient?: number;
|
|
138
|
+
maxResponseSize?: number | null;
|
|
139
|
+
connectTimeout?: number | null;
|
|
140
|
+
localAddress?: string;
|
|
141
|
+
/** 5.x applies `Client` interceptors; 7.x ignores the option. */
|
|
142
|
+
interceptors?: { Client?: readonly DispatchInterceptor[] | undefined };
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface PoolOptions extends ClientOptions {
|
|
146
|
+
factory?(origin: URL, opts: object): Dispatcher;
|
|
147
|
+
connections?: number | null;
|
|
148
|
+
interceptors?: {
|
|
149
|
+
Pool?: readonly DispatchInterceptor[] | undefined;
|
|
150
|
+
Client?: readonly DispatchInterceptor[] | undefined;
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface AgentOptions extends PoolOptions {
|
|
155
|
+
factory?(origin: string | URL, opts: object): Dispatcher;
|
|
156
|
+
interceptors?: {
|
|
157
|
+
Agent?: readonly DispatchInterceptor[] | undefined;
|
|
158
|
+
Pool?: readonly DispatchInterceptor[] | undefined;
|
|
159
|
+
Client?: readonly DispatchInterceptor[] | undefined;
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Version-dependent behavior, selected by the importing package's installed
|
|
164
|
+
* undici (the 5.x or 7.x entry). */
|
|
165
|
+
export interface Profile {
|
|
166
|
+
major: number;
|
|
167
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Helpers from undici's lib/core/util.js.
|
|
2
|
+
import { InvalidArgumentError } from "./errors.ts";
|
|
3
|
+
import type { IncomingHttpHeaders, Profile } from "./types.ts";
|
|
4
|
+
|
|
5
|
+
/** util.parseHeaders over raw [name, value, ...] pairs: lower-cased names,
|
|
6
|
+
* repeated names collected into arrays. 5.x decodes values as UTF-8 and
|
|
7
|
+
* treats an empty first value as absent; 7.x decodes latin1. */
|
|
8
|
+
export function parseHeaders(raw: readonly string[], profile: Profile): IncomingHttpHeaders {
|
|
9
|
+
const obj: IncomingHttpHeaders = {};
|
|
10
|
+
for (let i = 0; i + 1 < raw.length; i += 2) {
|
|
11
|
+
const key = raw[i]!.toLowerCase();
|
|
12
|
+
const value = raw[i + 1]!;
|
|
13
|
+
const existing = obj[key];
|
|
14
|
+
const absent = profile.major >= 7 ? existing === undefined : !existing;
|
|
15
|
+
if (absent) {
|
|
16
|
+
obj[key] = value;
|
|
17
|
+
} else if (typeof existing === "string") {
|
|
18
|
+
obj[key] = [existing, value];
|
|
19
|
+
} else if (existing !== undefined) {
|
|
20
|
+
existing.push(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Raw header Buffers as strings (latin1 on 7.x, UTF-8 on 5.x). */
|
|
27
|
+
export function rawHeaderStrings(raw: readonly Buffer[], profile: Profile): string[] {
|
|
28
|
+
const out: string[] = [];
|
|
29
|
+
for (let i = 0; i < raw.length; i++) {
|
|
30
|
+
// Names are ASCII tokens; values follow the version's decoding.
|
|
31
|
+
out.push(
|
|
32
|
+
i % 2 === 0 || profile.major >= 7 ? raw[i]!.toString("latin1") : raw[i]!.toString("utf8"),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** util.parseOrigin: an http(s) origin URL. */
|
|
39
|
+
export function parseOrigin(url: string | URL, profile: Profile): URL {
|
|
40
|
+
const parsed = parseURL(url, profile);
|
|
41
|
+
if (parsed.pathname !== "/" || parsed.search !== "" || parsed.hash !== "") {
|
|
42
|
+
throw new InvalidArgumentError("invalid url");
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** util.parseURL for the string/URL forms. */
|
|
48
|
+
export function parseURL(url: string | URL, profile: Profile): URL {
|
|
49
|
+
const parsed = typeof url === "string" ? new URL(url) : url;
|
|
50
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
51
|
+
// 7.x checks only string inputs; 5.x checks every input.
|
|
52
|
+
if (profile.major < 7) throw new InvalidArgumentError("invalid protocol");
|
|
53
|
+
if (typeof url === "string") {
|
|
54
|
+
throw new InvalidArgumentError(
|
|
55
|
+
"Invalid URL protocol: the URL must start with `http:` or `https:`.",
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return parsed;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** util.parseKeepAliveTimeout: the server's Keep-Alive `timeout=<s>` hint in
|
|
63
|
+
* milliseconds, or null. */
|
|
64
|
+
export function parseKeepAliveTimeout(value: string): number | null {
|
|
65
|
+
const m = /timeout=(\d+)/.exec(value);
|
|
66
|
+
return m !== null ? parseInt(m[1]!, 10) * 1000 : null;
|
|
67
|
+
}
|