@scriptc/compiler 0.4.7 → 0.4.8
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/node-fallback/child_process.d.ts +71 -22
- package/ambient/node-fallback/crypto.d.ts +15 -7
- package/ambient/node-fallback/events.d.ts +23 -5
- package/ambient/node-fallback/fs.d.ts +3 -2
- package/ambient/node-fallback/http.d.ts +23 -17
- package/ambient/node-fallback/https.d.ts +5 -2
- package/ambient/node-fallback/net.d.ts +6 -0
- package/ambient/node-fallback/os.d.ts +11 -1
- package/ambient/node-fallback/path-posix.d.ts +6 -0
- package/ambient/node-fallback/path-win32.d.ts +5 -0
- package/ambient/node-fallback/path.d.ts +2 -0
- package/ambient/node-fallback/zlib.d.ts +31 -2
- package/ambient/scriptc-node-fallback.d.ts +37 -7
- package/ambient/scriptc.d.ts +7 -2
- package/dist/backend/executable-features.js +11 -3
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.d.ts +6 -0
- package/dist/backend/library-pack.js +17 -6
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/library-pack.test.d.ts +1 -0
- package/dist/backend/library-pack.test.js +28 -0
- package/dist/backend/library-pack.test.js.map +1 -0
- package/dist/backend/linker.d.ts +9 -2
- package/dist/backend/linker.js +190 -32
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +8 -4
- package/dist/backend/lld.js +19 -13
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +3 -1
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/alloc.d.ts +15 -2
- package/dist/backend/llvm/alloc.js +172 -36
- package/dist/backend/llvm/alloc.js.map +1 -1
- package/dist/backend/llvm/alloc.test.js +69 -1
- package/dist/backend/llvm/alloc.test.js.map +1 -1
- package/dist/backend/llvm/arenas.d.ts +17 -4
- package/dist/backend/llvm/arenas.js +105 -10
- package/dist/backend/llvm/arenas.js.map +1 -1
- package/dist/backend/llvm/arenas.test.js +229 -0
- package/dist/backend/llvm/arenas.test.js.map +1 -1
- package/dist/backend/llvm/bytes-alias.js +10 -1
- package/dist/backend/llvm/bytes-alias.js.map +1 -1
- package/dist/backend/llvm/bytes-headers.js +6 -0
- package/dist/backend/llvm/bytes-headers.js.map +1 -1
- package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
- package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.js +10 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/classes.d.ts +16 -9
- package/dist/backend/llvm/classes.js +142 -37
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/classes.test.js +42 -0
- package/dist/backend/llvm/classes.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
- package/dist/backend/llvm/cpu-dispatch.js +31 -7
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +12 -3
- package/dist/backend/llvm/dyn.js +31 -7
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +67 -4
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +90 -39
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-module.test.d.ts +1 -0
- package/dist/backend/llvm/emit-module.test.js +52 -0
- package/dist/backend/llvm/emit-module.test.js.map +1 -0
- package/dist/backend/llvm/emit-statements.js +99 -15
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +113 -8
- package/dist/backend/llvm/emitter.js +438 -67
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +31 -3
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +19 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.js +16 -1
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +18 -2
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +31 -10
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +31 -3
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.d.ts +1 -1
- package/dist/backend/llvm/expr-records.js +124 -56
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +17 -0
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/js-groups.d.ts +21 -0
- package/dist/backend/llvm/js-groups.js +277 -0
- package/dist/backend/llvm/js-groups.js.map +1 -0
- package/dist/backend/llvm/js-ic.d.ts +19 -1
- package/dist/backend/llvm/js-ic.js +96 -23
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +132 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +33 -6
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +44 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +69 -2
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-union-storage.test.js +32 -0
- package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
- package/dist/backend/llvm/loop-state.js +7 -2
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
- package/dist/backend/llvm/map-entry-fusion.js +3 -3
- package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +6 -6
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.js +7 -6
- package/dist/backend/llvm/nullable-unions.js.map +1 -1
- package/dist/backend/llvm/nullable-unions.test.js +4 -1
- package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
- package/dist/backend/llvm/receivers.js +3 -0
- package/dist/backend/llvm/receivers.js.map +1 -1
- package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
- package/dist/backend/llvm/record-entry-fusion.js +217 -0
- package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
- package/dist/backend/llvm/record-results.d.ts +5 -2
- package/dist/backend/llvm/record-results.js +13 -12
- package/dist/backend/llvm/record-results.js.map +1 -1
- package/dist/backend/llvm/record-views.js +12 -6
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/reference-effects.js +1 -0
- package/dist/backend/llvm/reference-effects.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +3 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/region-ir.js +1 -0
- package/dist/backend/llvm/region-ir.js.map +1 -1
- package/dist/backend/llvm/region-sites.d.ts +18 -0
- package/dist/backend/llvm/region-sites.js +79 -1
- package/dist/backend/llvm/region-sites.js.map +1 -1
- package/dist/backend/llvm/runtime-registries.test.js +53 -6
- package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
- package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +33 -3
- package/dist/backend/llvm/shapes.js +183 -13
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/stack-objects.d.ts +1 -2
- package/dist/backend/llvm/stack-objects.js +8 -5
- package/dist/backend/llvm/stack-objects.js.map +1 -1
- package/dist/backend/llvm/walkers.d.ts +12 -0
- package/dist/backend/llvm/walkers.js +46 -2
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/may-throw.js +12 -2
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +13 -0
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +48 -8
- package/dist/backend/native/executable.js +55 -13
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/helper-identity-record.d.ts +11 -0
- package/dist/backend/native/helper-identity-record.js +76 -0
- package/dist/backend/native/helper-identity-record.js.map +1 -0
- package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
- package/dist/backend/native/helper-identity-record.test.js +101 -0
- package/dist/backend/native/helper-identity-record.test.js.map +1 -0
- package/dist/backend/native/library.js +9 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +4 -1
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native/vendor.d.ts +1 -1
- package/dist/backend/native/vendor.js +1 -1
- package/dist/backend/native/vendor.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +13 -10
- package/dist/backend/native-codegen-core.js +26 -13
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.js +27 -8
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +110 -14
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +37 -8
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/runtime-pack-core.d.ts +17 -2
- package/dist/backend/runtime-pack-core.js +18 -3
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +211 -2
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/tree-classes.d.ts +42 -0
- package/dist/backend/tree-classes.js +723 -0
- package/dist/backend/tree-classes.js.map +1 -0
- package/dist/backend/tree-classes.test.d.ts +1 -0
- package/dist/backend/tree-classes.test.js +338 -0
- package/dist/backend/tree-classes.test.js.map +1 -0
- package/dist/backend/vendor-archives.d.ts +5 -1
- package/dist/backend/vendor-archives.js +51 -7
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +25 -4
- package/dist/backend/vendor-inputs.js +68 -4
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +35 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -1
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.js +2 -2
- package/dist/coverage/report.js +47 -0
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/diagnostics/codes.d.ts +8 -0
- package/dist/diagnostics/codes.js +8 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +27 -9
- package/dist/diagnostics/diagnostic.js +60 -19
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/envelope.d.ts +18 -0
- package/dist/diagnostics/envelope.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +21 -2
- package/dist/executable/executable-cache.js +21 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +123 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +199 -248
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/analysis.js +200 -18
- package/dist/frontend/analysis.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +4 -0
- package/dist/frontend/builtin-modules.js +10 -0
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +12 -2
- package/dist/frontend/early-errors.js +535 -4
- package/dist/frontend/early-errors.js.map +1 -1
- package/dist/frontend/early-errors.test.js +165 -0
- package/dist/frontend/early-errors.test.js.map +1 -1
- package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
- package/dist/frontend/jsx-opinion-sites.test.js +86 -0
- package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
- package/dist/frontend/lib-exports.d.ts +23 -4
- package/dist/frontend/lib-exports.js +98 -26
- package/dist/frontend/lib-exports.js.map +1 -1
- package/dist/frontend/lowering/binding-analysis.js +21 -3
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/buffers.d.ts +8 -0
- package/dist/frontend/lowering/buffers.js +43 -0
- package/dist/frontend/lowering/buffers.js.map +1 -0
- package/dist/frontend/lowering/builtin-calls.js +4 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
- package/dist/frontend/lowering/builtin-namespaces.js +24 -3
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
- package/dist/frontend/lowering/builtin-statics.js +407 -0
- package/dist/frontend/lowering/builtin-statics.js.map +1 -0
- package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
- package/dist/frontend/lowering/builtins/arguments.js +12 -0
- package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
- package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
- package/dist/frontend/lowering/builtins/atomics.js +87 -1
- package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.js +2 -2
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
- package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
- package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
- package/dist/frontend/lowering/builtins/child-process.js +560 -27
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
- package/dist/frontend/lowering/builtins/compression.js +41 -21
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
- package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/json.js +4 -0
- package/dist/frontend/lowering/builtins/json.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +3 -1
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
- package/dist/frontend/lowering/builtins/numbers.js +10 -2
- package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +6 -3
- package/dist/frontend/lowering/builtins/operating-system.js +96 -16
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +2 -2
- package/dist/frontend/lowering/builtins/process.js +103 -8
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/promises.js +169 -8
- package/dist/frontend/lowering/builtins/promises.js.map +1 -1
- package/dist/frontend/lowering/builtins/properties.js +6 -2
- package/dist/frontend/lowering/builtins/properties.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
- package/dist/frontend/lowering/builtins/readline.js +180 -36
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +35 -12
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/webassembly.js +2 -0
- package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
- package/dist/frontend/lowering/call-arguments.d.ts +10 -0
- package/dist/frontend/lowering/call-arguments.js +37 -2
- package/dist/frontend/lowering/call-arguments.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.d.ts +10 -0
- package/dist/frontend/lowering/call-signatures.js +103 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -2
- package/dist/frontend/lowering/class-construction.js +99 -5
- package/dist/frontend/lowering/class-construction.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +9 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.js +20 -15
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +20 -1
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-unions.js +21 -4
- package/dist/frontend/lowering/class-unions.js.map +1 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +9 -0
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +8 -0
- package/dist/frontend/lowering/coercions/state.js +17 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +10 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
- package/dist/frontend/lowering/coercions/unions.js +54 -10
- package/dist/frontend/lowering/coercions/unions.js.map +1 -1
- package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
- package/dist/frontend/lowering/constructor-returns.js +284 -58
- package/dist/frontend/lowering/constructor-returns.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +156 -62
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +21 -3
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-from-async.js +139 -3
- package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
- package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
- package/dist/frontend/lowering/containers/array-iteration.js +24 -7
- package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +14 -11
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
- package/dist/frontend/lowering/containers/bytes.js +446 -86
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +21 -12
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
- package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
- package/dist/frontend/lowering/containers/collection-methods.js +52 -17
- package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
- package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
- package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
- package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
- package/dist/frontend/lowering/crypto-tables.js +5 -5
- package/dist/frontend/lowering/dispatch-sites.js +3 -0
- package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
- package/dist/frontend/lowering/divergences.d.ts +40 -0
- package/dist/frontend/lowering/divergences.js +239 -20
- package/dist/frontend/lowering/divergences.js.map +1 -1
- package/dist/frontend/lowering/effect-free.d.ts +12 -0
- package/dist/frontend/lowering/effect-free.js +44 -0
- package/dist/frontend/lowering/effect-free.js.map +1 -0
- package/dist/frontend/lowering/expressions/array-literals.d.ts +10 -0
- package/dist/frontend/lowering/expressions/array-literals.js +62 -0
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +115 -5
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +151 -7
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
- package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
- package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +31 -2
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
- package/dist/frontend/lowering/expressions/narrowing.js +175 -22
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +173 -11
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
- package/dist/frontend/lowering/expressions/property-access.js +379 -109
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +237 -7
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +8 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
- package/dist/frontend/lowering/expressions/union-fields.js +103 -13
- package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +74 -55
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/function-returns.js +37 -10
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/general-streams.js +5 -0
- package/dist/frontend/lowering/general-streams.js.map +1 -1
- package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
- package/dist/frontend/lowering/generator-delegation.js +301 -118
- package/dist/frontend/lowering/generator-delegation.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +27 -1
- package/dist/frontend/lowering/generic-functions.js +432 -18
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-function-values.d.ts +25 -0
- package/dist/frontend/lowering/global-function-values.js +193 -0
- package/dist/frontend/lowering/global-function-values.js.map +1 -0
- package/dist/frontend/lowering/global-values.d.ts +6 -4
- package/dist/frontend/lowering/global-values.js +24 -10
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/host-global-values.d.ts +31 -0
- package/dist/frontend/lowering/host-global-values.js +121 -0
- package/dist/frontend/lowering/host-global-values.js.map +1 -0
- package/dist/frontend/lowering/host-globals.d.ts +74 -0
- package/dist/frontend/lowering/host-globals.js +344 -0
- package/dist/frontend/lowering/host-globals.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.js +1 -1
- package/dist/frontend/lowering/iterator-adapters.js +46 -17
- package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
- package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
- package/dist/frontend/lowering/iterator-prototype.js +160 -0
- package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
- package/dist/frontend/lowering/key-order-witness.js +43 -22
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.test.js +1 -0
- package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +11 -3
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +30 -15
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
- package/dist/frontend/lowering/lower-async-iteration.js +15 -0
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.js +11 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +25 -0
- package/dist/frontend/lowering/lower-calls.js +929 -227
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.js +59 -16
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +20 -0
- package/dist/frontend/lowering/lower-classes.js +468 -44
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
- package/dist/frontend/lowering/lower-event-emitter.js +253 -83
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
- package/dist/frontend/lowering/lower-exprs.js +71 -20
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +25 -6
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +57 -10
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
- package/dist/frontend/lowering/lower-global-value.js +14 -5
- package/dist/frontend/lowering/lower-global-value.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +638 -64
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +48 -2
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +18 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.js +16 -6
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +303 -87
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.js +45 -0
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
- package/dist/frontend/lowering/lower-stmts.js +270 -52
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +110 -27
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lower-url.js +6 -3
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +227 -21
- package/dist/frontend/lowering/lowerer.js +651 -92
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +18 -0
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
- package/dist/frontend/lowering/lowering-facts.js +323 -0
- package/dist/frontend/lowering/lowering-facts.js.map +1 -0
- package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
- package/dist/frontend/lowering/lowering-facts.test.js +100 -0
- package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
- package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
- package/dist/frontend/lowering/nan-coded-reads.js +112 -9
- package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
- package/dist/frontend/lowering/optional-arguments.js +26 -2
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/partial-assertions.d.ts +0 -3
- package/dist/frontend/lowering/partial-assertions.js +9 -15
- package/dist/frontend/lowering/partial-assertions.js.map +1 -1
- package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
- package/dist/frontend/lowering/primitive-throws.js +241 -0
- package/dist/frontend/lowering/primitive-throws.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js +1 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
- package/dist/frontend/lowering/record-inherited.d.ts +17 -1
- package/dist/frontend/lowering/record-inherited.js +16 -2
- package/dist/frontend/lowering/record-inherited.js.map +1 -1
- package/dist/frontend/lowering/record-links.d.ts +73 -0
- package/dist/frontend/lowering/record-links.js +797 -0
- package/dist/frontend/lowering/record-links.js.map +1 -0
- package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
- package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
- package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
- package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
- package/dist/frontend/lowering/runtime-optional-report.js +300 -0
- package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
- package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
- package/dist/frontend/lowering/static-typeof.d.ts +3 -1
- package/dist/frontend/lowering/static-typeof.js +6 -1
- package/dist/frontend/lowering/static-typeof.js.map +1 -1
- package/dist/frontend/lowering/strict-mode.d.ts +1 -5
- package/dist/frontend/lowering/strict-mode.js +4 -30
- package/dist/frontend/lowering/strict-mode.js.map +1 -1
- package/dist/frontend/lowering/structural-instances.d.ts +7 -0
- package/dist/frontend/lowering/structural-instances.js +23 -0
- package/dist/frontend/lowering/structural-instances.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +15 -1
- package/dist/frontend/lowering/surfaces.js +78 -10
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/union-retag.d.ts +13 -1
- package/dist/frontend/lowering/union-retag.js +55 -1
- package/dist/frontend/lowering/union-retag.js.map +1 -1
- package/dist/frontend/lowering/union-retag.test.js +51 -0
- package/dist/frontend/lowering/union-retag.test.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +8 -0
- package/dist/frontend/lowering/unit-journal.js +14 -0
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +36 -1
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.js +3 -2
- package/dist/frontend/lowering/zlib-constants.js.map +1 -1
- package/dist/frontend/npm-static.js +78 -9
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm-static.test.js +95 -2
- package/dist/frontend/npm-static.test.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +5 -4
- package/dist/frontend/pipeline.js +94 -31
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/pipeline.test.js +68 -11
- package/dist/frontend/pipeline.test.js.map +1 -1
- package/dist/frontend/program.d.ts +62 -2
- package/dist/frontend/program.js +695 -422
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +37 -1
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/services-node.d.ts +7 -0
- package/dist/frontend/services-node.js +32 -1
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services-node.test.js +51 -0
- package/dist/frontend/services-node.test.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.js +68 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/tier-analysis.d.ts +9 -0
- package/dist/frontend/tier-analysis.js +1 -0
- package/dist/frontend/tier-analysis.js.map +1 -1
- package/dist/frontend/tsc-codes.d.ts +57 -3
- package/dist/frontend/tsc-codes.js +935 -150
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/tsc-codes.test.js +221 -12
- package/dist/frontend/tsc-codes.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +91 -9
- package/dist/frontend/type-mapper.js +622 -181
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +80 -15
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +60 -0
- package/dist/index.test.js.map +1 -0
- package/dist/ir/builtin-effects.js +43 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +242 -16
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/callback-specialization.d.ts +3 -2
- package/dist/ir/callback-specialization.js +35 -25
- package/dist/ir/callback-specialization.js.map +1 -1
- package/dist/ir/capture-values.d.ts +8 -4
- package/dist/ir/capture-values.js +9 -6
- package/dist/ir/capture-values.js.map +1 -1
- package/dist/ir/char-unit-locals.d.ts +6 -2
- package/dist/ir/char-unit-locals.js +11 -2
- package/dist/ir/char-unit-locals.js.map +1 -1
- package/dist/ir/class-key-index.d.ts +18 -0
- package/dist/ir/class-key-index.js +29 -0
- package/dist/ir/class-key-index.js.map +1 -0
- package/dist/ir/class-key-index.test.d.ts +1 -0
- package/dist/ir/class-key-index.test.js +25 -0
- package/dist/ir/class-key-index.test.js.map +1 -0
- package/dist/ir/codec.generated.d.ts +1 -1
- package/dist/ir/codec.generated.js +724 -648
- package/dist/ir/codec.generated.js.map +1 -1
- package/dist/ir/constant-globals.d.ts +5 -2
- package/dist/ir/constant-globals.js +25 -27
- package/dist/ir/constant-globals.js.map +1 -1
- package/dist/ir/expression-inlining.d.ts +4 -2
- package/dist/ir/expression-inlining.js +8 -2
- package/dist/ir/expression-inlining.js.map +1 -1
- package/dist/ir/field-values.d.ts +5 -2
- package/dist/ir/field-values.js +32 -21
- package/dist/ir/field-values.js.map +1 -1
- package/dist/ir/fields.generated.d.ts +11 -2
- package/dist/ir/fields.generated.js +8 -0
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/final-fields.js +1 -1
- package/dist/ir/final-fields.js.map +1 -1
- package/dist/ir/function-references.d.ts +5 -4
- package/dist/ir/function-references.js +7 -4
- package/dist/ir/function-references.js.map +1 -1
- package/dist/ir/function-references.test.js +7 -0
- package/dist/ir/function-references.test.js.map +1 -1
- package/dist/ir/init-only-globals.d.ts +4 -2
- package/dist/ir/init-only-globals.js +17 -18
- package/dist/ir/init-only-globals.js.map +1 -1
- package/dist/ir/inline-array-views.js +1 -0
- package/dist/ir/inline-array-views.js.map +1 -1
- package/dist/ir/int32-slots.js +7 -0
- package/dist/ir/int32-slots.js.map +1 -1
- package/dist/ir/ir.d.ts +59 -4
- package/dist/ir/ir.js +7 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-groups.d.ts +51 -0
- package/dist/ir/js-groups.js +394 -0
- package/dist/ir/js-groups.js.map +1 -0
- package/dist/ir/js-groups.test.d.ts +1 -0
- package/dist/ir/js-groups.test.js +555 -0
- package/dist/ir/js-groups.test.js.map +1 -0
- package/dist/ir/js-ic.js +30 -5
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +27 -1
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/node-index.d.ts +23 -6
- package/dist/ir/node-index.js +126 -49
- package/dist/ir/node-index.js.map +1 -1
- package/dist/ir/numeric-call-specialization.d.ts +4 -2
- package/dist/ir/numeric-call-specialization.js +40 -26
- package/dist/ir/numeric-call-specialization.js.map +1 -1
- package/dist/ir/paired-while-loops.d.ts +4 -2
- package/dist/ir/paired-while-loops.js +8 -2
- package/dist/ir/paired-while-loops.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +13 -4
- package/dist/ir/parameter-versions.js +63 -42
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/property-bags.d.ts +4 -2
- package/dist/ir/property-bags.js +22 -17
- package/dist/ir/property-bags.js.map +1 -1
- package/dist/ir/row-pairs.d.ts +4 -2
- package/dist/ir/row-pairs.js +12 -11
- package/dist/ir/row-pairs.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +87 -12
- package/dist/ir/runtime-features.js +263 -160
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +109 -139
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/runtime-jam-loops.d.ts +35 -0
- package/dist/ir/runtime-jam-loops.js +604 -0
- package/dist/ir/runtime-jam-loops.js.map +1 -0
- package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
- package/dist/ir/runtime-jam-loops.test.js +565 -0
- package/dist/ir/runtime-jam-loops.test.js.map +1 -0
- package/dist/ir/saturating-loop-jams.d.ts +4 -2
- package/dist/ir/saturating-loop-jams.js +11 -10
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +5 -2
- package/dist/ir/scalar-records.js +12 -2
- package/dist/ir/scalar-records.js.map +1 -1
- package/dist/ir/self-captures.d.ts +4 -2
- package/dist/ir/self-captures.js +32 -27
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/serialize.d.ts +6 -1
- package/dist/ir/serialize.js +87 -23
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -0
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/tiers.js +1 -0
- package/dist/ir/tiers.js.map +1 -1
- package/dist/ir/traverse.js +4 -0
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/typed-argument-clones.d.ts +30 -0
- package/dist/ir/typed-argument-clones.js +789 -0
- package/dist/ir/typed-argument-clones.js.map +1 -0
- package/dist/ir/union-arm-loops.d.ts +3 -0
- package/dist/ir/union-arm-loops.js +373 -0
- package/dist/ir/union-arm-loops.js.map +1 -0
- package/dist/ir/union-arm-loops.test.d.ts +1 -0
- package/dist/ir/union-arm-loops.test.js +230 -0
- package/dist/ir/union-arm-loops.test.js.map +1 -0
- package/dist/ir/validate.js +88 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/compiler-self-identity.d.ts +8 -2
- package/dist/library/compiler-self-identity.js +92 -18
- package/dist/library/compiler-self-identity.js.map +1 -1
- package/dist/library/compiler-self-identity.test.js +150 -3
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +5 -0
- package/dist/library/int-infer.js +15 -3
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/library/library-cache.d.ts +4 -0
- package/dist/library/library-cache.js +2 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +26 -0
- package/dist/library/library-cache.test.js.map +1 -1
- package/dist/library/prepare.js +99 -31
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/cache.d.ts +7 -0
- package/dist/native/cache.js +47 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cache.test.js +13 -1
- package/dist/native/cache.test.js.map +1 -1
- package/dist/native/cli.js +1 -1
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +18 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/executable-cache-open.test.js +31 -5
- package/dist/native/executable-cache-open.test.js.map +1 -1
- package/dist/native/executable-cache.d.ts +6 -1
- package/dist/native/executable-cache.js +7 -1
- package/dist/native/executable-cache.js.map +1 -1
- package/dist/native/prepare.d.ts +3 -0
- package/dist/native/prepare.js +43 -26
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/prepare.test.js +25 -3
- package/dist/native/prepare.test.js.map +1 -1
- package/dist/native/sanitizer.js +10 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +7 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +12 -0
- package/dist/node-islands/boundary.js +38 -6
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/boundary.test.d.ts +1 -0
- package/dist/node-islands/boundary.test.js +76 -0
- package/dist/node-islands/boundary.test.js.map +1 -0
- package/dist/node-islands/detect.d.ts +9 -0
- package/dist/node-islands/detect.js +110 -0
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +24 -0
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/graph-islands.d.ts +40 -0
- package/dist/node-islands/graph-islands.js +128 -0
- package/dist/node-islands/graph-islands.js.map +1 -0
- package/dist/node-islands/growth.d.ts +57 -0
- package/dist/node-islands/growth.js +205 -0
- package/dist/node-islands/growth.js.map +1 -0
- package/dist/node-islands/report.d.ts +12 -0
- package/dist/node-islands/report.js +28 -0
- package/dist/node-islands/report.js.map +1 -1
- package/dist/node-islands/report.test.js +2 -0
- package/dist/node-islands/report.test.js.map +1 -1
- package/dist/node-islands/rules.js +5 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +11 -2
- package/dist/node-islands/scan.js +61 -9
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/wasm/translate.js +11 -5
- package/dist/wasm/translate.js.map +1 -1
- package/dist/wasm/translate.test.js +35 -0
- package/dist/wasm/translate.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +184 -117
|
@@ -1742,6 +1742,26 @@ function lowerNetServerMethodCall(lowerer, call, access) {
|
|
|
1742
1742
|
loc,
|
|
1743
1743
|
};
|
|
1744
1744
|
}
|
|
1745
|
+
if (event === "clientError") {
|
|
1746
|
+
// (err, socket): a request the parser rejects, or a connection error,
|
|
1747
|
+
// goes to the listeners instead of the default answer.
|
|
1748
|
+
const cb = lowerer.lowerExpr(args[1]);
|
|
1749
|
+
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 2) {
|
|
1750
|
+
lowerer.unsupported("SC1090", args[1], "clientError listeners with more than two parameters or returning a value (use (err, socket) with a block body)");
|
|
1751
|
+
}
|
|
1752
|
+
const [err, socket] = cb.type.params;
|
|
1753
|
+
if ((err !== undefined && !(err.kind === "object" && err.className === "%Error")) ||
|
|
1754
|
+
(socket !== undefined && socket.kind !== "netSocket")) {
|
|
1755
|
+
lowerer.unsupported("SC1090", args[1], "clientError listeners whose parameters are not (err: Error, socket: Socket)");
|
|
1756
|
+
}
|
|
1757
|
+
return {
|
|
1758
|
+
kind: "libCall",
|
|
1759
|
+
fn: "http.serverOnClientError",
|
|
1760
|
+
args: [receiver, cb, once],
|
|
1761
|
+
type: VOID,
|
|
1762
|
+
loc,
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1745
1765
|
if (event === "sessionError") {
|
|
1746
1766
|
const cb = lowerer.lowerExpr(args[1]);
|
|
1747
1767
|
if (cb.type.kind !== "func" || cb.type.ret.kind !== "void" || cb.type.params.length > 2) {
|
|
@@ -1760,7 +1780,7 @@ function lowerNetServerMethodCall(lowerer, call, access) {
|
|
|
1760
1780
|
loc,
|
|
1761
1781
|
};
|
|
1762
1782
|
}
|
|
1763
|
-
lowerer.noLowering(`server.${name}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, args[0], '"connection", "request", "checkContinue", "checkExpectation", "drop", "stream", "session", "upgrade", "connect", "error", "close", "listening", and "sessionError" are the supported server events (as literals)');
|
|
1783
|
+
lowerer.noLowering(`server.${name}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, args[0], '"connection", "request", "checkContinue", "checkExpectation", "clientError", "drop", "stream", "session", "upgrade", "connect", "error", "close", "listening", and "sessionError" are the supported server events (as literals)');
|
|
1764
1784
|
}
|
|
1765
1785
|
if ((name === "off" || name === "removeListener") && args.length === 2) {
|
|
1766
1786
|
// server.off(event, cb): the LAST listener standing for the same
|
|
@@ -5243,6 +5263,62 @@ function runtimeRequestOptions(lowerer, optsNode, secureish) {
|
|
|
5243
5263
|
return null;
|
|
5244
5264
|
return lowerer.coerceToExpected(lowerer.lowerExpr(optsNode), DYN);
|
|
5245
5265
|
}
|
|
5266
|
+
/** Whether the second argument of a URL-form client call is the response
|
|
5267
|
+
* callback rather than an options value: a function literal, or a value
|
|
5268
|
+
* whose type is a function. Node's overloads disambiguate the same way —
|
|
5269
|
+
* a RequestOptions value is not callable. */
|
|
5270
|
+
function isResponseCallback(lowerer, node) {
|
|
5271
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node))
|
|
5272
|
+
return true;
|
|
5273
|
+
const type = lowerer.typeOf(node);
|
|
5274
|
+
// An untyped value stays on the callback side: Node decides
|
|
5275
|
+
// `typeof options === 'function'` at run time, and the two-argument URL
|
|
5276
|
+
// call has always taken an untyped callback (`http.get(url, cb)` with
|
|
5277
|
+
// `cb: any`). The options form needs a value the lowering can hand to
|
|
5278
|
+
// the merge, which an untyped value is not.
|
|
5279
|
+
if ((type.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0)
|
|
5280
|
+
return true;
|
|
5281
|
+
// A callable value is the callback (a function-typed variable, or a union
|
|
5282
|
+
// whose callable arm the checker widens). Everything else the mapper calls
|
|
5283
|
+
// a function is one too.
|
|
5284
|
+
if (lowerer.checker.getCallSignatures(type).length > 0)
|
|
5285
|
+
return true;
|
|
5286
|
+
const t = lowerer.mapTypeOf(type);
|
|
5287
|
+
// An OBJECT-SHAPED value is the options record: `RequestOptions` maps to
|
|
5288
|
+
// the checked-dynamic value, which the URL-form merge reads. A value with
|
|
5289
|
+
// no lowering type keeps the callback path it had.
|
|
5290
|
+
return t === null || t.kind === "func";
|
|
5291
|
+
}
|
|
5292
|
+
/** The options value of request(url, options[, cb]) as the checked-dynamic
|
|
5293
|
+
* record the runtime merges under the URL's fields: an object literal (the
|
|
5294
|
+
* merge reads it at run time, the same walk the options form's non-literal
|
|
5295
|
+
* path takes), or a value that converts to a dyn record. */
|
|
5296
|
+
function lowerUrlFormOptions(lowerer, node) {
|
|
5297
|
+
if (ts.isObjectLiteralExpression(node))
|
|
5298
|
+
return lowerDynObjectLiteral(lowerer, node);
|
|
5299
|
+
const t = lowerer.mapTypeOf(lowerer.typeOf(node));
|
|
5300
|
+
// `request(url, undefined, cb)`: Node's spread contributes no member, so
|
|
5301
|
+
// the URL's fields stand alone. The argument is still evaluated: an
|
|
5302
|
+
// expression with effects there runs, and its throw propagates, before
|
|
5303
|
+
// the request is built.
|
|
5304
|
+
if (t && (t.kind === "void" || t.kind === "undefinedT" || t.kind === "nullT")) {
|
|
5305
|
+
const loc = locOf(node);
|
|
5306
|
+
const value = lowerer.lowerExpr(node);
|
|
5307
|
+
if (value.kind === "unitLit")
|
|
5308
|
+
return dynUndefinedExpr(loc);
|
|
5309
|
+
return {
|
|
5310
|
+
kind: "seqExpr",
|
|
5311
|
+
stmts: [{ kind: "exprStmt", expr: value, loc }],
|
|
5312
|
+
result: dynUndefinedExpr(loc),
|
|
5313
|
+
type: DYN,
|
|
5314
|
+
loc,
|
|
5315
|
+
};
|
|
5316
|
+
}
|
|
5317
|
+
if (t && (t.kind === "dyn" || (t.kind === "record" && lowerer.dynConvertible(t)))) {
|
|
5318
|
+
return lowerer.coerceToExpected(lowerer.lowerExpr(node), DYN);
|
|
5319
|
+
}
|
|
5320
|
+
lowerer.noLowering(`the options of a URL-form request of '${t === null ? "unknown" : lowerer.fmt(t)}' values`, node, "pass an object literal or a Record value as the options");
|
|
5321
|
+
}
|
|
5246
5322
|
/** http.request(options[, cb]) / http.get(options[, cb]) — the client.
|
|
5247
5323
|
* The options argument must be an OBJECT LITERAL; the lowered keys are
|
|
5248
5324
|
* hostname/host, port, path, method, timeout, and headers (a nested
|
|
@@ -5271,10 +5347,18 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5271
5347
|
return binding.trueSecure ? c : { kind: "unary", op: "!", operand: c, type: BOOL, loc };
|
|
5272
5348
|
};
|
|
5273
5349
|
const args = expr.arguments.nodes;
|
|
5274
|
-
if (args.length < 1 || args.length >
|
|
5275
|
-
lowerer.noLowering(`${member} with ${args.length} arguments`, expr, `the supported
|
|
5350
|
+
if (args.length < 1 || args.length > 3) {
|
|
5351
|
+
lowerer.noLowering(`${member} with ${args.length} arguments`, expr, `the supported forms are ${member}(options[, callback]) and ${member}(url, options[, callback])`);
|
|
5276
5352
|
}
|
|
5277
5353
|
const optsNode = args[0];
|
|
5354
|
+
const optsType = lowerer.mapTypeOf(lowerer.typeOf(optsNode));
|
|
5355
|
+
/** The URL-string / URL-object target of the (url[, options][, cb]) forms. */
|
|
5356
|
+
const urlTarget = !ts.isObjectLiteralExpression(optsNode) &&
|
|
5357
|
+
(optsType?.kind === "string" || optsType?.kind === "url");
|
|
5358
|
+
if (args.length === 3 && !(urlTarget && binding === null)) {
|
|
5359
|
+
// Only the URL form has a middle options argument: (url, options, cb).
|
|
5360
|
+
lowerer.noLowering(`${member} with 3 arguments`, expr, `the supported forms are ${member}(options[, callback]) and ${member}(url, options[, callback])`);
|
|
5361
|
+
}
|
|
5278
5362
|
const runtimeOptions = binding === null ? runtimeRequestOptions(lowerer, optsNode, secureish) : null;
|
|
5279
5363
|
if (runtimeOptions !== null) {
|
|
5280
5364
|
// The options record is read at run time (the ClientRequest
|
|
@@ -5301,7 +5385,7 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5301
5385
|
};
|
|
5302
5386
|
}
|
|
5303
5387
|
if (!ts.isObjectLiteralExpression(optsNode)) {
|
|
5304
|
-
const t =
|
|
5388
|
+
const t = optsType;
|
|
5305
5389
|
if ((t?.kind === "string" || t?.kind === "url") && binding === null) {
|
|
5306
5390
|
// The URL-string form — http.get(`http://127.0.0.1:${port}/x`[, cb])
|
|
5307
5391
|
// and its https spelling: the runtime parses through the WHATWG unit
|
|
@@ -5325,6 +5409,45 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5325
5409
|
const methodLit = { kind: "strLit", value: "GET", type: STRING, loc };
|
|
5326
5410
|
const autoEnd = boolLit(member === "get", loc);
|
|
5327
5411
|
const isTls = secure === true;
|
|
5412
|
+
// The options-carrying forms: (url, options[, cb]). Node's merge
|
|
5413
|
+
// puts the URL's fields under the options' — `{...urlToHttpOptions(
|
|
5414
|
+
// new URL(url)), ...options}` — which the runtime does once, so the
|
|
5415
|
+
// options value travels as a checked-dynamic record (a literal
|
|
5416
|
+
// included: the merge reads it at run time, like Node).
|
|
5417
|
+
let urlOpts = null;
|
|
5418
|
+
let cbNode = null;
|
|
5419
|
+
if (args.length === 3) {
|
|
5420
|
+
urlOpts = args[1];
|
|
5421
|
+
cbNode = args[2];
|
|
5422
|
+
}
|
|
5423
|
+
else if (args.length === 2) {
|
|
5424
|
+
if (isResponseCallback(lowerer, args[1]))
|
|
5425
|
+
cbNode = args[1];
|
|
5426
|
+
else
|
|
5427
|
+
urlOpts = args[1];
|
|
5428
|
+
}
|
|
5429
|
+
if (urlOpts !== null) {
|
|
5430
|
+
const dynOpts = lowerUrlFormOptions(lowerer, urlOpts);
|
|
5431
|
+
if (cbNode === null) {
|
|
5432
|
+
const fn = isTls ? "https.requestUrlDyn" : "http.requestUrlDyn";
|
|
5433
|
+
return {
|
|
5434
|
+
kind: "libCall",
|
|
5435
|
+
fn,
|
|
5436
|
+
args: [url, dynOpts, autoEnd],
|
|
5437
|
+
type: HTTPCLIENTREQ_T,
|
|
5438
|
+
loc,
|
|
5439
|
+
};
|
|
5440
|
+
}
|
|
5441
|
+
const { cb } = lowerCallbackArg(lowerer, cbNode, "response callbacks", 1, (p) => p.kind === "httpReq", "use (res) or ()", [HTTPREQ_T]);
|
|
5442
|
+
const fn = isTls ? "https.requestUrlDynCb" : "http.requestUrlDynCb";
|
|
5443
|
+
return {
|
|
5444
|
+
kind: "libCall",
|
|
5445
|
+
fn,
|
|
5446
|
+
args: [url, dynOpts, autoEnd, cb],
|
|
5447
|
+
type: HTTPCLIENTREQ_T,
|
|
5448
|
+
loc,
|
|
5449
|
+
};
|
|
5450
|
+
}
|
|
5328
5451
|
if (args.length === 1) {
|
|
5329
5452
|
const fn = isTls ? "https.requestUrl" : "http.requestUrl";
|
|
5330
5453
|
return { kind: "libCall", fn, args: [url, methodLit, autoEnd], type: HTTPCLIENTREQ_T, loc };
|
|
@@ -5366,6 +5489,11 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5366
5489
|
let servername = null;
|
|
5367
5490
|
/** maxHeaderSize: the response head's size bound. */
|
|
5368
5491
|
let maxHeaderSize = null;
|
|
5492
|
+
/** protocol: the scheme the request claims. It dials nothing; Node
|
|
5493
|
+
* compares it against the agent's (the module's when there is no agent
|
|
5494
|
+
* value) and throws ERR_INVALID_PROTOCOL on a mismatch, so the check is
|
|
5495
|
+
* a runtime call before the request is built. */
|
|
5496
|
+
let protocol = null;
|
|
5369
5497
|
for (const prop of optsNode.properties.nodes) {
|
|
5370
5498
|
// Shorthand entries ({ port } for { port: port }) are the natural
|
|
5371
5499
|
// spelling at these call sites — the shorthand's VALUE lowering
|
|
@@ -5476,12 +5604,31 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5476
5604
|
signal = lowerer.coerceToExpected(v, DYN);
|
|
5477
5605
|
break;
|
|
5478
5606
|
}
|
|
5479
|
-
case "headers":
|
|
5480
|
-
|
|
5481
|
-
|
|
5607
|
+
case "headers": {
|
|
5608
|
+
// A shorthand `{ headers }` is the same option as `headers:
|
|
5609
|
+
// headers` — the entry's value, not the property symbol, is what
|
|
5610
|
+
// carries the record (lowerShorthandValue resolves it).
|
|
5611
|
+
const v = initializer !== null
|
|
5612
|
+
? lowerClientHeadersOption(lowerer, initializer)
|
|
5613
|
+
: lowerClientHeadersValue(lowerer, lowerer.lowerShorthandValue(prop), prop);
|
|
5614
|
+
headers = v;
|
|
5615
|
+
break;
|
|
5616
|
+
}
|
|
5617
|
+
case "protocol": {
|
|
5618
|
+
// Node's ClientRequest compares the declared scheme against the
|
|
5619
|
+
// agent's and throws ERR_INVALID_PROTOCOL before it dials; a
|
|
5620
|
+
// truthy non-matching value is the error, a falsy one means "the
|
|
5621
|
+
// agent's". The runtime check carries that comparison (any value
|
|
5622
|
+
// coerces, as Node's message does).
|
|
5623
|
+
const v = initializer !== null
|
|
5624
|
+
? lowerer.lowerExpr(initializer)
|
|
5625
|
+
: lowerer.lowerShorthandValue(prop);
|
|
5626
|
+
if (v.type.kind !== "string" && v.type.kind !== "dyn") {
|
|
5627
|
+
lowerer.noLowering(`a ${member} 'protocol' option of '${lowerer.fmt(v.type)}' values`, prop, "the option value must be a string ('http:' or 'https:')");
|
|
5482
5628
|
}
|
|
5483
|
-
|
|
5629
|
+
protocol = v;
|
|
5484
5630
|
break;
|
|
5631
|
+
}
|
|
5485
5632
|
case "createConnection": {
|
|
5486
5633
|
// The caller's own dialer: a `() => net.Socket` closure the
|
|
5487
5634
|
// runtime invokes once, synchronously (the proxy's loopback
|
|
@@ -5560,9 +5707,21 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5560
5707
|
}
|
|
5561
5708
|
default:
|
|
5562
5709
|
fenceOrDropOptionKey(lowerer, prop, key, member, secureish ? HTTPS_CLIENT_DOCUMENTED_OPTIONS : HTTP_CLIENT_DOCUMENTED_OPTIONS, secureish
|
|
5563
|
-
? "hostname/host, port, path, method, timeout, headers, agent, signal, maxHeaderSize, rejectUnauthorized, ca, and servername are the supported options"
|
|
5564
|
-
: "hostname/host, port, path, method, timeout, headers, agent, signal, and
|
|
5565
|
-
}
|
|
5710
|
+
? "hostname/host, port, path, method, timeout, headers, agent, signal, maxHeaderSize, protocol, rejectUnauthorized, ca, and servername are the supported options"
|
|
5711
|
+
: "hostname/host, port, path, method, timeout, headers, agent, signal, maxHeaderSize, and protocol are the supported options");
|
|
5712
|
+
}
|
|
5713
|
+
}
|
|
5714
|
+
/** A literal request carrying both a protocol option and an Agent VALUE
|
|
5715
|
+
* evaluates the agent expression once, into a hidden local: the protocol
|
|
5716
|
+
* check and the request then read the same object, as Node's options
|
|
5717
|
+
* object does. */
|
|
5718
|
+
let agentInit = null;
|
|
5719
|
+
let agentLocalId = null;
|
|
5720
|
+
if (protocol !== null && agentVal !== null) {
|
|
5721
|
+
const agentLocal = lowerer.declareHiddenLocal("%requestAgent", DYN);
|
|
5722
|
+
agentLocalId = agentLocal.id;
|
|
5723
|
+
agentInit = agentVal;
|
|
5724
|
+
agentVal = varRef(agentLocal.id, DYN, loc);
|
|
5566
5725
|
}
|
|
5567
5726
|
if (agentClose !== null) {
|
|
5568
5727
|
// agent: false → Node sends `Connection: close` (its one-shot Agent
|
|
@@ -5634,11 +5793,14 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5634
5793
|
// built request (an already aborted signal destroys it at once, like
|
|
5635
5794
|
// Node's constructor).
|
|
5636
5795
|
const withSignal = (request) => {
|
|
5637
|
-
if (signal === null && servername === null && maxHeaderSize === null)
|
|
5796
|
+
if (signal === null && servername === null && maxHeaderSize === null && protocol === null)
|
|
5638
5797
|
return request;
|
|
5639
5798
|
const local = lowerer.declareHiddenLocal("%requestOptions", HTTPCLIENTREQ_T);
|
|
5640
5799
|
const ref = () => varRef(local.id, HTTPCLIENTREQ_T, loc);
|
|
5641
5800
|
const steps = [];
|
|
5801
|
+
if (agentInit !== null && agentLocalId !== null) {
|
|
5802
|
+
steps.push({ kind: "varDecl", localId: agentLocalId, init: agentInit, loc });
|
|
5803
|
+
}
|
|
5642
5804
|
let signalRef = null;
|
|
5643
5805
|
if (signal !== null) {
|
|
5644
5806
|
const signalLocal = lowerer.declareHiddenLocal("%requestSignal", DYN);
|
|
@@ -5656,6 +5818,34 @@ function lowerHttpClientCall(lowerer, expr, member, loc, secure = false) {
|
|
|
5656
5818
|
loc,
|
|
5657
5819
|
});
|
|
5658
5820
|
}
|
|
5821
|
+
if (protocol !== null) {
|
|
5822
|
+
// Node's constructor order: the signal's type, then the agent's
|
|
5823
|
+
// scheme against the declared protocol, then the request itself.
|
|
5824
|
+
// An Agent VALUE is the agent whose protocol counts; without one,
|
|
5825
|
+
// the calling module's (or the binding's, at run time).
|
|
5826
|
+
const secureArg = binding !== null ? secureExpr() : boolLit(secure === true, loc);
|
|
5827
|
+
// The runtime compares the coerced value, as Node's message does.
|
|
5828
|
+
const protocolArg = lowerer.coerceToExpected(protocol, DYN);
|
|
5829
|
+
steps.push({
|
|
5830
|
+
kind: "exprStmt",
|
|
5831
|
+
expr: agentVal !== null
|
|
5832
|
+
? {
|
|
5833
|
+
kind: "libCall",
|
|
5834
|
+
fn: "http.clientProtocolCheckAgent",
|
|
5835
|
+
args: [protocolArg, secureArg, agentVal],
|
|
5836
|
+
type: VOID,
|
|
5837
|
+
loc,
|
|
5838
|
+
}
|
|
5839
|
+
: {
|
|
5840
|
+
kind: "libCall",
|
|
5841
|
+
fn: "http.clientProtocolCheck",
|
|
5842
|
+
args: [protocolArg, secureArg],
|
|
5843
|
+
type: VOID,
|
|
5844
|
+
loc,
|
|
5845
|
+
},
|
|
5846
|
+
loc,
|
|
5847
|
+
});
|
|
5848
|
+
}
|
|
5659
5849
|
if (servername !== null) {
|
|
5660
5850
|
steps.push({
|
|
5661
5851
|
kind: "exprStmt",
|
|
@@ -5779,13 +5969,18 @@ function lowerClientHeadersOption(lowerer, node) {
|
|
|
5779
5969
|
}
|
|
5780
5970
|
return { kind: "arrayLit", elems, type: arrayOf(STRING), loc };
|
|
5781
5971
|
}
|
|
5782
|
-
|
|
5972
|
+
return lowerClientHeadersValue(lowerer, lowerer.lowerExpr(node), node);
|
|
5973
|
+
}
|
|
5974
|
+
/** The non-literal arm: a Record whose values are strings (or
|
|
5975
|
+
* `string | undefined`), flattened by the interned env.pairs helper. */
|
|
5976
|
+
function lowerClientHeadersValue(lowerer, v, blame) {
|
|
5977
|
+
const loc = locOf(blame);
|
|
5783
5978
|
if (v.type.kind !== "record") {
|
|
5784
|
-
lowerer.noLowering(`request headers of '${lowerer.fmt(v.type)}' values`,
|
|
5979
|
+
lowerer.noLowering(`request headers of '${lowerer.fmt(v.type)}' values`, blame, "pass an object literal or a Record<string, string>");
|
|
5785
5980
|
}
|
|
5786
5981
|
const helper = lowerer.envToPairsHelper(v.type.shapeId, loc);
|
|
5787
5982
|
if (helper === null) {
|
|
5788
|
-
lowerer.noLowering(`request headers of '${lowerer.fmt(v.type)}' values`,
|
|
5983
|
+
lowerer.noLowering(`request headers of '${lowerer.fmt(v.type)}' values`, blame, "header values must be strings (or string | undefined)");
|
|
5789
5984
|
}
|
|
5790
5985
|
return { kind: "call", callee: helper, args: [v], type: arrayOf(STRING), loc };
|
|
5791
5986
|
}
|
|
@@ -5997,84 +6192,105 @@ function lowerHttpClientMethodCall(lowerer, call, access) {
|
|
|
5997
6192
|
};
|
|
5998
6193
|
}
|
|
5999
6194
|
if ((name === "on" || name === "once" || name === "addListener") && args.length === 2) {
|
|
6000
|
-
requireStatementPosition(lowerer, call, `request.${name}(...)`);
|
|
6001
6195
|
const once = boolLit(name === "once", loc);
|
|
6002
6196
|
const evT = lowerer.typeOf(args[0]);
|
|
6003
6197
|
const event = evT.isStringLiteralType() ? evT.value : null;
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
|
|
6013
|
-
|
|
6014
|
-
|
|
6015
|
-
|
|
6016
|
-
|
|
6017
|
-
|
|
6018
|
-
|
|
6019
|
-
|
|
6020
|
-
|
|
6021
|
-
|
|
6022
|
-
loc,
|
|
6023
|
-
};
|
|
6024
|
-
}
|
|
6025
|
-
if (event === "error") {
|
|
6026
|
-
const { cb } = lowerCallbackArg(lowerer, args[1], "error listeners", 1, (p) => p.kind === "object" && p.className === "%Error", "use (err) or ()", [ERROR_T]);
|
|
6027
|
-
return {
|
|
6028
|
-
kind: "libCall",
|
|
6029
|
-
fn: "http.clientOnError",
|
|
6030
|
-
args: [receiver, cb, once],
|
|
6031
|
-
type: VOID,
|
|
6032
|
-
loc,
|
|
6033
|
-
};
|
|
6034
|
-
}
|
|
6035
|
-
if (event === "timeout" ||
|
|
6036
|
-
event === "close" ||
|
|
6037
|
-
event === "finish" ||
|
|
6038
|
-
event === "abort" ||
|
|
6039
|
-
event === "continue") {
|
|
6040
|
-
const { cb } = lowerCallbackArg(lowerer, args[1], `${event} listeners`, 0, () => false, "use ()", []);
|
|
6041
|
-
const fn = event === "timeout"
|
|
6042
|
-
? "http.clientOnTimeout"
|
|
6043
|
-
: event === "close"
|
|
6044
|
-
? "http.clientOnClose"
|
|
6045
|
-
: event === "abort"
|
|
6046
|
-
? "http.clientOnAbort"
|
|
6047
|
-
: event === "continue"
|
|
6048
|
-
? "http.clientOnContinue"
|
|
6049
|
-
: "http.clientOnFinish";
|
|
6050
|
-
return { kind: "libCall", fn, args: [receiver, cb, once], type: VOID, loc };
|
|
6051
|
-
}
|
|
6052
|
-
if (event === "upgrade") {
|
|
6053
|
-
// The client half of the WebSocket handover: a 101 response fires
|
|
6054
|
-
// (res, socket, head) INSTEAD of 'response'; no listener destroys
|
|
6055
|
-
// the connection, Node's default.
|
|
6056
|
-
const cb = lowerer.lowerExpr(args[1]);
|
|
6057
|
-
if (cb.type.kind !== "func" || cb.type.params.length > 3) {
|
|
6058
|
-
lowerer.unsupported("SC1090", args[1], "upgrade listeners with more than three parameters (use (res, socket, head))");
|
|
6198
|
+
// Node's on() answers the request: unless the call is an expression
|
|
6199
|
+
// statement (a chained .on(...).end(), a concise arrow body), the
|
|
6200
|
+
// receiver is bound once and the registration answers it.
|
|
6201
|
+
const lowered = lowerer.lowerExpr(access.expression);
|
|
6202
|
+
const chained = ts.isExpressionStatement(call.parent)
|
|
6203
|
+
? null
|
|
6204
|
+
: lowerer.declareHiddenLocal("%request", lowered.type);
|
|
6205
|
+
const receiver = chained === null ? lowered : varRef(chained.id, lowered.type, loc);
|
|
6206
|
+
const register = () => {
|
|
6207
|
+
if (event === "response") {
|
|
6208
|
+
const { cb } = lowerCallbackArg(lowerer, args[1], "response listeners", 1, (p) => p.kind === "httpReq", "use (res) or ()", [HTTPREQ_T]);
|
|
6209
|
+
return {
|
|
6210
|
+
kind: "libCall",
|
|
6211
|
+
fn: "http.clientOnResponse",
|
|
6212
|
+
args: [receiver, cb, once],
|
|
6213
|
+
type: VOID,
|
|
6214
|
+
loc,
|
|
6215
|
+
};
|
|
6059
6216
|
}
|
|
6060
|
-
if (
|
|
6061
|
-
lowerer
|
|
6217
|
+
if (event === "socket") {
|
|
6218
|
+
const { cb } = lowerCallbackArg(lowerer, args[1], "socket listeners", 1, (p) => p.kind === "netSocket", "use (socket) or ()", [NETSOCKET_T]);
|
|
6219
|
+
return {
|
|
6220
|
+
kind: "libCall",
|
|
6221
|
+
fn: "http.clientOnSocket",
|
|
6222
|
+
args: [receiver, cb, once],
|
|
6223
|
+
type: VOID,
|
|
6224
|
+
loc,
|
|
6225
|
+
};
|
|
6062
6226
|
}
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6227
|
+
if (event === "error") {
|
|
6228
|
+
const { cb } = lowerCallbackArg(lowerer, args[1], "error listeners", 1, (p) => p.kind === "object" && p.className === "%Error", "use (err) or ()", [ERROR_T]);
|
|
6229
|
+
return {
|
|
6230
|
+
kind: "libCall",
|
|
6231
|
+
fn: "http.clientOnError",
|
|
6232
|
+
args: [receiver, cb, once],
|
|
6233
|
+
type: VOID,
|
|
6234
|
+
loc,
|
|
6235
|
+
};
|
|
6068
6236
|
}
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
|
|
6237
|
+
if (event === "timeout" ||
|
|
6238
|
+
event === "close" ||
|
|
6239
|
+
event === "finish" ||
|
|
6240
|
+
event === "abort" ||
|
|
6241
|
+
event === "continue") {
|
|
6242
|
+
const { cb } = lowerCallbackArg(lowerer, args[1], `${event} listeners`, 0, () => false, "use ()", []);
|
|
6243
|
+
const fn = event === "timeout"
|
|
6244
|
+
? "http.clientOnTimeout"
|
|
6245
|
+
: event === "close"
|
|
6246
|
+
? "http.clientOnClose"
|
|
6247
|
+
: event === "abort"
|
|
6248
|
+
? "http.clientOnAbort"
|
|
6249
|
+
: event === "continue"
|
|
6250
|
+
? "http.clientOnContinue"
|
|
6251
|
+
: "http.clientOnFinish";
|
|
6252
|
+
return { kind: "libCall", fn, args: [receiver, cb, once], type: VOID, loc };
|
|
6253
|
+
}
|
|
6254
|
+
if (event === "upgrade") {
|
|
6255
|
+
// The client half of the WebSocket handover: a 101 response fires
|
|
6256
|
+
// (res, socket, head) INSTEAD of 'response'; no listener destroys
|
|
6257
|
+
// the connection, Node's default.
|
|
6258
|
+
const cb = lowerer.lowerExpr(args[1]);
|
|
6259
|
+
if (cb.type.kind !== "func" || cb.type.params.length > 3) {
|
|
6260
|
+
lowerer.unsupported("SC1090", args[1], "upgrade listeners with more than three parameters (use (res, socket, head))");
|
|
6261
|
+
}
|
|
6262
|
+
if (cb.type.ret.kind !== "void") {
|
|
6263
|
+
lowerer.unsupported("SC1090", args[1], "upgrade listeners returning a value (make the callback body a block)");
|
|
6264
|
+
}
|
|
6265
|
+
const [p0, p1, p2] = cb.type.params;
|
|
6266
|
+
if ((p0 !== undefined && p0.kind !== "httpReq") ||
|
|
6267
|
+
(p1 !== undefined && p1.kind !== "netSocket") ||
|
|
6268
|
+
(p2 !== undefined && !(p2.kind === "bytes" && p2.elem === "u8"))) {
|
|
6269
|
+
lowerer.unsupported("SC1090", args[1], "upgrade listeners whose parameters are not (res: IncomingMessage, socket: Socket, head: Buffer)");
|
|
6270
|
+
}
|
|
6271
|
+
return {
|
|
6272
|
+
kind: "libCall",
|
|
6273
|
+
fn: "http.clientOnUpgrade",
|
|
6274
|
+
args: [receiver, cb, once],
|
|
6275
|
+
type: VOID,
|
|
6276
|
+
loc,
|
|
6277
|
+
};
|
|
6278
|
+
}
|
|
6279
|
+
lowerer.noLowering(`request.${name}(${event === null ? "non-literal event" : `"${event}"`}, ...)`, args[0], '"response", "socket", "upgrade", "error", "timeout", "finish", "abort", and "close" are the supported request events (as literals)');
|
|
6280
|
+
};
|
|
6281
|
+
const registration = register();
|
|
6282
|
+
if (chained === null)
|
|
6283
|
+
return registration;
|
|
6284
|
+
return {
|
|
6285
|
+
kind: "seqExpr",
|
|
6286
|
+
stmts: [
|
|
6287
|
+
{ kind: "varDecl", localId: chained.id, init: lowered, loc },
|
|
6288
|
+
{ kind: "exprStmt", expr: registration, loc },
|
|
6289
|
+
],
|
|
6290
|
+
result: varRef(chained.id, lowered.type, loc),
|
|
6291
|
+
type: lowered.type,
|
|
6292
|
+
loc,
|
|
6293
|
+
};
|
|
6078
6294
|
}
|
|
6079
6295
|
lowerer.noLowering(`ClientRequest.${name}`, call, "header reads/mutations, write, end, destroy, and on/once of response/error/timeout/close are the supported ClientRequest members", lowerer.checker.getSymbolAtLocation(access.name));
|
|
6080
6296
|
}
|