@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,95 @@
|
|
|
1
|
+
import type { DeclarationId, FunctionId } from '../../identity/ids.js';
|
|
2
|
+
import type { CallableAbi } from '../../representation/model.js';
|
|
3
|
+
import type { ClassLayout } from '../../projection/classes.js';
|
|
4
|
+
import { extendsClass, virtualDispatchKey, virtualMethodFamiliesOf, type VirtualDispatchVerdict, type VirtualFamilyRefusal, type VirtualFamilyVerdict, type VirtualMemberRole, type VirtualMethodFamily, type VirtualMethodImplementor } from '../../projection/dispatch.js';
|
|
5
|
+
export { extendsClass, virtualDispatchKey, virtualMethodFamiliesOf, type VirtualDispatchVerdict, type VirtualFamilyRefusal, type VirtualFamilyVerdict, type VirtualMemberRole, type VirtualMethodFamily, type VirtualMethodImplementor };
|
|
6
|
+
import { type ConversionSite } from './emit-narrowing.js';
|
|
7
|
+
/**
|
|
8
|
+
* Dispatch for a method the program overrides.
|
|
9
|
+
*
|
|
10
|
+
* `class-layout.ts` resolves a member by walking UP from the receiver's class,
|
|
11
|
+
* which is the language's lookup only when the receiver's class is known
|
|
12
|
+
* exactly. It is not what a CALL does: a receiver annotated as a base holds
|
|
13
|
+
* whatever was constructed, and the language runs that object's implementation.
|
|
14
|
+
* Binding the body the upward walk found is therefore right only while nothing
|
|
15
|
+
* below redeclares the key -- and when something does, the emitted program runs
|
|
16
|
+
* the base's body for every instance of a subclass, compiles, links, and is
|
|
17
|
+
* silently wrong. gea3d-cube is the worked case: `Object3D.collectSelf` is
|
|
18
|
+
* empty and `Mesh`/`Light` override it, so the renderer's scene walk collected
|
|
19
|
+
* zero meshes and painted a cleared frame with no diagnostic anywhere.
|
|
20
|
+
*
|
|
21
|
+
* The mechanism here is C++'s own. The emitted structs already model the
|
|
22
|
+
* language's inheritance as C++ inheritance (`records.ts`), single and with the
|
|
23
|
+
* base subobject at offset zero -- which `gea::Ref`'s converting constructor
|
|
24
|
+
* asserts -- so a virtual member on the root struct dispatches exactly as the
|
|
25
|
+
* language specifies, at the cost of one vtable pointer per object. Nothing
|
|
26
|
+
* else in the emission has to change shape: the member forwards to the same
|
|
27
|
+
* free-function body the direct bind used to name.
|
|
28
|
+
*/
|
|
29
|
+
export interface VirtualMethodRefusal {
|
|
30
|
+
readonly key: string;
|
|
31
|
+
readonly owner: DeclarationId;
|
|
32
|
+
readonly reason: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The C++ member one family dispatches through.
|
|
36
|
+
*
|
|
37
|
+
* Prefixed rather than named after the key alone: a class may declare a FIELD
|
|
38
|
+
* and a method whose names would otherwise collide inside one struct, and the
|
|
39
|
+
* field's spelling is already `cppRecordFieldName`'s.
|
|
40
|
+
*/
|
|
41
|
+
export declare const cppVirtualMemberName: (key: string, role?: VirtualMemberRole) => string;
|
|
42
|
+
export interface VirtualMethodEmission {
|
|
43
|
+
/** Member declarations to place inside each struct, by struct name. */
|
|
44
|
+
readonly membersByStruct: ReadonlyMap<string, readonly string[]>;
|
|
45
|
+
/** Out-of-line definitions, emitted after every body has been declared. */
|
|
46
|
+
readonly definitions: readonly string[];
|
|
47
|
+
/** Families that cannot be dispatched, so the call sites refuse rather than bind one body. */
|
|
48
|
+
readonly refused: readonly VirtualMethodRefusal[];
|
|
49
|
+
/** Every `class key` a call site may dispatch, with the root member ABI it must call. */
|
|
50
|
+
readonly dispatched: ReadonlyMap<string, CallableAbi>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The struct members and out-of-line definitions for every family
|
|
54
|
+
* `verdict` already proved dispatchable.
|
|
55
|
+
*
|
|
56
|
+
* This function used to decide dispatchability itself (an ABI-compatibility
|
|
57
|
+
* walk plus a capture-environment refusal, both duplicated between here and
|
|
58
|
+
* whatever asked the same question before a call site was allowed to bind a
|
|
59
|
+
* body directly). That verdict is `projection/dispatch.ts`'s
|
|
60
|
+
* `virtualDispatchVerdictOf` now, computed once by `translation-unit.ts` from
|
|
61
|
+
* the published `IrBody.facts` and threaded in as `verdict` -- this file
|
|
62
|
+
* reads the fact and renders it, rather than re-deriving it from a whole-unit
|
|
63
|
+
* capture index at render time the way `targets/cpp/captures.ts`'s
|
|
64
|
+
* `buildCaptureIndex` used to require.
|
|
65
|
+
*/
|
|
66
|
+
export declare const virtualMethodEmission: (site: ConversionSite, classes: ReadonlyMap<DeclarationId, ClassLayout>, abiOf: (callable: FunctionId) => CallableAbi | null, verdict: VirtualDispatchVerdict) => VirtualMethodEmission;
|
|
67
|
+
export interface PrototypeReadHooks {
|
|
68
|
+
readonly membersByStruct: ReadonlyMap<string, readonly string[]>;
|
|
69
|
+
readonly definitions: readonly string[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The runtime's `NativePrototypeTable` hooks for every class that declares a
|
|
73
|
+
* getter or method, so a boxed instance answers a dynamic read of either.
|
|
74
|
+
*
|
|
75
|
+
* A class accessor has no storage (`ClassLayout.accessors`), so the boxed
|
|
76
|
+
* payload's field table cannot see it, and `Value::getProperty` found nothing
|
|
77
|
+
* and answered `undefined` -- `@hono/node-server` reads `request.method` off
|
|
78
|
+
* an `Object.create`d instance it only holds as `any`. The hook calls the
|
|
79
|
+
* getter's own body on the instance and boxes its result; a getter whose
|
|
80
|
+
* result has no boxed form is left out rather than answered wrongly.
|
|
81
|
+
*
|
|
82
|
+
* The nearest ancestor with getters declares the members `virtual`, so the
|
|
83
|
+
* runtime's `static_cast` to the box's declared class still reaches the
|
|
84
|
+
* dynamic class's getters; a class without getters of its own inherits them.
|
|
85
|
+
*
|
|
86
|
+
* `readDynamically` is the reflection census's verdict per class (the same
|
|
87
|
+
* `full`-demand answer `records.ts` spells the struct's own dynamic field
|
|
88
|
+
* protocol from, bases included): only a class some box can hold is ever
|
|
89
|
+
* asked for a prototype property through `gea::Value`, and a class no box
|
|
90
|
+
* holds gets no hook -- the hook's method arm boxes every method into a
|
|
91
|
+
* `gea::Value` function object, which a program whose classes never reach a
|
|
92
|
+
* dynamic carrier must not spell at all (`test/stored-listener-native-flow`,
|
|
93
|
+
* `native-method-overrides`' `emitted-lacks: gea::Value::box`).
|
|
94
|
+
*/
|
|
95
|
+
export declare const prototypeReadHooks: (classes: ReadonlyMap<DeclarationId, ClassLayout>, abiOf: (callable: FunctionId) => CallableAbi | null, capturesNothing: (callable: FunctionId) => boolean, readDynamically: (declaration: DeclarationId) => boolean) => PrototypeReadHooks;
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { extendsClass, virtualDispatchKey, virtualMethodFamiliesOf } from '../../projection/dispatch.js';
|
|
2
|
+
export { extendsClass, virtualDispatchKey, virtualMethodFamiliesOf };
|
|
3
|
+
import { cppFormalName } from './emit-context.js';
|
|
4
|
+
import { cppAbiParameterType, cppBodyName, cppClassName, cppRecordFieldName, cppResultTypeOf, cppStringLiteral, cppTypeOf, cppUndefinedIn } from './types.js';
|
|
5
|
+
import { alignedValueText, dynamicCarrierBoxText } from './emit-narrowing.js';
|
|
6
|
+
/**
|
|
7
|
+
* The C++ member one family dispatches through.
|
|
8
|
+
*
|
|
9
|
+
* Prefixed rather than named after the key alone: a class may declare a FIELD
|
|
10
|
+
* and a method whose names would otherwise collide inside one struct, and the
|
|
11
|
+
* field's spelling is already `cppRecordFieldName`'s.
|
|
12
|
+
*/
|
|
13
|
+
export const cppVirtualMemberName = (key, role = 'call') => `${role === 'set' ? 'gea_vset_' : role === 'get' ? 'gea_vget_' : 'gea_vcall_'}${cppRecordFieldName(key)}`;
|
|
14
|
+
/** The parameter list a family's member takes: the body's ABI minus the receiver, which becomes `this`. */
|
|
15
|
+
const memberFormalsOf = (abi) => abi.parameters.map((parameter, ordinal) => `${cppAbiParameterType(parameter)} ${cppFormalName(ordinal)}`);
|
|
16
|
+
/**
|
|
17
|
+
* The receiver/parameter/result conversion TEXT for a class-ref pair.
|
|
18
|
+
*
|
|
19
|
+
* `projection/dispatch.ts`'s `virtualDispatchVerdictOf` already proved this
|
|
20
|
+
* pair is one of the two shapes below (same-or-ancestor, or a runtime-checked
|
|
21
|
+
* descendant) before this file is ever asked to spell it -- see that module's
|
|
22
|
+
* `classRefConvertible`, the identical structural test with no text attached.
|
|
23
|
+
* A `null` return here on a pair the verdict approved is therefore this
|
|
24
|
+
* file's own bug, not a program defect, and `virtualMethodAdapterOf` treats it
|
|
25
|
+
* as exactly that (a thrown internal error, never a refusal).
|
|
26
|
+
*/
|
|
27
|
+
const classRefConversionText = (classes, source, target, text) => {
|
|
28
|
+
if (source.ownership !== 'shared-refcount' || target.ownership !== 'shared-refcount')
|
|
29
|
+
return null;
|
|
30
|
+
if (source.declaration === target.declaration || extendsClass(classes, source.declaration, target.declaration)) {
|
|
31
|
+
return `${cppTypeOf(target)}(${text})`;
|
|
32
|
+
}
|
|
33
|
+
if (!extendsClass(classes, target.declaration, source.declaration))
|
|
34
|
+
return null;
|
|
35
|
+
const possible = [...classes.keys()]
|
|
36
|
+
.filter((declaration) => declaration === target.declaration || extendsClass(classes, declaration, target.declaration))
|
|
37
|
+
.sort((left, right) => String(left).localeCompare(String(right)));
|
|
38
|
+
if (possible.length === 0)
|
|
39
|
+
return null;
|
|
40
|
+
const test = `gea::host::hasNativeClassLayoutRef<${possible.map(cppClassName).join(', ')}>(${text})`;
|
|
41
|
+
const failure = `std::fprintf(stderr, "gea: virtual dispatch argument is not an instance of ${String(target.declaration)}\\n"); ` + 'std::abort();';
|
|
42
|
+
return `[&]() -> ${cppTypeOf(target)} { if (!${test}) { ${failure} } return gea::host::downcastClassRef<${cppClassName(target.declaration)}>(${text}); }()`;
|
|
43
|
+
};
|
|
44
|
+
const virtualValueConversionText = (site, classes, source, target, text) => {
|
|
45
|
+
if (source.kind === 'class-ref' && target.kind === 'class-ref')
|
|
46
|
+
return classRefConversionText(classes, source, target, text);
|
|
47
|
+
return alignedValueText(site, 'virtual-methods.ts:189', source, target, text);
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* One implementor's out-of-line body, as an expression the family's member
|
|
51
|
+
* forwards to.
|
|
52
|
+
*
|
|
53
|
+
* Every conversion here was already PROVED to exist by `virtualDispatchVerdictOf`
|
|
54
|
+
* -- this function only has to spell it. A `null`/`undefined` from a text
|
|
55
|
+
* builder that the verdict already cleared is therefore an internal
|
|
56
|
+
* consistency error (this file drifting from `projection/dispatch.ts`'s own
|
|
57
|
+
* predicate), reported as a thrown `Error` rather than folded into
|
|
58
|
+
* `VirtualMethodEmission.refused`: refusing here would silently drop a
|
|
59
|
+
* program the verdict certified as dispatchable, which is worse than crashing
|
|
60
|
+
* loudly on a compiler bug.
|
|
61
|
+
*/
|
|
62
|
+
const virtualMethodAdapterOf = (site, classes, family, implementor, rootAbi, actualAbi) => {
|
|
63
|
+
// Every `?? drift(...)` below leans on `drift`'s `never` return type to
|
|
64
|
+
// both throw AND narrow the left-hand side to its non-null variant, rather
|
|
65
|
+
// than on an `if`-then-throw's control-flow narrowing -- the same value,
|
|
66
|
+
// asked the more robust of the two ways this file's own architecture
|
|
67
|
+
// rules already prefer over a non-null assertion.
|
|
68
|
+
const drift = (what) => throwVirtualAdapterDrift(family, implementor, `the dispatch verdict proved ${what} converts, but this file could not spell it`);
|
|
69
|
+
const receiverAbi = actualAbi.receiver ?? drift('a receiver');
|
|
70
|
+
const instanceValue = classes.get(implementor.declaration)?.instance ?? null;
|
|
71
|
+
const instance = instanceValue !== null && instanceValue.kind === 'class-ref' ? instanceValue : drift('a class-ref instance carrier');
|
|
72
|
+
const receiverText = virtualValueConversionText(site, classes, instance, receiverAbi, `gea::Ref<${cppClassName(implementor.declaration)}>::adopt(this, true)`) ?? drift('a receiver');
|
|
73
|
+
const actuals = [receiverText];
|
|
74
|
+
for (const [position, parameter] of actualAbi.parameters.entries()) {
|
|
75
|
+
const source = rootAbi.parameters[position];
|
|
76
|
+
if (source !== undefined) {
|
|
77
|
+
actuals.push(virtualValueConversionText(site, classes, source.value, parameter.value, cppFormalName(position)) ?? drift(`parameter ${position}`));
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (actualAbi.restFrom === position && parameter.value.kind === 'array-object') {
|
|
81
|
+
actuals.push(`gea::makeRef<gea::ArrayObject<${cppTypeOf(parameter.value.element)}>>()`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
actuals.push(cppUndefinedIn(parameter.value) ?? drift(`an undefined default for parameter ${position}`));
|
|
85
|
+
}
|
|
86
|
+
const invocation = `${cppBodyName(implementor.callable)}(${actuals.join(', ')})`;
|
|
87
|
+
const result = virtualValueConversionText(site, classes, actualAbi.result, rootAbi.result, invocation) ?? drift('the result');
|
|
88
|
+
return { result };
|
|
89
|
+
};
|
|
90
|
+
const throwVirtualAdapterDrift = (family, implementor, reason) => {
|
|
91
|
+
throw new Error(`virtual method adapter for ${implementor.declaration}.${family.key}: ${reason}`);
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* The struct members and out-of-line definitions for every family
|
|
95
|
+
* `verdict` already proved dispatchable.
|
|
96
|
+
*
|
|
97
|
+
* This function used to decide dispatchability itself (an ABI-compatibility
|
|
98
|
+
* walk plus a capture-environment refusal, both duplicated between here and
|
|
99
|
+
* whatever asked the same question before a call site was allowed to bind a
|
|
100
|
+
* body directly). That verdict is `projection/dispatch.ts`'s
|
|
101
|
+
* `virtualDispatchVerdictOf` now, computed once by `translation-unit.ts` from
|
|
102
|
+
* the published `IrBody.facts` and threaded in as `verdict` -- this file
|
|
103
|
+
* reads the fact and renders it, rather than re-deriving it from a whole-unit
|
|
104
|
+
* capture index at render time the way `targets/cpp/captures.ts`'s
|
|
105
|
+
* `buildCaptureIndex` used to require.
|
|
106
|
+
*/
|
|
107
|
+
export const virtualMethodEmission = (site, classes, abiOf, verdict) => {
|
|
108
|
+
const membersByStruct = new Map();
|
|
109
|
+
const definitions = [];
|
|
110
|
+
for (const { family, rootAbi } of verdict.families) {
|
|
111
|
+
const adapters = new Map();
|
|
112
|
+
for (const implementor of family.implementors) {
|
|
113
|
+
const actualAbi = abiOf(implementor.callable) ??
|
|
114
|
+
throwVirtualAdapterDrift(family, implementor, 'the dispatch verdict proved a callable convention exists, but this file found none');
|
|
115
|
+
adapters.set(implementor.declaration, virtualMethodAdapterOf(site, classes, family, implementor, rootAbi, actualAbi));
|
|
116
|
+
}
|
|
117
|
+
const formals = memberFormalsOf(rootAbi).join(', ');
|
|
118
|
+
const result = cppResultTypeOf(rootAbi.result);
|
|
119
|
+
if (family.abstractRoot) {
|
|
120
|
+
// Declared on the root and DEFINED, rather than pure virtual: nothing in
|
|
121
|
+
// the program can construct an abstract class, but `gea::Ref`'s
|
|
122
|
+
// operations table and every downcast name the root type, and an
|
|
123
|
+
// abstract C++ type is a different type for all of them. TypeScript
|
|
124
|
+
// already proves every concrete subclass overrides this, so the
|
|
125
|
+
// definition is unreachable and says so instead of returning a value it
|
|
126
|
+
// would have to invent.
|
|
127
|
+
const failure = `std::fprintf(stderr, "gea: abstract method ${String(family.root)}.${family.key} has no implementation\\n"); std::abort();`;
|
|
128
|
+
membersByStruct.set(cppClassName(family.root), [
|
|
129
|
+
...(membersByStruct.get(cppClassName(family.root)) ?? []),
|
|
130
|
+
` virtual ${result} ${cppVirtualMemberName(family.key, family.role)}(${formals});`
|
|
131
|
+
]);
|
|
132
|
+
definitions.push(`${result} ${cppClassName(family.root)}::${cppVirtualMemberName(family.key, family.role)}(${formals}) { ${failure} }`);
|
|
133
|
+
}
|
|
134
|
+
for (const implementor of family.implementors) {
|
|
135
|
+
const structName = cppClassName(implementor.declaration);
|
|
136
|
+
const isRoot = implementor.declaration === family.root && !family.abstractRoot;
|
|
137
|
+
const members = membersByStruct.get(structName) ?? [];
|
|
138
|
+
members.push(` ${isRoot ? 'virtual ' : ''}${result} ${cppVirtualMemberName(family.key, family.role)}(${formals})${isRoot ? '' : ' override'};`);
|
|
139
|
+
membersByStruct.set(structName, members);
|
|
140
|
+
const adapter = adapters.get(implementor.declaration);
|
|
141
|
+
if (adapter === undefined)
|
|
142
|
+
throw new Error(`virtual method adapter for ${implementor.declaration}.${family.key} was not retained`);
|
|
143
|
+
definitions.push(`${result} ${structName}::${cppVirtualMemberName(family.key, family.role)}(${formals}) { ${result === 'void' ? '' : 'return '}${adapter.result}; }`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
membersByStruct,
|
|
148
|
+
definitions,
|
|
149
|
+
refused: verdict.refused.map((refusal) => ({ key: refusal.key, owner: refusal.owner, reason: refusal.reason })),
|
|
150
|
+
dispatched: new Map([...verdict.dispatched].map(([key, entry]) => [key, entry.rootAbi]))
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The runtime's `NativePrototypeTable` hooks for every class that declares a
|
|
155
|
+
* getter or method, so a boxed instance answers a dynamic read of either.
|
|
156
|
+
*
|
|
157
|
+
* A class accessor has no storage (`ClassLayout.accessors`), so the boxed
|
|
158
|
+
* payload's field table cannot see it, and `Value::getProperty` found nothing
|
|
159
|
+
* and answered `undefined` -- `@hono/node-server` reads `request.method` off
|
|
160
|
+
* an `Object.create`d instance it only holds as `any`. The hook calls the
|
|
161
|
+
* getter's own body on the instance and boxes its result; a getter whose
|
|
162
|
+
* result has no boxed form is left out rather than answered wrongly.
|
|
163
|
+
*
|
|
164
|
+
* The nearest ancestor with getters declares the members `virtual`, so the
|
|
165
|
+
* runtime's `static_cast` to the box's declared class still reaches the
|
|
166
|
+
* dynamic class's getters; a class without getters of its own inherits them.
|
|
167
|
+
*
|
|
168
|
+
* `readDynamically` is the reflection census's verdict per class (the same
|
|
169
|
+
* `full`-demand answer `records.ts` spells the struct's own dynamic field
|
|
170
|
+
* protocol from, bases included): only a class some box can hold is ever
|
|
171
|
+
* asked for a prototype property through `gea::Value`, and a class no box
|
|
172
|
+
* holds gets no hook -- the hook's method arm boxes every method into a
|
|
173
|
+
* `gea::Value` function object, which a program whose classes never reach a
|
|
174
|
+
* dynamic carrier must not spell at all (`test/stored-listener-native-flow`,
|
|
175
|
+
* `native-method-overrides`' `emitted-lacks: gea::Value::box`).
|
|
176
|
+
*/
|
|
177
|
+
export const prototypeReadHooks = (classes, abiOf, capturesNothing, readDynamically) => {
|
|
178
|
+
// A method read yields a fresh function object over the body: a dynamic
|
|
179
|
+
// read is followed by a call, and nothing on that path compares identities.
|
|
180
|
+
const methods = (layout) => layout.methods.flatMap((method) => {
|
|
181
|
+
if (method.callable === null || !capturesNothing(method.callable))
|
|
182
|
+
return [];
|
|
183
|
+
const abi = abiOf(method.callable);
|
|
184
|
+
if (abi === null || abi.receiver === null)
|
|
185
|
+
return [];
|
|
186
|
+
const value = { kind: 'function-value-dispatch', abi };
|
|
187
|
+
const receiver = abi.receiver;
|
|
188
|
+
const formals = [
|
|
189
|
+
`${cppTypeOf(receiver)} gea_receiver`,
|
|
190
|
+
...abi.parameters.map((p, i) => `${cppAbiParameterType(p)} ${cppFormalName(i)}`)
|
|
191
|
+
];
|
|
192
|
+
const actuals = ['gea_receiver', ...abi.parameters.map((_, i) => cppFormalName(i))];
|
|
193
|
+
const thunk = `+[](void*, ${formals.join(', ')}) -> ${cppResultTypeOf(abi.result)} { return ${cppBodyName(method.callable)}(${actuals.join(', ')}); }`;
|
|
194
|
+
const boxed = dynamicCarrierBoxText(value, `${cppTypeOf(value)}{${thunk}, nullptr}`);
|
|
195
|
+
return boxed === null ? [] : [{ key: method.key, text: boxed }];
|
|
196
|
+
});
|
|
197
|
+
const readable = (layout) => [
|
|
198
|
+
...layout.accessors.flatMap((accessor) => {
|
|
199
|
+
if (accessor.getter === null || !capturesNothing(accessor.getter))
|
|
200
|
+
return [];
|
|
201
|
+
const abi = abiOf(accessor.getter);
|
|
202
|
+
if (abi === null || abi.receiver === null || abi.parameters.length > 0 || abi.restFrom !== null)
|
|
203
|
+
return [];
|
|
204
|
+
if (layout.instance?.kind !== 'class-ref' || abi.receiver.kind !== 'class-ref')
|
|
205
|
+
return [];
|
|
206
|
+
const self = `gea::Ref<${cppClassName(layout.declaration)}>::adopt(const_cast<${cppClassName(layout.declaration)}*>(this), true)`;
|
|
207
|
+
const receiver = classRefConversionText(classes, layout.instance, abi.receiver, self);
|
|
208
|
+
if (receiver === null)
|
|
209
|
+
return [];
|
|
210
|
+
const invocation = `${cppBodyName(accessor.getter)}(${receiver})`;
|
|
211
|
+
if (abi.result.kind === 'undefined' || cppResultTypeOf(abi.result) === 'void')
|
|
212
|
+
return [];
|
|
213
|
+
const boxed = abi.result.kind === 'dynamic' ? invocation : dynamicCarrierBoxText(abi.result, invocation);
|
|
214
|
+
return boxed === null ? [] : [{ key: accessor.key, text: boxed }];
|
|
215
|
+
}),
|
|
216
|
+
...methods(layout)
|
|
217
|
+
];
|
|
218
|
+
const own = new Map();
|
|
219
|
+
for (const [declaration, layout] of classes) {
|
|
220
|
+
if (!readDynamically(declaration))
|
|
221
|
+
continue;
|
|
222
|
+
const getters = readable(layout);
|
|
223
|
+
if (getters.length > 0)
|
|
224
|
+
own.set(declaration, getters);
|
|
225
|
+
}
|
|
226
|
+
const hookedAncestorOf = (declaration) => {
|
|
227
|
+
for (let base = classes.get(declaration)?.base ?? null; base !== null; base = classes.get(base)?.base ?? null)
|
|
228
|
+
if (own.has(base))
|
|
229
|
+
return base;
|
|
230
|
+
return null;
|
|
231
|
+
};
|
|
232
|
+
const membersByStruct = new Map();
|
|
233
|
+
const definitions = [];
|
|
234
|
+
for (const [declaration, getters] of own) {
|
|
235
|
+
const struct = cppClassName(declaration);
|
|
236
|
+
const ancestor = hookedAncestorOf(declaration);
|
|
237
|
+
const [lead, tail] = ancestor === null ? ['virtual ', ''] : ['', ' override'];
|
|
238
|
+
membersByStruct.set(struct, [
|
|
239
|
+
` ${lead}bool gea_readPrototypeProperty(const gea::PropertyKey& gea_key, gea::Value& gea_out) const${tail};`,
|
|
240
|
+
` ${lead}bool gea_hasPrototypeProperty(const gea::PropertyKey& gea_key) const${tail};`,
|
|
241
|
+
` ${lead}gea::detail::NativePrototypeOps::SetResult gea_setPrototypeProperty(const gea::PropertyKey& gea_key, const gea::Value& gea_value, const gea::Value& gea_receiver)${tail};`
|
|
242
|
+
]);
|
|
243
|
+
const inherited = ancestor === null ? null : cppClassName(ancestor);
|
|
244
|
+
const names = getters.map((getter) => cppStringLiteral(getter.key));
|
|
245
|
+
definitions.push([
|
|
246
|
+
`bool ${struct}::gea_readPrototypeProperty(const gea::PropertyKey& gea_key, gea::Value& gea_out) const {`,
|
|
247
|
+
' if (!gea_key.isSymbol()) {',
|
|
248
|
+
' const std::string& gea_name = gea_key.text();',
|
|
249
|
+
...getters.map((getter, index) => ` if (gea_name == ${names[index]}) { gea_out = ${getter.text}; return true; }`),
|
|
250
|
+
' }',
|
|
251
|
+
` return ${inherited === null ? 'false' : `${inherited}::gea_readPrototypeProperty(gea_key, gea_out)`};`,
|
|
252
|
+
'}',
|
|
253
|
+
`bool ${struct}::gea_hasPrototypeProperty(const gea::PropertyKey& gea_key) const {`,
|
|
254
|
+
` if (!gea_key.isSymbol() && (${names.map((name) => `gea_key.text() == ${name}`).join(' || ')})) return true;`,
|
|
255
|
+
` return ${inherited === null ? 'false' : `${inherited}::gea_hasPrototypeProperty(gea_key)`};`,
|
|
256
|
+
'}',
|
|
257
|
+
// Setters stay on the static paths; a dynamic write falls through to the payload's own fields.
|
|
258
|
+
`gea::detail::NativePrototypeOps::SetResult ${struct}::gea_setPrototypeProperty(const gea::PropertyKey&, const gea::Value&, const gea::Value&) {`,
|
|
259
|
+
' return gea::detail::NativePrototypeOps::SetResult::Absent;',
|
|
260
|
+
'}'
|
|
261
|
+
].join('\n'));
|
|
262
|
+
}
|
|
263
|
+
return { membersByStruct, definitions };
|
|
264
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@geastack/compiler",
|
|
3
|
+
"version": "1.0.15",
|
|
4
|
+
"description": "The geastack TypeScript-to-C++ compiler: one semantic spine, no source-shaped authority, no boxing of statically typed values.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/geastack/compiler.git"
|
|
9
|
+
},
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=20.19"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"bin": {
|
|
15
|
+
"geatsc": "dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/compiler.d.ts",
|
|
20
|
+
"import": "./dist/compiler.js"
|
|
21
|
+
},
|
|
22
|
+
"./package.json": "./package.json",
|
|
23
|
+
"./plugin": {
|
|
24
|
+
"types": "./dist/plugins/model.d.ts",
|
|
25
|
+
"import": "./dist/plugins/model.js"
|
|
26
|
+
},
|
|
27
|
+
"./preparation": {
|
|
28
|
+
"types": "./dist/project-preparation.d.ts",
|
|
29
|
+
"import": "./dist/project-preparation.js"
|
|
30
|
+
},
|
|
31
|
+
"./dist/*": "./dist/*",
|
|
32
|
+
"./src/*": "./src/*"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/**/*.js",
|
|
36
|
+
"dist/**/*.d.ts",
|
|
37
|
+
"src/targets/cpp/runtime/*.h",
|
|
38
|
+
"src/targets/cpp/runtime/gea_runtime_builtins.cpp",
|
|
39
|
+
"!dist/**/*.test.js",
|
|
40
|
+
"!dist/**/*.test.d.ts"
|
|
41
|
+
],
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public",
|
|
44
|
+
"registry": "https://registry.npmjs.org/"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"test:cli-plugins": "node --test test/cli-plugins.mjs",
|
|
48
|
+
"test:allocation-runtime": "node test/allocation-runtime.mjs",
|
|
49
|
+
"test:stored-listener-native-flow": "node test/stored-listener-native-flow.mjs",
|
|
50
|
+
"test:native-typed-field-read": "node test/native-typed-field-read.mjs",
|
|
51
|
+
"test:native-method-overrides": "node test/native-method-overrides.mjs",
|
|
52
|
+
"architecture": "node scripts/architecture.mjs && node scripts/refusal-keys.mjs",
|
|
53
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
54
|
+
"test:commonjs": "node --test test/commonjs-module-record.mjs",
|
|
55
|
+
"test:global-host-mutations": "node --test dist/semantics/global-this-host-bindings.test.js && node --test dist/semantics/normalize/deferred-intrinsic-protocols.test.js",
|
|
56
|
+
"test:binding-composition": "node --test dist/semantics/normalize/binding-composition.test.js",
|
|
57
|
+
"test:dynamic-value-metadata": "node test/dynamic-value-metadata.mjs",
|
|
58
|
+
"test:native-field-descriptors": "node test/native-field-descriptors.mjs",
|
|
59
|
+
"test:declaration-overlays": "node --test dist/semantics/declaration-overlay-transform.test.js",
|
|
60
|
+
"test:recursive-native-carriers": "node test/recursive-native-carriers.mjs",
|
|
61
|
+
"test:hot-path-shapes": "node test/hot-path-shapes.mjs",
|
|
62
|
+
"build": "npm run architecture && tsc -p tsconfig.json && node scripts/mark-bins-executable.mjs && npm run test:binding-composition && npm run test:global-host-mutations && node scripts/check-runtime-header.mjs && npm run test:recursive-native-carriers && npm run test:dynamic-value-metadata && node test/compiler-value-contracts.mjs && npm run test:declaration-overlays && npm run test:hot-path-shapes",
|
|
63
|
+
"gate": "node scripts/emitted-gate.mjs",
|
|
64
|
+
"format": "prettier --write .",
|
|
65
|
+
"format:check": "prettier --check .",
|
|
66
|
+
"check": "npm run architecture && npm run typecheck && npm run format:check",
|
|
67
|
+
"check:contracts": "npm run build && node test/contracts.mjs"
|
|
68
|
+
},
|
|
69
|
+
"dependencies": {
|
|
70
|
+
"@geastack/node-compat": "^1.0.7",
|
|
71
|
+
"typescript": "^5.9.3"
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"@types/node": "^22.15.3",
|
|
75
|
+
"fastify": "^5.0.0",
|
|
76
|
+
"find-my-way": "9.6.0",
|
|
77
|
+
"prettier": "^3.8.3"
|
|
78
|
+
},
|
|
79
|
+
"peerDependencies": {
|
|
80
|
+
"@geastack/apple": ">=0.1.0",
|
|
81
|
+
"@geastack/geatsc-plugin-apple-native": ">=0.1.0",
|
|
82
|
+
"@geastack/geatsc-plugin-gea": ">=0.1.0"
|
|
83
|
+
},
|
|
84
|
+
"peerDependenciesMeta": {
|
|
85
|
+
"@geastack/apple": {
|
|
86
|
+
"optional": true
|
|
87
|
+
},
|
|
88
|
+
"@geastack/geatsc-plugin-apple-native": {
|
|
89
|
+
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"@geastack/geatsc-plugin-gea": {
|
|
92
|
+
"optional": true
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|