@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,13 @@
|
|
|
1
|
+
import type { StructuralTypeId } from '../identity/ids.js';
|
|
2
|
+
import type { Ownership, Representation } from './model.js';
|
|
3
|
+
export interface NativeNumericIndex {
|
|
4
|
+
readonly kind: 'elements' | 'dictionary' | 'record-index';
|
|
5
|
+
readonly value: Representation;
|
|
6
|
+
readonly ownership: Ownership;
|
|
7
|
+
}
|
|
8
|
+
/** The native indexed storage reached by a numeric property key.
|
|
9
|
+
* A record's named numeric fields would need runtime field dispatch before
|
|
10
|
+
* the sidecar lookup, so those are not admitted as a plain table access.
|
|
11
|
+
*/
|
|
12
|
+
export declare const nativeNumericIndexOf: (value: Representation, resolve: (id: StructuralTypeId) => Representation) => NativeNumericIndex | null;
|
|
13
|
+
export declare const hasNativeNumericIndexArms: (value: Representation, resolve: (id: StructuralTypeId) => Representation) => boolean;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** The native indexed storage reached by a numeric property key.
|
|
2
|
+
* A record's named numeric fields would need runtime field dispatch before
|
|
3
|
+
* the sidecar lookup, so those are not admitted as a plain table access.
|
|
4
|
+
*/
|
|
5
|
+
export const nativeNumericIndexOf = (value, resolve) => {
|
|
6
|
+
if (value.kind === 'array-object' || value.kind === 'typed-array') {
|
|
7
|
+
if (value.ownership !== 'shared-refcount')
|
|
8
|
+
return null;
|
|
9
|
+
return {
|
|
10
|
+
kind: 'elements',
|
|
11
|
+
value: value.kind === 'array-object' ? value.element : { kind: 'scalar', domain: 'number' },
|
|
12
|
+
ownership: value.ownership
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (value.kind === 'dictionary' && value.key === 'number')
|
|
16
|
+
return { kind: 'dictionary', value: value.value, ownership: value.ownership };
|
|
17
|
+
const record = value.kind === 'native-record-ref' && value.native === null ? resolve(value.shapeId) : value;
|
|
18
|
+
if (record.kind !== 'record-with-index')
|
|
19
|
+
return null;
|
|
20
|
+
const index = record.indexes.find((candidate) => candidate.key === 'number' || candidate.key === 'string');
|
|
21
|
+
if (!index)
|
|
22
|
+
return null;
|
|
23
|
+
if (record.fields.some((field) => String(Number(field.key)) === field.key))
|
|
24
|
+
return null;
|
|
25
|
+
return { kind: 'record-index', value: index.value, ownership: record.ownership };
|
|
26
|
+
};
|
|
27
|
+
export const hasNativeNumericIndexArms = (value, resolve) => value.kind === 'tagged-union' &&
|
|
28
|
+
value.arms.some((arm) => nativeNumericIndexOf(arm.value, resolve) !== null) &&
|
|
29
|
+
value.arms.every((arm) => arm.value.kind === 'null' || arm.value.kind === 'undefined' || nativeNumericIndexOf(arm.value, resolve) !== null);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { StructuralTypeId } from '../identity/ids.js';
|
|
2
|
+
import type { PropertyKeyShape, StructuralIndexShape, StructuralShape } from '../semantics/model/structural-types.js';
|
|
3
|
+
import type { RecordAccessor, Representation } from './model.js';
|
|
4
|
+
/**
|
|
5
|
+
* How an object *shape* divides into the physical parts a record carrier is
|
|
6
|
+
* made of: which members are storage, which index signature rides alongside
|
|
7
|
+
* them, and which members are not stored at all because a body answers them.
|
|
8
|
+
*
|
|
9
|
+
* Read off the shape and nothing else. A use site that re-decided any of this
|
|
10
|
+
* would be a second authority over one layout, and the two would disagree
|
|
11
|
+
* exactly where it is least visible -- a field the allocation writes and the
|
|
12
|
+
* read never looks at.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* A structural index signature narrowed to a key domain this compiler can
|
|
16
|
+
* actually carry. String, number, and symbol each have a physical container
|
|
17
|
+
* (`Dictionary`/`NumericDictionary`/`SymbolDictionary` in
|
|
18
|
+
* `targets/cpp/runtime/gea_runtime.h`). A symbol sidecar stores the runtime
|
|
19
|
+
* `gea::Symbol` identity itself; collapsing it to a printable description
|
|
20
|
+
* would make distinct `Symbol('state')` values alias, while boxing it into a
|
|
21
|
+
* string table would violate the no-boxing rule. Carrying `key` as this
|
|
22
|
+
* narrowed union, rather than the raw
|
|
23
|
+
* `StructuralIndexShape['key']`, is what lets a caller spell `dictionary`'s
|
|
24
|
+
* key or a `record-with-index` sidecar directly without re-deciding (or
|
|
25
|
+
* casting) it.
|
|
26
|
+
*/
|
|
27
|
+
export interface CarriableIndex {
|
|
28
|
+
readonly key: 'string' | 'number' | 'symbol';
|
|
29
|
+
readonly value: StructuralTypeId;
|
|
30
|
+
}
|
|
31
|
+
export declare const carriableIndexOf: (index: StructuralIndexShape) => CarriableIndex | null;
|
|
32
|
+
/** Every index domain the structural model can carry, preserving its JS domain. */
|
|
33
|
+
export declare const carriableIndexesOf: (shape: Extract<StructuralShape, {
|
|
34
|
+
kind: "object";
|
|
35
|
+
}>) => readonly CarriableIndex[] | string;
|
|
36
|
+
/**
|
|
37
|
+
* An object shape's own single string- or number-index, members-free
|
|
38
|
+
* dictionary body, or `null` when it is not shaped like one.
|
|
39
|
+
*
|
|
40
|
+
* Read entirely off `index`/`members` -- the shape's own structure -- so a
|
|
41
|
+
* named declaration can ask this exact question about its body (below)
|
|
42
|
+
* without deriving anything beyond the one index value a real dictionary
|
|
43
|
+
* answer needs.
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* The index signatures a shape physically has, which is not always the number
|
|
47
|
+
* TypeScript reports.
|
|
48
|
+
*
|
|
49
|
+
* `[x: string | number]: unknown` (mongodb's `WriteConcernErrorResult`) is ONE
|
|
50
|
+
* index signature the program wrote, and the checker models it as TWO index
|
|
51
|
+
* infos -- one per key domain -- carrying the identical value type. Reading
|
|
52
|
+
* that as "more than one index signature" refuses a shape that declares a
|
|
53
|
+
* single one.
|
|
54
|
+
*
|
|
55
|
+
* The collapse is a fact about the language, not a convenience: a property key
|
|
56
|
+
* IS a string (ECMA-262 `ToPropertyKey`), so `obj[1]` and `obj['1']` name the
|
|
57
|
+
* same property, and TypeScript itself enforces that a numeric index type is
|
|
58
|
+
* assignable to the string one (TS2413). A string-keyed `gea::Dictionary`
|
|
59
|
+
* therefore already carries every key the numeric domain admits -- the numeric
|
|
60
|
+
* info is a VIEW of that storage, never storage of its own.
|
|
61
|
+
*
|
|
62
|
+
* Gated on the two infos agreeing EXACTLY on their value id. Assignability is
|
|
63
|
+
* not identity, and a shape whose numeric domain carries a genuinely narrower
|
|
64
|
+
* value -- `{ [k: string]: unknown; [k: number]: string }` -- has two different
|
|
65
|
+
* carriers and keeps refusing, rather than being silently widened to one.
|
|
66
|
+
*/
|
|
67
|
+
export declare const physicalIndexesOf: (shape: Extract<StructuralShape, {
|
|
68
|
+
kind: "object";
|
|
69
|
+
}>) => readonly StructuralIndexShape[];
|
|
70
|
+
export declare const dictionaryIndexOf: (shape: Extract<StructuralShape, {
|
|
71
|
+
kind: "object";
|
|
72
|
+
}>) => CarriableIndex | null;
|
|
73
|
+
/**
|
|
74
|
+
* The record-field key text for one structural member.
|
|
75
|
+
*
|
|
76
|
+
* A string or number key is spelled exactly as the language names it --
|
|
77
|
+
* `String(key.value)`, unchanged from before -- because that text *is* the
|
|
78
|
+
* field the program wrote. A symbol key has no such text: two symbols the
|
|
79
|
+
* program never confuses (`Symbol('x')` created twice, or `Symbol.iterator`
|
|
80
|
+
* versus a `unique symbol` that happens to print the same) can share a
|
|
81
|
+
* printable description, so the description is not a name a field could
|
|
82
|
+
* safely be keyed by. What a symbol key *does* have, uniquely, is the
|
|
83
|
+
* declaration `structural.ts`'s `keyOfSymbol` already anchored it to -- the
|
|
84
|
+
* same identity `structuralShapeKey` (semantics/model/structural-types.ts)
|
|
85
|
+
* already keys a shape by (`sym(<declaration>)`), which is why this reuses
|
|
86
|
+
* that exact text rather than inventing a second spelling for one fact. This
|
|
87
|
+
* is a compile-time-constant identity, not a runtime string, so the field it
|
|
88
|
+
* names is an ordinary struct member -- `targets/cpp/types.ts`'s
|
|
89
|
+
* `cppRecordFieldName` is the one place that text becomes the member's actual
|
|
90
|
+
* C++ name, the same split a tuple's positional key already uses.
|
|
91
|
+
*/
|
|
92
|
+
export declare const recordFieldKeyOf: (key: PropertyKeyShape) => string;
|
|
93
|
+
export declare const recordAccessorsOf: (shape: Extract<StructuralShape, {
|
|
94
|
+
kind: "object";
|
|
95
|
+
}>,
|
|
96
|
+
/** The caller's own `deriveStored` -- the identical call a data field's carrier comes from. See `RecordAccessor.value`. */
|
|
97
|
+
deriveStored: (type: StructuralTypeId) => Representation) => readonly RecordAccessor[];
|
|
98
|
+
/**
|
|
99
|
+
* Whether an object shape is pure data: named members, every one a value rather
|
|
100
|
+
* than something callable, none accessor-backed (an accessor has no storage and
|
|
101
|
+
* so contributes no field), and no index signature.
|
|
102
|
+
*
|
|
103
|
+
* This is the whole of the transparent-versus-opaque question for a host type,
|
|
104
|
+
* and it is asked of the CHECKER rather than of a table. A hand-maintained list
|
|
105
|
+
* of "constructible host types" would be a second authority over a question the
|
|
106
|
+
* declaration already answers, and it would drift the first time the host grew
|
|
107
|
+
* a method.
|
|
108
|
+
*/
|
|
109
|
+
export declare const isDataOnlyObjectShape: (shape: StructuralShape | null, shapeOf: (id: StructuralTypeId) => StructuralShape | null) => boolean;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { functionId } from '../identity/ids.js';
|
|
2
|
+
import { symbolPropertyKeyText } from '../semantics/model/structural-types.js';
|
|
3
|
+
export const carriableIndexOf = (index) => index.key === 'string' || index.key === 'number' || index.key === 'symbol' ? { key: index.key, value: index.value } : null;
|
|
4
|
+
/** Every index domain the structural model can carry, preserving its JS domain. */
|
|
5
|
+
export const carriableIndexesOf = (shape) => {
|
|
6
|
+
const result = [];
|
|
7
|
+
for (const index of shape.index) {
|
|
8
|
+
const carriable = carriableIndexOf(index);
|
|
9
|
+
if (!carriable)
|
|
10
|
+
return `no primitive for a record carrier with a ${index.key}-keyed index signature`;
|
|
11
|
+
result.push(carriable);
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* An object shape's own single string- or number-index, members-free
|
|
17
|
+
* dictionary body, or `null` when it is not shaped like one.
|
|
18
|
+
*
|
|
19
|
+
* Read entirely off `index`/`members` -- the shape's own structure -- so a
|
|
20
|
+
* named declaration can ask this exact question about its body (below)
|
|
21
|
+
* without deriving anything beyond the one index value a real dictionary
|
|
22
|
+
* answer needs.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The index signatures a shape physically has, which is not always the number
|
|
26
|
+
* TypeScript reports.
|
|
27
|
+
*
|
|
28
|
+
* `[x: string | number]: unknown` (mongodb's `WriteConcernErrorResult`) is ONE
|
|
29
|
+
* index signature the program wrote, and the checker models it as TWO index
|
|
30
|
+
* infos -- one per key domain -- carrying the identical value type. Reading
|
|
31
|
+
* that as "more than one index signature" refuses a shape that declares a
|
|
32
|
+
* single one.
|
|
33
|
+
*
|
|
34
|
+
* The collapse is a fact about the language, not a convenience: a property key
|
|
35
|
+
* IS a string (ECMA-262 `ToPropertyKey`), so `obj[1]` and `obj['1']` name the
|
|
36
|
+
* same property, and TypeScript itself enforces that a numeric index type is
|
|
37
|
+
* assignable to the string one (TS2413). A string-keyed `gea::Dictionary`
|
|
38
|
+
* therefore already carries every key the numeric domain admits -- the numeric
|
|
39
|
+
* info is a VIEW of that storage, never storage of its own.
|
|
40
|
+
*
|
|
41
|
+
* Gated on the two infos agreeing EXACTLY on their value id. Assignability is
|
|
42
|
+
* not identity, and a shape whose numeric domain carries a genuinely narrower
|
|
43
|
+
* value -- `{ [k: string]: unknown; [k: number]: string }` -- has two different
|
|
44
|
+
* carriers and keeps refusing, rather than being silently widened to one.
|
|
45
|
+
*/
|
|
46
|
+
export const physicalIndexesOf = (shape) => {
|
|
47
|
+
if (shape.index.length !== 2)
|
|
48
|
+
return shape.index;
|
|
49
|
+
const stringIndex = shape.index.find((one) => one.key === 'string');
|
|
50
|
+
const numberIndex = shape.index.find((one) => one.key === 'number');
|
|
51
|
+
if (!stringIndex || !numberIndex)
|
|
52
|
+
return shape.index;
|
|
53
|
+
if (stringIndex.value !== numberIndex.value || stringIndex.readonly !== numberIndex.readonly)
|
|
54
|
+
return shape.index;
|
|
55
|
+
return [stringIndex];
|
|
56
|
+
};
|
|
57
|
+
export const dictionaryIndexOf = (shape) => {
|
|
58
|
+
const indexes = physicalIndexesOf(shape);
|
|
59
|
+
const [only] = indexes;
|
|
60
|
+
if (shape.members.length !== 0 || indexes.length !== 1 || !only)
|
|
61
|
+
return null;
|
|
62
|
+
return carriableIndexOf(only);
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The record-field key text for one structural member.
|
|
66
|
+
*
|
|
67
|
+
* A string or number key is spelled exactly as the language names it --
|
|
68
|
+
* `String(key.value)`, unchanged from before -- because that text *is* the
|
|
69
|
+
* field the program wrote. A symbol key has no such text: two symbols the
|
|
70
|
+
* program never confuses (`Symbol('x')` created twice, or `Symbol.iterator`
|
|
71
|
+
* versus a `unique symbol` that happens to print the same) can share a
|
|
72
|
+
* printable description, so the description is not a name a field could
|
|
73
|
+
* safely be keyed by. What a symbol key *does* have, uniquely, is the
|
|
74
|
+
* declaration `structural.ts`'s `keyOfSymbol` already anchored it to -- the
|
|
75
|
+
* same identity `structuralShapeKey` (semantics/model/structural-types.ts)
|
|
76
|
+
* already keys a shape by (`sym(<declaration>)`), which is why this reuses
|
|
77
|
+
* that exact text rather than inventing a second spelling for one fact. This
|
|
78
|
+
* is a compile-time-constant identity, not a runtime string, so the field it
|
|
79
|
+
* names is an ordinary struct member -- `targets/cpp/types.ts`'s
|
|
80
|
+
* `cppRecordFieldName` is the one place that text becomes the member's actual
|
|
81
|
+
* C++ name, the same split a tuple's positional key already uses.
|
|
82
|
+
*/
|
|
83
|
+
export const recordFieldKeyOf = (key) => key.kind === 'symbol' ? symbolPropertyKeyText(key.declaration) : String(key.value);
|
|
84
|
+
export const recordAccessorsOf = (shape,
|
|
85
|
+
/** The caller's own `deriveStored` -- the identical call a data field's carrier comes from. See `RecordAccessor.value`. */
|
|
86
|
+
deriveStored) => shape.members.flatMap((member) => member.accessor
|
|
87
|
+
? [
|
|
88
|
+
{
|
|
89
|
+
key: recordFieldKeyOf(member.key),
|
|
90
|
+
// The declaration *is* the function's identity here: `functionId`
|
|
91
|
+
// is the one rule that maps a declaration to the body compiled
|
|
92
|
+
// for it, and re-spelling it locally would be a second answer to
|
|
93
|
+
// a question the identity module already owns.
|
|
94
|
+
getter: member.accessor.getter ? functionId(member.accessor.getter) : null,
|
|
95
|
+
setter: member.accessor.setter ? functionId(member.accessor.setter) : null,
|
|
96
|
+
value: deriveStored(member.type)
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
: []);
|
|
100
|
+
/**
|
|
101
|
+
* Whether an object shape is pure data: named members, every one a value rather
|
|
102
|
+
* than something callable, none accessor-backed (an accessor has no storage and
|
|
103
|
+
* so contributes no field), and no index signature.
|
|
104
|
+
*
|
|
105
|
+
* This is the whole of the transparent-versus-opaque question for a host type,
|
|
106
|
+
* and it is asked of the CHECKER rather than of a table. A hand-maintained list
|
|
107
|
+
* of "constructible host types" would be a second authority over a question the
|
|
108
|
+
* declaration already answers, and it would drift the first time the host grew
|
|
109
|
+
* a method.
|
|
110
|
+
*/
|
|
111
|
+
export const isDataOnlyObjectShape = (shape, shapeOf) => {
|
|
112
|
+
if (shape?.kind !== 'object')
|
|
113
|
+
return false;
|
|
114
|
+
// `membersDropped` is the whole reason this is not simply a scan of
|
|
115
|
+
// `members`: an ambient body arrives already filtered to its data, so a
|
|
116
|
+
// host interface of pure methods reads as "no callable members" unless the
|
|
117
|
+
// projection itself disqualifies it.
|
|
118
|
+
if (shape.membersDropped)
|
|
119
|
+
return false;
|
|
120
|
+
if (shape.members.length === 0 || shape.index.length > 0)
|
|
121
|
+
return false;
|
|
122
|
+
return shape.members.every((member) => member.accessor === null && shapeOf(member.type)?.kind !== 'signature');
|
|
123
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Representation } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a payload in an absence tag without stacking two of them.
|
|
4
|
+
*
|
|
5
|
+
* Stacking is only ever a collapse: one flag cannot say which of two absent
|
|
6
|
+
* values it stands for. When the tags agree the wrapper adds nothing -- an
|
|
7
|
+
* `Optional<T>` already tagged `null` *is* `T | null`. When they differ the
|
|
8
|
+
* carrier would have to encode `null` and `undefined` in one boolean, and they
|
|
9
|
+
* are distinguishable values, so it is refused with that stated rather than
|
|
10
|
+
* silently answering one of the two questions wrong.
|
|
11
|
+
*/
|
|
12
|
+
export declare const optionalOf: (payload: Representation, absence: "null" | "undefined") => Representation;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const unresolved = (reason) => ({ kind: 'unresolved', reason });
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a payload in an absence tag without stacking two of them.
|
|
4
|
+
*
|
|
5
|
+
* Stacking is only ever a collapse: one flag cannot say which of two absent
|
|
6
|
+
* values it stands for. When the tags agree the wrapper adds nothing -- an
|
|
7
|
+
* `Optional<T>` already tagged `null` *is* `T | null`. When they differ the
|
|
8
|
+
* carrier would have to encode `null` and `undefined` in one boolean, and they
|
|
9
|
+
* are distinguishable values, so it is refused with that stated rather than
|
|
10
|
+
* silently answering one of the two questions wrong.
|
|
11
|
+
*/
|
|
12
|
+
export const optionalOf = (payload, absence) => {
|
|
13
|
+
if (payload.kind === 'unresolved')
|
|
14
|
+
return payload;
|
|
15
|
+
if (payload.kind === 'optional') {
|
|
16
|
+
return payload.absence === absence
|
|
17
|
+
? payload
|
|
18
|
+
: unresolved('no primitive for a carrier tagged with both absent values; one flag cannot say which one it holds');
|
|
19
|
+
}
|
|
20
|
+
if (payload.kind === 'undefined') {
|
|
21
|
+
return absence === 'undefined'
|
|
22
|
+
? payload
|
|
23
|
+
: unresolved('no primitive for a carrier tagged with both absent values; one flag cannot say which one it holds');
|
|
24
|
+
}
|
|
25
|
+
// A host handle already carries its own absence, so an `Optional` around one
|
|
26
|
+
// is a SECOND absence flag over a value that has one.
|
|
27
|
+
//
|
|
28
|
+
// This is the host's own answer, not an optimization. Every handle shape in
|
|
29
|
+
// this compiler is absence-carrying by construction: `gea::NativeHandle`
|
|
30
|
+
// default-constructs to `id_ = -1`, and a host-stated carrier does the same --
|
|
31
|
+
// the Apple bridge writes `struct NSObject { double handle = 0; explicit
|
|
32
|
+
// operator bool() const { return handle != 0; } }`. And the hosts THEMSELVES
|
|
33
|
+
// spell a nullable handle as a plain one: the Apple package declares
|
|
34
|
+
// `image: NSImage | null` in TypeScript and `void installToolbar(std::string,
|
|
35
|
+
// NSObject)` in the C++ its own generator writes for the same nullable
|
|
36
|
+
// parameter. So `NSImage | null` and `NSImage` are one physical type at that
|
|
37
|
+
// boundary, and two carriers for it would be the two-authorities defect --
|
|
38
|
+
// every host call needing a conversion between a type and itself, which is
|
|
39
|
+
// exactly what emitted `Optional<NSImage>.handle` and did not compile.
|
|
40
|
+
//
|
|
41
|
+
// `null` only. `undefined` is a JavaScript state no host produces: nothing
|
|
42
|
+
// across an ObjC boundary is ever anything but an object or nil, so a carrier
|
|
43
|
+
// asked to hold `T | undefined` is being asked a question about the program's
|
|
44
|
+
// own values and keeps the flag that answers it.
|
|
45
|
+
if (payload.kind === 'native-handle' && absence === 'null')
|
|
46
|
+
return payload;
|
|
47
|
+
// A refcounted class instance is the same argument in the program's own
|
|
48
|
+
// half. `gea::Ref<T>` default-constructs to `nullptr` and converts to `bool`
|
|
49
|
+
// over exactly that, so `TreeNode | null` and `TreeNode` are one physical
|
|
50
|
+
// type -- and `targets/cpp/types.ts`'s `carriesAbsence` has always said so,
|
|
51
|
+
// which is why the emitter needed no new spelling for it.
|
|
52
|
+
//
|
|
53
|
+
// The second flag was not free: `Optional<Ref<T>>` is two words where one
|
|
54
|
+
// would do, so every nullable field doubled, every parameter carrying one
|
|
55
|
+
// was passed in two registers, and every read of it branched on a tag beside
|
|
56
|
+
// a pointer that already held the answer. Measured on
|
|
57
|
+
// `bench/comparison/fixtures/binary_trees.ts`, whose `left`/`right` are both
|
|
58
|
+
// `TreeNode | null`: 84.5ms to 63.0ms.
|
|
59
|
+
//
|
|
60
|
+
// `shared-refcount` only, and `null` only. An `owned` or `borrowed` instance
|
|
61
|
+
// is not a handle to a heap object -- there is no null state to stand for the
|
|
62
|
+
// absence -- and `undefined` is a JavaScript state the pointer cannot spell,
|
|
63
|
+
// exactly as for a host handle.
|
|
64
|
+
if (payload.kind === 'class-ref' && payload.ownership === 'shared-refcount' && absence === 'null')
|
|
65
|
+
return payload;
|
|
66
|
+
// The box is the other carrier that already holds its own absence, and it
|
|
67
|
+
// holds BOTH of them: `gea::Value`'s tag has a `Null` state and an
|
|
68
|
+
// `Undefined` state (gea_runtime.h), and a default-constructed box IS
|
|
69
|
+
// `undefined`. So `any | undefined` and `any` are one physical type, which
|
|
70
|
+
// is also what the checker says -- `any` already admits `undefined`, and
|
|
71
|
+
// TypeScript types the body binding of `a?: any` as plain `any`.
|
|
72
|
+
//
|
|
73
|
+
// Wrapping anyway is the two-authorities defect in its exact shape, and it
|
|
74
|
+
// was measured as one: the ABI projection declared `optional(dynamic,
|
|
75
|
+
// undefined)` for every `a?: any` parameter while the body bound `dynamic`,
|
|
76
|
+
// so `projection/abi.ts` refused the convention of fifteen functions --
|
|
77
|
+
// every callback in a heterogeneous listener table -- and no body that took
|
|
78
|
+
// one could lower.
|
|
79
|
+
//
|
|
80
|
+
// Both absences, unlike the handle above, because unlike a host handle a box
|
|
81
|
+
// really does distinguish them: `x === null` and `x === undefined` each read
|
|
82
|
+
// the tag they name (`emit-presence.ts`'s `absenceComparisonText`), so
|
|
83
|
+
// collapsing loses nothing a second flag would have carried.
|
|
84
|
+
if (payload.kind === 'dynamic')
|
|
85
|
+
return payload;
|
|
86
|
+
return { kind: 'optional', payload, absence };
|
|
87
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ComponentId, SemanticResultId } from '../identity/ids.js';
|
|
2
|
+
import { type Representation } from './model.js';
|
|
3
|
+
/**
|
|
4
|
+
* The sealed representation plan.
|
|
5
|
+
*
|
|
6
|
+
* The plan is the single authority for what a value physically *is*. Producers
|
|
7
|
+
* never mutate it while a round is running: they add immutable evidence, and
|
|
8
|
+
* selection happens once, per authority component, after that component has
|
|
9
|
+
* reached quiescence. That ordering is what removes the whole category of
|
|
10
|
+
* "later reconciliation" passes -- there is no window in which one consumer can
|
|
11
|
+
* read a weaker answer that another consumer has already replaced.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* How strong a piece of evidence is.
|
|
15
|
+
*
|
|
16
|
+
* Conservative evidence is a real answer while an operation is unresolved, but
|
|
17
|
+
* it is a *candidate*, never a co-equal authority. When exact evidence arrives
|
|
18
|
+
* for the same coordinate, the transaction selects it and retires the candidate
|
|
19
|
+
* from selection while keeping it for diagnostics.
|
|
20
|
+
*/
|
|
21
|
+
export type EvidenceStrength = 'conservative' | 'exact';
|
|
22
|
+
export interface RepresentationEvidence {
|
|
23
|
+
readonly result: SemanticResultId;
|
|
24
|
+
readonly representation: Representation;
|
|
25
|
+
readonly strength: EvidenceStrength;
|
|
26
|
+
/** Which producer published this, so a conflict names both sides. */
|
|
27
|
+
readonly producer: string;
|
|
28
|
+
/**
|
|
29
|
+
* True when the language itself requires a closed family or join at this
|
|
30
|
+
* coordinate. Two exact rows may coexist only under this flag; otherwise
|
|
31
|
+
* disagreement is a conflict, not a menu.
|
|
32
|
+
*/
|
|
33
|
+
readonly joinsClosedFamily: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Two exact publications that disagree at one coordinate. */
|
|
36
|
+
export interface RepresentationConflict {
|
|
37
|
+
readonly result: SemanticResultId;
|
|
38
|
+
readonly component: ComponentId;
|
|
39
|
+
readonly left: RepresentationEvidence;
|
|
40
|
+
readonly right: RepresentationEvidence;
|
|
41
|
+
}
|
|
42
|
+
export interface SealedRepresentationPlan {
|
|
43
|
+
/** The selected carrier for every published result. */
|
|
44
|
+
readonly selected: ReadonlyMap<SemanticResultId, Representation>;
|
|
45
|
+
/** Every row ever published, retained for diagnostics only. */
|
|
46
|
+
readonly evidence: ReadonlyMap<SemanticResultId, readonly RepresentationEvidence[]>;
|
|
47
|
+
readonly conflicts: readonly RepresentationConflict[];
|
|
48
|
+
}
|
|
49
|
+
export interface RepresentationPlanBuilder {
|
|
50
|
+
/** Add immutable evidence. Never overwrites; selection happens at commit. */
|
|
51
|
+
readonly publish: (evidence: RepresentationEvidence) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Select and commit one authority component. A component with a conflict
|
|
54
|
+
* commits nothing: connected members commit together or stay blocked, so no
|
|
55
|
+
* consumer can observe half a component.
|
|
56
|
+
*/
|
|
57
|
+
readonly commitComponent: (component: ComponentId, members: readonly SemanticResultId[]) => readonly RepresentationConflict[];
|
|
58
|
+
readonly seal: () => SealedRepresentationPlan;
|
|
59
|
+
}
|
|
60
|
+
export declare const createRepresentationPlanBuilder: () => RepresentationPlanBuilder;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { representationKey } from './model.js';
|
|
2
|
+
const selectFrom = (rows) => {
|
|
3
|
+
const exact = rows.filter((row) => row.strength === 'exact');
|
|
4
|
+
if (exact.length === 0) {
|
|
5
|
+
const conservative = rows[0];
|
|
6
|
+
return { selected: conservative ? conservative.representation : null, conflict: null };
|
|
7
|
+
}
|
|
8
|
+
const first = exact[0];
|
|
9
|
+
if (!first)
|
|
10
|
+
return { selected: null, conflict: null };
|
|
11
|
+
// Hoisted: the loop compares every candidate against this one carrier, and
|
|
12
|
+
// rebuilding its key per candidate made the comparison quadratic in the
|
|
13
|
+
// number of exact rows for a key that never changes.
|
|
14
|
+
const firstKey = representationKey(first.representation);
|
|
15
|
+
for (const candidate of exact.slice(1)) {
|
|
16
|
+
if (representationKey(candidate.representation) === firstKey)
|
|
17
|
+
continue;
|
|
18
|
+
// A closed family is the one case where the language really does produce
|
|
19
|
+
// two exact answers; anything else is two producers disagreeing, and
|
|
20
|
+
// letting a consumer pick would make lookup order a semantic decision.
|
|
21
|
+
if (candidate.joinsClosedFamily && first.joinsClosedFamily)
|
|
22
|
+
continue;
|
|
23
|
+
return { selected: null, conflict: [first, candidate] };
|
|
24
|
+
}
|
|
25
|
+
return { selected: first.representation, conflict: null };
|
|
26
|
+
};
|
|
27
|
+
export const createRepresentationPlanBuilder = () => {
|
|
28
|
+
const evidence = new Map();
|
|
29
|
+
const selected = new Map();
|
|
30
|
+
const committed = new Set();
|
|
31
|
+
const conflicts = [];
|
|
32
|
+
let sealed = false;
|
|
33
|
+
const publish = (row) => {
|
|
34
|
+
if (sealed)
|
|
35
|
+
throw new Error(`representation plan is sealed; ${row.producer} published ${row.result} after freeze`);
|
|
36
|
+
const rows = evidence.get(row.result) ?? [];
|
|
37
|
+
rows.push(row);
|
|
38
|
+
evidence.set(row.result, rows);
|
|
39
|
+
};
|
|
40
|
+
const commitComponent = (component, members) => {
|
|
41
|
+
if (sealed)
|
|
42
|
+
throw new Error(`representation plan is sealed; component ${component} cannot commit after freeze`);
|
|
43
|
+
if (committed.has(component))
|
|
44
|
+
throw new Error(`component ${component} committed twice`);
|
|
45
|
+
const found = [];
|
|
46
|
+
const pending = new Map();
|
|
47
|
+
for (const member of members) {
|
|
48
|
+
const rows = evidence.get(member) ?? [];
|
|
49
|
+
const { selected: choice, conflict } = selectFrom(rows);
|
|
50
|
+
if (conflict) {
|
|
51
|
+
found.push({ result: member, component, left: conflict[0], right: conflict[1] });
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (choice)
|
|
55
|
+
pending.set(member, choice);
|
|
56
|
+
}
|
|
57
|
+
if (found.length > 0) {
|
|
58
|
+
conflicts.push(...found);
|
|
59
|
+
return found;
|
|
60
|
+
}
|
|
61
|
+
committed.add(component);
|
|
62
|
+
for (const [member, choice] of pending)
|
|
63
|
+
selected.set(member, choice);
|
|
64
|
+
return [];
|
|
65
|
+
};
|
|
66
|
+
const seal = () => {
|
|
67
|
+
sealed = true;
|
|
68
|
+
const frozenEvidence = new Map();
|
|
69
|
+
for (const [result, rows] of evidence)
|
|
70
|
+
frozenEvidence.set(result, Object.freeze([...rows]));
|
|
71
|
+
return Object.freeze({
|
|
72
|
+
selected: new Map(selected),
|
|
73
|
+
evidence: frozenEvidence,
|
|
74
|
+
conflicts: Object.freeze([...conflicts])
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
return { publish, commitComponent, seal };
|
|
78
|
+
};
|