@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,21 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { ValueFlowIndex } from './model.js';
|
|
3
|
+
import { type NativeCollectionProtocolPlan } from './native-collection-protocol.js';
|
|
4
|
+
/** Every read from the same authenticated native map storage. */
|
|
5
|
+
export declare const collectionValueContinuationsOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, publication: ts.CallExpression, value: ts.Expression, protocolClosed?: (plan: NativeCollectionProtocolPlan) => boolean) => readonly ts.Expression[] | null;
|
|
6
|
+
/** Every stored value that can reach a get, independent of its runtime key.
|
|
7
|
+
* Iterable constructor payloads need their own value-flow proof. */
|
|
8
|
+
export declare const collectionStoredValuesOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, read: ts.CallExpression, protocolClosed?: (plan: NativeCollectionProtocolPlan) => boolean) => readonly ts.Expression[] | null;
|
|
9
|
+
/**
|
|
10
|
+
* Whether handing `reference` to this call as its KEY exposes nothing.
|
|
11
|
+
*
|
|
12
|
+
* Three's `WebGLObjects.update` keys its per-frame `updateMap` WeakMap by the
|
|
13
|
+
* drawable itself: `updateMap.get( object ) !== frame`, then
|
|
14
|
+
* `updateMap.set( object, frame )`. A native map only compares a key by
|
|
15
|
+
* identity, and the closed map family (`collectionValueFlowOf`) already
|
|
16
|
+
* refuses every way to get a key back out -- `keys`/`entries`/`forEach`,
|
|
17
|
+
* iteration, spreading, or the map escaping to unknown code -- so the key
|
|
18
|
+
* argument is inert. Only the KEY position: in `m.set( k, k )` the value
|
|
19
|
+
* argument is a separate reference whose reads the caller still follows.
|
|
20
|
+
*/
|
|
21
|
+
export declare const collectionKeyArgumentIsInert: (checker: ts.TypeChecker, flow: ValueFlowIndex, call: ts.CallExpression, reference: ts.Expression, protocolClosed: (plan: NativeCollectionProtocolPlan) => boolean) => boolean;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { isStandardInterfaceType } from '../derived-expression-type.js';
|
|
3
|
+
import { outermostErasureOf, unwrapErasedExpression } from '../producers/erasure.js';
|
|
4
|
+
import { nativeCollectionProtocolPlanOf } from './native-collection-protocol.js';
|
|
5
|
+
import { isModuleExportedDeclaration, resolveFlowSymbolAlias } from './targets.js';
|
|
6
|
+
const inventories = new WeakMap();
|
|
7
|
+
const collectionWritesAt = (flow, site) => {
|
|
8
|
+
let inventory = inventories.get(flow);
|
|
9
|
+
if (!inventory) {
|
|
10
|
+
inventory = new Map();
|
|
11
|
+
for (const write of flow.allWrites) {
|
|
12
|
+
if (write.edge !== 'collection-key' && write.edge !== 'collection-value')
|
|
13
|
+
continue;
|
|
14
|
+
const writes = inventory.get(write.site) ?? [];
|
|
15
|
+
writes.push(write);
|
|
16
|
+
inventory.set(write.site, writes);
|
|
17
|
+
}
|
|
18
|
+
inventories.set(flow, inventory);
|
|
19
|
+
}
|
|
20
|
+
return inventory.get(site) ?? [];
|
|
21
|
+
};
|
|
22
|
+
const isCell = (node) => ts.isVariableDeclaration(node) || ts.isPropertyDeclaration(node);
|
|
23
|
+
/** Every value read from a local native map holding this publication. Unknown
|
|
24
|
+
* consumers or iterator protocols are deliberately not a closed continuation. */
|
|
25
|
+
const collectionValueFlowOf = (checker, flow, publication, write, protocolClosed) => {
|
|
26
|
+
if (!write.naming || !write.target.declaration || !isCell(write.target.declaration))
|
|
27
|
+
return null;
|
|
28
|
+
const cells = new Set();
|
|
29
|
+
const active = new Set();
|
|
30
|
+
const constructions = new Set();
|
|
31
|
+
let family = null;
|
|
32
|
+
const original = unwrapErasedExpression;
|
|
33
|
+
const exported = (declaration) => {
|
|
34
|
+
return isModuleExportedDeclaration(checker, declaration, checker.getSymbolAtLocation(declaration.name) ?? null);
|
|
35
|
+
};
|
|
36
|
+
const origins = (declaration) => {
|
|
37
|
+
if (exported(declaration))
|
|
38
|
+
return false;
|
|
39
|
+
if (cells.has(declaration))
|
|
40
|
+
return true;
|
|
41
|
+
if (active.has(declaration))
|
|
42
|
+
return false;
|
|
43
|
+
active.add(declaration);
|
|
44
|
+
const writes = flow.writesToDeclaration(declaration).filter((entry) => entry.slot === 'whole');
|
|
45
|
+
const closed = writes.length > 0 &&
|
|
46
|
+
writes.every((entry) => {
|
|
47
|
+
if (!entry.value ||
|
|
48
|
+
(entry.edge !== 'declaration-initializer' &&
|
|
49
|
+
entry.edge !== 'identifier-assignment' &&
|
|
50
|
+
entry.edge !== 'class-field-initializer' &&
|
|
51
|
+
entry.edge !== 'property-assignment'))
|
|
52
|
+
return false;
|
|
53
|
+
const source = original(entry.value);
|
|
54
|
+
if (ts.isIdentifier(source) || ts.isPropertyAccessExpression(source) || ts.isElementAccessExpression(source)) {
|
|
55
|
+
const owner = flow.targetOf(source)?.declaration;
|
|
56
|
+
return owner !== null && owner !== undefined && isCell(owner) && origins(owner);
|
|
57
|
+
}
|
|
58
|
+
if (!ts.isNewExpression(source))
|
|
59
|
+
return false;
|
|
60
|
+
const callee = original(source.expression);
|
|
61
|
+
if (!ts.isIdentifier(callee))
|
|
62
|
+
return false;
|
|
63
|
+
const type = checker.getTypeAtLocation(source);
|
|
64
|
+
const native = isStandardInterfaceType(checker, source, 'Map', type)
|
|
65
|
+
? 'Map'
|
|
66
|
+
: isStandardInterfaceType(checker, source, 'WeakMap', type)
|
|
67
|
+
? 'WeakMap'
|
|
68
|
+
: null;
|
|
69
|
+
if (native === null || (family !== null && family !== native))
|
|
70
|
+
return false;
|
|
71
|
+
const constructor = resolveFlowSymbolAlias(checker, checker.getSymbolAtLocation(callee));
|
|
72
|
+
if (!constructor?.valueDeclaration?.getSourceFile().isDeclarationFile)
|
|
73
|
+
return false;
|
|
74
|
+
family = native;
|
|
75
|
+
constructions.add(source);
|
|
76
|
+
return true;
|
|
77
|
+
});
|
|
78
|
+
active.delete(declaration);
|
|
79
|
+
if (closed)
|
|
80
|
+
cells.add(declaration);
|
|
81
|
+
return closed;
|
|
82
|
+
};
|
|
83
|
+
if (!origins(write.target.declaration))
|
|
84
|
+
return null;
|
|
85
|
+
const protocol = nativeCollectionProtocolPlanOf(checker, flow, publication, family, constructions);
|
|
86
|
+
if (!protocol || !protocolClosed?.(protocol))
|
|
87
|
+
return null;
|
|
88
|
+
const results = new Set();
|
|
89
|
+
const values = new Set();
|
|
90
|
+
const seen = new Set();
|
|
91
|
+
const cell = (declaration) => {
|
|
92
|
+
if (!origins(declaration))
|
|
93
|
+
return false;
|
|
94
|
+
return flow.referencesToDeclaration(declaration).every(use);
|
|
95
|
+
};
|
|
96
|
+
const use = (reference) => {
|
|
97
|
+
if (seen.has(reference))
|
|
98
|
+
return true;
|
|
99
|
+
seen.add(reference);
|
|
100
|
+
const parent = reference.parent;
|
|
101
|
+
if (ts.isPropertyAccessExpression(parent) && parent.name === reference)
|
|
102
|
+
return use(parent);
|
|
103
|
+
if (ts.isPropertyDeclaration(parent) && parent.name === reference)
|
|
104
|
+
return true;
|
|
105
|
+
if (ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)) {
|
|
106
|
+
if (parent.name === reference)
|
|
107
|
+
return true;
|
|
108
|
+
return parent.initializer === reference && cell(parent);
|
|
109
|
+
}
|
|
110
|
+
if (ts.isParenthesizedExpression(parent) || ts.isAsExpression(parent) || ts.isTypeAssertionExpression(parent))
|
|
111
|
+
return use(parent);
|
|
112
|
+
if (ts.isPropertyAccessExpression(parent) && parent.expression === reference) {
|
|
113
|
+
const member = checker.getSymbolAtLocation(parent.name);
|
|
114
|
+
if (!member?.declarations?.length || !member.declarations.every((declaration) => declaration.getSourceFile().isDeclarationFile))
|
|
115
|
+
return false;
|
|
116
|
+
if (parent.name.text === 'size')
|
|
117
|
+
return family === 'Map' && !ts.isBinaryExpression(parent.parent);
|
|
118
|
+
const call = parent.parent;
|
|
119
|
+
if (!ts.isCallExpression(call) || call.expression !== parent || call.arguments.some(ts.isSpreadElement))
|
|
120
|
+
return false;
|
|
121
|
+
const key = collectionWritesAt(flow, call).some((entry) => entry.edge === 'collection-key');
|
|
122
|
+
if (parent.name.text === 'get' && key) {
|
|
123
|
+
results.add(call);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
if ((parent.name.text === 'has' || parent.name.text === 'delete') && key)
|
|
127
|
+
return true;
|
|
128
|
+
if (parent.name.text === 'clear' && family === 'Map')
|
|
129
|
+
return true;
|
|
130
|
+
if (parent.name.text === 'set' && key) {
|
|
131
|
+
for (const entry of collectionWritesAt(flow, call)) {
|
|
132
|
+
if (entry.edge === 'collection-value' && entry.value)
|
|
133
|
+
values.add(entry.value);
|
|
134
|
+
}
|
|
135
|
+
return ts.isExpressionStatement(call.parent);
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
if (ts.isBinaryExpression(parent) && parent.right === reference && parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
140
|
+
const owner = flow.targetOf(parent.left)?.declaration;
|
|
141
|
+
return owner !== null && owner !== undefined && isCell(owner) && cell(owner);
|
|
142
|
+
}
|
|
143
|
+
// Whole-cell assignment origins were checked above. Its expression result
|
|
144
|
+
// aliases the new map, so only a discarded assignment is closed here.
|
|
145
|
+
if (ts.isBinaryExpression(parent) && parent.left === reference && parent.operatorToken.kind === ts.SyntaxKind.EqualsToken)
|
|
146
|
+
return ts.isExpressionStatement(parent.parent);
|
|
147
|
+
return ts.isTypeOfExpression(parent);
|
|
148
|
+
};
|
|
149
|
+
return [...cells].every(cell) ? { reads: [...results], values: [...values], constructions } : null;
|
|
150
|
+
};
|
|
151
|
+
/** Every read from the same authenticated native map storage. */
|
|
152
|
+
export const collectionValueContinuationsOf = (checker, flow, publication, value, protocolClosed) => {
|
|
153
|
+
const write = collectionWritesAt(flow, publication).find((entry) => entry.edge === 'collection-value' && entry.value === value);
|
|
154
|
+
return write ? (collectionValueFlowOf(checker, flow, publication, write, protocolClosed)?.reads ?? null) : null;
|
|
155
|
+
};
|
|
156
|
+
/** Every stored value that can reach a get, independent of its runtime key.
|
|
157
|
+
* Iterable constructor payloads need their own value-flow proof. */
|
|
158
|
+
export const collectionStoredValuesOf = (checker, flow, read, protocolClosed) => {
|
|
159
|
+
const callee = unwrapErasedExpression(read.expression);
|
|
160
|
+
if (!ts.isPropertyAccessExpression(callee) || callee.name.text !== 'get')
|
|
161
|
+
return null;
|
|
162
|
+
const write = collectionWritesAt(flow, read).find((entry) => entry.edge === 'collection-key');
|
|
163
|
+
if (!write)
|
|
164
|
+
return null;
|
|
165
|
+
const graph = collectionValueFlowOf(checker, flow, read, write, protocolClosed);
|
|
166
|
+
if (!graph || !graph.reads.includes(read) || [...graph.constructions].some((node) => (node.arguments?.length ?? 0) > 0))
|
|
167
|
+
return null;
|
|
168
|
+
return graph.values;
|
|
169
|
+
};
|
|
170
|
+
const KEYED_METHODS = new Set(['get', 'has', 'delete', 'set']);
|
|
171
|
+
/**
|
|
172
|
+
* Whether handing `reference` to this call as its KEY exposes nothing.
|
|
173
|
+
*
|
|
174
|
+
* Three's `WebGLObjects.update` keys its per-frame `updateMap` WeakMap by the
|
|
175
|
+
* drawable itself: `updateMap.get( object ) !== frame`, then
|
|
176
|
+
* `updateMap.set( object, frame )`. A native map only compares a key by
|
|
177
|
+
* identity, and the closed map family (`collectionValueFlowOf`) already
|
|
178
|
+
* refuses every way to get a key back out -- `keys`/`entries`/`forEach`,
|
|
179
|
+
* iteration, spreading, or the map escaping to unknown code -- so the key
|
|
180
|
+
* argument is inert. Only the KEY position: in `m.set( k, k )` the value
|
|
181
|
+
* argument is a separate reference whose reads the caller still follows.
|
|
182
|
+
*/
|
|
183
|
+
export const collectionKeyArgumentIsInert = (checker, flow, call, reference, protocolClosed) => {
|
|
184
|
+
const callee = unwrapErasedExpression(call.expression);
|
|
185
|
+
if (!ts.isPropertyAccessExpression(callee) || !KEYED_METHODS.has(callee.name.text) || call.arguments.some(ts.isSpreadElement))
|
|
186
|
+
return false;
|
|
187
|
+
const key = call.arguments[0];
|
|
188
|
+
if (!key || (reference !== key && outermostErasureOf(reference) !== key))
|
|
189
|
+
return false;
|
|
190
|
+
const write = collectionWritesAt(flow, call).find((entry) => entry.edge === 'collection-key' && entry.value === key);
|
|
191
|
+
return write !== undefined && collectionValueFlowOf(checker, flow, call, write, protocolClosed) !== null;
|
|
192
|
+
};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/** A lazily expanded graph solved as strongly connected components. */
|
|
2
|
+
export interface DependencyComponentNode<K, R> {
|
|
3
|
+
/** Facts local to this node are complete, without assuming dependencies. */
|
|
4
|
+
readonly locallyComplete: boolean;
|
|
5
|
+
/** Every node whose answer this node requires. */
|
|
6
|
+
readonly dependencies: readonly K[];
|
|
7
|
+
/** Terminal reasons that made this node locally incomplete. */
|
|
8
|
+
readonly causes?: readonly R[];
|
|
9
|
+
/** Domain-specific grounding witness, used by the seeded-origin policy. */
|
|
10
|
+
readonly seed?: boolean;
|
|
11
|
+
/** Grounding domains that must have a witness if this node is in a cycle. */
|
|
12
|
+
readonly groundingRequirements?: readonly DependencyGroundingDomain[];
|
|
13
|
+
/** Domain-specific witnesses local to this node. */
|
|
14
|
+
readonly groundingSeeds?: readonly DependencyGroundingDomain[];
|
|
15
|
+
/**
|
|
16
|
+
* Edges that may carry the named grounding domain. Each edge must also be a
|
|
17
|
+
* regular dependency. Untagged dependencies never propagate grounding.
|
|
18
|
+
*/
|
|
19
|
+
readonly groundingDependencies?: readonly {
|
|
20
|
+
readonly domain: DependencyGroundingDomain;
|
|
21
|
+
readonly dependency: K;
|
|
22
|
+
}[];
|
|
23
|
+
}
|
|
24
|
+
export type DependencyGroundingDomain = string | symbol;
|
|
25
|
+
export type DependencyComponentMode = 'all-dependencies' | 'seeded-origin' | 'grounding-domains';
|
|
26
|
+
export type DependencyRootCause<K, R> = {
|
|
27
|
+
readonly kind: 'opaque';
|
|
28
|
+
readonly root: K;
|
|
29
|
+
readonly cause: R;
|
|
30
|
+
readonly path: readonly K[];
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'incomplete-node';
|
|
33
|
+
readonly root: K;
|
|
34
|
+
readonly path: readonly K[];
|
|
35
|
+
} | {
|
|
36
|
+
readonly kind: 'unseeded-cycle';
|
|
37
|
+
readonly members: readonly K[];
|
|
38
|
+
readonly path: readonly K[];
|
|
39
|
+
} | {
|
|
40
|
+
readonly kind: 'unseeded-cycle';
|
|
41
|
+
readonly domain: DependencyGroundingDomain;
|
|
42
|
+
readonly members: readonly K[];
|
|
43
|
+
/** The members whose own grounding requirement no walk witnessed: where to look. */
|
|
44
|
+
readonly unmet: readonly K[];
|
|
45
|
+
readonly path: readonly K[];
|
|
46
|
+
};
|
|
47
|
+
export interface DependencyComponentResult<K, R> {
|
|
48
|
+
readonly status: 'complete' | 'refused';
|
|
49
|
+
/** Legacy aggregate witness flag retained for seeded-origin clients. */
|
|
50
|
+
readonly grounded: boolean;
|
|
51
|
+
/** Witness domains reached over explicitly labelled edges. */
|
|
52
|
+
readonly groundedDomains: ReadonlySet<DependencyGroundingDomain>;
|
|
53
|
+
/** Materialize root causes and one shortest dependency path to each only when needed. */
|
|
54
|
+
readonly explain: () => readonly DependencyRootCause<K, R>[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Solve a lazily discovered dependency graph. `all-dependencies` admits a
|
|
58
|
+
* recursive component when every member has complete local facts and every
|
|
59
|
+
* dependency outside it is complete. `seeded-origin` preserves the legacy
|
|
60
|
+
* seed rule. `grounding-domains` enforces only domains required by members of
|
|
61
|
+
* a cycle and propagates witnesses over explicitly labelled dependency edges.
|
|
62
|
+
* An acyclic unseeded node remains a complete, vacuous answer.
|
|
63
|
+
*/
|
|
64
|
+
export declare const dependencyComponentSolver: <K, R>(expand: (key: K) => DependencyComponentNode<K, R>, mode: DependencyComponentMode) => ((key: K) => DependencyComponentResult<K, R>);
|
|
65
|
+
/** A node whose fact set is transferred monotonically from discovered dependencies. */
|
|
66
|
+
export type DependencyFactRead<K, V> = (dependency: K) => ReadonlySet<V>;
|
|
67
|
+
/** A discovery edge whose facts are visible but whose completeness is not required. */
|
|
68
|
+
export type DependencyFactObserve<K, V> = (dependency: K) => ReadonlySet<V>;
|
|
69
|
+
/**
|
|
70
|
+
* The reverse of `read`/`observe`: given a fact VALUE, the keys of every node
|
|
71
|
+
* that holds it so far. `read`/`observe` name the dependency up front; this is
|
|
72
|
+
* for the shape where the dependency is not knowable up front -- "which of an
|
|
73
|
+
* unbounded candidate set holds this" -- which a per-key whole-program scan
|
|
74
|
+
* inside a transfer is the usual symptom of. `unknownReadsOf` in
|
|
75
|
+
* `source-value-session.ts` used to `observe` all 968 of the three.js app's
|
|
76
|
+
* computed-key reads from every one of 570 containers, to ask a question that
|
|
77
|
+
* does not depend on the key: whether the read's RECEIVER can be this
|
|
78
|
+
* container. Asked in reverse, each container asks once, "who holds me",
|
|
79
|
+
* instead of 570 containers each asking the same 968 receivers.
|
|
80
|
+
*
|
|
81
|
+
* Calling this still makes the caller a dependent, exactly as `observe`
|
|
82
|
+
* would -- a node that comes to hold this fact LATER still wakes every past
|
|
83
|
+
* caller, via a value-keyed subscription rather than a per-dependency edge.
|
|
84
|
+
* Skipping that would mean a container that gains a holder only after this
|
|
85
|
+
* ran publishes an incomplete answer forever: a silently wrong result, not a
|
|
86
|
+
* slow one.
|
|
87
|
+
*
|
|
88
|
+
* Never becomes a required edge, and cannot: there is no dependency `K` here
|
|
89
|
+
* to require -- the very thing being asked is which nodes hold this fact, not
|
|
90
|
+
* whether one named node is complete. A consumer that needs this fact's
|
|
91
|
+
* completeness must `read` a query that owns it directly.
|
|
92
|
+
*
|
|
93
|
+
* Only finds nodes that already EXIST and have already transferred at least
|
|
94
|
+
* once. A candidate nothing else in the program ever depends on is never
|
|
95
|
+
* created and never runs, so its facts never reach here -- the caller must
|
|
96
|
+
* materialise every candidate explicitly (`DependencyFactSolver.seed`) rather
|
|
97
|
+
* than relying on this call to do it, the way the 968 `observe` calls it
|
|
98
|
+
* replaces used to as a side effect of `read`/`observe`'s own `stateOf`.
|
|
99
|
+
*/
|
|
100
|
+
export type DependencyFactHoldersOf<K, V> = (fact: V) => Iterable<K>;
|
|
101
|
+
export interface DependencyFactDefinition<K, V, R> {
|
|
102
|
+
/**
|
|
103
|
+
* Add facts derivable now. `read` registers a required dependency, even when
|
|
104
|
+
* its current fact set is empty. `observe` registers a discovery-only edge:
|
|
105
|
+
* its facts are visible and it is revisited when they grow, but its local
|
|
106
|
+
* completeness does not become a requirement of this node. Transfers must
|
|
107
|
+
* be monotone: later reads may add facts, never retract them. If a transfer
|
|
108
|
+
* relies on an observed node being complete, it must also call `read` for it.
|
|
109
|
+
*
|
|
110
|
+
* Declared `ReadonlySet<V>`, not `Iterable<V>`, on purpose. `propagate`
|
|
111
|
+
* iterates this return value while it is still mutating the node's own
|
|
112
|
+
* `facts` -- adding each yielded value before pulling the next one -- and
|
|
113
|
+
* `read`/`observe` hand a dependency's `facts` out LIVE, with no defensive
|
|
114
|
+
* copy (a copy per edge read was quadratic and unfinishable on three's
|
|
115
|
+
* WebGLRenderer; a copy per node doubled the three.js app's peak memory into a 4 GB
|
|
116
|
+
* OOM -- see `factsFrom`). An `Iterable` return invites a generator, and a
|
|
117
|
+
* generator's continuation runs interleaved with that iteration: for a
|
|
118
|
+
* self- or mutually-cyclic node, a `read`/`observe` call made partway
|
|
119
|
+
* through would see a partially-filled `facts` Set from the transfer pass
|
|
120
|
+
* CURRENTLY IN PROGRESS instead of the stable snapshot taken when transfer
|
|
121
|
+
* started, silently breaking the "transfers must be monotone" contract
|
|
122
|
+
* above and making the answer depend on iteration order. Every
|
|
123
|
+
* implementation already returns a materialised Set built before it
|
|
124
|
+
* returns; this type makes that the only legal shape.
|
|
125
|
+
*/
|
|
126
|
+
readonly transfer: (read: DependencyFactRead<K, V>, observe: DependencyFactObserve<K, V>, holdersOf: DependencyFactHoldersOf<K, V>) => ReadonlySet<V>;
|
|
127
|
+
/**
|
|
128
|
+
* Called only after transfer propagation reaches a fixed point. Calling
|
|
129
|
+
* `read` or `observe` here registers that edge and causes propagation/sealing
|
|
130
|
+
* to repeat. `read` makes the dependency closure-required; `observe` only
|
|
131
|
+
* discovers it. This is where a domain decides whether all local alternatives
|
|
132
|
+
* were accounted for and supplies terminal causes or a grounding witness.
|
|
133
|
+
* A grounding dependency must be closure-required via `read`; observation
|
|
134
|
+
* alone can never carry a grounding witness. `holdersOf` behaves like
|
|
135
|
+
* `observe` here too: it can only ever grow what is locally complete, never
|
|
136
|
+
* shrink it, and it cannot supply a grounding witness either.
|
|
137
|
+
*/
|
|
138
|
+
readonly seal: (read: DependencyFactRead<K, V>, observe: DependencyFactObserve<K, V>, holdersOf: DependencyFactHoldersOf<K, V>) => {
|
|
139
|
+
readonly locallyComplete: boolean;
|
|
140
|
+
readonly causes?: readonly R[];
|
|
141
|
+
readonly seed?: boolean;
|
|
142
|
+
readonly groundingRequirements?: readonly DependencyGroundingDomain[];
|
|
143
|
+
readonly groundingSeeds?: readonly DependencyGroundingDomain[];
|
|
144
|
+
readonly groundingDependencies?: readonly {
|
|
145
|
+
readonly domain: DependencyGroundingDomain;
|
|
146
|
+
readonly dependency: K;
|
|
147
|
+
}[];
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export type DependencyFactResult<K, V, R> = {
|
|
151
|
+
readonly status: 'complete';
|
|
152
|
+
readonly grounded: boolean;
|
|
153
|
+
readonly groundedDomains: ReadonlySet<DependencyGroundingDomain>;
|
|
154
|
+
readonly facts: ReadonlySet<V>;
|
|
155
|
+
readonly explain: () => readonly DependencyRootCause<K, R>[];
|
|
156
|
+
} | {
|
|
157
|
+
readonly status: 'refused';
|
|
158
|
+
readonly grounded: boolean;
|
|
159
|
+
readonly groundedDomains: ReadonlySet<DependencyGroundingDomain>;
|
|
160
|
+
readonly explain: () => readonly DependencyRootCause<K, R>[];
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Demand-discover and monotonically propagate generic fact sets, then seal the
|
|
164
|
+
* discovered graph with `dependencyComponentSolver`. Empty reads during
|
|
165
|
+
* propagation are pending values, not refusals; only `seal` can mark a node
|
|
166
|
+
* locally incomplete. Public facts are exposed only for a complete result.
|
|
167
|
+
*
|
|
168
|
+
* Keys and fact values must have stable identity/equality for the lifetime of
|
|
169
|
+
* the solver. A consumer must ensure its transfer reaches a finite fixed point.
|
|
170
|
+
*/
|
|
171
|
+
/**
|
|
172
|
+
* A solve, plus the proof graph it already holds.
|
|
173
|
+
*
|
|
174
|
+
* A consumer that walks "what did this node read" must not keep its own copy
|
|
175
|
+
* of the answer: the solver records every required edge anyway, and the second
|
|
176
|
+
* copy is a whole duplicate dependency graph. The three.js app's was ~115,000 nodes per
|
|
177
|
+
* solve and three solves deep when the heap ran out.
|
|
178
|
+
*/
|
|
179
|
+
export interface DependencyFactSolver<K, V, R> {
|
|
180
|
+
readonly solve: (key: K) => DependencyFactResult<K, V, R>;
|
|
181
|
+
readonly requiredDependenciesOf: (key: K) => Iterable<K>;
|
|
182
|
+
/**
|
|
183
|
+
* Materialise a node and schedule its transfer, without creating any edge
|
|
184
|
+
* to it from anywhere.
|
|
185
|
+
*
|
|
186
|
+
* `holdersOf` only ever finds nodes that already exist, because it has
|
|
187
|
+
* nothing to expand from -- it is handed a fact value, not a key. A caller
|
|
188
|
+
* that builds a fixed candidate list up front (the three.js app's 968 computed-key
|
|
189
|
+
* receivers) used to force each candidate into existence as a SIDE EFFECT
|
|
190
|
+
* of subscribing to it with `observe`; inverting the question removes the
|
|
191
|
+
* subscription but does not remove the need for the candidate to exist and
|
|
192
|
+
* have run at least once. This is that need, named: create-and-schedule
|
|
193
|
+
* with no subscriber, so `seed`ing a whole candidate list costs one
|
|
194
|
+
* scheduling operation per candidate and stores zero edges, instead of one
|
|
195
|
+
* stored edge per (candidate, asker) pair.
|
|
196
|
+
*/
|
|
197
|
+
readonly seed: (key: K) => void;
|
|
198
|
+
}
|
|
199
|
+
export declare const dependencyFactSolver: <K, V, R>(expand: (key: K) => DependencyFactDefinition<K, V, R>, mode: DependencyComponentMode) => DependencyFactSolver<K, V, R>;
|