@geastack/compiler 1.0.15
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/LICENSE +202 -0
- package/README.md +149 -0
- package/dist/cli-analyze.d.ts +1 -0
- package/dist/cli-analyze.js +61 -0
- package/dist/cli-coverage.d.ts +1 -0
- package/dist/cli-coverage.js +329 -0
- package/dist/cli-emit.d.ts +10 -0
- package/dist/cli-emit.js +398 -0
- package/dist/cli-module-graph.d.ts +18 -0
- package/dist/cli-module-graph.js +123 -0
- package/dist/cli-package-source.d.ts +5 -0
- package/dist/cli-package-source.js +116 -0
- package/dist/cli-project.d.ts +2 -0
- package/dist/cli-project.js +60 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +199 -0
- package/dist/compiler.d.ts +228 -0
- package/dist/compiler.js +1029 -0
- package/dist/conversion/algebra.d.ts +218 -0
- package/dist/conversion/algebra.js +155 -0
- package/dist/conversion/build.d.ts +67 -0
- package/dist/conversion/build.js +1378 -0
- package/dist/conversion/derive.d.ts +37 -0
- package/dist/conversion/derive.js +260 -0
- package/dist/conversion/graph-validation.d.ts +8 -0
- package/dist/conversion/graph-validation.js +97 -0
- package/dist/conversion/native-callable-adapter.d.ts +13 -0
- package/dist/conversion/native-callable-adapter.js +53 -0
- package/dist/conversion/native-class-reference.d.ts +12 -0
- package/dist/conversion/native-class-reference.js +39 -0
- package/dist/conversion/native-payload-transport.d.ts +25 -0
- package/dist/conversion/native-payload-transport.js +33 -0
- package/dist/conversion/native-selection.d.ts +49 -0
- package/dist/conversion/native-selection.js +135 -0
- package/dist/conversion/native-sum.d.ts +42 -0
- package/dist/conversion/native-sum.js +115 -0
- package/dist/conversion/nodes.d.ts +55 -0
- package/dist/conversion/nodes.js +91 -0
- package/dist/conversion/operand-view.d.ts +14 -0
- package/dist/conversion/operand-view.js +20 -0
- package/dist/conversion/record-view.d.ts +157 -0
- package/dist/conversion/record-view.js +273 -0
- package/dist/conversion/registry.d.ts +217 -0
- package/dist/conversion/registry.js +1 -0
- package/dist/diagnostics/model.d.ts +76 -0
- package/dist/diagnostics/model.js +60 -0
- package/dist/diagnostics/sweep.d.ts +31 -0
- package/dist/diagnostics/sweep.js +112 -0
- package/dist/identity/ids.d.ts +179 -0
- package/dist/identity/ids.js +212 -0
- package/dist/ir/absent-class-arm.d.ts +48 -0
- package/dist/ir/absent-class-arm.js +157 -0
- package/dist/ir/borrow-effects.d.ts +23 -0
- package/dist/ir/borrow-effects.js +151 -0
- package/dist/ir/borrowed-call-arguments.d.ts +40 -0
- package/dist/ir/borrowed-call-arguments.js +117 -0
- package/dist/ir/build.d.ts +168 -0
- package/dist/ir/build.js +459 -0
- package/dist/ir/call-dispatch.d.ts +38 -0
- package/dist/ir/call-dispatch.js +502 -0
- package/dist/ir/call-entry.d.ts +142 -0
- package/dist/ir/call-entry.js +386 -0
- package/dist/ir/callable-class-flow.d.ts +27 -0
- package/dist/ir/callable-class-flow.js +1386 -0
- package/dist/ir/callable-field-slots.d.ts +22 -0
- package/dist/ir/callable-field-slots.js +166 -0
- package/dist/ir/callable-identity-demand.d.ts +52 -0
- package/dist/ir/callable-identity-demand.js +460 -0
- package/dist/ir/callable-member-candidates.d.ts +9 -0
- package/dist/ir/callable-member-candidates.js +39 -0
- package/dist/ir/callable-records.d.ts +21 -0
- package/dist/ir/callable-records.js +411 -0
- package/dist/ir/captures.d.ts +26 -0
- package/dist/ir/captures.js +335 -0
- package/dist/ir/certificate.d.ts +45 -0
- package/dist/ir/certificate.js +47 -0
- package/dist/ir/certify/carrier-keys.d.ts +73 -0
- package/dist/ir/certify/carrier-keys.js +221 -0
- package/dist/ir/certify/function-source.d.ts +4 -0
- package/dist/ir/certify/function-source.js +28 -0
- package/dist/ir/certify/has-property-key.d.ts +88 -0
- package/dist/ir/certify/has-property-key.js +116 -0
- package/dist/ir/certify/instanceof-key.d.ts +24 -0
- package/dist/ir/certify/instanceof-key.js +35 -0
- package/dist/ir/certify/property-access-keys.d.ts +172 -0
- package/dist/ir/certify/property-access-keys.js +291 -0
- package/dist/ir/certify/property-access.d.ts +3 -0
- package/dist/ir/certify/property-access.js +597 -0
- package/dist/ir/certify/runtime-helper.d.ts +3 -0
- package/dist/ir/certify/runtime-helper.js +326 -0
- package/dist/ir/certify/typeof-operand.d.ts +14 -0
- package/dist/ir/certify/typeof-operand.js +16 -0
- package/dist/ir/certify.d.ts +123 -0
- package/dist/ir/certify.js +481 -0
- package/dist/ir/class-evaluation.d.ts +26 -0
- package/dist/ir/class-evaluation.js +50 -0
- package/dist/ir/class-static-fields.d.ts +60 -0
- package/dist/ir/class-static-fields.js +108 -0
- package/dist/ir/construct-entry.d.ts +26 -0
- package/dist/ir/construct-entry.js +117 -0
- package/dist/ir/dead-values.d.ts +90 -0
- package/dist/ir/dead-values.js +184 -0
- package/dist/ir/deferral.d.ts +99 -0
- package/dist/ir/deferral.js +409 -0
- package/dist/ir/dense-loops.d.ts +230 -0
- package/dist/ir/dense-loops.js +697 -0
- package/dist/ir/dominance.d.ts +82 -0
- package/dist/ir/dominance.js +268 -0
- package/dist/ir/emission-representations.d.ts +71 -0
- package/dist/ir/emission-representations.js +350 -0
- package/dist/ir/facts.d.ts +218 -0
- package/dist/ir/facts.js +181 -0
- package/dist/ir/fixed-data-definition.d.ts +19 -0
- package/dist/ir/fixed-data-definition.js +49 -0
- package/dist/ir/generator-split.d.ts +38 -0
- package/dist/ir/generator-split.js +329 -0
- package/dist/ir/hoist.d.ts +55 -0
- package/dist/ir/hoist.js +375 -0
- package/dist/ir/instantiation.d.ts +61 -0
- package/dist/ir/instantiation.js +137 -0
- package/dist/ir/integer-storage.d.ts +170 -0
- package/dist/ir/integer-storage.js +822 -0
- package/dist/ir/integers.d.ts +161 -0
- package/dist/ir/integers.js +539 -0
- package/dist/ir/integrity-restrictions.d.ts +50 -0
- package/dist/ir/integrity-restrictions.js +118 -0
- package/dist/ir/local-iterators.d.ts +4 -0
- package/dist/ir/local-iterators.js +27 -0
- package/dist/ir/lower-allocation.d.ts +4 -0
- package/dist/ir/lower-allocation.js +325 -0
- package/dist/ir/lower-completion.d.ts +15 -0
- package/dist/ir/lower-completion.js +25 -0
- package/dist/ir/lower-destructuring.d.ts +5 -0
- package/dist/ir/lower-destructuring.js +693 -0
- package/dist/ir/lower-element.d.ts +29 -0
- package/dist/ir/lower-element.js +111 -0
- package/dist/ir/lower-exceptions.d.ts +47 -0
- package/dist/ir/lower-exceptions.js +92 -0
- package/dist/ir/lower-flow.d.ts +137 -0
- package/dist/ir/lower-flow.js +600 -0
- package/dist/ir/lower-graph.d.ts +218 -0
- package/dist/ir/lower-graph.js +687 -0
- package/dist/ir/lower-invocation.d.ts +4 -0
- package/dist/ir/lower-invocation.js +514 -0
- package/dist/ir/lower-narrow.d.ts +53 -0
- package/dist/ir/lower-narrow.js +320 -0
- package/dist/ir/lower-operands.d.ts +272 -0
- package/dist/ir/lower-operands.js +461 -0
- package/dist/ir/lower-property.d.ts +21 -0
- package/dist/ir/lower-property.js +132 -0
- package/dist/ir/lower-protocol.d.ts +11 -0
- package/dist/ir/lower-protocol.js +118 -0
- package/dist/ir/lower-short-circuit.d.ts +41 -0
- package/dist/ir/lower-short-circuit.js +63 -0
- package/dist/ir/lower.d.ts +82 -0
- package/dist/ir/lower.js +1346 -0
- package/dist/ir/model.d.ts +1474 -0
- package/dist/ir/model.js +6 -0
- package/dist/ir/native-absent-property.d.ts +3 -0
- package/dist/ir/native-absent-property.js +13 -0
- package/dist/ir/native-array-transport.d.ts +7 -0
- package/dist/ir/native-array-transport.js +46 -0
- package/dist/ir/native-callable-bind.d.ts +9 -0
- package/dist/ir/native-callable-bind.js +30 -0
- package/dist/ir/native-carrier-predicate.d.ts +34 -0
- package/dist/ir/native-carrier-predicate.js +49 -0
- package/dist/ir/native-class-accessor.d.ts +18 -0
- package/dist/ir/native-class-accessor.js +52 -0
- package/dist/ir/native-class-construction.d.ts +16 -0
- package/dist/ir/native-class-construction.js +71 -0
- package/dist/ir/native-class-initialization.d.ts +15 -0
- package/dist/ir/native-class-initialization.js +56 -0
- package/dist/ir/native-class-origins.d.ts +13 -0
- package/dist/ir/native-class-origins.js +237 -0
- package/dist/ir/native-dictionary-transport.d.ts +6 -0
- package/dist/ir/native-dictionary-transport.js +37 -0
- package/dist/ir/native-enumeration.d.ts +14 -0
- package/dist/ir/native-enumeration.js +26 -0
- package/dist/ir/native-equality.d.ts +10 -0
- package/dist/ir/native-equality.js +18 -0
- package/dist/ir/native-field-owner.d.ts +37 -0
- package/dist/ir/native-field-owner.js +183 -0
- package/dist/ir/native-fixed-layout.d.ts +41 -0
- package/dist/ir/native-fixed-layout.js +232 -0
- package/dist/ir/native-host-construction.d.ts +53 -0
- package/dist/ir/native-host-construction.js +62 -0
- package/dist/ir/native-key-query.d.ts +4 -0
- package/dist/ir/native-key-query.js +38 -0
- package/dist/ir/native-merge-transport.d.ts +25 -0
- package/dist/ir/native-merge-transport.js +71 -0
- package/dist/ir/native-record-index-transport.d.ts +11 -0
- package/dist/ir/native-record-index-transport.js +34 -0
- package/dist/ir/native-record-index.d.ts +12 -0
- package/dist/ir/native-record-index.js +27 -0
- package/dist/ir/native-reflect-field.d.ts +5 -0
- package/dist/ir/native-reflect-field.js +33 -0
- package/dist/ir/native-sequence-transport.d.ts +7 -0
- package/dist/ir/native-sequence-transport.js +53 -0
- package/dist/ir/numeric-intrinsics.d.ts +13 -0
- package/dist/ir/numeric-intrinsics.js +57 -0
- package/dist/ir/object-value-conversions.d.ts +20 -0
- package/dist/ir/object-value-conversions.js +50 -0
- package/dist/ir/physical-class-reflection.d.ts +9 -0
- package/dist/ir/physical-class-reflection.js +57 -0
- package/dist/ir/presence-proof.d.ts +42 -0
- package/dist/ir/presence-proof.js +490 -0
- package/dist/ir/program-facts.d.ts +106 -0
- package/dist/ir/program-facts.js +319 -0
- package/dist/ir/proven-branches.d.ts +16 -0
- package/dist/ir/proven-branches.js +219 -0
- package/dist/ir/queries.d.ts +41 -0
- package/dist/ir/queries.js +213 -0
- package/dist/ir/reflection-demand.d.ts +64 -0
- package/dist/ir/reflection-demand.js +1394 -0
- package/dist/ir/refusal.d.ts +43 -0
- package/dist/ir/refusal.js +28 -0
- package/dist/ir/shake.d.ts +37 -0
- package/dist/ir/shake.js +1078 -0
- package/dist/ir/static-callables.d.ts +11 -0
- package/dist/ir/static-callables.js +163 -0
- package/dist/ir/string-layout-reuse.d.ts +13 -0
- package/dist/ir/string-layout-reuse.js +39 -0
- package/dist/ir/string-length-reuse.d.ts +8 -0
- package/dist/ir/string-length-reuse.js +47 -0
- package/dist/ir/transfer.d.ts +78 -0
- package/dist/ir/transfer.js +270 -0
- package/dist/ir/type-query-results.d.ts +25 -0
- package/dist/ir/type-query-results.js +96 -0
- package/dist/ir/typed-property-access.d.ts +100 -0
- package/dist/ir/typed-property-access.js +161 -0
- package/dist/ir/verify.d.ts +19 -0
- package/dist/ir/verify.js +355 -0
- package/dist/plugins/apple/constructors.d.ts +112 -0
- package/dist/plugins/apple/constructors.js +217 -0
- package/dist/plugins/apple/host.d.ts +181 -0
- package/dist/plugins/apple/host.js +262 -0
- package/dist/plugins/apple/jsx.d.ts +2 -0
- package/dist/plugins/apple/jsx.js +293 -0
- package/dist/plugins/apple/members.d.ts +16 -0
- package/dist/plugins/apple/members.js +190 -0
- package/dist/plugins/apple/plugin.d.ts +2 -0
- package/dist/plugins/apple/plugin.js +156 -0
- package/dist/plugins/gea/component-classes.d.ts +25 -0
- package/dist/plugins/gea/component-classes.js +162 -0
- package/dist/plugins/gea/component-inline.d.ts +13 -0
- package/dist/plugins/gea/component-inline.js +532 -0
- package/dist/plugins/gea/constructors.d.ts +23 -0
- package/dist/plugins/gea/constructors.js +100 -0
- package/dist/plugins/gea/contract.d.ts +150 -0
- package/dist/plugins/gea/contract.js +195 -0
- package/dist/plugins/gea/element-ref.d.ts +31 -0
- package/dist/plugins/gea/element-ref.js +45 -0
- package/dist/plugins/gea/host.d.ts +520 -0
- package/dist/plugins/gea/host.js +762 -0
- package/dist/plugins/gea/lower.d.ts +6 -0
- package/dist/plugins/gea/lower.js +195 -0
- package/dist/plugins/gea/members.d.ts +22 -0
- package/dist/plugins/gea/members.js +221 -0
- package/dist/plugins/gea/plugin.d.ts +22 -0
- package/dist/plugins/gea/plugin.js +307 -0
- package/dist/plugins/gea/prelude.d.ts +78 -0
- package/dist/plugins/gea/prelude.js +153 -0
- package/dist/plugins/gea/producer.d.ts +5 -0
- package/dist/plugins/gea/producer.js +52 -0
- package/dist/plugins/gea/reactive-slots.d.ts +49 -0
- package/dist/plugins/gea/reactive-slots.js +578 -0
- package/dist/plugins/gea/render-bridge.d.ts +6 -0
- package/dist/plugins/gea/render-bridge.js +281 -0
- package/dist/plugins/gea/slots.d.ts +15 -0
- package/dist/plugins/gea/slots.js +36 -0
- package/dist/plugins/gea/template-analysis.d.ts +151 -0
- package/dist/plugins/gea/template-analysis.js +346 -0
- package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
- package/dist/plugins/gea/user-agent-styles.js +94 -0
- package/dist/plugins/installed.d.ts +19 -0
- package/dist/plugins/installed.js +21 -0
- package/dist/plugins/load.d.ts +7 -0
- package/dist/plugins/load.js +207 -0
- package/dist/plugins/model.d.ts +735 -0
- package/dist/plugins/model.js +47 -0
- package/dist/plugins/webgl/host.d.ts +77 -0
- package/dist/plugins/webgl/host.js +162 -0
- package/dist/plugins/webgl/plugin.d.ts +40 -0
- package/dist/plugins/webgl/plugin.js +99 -0
- package/dist/preflight/obligations.d.ts +206 -0
- package/dist/preflight/obligations.js +36 -0
- package/dist/preflight/report.d.ts +20 -0
- package/dist/preflight/report.js +61 -0
- package/dist/preflight/run.d.ts +39 -0
- package/dist/preflight/run.js +403 -0
- package/dist/project-preparation.d.ts +33 -0
- package/dist/project-preparation.js +314 -0
- package/dist/projection/abi.d.ts +82 -0
- package/dist/projection/abi.js +349 -0
- package/dist/projection/apply-arguments.d.ts +12 -0
- package/dist/projection/apply-arguments.js +20 -0
- package/dist/projection/bindings.d.ts +250 -0
- package/dist/projection/bindings.js +340 -0
- package/dist/projection/callee.d.ts +196 -0
- package/dist/projection/callee.js +444 -0
- package/dist/projection/class-property-presence.d.ts +28 -0
- package/dist/projection/class-property-presence.js +58 -0
- package/dist/projection/class-prototype.d.ts +5 -0
- package/dist/projection/class-prototype.js +23 -0
- package/dist/projection/class-storage.d.ts +26 -0
- package/dist/projection/class-storage.js +236 -0
- package/dist/projection/classes.d.ts +283 -0
- package/dist/projection/classes.js +944 -0
- package/dist/projection/coercions.d.ts +20 -0
- package/dist/projection/coercions.js +33 -0
- package/dist/projection/dispatch.d.ts +167 -0
- package/dist/projection/dispatch.js +379 -0
- package/dist/projection/fields.d.ts +123 -0
- package/dist/projection/fields.js +383 -0
- package/dist/projection/instance-test.d.ts +78 -0
- package/dist/projection/instance-test.js +156 -0
- package/dist/projection/slots.d.ts +146 -0
- package/dist/projection/slots.js +663 -0
- package/dist/projection/synthesized-abi.d.ts +61 -0
- package/dist/projection/synthesized-abi.js +94 -0
- package/dist/representation/array-index.d.ts +14 -0
- package/dist/representation/array-index.js +17 -0
- package/dist/representation/callable-object.d.ts +3 -0
- package/dist/representation/callable-object.js +6 -0
- package/dist/representation/collections.d.ts +84 -0
- package/dist/representation/collections.js +139 -0
- package/dist/representation/derive.d.ts +159 -0
- package/dist/representation/derive.js +2546 -0
- package/dist/representation/difference.d.ts +30 -0
- package/dist/representation/difference.js +240 -0
- package/dist/representation/field-descriptor-policy.d.ts +19 -0
- package/dist/representation/field-descriptor-policy.js +39 -0
- package/dist/representation/function-constructor.d.ts +13 -0
- package/dist/representation/function-constructor.js +9 -0
- package/dist/representation/host-abi.d.ts +32 -0
- package/dist/representation/host-abi.js +97 -0
- package/dist/representation/host-templates.d.ts +67 -0
- package/dist/representation/host-templates.js +94 -0
- package/dist/representation/intersection.d.ts +84 -0
- package/dist/representation/intersection.js +149 -0
- package/dist/representation/literal-destination.d.ts +43 -0
- package/dist/representation/literal-destination.js +133 -0
- package/dist/representation/merge.d.ts +18 -0
- package/dist/representation/merge.js +83 -0
- package/dist/representation/model.d.ts +1160 -0
- package/dist/representation/model.js +1019 -0
- package/dist/representation/numeric-index.d.ts +13 -0
- package/dist/representation/numeric-index.js +29 -0
- package/dist/representation/object-shape.d.ts +109 -0
- package/dist/representation/object-shape.js +123 -0
- package/dist/representation/optional.d.ts +12 -0
- package/dist/representation/optional.js +87 -0
- package/dist/representation/plan.d.ts +60 -0
- package/dist/representation/plan.js +78 -0
- package/dist/representation/policies.d.ts +589 -0
- package/dist/representation/policies.js +107 -0
- package/dist/representation/primitive-domain.d.ts +1 -0
- package/dist/representation/primitive-domain.js +1 -0
- package/dist/representation/primitives.d.ts +44 -0
- package/dist/representation/primitives.js +78 -0
- package/dist/representation/publish.d.ts +49 -0
- package/dist/representation/publish.js +648 -0
- package/dist/representation/record-fields.d.ts +96 -0
- package/dist/representation/record-fields.js +116 -0
- package/dist/representation/template-object.d.ts +11 -0
- package/dist/representation/template-object.js +26 -0
- package/dist/representation/union.d.ts +30 -0
- package/dist/representation/union.js +324 -0
- package/dist/representation/value-records.d.ts +3 -0
- package/dist/representation/value-records.js +307 -0
- package/dist/representation/verify.d.ts +17 -0
- package/dist/representation/verify.js +221 -0
- package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
- package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
- package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
- package/dist/semantics/ambient-type-realization-transform.js +168 -0
- package/dist/semantics/ambient.d.ts +24 -0
- package/dist/semantics/ambient.js +119 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
- package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
- package/dist/semantics/callable-origins.d.ts +46 -0
- package/dist/semantics/callable-origins.js +354 -0
- package/dist/semantics/class-alias.d.ts +7 -0
- package/dist/semantics/class-alias.js +37 -0
- package/dist/semantics/class-heritage.d.ts +34 -0
- package/dist/semantics/class-heritage.js +104 -0
- package/dist/semantics/commonjs-wrapper.d.ts +69 -0
- package/dist/semantics/commonjs-wrapper.js +231 -0
- package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
- package/dist/semantics/constructor-slot-subclasses.js +112 -0
- package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
- package/dist/semantics/declaration-overlay-transform.js +2157 -0
- package/dist/semantics/define-property-source-transform.d.ts +4 -0
- package/dist/semantics/define-property-source-transform.js +437 -0
- package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
- package/dist/semantics/diagnostic-source-preparation.js +82 -0
- package/dist/semantics/documentation-ranges.d.ts +22 -0
- package/dist/semantics/documentation-ranges.js +36 -0
- package/dist/semantics/dynamic-fallback.d.ts +86 -0
- package/dist/semantics/dynamic-fallback.js +249 -0
- package/dist/semantics/frontend-timing.d.ts +6 -0
- package/dist/semantics/frontend-timing.js +35 -0
- package/dist/semantics/frontend.d.ts +504 -0
- package/dist/semantics/frontend.js +1157 -0
- package/dist/semantics/host-declaration-provenance.d.ts +11 -0
- package/dist/semantics/host-declaration-provenance.js +18 -0
- package/dist/semantics/host-methods.d.ts +24 -0
- package/dist/semantics/host-methods.js +74 -0
- package/dist/semantics/host-protocols.d.ts +429 -0
- package/dist/semantics/host-protocols.js +1501 -0
- package/dist/semantics/inherited-accessor.d.ts +7 -0
- package/dist/semantics/inherited-accessor.js +48 -0
- package/dist/semantics/interface-families.d.ts +70 -0
- package/dist/semantics/interface-families.js +180 -0
- package/dist/semantics/interface-implementors.d.ts +53 -0
- package/dist/semantics/interface-implementors.js +87 -0
- package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
- package/dist/semantics/jsdoc-namepath-transform.js +85 -0
- package/dist/semantics/model/coverage.d.ts +68 -0
- package/dist/semantics/model/coverage.js +73 -0
- package/dist/semantics/model/edges.d.ts +103 -0
- package/dist/semantics/model/edges.js +20 -0
- package/dist/semantics/model/graph.d.ts +55 -0
- package/dist/semantics/model/graph.js +129 -0
- package/dist/semantics/model/operands.d.ts +159 -0
- package/dist/semantics/model/operands.js +26 -0
- package/dist/semantics/model/operations.d.ts +496 -0
- package/dist/semantics/model/operations.js +2 -0
- package/dist/semantics/model/primitive-domain.d.ts +26 -0
- package/dist/semantics/model/primitive-domain.js +38 -0
- package/dist/semantics/model/selected-signature.d.ts +261 -0
- package/dist/semantics/model/selected-signature.js +55 -0
- package/dist/semantics/model/structural-type-table.d.ts +93 -0
- package/dist/semantics/model/structural-type-table.js +237 -0
- package/dist/semantics/model/structural-types.d.ts +367 -0
- package/dist/semantics/model/structural-types.js +200 -0
- package/dist/semantics/module-resolution.d.ts +23 -0
- package/dist/semantics/module-resolution.js +227 -0
- package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
- package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
- package/dist/semantics/node-project.d.ts +13 -0
- package/dist/semantics/node-project.js +107 -0
- package/dist/semantics/node-source-hooks.d.ts +1 -0
- package/dist/semantics/node-source-hooks.js +63 -0
- package/dist/semantics/normalize/absent-globals.d.ts +143 -0
- package/dist/semantics/normalize/absent-globals.js +191 -0
- package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
- package/dist/semantics/normalize/arguments-objects.js +60 -0
- package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
- package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
- package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
- package/dist/semantics/normalize/assignment-patterns.js +147 -0
- package/dist/semantics/normalize/bag-absence.d.ts +8 -0
- package/dist/semantics/normalize/bag-absence.js +42 -0
- package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
- package/dist/semantics/normalize/binding-fixpoint.js +140 -0
- package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
- package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
- package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
- package/dist/semantics/normalize/cells/agreement.js +34 -0
- package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
- package/dist/semantics/normalize/cells/candidates.js +35 -0
- package/dist/semantics/normalize/cells/facts.d.ts +19 -0
- package/dist/semantics/normalize/cells/facts.js +90 -0
- package/dist/semantics/normalize/cells/index.d.ts +10 -0
- package/dist/semantics/normalize/cells/index.js +6 -0
- package/dist/semantics/normalize/cells/model.d.ts +98 -0
- package/dist/semantics/normalize/cells/model.js +2 -0
- package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
- package/dist/semantics/normalize/cells/policies/bag.js +114 -0
- package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
- package/dist/semantics/normalize/cells/policies/collection.js +218 -0
- package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/field.js +40 -0
- package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
- package/dist/semantics/normalize/cells/policies/index.js +58 -0
- package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
- package/dist/semantics/normalize/cells/policies/local.js +37 -0
- package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
- package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
- package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
- package/dist/semantics/normalize/cells/policies/return.js +45 -0
- package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
- package/dist/semantics/normalize/cells/policies/shared.js +45 -0
- package/dist/semantics/normalize/cells/policy.d.ts +72 -0
- package/dist/semantics/normalize/cells/policy.js +18 -0
- package/dist/semantics/normalize/cells/registry.d.ts +14 -0
- package/dist/semantics/normalize/cells/registry.js +17 -0
- package/dist/semantics/normalize/census-refusal.d.ts +62 -0
- package/dist/semantics/normalize/census-refusal.js +27 -0
- package/dist/semantics/normalize/census.d.ts +109 -0
- package/dist/semantics/normalize/census.js +667 -0
- package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
- package/dist/semantics/normalize/collection-bindings.js +677 -0
- package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
- package/dist/semantics/normalize/commonjs-module-record.js +289 -0
- package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
- package/dist/semantics/normalize/commonjs-require.js +1527 -0
- package/dist/semantics/normalize/contribution.d.ts +63 -0
- package/dist/semantics/normalize/contribution.js +172 -0
- package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
- package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
- package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
- package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
- package/dist/semantics/normalize/derived-expression-type.js +3463 -0
- package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
- package/dist/semantics/normalize/evaluation-order.js +37 -0
- package/dist/semantics/normalize/field-bindings.d.ts +167 -0
- package/dist/semantics/normalize/field-bindings.js +1125 -0
- package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
- package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
- package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
- package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
- package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
- package/dist/semantics/normalize/flow/callable-completions.js +82 -0
- package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
- package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
- package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
- package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
- package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
- package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
- package/dist/semantics/normalize/flow/component-solver.js +587 -0
- package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
- package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
- package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
- package/dist/semantics/normalize/flow/export-importers.js +269 -0
- package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
- package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
- package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
- package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
- package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
- package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
- package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
- package/dist/semantics/normalize/flow/model.d.ts +357 -0
- package/dist/semantics/normalize/flow/model.js +177 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
- package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
- package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
- package/dist/semantics/normalize/flow/node-path-token.js +53 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
- package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
- package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
- package/dist/semantics/normalize/flow/origin-authority.js +2 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
- package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
- package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
- package/dist/semantics/normalize/flow/parameter-values.js +251 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
- package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
- package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
- package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
- package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
- package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
- package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
- package/dist/semantics/normalize/flow/source-class-data.js +838 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
- package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
- package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
- package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
- package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
- package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
- package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
- package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
- package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
- package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
- package/dist/semantics/normalize/flow/source-record-data.js +626 -0
- package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
- package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
- package/dist/semantics/normalize/flow/targets.d.ts +118 -0
- package/dist/semantics/normalize/flow/targets.js +405 -0
- package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
- package/dist/semantics/normalize/flow/value-flow.js +823 -0
- package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
- package/dist/semantics/normalize/flow/value-provenance.js +112 -0
- package/dist/semantics/normalize/gating.d.ts +51 -0
- package/dist/semantics/normalize/gating.js +560 -0
- package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
- package/dist/semantics/normalize/generic-function-choice.js +115 -0
- package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
- package/dist/semantics/normalize/global-host-mutations.js +5989 -0
- package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
- package/dist/semantics/normalize/host-effect-contracts.js +143 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
- package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
- package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
- package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
- package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
- package/dist/semantics/normalize/host-mutation-keys.js +183 -0
- package/dist/semantics/normalize/identities.d.ts +172 -0
- package/dist/semantics/normalize/identities.js +426 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
- package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
- package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
- package/dist/semantics/normalize/implicit-arguments.js +39 -0
- package/dist/semantics/normalize/instantiation.d.ts +73 -0
- package/dist/semantics/normalize/instantiation.js +399 -0
- package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
- package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
- package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
- package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
- package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
- package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
- package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
- package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
- package/dist/semantics/normalize/keyof.d.ts +32 -0
- package/dist/semantics/normalize/keyof.js +110 -0
- package/dist/semantics/normalize/local-bindings.d.ts +176 -0
- package/dist/semantics/normalize/local-bindings.js +1826 -0
- package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
- package/dist/semantics/normalize/logical-result-type.js +102 -0
- package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
- package/dist/semantics/normalize/namespace-paths.js +108 -0
- package/dist/semantics/normalize/normalize.d.ts +57 -0
- package/dist/semantics/normalize/normalize.js +68 -0
- package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
- package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
- package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
- package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
- package/dist/semantics/normalize/open-type-form.d.ts +10 -0
- package/dist/semantics/normalize/open-type-form.js +32 -0
- package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
- package/dist/semantics/normalize/parameter-bindings.js +3339 -0
- package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
- package/dist/semantics/normalize/parameter-slot.js +491 -0
- package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
- package/dist/semantics/normalize/physical-overload-result.js +99 -0
- package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
- package/dist/semantics/normalize/primitive-property-absence.js +60 -0
- package/dist/semantics/normalize/producer-context.d.ts +376 -0
- package/dist/semantics/normalize/producer-context.js +1 -0
- package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
- package/dist/semantics/normalize/producers/allocations.js +863 -0
- package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
- package/dist/semantics/normalize/producers/binding-kind.js +36 -0
- package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
- package/dist/semantics/normalize/producers/bindings.js +710 -0
- package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
- package/dist/semantics/normalize/producers/boundary.js +123 -0
- package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
- package/dist/semantics/normalize/producers/computations.d.ts +3 -0
- package/dist/semantics/normalize/producers/computations.js +613 -0
- package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
- package/dist/semantics/normalize/producers/control-loops.js +91 -0
- package/dist/semantics/normalize/producers/control.d.ts +30 -0
- package/dist/semantics/normalize/producers/control.js +923 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
- package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
- package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
- package/dist/semantics/normalize/producers/destructuring.js +1180 -0
- package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
- package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
- package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
- package/dist/semantics/normalize/producers/erasure.js +90 -0
- package/dist/semantics/normalize/producers/installed.d.ts +3 -0
- package/dist/semantics/normalize/producers/installed.js +55 -0
- package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
- package/dist/semantics/normalize/producers/invocations.js +1796 -0
- package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
- package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
- package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
- package/dist/semantics/normalize/producers/jsx.js +360 -0
- package/dist/semantics/normalize/producers/mint.d.ts +39 -0
- package/dist/semantics/normalize/producers/mint.js +44 -0
- package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
- package/dist/semantics/normalize/producers/nullish.js +27 -0
- package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
- package/dist/semantics/normalize/producers/object-assignment.js +204 -0
- package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
- package/dist/semantics/normalize/producers/object-tag.js +119 -0
- package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
- package/dist/semantics/normalize/producers/optional-chain.js +75 -0
- package/dist/semantics/normalize/producers/properties.d.ts +21 -0
- package/dist/semantics/normalize/producers/properties.js +1053 -0
- package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
- package/dist/semantics/normalize/producers/protocol.js +695 -0
- package/dist/semantics/normalize/producers/references.d.ts +53 -0
- package/dist/semantics/normalize/producers/references.js +1027 -0
- package/dist/semantics/normalize/producers/shared.d.ts +561 -0
- package/dist/semantics/normalize/producers/shared.js +1683 -0
- package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
- package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
- package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
- package/dist/semantics/normalize/producers/tagged-template.js +307 -0
- package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
- package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
- package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
- package/dist/semantics/normalize/property-key-domain.js +150 -0
- package/dist/semantics/normalize/reachability.d.ts +189 -0
- package/dist/semantics/normalize/reachability.js +1057 -0
- package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
- package/dist/semantics/normalize/reassigned-bindings.js +41 -0
- package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
- package/dist/semantics/normalize/record-storage-families.js +109 -0
- package/dist/semantics/normalize/return-bindings.d.ts +260 -0
- package/dist/semantics/normalize/return-bindings.js +1311 -0
- package/dist/semantics/normalize/return-paths.d.ts +2 -0
- package/dist/semantics/normalize/return-paths.js +28 -0
- package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
- package/dist/semantics/normalize/script-global-redefinition.js +75 -0
- package/dist/semantics/normalize/specialization.d.ts +201 -0
- package/dist/semantics/normalize/specialization.js +1824 -0
- package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
- package/dist/semantics/normalize/structural-array-element.js +700 -0
- package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
- package/dist/semantics/normalize/structural-array-read.js +124 -0
- package/dist/semantics/normalize/structural-callable.d.ts +12 -0
- package/dist/semantics/normalize/structural-callable.js +82 -0
- package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
- package/dist/semantics/normalize/structural-creation-order.js +111 -0
- package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
- package/dist/semantics/normalize/structural-declarations.js +968 -0
- package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
- package/dist/semantics/normalize/structural-declared-body.js +147 -0
- package/dist/semantics/normalize/structural-generics.d.ts +56 -0
- package/dist/semantics/normalize/structural-generics.js +120 -0
- package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
- package/dist/semantics/normalize/structural-indexed-access.js +126 -0
- package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
- package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
- package/dist/semantics/normalize/structural-joins.d.ts +44 -0
- package/dist/semantics/normalize/structural-joins.js +143 -0
- package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
- package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
- package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
- package/dist/semantics/normalize/structural-layout-type.js +1468 -0
- package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
- package/dist/semantics/normalize/structural-leaves.js +125 -0
- package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
- package/dist/semantics/normalize/structural-local-union.js +133 -0
- package/dist/semantics/normalize/structural-members.d.ts +26 -0
- package/dist/semantics/normalize/structural-members.js +84 -0
- package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
- package/dist/semantics/normalize/structural-mutable-method.js +109 -0
- package/dist/semantics/normalize/structural-parts.d.ts +131 -0
- package/dist/semantics/normalize/structural-parts.js +737 -0
- package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
- package/dist/semantics/normalize/structural-receiver.js +551 -0
- package/dist/semantics/normalize/structural-rules.d.ts +112 -0
- package/dist/semantics/normalize/structural-rules.js +93 -0
- package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
- package/dist/semantics/normalize/structural-self-reference.js +494 -0
- package/dist/semantics/normalize/structural.d.ts +202 -0
- package/dist/semantics/normalize/structural.js +4218 -0
- package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
- package/dist/semantics/normalize/unreduced-type-form.js +53 -0
- package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
- package/dist/semantics/normalize/unresolvable-names.js +140 -0
- package/dist/semantics/package-sources.d.ts +16 -0
- package/dist/semantics/package-sources.js +365 -0
- package/dist/semantics/program.d.ts +151 -0
- package/dist/semantics/program.js +667 -0
- package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-install-source-transform.js +341 -0
- package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
- package/dist/semantics/prototype-object-class-source-transform.js +525 -0
- package/dist/semantics/prototype-reparenting.d.ts +50 -0
- package/dist/semantics/prototype-reparenting.js +317 -0
- package/dist/semantics/stable-checker.d.ts +10 -0
- package/dist/semantics/stable-checker.js +148 -0
- package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
- package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
- package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
- package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
- package/dist/semantics/this-constructor-source-transform.js +122 -0
- package/dist/semantics/uninstantiable-classes.d.ts +22 -0
- package/dist/semantics/uninstantiable-classes.js +75 -0
- package/dist/targets/cpp/balanced-units.d.ts +3 -0
- package/dist/targets/cpp/balanced-units.js +58 -0
- package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
- package/dist/targets/cpp/borrowed-call-entry.js +68 -0
- package/dist/targets/cpp/captures.d.ts +68 -0
- package/dist/targets/cpp/captures.js +269 -0
- package/dist/targets/cpp/class-layout.d.ts +313 -0
- package/dist/targets/cpp/class-layout.js +483 -0
- package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
- package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
- package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
- package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
- package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
- package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
- package/dist/targets/cpp/class-ref-transport.js +32 -0
- package/dist/targets/cpp/conversions.d.ts +3 -0
- package/dist/targets/cpp/conversions.js +2027 -0
- package/dist/targets/cpp/deferral-safety.d.ts +82 -0
- package/dist/targets/cpp/deferral-safety.js +86 -0
- package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
- package/dist/targets/cpp/direct-call-receivers.js +79 -0
- package/dist/targets/cpp/document.d.ts +74 -0
- package/dist/targets/cpp/document.js +106 -0
- package/dist/targets/cpp/emit-allocation.d.ts +60 -0
- package/dist/targets/cpp/emit-allocation.js +573 -0
- package/dist/targets/cpp/emit-arrays.d.ts +119 -0
- package/dist/targets/cpp/emit-arrays.js +1047 -0
- package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
- package/dist/targets/cpp/emit-binding-reference.js +120 -0
- package/dist/targets/cpp/emit-bindings.d.ts +158 -0
- package/dist/targets/cpp/emit-bindings.js +769 -0
- package/dist/targets/cpp/emit-buffers.d.ts +156 -0
- package/dist/targets/cpp/emit-buffers.js +573 -0
- package/dist/targets/cpp/emit-callable.d.ts +230 -0
- package/dist/targets/cpp/emit-callable.js +2154 -0
- package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
- package/dist/targets/cpp/emit-carrier-members.js +1224 -0
- package/dist/targets/cpp/emit-coercion.d.ts +26 -0
- package/dist/targets/cpp/emit-coercion.js +39 -0
- package/dist/targets/cpp/emit-context.d.ts +1882 -0
- package/dist/targets/cpp/emit-context.js +904 -0
- package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
- package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
- package/dist/targets/cpp/emit-equality.d.ts +39 -0
- package/dist/targets/cpp/emit-equality.js +472 -0
- package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
- package/dist/targets/cpp/emit-exceptions.js +513 -0
- package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
- package/dist/targets/cpp/emit-field-owner.js +27 -0
- package/dist/targets/cpp/emit-in.d.ts +31 -0
- package/dist/targets/cpp/emit-in.js +426 -0
- package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
- package/dist/targets/cpp/emit-instanceof.js +601 -0
- package/dist/targets/cpp/emit-integers.d.ts +68 -0
- package/dist/targets/cpp/emit-integers.js +184 -0
- package/dist/targets/cpp/emit-iterator.d.ts +100 -0
- package/dist/targets/cpp/emit-iterator.js +1137 -0
- package/dist/targets/cpp/emit-json.d.ts +73 -0
- package/dist/targets/cpp/emit-json.js +823 -0
- package/dist/targets/cpp/emit-jsx.d.ts +74 -0
- package/dist/targets/cpp/emit-jsx.js +806 -0
- package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
- package/dist/targets/cpp/emit-mixed-binary.js +60 -0
- package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
- package/dist/targets/cpp/emit-namespaces.js +133 -0
- package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
- package/dist/targets/cpp/emit-narrowing.js +3967 -0
- package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
- package/dist/targets/cpp/emit-native-equality.js +14 -0
- package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
- package/dist/targets/cpp/emit-native-selection.js +37 -0
- package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
- package/dist/targets/cpp/emit-object-tag.js +108 -0
- package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
- package/dist/targets/cpp/emit-owned-record.js +15 -0
- package/dist/targets/cpp/emit-presence.d.ts +78 -0
- package/dist/targets/cpp/emit-presence.js +376 -0
- package/dist/targets/cpp/emit-properties.d.ts +105 -0
- package/dist/targets/cpp/emit-properties.js +1640 -0
- package/dist/targets/cpp/emit-record-view.d.ts +20 -0
- package/dist/targets/cpp/emit-record-view.js +354 -0
- package/dist/targets/cpp/emit-return.d.ts +5 -0
- package/dist/targets/cpp/emit-return.js +237 -0
- package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
- package/dist/targets/cpp/emit-sum-widening.js +69 -0
- package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
- package/dist/targets/cpp/emit-tonumber.js +177 -0
- package/dist/targets/cpp/emit-tostring.d.ts +92 -0
- package/dist/targets/cpp/emit-tostring.js +556 -0
- package/dist/targets/cpp/emit-typeof.d.ts +49 -0
- package/dist/targets/cpp/emit-typeof.js +317 -0
- package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
- package/dist/targets/cpp/emit-union-properties.js +1281 -0
- package/dist/targets/cpp/emit.d.ts +45 -0
- package/dist/targets/cpp/emit.js +2225 -0
- package/dist/targets/cpp/error-types.d.ts +4 -0
- package/dist/targets/cpp/error-types.js +11 -0
- package/dist/targets/cpp/function-source-reads.d.ts +72 -0
- package/dist/targets/cpp/function-source-reads.js +148 -0
- package/dist/targets/cpp/host/atomics.d.ts +25 -0
- package/dist/targets/cpp/host/atomics.js +63 -0
- package/dist/targets/cpp/host/core-globals.d.ts +108 -0
- package/dist/targets/cpp/host/core-globals.js +158 -0
- package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
- package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
- package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
- package/dist/targets/cpp/host/emit-host-arity.js +232 -0
- package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
- package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
- package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
- package/dist/targets/cpp/host/emit-host-object.js +2206 -0
- package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
- package/dist/targets/cpp/host/emit-host-properties.js +533 -0
- package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
- package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
- package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
- package/dist/targets/cpp/host/emit-host-value.js +392 -0
- package/dist/targets/cpp/host/host-members.d.ts +505 -0
- package/dist/targets/cpp/host/host-members.js +819 -0
- package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
- package/dist/targets/cpp/host/host-method-aliases.js +76 -0
- package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
- package/dist/targets/cpp/host/native-protocols.js +183 -0
- package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
- package/dist/targets/cpp/host/object-protocol.js +671 -0
- package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
- package/dist/targets/cpp/host-namespace-reads.js +113 -0
- package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
- package/dist/targets/cpp/manifest/capabilities.js +1484 -0
- package/dist/targets/cpp/manifest.d.ts +23 -0
- package/dist/targets/cpp/manifest.js +113 -0
- package/dist/targets/cpp/native-error-base.d.ts +38 -0
- package/dist/targets/cpp/native-error-base.js +74 -0
- package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
- package/dist/targets/cpp/native-narrowing-transport.js +151 -0
- package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
- package/dist/targets/cpp/native-selection-helpers.js +46 -0
- package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
- package/dist/targets/cpp/native-symbol-keys.js +34 -0
- package/dist/targets/cpp/ownership.d.ts +43 -0
- package/dist/targets/cpp/ownership.js +38 -0
- package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
- package/dist/targets/cpp/owning-conversion-input.js +12 -0
- package/dist/targets/cpp/property-read-claims.d.ts +62 -0
- package/dist/targets/cpp/property-read-claims.js +23 -0
- package/dist/targets/cpp/property-store-claims.d.ts +62 -0
- package/dist/targets/cpp/property-store-claims.js +26 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
- package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
- package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
- package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
- package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
- package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
- package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
- package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
- package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
- package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
- package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
- package/dist/targets/cpp/reactive-dependencies.js +432 -0
- package/dist/targets/cpp/reactive-origins.d.ts +44 -0
- package/dist/targets/cpp/reactive-origins.js +82 -0
- package/dist/targets/cpp/records.d.ts +277 -0
- package/dist/targets/cpp/records.js +2427 -0
- package/dist/targets/cpp/recursive-containers.d.ts +43 -0
- package/dist/targets/cpp/recursive-containers.js +144 -0
- package/dist/targets/cpp/regexp-types.d.ts +56 -0
- package/dist/targets/cpp/regexp-types.js +59 -0
- package/dist/targets/cpp/substrate.d.ts +125 -0
- package/dist/targets/cpp/substrate.js +12 -0
- package/dist/targets/cpp/translation-unit.d.ts +219 -0
- package/dist/targets/cpp/translation-unit.js +2063 -0
- package/dist/targets/cpp/types.d.ts +280 -0
- package/dist/targets/cpp/types.js +1135 -0
- package/dist/targets/cpp/virtual-methods.d.ts +95 -0
- package/dist/targets/cpp/virtual-methods.js +264 -0
- package/package.json +95 -0
- package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
- package/src/targets/cpp/runtime/gea_eval.h +1376 -0
- package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
- package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
- package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The obligation model.
|
|
3
|
+
*
|
|
4
|
+
* An obligation is one demanded thing the PLAN needs already installed: a
|
|
5
|
+
* selected carrier, a call path, a native boundary, a verifier recipe, an
|
|
6
|
+
* emitter recipe, a physical C++ type. It is not a proof and it does not
|
|
7
|
+
* compute anything -- it names what was checked, what was expected, what was
|
|
8
|
+
* actually found, and whether the two agree. `run.ts` walks the sealed
|
|
9
|
+
* semantic graph and representation plan to build these; nothing here may
|
|
10
|
+
* synthesize a carrier or invent a fact the earlier layers did not already
|
|
11
|
+
* publish. Site-level demands -- which conversion a slot needs, which recipe
|
|
12
|
+
* a receiver takes, which helper a protocol step calls -- are not obligations
|
|
13
|
+
* any more: `ir/certify.ts` reads them off the lowered IR as capability keys
|
|
14
|
+
* (the plan's census).
|
|
15
|
+
*/
|
|
16
|
+
export const obligationKinds = [
|
|
17
|
+
'binding-carrier',
|
|
18
|
+
'expression-carrier',
|
|
19
|
+
'return-carrier',
|
|
20
|
+
'call-abi',
|
|
21
|
+
'native-boundary',
|
|
22
|
+
'physical-cpp-type',
|
|
23
|
+
'verifier-recipe',
|
|
24
|
+
'emitter-recipe'
|
|
25
|
+
];
|
|
26
|
+
export const predicate = (id, expected, actual) => Object.freeze({ id, expected, actual, pass: expected === actual });
|
|
27
|
+
export const obligationId = (component, kind, discriminator) => `obligation|${component}|${kind}|${discriminator}`;
|
|
28
|
+
/**
|
|
29
|
+
* A failed predicate is `unsupported` only when the model it queried already
|
|
30
|
+
* gives an authoritative "never" answer for this coordinate -- a `Never`
|
|
31
|
+
* conversion node, a helper the manifest lists as never-installable. Every
|
|
32
|
+
* other failure is `missing`: capability that has not been installed yet, not
|
|
33
|
+
* capability that cannot exist. Collapsing the two would make an ordinary gap
|
|
34
|
+
* in an unfinished primitive read as a permanent language limitation.
|
|
35
|
+
*/
|
|
36
|
+
export const localStatusOf = (check, declaredUnsupported) => check.pass ? 'satisfied' : declaredUnsupported ? 'unsupported' : 'missing';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PreflightReport } from './run.js';
|
|
2
|
+
/**
|
|
3
|
+
* The report, one NDJSON line at a time, each with its newline.
|
|
4
|
+
*
|
|
5
|
+
* A generator rather than an array of rows: TypeScript's own compiler has
|
|
6
|
+
* ~3 million obligations, and the joined report is longer than V8 allows a
|
|
7
|
+
* single string to be (`RangeError: Invalid string length`, thrown after the
|
|
8
|
+
* census had already printed, losing only the report). Every consumer either
|
|
9
|
+
* writes lines as they come (`cli.ts`) or digests them as they come
|
|
10
|
+
* (`certificate.ts`); nothing needs the whole text in one piece. The order
|
|
11
|
+
* and the bytes of each line are exactly what the joined form produced, so
|
|
12
|
+
* the digest a certificate binds to is unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export declare function preflightReportLines(report: PreflightReport): Generator<string, void, undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* The whole report as one string -- for tests and small reports only. A
|
|
17
|
+
* report the size of a large program's does not fit in a string at all; use
|
|
18
|
+
* `preflightReportLines`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const serializePreflightReport: (report: PreflightReport) => string;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const compareComponentId = (left, right) => (left < right ? -1 : left > right ? 1 : 0);
|
|
2
|
+
/**
|
|
3
|
+
* The report, one NDJSON line at a time, each with its newline.
|
|
4
|
+
*
|
|
5
|
+
* A generator rather than an array of rows: TypeScript's own compiler has
|
|
6
|
+
* ~3 million obligations, and the joined report is longer than V8 allows a
|
|
7
|
+
* single string to be (`RangeError: Invalid string length`, thrown after the
|
|
8
|
+
* census had already printed, losing only the report). Every consumer either
|
|
9
|
+
* writes lines as they come (`cli.ts`) or digests them as they come
|
|
10
|
+
* (`certificate.ts`); nothing needs the whole text in one piece. The order
|
|
11
|
+
* and the bytes of each line are exactly what the joined form produced, so
|
|
12
|
+
* the digest a certificate binds to is unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export function* preflightReportLines(report) {
|
|
15
|
+
const line = (row) => `${JSON.stringify(row)}\n`;
|
|
16
|
+
yield line({ row: 'header', version: 1, componentCount: report.components.length, obligationCount: report.obligations.length });
|
|
17
|
+
const sortedComponentSummaries = [...report.componentSummaries].sort((left, right) => compareComponentId(left.component, right.component));
|
|
18
|
+
for (const summary of sortedComponentSummaries) {
|
|
19
|
+
yield line({
|
|
20
|
+
row: 'component',
|
|
21
|
+
component: summary.component,
|
|
22
|
+
operationCount: summary.operationCount,
|
|
23
|
+
obligationCount: summary.obligationCount,
|
|
24
|
+
mandatory: summary.mandatory,
|
|
25
|
+
optional: summary.optional
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const sortedObligations = [...report.obligations].sort((left, right) => {
|
|
29
|
+
const byComponent = compareComponentId(left.component, right.component);
|
|
30
|
+
if (byComponent !== 0)
|
|
31
|
+
return byComponent;
|
|
32
|
+
if (left.kind !== right.kind)
|
|
33
|
+
return left.kind < right.kind ? -1 : 1;
|
|
34
|
+
return left.id < right.id ? -1 : left.id > right.id ? 1 : 0;
|
|
35
|
+
});
|
|
36
|
+
for (const obligation of sortedObligations) {
|
|
37
|
+
yield line({
|
|
38
|
+
row: 'obligation',
|
|
39
|
+
id: obligation.id,
|
|
40
|
+
kind: obligation.kind,
|
|
41
|
+
component: obligation.component,
|
|
42
|
+
derivesFrom: obligation.derivesFrom,
|
|
43
|
+
optional: obligation.optional,
|
|
44
|
+
status: obligation.status,
|
|
45
|
+
predicate: obligation.predicate
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
yield line({ row: 'summary', scope: 'total', mandatory: report.totals.mandatory, optional: report.totals.optional });
|
|
49
|
+
yield line({
|
|
50
|
+
row: 'completion',
|
|
51
|
+
clean: report.clean,
|
|
52
|
+
componentCount: report.components.length,
|
|
53
|
+
obligationCount: report.obligations.length
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The whole report as one string -- for tests and small reports only. A
|
|
58
|
+
* report the size of a large program's does not fit in a string at all; use
|
|
59
|
+
* `preflightReportLines`.
|
|
60
|
+
*/
|
|
61
|
+
export const serializePreflightReport = (report) => [...preflightReportLines(report)].join('');
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ComponentId } from '../identity/ids.js';
|
|
2
|
+
import type { SealedRepresentationPlan } from '../representation/plan.js';
|
|
3
|
+
import type { SemanticGraph } from '../semantics/model/graph.js';
|
|
4
|
+
import type { Obligation, ObligationStatus, TargetRuntimeManifest } from './obligations.js';
|
|
5
|
+
export interface PreflightInput {
|
|
6
|
+
readonly semanticGraph: SemanticGraph;
|
|
7
|
+
readonly representationPlan: SealedRepresentationPlan;
|
|
8
|
+
readonly manifest: TargetRuntimeManifest;
|
|
9
|
+
}
|
|
10
|
+
export interface ObligationTally {
|
|
11
|
+
readonly satisfied: number;
|
|
12
|
+
readonly missing: number;
|
|
13
|
+
readonly unsupported: number;
|
|
14
|
+
readonly blockedByUpstream: number;
|
|
15
|
+
}
|
|
16
|
+
export interface EvaluatedObligation extends Obligation {
|
|
17
|
+
readonly status: ObligationStatus;
|
|
18
|
+
}
|
|
19
|
+
export interface PreflightComponentSummary {
|
|
20
|
+
readonly component: ComponentId;
|
|
21
|
+
readonly operationCount: number;
|
|
22
|
+
readonly obligationCount: number;
|
|
23
|
+
readonly mandatory: ObligationTally;
|
|
24
|
+
readonly optional: ObligationTally;
|
|
25
|
+
}
|
|
26
|
+
export interface PreflightReport {
|
|
27
|
+
/** Every authority component that was censused, in the order it was processed. */
|
|
28
|
+
readonly components: readonly ComponentId[];
|
|
29
|
+
/** Every obligation row. No caps, no top-N, no clipping -- the complete census. */
|
|
30
|
+
readonly obligations: readonly EvaluatedObligation[];
|
|
31
|
+
readonly componentSummaries: readonly PreflightComponentSummary[];
|
|
32
|
+
readonly totals: {
|
|
33
|
+
readonly mandatory: ObligationTally;
|
|
34
|
+
readonly optional: ObligationTally;
|
|
35
|
+
};
|
|
36
|
+
/** True only when every mandatory obligation is `satisfied`. Optional gaps never affect this. */
|
|
37
|
+
readonly clean: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const runPreflight: (input: PreflightInput) => PreflightReport;
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { componentId, operationOfResult } from '../identity/ids.js';
|
|
2
|
+
import { representationKey } from '../representation/model.js';
|
|
3
|
+
import { partitionAuthorityComponents } from '../semantics/model/graph.js';
|
|
4
|
+
import { localStatusOf, obligationId, predicate } from './obligations.js';
|
|
5
|
+
/**
|
|
6
|
+
* The read-only plan-level capability census.
|
|
7
|
+
*
|
|
8
|
+
* `runPreflight` takes frozen inputs -- a sealed representation plan, a sealed
|
|
9
|
+
* semantic graph, and a sealed backend manifest -- and returns a report. It
|
|
10
|
+
* never mutates any of them, never selects a carrier, never invokes an
|
|
11
|
+
* emitter; every check below is a membership test against an already-frozen
|
|
12
|
+
* set. That is what makes this a census and not a second solver: nothing it
|
|
13
|
+
* computes could change if run again on the same inputs, and nothing it finds
|
|
14
|
+
* was not already true before this module ran.
|
|
15
|
+
*
|
|
16
|
+
* This is the PLAN's census
|
|
17
|
+
* only: is every selected carrier one the target can spell, does every
|
|
18
|
+
* invocation have a call path, is every `native-handle` behind an
|
|
19
|
+
* authenticated protocol, may an ambient binding be an `extern`. Everything
|
|
20
|
+
* that depended on how a site would LOWER -- which conversion a slot needs,
|
|
21
|
+
* which property recipe a receiver takes, which runtime helper a protocol
|
|
22
|
+
* step calls -- is certified once, off the IR lowering actually built
|
|
23
|
+
* (`ir/certify.ts`), and the seven builders that predicted it here are gone.
|
|
24
|
+
* What remains gates lowering through the diagnostic sweep; the certificate
|
|
25
|
+
* is minted from the IR certification.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* `into.push(...items)` spreads `items` onto the call stack, and V8 caps a
|
|
29
|
+
* call's argument count. TypeScript's own compiler certifies as ONE component
|
|
30
|
+
* of the checker's size, whose evaluated obligations no longer fit in a
|
|
31
|
+
* single call -- `RangeError: Maximum call stack size exceeded`, 20 minutes
|
|
32
|
+
* in, from a line that only appends to a list. A loop has no such cap.
|
|
33
|
+
*/
|
|
34
|
+
const appendAll = (into, items) => {
|
|
35
|
+
for (const item of items)
|
|
36
|
+
into.push(item);
|
|
37
|
+
};
|
|
38
|
+
const carrierKinds = new Set(['binding-carrier', 'expression-carrier', 'return-carrier']);
|
|
39
|
+
const carrierKindFor = (operation) => {
|
|
40
|
+
if (operation.family === 'binding')
|
|
41
|
+
return 'binding-carrier';
|
|
42
|
+
if (operation.family === 'control' && operation.form === 'return')
|
|
43
|
+
return 'return-carrier';
|
|
44
|
+
return 'expression-carrier';
|
|
45
|
+
};
|
|
46
|
+
/** The result an operation-level obligation anchors to: its value, else its completion, else its first result. */
|
|
47
|
+
const primaryResultOf = (operation) => {
|
|
48
|
+
const value = operation.results.find((result) => result.role === 'value');
|
|
49
|
+
if (value)
|
|
50
|
+
return value.id;
|
|
51
|
+
const completion = operation.results.find((result) => result.role === 'completion');
|
|
52
|
+
if (completion)
|
|
53
|
+
return completion.id;
|
|
54
|
+
const first = operation.results[0];
|
|
55
|
+
return first ? first.id : null;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The carrier obligation for one published result, plus the backend-capability
|
|
59
|
+
* triplet (physical type, verifier, emitter) once a carrier was actually
|
|
60
|
+
* selected. A result the plan left unresolved gets only the carrier row: there
|
|
61
|
+
* is no carrier kind yet to ask the manifest about.
|
|
62
|
+
*/
|
|
63
|
+
const buildCarrierObligations = (cid, resultId, operation, plan, manifest) => {
|
|
64
|
+
const kind = carrierKindFor(operation);
|
|
65
|
+
const representation = plan.selected.get(resultId);
|
|
66
|
+
const resolved = representation !== undefined && representation.kind !== 'unresolved';
|
|
67
|
+
const actual = representation === undefined ? 'absent' : representation.kind === 'unresolved' ? `unresolved(${representation.reason})` : 'resolved';
|
|
68
|
+
const carrierCheck = predicate(`${kind}:selected`, 'resolved', actual);
|
|
69
|
+
const carrierObligation = {
|
|
70
|
+
id: obligationId(cid, kind, resultId),
|
|
71
|
+
kind,
|
|
72
|
+
component: cid,
|
|
73
|
+
derivesFrom: resultId,
|
|
74
|
+
predicate: carrierCheck,
|
|
75
|
+
optional: false,
|
|
76
|
+
localStatus: localStatusOf(carrierCheck, false)
|
|
77
|
+
};
|
|
78
|
+
if (!resolved || representation === undefined)
|
|
79
|
+
return [carrierObligation];
|
|
80
|
+
const key = representationKey(representation);
|
|
81
|
+
const physicalCheck = predicate(`physical-cpp-type:${key}`, 'registered', manifest.physicalTypes.has(key) ? 'registered' : 'absent');
|
|
82
|
+
const verifierCheck = predicate(`verifier-recipe:${key}`, 'registered', manifest.verifierRecipes.has(key) ? 'registered' : 'absent');
|
|
83
|
+
const emitterCheck = predicate(`emitter-recipe:${key}`, 'registered', manifest.emitterRecipes.has(key) ? 'registered' : 'absent');
|
|
84
|
+
return [
|
|
85
|
+
carrierObligation,
|
|
86
|
+
{
|
|
87
|
+
id: obligationId(cid, 'physical-cpp-type', resultId),
|
|
88
|
+
kind: 'physical-cpp-type',
|
|
89
|
+
component: cid,
|
|
90
|
+
derivesFrom: resultId,
|
|
91
|
+
predicate: physicalCheck,
|
|
92
|
+
optional: false,
|
|
93
|
+
localStatus: localStatusOf(physicalCheck, false)
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: obligationId(cid, 'verifier-recipe', resultId),
|
|
97
|
+
kind: 'verifier-recipe',
|
|
98
|
+
component: cid,
|
|
99
|
+
derivesFrom: resultId,
|
|
100
|
+
predicate: verifierCheck,
|
|
101
|
+
optional: false,
|
|
102
|
+
localStatus: localStatusOf(verifierCheck, false)
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: obligationId(cid, 'emitter-recipe', resultId),
|
|
106
|
+
kind: 'emitter-recipe',
|
|
107
|
+
component: cid,
|
|
108
|
+
derivesFrom: resultId,
|
|
109
|
+
predicate: emitterCheck,
|
|
110
|
+
optional: false,
|
|
111
|
+
localStatus: localStatusOf(emitterCheck, false)
|
|
112
|
+
}
|
|
113
|
+
];
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Call ABI obligations. The mandatory row is always the generic dynamic-
|
|
117
|
+
* dispatch call path -- per the doc, `open` "is a complete, correct answer,"
|
|
118
|
+
* so every invocation, whatever its target proof, must be able to fall back
|
|
119
|
+
* to it. `exact`/`closed-family` targets additionally get an `optional`
|
|
120
|
+
* devirtualization row, reported separately so its absence never fails a
|
|
121
|
+
* build the generic path already covers.
|
|
122
|
+
*/
|
|
123
|
+
const buildCallAbiObligations = (cid, operation, manifest) => {
|
|
124
|
+
if (operation.family !== 'invocation')
|
|
125
|
+
return [];
|
|
126
|
+
const anchor = primaryResultOf(operation);
|
|
127
|
+
if (!anchor)
|
|
128
|
+
return [];
|
|
129
|
+
const target = operation.target;
|
|
130
|
+
const obligations = [];
|
|
131
|
+
const genericCheck = predicate('call-abi:generic', 'installed', manifest.hasGenericCallPath ? 'installed' : 'absent');
|
|
132
|
+
obligations.push({
|
|
133
|
+
id: obligationId(cid, 'call-abi', `${anchor}:generic`),
|
|
134
|
+
kind: 'call-abi',
|
|
135
|
+
component: cid,
|
|
136
|
+
derivesFrom: anchor,
|
|
137
|
+
predicate: genericCheck,
|
|
138
|
+
optional: false,
|
|
139
|
+
localStatus: localStatusOf(genericCheck, false)
|
|
140
|
+
});
|
|
141
|
+
if (target.kind === 'exact') {
|
|
142
|
+
const registered = target.target.kind === 'function'
|
|
143
|
+
? manifest.functionAbis.has(target.target.functionId)
|
|
144
|
+
: manifest.implicitConstructorAbis.has(target.target.classDeclaration);
|
|
145
|
+
const check = predicate('call-abi:exact', 'registered', registered ? 'registered' : 'absent');
|
|
146
|
+
obligations.push({
|
|
147
|
+
id: obligationId(cid, 'call-abi', `${anchor}:exact`),
|
|
148
|
+
kind: 'call-abi',
|
|
149
|
+
component: cid,
|
|
150
|
+
derivesFrom: anchor,
|
|
151
|
+
predicate: check,
|
|
152
|
+
optional: true,
|
|
153
|
+
localStatus: localStatusOf(check, false)
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else if (target.kind === 'closed-family') {
|
|
157
|
+
const total = target.targets.length;
|
|
158
|
+
const registeredCount = target.targets.filter((member) => member.kind === 'function'
|
|
159
|
+
? manifest.functionAbis.has(member.functionId)
|
|
160
|
+
: manifest.implicitConstructorAbis.has(member.classDeclaration)).length;
|
|
161
|
+
const check = predicate('call-abi:closed-family', `${total}/${total}`, `${registeredCount}/${total}`);
|
|
162
|
+
obligations.push({
|
|
163
|
+
id: obligationId(cid, 'call-abi', `${anchor}:closed-family`),
|
|
164
|
+
kind: 'call-abi',
|
|
165
|
+
component: cid,
|
|
166
|
+
derivesFrom: anchor,
|
|
167
|
+
predicate: check,
|
|
168
|
+
optional: true,
|
|
169
|
+
localStatus: localStatusOf(check, false)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return obligations;
|
|
173
|
+
};
|
|
174
|
+
/** `native-handle` is admissible only behind a versioned, authenticated host protocol -- never generically. */
|
|
175
|
+
const buildNativeBoundaryObligation = (cid, resultId, representation, manifest) => {
|
|
176
|
+
if (representation.kind !== 'native-handle')
|
|
177
|
+
return [];
|
|
178
|
+
// The carrier is the claim wherever the host stated one. A target either has
|
|
179
|
+
// `gea::embedded::ui::NodeHandle` or it does not; claiming it thirteen times
|
|
180
|
+
// under thirteen declared names is thirteen chances for the answers to differ.
|
|
181
|
+
const key = `${representation.native ?? representation.protocol}@${representation.version}`;
|
|
182
|
+
const check = predicate(`native-boundary:${key}`, 'registered', manifest.nativeProtocols.has(key) ? 'registered' : 'absent');
|
|
183
|
+
return [
|
|
184
|
+
{
|
|
185
|
+
id: obligationId(cid, 'native-boundary', resultId),
|
|
186
|
+
kind: 'native-boundary',
|
|
187
|
+
component: cid,
|
|
188
|
+
derivesFrom: resultId,
|
|
189
|
+
predicate: check,
|
|
190
|
+
optional: false,
|
|
191
|
+
localStatus: localStatusOf(check, false)
|
|
192
|
+
}
|
|
193
|
+
];
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* An ambient value declaration's introduction (`BindingOperation.external`,
|
|
197
|
+
* semantics/model/operations.ts) is the other way a result crosses into host
|
|
198
|
+
* territory, alongside `native-handle`. It censuses against
|
|
199
|
+
* `manifest.supportsExternalBindings` rather than `nativeProtocols`: see that
|
|
200
|
+
* field's own comment (preflight/obligations.ts) for why this is one flag and
|
|
201
|
+
* not a set keyed per declaration. Raising the obligation per result rather
|
|
202
|
+
* than once globally still names exactly which declaration would be blocked
|
|
203
|
+
* if the flag were ever false, the same way every other obligation in this
|
|
204
|
+
* file anchors to the result it is actually about.
|
|
205
|
+
*/
|
|
206
|
+
const buildExternalBindingObligation = (cid, resultId, operation, manifest) => {
|
|
207
|
+
if (operation.family !== 'binding' || !operation.external)
|
|
208
|
+
return [];
|
|
209
|
+
const check = predicate('native-boundary:external-binding', 'installed', manifest.supportsExternalBindings ? 'installed' : 'absent');
|
|
210
|
+
return [
|
|
211
|
+
{
|
|
212
|
+
id: obligationId(cid, 'native-boundary', `${resultId}:external-binding`),
|
|
213
|
+
kind: 'native-boundary',
|
|
214
|
+
component: cid,
|
|
215
|
+
derivesFrom: resultId,
|
|
216
|
+
predicate: check,
|
|
217
|
+
optional: false,
|
|
218
|
+
localStatus: localStatusOf(check, false)
|
|
219
|
+
}
|
|
220
|
+
];
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Raise a locally-satisfied carrier obligation to `blocked-by-upstream` when
|
|
224
|
+
* either (a) a sibling obligation on the same result -- its call ABI,
|
|
225
|
+
* property access, native boundary, or conversion capability -- did not
|
|
226
|
+
* itself pass, or (b) the carrier obligation of a result this operation
|
|
227
|
+
* consumes as an operand did not resolve. This is the one place a status can
|
|
228
|
+
* differ from `localStatus`, and it is a monotone closure over an already-
|
|
229
|
+
* computed, finite obligation set: no obligation here invents a fact, and the
|
|
230
|
+
* loop is bounded by the obligation count, so it is propagation, not solving.
|
|
231
|
+
*/
|
|
232
|
+
const closeBlockedByUpstream = (obligations, graph) => {
|
|
233
|
+
const byResult = new Map();
|
|
234
|
+
for (const obligation of obligations) {
|
|
235
|
+
const siblings = byResult.get(obligation.derivesFrom) ?? [];
|
|
236
|
+
siblings.push(obligation.id);
|
|
237
|
+
byResult.set(obligation.derivesFrom, siblings);
|
|
238
|
+
}
|
|
239
|
+
const optionalById = new Set(obligations.filter((obligation) => obligation.optional).map((obligation) => obligation.id));
|
|
240
|
+
const carrierByResult = new Map();
|
|
241
|
+
for (const obligation of obligations) {
|
|
242
|
+
if (carrierKinds.has(obligation.kind))
|
|
243
|
+
carrierByResult.set(obligation.derivesFrom, obligation.id);
|
|
244
|
+
}
|
|
245
|
+
const upstreamOf = new Map();
|
|
246
|
+
for (const obligation of obligations) {
|
|
247
|
+
if (!carrierKinds.has(obligation.kind))
|
|
248
|
+
continue;
|
|
249
|
+
const deps = [];
|
|
250
|
+
for (const siblingId of byResult.get(obligation.derivesFrom) ?? []) {
|
|
251
|
+
// An optional sibling is a fast path the mandatory one already covers.
|
|
252
|
+
// Depending on it would make an unbuilt devirtualization block the
|
|
253
|
+
// carrier of every value the generic path already carries -- which is
|
|
254
|
+
// exactly the reading `Obligation.optional` exists to forbid.
|
|
255
|
+
if (siblingId === obligation.id || optionalById.has(siblingId))
|
|
256
|
+
continue;
|
|
257
|
+
deps.push(siblingId);
|
|
258
|
+
}
|
|
259
|
+
const operation = graph.operations.get(operationOfResult(obligation.derivesFrom));
|
|
260
|
+
if (operation) {
|
|
261
|
+
for (const operand of operation.operands) {
|
|
262
|
+
if (operand.source.kind !== 'result')
|
|
263
|
+
continue;
|
|
264
|
+
const upstreamCarrier = carrierByResult.get(operand.source.result);
|
|
265
|
+
if (upstreamCarrier)
|
|
266
|
+
deps.push(upstreamCarrier);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
upstreamOf.set(obligation.id, deps);
|
|
270
|
+
}
|
|
271
|
+
const status = new Map();
|
|
272
|
+
for (const obligation of obligations)
|
|
273
|
+
status.set(obligation.id, obligation.localStatus);
|
|
274
|
+
let changed = true;
|
|
275
|
+
let iterations = 0;
|
|
276
|
+
const limit = obligations.length + 1;
|
|
277
|
+
while (changed && iterations <= limit) {
|
|
278
|
+
changed = false;
|
|
279
|
+
iterations += 1;
|
|
280
|
+
for (const [id, deps] of upstreamOf) {
|
|
281
|
+
if (status.get(id) !== 'satisfied')
|
|
282
|
+
continue;
|
|
283
|
+
if (deps.some((dep) => status.get(dep) !== 'satisfied')) {
|
|
284
|
+
status.set(id, 'blocked-by-upstream');
|
|
285
|
+
changed = true;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return obligations.map((obligation) => ({ ...obligation, status: status.get(obligation.id) ?? obligation.localStatus }));
|
|
290
|
+
};
|
|
291
|
+
const emptyTally = () => ({
|
|
292
|
+
satisfied: 0,
|
|
293
|
+
missing: 0,
|
|
294
|
+
unsupported: 0,
|
|
295
|
+
blockedByUpstream: 0
|
|
296
|
+
});
|
|
297
|
+
const tallyOf = (obligations, optional) => {
|
|
298
|
+
const tally = emptyTally();
|
|
299
|
+
for (const obligation of obligations) {
|
|
300
|
+
if (obligation.optional !== optional)
|
|
301
|
+
continue;
|
|
302
|
+
switch (obligation.status) {
|
|
303
|
+
case 'satisfied':
|
|
304
|
+
tally.satisfied += 1;
|
|
305
|
+
break;
|
|
306
|
+
case 'missing':
|
|
307
|
+
tally.missing += 1;
|
|
308
|
+
break;
|
|
309
|
+
case 'unsupported':
|
|
310
|
+
tally.unsupported += 1;
|
|
311
|
+
break;
|
|
312
|
+
case 'blocked-by-upstream':
|
|
313
|
+
tally.blockedByUpstream += 1;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return tally;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Preflight reuses `partitionAuthorityComponents` verbatim -- the same
|
|
321
|
+
* partition the diagnostic sweep traverses -- and processes components in the
|
|
322
|
+
* order it returns them. Components are, by construction, connected and
|
|
323
|
+
* disjoint: no edge crosses two of them, so there is no cross-component
|
|
324
|
+
* dependency left to order by, and this order already is the SCC/dependency
|
|
325
|
+
* order the doc requires.
|
|
326
|
+
*/
|
|
327
|
+
/**
|
|
328
|
+
* The whole-graph result table, dealt out to the component that owns each row.
|
|
329
|
+
*
|
|
330
|
+
* The result builders are filters: each keeps the rows whose producer this
|
|
331
|
+
* component owns. Handing each of them the entire table made the census cost
|
|
332
|
+
* components x table -- on one measured application, 14,681 components against
|
|
333
|
+
* 193,082 rows -- so one forward pass deals every row to its own component,
|
|
334
|
+
* in the table's own order, which is the order the report serializes and the
|
|
335
|
+
* certificate hashes.
|
|
336
|
+
*/
|
|
337
|
+
const indexResults = (graph, partition) => {
|
|
338
|
+
const componentOf = new Map();
|
|
339
|
+
for (const [index, members] of partition.entries())
|
|
340
|
+
for (const member of members)
|
|
341
|
+
componentOf.set(member, index);
|
|
342
|
+
const results = partition.map(() => []);
|
|
343
|
+
for (const entry of graph.results) {
|
|
344
|
+
const index = componentOf.get(entry[1]);
|
|
345
|
+
if (index !== undefined)
|
|
346
|
+
results[index]?.push(entry);
|
|
347
|
+
}
|
|
348
|
+
return results;
|
|
349
|
+
};
|
|
350
|
+
export const runPreflight = (input) => {
|
|
351
|
+
const { semanticGraph, representationPlan, manifest } = input;
|
|
352
|
+
const partition = partitionAuthorityComponents(semanticGraph);
|
|
353
|
+
const indexed = indexResults(semanticGraph, partition);
|
|
354
|
+
const components = [];
|
|
355
|
+
const componentSummaries = [];
|
|
356
|
+
const allObligations = [];
|
|
357
|
+
for (const [componentIndex, memberOperations] of partition.entries()) {
|
|
358
|
+
const representative = memberOperations[0];
|
|
359
|
+
if (representative === undefined)
|
|
360
|
+
continue;
|
|
361
|
+
const cid = componentId(representative);
|
|
362
|
+
components.push(cid);
|
|
363
|
+
const operationSet = new Set(memberOperations);
|
|
364
|
+
const componentResults = indexed[componentIndex] ?? [];
|
|
365
|
+
const componentObligations = [];
|
|
366
|
+
for (const operationId of operationSet) {
|
|
367
|
+
const operation = semanticGraph.operations.get(operationId);
|
|
368
|
+
if (!operation)
|
|
369
|
+
continue;
|
|
370
|
+
appendAll(componentObligations, buildCallAbiObligations(cid, operation, manifest));
|
|
371
|
+
}
|
|
372
|
+
for (const [resultId, operationId] of componentResults) {
|
|
373
|
+
if (!operationSet.has(operationId))
|
|
374
|
+
continue;
|
|
375
|
+
const operation = semanticGraph.operations.get(operationId);
|
|
376
|
+
if (!operation)
|
|
377
|
+
continue;
|
|
378
|
+
appendAll(componentObligations, buildCarrierObligations(cid, resultId, operation, representationPlan, manifest));
|
|
379
|
+
const representation = representationPlan.selected.get(resultId);
|
|
380
|
+
if (representation)
|
|
381
|
+
appendAll(componentObligations, buildNativeBoundaryObligation(cid, resultId, representation, manifest));
|
|
382
|
+
appendAll(componentObligations, buildExternalBindingObligation(cid, resultId, operation, manifest));
|
|
383
|
+
}
|
|
384
|
+
const evaluated = closeBlockedByUpstream(componentObligations, semanticGraph);
|
|
385
|
+
appendAll(allObligations, evaluated);
|
|
386
|
+
componentSummaries.push({
|
|
387
|
+
component: cid,
|
|
388
|
+
operationCount: memberOperations.length,
|
|
389
|
+
obligationCount: evaluated.length,
|
|
390
|
+
mandatory: tallyOf(evaluated, false),
|
|
391
|
+
optional: tallyOf(evaluated, true)
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
const totals = { mandatory: tallyOf(allObligations, false), optional: tallyOf(allObligations, true) };
|
|
395
|
+
const clean = totals.mandatory.missing === 0 && totals.mandatory.unsupported === 0 && totals.mandatory.blockedByUpstream === 0;
|
|
396
|
+
return Object.freeze({
|
|
397
|
+
components: Object.freeze(components),
|
|
398
|
+
obligations: Object.freeze(allObligations),
|
|
399
|
+
componentSummaries: Object.freeze(componentSummaries),
|
|
400
|
+
totals: Object.freeze(totals),
|
|
401
|
+
clean
|
|
402
|
+
});
|
|
403
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PackageSource } from './semantics/package-sources.js';
|
|
2
|
+
export type Manifest = Record<string, unknown>;
|
|
3
|
+
export interface SourceFileSystem {
|
|
4
|
+
readonly exists: (file: string) => boolean;
|
|
5
|
+
readonly read: (file: string) => string;
|
|
6
|
+
readonly write: (file: string, text: string) => void;
|
|
7
|
+
readonly realpath: (file: string) => string;
|
|
8
|
+
}
|
|
9
|
+
export declare const installedPackage: (name: string, from: string, files?: SourceFileSystem) => string | undefined;
|
|
10
|
+
export declare const dependencyInstallCommand: (manifest: Manifest, locks: ReadonlySet<string>) => {
|
|
11
|
+
command: string;
|
|
12
|
+
args: string[];
|
|
13
|
+
env: Record<string, string>;
|
|
14
|
+
};
|
|
15
|
+
/** Install through the project's chosen package manager, without lifecycle execution. */
|
|
16
|
+
export declare const ensureDependencies: (directory: string, log?: (message: string) => void) => void;
|
|
17
|
+
export interface SourceIdentity {
|
|
18
|
+
readonly url: string;
|
|
19
|
+
readonly commit: string;
|
|
20
|
+
readonly directory: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const sourceIdentity: (metadata: Manifest) => SourceIdentity | undefined;
|
|
23
|
+
/** Recover the exact source commit from npm's signed publication provenance when legacy gitHead metadata is absent. */
|
|
24
|
+
export declare const provenanceSourceIdentity: (metadata: Manifest, response: Manifest) => SourceIdentity | undefined;
|
|
25
|
+
export interface PreparationOptions {
|
|
26
|
+
readonly files?: SourceFileSystem;
|
|
27
|
+
readonly log?: (message: string) => void;
|
|
28
|
+
readonly metadata?: (name: string, version: string, root: string) => Promise<Manifest>;
|
|
29
|
+
readonly attestations?: (url: string, root: string) => Promise<Manifest>;
|
|
30
|
+
readonly checkout?: (identity: SourceIdentity, destination: string) => void;
|
|
31
|
+
}
|
|
32
|
+
/** Acquire missing typed sources at the installed version; plain JS remains usable. */
|
|
33
|
+
export declare const preparePackageSources: (root: string, options?: PreparationOptions) => Promise<readonly PackageSource[]>;
|