@scriptc/compiler 0.4.6 → 0.4.7
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/events.d.ts +6 -1
- package/ambient/node-fallback/fs-promises.d.ts +1 -1
- package/ambient/node-fallback/fs.d.ts +54 -10
- package/ambient/node-fallback/http.d.ts +3 -1
- package/ambient/node-fallback/net.d.ts +19 -0
- package/ambient/node-fallback/querystring.d.ts +3 -3
- package/ambient/scriptc-node-fallback.d.ts +58 -13
- package/dist/backend/executable-features.js +13 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/immutability.d.ts +12 -1
- package/dist/backend/immutability.js +50 -4
- package/dist/backend/immutability.js.map +1 -1
- package/dist/backend/immutability.test.js +95 -1
- package/dist/backend/immutability.test.js.map +1 -1
- package/dist/backend/library-pack.js +2 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/linker.d.ts +11 -0
- package/dist/backend/linker.js +31 -3
- package/dist/backend/linker.js.map +1 -1
- package/dist/backend/lld.d.ts +7 -2
- package/dist/backend/lld.js +5 -3
- package/dist/backend/lld.js.map +1 -1
- package/dist/backend/lld.test.js +10 -4
- package/dist/backend/lld.test.js.map +1 -1
- package/dist/backend/llvm/constant-callbacks.test.js +50 -1
- package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
- package/dist/backend/llvm/cpu-dispatch.js +6 -5
- package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +53 -1
- package/dist/backend/llvm/dyn.js +221 -9
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emit-function.js +1 -1
- package/dist/backend/llvm/emit-function.js.map +1 -1
- package/dist/backend/llvm/emit-module.js +148 -50
- package/dist/backend/llvm/emit-module.js.map +1 -1
- package/dist/backend/llvm/emit-statements.js +39 -19
- package/dist/backend/llvm/emit-statements.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +29 -2
- package/dist/backend/llvm/emitter.js +86 -7
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +4 -1
- package/dist/backend/llvm/expr-calls.js +20 -4
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +209 -16
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +94 -11
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
- package/dist/backend/llvm/expr-stream-bridges.js +42 -2
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +16 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +206 -20
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/integer-values.d.ts +2 -0
- package/dist/backend/llvm/integer-values.js +6 -0
- package/dist/backend/llvm/integer-values.js.map +1 -1
- package/dist/backend/llvm/js-ic.d.ts +38 -0
- package/dist/backend/llvm/js-ic.js +295 -1
- package/dist/backend/llvm/js-ic.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +20 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +116 -11
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +136 -24
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +70 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +67 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/loop-entry-versions.d.ts +2 -2
- package/dist/backend/llvm/loop-entry-versions.js +43 -21
- package/dist/backend/llvm/loop-entry-versions.js.map +1 -1
- package/dist/backend/llvm/loop-state.d.ts +7 -1
- package/dist/backend/llvm/loop-state.js +20 -2
- package/dist/backend/llvm/loop-state.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +3 -1
- package/dist/backend/llvm/map-number-lookup.js +7 -3
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +52 -11
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/receiver-brackets.test.d.ts +1 -0
- package/dist/backend/llvm/receiver-brackets.test.js +68 -0
- package/dist/backend/llvm/receiver-brackets.test.js.map +1 -0
- package/dist/backend/llvm/record-views.d.ts +22 -2
- package/dist/backend/llvm/record-views.js +139 -10
- package/dist/backend/llvm/record-views.js.map +1 -1
- package/dist/backend/llvm/record-views.test.js +76 -0
- package/dist/backend/llvm/record-views.test.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +1 -0
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/shapes.d.ts +3 -0
- package/dist/backend/llvm/shapes.js +18 -3
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/shapes.test.js +4 -0
- package/dist/backend/llvm/shapes.test.js.map +1 -1
- package/dist/backend/llvm/speculative-integers.d.ts +10 -1
- package/dist/backend/llvm/speculative-integers.js +59 -8
- package/dist/backend/llvm/speculative-integers.js.map +1 -1
- package/dist/backend/llvm/unwind-abi.d.ts +3 -3
- package/dist/backend/llvm/unwind-abi.js +8 -3
- package/dist/backend/llvm/unwind-abi.js.map +1 -1
- package/dist/backend/llvm/walkers.js +1 -1
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +54 -0
- package/dist/backend/native/executable.js +87 -5
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/library.js +1 -1
- package/dist/backend/native/library.js.map +1 -1
- package/dist/backend/native/runtime-inputs.js +5 -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.js +3 -0
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +43 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/native-link-info.js +1 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-profile.d.ts +4 -1
- package/dist/backend/native-profile.js +12 -1
- package/dist/backend/native-profile.js.map +1 -1
- package/dist/backend/native-profile.test.js +10 -0
- package/dist/backend/native-profile.test.js.map +1 -1
- package/dist/backend/publication.d.ts +4 -1
- package/dist/backend/publication.js +4 -2
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-core.d.ts +31 -7
- package/dist/backend/runtime-pack-core.js +21 -1
- package/dist/backend/runtime-pack-core.js.map +1 -1
- package/dist/backend/runtime-pack-native.d.ts +18 -1
- package/dist/backend/runtime-pack-native.js +138 -29
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-native.test.js +166 -4
- package/dist/backend/runtime-pack-native.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +3 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.d.ts +7 -0
- package/dist/backend/runtime-pack.js +25 -3
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +3 -11
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/vendor-archives.d.ts +4 -1
- package/dist/backend/vendor-archives.js +264 -3
- package/dist/backend/vendor-archives.js.map +1 -1
- package/dist/backend/vendor-inputs.d.ts +36 -0
- package/dist/backend/vendor-inputs.js +42 -0
- package/dist/backend/vendor-inputs.js.map +1 -1
- package/dist/backend/vendor-inputs.test.js +28 -1
- package/dist/backend/vendor-inputs.test.js.map +1 -1
- package/dist/backend/warm-cache.js +2 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +7 -1
- package/dist/compat/fetch-profile.js +23 -10
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/compile-types.d.ts +7 -0
- package/dist/contracts/check.d.ts +3 -0
- package/dist/contracts/check.js +18 -5
- package/dist/contracts/check.js.map +1 -1
- package/dist/coverage/surface-manifest.js +1 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/codes.d.ts +6 -0
- package/dist/diagnostics/codes.js +6 -0
- package/dist/diagnostics/codes.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +50 -0
- package/dist/diagnostics/diagnostic.js +142 -3
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/diagnostics/dynamic-tier.js +3 -1
- package/dist/diagnostics/dynamic-tier.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +29 -0
- package/dist/executable/executable-cache.js +18 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +5 -1
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.d.ts +13 -3
- package/dist/executable/prepare.js +271 -18
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/early-errors.d.ts +14 -0
- package/dist/frontend/early-errors.js +305 -0
- package/dist/frontend/early-errors.js.map +1 -0
- package/dist/frontend/early-errors.test.d.ts +1 -0
- package/dist/frontend/early-errors.test.js +42 -0
- package/dist/frontend/early-errors.test.js.map +1 -0
- package/dist/frontend/inferred-js-diagnostics.test.js +23 -0
- package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
- package/dist/frontend/input-tracker.d.ts +47 -0
- package/dist/frontend/input-tracker.js +173 -36
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +86 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/js-inference.d.ts +2 -0
- package/dist/frontend/js-inference.js +18 -0
- package/dist/frontend/js-inference.js.map +1 -0
- package/dist/frontend/lowering/binding-analysis.d.ts +2 -1
- package/dist/frontend/lowering/binding-analysis.js +65 -1
- package/dist/frontend/lowering/binding-analysis.js.map +1 -1
- package/dist/frontend/lowering/builtin-calls.js +9 -0
- package/dist/frontend/lowering/builtin-calls.js.map +1 -1
- package/dist/frontend/lowering/builtin-namespaces.d.ts +1 -1
- package/dist/frontend/lowering/builtin-namespaces.js +19 -2
- package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process-methods.d.ts +7 -0
- package/dist/frontend/lowering/builtins/child-process-methods.js +50 -10
- package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
- package/dist/frontend/lowering/builtins/child-process.js +5 -1
- package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
- package/dist/frontend/lowering/builtins/dates.d.ts +1 -1
- package/dist/frontend/lowering/builtins/dates.js +23 -1
- package/dist/frontend/lowering/builtins/dates.js.map +1 -1
- package/dist/frontend/lowering/builtins/environment.d.ts +55 -0
- package/dist/frontend/lowering/builtins/environment.js +213 -2
- package/dist/frontend/lowering/builtins/environment.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem-calls.js +47 -16
- package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/filesystem.d.ts +25 -7
- package/dist/frontend/lowering/builtins/filesystem.js +185 -16
- package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-calls.js +39 -2
- package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
- package/dist/frontend/lowering/builtins/module-resolution.d.ts +8 -0
- package/dist/frontend/lowering/builtins/module-resolution.js +31 -5
- package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
- package/dist/frontend/lowering/builtins/operating-system.d.ts +3 -2
- package/dist/frontend/lowering/builtins/operating-system.js +5 -4
- package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
- package/dist/frontend/lowering/builtins/process.d.ts +17 -1
- package/dist/frontend/lowering/builtins/process.js +285 -19
- package/dist/frontend/lowering/builtins/process.js.map +1 -1
- package/dist/frontend/lowering/builtins/querystring.d.ts +8 -0
- package/dist/frontend/lowering/builtins/querystring.js +202 -18
- package/dist/frontend/lowering/builtins/querystring.js.map +1 -1
- package/dist/frontend/lowering/builtins/readline.js +21 -3
- package/dist/frontend/lowering/builtins/readline.js.map +1 -1
- package/dist/frontend/lowering/builtins/reflection.js +60 -1
- package/dist/frontend/lowering/builtins/reflection.js.map +1 -1
- package/dist/frontend/lowering/builtins/text-codecs.js +208 -59
- package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
- package/dist/frontend/lowering/builtins/url.js +20 -1
- package/dist/frontend/lowering/builtins/url.js.map +1 -1
- package/dist/frontend/lowering/builtins/v8.d.ts +5 -5
- package/dist/frontend/lowering/builtins/v8.js +7 -5
- package/dist/frontend/lowering/builtins/v8.js.map +1 -1
- package/dist/frontend/lowering/builtins/web-streams-dyn.d.ts +17 -2
- package/dist/frontend/lowering/builtins/web-streams-dyn.js +97 -9
- package/dist/frontend/lowering/builtins/web-streams-dyn.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +77 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/cjs-exports-object.d.ts +3 -0
- package/dist/frontend/lowering/cjs-exports-object.js +1 -1
- package/dist/frontend/lowering/cjs-exports-object.js.map +1 -1
- package/dist/frontend/lowering/cjs-inline-require.js +5 -0
- package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +5 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js +114 -0
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-protocols.js +59 -10
- package/dist/frontend/lowering/class-protocols.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.js +15 -0
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
- package/dist/frontend/lowering/class-views.d.ts +13 -0
- package/dist/frontend/lowering/class-views.js +51 -0
- package/dist/frontend/lowering/class-views.js.map +1 -0
- package/dist/frontend/lowering/coercions/function-adapters.d.ts +15 -1
- package/dist/frontend/lowering/coercions/function-adapters.js +54 -10
- package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
- package/dist/frontend/lowering/coercions/state.d.ts +7 -0
- package/dist/frontend/lowering/coercions/state.js +7 -0
- package/dist/frontend/lowering/coercions/state.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural-plans.js +60 -3
- package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
- package/dist/frontend/lowering/coercions/structural.js +29 -1
- package/dist/frontend/lowering/coercions/structural.js.map +1 -1
- package/dist/frontend/lowering/containers/array-callbacks.d.ts +8 -1
- package/dist/frontend/lowering/containers/array-callbacks.js +132 -28
- package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
- package/dist/frontend/lowering/containers/array-construction.js +16 -5
- package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
- package/dist/frontend/lowering/containers/array-methods.js +16 -0
- package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +4 -0
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/callback-arguments.d.ts +11 -0
- package/dist/frontend/lowering/containers/callback-arguments.js +53 -0
- package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
- package/dist/frontend/lowering/containers/filter-predicates.d.ts +10 -0
- package/dist/frontend/lowering/containers/filter-predicates.js +69 -3
- package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
- package/dist/frontend/lowering/containers/indexed-objects.js +46 -2
- package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
- package/dist/frontend/lowering/expressions/array-literals.d.ts +14 -0
- package/dist/frontend/lowering/expressions/array-literals.js +26 -10
- package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/binary.js +104 -12
- package/dist/frontend/lowering/expressions/binary.js.map +1 -1
- package/dist/frontend/lowering/expressions/element-access.js +121 -4
- package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/identifiers.js +143 -3
- package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.d.ts +11 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js +22 -1
- package/dist/frontend/lowering/expressions/keyed-field-targets.js.map +1 -1
- package/dist/frontend/lowering/expressions/narrowing.js +25 -1
- package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.d.ts +5 -1
- package/dist/frontend/lowering/expressions/object-literals.js +778 -229
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.js +66 -20
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/expressions/property-access.d.ts +31 -0
- package/dist/frontend/lowering/expressions/property-access.js +796 -12
- package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
- package/dist/frontend/lowering/expressions/relational.js +29 -1
- package/dist/frontend/lowering/expressions/relational.js.map +1 -1
- package/dist/frontend/lowering/expressions/typeof.js +17 -0
- package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
- package/dist/frontend/lowering/expressions/updates.js +132 -17
- package/dist/frontend/lowering/expressions/updates.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.d.ts +6 -0
- package/dist/frontend/lowering/frozen-records.js +10 -4
- package/dist/frontend/lowering/frozen-records.js.map +1 -1
- package/dist/frontend/lowering/frozen-records.test.d.ts +1 -0
- package/dist/frontend/lowering/frozen-records.test.js +44 -0
- package/dist/frontend/lowering/frozen-records.test.js.map +1 -0
- package/dist/frontend/lowering/function-names.d.ts +9 -0
- package/dist/frontend/lowering/function-names.js +95 -0
- package/dist/frontend/lowering/function-names.js.map +1 -0
- package/dist/frontend/lowering/function-returns.js +5 -3
- package/dist/frontend/lowering/function-returns.js.map +1 -1
- package/dist/frontend/lowering/generic-functions.d.ts +49 -0
- package/dist/frontend/lowering/generic-functions.js +365 -7
- package/dist/frontend/lowering/generic-functions.js.map +1 -1
- package/dist/frontend/lowering/global-values.d.ts +9 -0
- package/dist/frontend/lowering/global-values.js +44 -0
- package/dist/frontend/lowering/global-values.js.map +1 -1
- package/dist/frontend/lowering/handle-properties.js +34 -1
- package/dist/frontend/lowering/handle-properties.js.map +1 -1
- package/dist/frontend/lowering/key-order-witness.d.ts +54 -0
- package/dist/frontend/lowering/key-order-witness.js +546 -5
- package/dist/frontend/lowering/key-order-witness.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.js +14 -0
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +110 -1
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +36 -6
- package/dist/frontend/lowering/lower-builtin-values.js +332 -58
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +22 -1
- package/dist/frontend/lowering/lower-calls.js +427 -48
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-calls.test.js +78 -0
- package/dist/frontend/lowering/lower-calls.test.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +16 -5
- package/dist/frontend/lowering/lower-classes.js +168 -51
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -0
- package/dist/frontend/lowering/lower-event-emitter.js +383 -41
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +14 -0
- package/dist/frontend/lowering/lower-exprs.js +25 -0
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-functions.js +2 -0
- package/dist/frontend/lowering/lower-functions.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +80 -33
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +87 -25
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-node-island.d.ts +35 -4
- package/dist/frontend/lowering/lower-node-island.js +456 -61
- package/dist/frontend/lowering/lower-node-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +160 -9
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-shared-modules.js +13 -1
- package/dist/frontend/lowering/lower-shared-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stdlib.d.ts +3 -2
- package/dist/frontend/lowering/lower-stdlib.js +32 -18
- package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +21 -4
- package/dist/frontend/lowering/lower-stmts.js +580 -103
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +126 -8
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-timers.js +133 -21
- package/dist/frontend/lowering/lower-timers.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +139 -3
- package/dist/frontend/lowering/lowerer.js +579 -43
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +1 -1
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.js +15 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
- package/dist/frontend/lowering/new-target.js +2 -2
- package/dist/frontend/lowering/nullish-empty-pattern.d.ts +17 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js +118 -0
- package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -0
- package/dist/frontend/lowering/partial-assertions.d.ts +39 -0
- package/dist/frontend/lowering/partial-assertions.js +195 -0
- package/dist/frontend/lowering/partial-assertions.js.map +1 -0
- package/dist/frontend/lowering/primitive-wrappers.d.ts +34 -0
- package/dist/frontend/lowering/primitive-wrappers.js +220 -0
- package/dist/frontend/lowering/primitive-wrappers.js.map +1 -0
- package/dist/frontend/lowering/private-statics.d.ts +46 -0
- package/dist/frontend/lowering/private-statics.js +322 -0
- package/dist/frontend/lowering/private-statics.js.map +1 -0
- package/dist/frontend/lowering/record-sources.d.ts +12 -1
- package/dist/frontend/lowering/record-sources.js +60 -0
- package/dist/frontend/lowering/record-sources.js.map +1 -1
- package/dist/frontend/lowering/strict-equality.d.ts +4 -0
- package/dist/frontend/lowering/strict-equality.js +14 -0
- package/dist/frontend/lowering/strict-equality.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +27 -0
- package/dist/frontend/lowering/surfaces.js +135 -62
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.d.ts +128 -17
- package/dist/frontend/lowering/unit-journal.js +310 -53
- package/dist/frontend/lowering/unit-journal.js.map +1 -1
- package/dist/frontend/lowering/unit-journal.test.js +91 -3
- package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
- package/dist/frontend/lowering/unit-reuse.d.ts +92 -0
- package/dist/frontend/lowering/unit-reuse.js +1008 -0
- package/dist/frontend/lowering/unit-reuse.js.map +1 -0
- package/dist/frontend/lowering/width-lift.d.ts +12 -0
- package/dist/frontend/npm-file-import.test.d.ts +1 -0
- package/dist/frontend/npm-file-import.test.js +76 -0
- package/dist/frontend/npm-file-import.test.js.map +1 -0
- package/dist/frontend/npm-static.js +17 -2
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +9 -0
- package/dist/frontend/npm.js +82 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/pipeline.d.ts +4 -0
- package/dist/frontend/pipeline.js +68 -7
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program-node.d.ts +3 -0
- package/dist/frontend/program-node.js +13 -6
- package/dist/frontend/program-node.js.map +1 -1
- package/dist/frontend/program.d.ts +9 -0
- package/dist/frontend/program.js +159 -7
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance-core.js +4 -0
- package/dist/frontend/provenance-core.js.map +1 -1
- package/dist/frontend/services.d.ts +14 -0
- package/dist/frontend/services.js +52 -2
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +61 -1
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/shape-inference/analyze.d.ts +5 -0
- package/dist/frontend/shape-inference/analyze.js +104 -4
- package/dist/frontend/shape-inference/analyze.js.map +1 -1
- package/dist/frontend/shape-inference/domain.js +0 -1
- package/dist/frontend/shape-inference/domain.js.map +1 -1
- package/dist/frontend/shape-inference/index.js +5 -1
- package/dist/frontend/shape-inference/index.js.map +1 -1
- package/dist/frontend/shape-inference/memo.d.ts +2 -1
- package/dist/frontend/shape-inference/memo.js +6 -2
- package/dist/frontend/shape-inference/memo.js.map +1 -1
- package/dist/frontend/shape-inference/overlay.d.ts +1 -1
- package/dist/frontend/shape-inference/overlay.js +116 -2
- package/dist/frontend/shape-inference/overlay.js.map +1 -1
- package/dist/frontend/shape-inference/static-objects.js +11 -6
- package/dist/frontend/shape-inference/static-objects.js.map +1 -1
- package/dist/frontend/source-phase-imports.test.d.ts +1 -0
- package/dist/frontend/source-phase-imports.test.js +37 -0
- package/dist/frontend/source-phase-imports.test.js.map +1 -0
- package/dist/frontend/ts7/ast-node.d.ts +6 -1
- package/dist/frontend/ts7/ast-node.js +12 -0
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-wire-protocols.test.js +11 -3
- package/dist/frontend/ts7/ast-wire-protocols.test.js.map +1 -1
- package/dist/frontend/ts7/ast-wire.js +3 -5
- package/dist/frontend/ts7/ast-wire.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.d.ts +13 -0
- package/dist/frontend/ts7/checker-backend.js +84 -2
- package/dist/frontend/ts7/checker-backend.js.map +1 -1
- package/dist/frontend/ts7/checker-backend.test.js +126 -2
- package/dist/frontend/ts7/checker-backend.test.js.map +1 -1
- package/dist/frontend/ts7/program-host.d.ts +22 -1
- package/dist/frontend/ts7/program-host.js +49 -4
- package/dist/frontend/ts7/program-host.js.map +1 -1
- package/dist/frontend/ts7/program-host.test.js +83 -0
- package/dist/frontend/ts7/program-host.test.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.d.ts +16 -1
- package/dist/frontend/ts7/rpc-process.js +170 -92
- package/dist/frontend/ts7/rpc-process.js.map +1 -1
- package/dist/frontend/ts7/rpc-process.test.js +49 -21
- package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
- package/dist/frontend/tsc-codes.js +70 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +7 -2
- package/dist/frontend/type-mapper.js +148 -1
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +152 -8
- package/dist/index.js.map +1 -1
- package/dist/ir/api.d.ts +1 -1
- package/dist/ir/api.js +1 -1
- package/dist/ir/api.js.map +1 -1
- package/dist/ir/build.d.ts +3 -2
- package/dist/ir/build.js +4 -2
- package/dist/ir/build.js.map +1 -1
- package/dist/ir/builtin-effects.js +53 -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 +211 -10
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/codec.d.ts +82 -0
- package/dist/ir/codec.generated.d.ts +13 -0
- package/dist/ir/codec.generated.js +5274 -0
- package/dist/ir/codec.generated.js.map +1 -0
- package/dist/ir/codec.js +325 -0
- package/dist/ir/codec.js.map +1 -0
- package/dist/ir/codec.test.d.ts +1 -0
- package/dist/ir/codec.test.js +225 -0
- package/dist/ir/codec.test.js.map +1 -0
- package/dist/ir/fields.generated.d.ts +20 -10
- package/dist/ir/fields.generated.js +1031 -11
- package/dist/ir/fields.generated.js.map +1 -1
- package/dist/ir/fields.test.js +46 -2
- package/dist/ir/fields.test.js.map +1 -1
- package/dist/ir/function-references.d.ts +5 -4
- package/dist/ir/function-references.js +8 -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/inline-array-sources.js +4 -1
- package/dist/ir/inline-array-sources.js.map +1 -1
- package/dist/ir/inline-array-views.d.ts +13 -0
- package/dist/ir/inline-array-views.js +944 -0
- package/dist/ir/inline-array-views.js.map +1 -0
- package/dist/ir/inline-arrays.d.ts +7 -0
- package/dist/ir/inline-arrays.js +190 -55
- package/dist/ir/inline-arrays.js.map +1 -1
- package/dist/ir/inline-arrays.test.js +140 -2
- package/dist/ir/inline-arrays.test.js.map +1 -1
- package/dist/ir/integer-ranges.js +16 -6
- package/dist/ir/integer-ranges.js.map +1 -1
- package/dist/ir/ir.d.ts +75 -44
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/js-ic.d.ts +10 -9
- package/dist/ir/js-ic.js +28 -20
- package/dist/ir/js-ic.js.map +1 -1
- package/dist/ir/js-ic.test.js +10 -2
- package/dist/ir/js-ic.test.js.map +1 -1
- package/dist/ir/jsval.js +374 -63
- package/dist/ir/jsval.js.map +1 -1
- package/dist/ir/jsval.test.js +96 -2
- package/dist/ir/jsval.test.js.map +1 -1
- package/dist/ir/loop-entry-ranges.js +112 -9
- package/dist/ir/loop-entry-ranges.js.map +1 -1
- package/dist/ir/loop-entry-ranges.test.js +40 -0
- package/dist/ir/loop-entry-ranges.test.js.map +1 -1
- package/dist/ir/parameter-versions.d.ts +2 -1
- package/dist/ir/parameter-versions.js +3 -1
- package/dist/ir/parameter-versions.js.map +1 -1
- package/dist/ir/receiver-readers.js +58 -2
- package/dist/ir/receiver-readers.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +60 -1
- package/dist/ir/runtime-features.js +277 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/runtime-features.test.js +165 -1
- package/dist/ir/runtime-features.test.js.map +1 -1
- package/dist/ir/saturating-loop-jams.d.ts +8 -1
- package/dist/ir/saturating-loop-jams.js +46 -7
- package/dist/ir/saturating-loop-jams.js.map +1 -1
- package/dist/ir/saturating-loop-jams.test.js +39 -1
- package/dist/ir/saturating-loop-jams.test.js.map +1 -1
- package/dist/ir/self-captures.js +8 -1
- package/dist/ir/self-captures.js.map +1 -1
- package/dist/ir/self-captures.test.js +15 -0
- package/dist/ir/self-captures.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +3 -2
- package/dist/ir/serialize.js +6 -2
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.js +82 -4
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +46 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/ir-policy.js +3 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cache.js +2 -0
- package/dist/native/cache.js.map +1 -1
- package/dist/native/cli.js +2 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +8 -2
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +32 -3
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +53 -3
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/sanitizer.test.js +88 -2
- package/dist/native/sanitizer.test.js.map +1 -1
- package/dist/native/toolchain.js +9 -2
- package/dist/native/toolchain.js.map +1 -1
- package/dist/node-islands/boundary.d.ts +25 -1
- package/dist/node-islands/boundary.js +28 -2
- package/dist/node-islands/boundary.js.map +1 -1
- package/dist/node-islands/detect.d.ts +18 -1
- package/dist/node-islands/detect.js +365 -40
- package/dist/node-islands/detect.js.map +1 -1
- package/dist/node-islands/detect.test.js +151 -4
- package/dist/node-islands/detect.test.js.map +1 -1
- package/dist/node-islands/effect-gate.js +30 -20
- package/dist/node-islands/effect-gate.js.map +1 -1
- package/dist/node-islands/effect-gate.test.js +4 -1
- package/dist/node-islands/effect-gate.test.js.map +1 -1
- package/dist/node-islands/libnode.d.ts +1 -1
- package/dist/node-islands/libnode.js +1 -1
- package/dist/node-islands/libnode.js.map +1 -1
- package/dist/node-islands/modules.d.ts +28 -0
- package/dist/node-islands/modules.js +156 -0
- package/dist/node-islands/modules.js.map +1 -1
- package/dist/node-islands/modules.test.js +105 -1
- package/dist/node-islands/modules.test.js.map +1 -1
- package/dist/node-islands/policy.js +2 -3
- package/dist/node-islands/policy.js.map +1 -1
- package/dist/node-islands/probe-recorder.d.ts +1 -0
- package/dist/node-islands/probe-recorder.js +596 -0
- package/dist/node-islands/probe-recorder.js.map +1 -0
- package/dist/node-islands/probe-recorder.test.d.ts +1 -0
- package/dist/node-islands/probe-recorder.test.js +80 -0
- package/dist/node-islands/probe-recorder.test.js.map +1 -0
- 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 +4 -0
- package/dist/node-islands/rules.js.map +1 -1
- package/dist/node-islands/scan.d.ts +7 -1
- package/dist/node-islands/scan.js +51 -2
- package/dist/node-islands/scan.js.map +1 -1
- package/dist/node-islands/snapshot.d.ts +38 -1
- package/dist/node-islands/snapshot.js +165 -161
- package/dist/node-islands/snapshot.js.map +1 -1
- package/dist/node-islands/snapshot.test.js +63 -2
- package/dist/node-islands/snapshot.test.js.map +1 -1
- package/dist/node-islands/summary.js +8 -0
- package/dist/node-islands/summary.js.map +1 -1
- package/dist/node-islands/type-strip.d.ts +11 -0
- package/dist/node-islands/type-strip.js +157 -0
- package/dist/node-islands/type-strip.js.map +1 -0
- package/dist/node-islands/type-strip.test.d.ts +1 -0
- package/dist/node-islands/type-strip.test.js +31 -0
- package/dist/node-islands/type-strip.test.js.map +1 -0
- package/dist/project-config.d.ts +4 -0
- package/dist/project-config.js +19 -0
- package/dist/project-config.js.map +1 -1
- package/dist/project-config.test.js +10 -0
- package/dist/project-config.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +43 -11
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
1
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { closeSync, openSync, readSync, writeSync } from "node:fs";
|
|
3
|
+
import { closeSync, constants, mkdtempSync, openSync, readSync, rmSync, writeSync } from "node:fs";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
4
6
|
import { Ts7Wire } from "./rpc-wire.js";
|
|
7
|
+
// Node's public spawn API does not expose synchronous pipe descriptors, so
|
|
8
|
+
// the server's end of the channel is a named pipe on Windows and a FIFO pair
|
|
9
|
+
// elsewhere, both opened with openSync. Keep this host-specific boundary out
|
|
10
|
+
// of the statically compiled protocol.
|
|
5
11
|
const liveTransports = new Set();
|
|
6
12
|
const sleepBuffer = new Int32Array(new SharedArrayBuffer(4));
|
|
7
13
|
function closeLiveTransports() {
|
|
8
14
|
for (const transport of liveTransports)
|
|
9
15
|
transport.close();
|
|
10
16
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
function track(transport) {
|
|
18
|
+
if (liveTransports.size === 0)
|
|
19
|
+
process.on("exit", closeLiveTransports);
|
|
20
|
+
liveTransports.add(transport);
|
|
21
|
+
}
|
|
22
|
+
function untrack(transport) {
|
|
23
|
+
liveTransports.delete(transport);
|
|
24
|
+
if (liveTransports.size === 0)
|
|
25
|
+
process.removeListener("exit", closeLiveTransports);
|
|
26
|
+
}
|
|
27
|
+
/** A synchronous read or write that retries an interrupted call and waits
|
|
28
|
+
* out a full pipe. */
|
|
29
|
+
function transfer(operation, fd, buffer, offset, length) {
|
|
30
|
+
for (;;) {
|
|
31
|
+
try {
|
|
32
|
+
return operation(fd, buffer, offset, length, null);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const code = error.code;
|
|
36
|
+
if (code === "EINTR")
|
|
37
|
+
continue;
|
|
38
|
+
if (code !== "EAGAIN")
|
|
39
|
+
throw error;
|
|
40
|
+
Atomics.wait(sleepBuffer, 0, 0, 1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Windows: the server is a child process that creates a named pipe
|
|
45
|
+
* (`--pipe`), which this process opens. Windows has no zombie processes; the
|
|
46
|
+
* child's handle closes with the process. */
|
|
47
|
+
class Ts7NamedPipeIo {
|
|
14
48
|
child;
|
|
15
|
-
readFd = -1;
|
|
16
|
-
writeFd = -1;
|
|
17
49
|
pipeFd = -1;
|
|
18
50
|
closed = false;
|
|
19
51
|
spawnError;
|
|
20
52
|
constructor(executable, args) {
|
|
21
|
-
const windows = process.platform === "win32";
|
|
22
53
|
const pipe = `\\\\.\\pipe\\scriptc-ts7-${process.pid}-${randomUUID()}`;
|
|
23
|
-
this.child = spawn(executable,
|
|
24
|
-
stdio:
|
|
54
|
+
this.child = spawn(executable, [...args, "--pipe", pipe], {
|
|
55
|
+
stdio: ["ignore", "ignore", "inherit"],
|
|
25
56
|
windowsHide: true,
|
|
26
57
|
});
|
|
27
|
-
// A failed spawn emits asynchronously even when
|
|
28
|
-
//
|
|
58
|
+
// A failed spawn emits asynchronously even when the connection below has
|
|
59
|
+
// already thrown. Always consume that event.
|
|
29
60
|
this.child.on("error", (error) => {
|
|
30
61
|
this.spawnError = error;
|
|
31
62
|
});
|
|
32
63
|
try {
|
|
33
64
|
if (this.child.pid === undefined)
|
|
34
65
|
throw new Error(`Unable to start TypeScript server: ${executable}`);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
const code = error.code;
|
|
43
|
-
if (code !== "ENOENT" && code !== "EBUSY")
|
|
44
|
-
throw error;
|
|
45
|
-
Atomics.wait(sleepBuffer, 0, 0, 10);
|
|
46
|
-
}
|
|
66
|
+
for (let attempt = 0; attempt < 500; attempt++) {
|
|
67
|
+
try {
|
|
68
|
+
this.pipeFd = openSync(pipe, "r+");
|
|
69
|
+
break;
|
|
47
70
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
else {
|
|
54
|
-
const stdout = this.child.stdout;
|
|
55
|
-
const stdin = this.child.stdin;
|
|
56
|
-
const readHandle = stdout?._handle;
|
|
57
|
-
const writeHandle = stdin?._handle;
|
|
58
|
-
if (!stdout ||
|
|
59
|
-
!stdin ||
|
|
60
|
-
!readHandle ||
|
|
61
|
-
!writeHandle ||
|
|
62
|
-
!Number.isInteger(readHandle.fd) ||
|
|
63
|
-
readHandle.fd < 0 ||
|
|
64
|
-
!Number.isInteger(writeHandle.fd) ||
|
|
65
|
-
writeHandle.fd < 0 ||
|
|
66
|
-
typeof readHandle.setBlocking !== "function" ||
|
|
67
|
-
typeof writeHandle.setBlocking !== "function") {
|
|
68
|
-
throw new Error("TypeScript server: Node synchronous pipe handles are unavailable");
|
|
71
|
+
catch (error) {
|
|
72
|
+
const code = error.code;
|
|
73
|
+
if (code !== "ENOENT" && code !== "EBUSY")
|
|
74
|
+
throw error;
|
|
75
|
+
Atomics.wait(sleepBuffer, 0, 0, 10);
|
|
69
76
|
}
|
|
70
|
-
readHandle.setBlocking(true);
|
|
71
|
-
writeHandle.setBlocking(true);
|
|
72
|
-
this.child.stdout.pause();
|
|
73
|
-
stdout.unref();
|
|
74
|
-
stdin.unref();
|
|
75
|
-
this.readFd = readHandle.fd;
|
|
76
|
-
this.writeFd = writeHandle.fd;
|
|
77
77
|
}
|
|
78
|
+
if (this.pipeFd === -1)
|
|
79
|
+
throw new Error("TypeScript server: timed out connecting to named pipe");
|
|
78
80
|
this.child.unref();
|
|
79
|
-
|
|
80
|
-
process.on("exit", closeLiveTransports);
|
|
81
|
-
liveTransports.add(this);
|
|
81
|
+
track(this);
|
|
82
82
|
}
|
|
83
83
|
catch (error) {
|
|
84
84
|
this.close();
|
|
@@ -90,61 +90,29 @@ class Ts7ProcessIo {
|
|
|
90
90
|
throw this.spawnError;
|
|
91
91
|
if (this.closed)
|
|
92
92
|
throw new Error("TypeScript server transport is closed");
|
|
93
|
-
|
|
94
|
-
try {
|
|
95
|
-
return readSync(this.readFd, buffer, offset, length, null);
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
const code = error.code;
|
|
99
|
-
if (code === "EINTR")
|
|
100
|
-
continue;
|
|
101
|
-
if (code !== "EAGAIN")
|
|
102
|
-
throw error;
|
|
103
|
-
Atomics.wait(sleepBuffer, 0, 0, 1);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
93
|
+
return transfer(readSync, this.pipeFd, buffer, offset, length);
|
|
106
94
|
};
|
|
107
95
|
write = (buffer, offset, length) => {
|
|
108
96
|
if (this.spawnError)
|
|
109
97
|
throw this.spawnError;
|
|
110
98
|
if (this.closed)
|
|
111
99
|
throw new Error("TypeScript server transport is closed");
|
|
112
|
-
|
|
113
|
-
try {
|
|
114
|
-
return writeSync(this.writeFd, buffer, offset, length, null);
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
const code = error.code;
|
|
118
|
-
if (code === "EINTR")
|
|
119
|
-
continue;
|
|
120
|
-
if (code !== "EAGAIN")
|
|
121
|
-
throw error;
|
|
122
|
-
Atomics.wait(sleepBuffer, 0, 0, 1);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
100
|
+
return transfer(writeSync, this.pipeFd, buffer, offset, length);
|
|
125
101
|
};
|
|
126
102
|
close = () => {
|
|
127
103
|
if (this.closed)
|
|
128
104
|
return;
|
|
129
105
|
this.closed = true;
|
|
130
|
-
|
|
131
|
-
if (liveTransports.size === 0)
|
|
132
|
-
process.removeListener("exit", closeLiveTransports);
|
|
106
|
+
untrack(this);
|
|
133
107
|
if (this.pipeFd !== -1) {
|
|
134
108
|
try {
|
|
135
109
|
closeSync(this.pipeFd);
|
|
136
110
|
}
|
|
137
111
|
catch {
|
|
138
|
-
/* still
|
|
112
|
+
/* still end the child */
|
|
139
113
|
}
|
|
140
114
|
this.pipeFd = -1;
|
|
141
115
|
}
|
|
142
|
-
this.readFd = -1;
|
|
143
|
-
this.writeFd = -1;
|
|
144
|
-
this.child.stdout?.destroy();
|
|
145
|
-
this.child.stdin?.destroy();
|
|
146
|
-
// A failed spawn can leave libuv's process handle without a PID.
|
|
147
|
-
// Never signal it: PID zero has process-group semantics on POSIX.
|
|
148
116
|
// The channel is closed and all its work is discarded. SIGTERM invokes
|
|
149
117
|
// tsgo's cancellation handler, which can race EOF and print "context
|
|
150
118
|
// canceled" into an otherwise successful compile's stderr.
|
|
@@ -152,7 +120,117 @@ class Ts7ProcessIo {
|
|
|
152
120
|
this.child.kill("SIGKILL");
|
|
153
121
|
};
|
|
154
122
|
}
|
|
123
|
+
/* POSIX: the server is not this process's child. A shell that spawnSync runs
|
|
124
|
+
* and reaps creates two FIFOs, starts the server in the background with its
|
|
125
|
+
* standard input and output on them, prints its PID and exits; the server's
|
|
126
|
+
* parent becomes init (or the nearest subreaper), which reaps it. A child of
|
|
127
|
+
* this process would stay a zombie after it exits: Node reaps children only
|
|
128
|
+
* from its event loop, which a synchronous compile never returns to. The
|
|
129
|
+
* subshell points its standard streams at /dev/null before it opens the
|
|
130
|
+
* FIFOs, so spawnSync's output pipe closes as soon as the shell exits. A
|
|
131
|
+
* missing or non-executable server fails here, before any FIFO exists: the
|
|
132
|
+
* background subshell would otherwise block opening its input and the failure
|
|
133
|
+
* would only surface as end of file on the first read. */
|
|
134
|
+
const FIFO_LAUNCH = 'i=$1 o=$2; shift 2; command -v "$1" >/dev/null || exit 127; mkfifo -m 600 "$i" "$o" || exit 1; ' +
|
|
135
|
+
'( exec </dev/null >/dev/null; exec "$@" <"$i" >"$o" ) & echo $!';
|
|
136
|
+
/** How long a starting server may take to open its input, in milliseconds. */
|
|
137
|
+
const FIFO_OPEN_TIMEOUT = 10_000;
|
|
138
|
+
function processAlive(pid) {
|
|
139
|
+
try {
|
|
140
|
+
process.kill(pid, 0);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
return error.code === "EPERM";
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export class Ts7FifoIo {
|
|
148
|
+
readFd = -1;
|
|
149
|
+
writeFd = -1;
|
|
150
|
+
closed = false;
|
|
151
|
+
/** The server's process ID, for tests: it is never signaled. */
|
|
152
|
+
pid;
|
|
153
|
+
constructor(executable, args) {
|
|
154
|
+
const directory = mkdtempSync(join(tmpdir(), "scriptc-ts7-"));
|
|
155
|
+
const input = join(directory, "in");
|
|
156
|
+
const output = join(directory, "out");
|
|
157
|
+
try {
|
|
158
|
+
const shell = spawnSync("/bin/sh", ["-c", FIFO_LAUNCH, "sh", input, output, executable, ...args], { stdio: ["ignore", "pipe", "inherit"], encoding: "utf8" });
|
|
159
|
+
const pid = Number(shell.stdout?.trim());
|
|
160
|
+
if (shell.status !== 0 || !Number.isSafeInteger(pid) || pid <= 0)
|
|
161
|
+
throw new Error(`Unable to start TypeScript server: ${executable}`);
|
|
162
|
+
this.pid = pid;
|
|
163
|
+
// A non-blocking open fails with ENXIO until the server opens its end,
|
|
164
|
+
// so a server that exits as it starts cannot block this process.
|
|
165
|
+
let probe = -1;
|
|
166
|
+
for (let waited = 0; probe < 0; waited++) {
|
|
167
|
+
try {
|
|
168
|
+
probe = openSync(input, constants.O_WRONLY | constants.O_NONBLOCK);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
if (error.code !== "ENXIO")
|
|
172
|
+
throw error;
|
|
173
|
+
if (waited >= FIFO_OPEN_TIMEOUT || !processAlive(pid))
|
|
174
|
+
throw new Error(`Unable to start TypeScript server: ${executable}`);
|
|
175
|
+
Atomics.wait(sleepBuffer, 0, 0, 1);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
// The server reads now, so a blocking open returns at once.
|
|
180
|
+
this.writeFd = openSync(input, "w");
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
closeSync(probe);
|
|
184
|
+
}
|
|
185
|
+
// The server's shell opens its output right after its input.
|
|
186
|
+
this.readFd = openSync(output, "r");
|
|
187
|
+
track(this);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
this.close();
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
// Both ends are open, or the start failed: the names are not needed.
|
|
195
|
+
rmSync(directory, { recursive: true, force: true });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
read = (buffer, offset, length) => {
|
|
199
|
+
if (this.closed)
|
|
200
|
+
throw new Error("TypeScript server transport is closed");
|
|
201
|
+
return transfer(readSync, this.readFd, buffer, offset, length);
|
|
202
|
+
};
|
|
203
|
+
write = (buffer, offset, length) => {
|
|
204
|
+
if (this.closed)
|
|
205
|
+
throw new Error("TypeScript server transport is closed");
|
|
206
|
+
return transfer(writeSync, this.writeFd, buffer, offset, length);
|
|
207
|
+
};
|
|
208
|
+
/** Closing both FIFOs ends the session: the server reads end of file on
|
|
209
|
+
* its input and exits, and a write to its closed output ends it with
|
|
210
|
+
* SIGPIPE. It is never signaled, because once init has reaped it its PID
|
|
211
|
+
* can belong to another process. */
|
|
212
|
+
close = () => {
|
|
213
|
+
if (this.closed)
|
|
214
|
+
return;
|
|
215
|
+
this.closed = true;
|
|
216
|
+
untrack(this);
|
|
217
|
+
for (const fd of [this.writeFd, this.readFd]) {
|
|
218
|
+
if (fd === -1)
|
|
219
|
+
continue;
|
|
220
|
+
try {
|
|
221
|
+
closeSync(fd);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
/* close the other end too */
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
this.writeFd = -1;
|
|
228
|
+
this.readFd = -1;
|
|
229
|
+
};
|
|
230
|
+
}
|
|
155
231
|
export function spawnTs7Wire(executable, args) {
|
|
156
|
-
return new Ts7Wire(
|
|
232
|
+
return new Ts7Wire(process.platform === "win32"
|
|
233
|
+
? new Ts7NamedPipeIo(executable, args)
|
|
234
|
+
: new Ts7FifoIo(executable, args));
|
|
157
235
|
}
|
|
158
236
|
//# sourceMappingURL=rpc-process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-process.js","sourceRoot":"","sources":["../../../src/frontend/ts7/rpc-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-process.js","sourceRoot":"","sources":["../../../src/frontend/ts7/rpc-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,57 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import { expect, test } from "vitest";
|
|
4
|
+
import { Ts7FifoIo } from "./rpc-process.js";
|
|
4
5
|
const execFileAsync = promisify(execFile);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
6
|
+
const posix = process.platform !== "win32";
|
|
7
|
+
function alive(pid) {
|
|
8
|
+
try {
|
|
9
|
+
process.kill(pid, 0);
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return error.code === "EPERM";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
test.skipIf(!posix)("a FIFO server echoes, and exits when its transport closes", () => {
|
|
17
|
+
const io = new Ts7FifoIo("/bin/cat", []);
|
|
18
|
+
const bytes = Buffer.from("ping\n");
|
|
19
|
+
expect(io.write(bytes, 0, bytes.length)).toBe(bytes.length);
|
|
20
|
+
const reply = Buffer.alloc(16);
|
|
21
|
+
expect(reply.subarray(0, io.read(reply, 0, reply.length)).toString()).toBe("ping\n");
|
|
22
|
+
io.close();
|
|
23
|
+
io.close();
|
|
24
|
+
expect(() => io.read(reply, 0, 1)).toThrow("closed");
|
|
25
|
+
// The server is not this process's child: init reaps it once it exits.
|
|
26
|
+
const deadline = Date.now() + 5000;
|
|
27
|
+
while (alive(io.pid) && Date.now() < deadline)
|
|
28
|
+
execFileSync("sleep", ["0.01"]);
|
|
29
|
+
expect(alive(io.pid)).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
test.skipIf(!posix)("a missing FIFO server fails at construction and tracks nothing", () => {
|
|
32
|
+
const before = process.listenerCount("exit");
|
|
33
|
+
expect(() => new Ts7FifoIo("/nonexistent/scriptc-ts7-server", [])).toThrow("Unable to start TypeScript server");
|
|
34
|
+
expect(process.listenerCount("exit")).toBe(before);
|
|
35
|
+
});
|
|
36
|
+
test.skipIf(!posix)("replaced and closed checker servers leave no zombie children behind", async () => {
|
|
37
|
+
// Source budget 1: every parse after the first replaces the server.
|
|
38
|
+
const parserUrl = new URL("./source-parser.ts", import.meta.url).href;
|
|
39
|
+
const apiUrl = new URL("./rpc-api.ts", import.meta.url).href;
|
|
17
40
|
const host = `
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
41
|
+
import { execFileSync } from 'node:child_process';
|
|
42
|
+
import { Ts7SourceParser } from ${JSON.stringify(parserUrl)};
|
|
43
|
+
import { Ts7Api } from ${JSON.stringify(apiUrl)};
|
|
44
|
+
const parser = new Ts7SourceParser((options) => new Ts7Api(options), process.cwd(), 1);
|
|
45
|
+
for (let n = 0; n < 12; n++) parser.parse('f' + n + '.ts', 'export const v' + n + ' = ' + n + ';', 'ts');
|
|
46
|
+
parser.close();
|
|
47
|
+
const zombies = execFileSync('ps', ['-A', '-o', 'ppid=,stat='], { encoding: 'utf8' })
|
|
48
|
+
.split('\\n')
|
|
49
|
+
.map((line) => line.trim().split(/\\s+/))
|
|
50
|
+
.filter(([ppid, stat]) => Number(ppid) === process.pid && (stat ?? '').startsWith('Z'));
|
|
51
|
+
console.log(JSON.stringify({ zombies: zombies.length }));
|
|
24
52
|
`;
|
|
25
|
-
const result = await execFileAsync(process.execPath, ["--import", "tsx", "--input-type=module", "--eval", host], { timeout:
|
|
26
|
-
expect(result.stdout).
|
|
53
|
+
const result = await execFileAsync(process.execPath, ["--import", "tsx", "--input-type=module", "--eval", host], { timeout: 60_000 });
|
|
54
|
+
expect(JSON.parse(result.stdout)).toEqual({ zombies: 0 });
|
|
27
55
|
expect(result.stderr).toBe("");
|
|
28
56
|
});
|
|
29
57
|
//# sourceMappingURL=rpc-process.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-process.test.js","sourceRoot":"","sources":["../../../src/frontend/ts7/rpc-process.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-process.test.js","sourceRoot":"","sources":["../../../src/frontend/ts7/rpc-process.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,20 @@ export const ADOPTED_OPTIONS = [
|
|
|
35
35
|
"jsxImportSource",
|
|
36
36
|
"reactNamespace",
|
|
37
37
|
];
|
|
38
|
+
/* ── The early-error boundary (read this before relaxing a code) ────────
|
|
39
|
+
*
|
|
40
|
+
* Some of the codes below do double duty: TypeScript reports them for a
|
|
41
|
+
* JavaScript construct that ECMAScript ALSO makes a SyntaxError (a
|
|
42
|
+
* redeclared block binding, a declaration in a statement-only position).
|
|
43
|
+
* Relaxing such a code removes that construct's only rejection, so a
|
|
44
|
+
* parse-negative program would start compiling and running.
|
|
45
|
+
*
|
|
46
|
+
* frontend/early-errors.ts owns those rejections now, under their own
|
|
47
|
+
* preflight codes — SC0005 (duplicate lexical declaration in a block or
|
|
48
|
+
* switch statement list), SC0006 (lexical declaration colliding with a
|
|
49
|
+
* `var` in the same block), SC0007 (declaration in a single-statement
|
|
50
|
+
* position). A relaxation that needs one of those rules to keep firing must
|
|
51
|
+
* land with the matching rule in that pass, not rely on this table. */
|
|
38
52
|
export const JS_RELAXED_TSC_CODES = new Set([
|
|
39
53
|
// implicit any (params, variables, elements, this, returns, rest,
|
|
40
54
|
// construct signatures, index reads over shapes with no index
|
|
@@ -108,11 +122,24 @@ export const JS_RELAXED_TSC_CODES = new Set([
|
|
|
108
122
|
2488,
|
|
109
123
|
2721,
|
|
110
124
|
2722,
|
|
125
|
+
// the async-iterator protocol demand (2504: "must have a
|
|
126
|
+
// '[Symbol.asyncIterator]()' method that returns an async iterator").
|
|
127
|
+
// Whether a value is async-iterable is a runtime fact of untyped JS, exactly
|
|
128
|
+
// like the sync demand (2488) relaxed above: `for await` over a non-iterable
|
|
129
|
+
// value and `yield*` in an async generator both lower through the runtime
|
|
130
|
+
// protocol openers, which read the method, call it, and throw TypeError at
|
|
131
|
+
// the site when it is missing, uncallable, or returns a non-object — the
|
|
132
|
+
// same protocol failure Node reports. 2505 is the sync sibling on the typed
|
|
133
|
+
// lowering lanes and stays enforced.
|
|
134
|
+
2504,
|
|
111
135
|
// an UNUSED @ts-expect-error: the directive annotated an error visible
|
|
112
136
|
// under the project's OWN tsconfig world — scriptc's world deliberately
|
|
113
137
|
// differs (adopted options, hidden declaration twins), and an unused
|
|
114
138
|
// suppression changes nothing at runtime
|
|
115
139
|
2578,
|
|
140
|
+
// a primitive on the left of instanceof (`"x" instanceof String`): Node
|
|
141
|
+
// answers false, which the lowering folds
|
|
142
|
+
2358,
|
|
116
143
|
// a lib-floor demand (es2024+ members under the es2023 lib): the member
|
|
117
144
|
// types as the error-any and its use fences per site with the honest
|
|
118
145
|
// no-lowering story instead of gating the whole program
|
|
@@ -137,6 +164,16 @@ export const JS_RELAXED_TSC_CODES = new Set([
|
|
|
137
164
|
// binding types as any and reached uses fence instead of passing unchecked
|
|
138
165
|
2307,
|
|
139
166
|
2792,
|
|
167
|
+
// a write to a property declarations mark readonly (2540): `readonly` is
|
|
168
|
+
// a type annotation that Node never sees (Next.js's types mark
|
|
169
|
+
// process.env.NODE_ENV readonly; its server.js assigns it); the write
|
|
170
|
+
// lowers like any other and keeps its runtime behavior
|
|
171
|
+
2540,
|
|
172
|
+
// a resolved JavaScript module without declarations (7016): Node loads
|
|
173
|
+
// it like any other module; deployment trees such as Next.js standalone
|
|
174
|
+
// output ship runtime files only, so the binding types as any and its
|
|
175
|
+
// uses take the dynamic paths, as for 2307
|
|
176
|
+
7016,
|
|
140
177
|
// `delete` of a property the inference typed required (2790): JS deletes
|
|
141
178
|
// any configurable property, and the lowering checks each delete's
|
|
142
179
|
// receiver itself
|
|
@@ -149,6 +186,39 @@ export const JS_RELAXED_TSC_CODES = new Set([
|
|
|
149
186
|
// ride the checked-dynamic tree; unsupported operations report a compile-time diagnostic).
|
|
150
187
|
18046,
|
|
151
188
|
2571,
|
|
189
|
+
// UNDECLARED NAMES in a JavaScript source: Node resolves them at run time,
|
|
190
|
+
// never at compile time — a READ throws the catchable
|
|
191
|
+
// `ReferenceError: <name> is not defined` at the access (`typeof` of one
|
|
192
|
+
// answers "undefined"), and a sloppy-mode WRITE creates a global. The
|
|
193
|
+
// lowerer turns the read into `scr_undef_global_read` (exact Node text and
|
|
194
|
+
// behavior) and refuses the write with SC1091, which names the Node-island
|
|
195
|
+
// route the sloppy semantics need (the plan's D-2/D-5). TypeScript input
|
|
196
|
+
// keeps the compile error: an undeclared name there is a bug, not a
|
|
197
|
+
// runtime path. 2552 is 2304's did-you-mean spelling, and 18004 is the
|
|
198
|
+
// same unresolved name in SHORTHAND position (`{ x }`), which the checker
|
|
199
|
+
// reports against the property instead of the reference.
|
|
200
|
+
2304,
|
|
201
|
+
2552,
|
|
202
|
+
18004,
|
|
203
|
+
// ---- The checker's OPINIONS about legal JavaScript ----
|
|
204
|
+
// Each diagnostic below reports that a construct is unusual for TypeScript,
|
|
205
|
+
// never that it is illegal JavaScript: Node gives it a defined runtime
|
|
206
|
+
// meaning and the lowerer already builds it. TypeScript input keeps all
|
|
207
|
+
// three.
|
|
208
|
+
//
|
|
209
|
+
// 2695, an unused comma-operand left side (`(0, fn)`, `(0, [[x]] = [])`):
|
|
210
|
+
// the operator evaluates the left operand for its effects and yields the
|
|
211
|
+
// right one; the lowerer emits a sequence expression for it.
|
|
212
|
+
2695,
|
|
213
|
+
// 18050, `null`/`undefined` in an arithmetic or bitwise position
|
|
214
|
+
// (`null + undefined`, `null * 3`): ToNumber gives them 0 and NaN, which
|
|
215
|
+
// the numeric coercion implements for a unit literal; the demand comes
|
|
216
|
+
// from strictNullChecks, not from JavaScript.
|
|
217
|
+
18050,
|
|
218
|
+
// 7057, a `yield` in a generator with no return-type annotation: the
|
|
219
|
+
// generator protocol is untyped in JavaScript and the sent value is
|
|
220
|
+
// whatever the caller passes. The generator lowering owns the channels.
|
|
221
|
+
7057,
|
|
152
222
|
]);
|
|
153
223
|
/* Arithmetic on an `any` operand (TS2362/2363/2365 fire when the other
|
|
154
224
|
* side is bigint-ish): plain JS — relaxed only when 'any' participates. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsc-codes.js","sourceRoot":"","sources":["../../src/frontend/tsc-codes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tsc-codes.js","sourceRoot":"","sources":["../../src/frontend/tsc-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type JournalTable } from "./lowering/unit-journal.js";
|
|
2
2
|
import * as ts from "./ts7/adapter.js";
|
|
3
3
|
import type { IrRecordShape, IrType, IrUnionDef, IrUnionDiscriminant } from "../ir/ir.js";
|
|
4
4
|
import { typeKey } from "../ir/ir.js";
|
|
@@ -15,7 +15,7 @@ export declare const WEBCRYPTO_DYN_TYPES: ReadonlySet<string>;
|
|
|
15
15
|
* X509Certificate checks take them as checked-dynamic arguments
|
|
16
16
|
* (scr_lib.c, scr_pki.c, scr_x509.c). */
|
|
17
17
|
export declare const CRYPTO_KEY_OPTION_DYN_TYPES: ReadonlySet<string>;
|
|
18
|
-
export declare const FETCH_AMBIENT_TYPES: readonly ["Response", "Request", "ResponseInit", "RequestInit", "Event", "CustomEvent", "MessageEvent", "EventTarget", "AddEventListenerOptions", "EventListenerOptions", "EventInit", "CustomEventInit", "AbortController", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult", "TransformStream", "WritableStream", "WritableStreamDefaultWriter", "Blob", "File", "BlobPropertyBag", "FilePropertyBag", "BlobOptions", "FileOptions"];
|
|
18
|
+
export declare const FETCH_AMBIENT_TYPES: readonly ["Response", "Request", "ResponseInit", "RequestInit", "Event", "CustomEvent", "MessageEvent", "EventTarget", "AddEventListenerOptions", "EventListenerOptions", "EventInit", "CustomEventInit", "AbortController", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult", "TransformStream", "TransformStreamDefaultController", "WritableStream", "WritableStreamDefaultWriter", "WritableStreamDefaultController", "Blob", "File", "BlobPropertyBag", "FilePropertyBag", "BlobOptions", "FileOptions"];
|
|
19
19
|
/** node:crypto's Cipheriv and Decipheriv names in @types/node. */
|
|
20
20
|
export declare const CIPHER_TYPE_NAMES: ReadonlySet<string>;
|
|
21
21
|
/** True for the parseArgs type family that deliberately rides dyn. Exported
|
|
@@ -304,6 +304,11 @@ export type TypeParamTsResolver = (t: ts.Type) => ts.Type | null;
|
|
|
304
304
|
* once per Lowerer and threaded through the recursion — adding a hook means
|
|
305
305
|
* one new field here, not a new parameter at every call site. */
|
|
306
306
|
export interface TypeMapperCtx {
|
|
307
|
+
/** Whether the program creates primitive wrapper objects
|
|
308
|
+
* (primitive-wrappers.ts): then the boxed interface types (`String`,
|
|
309
|
+
* `Number`, `Boolean`) map to the checked-dynamic value instead of the
|
|
310
|
+
* primitive. Absent or false: every mapping is unchanged. */
|
|
311
|
+
primitiveWrappers?: () => boolean;
|
|
307
312
|
/** Node islands (scope-B NI-4): whether a type's values are island
|
|
308
313
|
* handles, which map to the `foreign` type (a dyn value). Absent in
|
|
309
314
|
* programs without islands. */
|