@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,4 +1,5 @@
|
|
|
1
1
|
import { BOOL, DYN, recordTextCodecClass, shapeHasAccessorSlots } from "../../ir/ir.js";
|
|
2
|
+
import { everyStmtList } from "../../ir/traverse.js";
|
|
2
3
|
import { varRef } from "../../ir/build.js";
|
|
3
4
|
import { isPerfEntryType } from "./builtins/performance.js";
|
|
4
5
|
/** Closed declared-field layouts with an ordinary data surface: the targets
|
|
@@ -19,6 +20,65 @@ export function recordMayKeepSource(lowerer, t) {
|
|
|
19
20
|
export function recordSourceTest(value, loc) {
|
|
20
21
|
return { kind: "libCall", fn: "record.sourceHas", args: [value], type: BOOL, loc };
|
|
21
22
|
}
|
|
23
|
+
/** Whether a checked conversion into `target` can leave a record holding
|
|
24
|
+
* undeclared source keys. The conversion reads one record at a time, so the
|
|
25
|
+
* records nested in a union arm, a promise, an array, a record field or an
|
|
26
|
+
* index signature's values count too (`Record<string, { x: string }>` keeps
|
|
27
|
+
* the sources of its closed values). Unions and records are memoized by id;
|
|
28
|
+
* one revisited on the current path answers `cycled`. */
|
|
29
|
+
function conversionKeepsSource(lowerer, target, scan) {
|
|
30
|
+
if (target.kind === "promise")
|
|
31
|
+
return conversionKeepsSource(lowerer, target.inner, scan);
|
|
32
|
+
if (target.kind === "array")
|
|
33
|
+
return conversionKeepsSource(lowerer, target.elem, scan);
|
|
34
|
+
if (target.kind === "record" && recordMayKeepSource(lowerer, target))
|
|
35
|
+
return { keeps: true, cycled: false };
|
|
36
|
+
let id;
|
|
37
|
+
let members;
|
|
38
|
+
if (target.kind === "union") {
|
|
39
|
+
id = target.unionId;
|
|
40
|
+
members = lowerer.unions.get(target.unionId)?.arms ?? [];
|
|
41
|
+
}
|
|
42
|
+
else if (target.kind === "record") {
|
|
43
|
+
id = target.shapeId;
|
|
44
|
+
const shape = lowerer.shapes.get(target.shapeId);
|
|
45
|
+
members = [
|
|
46
|
+
...(shape?.fields.map((field) => field.type) ?? []),
|
|
47
|
+
...(shape?.indexValue !== undefined ? [shape.indexValue] : []),
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
else
|
|
51
|
+
return { keeps: false, cycled: false };
|
|
52
|
+
const known = scan.memo.get(id);
|
|
53
|
+
if (known !== undefined)
|
|
54
|
+
return { keeps: known, cycled: false };
|
|
55
|
+
if (scan.visiting.has(id))
|
|
56
|
+
return { keeps: false, cycled: true };
|
|
57
|
+
scan.visiting.add(id);
|
|
58
|
+
let keeps = false;
|
|
59
|
+
let cycled = false;
|
|
60
|
+
for (const member of members) {
|
|
61
|
+
const answer = conversionKeepsSource(lowerer, member, scan);
|
|
62
|
+
keeps = keeps || answer.keeps;
|
|
63
|
+
cycled = cycled || answer.cycled;
|
|
64
|
+
if (keeps)
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
scan.visiting.delete(id);
|
|
68
|
+
if (!cycled || keeps)
|
|
69
|
+
scan.memo.set(id, keeps);
|
|
70
|
+
return { keeps, cycled: cycled && !keeps };
|
|
71
|
+
}
|
|
72
|
+
/** Whether `fn` holds a validated conversion that can note a record source:
|
|
73
|
+
* a `dynCheck` whose target accepts `recordMayKeepSource`. Only such a
|
|
74
|
+
* conversion creates the kept view `recordSourceTest` answers, so a program
|
|
75
|
+
* without one never needs a capture to consult the view. */
|
|
76
|
+
export function functionKeepsRecordSources(lowerer, fn, scan) {
|
|
77
|
+
return !everyStmtList(fn.body, {
|
|
78
|
+
expr: (expr) => expr.kind !== "dynCheck" || !conversionKeepsSource(lowerer, expr.type, scan).keeps,
|
|
79
|
+
stmt: () => true,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
22
82
|
/** A reflective answer over a record value that branches on its kept
|
|
23
83
|
* source: `staticAnswer` walks the declared fields, `viewAnswer` answers
|
|
24
84
|
* from the live checked view (typed `type`, the static answer's type). The
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-sources.js","sourceRoot":"","sources":["../../../src/frontend/lowering/record-sources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-sources.js","sourceRoot":"","sources":["../../../src/frontend/lowering/record-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
|
|
2
2
|
import type { Lowerer } from "./lowerer.js";
|
|
3
|
+
/** Whether two namespace references are the same module object: the bare
|
|
4
|
+
* node:path namespace IS its target platform's family (`path ===
|
|
5
|
+
* path.posix` on POSIX targets); other namespaces are their module. */
|
|
6
|
+
export declare function sameNamespace(lowerer: Lowerer, a: string, b: string): boolean;
|
|
3
7
|
/** Related class arms can store the same object under different tags, so
|
|
4
8
|
* comparing a union's tags and payloads alone can miss an identity. */
|
|
5
9
|
export declare function tagEqualityMayMissAlias(lowerer: Lowerer, type: IrType): boolean;
|
|
@@ -2,6 +2,7 @@ import { keyedHelperName } from "./stable-names.js";
|
|
|
2
2
|
import { boolLit, varRef } from "../../ir/build.js";
|
|
3
3
|
import { BOOL, DYN_HANDLE_KINDS, isUnitType, typeEquals, typeKey, } from "../../ir/ir.js";
|
|
4
4
|
import { unionComparison } from "./union-comparison.js";
|
|
5
|
+
import { builtinModuleConstOf } from "./surfaces.js";
|
|
5
6
|
const IDENTITY_KINDS = new Set([
|
|
6
7
|
"array",
|
|
7
8
|
"map",
|
|
@@ -17,12 +18,25 @@ const IDENTITY_KINDS = new Set([
|
|
|
17
18
|
"classval",
|
|
18
19
|
"moduleNs",
|
|
19
20
|
]);
|
|
21
|
+
/** Whether two namespace references are the same module object: the bare
|
|
22
|
+
* node:path namespace IS its target platform's family (`path ===
|
|
23
|
+
* path.posix` on POSIX targets); other namespaces are their module. */
|
|
24
|
+
export function sameNamespace(lowerer, a, b) {
|
|
25
|
+
const family = (id) => id !== "builtin:path"
|
|
26
|
+
? id
|
|
27
|
+
: builtinModuleConstOf(lowerer, "path", "sep") === "\\"
|
|
28
|
+
? "builtin:path/win32"
|
|
29
|
+
: "builtin:path/posix";
|
|
30
|
+
return family(a) === family(b);
|
|
31
|
+
}
|
|
20
32
|
function atomicEquality(lowerer, left, right, sameValue, loc) {
|
|
21
33
|
const a = left.type, b = right.type;
|
|
22
34
|
if ([a.kind, b.kind].some((kind) => kind === "dyn" || kind === "caught" || kind === "void"))
|
|
23
35
|
return null;
|
|
24
36
|
if (isUnitType(a) || isUnitType(b))
|
|
25
37
|
return boolLit(a.kind === b.kind, loc);
|
|
38
|
+
if (left.kind === "moduleNsRef" && right.kind === "moduleNsRef")
|
|
39
|
+
return boolLit(sameNamespace(lowerer, left.moduleId, right.moduleId), loc);
|
|
26
40
|
if (a.kind === "object" && b.kind === "object" && !typeEquals(a, b)) {
|
|
27
41
|
if (lowerer.isSubclassOf(a.className, b.className))
|
|
28
42
|
left = lowerer.upcastTo(left, b.className);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,IAAI,EACJ,gBAAgB,EAIhB,UAAU,EACV,UAAU,EACV,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"strict-equality.js","sourceRoot":"","sources":["../../../src/frontend/lowering/strict-equality.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,8 @@ export declare const TLS_SERVER_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
|
59
59
|
export declare const HTTP2_SECURE_SERVER_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
60
60
|
/** fs.watch's documented option keys. */
|
|
61
61
|
export declare const FS_WATCH_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
62
|
+
/** fs.watchFile's documented option keys. */
|
|
63
|
+
export declare const FS_WATCH_FILE_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
62
64
|
/** fs.readdirSync's documented option keys. */
|
|
63
65
|
export declare const FS_READDIR_DOCUMENTED_OPTIONS: ReadonlySet<string>;
|
|
64
66
|
/** fs.writeFileSync's documented option keys. */
|
|
@@ -175,20 +177,41 @@ export interface BuiltinModuleFn {
|
|
|
175
177
|
/** The function value's `length` when it is not the count of its
|
|
176
178
|
* required value parameters (`Math.max`'s 2 over its rest pack). */
|
|
177
179
|
valueLength?: number;
|
|
180
|
+
/** The order Node validates named value parameters in, when it is not
|
|
181
|
+
* the parameter order (basename checks its suffix first). */
|
|
182
|
+
valueOrder?: readonly number[];
|
|
183
|
+
/** The runtime entry point an untyped caller's adapter calls with every
|
|
184
|
+
* argument as given, when it validates them itself (resolve's last-first
|
|
185
|
+
* walk) or the value has no typed form (`only`: parse's record result,
|
|
186
|
+
* format's untyped pathObject). `args` are constants passed after the
|
|
187
|
+
* arguments (the win32 flag of an entry both path families share). */
|
|
188
|
+
checked?: {
|
|
189
|
+
fn: IrLibFn;
|
|
190
|
+
args: readonly boolean[];
|
|
191
|
+
result?: IrType;
|
|
192
|
+
only?: true;
|
|
193
|
+
};
|
|
178
194
|
/** The function value's `name` when it is not the member's
|
|
179
195
|
* (`process.cwd` is Node's `wrappedCwd`). */
|
|
180
196
|
valueName?: string;
|
|
181
197
|
}
|
|
198
|
+
/** `name` is the argument name Node's validator reports
|
|
199
|
+
* (ERR_INVALID_ARG_TYPE's 'The "path" argument ...'): the adapter accepts
|
|
200
|
+
* any value there and validates it, so a string parameter arrives checked
|
|
201
|
+
* and a dyn one reaches its valueFn as given. */
|
|
182
202
|
export type BuiltinValueParam = {
|
|
183
203
|
mode: "required";
|
|
184
204
|
type: IrType;
|
|
205
|
+
name?: string;
|
|
185
206
|
} | {
|
|
186
207
|
mode: "optional";
|
|
187
208
|
type: IrType;
|
|
188
209
|
defaultValue: string | number | undefined;
|
|
210
|
+
name?: string;
|
|
189
211
|
} | {
|
|
190
212
|
mode: "rest";
|
|
191
213
|
type: IrType;
|
|
214
|
+
name?: string;
|
|
192
215
|
};
|
|
193
216
|
/** Object helpers whose checked-native ABI is also their stored value ABI.
|
|
194
217
|
* These adapters operate on the live checked object/property table. */
|
|
@@ -339,6 +362,10 @@ export declare function stdlibGlobalMember(lowerer: Lowerer, access: ts.Property
|
|
|
339
362
|
* way; aliasing, say, `Math` would change nothing (its members lower
|
|
340
363
|
* by receiver too). Returns true when recognized. */
|
|
341
364
|
export declare function stdlibGlobalAliasNameOf(lowerer: Lowerer, init: ts.Expression | undefined): string | null;
|
|
365
|
+
/** The globals a `const x = <global>` snapshot aliases (stdlibGlobalAliasNameOf).
|
|
366
|
+
* Node defines every one of them, so an optional step over one of them
|
|
367
|
+
* (`proc?.env`, `globalThis.process?.env`) is the plain member read. */
|
|
368
|
+
export declare const SNAPSHOT_GLOBALS: ReadonlySet<string>;
|
|
342
369
|
/** `buffer.Buffer` through a buffer-module namespace binding (`var buffer
|
|
343
370
|
* = require('buffer')`): the module's Buffer IS the global constructor. */
|
|
344
371
|
export declare function bufferNamespaceMember(lowerer: Lowerer, expr: ts.Expression): boolean;
|
|
@@ -373,6 +373,12 @@ export const FS_WATCH_DOCUMENTED_OPTIONS = new Set([
|
|
|
373
373
|
"encoding",
|
|
374
374
|
"signal",
|
|
375
375
|
]);
|
|
376
|
+
/** fs.watchFile's documented option keys. */
|
|
377
|
+
export const FS_WATCH_FILE_DOCUMENTED_OPTIONS = new Set([
|
|
378
|
+
"interval",
|
|
379
|
+
"persistent",
|
|
380
|
+
"bigint",
|
|
381
|
+
]);
|
|
376
382
|
/** fs.readdirSync's documented option keys. */
|
|
377
383
|
export const FS_READDIR_DOCUMENTED_OPTIONS = new Set([
|
|
378
384
|
"encoding",
|
|
@@ -786,26 +792,27 @@ const PATH_MODULE_FNS = {
|
|
|
786
792
|
params: [STRING],
|
|
787
793
|
result: STRING,
|
|
788
794
|
variadicPack: true,
|
|
789
|
-
valueParams: [{ mode: "rest", type: STRING }],
|
|
795
|
+
valueParams: [{ mode: "rest", type: STRING, name: "path" }],
|
|
790
796
|
},
|
|
791
797
|
resolve: {
|
|
792
798
|
fn: "path.resolve",
|
|
793
799
|
params: [STRING],
|
|
794
800
|
result: STRING,
|
|
795
801
|
variadicPack: true,
|
|
796
|
-
valueParams: [{ mode: "rest", type: STRING }],
|
|
802
|
+
valueParams: [{ mode: "rest", type: STRING, name: "paths" }],
|
|
803
|
+
checked: { fn: "path.resolveValue", args: [false] },
|
|
797
804
|
},
|
|
798
805
|
normalize: {
|
|
799
806
|
fn: "path.normalize",
|
|
800
807
|
params: [STRING],
|
|
801
808
|
result: STRING,
|
|
802
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
809
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
803
810
|
},
|
|
804
811
|
dirname: {
|
|
805
812
|
fn: "path.dirname",
|
|
806
813
|
params: [STRING],
|
|
807
814
|
result: STRING,
|
|
808
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
815
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
809
816
|
},
|
|
810
817
|
basename: {
|
|
811
818
|
fn: "path.basename",
|
|
@@ -813,48 +820,65 @@ const PATH_MODULE_FNS = {
|
|
|
813
820
|
result: STRING,
|
|
814
821
|
defaults: [""],
|
|
815
822
|
valueParams: [
|
|
816
|
-
{ mode: "required", type: STRING },
|
|
817
|
-
{ mode: "optional", type: STRING, defaultValue: "" },
|
|
823
|
+
{ mode: "required", type: STRING, name: "path" },
|
|
824
|
+
{ mode: "optional", type: STRING, defaultValue: "", name: "suffix" },
|
|
818
825
|
],
|
|
826
|
+
valueOrder: [1, 0],
|
|
819
827
|
},
|
|
820
828
|
extname: {
|
|
821
829
|
fn: "path.extname",
|
|
822
830
|
params: [STRING],
|
|
823
831
|
result: STRING,
|
|
824
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
832
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
825
833
|
},
|
|
826
834
|
isAbsolute: {
|
|
827
835
|
fn: "path.isAbsolute",
|
|
828
836
|
params: [STRING],
|
|
829
837
|
result: BOOL,
|
|
830
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
838
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
831
839
|
},
|
|
832
840
|
relative: {
|
|
833
841
|
fn: "path.relative",
|
|
834
842
|
params: [STRING, STRING],
|
|
835
843
|
result: STRING,
|
|
836
844
|
valueParams: [
|
|
837
|
-
{ mode: "required", type: STRING },
|
|
838
|
-
{ mode: "required", type: STRING },
|
|
845
|
+
{ mode: "required", type: STRING, name: "from" },
|
|
846
|
+
{ mode: "required", type: STRING, name: "to" },
|
|
839
847
|
],
|
|
840
848
|
},
|
|
841
849
|
toNamespacedPath: {
|
|
842
850
|
fn: "path.toNamespacedPath",
|
|
843
851
|
params: [STRING],
|
|
844
852
|
result: STRING,
|
|
845
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
853
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
854
|
+
checked: { fn: "path.toNamespacedValue", args: [false], result: DYN },
|
|
846
855
|
},
|
|
847
856
|
matchesGlob: {
|
|
848
857
|
fn: "path.matchesGlob",
|
|
849
858
|
params: [STRING, STRING],
|
|
850
859
|
result: BOOL,
|
|
851
|
-
valueParams:
|
|
860
|
+
valueParams: [
|
|
861
|
+
{ mode: "required", type: STRING, name: "path" },
|
|
862
|
+
{ mode: "required", type: STRING, name: "pattern" },
|
|
863
|
+
],
|
|
852
864
|
},
|
|
853
865
|
// Special-cased (lowerPathParseCall / lowerPathFormatCall): the
|
|
854
866
|
// ParsedPath record and the pathObject argument follow the call site's
|
|
855
867
|
// mapped shapes.
|
|
856
|
-
parse: {
|
|
857
|
-
|
|
868
|
+
parse: {
|
|
869
|
+
fn: "path.parse",
|
|
870
|
+
params: [STRING],
|
|
871
|
+
result: VOID,
|
|
872
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
873
|
+
checked: { fn: "path.parseValue", args: [false], result: DYN, only: true },
|
|
874
|
+
},
|
|
875
|
+
format: {
|
|
876
|
+
fn: "path.format",
|
|
877
|
+
params: [],
|
|
878
|
+
result: STRING,
|
|
879
|
+
valueParams: [{ mode: "required", type: DYN, name: "pathObject" }],
|
|
880
|
+
checked: { fn: "path.formatValue", args: [false], result: DYN, only: true },
|
|
881
|
+
},
|
|
858
882
|
};
|
|
859
883
|
/** The win32 twins (scr_path.c's exact port of Node-v24 path.win32):
|
|
860
884
|
* "path/win32" everywhere, and the bare-module table when the build
|
|
@@ -865,26 +889,27 @@ const PATH_WIN32_MODULE_FNS = {
|
|
|
865
889
|
params: [STRING],
|
|
866
890
|
result: STRING,
|
|
867
891
|
variadicPack: true,
|
|
868
|
-
valueParams: [{ mode: "rest", type: STRING }],
|
|
892
|
+
valueParams: [{ mode: "rest", type: STRING, name: "path" }],
|
|
869
893
|
},
|
|
870
894
|
resolve: {
|
|
871
895
|
fn: "path.win32Resolve",
|
|
872
896
|
params: [STRING],
|
|
873
897
|
result: STRING,
|
|
874
898
|
variadicPack: true,
|
|
875
|
-
valueParams: [{ mode: "rest", type: STRING }],
|
|
899
|
+
valueParams: [{ mode: "rest", type: STRING, name: "paths" }],
|
|
900
|
+
checked: { fn: "path.resolveValue", args: [true] },
|
|
876
901
|
},
|
|
877
902
|
normalize: {
|
|
878
903
|
fn: "path.win32Normalize",
|
|
879
904
|
params: [STRING],
|
|
880
905
|
result: STRING,
|
|
881
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
906
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
882
907
|
},
|
|
883
908
|
dirname: {
|
|
884
909
|
fn: "path.win32Dirname",
|
|
885
910
|
params: [STRING],
|
|
886
911
|
result: STRING,
|
|
887
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
912
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
888
913
|
},
|
|
889
914
|
basename: {
|
|
890
915
|
fn: "path.win32Basename",
|
|
@@ -892,48 +917,65 @@ const PATH_WIN32_MODULE_FNS = {
|
|
|
892
917
|
result: STRING,
|
|
893
918
|
defaults: [""],
|
|
894
919
|
valueParams: [
|
|
895
|
-
{ mode: "required", type: STRING },
|
|
896
|
-
{ mode: "optional", type: STRING, defaultValue: "" },
|
|
920
|
+
{ mode: "required", type: STRING, name: "path" },
|
|
921
|
+
{ mode: "optional", type: STRING, defaultValue: "", name: "suffix" },
|
|
897
922
|
],
|
|
923
|
+
valueOrder: [1, 0],
|
|
898
924
|
},
|
|
899
925
|
extname: {
|
|
900
926
|
fn: "path.win32Extname",
|
|
901
927
|
params: [STRING],
|
|
902
928
|
result: STRING,
|
|
903
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
929
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
904
930
|
},
|
|
905
931
|
isAbsolute: {
|
|
906
932
|
fn: "path.win32IsAbsolute",
|
|
907
933
|
params: [STRING],
|
|
908
934
|
result: BOOL,
|
|
909
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
935
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
910
936
|
},
|
|
911
937
|
relative: {
|
|
912
938
|
fn: "path.win32Relative",
|
|
913
939
|
params: [STRING, STRING],
|
|
914
940
|
result: STRING,
|
|
915
941
|
valueParams: [
|
|
916
|
-
{ mode: "required", type: STRING },
|
|
917
|
-
{ mode: "required", type: STRING },
|
|
942
|
+
{ mode: "required", type: STRING, name: "from" },
|
|
943
|
+
{ mode: "required", type: STRING, name: "to" },
|
|
918
944
|
],
|
|
919
945
|
},
|
|
920
946
|
toNamespacedPath: {
|
|
921
947
|
fn: "path.win32ToNamespacedPath",
|
|
922
948
|
params: [STRING],
|
|
923
949
|
result: STRING,
|
|
924
|
-
valueParams: [{ mode: "required", type: STRING }],
|
|
950
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
951
|
+
checked: { fn: "path.toNamespacedValue", args: [true], result: DYN },
|
|
925
952
|
},
|
|
926
953
|
matchesGlob: {
|
|
927
954
|
fn: "path.win32MatchesGlob",
|
|
928
955
|
params: [STRING, STRING],
|
|
929
956
|
result: BOOL,
|
|
930
|
-
valueParams:
|
|
957
|
+
valueParams: [
|
|
958
|
+
{ mode: "required", type: STRING, name: "path" },
|
|
959
|
+
{ mode: "required", type: STRING, name: "pattern" },
|
|
960
|
+
],
|
|
931
961
|
},
|
|
932
962
|
// Special-cased (lowerPathParseCall / lowerPathFormatCall): the
|
|
933
963
|
// ParsedPath record and the pathObject argument follow the call site's
|
|
934
964
|
// mapped shapes.
|
|
935
|
-
parse: {
|
|
936
|
-
|
|
965
|
+
parse: {
|
|
966
|
+
fn: "path.win32Parse",
|
|
967
|
+
params: [STRING],
|
|
968
|
+
result: VOID,
|
|
969
|
+
valueParams: [{ mode: "required", type: STRING, name: "path" }],
|
|
970
|
+
checked: { fn: "path.parseValue", args: [true], result: DYN, only: true },
|
|
971
|
+
},
|
|
972
|
+
format: {
|
|
973
|
+
fn: "path.win32Format",
|
|
974
|
+
params: [],
|
|
975
|
+
result: STRING,
|
|
976
|
+
valueParams: [{ mode: "required", type: DYN, name: "pathObject" }],
|
|
977
|
+
checked: { fn: "path.formatValue", args: [true], result: DYN, only: true },
|
|
978
|
+
},
|
|
937
979
|
};
|
|
938
980
|
/** util.types's own keys in Node's order (Node 24.22.0). The table is the
|
|
939
981
|
* key census for Object.keys over util.types and node:util/types, including
|
|
@@ -1051,9 +1093,9 @@ function buildBuiltinModuleFns() {
|
|
|
1051
1093
|
// truncateSync's omitted len completes to 0 in lowerBuiltinModuleCall,
|
|
1052
1094
|
// like accessSync's mode.
|
|
1053
1095
|
truncateSync: { fn: "fs.truncateSync", params: [STRING, F64], result: VOID },
|
|
1054
|
-
// The
|
|
1055
|
-
//
|
|
1056
|
-
copyFileSync: { fn: "fs.copyFileSync", params: [STRING, STRING], result: VOID },
|
|
1096
|
+
// The mode is libuv's copyfile flag bits (COPYFILE_EXCL, ...); the
|
|
1097
|
+
// 2- and 3-argument forms lower in lowerBuiltinModuleCall.
|
|
1098
|
+
copyFileSync: { fn: "fs.copyFileSync", params: [STRING, STRING, F64], result: VOID },
|
|
1057
1099
|
// The callback form is special-cased in lowerBuiltinModuleCall: its
|
|
1058
1100
|
// Error | null parameter is program-shaped and needs an emitted
|
|
1059
1101
|
// adapter. The row still projects the static surface and routes the
|
|
@@ -1259,10 +1301,10 @@ function buildBuiltinModuleFns() {
|
|
|
1259
1301
|
params: [STRING, STRING],
|
|
1260
1302
|
result: { kind: "promise", inner: VOID },
|
|
1261
1303
|
},
|
|
1262
|
-
// The 2-argument
|
|
1304
|
+
// The 2- and 3-argument forms, like copyFileSync.
|
|
1263
1305
|
copyFile: {
|
|
1264
1306
|
fn: "fsp.copyFile",
|
|
1265
|
-
params: [STRING, STRING],
|
|
1307
|
+
params: [STRING, STRING, F64],
|
|
1266
1308
|
result: { kind: "promise", inner: VOID },
|
|
1267
1309
|
},
|
|
1268
1310
|
mkdtemp: { fn: "fsp.mkdtemp", params: [STRING], result: { kind: "promise", inner: STRING } },
|
|
@@ -1859,6 +1901,7 @@ function buildBuiltinModuleFns() {
|
|
|
1859
1901
|
result: STRING,
|
|
1860
1902
|
valueParams: [{ mode: "required", type: STRING }],
|
|
1861
1903
|
},
|
|
1904
|
+
unescapeBuffer: { fn: "qs.unescapeBuffer", params: [STRING, BOOL], result: BYTES_U8 },
|
|
1862
1905
|
},
|
|
1863
1906
|
// node:punycode (deprecated): punycode.js 2.1.0's conversions over
|
|
1864
1907
|
// strings (scr_url.c). ucs2.decode/encode are members of the module's
|
|
@@ -2051,15 +2094,20 @@ export const BUILTIN_MODULE_FN_ALIASES = {
|
|
|
2051
2094
|
],
|
|
2052
2095
|
// The string source's check before a URL destination converts
|
|
2053
2096
|
// (fs-paths.ts).
|
|
2054
|
-
copyFileSync: ["fs.checkPath"],
|
|
2097
|
+
copyFileSync: ["fs.checkPath", "fs.copyFileFlagsSync"],
|
|
2055
2098
|
renameSync: ["fs.checkPath"],
|
|
2056
|
-
copyFile: ["fs.checkPath"],
|
|
2099
|
+
copyFile: ["fs.checkPath", "fsp.copyFileFlags"],
|
|
2057
2100
|
rename: ["fs.checkPath"],
|
|
2058
2101
|
readlinkSync: ["fs.readlinkSyncStr", "fs.readlinkSyncBuffer"],
|
|
2059
2102
|
// The bytes-data form and the { mode } options form.
|
|
2060
2103
|
// The bytes-data form, the { mode } options form, and the
|
|
2061
2104
|
// file-descriptor data form.
|
|
2062
|
-
writeFileSync: [
|
|
2105
|
+
writeFileSync: [
|
|
2106
|
+
"fs.writeFileSyncBytes",
|
|
2107
|
+
"fs.writeFileModeSync",
|
|
2108
|
+
"fs.writeFileFlagsSync",
|
|
2109
|
+
"fs.writeFileSyncFd",
|
|
2110
|
+
],
|
|
2063
2111
|
appendFileSync: ["fs.appendFileSyncBytes"],
|
|
2064
2112
|
// The fs stream members (bytesRead/bytesWritten, pending, path, close).
|
|
2065
2113
|
createReadStream: [
|
|
@@ -2110,8 +2158,8 @@ export const BUILTIN_MODULE_FN_ALIASES = {
|
|
|
2110
2158
|
// The Buffer form (no encoding) and the runtime-encoding forms.
|
|
2111
2159
|
readFile: ["fsp.readFileBytes", "fsp.readFileEncoded"],
|
|
2112
2160
|
readlink: ["fsp.readlinkStr", "fsp.readlinkBuffer"],
|
|
2113
|
-
// The string-data { mode } options
|
|
2114
|
-
writeFile: ["fsp.writeFileMode"],
|
|
2161
|
+
// The string-data { mode, flag } options forms.
|
|
2162
|
+
writeFile: ["fsp.writeFileMode", "fsp.writeFileFlags"],
|
|
2115
2163
|
// The { withFileTypes: true } Dirent form.
|
|
2116
2164
|
readdir: ["fsp.readdirTypes"],
|
|
2117
2165
|
glob: ["fsp.globTypes"],
|
|
@@ -2154,7 +2202,7 @@ export const BUILTIN_MODULE_FN_ALIASES = {
|
|
|
2154
2202
|
},
|
|
2155
2203
|
os: {
|
|
2156
2204
|
// lowerOsUserInfoCall assembles the record from scalar libCalls.
|
|
2157
|
-
userInfo: ["os.userHomedir", "os.userShell"],
|
|
2205
|
+
userInfo: ["os.userHomedir", "os.userShell", "os.userUid", "os.userGid"],
|
|
2158
2206
|
// lowerOsCpusCall reads the cpusTake snapshot through its accessors.
|
|
2159
2207
|
cpus: ["os.cpusModel", "os.cpusField"],
|
|
2160
2208
|
},
|
|
@@ -2250,6 +2298,22 @@ function buildAmbientSurfaceFns() {
|
|
|
2250
2298
|
fns: ["fs.callbackValue", "fs.callbackCall", "fs.callbackGlob"],
|
|
2251
2299
|
note: "native filesystem callbacks, including stored platform adapter functions",
|
|
2252
2300
|
},
|
|
2301
|
+
// fs.watchFile/fs.unwatchFile lower in lowerFsWatchFileCall, ahead of
|
|
2302
|
+
// the module table.
|
|
2303
|
+
{
|
|
2304
|
+
id: "node-builtin.fs.watchFile",
|
|
2305
|
+
kind: "node-builtin",
|
|
2306
|
+
name: "fs.watchFile",
|
|
2307
|
+
fns: ["fs.watchFile"],
|
|
2308
|
+
note: "stat polling of a resolved path with Stats listeners, in statement position; bigint: true is refused",
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
id: "node-builtin.fs.unwatchFile",
|
|
2312
|
+
kind: "node-builtin",
|
|
2313
|
+
name: "fs.unwatchFile",
|
|
2314
|
+
fns: ["fs.unwatchFile"],
|
|
2315
|
+
note: "removes one listener, or every listener, from a resolved path's poller",
|
|
2316
|
+
},
|
|
2253
2317
|
// ── the Date slice (lowerDateCall/lowerNew): statics, construction,
|
|
2254
2318
|
// stored read-only values, calendar getters, and ISO formatting.
|
|
2255
2319
|
{
|
|
@@ -2544,7 +2608,12 @@ function buildAmbientSurfaceFns() {
|
|
|
2544
2608
|
id: "node-builtin.process.getBuiltinModule",
|
|
2545
2609
|
kind: "node-builtin",
|
|
2546
2610
|
name: "process.getBuiltinModule",
|
|
2547
|
-
fns: [
|
|
2611
|
+
fns: [
|
|
2612
|
+
"process.builtinId",
|
|
2613
|
+
"process.builtinModule",
|
|
2614
|
+
"process.builtinObject",
|
|
2615
|
+
"process.builtinUnsupported",
|
|
2616
|
+
],
|
|
2548
2617
|
note: "native path and os export subsets plus current-thread worker_threads metadata; other modules and exports throw SC2020",
|
|
2549
2618
|
},
|
|
2550
2619
|
{
|
|
@@ -3213,11 +3282,13 @@ export function stdlibMemberFence(lowerer, access) {
|
|
|
3213
3282
|
member === "toLocaleLowerCase" ||
|
|
3214
3283
|
member === "toLocaleUpperCase") {
|
|
3215
3284
|
hint =
|
|
3216
|
-
"
|
|
3217
|
-
"stance: code-unit order, no collation
|
|
3285
|
+
"collation and locale negotiation stay outside the static runtime (the localeCompare " +
|
|
3286
|
+
"stance: code-unit order, no collation) — what lowers: the composed " +
|
|
3218
3287
|
'new Intl.NumberFormat("en-US").format(x) and x.toLocaleString("en-US") with default ' +
|
|
3219
|
-
"options,
|
|
3220
|
-
"
|
|
3288
|
+
"options, their default-locale forms (x.toLocaleString(), d.toLocaleString(), " +
|
|
3289
|
+
"d.toLocaleTimeString()), and Intl.Segmenter with grapheme or word granularity; " +
|
|
3290
|
+
"sentence segmentation, resolvedOptions, and the remaining Intl constructors remain " +
|
|
3291
|
+
"unsupported";
|
|
3221
3292
|
}
|
|
3222
3293
|
else if (container === "Object" && member === "assign") {
|
|
3223
3294
|
hint =
|
|
@@ -3450,25 +3521,27 @@ export function stdlibGlobalAliasNameOf(lowerer, init) {
|
|
|
3450
3521
|
// These globals have provenance-aware call or member lowering, so a
|
|
3451
3522
|
// stable snapshot keeps the same dispatch as the original global.
|
|
3452
3523
|
// Other callable globals still use their ordinary value paths.
|
|
3453
|
-
return
|
|
3454
|
-
"process",
|
|
3455
|
-
"console",
|
|
3456
|
-
"globalThis",
|
|
3457
|
-
"performance",
|
|
3458
|
-
"Array",
|
|
3459
|
-
"Buffer",
|
|
3460
|
-
"BigInt",
|
|
3461
|
-
"Number",
|
|
3462
|
-
"String",
|
|
3463
|
-
"Boolean",
|
|
3464
|
-
// Code generation from strings throws Node's EvalError at every call
|
|
3465
|
-
// (code-generation.ts); zod 4 probes `const F = Function; new F("")`.
|
|
3466
|
-
"Function",
|
|
3467
|
-
"eval",
|
|
3468
|
-
].includes(name)
|
|
3469
|
-
? name
|
|
3470
|
-
: null;
|
|
3524
|
+
return SNAPSHOT_GLOBALS.has(name) ? name : null;
|
|
3471
3525
|
}
|
|
3526
|
+
/** The globals a `const x = <global>` snapshot aliases (stdlibGlobalAliasNameOf).
|
|
3527
|
+
* Node defines every one of them, so an optional step over one of them
|
|
3528
|
+
* (`proc?.env`, `globalThis.process?.env`) is the plain member read. */
|
|
3529
|
+
export const SNAPSHOT_GLOBALS = new Set([
|
|
3530
|
+
"process",
|
|
3531
|
+
"console",
|
|
3532
|
+
"globalThis",
|
|
3533
|
+
"performance",
|
|
3534
|
+
"Array",
|
|
3535
|
+
"Buffer",
|
|
3536
|
+
"BigInt",
|
|
3537
|
+
"Number",
|
|
3538
|
+
"String",
|
|
3539
|
+
"Boolean",
|
|
3540
|
+
// Code generation from strings throws Node's EvalError at every call
|
|
3541
|
+
// (code-generation.ts); zod 4 probes `const F = Function; new F("")`.
|
|
3542
|
+
"Function",
|
|
3543
|
+
"eval",
|
|
3544
|
+
]);
|
|
3472
3545
|
/** `buffer.Buffer` through a buffer-module namespace binding (`var buffer
|
|
3473
3546
|
* = require('buffer')`): the module's Buffer IS the global constructor. */
|
|
3474
3547
|
export function bufferNamespaceMember(lowerer, expr) {
|