@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.
Files changed (966) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +149 -0
  3. package/dist/cli-analyze.d.ts +1 -0
  4. package/dist/cli-analyze.js +61 -0
  5. package/dist/cli-coverage.d.ts +1 -0
  6. package/dist/cli-coverage.js +329 -0
  7. package/dist/cli-emit.d.ts +10 -0
  8. package/dist/cli-emit.js +398 -0
  9. package/dist/cli-module-graph.d.ts +18 -0
  10. package/dist/cli-module-graph.js +123 -0
  11. package/dist/cli-package-source.d.ts +5 -0
  12. package/dist/cli-package-source.js +116 -0
  13. package/dist/cli-project.d.ts +2 -0
  14. package/dist/cli-project.js +60 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.js +199 -0
  17. package/dist/compiler.d.ts +228 -0
  18. package/dist/compiler.js +1029 -0
  19. package/dist/conversion/algebra.d.ts +218 -0
  20. package/dist/conversion/algebra.js +155 -0
  21. package/dist/conversion/build.d.ts +67 -0
  22. package/dist/conversion/build.js +1378 -0
  23. package/dist/conversion/derive.d.ts +37 -0
  24. package/dist/conversion/derive.js +260 -0
  25. package/dist/conversion/graph-validation.d.ts +8 -0
  26. package/dist/conversion/graph-validation.js +97 -0
  27. package/dist/conversion/native-callable-adapter.d.ts +13 -0
  28. package/dist/conversion/native-callable-adapter.js +53 -0
  29. package/dist/conversion/native-class-reference.d.ts +12 -0
  30. package/dist/conversion/native-class-reference.js +39 -0
  31. package/dist/conversion/native-payload-transport.d.ts +25 -0
  32. package/dist/conversion/native-payload-transport.js +33 -0
  33. package/dist/conversion/native-selection.d.ts +49 -0
  34. package/dist/conversion/native-selection.js +135 -0
  35. package/dist/conversion/native-sum.d.ts +42 -0
  36. package/dist/conversion/native-sum.js +115 -0
  37. package/dist/conversion/nodes.d.ts +55 -0
  38. package/dist/conversion/nodes.js +91 -0
  39. package/dist/conversion/operand-view.d.ts +14 -0
  40. package/dist/conversion/operand-view.js +20 -0
  41. package/dist/conversion/record-view.d.ts +157 -0
  42. package/dist/conversion/record-view.js +273 -0
  43. package/dist/conversion/registry.d.ts +217 -0
  44. package/dist/conversion/registry.js +1 -0
  45. package/dist/diagnostics/model.d.ts +76 -0
  46. package/dist/diagnostics/model.js +60 -0
  47. package/dist/diagnostics/sweep.d.ts +31 -0
  48. package/dist/diagnostics/sweep.js +112 -0
  49. package/dist/identity/ids.d.ts +179 -0
  50. package/dist/identity/ids.js +212 -0
  51. package/dist/ir/absent-class-arm.d.ts +48 -0
  52. package/dist/ir/absent-class-arm.js +157 -0
  53. package/dist/ir/borrow-effects.d.ts +23 -0
  54. package/dist/ir/borrow-effects.js +151 -0
  55. package/dist/ir/borrowed-call-arguments.d.ts +40 -0
  56. package/dist/ir/borrowed-call-arguments.js +117 -0
  57. package/dist/ir/build.d.ts +168 -0
  58. package/dist/ir/build.js +459 -0
  59. package/dist/ir/call-dispatch.d.ts +38 -0
  60. package/dist/ir/call-dispatch.js +502 -0
  61. package/dist/ir/call-entry.d.ts +142 -0
  62. package/dist/ir/call-entry.js +386 -0
  63. package/dist/ir/callable-class-flow.d.ts +27 -0
  64. package/dist/ir/callable-class-flow.js +1386 -0
  65. package/dist/ir/callable-field-slots.d.ts +22 -0
  66. package/dist/ir/callable-field-slots.js +166 -0
  67. package/dist/ir/callable-identity-demand.d.ts +52 -0
  68. package/dist/ir/callable-identity-demand.js +460 -0
  69. package/dist/ir/callable-member-candidates.d.ts +9 -0
  70. package/dist/ir/callable-member-candidates.js +39 -0
  71. package/dist/ir/callable-records.d.ts +21 -0
  72. package/dist/ir/callable-records.js +411 -0
  73. package/dist/ir/captures.d.ts +26 -0
  74. package/dist/ir/captures.js +335 -0
  75. package/dist/ir/certificate.d.ts +45 -0
  76. package/dist/ir/certificate.js +47 -0
  77. package/dist/ir/certify/carrier-keys.d.ts +73 -0
  78. package/dist/ir/certify/carrier-keys.js +221 -0
  79. package/dist/ir/certify/function-source.d.ts +4 -0
  80. package/dist/ir/certify/function-source.js +28 -0
  81. package/dist/ir/certify/has-property-key.d.ts +88 -0
  82. package/dist/ir/certify/has-property-key.js +116 -0
  83. package/dist/ir/certify/instanceof-key.d.ts +24 -0
  84. package/dist/ir/certify/instanceof-key.js +35 -0
  85. package/dist/ir/certify/property-access-keys.d.ts +172 -0
  86. package/dist/ir/certify/property-access-keys.js +291 -0
  87. package/dist/ir/certify/property-access.d.ts +3 -0
  88. package/dist/ir/certify/property-access.js +597 -0
  89. package/dist/ir/certify/runtime-helper.d.ts +3 -0
  90. package/dist/ir/certify/runtime-helper.js +326 -0
  91. package/dist/ir/certify/typeof-operand.d.ts +14 -0
  92. package/dist/ir/certify/typeof-operand.js +16 -0
  93. package/dist/ir/certify.d.ts +123 -0
  94. package/dist/ir/certify.js +481 -0
  95. package/dist/ir/class-evaluation.d.ts +26 -0
  96. package/dist/ir/class-evaluation.js +50 -0
  97. package/dist/ir/class-static-fields.d.ts +60 -0
  98. package/dist/ir/class-static-fields.js +108 -0
  99. package/dist/ir/construct-entry.d.ts +26 -0
  100. package/dist/ir/construct-entry.js +117 -0
  101. package/dist/ir/dead-values.d.ts +90 -0
  102. package/dist/ir/dead-values.js +184 -0
  103. package/dist/ir/deferral.d.ts +99 -0
  104. package/dist/ir/deferral.js +409 -0
  105. package/dist/ir/dense-loops.d.ts +230 -0
  106. package/dist/ir/dense-loops.js +697 -0
  107. package/dist/ir/dominance.d.ts +82 -0
  108. package/dist/ir/dominance.js +268 -0
  109. package/dist/ir/emission-representations.d.ts +71 -0
  110. package/dist/ir/emission-representations.js +350 -0
  111. package/dist/ir/facts.d.ts +218 -0
  112. package/dist/ir/facts.js +181 -0
  113. package/dist/ir/fixed-data-definition.d.ts +19 -0
  114. package/dist/ir/fixed-data-definition.js +49 -0
  115. package/dist/ir/generator-split.d.ts +38 -0
  116. package/dist/ir/generator-split.js +329 -0
  117. package/dist/ir/hoist.d.ts +55 -0
  118. package/dist/ir/hoist.js +375 -0
  119. package/dist/ir/instantiation.d.ts +61 -0
  120. package/dist/ir/instantiation.js +137 -0
  121. package/dist/ir/integer-storage.d.ts +170 -0
  122. package/dist/ir/integer-storage.js +822 -0
  123. package/dist/ir/integers.d.ts +161 -0
  124. package/dist/ir/integers.js +539 -0
  125. package/dist/ir/integrity-restrictions.d.ts +50 -0
  126. package/dist/ir/integrity-restrictions.js +118 -0
  127. package/dist/ir/local-iterators.d.ts +4 -0
  128. package/dist/ir/local-iterators.js +27 -0
  129. package/dist/ir/lower-allocation.d.ts +4 -0
  130. package/dist/ir/lower-allocation.js +325 -0
  131. package/dist/ir/lower-completion.d.ts +15 -0
  132. package/dist/ir/lower-completion.js +25 -0
  133. package/dist/ir/lower-destructuring.d.ts +5 -0
  134. package/dist/ir/lower-destructuring.js +693 -0
  135. package/dist/ir/lower-element.d.ts +29 -0
  136. package/dist/ir/lower-element.js +111 -0
  137. package/dist/ir/lower-exceptions.d.ts +47 -0
  138. package/dist/ir/lower-exceptions.js +92 -0
  139. package/dist/ir/lower-flow.d.ts +137 -0
  140. package/dist/ir/lower-flow.js +600 -0
  141. package/dist/ir/lower-graph.d.ts +218 -0
  142. package/dist/ir/lower-graph.js +687 -0
  143. package/dist/ir/lower-invocation.d.ts +4 -0
  144. package/dist/ir/lower-invocation.js +514 -0
  145. package/dist/ir/lower-narrow.d.ts +53 -0
  146. package/dist/ir/lower-narrow.js +320 -0
  147. package/dist/ir/lower-operands.d.ts +272 -0
  148. package/dist/ir/lower-operands.js +461 -0
  149. package/dist/ir/lower-property.d.ts +21 -0
  150. package/dist/ir/lower-property.js +132 -0
  151. package/dist/ir/lower-protocol.d.ts +11 -0
  152. package/dist/ir/lower-protocol.js +118 -0
  153. package/dist/ir/lower-short-circuit.d.ts +41 -0
  154. package/dist/ir/lower-short-circuit.js +63 -0
  155. package/dist/ir/lower.d.ts +82 -0
  156. package/dist/ir/lower.js +1346 -0
  157. package/dist/ir/model.d.ts +1474 -0
  158. package/dist/ir/model.js +6 -0
  159. package/dist/ir/native-absent-property.d.ts +3 -0
  160. package/dist/ir/native-absent-property.js +13 -0
  161. package/dist/ir/native-array-transport.d.ts +7 -0
  162. package/dist/ir/native-array-transport.js +46 -0
  163. package/dist/ir/native-callable-bind.d.ts +9 -0
  164. package/dist/ir/native-callable-bind.js +30 -0
  165. package/dist/ir/native-carrier-predicate.d.ts +34 -0
  166. package/dist/ir/native-carrier-predicate.js +49 -0
  167. package/dist/ir/native-class-accessor.d.ts +18 -0
  168. package/dist/ir/native-class-accessor.js +52 -0
  169. package/dist/ir/native-class-construction.d.ts +16 -0
  170. package/dist/ir/native-class-construction.js +71 -0
  171. package/dist/ir/native-class-initialization.d.ts +15 -0
  172. package/dist/ir/native-class-initialization.js +56 -0
  173. package/dist/ir/native-class-origins.d.ts +13 -0
  174. package/dist/ir/native-class-origins.js +237 -0
  175. package/dist/ir/native-dictionary-transport.d.ts +6 -0
  176. package/dist/ir/native-dictionary-transport.js +37 -0
  177. package/dist/ir/native-enumeration.d.ts +14 -0
  178. package/dist/ir/native-enumeration.js +26 -0
  179. package/dist/ir/native-equality.d.ts +10 -0
  180. package/dist/ir/native-equality.js +18 -0
  181. package/dist/ir/native-field-owner.d.ts +37 -0
  182. package/dist/ir/native-field-owner.js +183 -0
  183. package/dist/ir/native-fixed-layout.d.ts +41 -0
  184. package/dist/ir/native-fixed-layout.js +232 -0
  185. package/dist/ir/native-host-construction.d.ts +53 -0
  186. package/dist/ir/native-host-construction.js +62 -0
  187. package/dist/ir/native-key-query.d.ts +4 -0
  188. package/dist/ir/native-key-query.js +38 -0
  189. package/dist/ir/native-merge-transport.d.ts +25 -0
  190. package/dist/ir/native-merge-transport.js +71 -0
  191. package/dist/ir/native-record-index-transport.d.ts +11 -0
  192. package/dist/ir/native-record-index-transport.js +34 -0
  193. package/dist/ir/native-record-index.d.ts +12 -0
  194. package/dist/ir/native-record-index.js +27 -0
  195. package/dist/ir/native-reflect-field.d.ts +5 -0
  196. package/dist/ir/native-reflect-field.js +33 -0
  197. package/dist/ir/native-sequence-transport.d.ts +7 -0
  198. package/dist/ir/native-sequence-transport.js +53 -0
  199. package/dist/ir/numeric-intrinsics.d.ts +13 -0
  200. package/dist/ir/numeric-intrinsics.js +57 -0
  201. package/dist/ir/object-value-conversions.d.ts +20 -0
  202. package/dist/ir/object-value-conversions.js +50 -0
  203. package/dist/ir/physical-class-reflection.d.ts +9 -0
  204. package/dist/ir/physical-class-reflection.js +57 -0
  205. package/dist/ir/presence-proof.d.ts +42 -0
  206. package/dist/ir/presence-proof.js +490 -0
  207. package/dist/ir/program-facts.d.ts +106 -0
  208. package/dist/ir/program-facts.js +319 -0
  209. package/dist/ir/proven-branches.d.ts +16 -0
  210. package/dist/ir/proven-branches.js +219 -0
  211. package/dist/ir/queries.d.ts +41 -0
  212. package/dist/ir/queries.js +213 -0
  213. package/dist/ir/reflection-demand.d.ts +64 -0
  214. package/dist/ir/reflection-demand.js +1394 -0
  215. package/dist/ir/refusal.d.ts +43 -0
  216. package/dist/ir/refusal.js +28 -0
  217. package/dist/ir/shake.d.ts +37 -0
  218. package/dist/ir/shake.js +1078 -0
  219. package/dist/ir/static-callables.d.ts +11 -0
  220. package/dist/ir/static-callables.js +163 -0
  221. package/dist/ir/string-layout-reuse.d.ts +13 -0
  222. package/dist/ir/string-layout-reuse.js +39 -0
  223. package/dist/ir/string-length-reuse.d.ts +8 -0
  224. package/dist/ir/string-length-reuse.js +47 -0
  225. package/dist/ir/transfer.d.ts +78 -0
  226. package/dist/ir/transfer.js +270 -0
  227. package/dist/ir/type-query-results.d.ts +25 -0
  228. package/dist/ir/type-query-results.js +96 -0
  229. package/dist/ir/typed-property-access.d.ts +100 -0
  230. package/dist/ir/typed-property-access.js +161 -0
  231. package/dist/ir/verify.d.ts +19 -0
  232. package/dist/ir/verify.js +355 -0
  233. package/dist/plugins/apple/constructors.d.ts +112 -0
  234. package/dist/plugins/apple/constructors.js +217 -0
  235. package/dist/plugins/apple/host.d.ts +181 -0
  236. package/dist/plugins/apple/host.js +262 -0
  237. package/dist/plugins/apple/jsx.d.ts +2 -0
  238. package/dist/plugins/apple/jsx.js +293 -0
  239. package/dist/plugins/apple/members.d.ts +16 -0
  240. package/dist/plugins/apple/members.js +190 -0
  241. package/dist/plugins/apple/plugin.d.ts +2 -0
  242. package/dist/plugins/apple/plugin.js +156 -0
  243. package/dist/plugins/gea/component-classes.d.ts +25 -0
  244. package/dist/plugins/gea/component-classes.js +162 -0
  245. package/dist/plugins/gea/component-inline.d.ts +13 -0
  246. package/dist/plugins/gea/component-inline.js +532 -0
  247. package/dist/plugins/gea/constructors.d.ts +23 -0
  248. package/dist/plugins/gea/constructors.js +100 -0
  249. package/dist/plugins/gea/contract.d.ts +150 -0
  250. package/dist/plugins/gea/contract.js +195 -0
  251. package/dist/plugins/gea/element-ref.d.ts +31 -0
  252. package/dist/plugins/gea/element-ref.js +45 -0
  253. package/dist/plugins/gea/host.d.ts +520 -0
  254. package/dist/plugins/gea/host.js +762 -0
  255. package/dist/plugins/gea/lower.d.ts +6 -0
  256. package/dist/plugins/gea/lower.js +195 -0
  257. package/dist/plugins/gea/members.d.ts +22 -0
  258. package/dist/plugins/gea/members.js +221 -0
  259. package/dist/plugins/gea/plugin.d.ts +22 -0
  260. package/dist/plugins/gea/plugin.js +307 -0
  261. package/dist/plugins/gea/prelude.d.ts +78 -0
  262. package/dist/plugins/gea/prelude.js +153 -0
  263. package/dist/plugins/gea/producer.d.ts +5 -0
  264. package/dist/plugins/gea/producer.js +52 -0
  265. package/dist/plugins/gea/reactive-slots.d.ts +49 -0
  266. package/dist/plugins/gea/reactive-slots.js +578 -0
  267. package/dist/plugins/gea/render-bridge.d.ts +6 -0
  268. package/dist/plugins/gea/render-bridge.js +281 -0
  269. package/dist/plugins/gea/slots.d.ts +15 -0
  270. package/dist/plugins/gea/slots.js +36 -0
  271. package/dist/plugins/gea/template-analysis.d.ts +151 -0
  272. package/dist/plugins/gea/template-analysis.js +346 -0
  273. package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
  274. package/dist/plugins/gea/user-agent-styles.js +94 -0
  275. package/dist/plugins/installed.d.ts +19 -0
  276. package/dist/plugins/installed.js +21 -0
  277. package/dist/plugins/load.d.ts +7 -0
  278. package/dist/plugins/load.js +207 -0
  279. package/dist/plugins/model.d.ts +735 -0
  280. package/dist/plugins/model.js +47 -0
  281. package/dist/plugins/webgl/host.d.ts +77 -0
  282. package/dist/plugins/webgl/host.js +162 -0
  283. package/dist/plugins/webgl/plugin.d.ts +40 -0
  284. package/dist/plugins/webgl/plugin.js +99 -0
  285. package/dist/preflight/obligations.d.ts +206 -0
  286. package/dist/preflight/obligations.js +36 -0
  287. package/dist/preflight/report.d.ts +20 -0
  288. package/dist/preflight/report.js +61 -0
  289. package/dist/preflight/run.d.ts +39 -0
  290. package/dist/preflight/run.js +403 -0
  291. package/dist/project-preparation.d.ts +33 -0
  292. package/dist/project-preparation.js +314 -0
  293. package/dist/projection/abi.d.ts +82 -0
  294. package/dist/projection/abi.js +349 -0
  295. package/dist/projection/apply-arguments.d.ts +12 -0
  296. package/dist/projection/apply-arguments.js +20 -0
  297. package/dist/projection/bindings.d.ts +250 -0
  298. package/dist/projection/bindings.js +340 -0
  299. package/dist/projection/callee.d.ts +196 -0
  300. package/dist/projection/callee.js +444 -0
  301. package/dist/projection/class-property-presence.d.ts +28 -0
  302. package/dist/projection/class-property-presence.js +58 -0
  303. package/dist/projection/class-prototype.d.ts +5 -0
  304. package/dist/projection/class-prototype.js +23 -0
  305. package/dist/projection/class-storage.d.ts +26 -0
  306. package/dist/projection/class-storage.js +236 -0
  307. package/dist/projection/classes.d.ts +283 -0
  308. package/dist/projection/classes.js +944 -0
  309. package/dist/projection/coercions.d.ts +20 -0
  310. package/dist/projection/coercions.js +33 -0
  311. package/dist/projection/dispatch.d.ts +167 -0
  312. package/dist/projection/dispatch.js +379 -0
  313. package/dist/projection/fields.d.ts +123 -0
  314. package/dist/projection/fields.js +383 -0
  315. package/dist/projection/instance-test.d.ts +78 -0
  316. package/dist/projection/instance-test.js +156 -0
  317. package/dist/projection/slots.d.ts +146 -0
  318. package/dist/projection/slots.js +663 -0
  319. package/dist/projection/synthesized-abi.d.ts +61 -0
  320. package/dist/projection/synthesized-abi.js +94 -0
  321. package/dist/representation/array-index.d.ts +14 -0
  322. package/dist/representation/array-index.js +17 -0
  323. package/dist/representation/callable-object.d.ts +3 -0
  324. package/dist/representation/callable-object.js +6 -0
  325. package/dist/representation/collections.d.ts +84 -0
  326. package/dist/representation/collections.js +139 -0
  327. package/dist/representation/derive.d.ts +159 -0
  328. package/dist/representation/derive.js +2546 -0
  329. package/dist/representation/difference.d.ts +30 -0
  330. package/dist/representation/difference.js +240 -0
  331. package/dist/representation/field-descriptor-policy.d.ts +19 -0
  332. package/dist/representation/field-descriptor-policy.js +39 -0
  333. package/dist/representation/function-constructor.d.ts +13 -0
  334. package/dist/representation/function-constructor.js +9 -0
  335. package/dist/representation/host-abi.d.ts +32 -0
  336. package/dist/representation/host-abi.js +97 -0
  337. package/dist/representation/host-templates.d.ts +67 -0
  338. package/dist/representation/host-templates.js +94 -0
  339. package/dist/representation/intersection.d.ts +84 -0
  340. package/dist/representation/intersection.js +149 -0
  341. package/dist/representation/literal-destination.d.ts +43 -0
  342. package/dist/representation/literal-destination.js +133 -0
  343. package/dist/representation/merge.d.ts +18 -0
  344. package/dist/representation/merge.js +83 -0
  345. package/dist/representation/model.d.ts +1160 -0
  346. package/dist/representation/model.js +1019 -0
  347. package/dist/representation/numeric-index.d.ts +13 -0
  348. package/dist/representation/numeric-index.js +29 -0
  349. package/dist/representation/object-shape.d.ts +109 -0
  350. package/dist/representation/object-shape.js +123 -0
  351. package/dist/representation/optional.d.ts +12 -0
  352. package/dist/representation/optional.js +87 -0
  353. package/dist/representation/plan.d.ts +60 -0
  354. package/dist/representation/plan.js +78 -0
  355. package/dist/representation/policies.d.ts +589 -0
  356. package/dist/representation/policies.js +107 -0
  357. package/dist/representation/primitive-domain.d.ts +1 -0
  358. package/dist/representation/primitive-domain.js +1 -0
  359. package/dist/representation/primitives.d.ts +44 -0
  360. package/dist/representation/primitives.js +78 -0
  361. package/dist/representation/publish.d.ts +49 -0
  362. package/dist/representation/publish.js +648 -0
  363. package/dist/representation/record-fields.d.ts +96 -0
  364. package/dist/representation/record-fields.js +116 -0
  365. package/dist/representation/template-object.d.ts +11 -0
  366. package/dist/representation/template-object.js +26 -0
  367. package/dist/representation/union.d.ts +30 -0
  368. package/dist/representation/union.js +324 -0
  369. package/dist/representation/value-records.d.ts +3 -0
  370. package/dist/representation/value-records.js +307 -0
  371. package/dist/representation/verify.d.ts +17 -0
  372. package/dist/representation/verify.js +221 -0
  373. package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
  374. package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
  375. package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
  376. package/dist/semantics/ambient-type-realization-transform.js +168 -0
  377. package/dist/semantics/ambient.d.ts +24 -0
  378. package/dist/semantics/ambient.js +119 -0
  379. package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
  380. package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
  381. package/dist/semantics/callable-origins.d.ts +46 -0
  382. package/dist/semantics/callable-origins.js +354 -0
  383. package/dist/semantics/class-alias.d.ts +7 -0
  384. package/dist/semantics/class-alias.js +37 -0
  385. package/dist/semantics/class-heritage.d.ts +34 -0
  386. package/dist/semantics/class-heritage.js +104 -0
  387. package/dist/semantics/commonjs-wrapper.d.ts +69 -0
  388. package/dist/semantics/commonjs-wrapper.js +231 -0
  389. package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
  390. package/dist/semantics/constructor-slot-subclasses.js +112 -0
  391. package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
  392. package/dist/semantics/declaration-overlay-transform.js +2157 -0
  393. package/dist/semantics/define-property-source-transform.d.ts +4 -0
  394. package/dist/semantics/define-property-source-transform.js +437 -0
  395. package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
  396. package/dist/semantics/diagnostic-source-preparation.js +82 -0
  397. package/dist/semantics/documentation-ranges.d.ts +22 -0
  398. package/dist/semantics/documentation-ranges.js +36 -0
  399. package/dist/semantics/dynamic-fallback.d.ts +86 -0
  400. package/dist/semantics/dynamic-fallback.js +249 -0
  401. package/dist/semantics/frontend-timing.d.ts +6 -0
  402. package/dist/semantics/frontend-timing.js +35 -0
  403. package/dist/semantics/frontend.d.ts +504 -0
  404. package/dist/semantics/frontend.js +1157 -0
  405. package/dist/semantics/host-declaration-provenance.d.ts +11 -0
  406. package/dist/semantics/host-declaration-provenance.js +18 -0
  407. package/dist/semantics/host-methods.d.ts +24 -0
  408. package/dist/semantics/host-methods.js +74 -0
  409. package/dist/semantics/host-protocols.d.ts +429 -0
  410. package/dist/semantics/host-protocols.js +1501 -0
  411. package/dist/semantics/inherited-accessor.d.ts +7 -0
  412. package/dist/semantics/inherited-accessor.js +48 -0
  413. package/dist/semantics/interface-families.d.ts +70 -0
  414. package/dist/semantics/interface-families.js +180 -0
  415. package/dist/semantics/interface-implementors.d.ts +53 -0
  416. package/dist/semantics/interface-implementors.js +87 -0
  417. package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
  418. package/dist/semantics/jsdoc-namepath-transform.js +85 -0
  419. package/dist/semantics/model/coverage.d.ts +68 -0
  420. package/dist/semantics/model/coverage.js +73 -0
  421. package/dist/semantics/model/edges.d.ts +103 -0
  422. package/dist/semantics/model/edges.js +20 -0
  423. package/dist/semantics/model/graph.d.ts +55 -0
  424. package/dist/semantics/model/graph.js +129 -0
  425. package/dist/semantics/model/operands.d.ts +159 -0
  426. package/dist/semantics/model/operands.js +26 -0
  427. package/dist/semantics/model/operations.d.ts +496 -0
  428. package/dist/semantics/model/operations.js +2 -0
  429. package/dist/semantics/model/primitive-domain.d.ts +26 -0
  430. package/dist/semantics/model/primitive-domain.js +38 -0
  431. package/dist/semantics/model/selected-signature.d.ts +261 -0
  432. package/dist/semantics/model/selected-signature.js +55 -0
  433. package/dist/semantics/model/structural-type-table.d.ts +93 -0
  434. package/dist/semantics/model/structural-type-table.js +237 -0
  435. package/dist/semantics/model/structural-types.d.ts +367 -0
  436. package/dist/semantics/model/structural-types.js +200 -0
  437. package/dist/semantics/module-resolution.d.ts +23 -0
  438. package/dist/semantics/module-resolution.js +227 -0
  439. package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
  440. package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
  441. package/dist/semantics/node-project.d.ts +13 -0
  442. package/dist/semantics/node-project.js +107 -0
  443. package/dist/semantics/node-source-hooks.d.ts +1 -0
  444. package/dist/semantics/node-source-hooks.js +63 -0
  445. package/dist/semantics/normalize/absent-globals.d.ts +143 -0
  446. package/dist/semantics/normalize/absent-globals.js +191 -0
  447. package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
  448. package/dist/semantics/normalize/arguments-objects.js +60 -0
  449. package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
  450. package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
  451. package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
  452. package/dist/semantics/normalize/assignment-patterns.js +147 -0
  453. package/dist/semantics/normalize/bag-absence.d.ts +8 -0
  454. package/dist/semantics/normalize/bag-absence.js +42 -0
  455. package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
  456. package/dist/semantics/normalize/binding-fixpoint.js +140 -0
  457. package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
  458. package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
  459. package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
  460. package/dist/semantics/normalize/cells/agreement.js +34 -0
  461. package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
  462. package/dist/semantics/normalize/cells/candidates.js +35 -0
  463. package/dist/semantics/normalize/cells/facts.d.ts +19 -0
  464. package/dist/semantics/normalize/cells/facts.js +90 -0
  465. package/dist/semantics/normalize/cells/index.d.ts +10 -0
  466. package/dist/semantics/normalize/cells/index.js +6 -0
  467. package/dist/semantics/normalize/cells/model.d.ts +98 -0
  468. package/dist/semantics/normalize/cells/model.js +2 -0
  469. package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
  470. package/dist/semantics/normalize/cells/policies/bag.js +114 -0
  471. package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
  472. package/dist/semantics/normalize/cells/policies/collection.js +218 -0
  473. package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
  474. package/dist/semantics/normalize/cells/policies/field.js +40 -0
  475. package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
  476. package/dist/semantics/normalize/cells/policies/index.js +58 -0
  477. package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
  478. package/dist/semantics/normalize/cells/policies/local.js +37 -0
  479. package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
  480. package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
  481. package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
  482. package/dist/semantics/normalize/cells/policies/return.js +45 -0
  483. package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
  484. package/dist/semantics/normalize/cells/policies/shared.js +45 -0
  485. package/dist/semantics/normalize/cells/policy.d.ts +72 -0
  486. package/dist/semantics/normalize/cells/policy.js +18 -0
  487. package/dist/semantics/normalize/cells/registry.d.ts +14 -0
  488. package/dist/semantics/normalize/cells/registry.js +17 -0
  489. package/dist/semantics/normalize/census-refusal.d.ts +62 -0
  490. package/dist/semantics/normalize/census-refusal.js +27 -0
  491. package/dist/semantics/normalize/census.d.ts +109 -0
  492. package/dist/semantics/normalize/census.js +667 -0
  493. package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
  494. package/dist/semantics/normalize/collection-bindings.js +677 -0
  495. package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
  496. package/dist/semantics/normalize/commonjs-module-record.js +289 -0
  497. package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
  498. package/dist/semantics/normalize/commonjs-require.js +1527 -0
  499. package/dist/semantics/normalize/contribution.d.ts +63 -0
  500. package/dist/semantics/normalize/contribution.js +172 -0
  501. package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
  502. package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
  503. package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
  504. package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
  505. package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
  506. package/dist/semantics/normalize/derived-expression-type.js +3463 -0
  507. package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
  508. package/dist/semantics/normalize/evaluation-order.js +37 -0
  509. package/dist/semantics/normalize/field-bindings.d.ts +167 -0
  510. package/dist/semantics/normalize/field-bindings.js +1125 -0
  511. package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
  512. package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
  513. package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
  514. package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
  515. package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
  516. package/dist/semantics/normalize/flow/callable-completions.js +82 -0
  517. package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
  518. package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
  519. package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
  520. package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
  521. package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
  522. package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
  523. package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
  524. package/dist/semantics/normalize/flow/component-solver.js +587 -0
  525. package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
  526. package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
  527. package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
  528. package/dist/semantics/normalize/flow/export-importers.js +269 -0
  529. package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
  530. package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
  531. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
  532. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
  533. package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
  534. package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
  535. package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
  536. package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
  537. package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
  538. package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
  539. package/dist/semantics/normalize/flow/model.d.ts +357 -0
  540. package/dist/semantics/normalize/flow/model.js +177 -0
  541. package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
  542. package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
  543. package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
  544. package/dist/semantics/normalize/flow/node-path-token.js +53 -0
  545. package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
  546. package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
  547. package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
  548. package/dist/semantics/normalize/flow/origin-authority.js +2 -0
  549. package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
  550. package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
  551. package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
  552. package/dist/semantics/normalize/flow/parameter-values.js +251 -0
  553. package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
  554. package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
  555. package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
  556. package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
  557. package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
  558. package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
  559. package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
  560. package/dist/semantics/normalize/flow/source-class-data.js +838 -0
  561. package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
  562. package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
  563. package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
  564. package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
  565. package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
  566. package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
  567. package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
  568. package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
  569. package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
  570. package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
  571. package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
  572. package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
  573. package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
  574. package/dist/semantics/normalize/flow/source-record-data.js +626 -0
  575. package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
  576. package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
  577. package/dist/semantics/normalize/flow/targets.d.ts +118 -0
  578. package/dist/semantics/normalize/flow/targets.js +405 -0
  579. package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
  580. package/dist/semantics/normalize/flow/value-flow.js +823 -0
  581. package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
  582. package/dist/semantics/normalize/flow/value-provenance.js +112 -0
  583. package/dist/semantics/normalize/gating.d.ts +51 -0
  584. package/dist/semantics/normalize/gating.js +560 -0
  585. package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
  586. package/dist/semantics/normalize/generic-function-choice.js +115 -0
  587. package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
  588. package/dist/semantics/normalize/global-host-mutations.js +5989 -0
  589. package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
  590. package/dist/semantics/normalize/host-effect-contracts.js +143 -0
  591. package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
  592. package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
  593. package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
  594. package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
  595. package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
  596. package/dist/semantics/normalize/host-mutation-keys.js +183 -0
  597. package/dist/semantics/normalize/identities.d.ts +172 -0
  598. package/dist/semantics/normalize/identities.js +426 -0
  599. package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
  600. package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
  601. package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
  602. package/dist/semantics/normalize/implicit-arguments.js +39 -0
  603. package/dist/semantics/normalize/instantiation.d.ts +73 -0
  604. package/dist/semantics/normalize/instantiation.js +399 -0
  605. package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
  606. package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
  607. package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
  608. package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
  609. package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
  610. package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
  611. package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
  612. package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
  613. package/dist/semantics/normalize/keyof.d.ts +32 -0
  614. package/dist/semantics/normalize/keyof.js +110 -0
  615. package/dist/semantics/normalize/local-bindings.d.ts +176 -0
  616. package/dist/semantics/normalize/local-bindings.js +1826 -0
  617. package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
  618. package/dist/semantics/normalize/logical-result-type.js +102 -0
  619. package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
  620. package/dist/semantics/normalize/namespace-paths.js +108 -0
  621. package/dist/semantics/normalize/normalize.d.ts +57 -0
  622. package/dist/semantics/normalize/normalize.js +68 -0
  623. package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
  624. package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
  625. package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
  626. package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
  627. package/dist/semantics/normalize/open-type-form.d.ts +10 -0
  628. package/dist/semantics/normalize/open-type-form.js +32 -0
  629. package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
  630. package/dist/semantics/normalize/parameter-bindings.js +3339 -0
  631. package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
  632. package/dist/semantics/normalize/parameter-slot.js +491 -0
  633. package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
  634. package/dist/semantics/normalize/physical-overload-result.js +99 -0
  635. package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
  636. package/dist/semantics/normalize/primitive-property-absence.js +60 -0
  637. package/dist/semantics/normalize/producer-context.d.ts +376 -0
  638. package/dist/semantics/normalize/producer-context.js +1 -0
  639. package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
  640. package/dist/semantics/normalize/producers/allocations.js +863 -0
  641. package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
  642. package/dist/semantics/normalize/producers/binding-kind.js +36 -0
  643. package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
  644. package/dist/semantics/normalize/producers/bindings.js +710 -0
  645. package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
  646. package/dist/semantics/normalize/producers/boundary.js +123 -0
  647. package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
  648. package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
  649. package/dist/semantics/normalize/producers/computations.d.ts +3 -0
  650. package/dist/semantics/normalize/producers/computations.js +613 -0
  651. package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
  652. package/dist/semantics/normalize/producers/control-loops.js +91 -0
  653. package/dist/semantics/normalize/producers/control.d.ts +30 -0
  654. package/dist/semantics/normalize/producers/control.js +923 -0
  655. package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
  656. package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
  657. package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
  658. package/dist/semantics/normalize/producers/destructuring.js +1180 -0
  659. package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
  660. package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
  661. package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
  662. package/dist/semantics/normalize/producers/erasure.js +90 -0
  663. package/dist/semantics/normalize/producers/installed.d.ts +3 -0
  664. package/dist/semantics/normalize/producers/installed.js +55 -0
  665. package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
  666. package/dist/semantics/normalize/producers/invocations.js +1796 -0
  667. package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
  668. package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
  669. package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
  670. package/dist/semantics/normalize/producers/jsx.js +360 -0
  671. package/dist/semantics/normalize/producers/mint.d.ts +39 -0
  672. package/dist/semantics/normalize/producers/mint.js +44 -0
  673. package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
  674. package/dist/semantics/normalize/producers/nullish.js +27 -0
  675. package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
  676. package/dist/semantics/normalize/producers/object-assignment.js +204 -0
  677. package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
  678. package/dist/semantics/normalize/producers/object-tag.js +119 -0
  679. package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
  680. package/dist/semantics/normalize/producers/optional-chain.js +75 -0
  681. package/dist/semantics/normalize/producers/properties.d.ts +21 -0
  682. package/dist/semantics/normalize/producers/properties.js +1053 -0
  683. package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
  684. package/dist/semantics/normalize/producers/protocol.js +695 -0
  685. package/dist/semantics/normalize/producers/references.d.ts +53 -0
  686. package/dist/semantics/normalize/producers/references.js +1027 -0
  687. package/dist/semantics/normalize/producers/shared.d.ts +561 -0
  688. package/dist/semantics/normalize/producers/shared.js +1683 -0
  689. package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
  690. package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
  691. package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
  692. package/dist/semantics/normalize/producers/tagged-template.js +307 -0
  693. package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
  694. package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
  695. package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
  696. package/dist/semantics/normalize/property-key-domain.js +150 -0
  697. package/dist/semantics/normalize/reachability.d.ts +189 -0
  698. package/dist/semantics/normalize/reachability.js +1057 -0
  699. package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
  700. package/dist/semantics/normalize/reassigned-bindings.js +41 -0
  701. package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
  702. package/dist/semantics/normalize/record-storage-families.js +109 -0
  703. package/dist/semantics/normalize/return-bindings.d.ts +260 -0
  704. package/dist/semantics/normalize/return-bindings.js +1311 -0
  705. package/dist/semantics/normalize/return-paths.d.ts +2 -0
  706. package/dist/semantics/normalize/return-paths.js +28 -0
  707. package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
  708. package/dist/semantics/normalize/script-global-redefinition.js +75 -0
  709. package/dist/semantics/normalize/specialization.d.ts +201 -0
  710. package/dist/semantics/normalize/specialization.js +1824 -0
  711. package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
  712. package/dist/semantics/normalize/structural-array-element.js +700 -0
  713. package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
  714. package/dist/semantics/normalize/structural-array-read.js +124 -0
  715. package/dist/semantics/normalize/structural-callable.d.ts +12 -0
  716. package/dist/semantics/normalize/structural-callable.js +82 -0
  717. package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
  718. package/dist/semantics/normalize/structural-creation-order.js +111 -0
  719. package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
  720. package/dist/semantics/normalize/structural-declarations.js +968 -0
  721. package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
  722. package/dist/semantics/normalize/structural-declared-body.js +147 -0
  723. package/dist/semantics/normalize/structural-generics.d.ts +56 -0
  724. package/dist/semantics/normalize/structural-generics.js +120 -0
  725. package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
  726. package/dist/semantics/normalize/structural-indexed-access.js +126 -0
  727. package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
  728. package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
  729. package/dist/semantics/normalize/structural-joins.d.ts +44 -0
  730. package/dist/semantics/normalize/structural-joins.js +143 -0
  731. package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
  732. package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
  733. package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
  734. package/dist/semantics/normalize/structural-layout-type.js +1468 -0
  735. package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
  736. package/dist/semantics/normalize/structural-leaves.js +125 -0
  737. package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
  738. package/dist/semantics/normalize/structural-local-union.js +133 -0
  739. package/dist/semantics/normalize/structural-members.d.ts +26 -0
  740. package/dist/semantics/normalize/structural-members.js +84 -0
  741. package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
  742. package/dist/semantics/normalize/structural-mutable-method.js +109 -0
  743. package/dist/semantics/normalize/structural-parts.d.ts +131 -0
  744. package/dist/semantics/normalize/structural-parts.js +737 -0
  745. package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
  746. package/dist/semantics/normalize/structural-receiver.js +551 -0
  747. package/dist/semantics/normalize/structural-rules.d.ts +112 -0
  748. package/dist/semantics/normalize/structural-rules.js +93 -0
  749. package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
  750. package/dist/semantics/normalize/structural-self-reference.js +494 -0
  751. package/dist/semantics/normalize/structural.d.ts +202 -0
  752. package/dist/semantics/normalize/structural.js +4218 -0
  753. package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
  754. package/dist/semantics/normalize/unreduced-type-form.js +53 -0
  755. package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
  756. package/dist/semantics/normalize/unresolvable-names.js +140 -0
  757. package/dist/semantics/package-sources.d.ts +16 -0
  758. package/dist/semantics/package-sources.js +365 -0
  759. package/dist/semantics/program.d.ts +151 -0
  760. package/dist/semantics/program.js +667 -0
  761. package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
  762. package/dist/semantics/prototype-install-source-transform.js +341 -0
  763. package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
  764. package/dist/semantics/prototype-object-class-source-transform.js +525 -0
  765. package/dist/semantics/prototype-reparenting.d.ts +50 -0
  766. package/dist/semantics/prototype-reparenting.js +317 -0
  767. package/dist/semantics/stable-checker.d.ts +10 -0
  768. package/dist/semantics/stable-checker.js +148 -0
  769. package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
  770. package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
  771. package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
  772. package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
  773. package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
  774. package/dist/semantics/this-constructor-source-transform.js +122 -0
  775. package/dist/semantics/uninstantiable-classes.d.ts +22 -0
  776. package/dist/semantics/uninstantiable-classes.js +75 -0
  777. package/dist/targets/cpp/balanced-units.d.ts +3 -0
  778. package/dist/targets/cpp/balanced-units.js +58 -0
  779. package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
  780. package/dist/targets/cpp/borrowed-call-entry.js +68 -0
  781. package/dist/targets/cpp/captures.d.ts +68 -0
  782. package/dist/targets/cpp/captures.js +269 -0
  783. package/dist/targets/cpp/class-layout.d.ts +313 -0
  784. package/dist/targets/cpp/class-layout.js +483 -0
  785. package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
  786. package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
  787. package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
  788. package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
  789. package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
  790. package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
  791. package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
  792. package/dist/targets/cpp/class-ref-transport.js +32 -0
  793. package/dist/targets/cpp/conversions.d.ts +3 -0
  794. package/dist/targets/cpp/conversions.js +2027 -0
  795. package/dist/targets/cpp/deferral-safety.d.ts +82 -0
  796. package/dist/targets/cpp/deferral-safety.js +86 -0
  797. package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
  798. package/dist/targets/cpp/direct-call-receivers.js +79 -0
  799. package/dist/targets/cpp/document.d.ts +74 -0
  800. package/dist/targets/cpp/document.js +106 -0
  801. package/dist/targets/cpp/emit-allocation.d.ts +60 -0
  802. package/dist/targets/cpp/emit-allocation.js +573 -0
  803. package/dist/targets/cpp/emit-arrays.d.ts +119 -0
  804. package/dist/targets/cpp/emit-arrays.js +1047 -0
  805. package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
  806. package/dist/targets/cpp/emit-binding-reference.js +120 -0
  807. package/dist/targets/cpp/emit-bindings.d.ts +158 -0
  808. package/dist/targets/cpp/emit-bindings.js +769 -0
  809. package/dist/targets/cpp/emit-buffers.d.ts +156 -0
  810. package/dist/targets/cpp/emit-buffers.js +573 -0
  811. package/dist/targets/cpp/emit-callable.d.ts +230 -0
  812. package/dist/targets/cpp/emit-callable.js +2154 -0
  813. package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
  814. package/dist/targets/cpp/emit-carrier-members.js +1224 -0
  815. package/dist/targets/cpp/emit-coercion.d.ts +26 -0
  816. package/dist/targets/cpp/emit-coercion.js +39 -0
  817. package/dist/targets/cpp/emit-context.d.ts +1882 -0
  818. package/dist/targets/cpp/emit-context.js +904 -0
  819. package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
  820. package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
  821. package/dist/targets/cpp/emit-equality.d.ts +39 -0
  822. package/dist/targets/cpp/emit-equality.js +472 -0
  823. package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
  824. package/dist/targets/cpp/emit-exceptions.js +513 -0
  825. package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
  826. package/dist/targets/cpp/emit-field-owner.js +27 -0
  827. package/dist/targets/cpp/emit-in.d.ts +31 -0
  828. package/dist/targets/cpp/emit-in.js +426 -0
  829. package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
  830. package/dist/targets/cpp/emit-instanceof.js +601 -0
  831. package/dist/targets/cpp/emit-integers.d.ts +68 -0
  832. package/dist/targets/cpp/emit-integers.js +184 -0
  833. package/dist/targets/cpp/emit-iterator.d.ts +100 -0
  834. package/dist/targets/cpp/emit-iterator.js +1137 -0
  835. package/dist/targets/cpp/emit-json.d.ts +73 -0
  836. package/dist/targets/cpp/emit-json.js +823 -0
  837. package/dist/targets/cpp/emit-jsx.d.ts +74 -0
  838. package/dist/targets/cpp/emit-jsx.js +806 -0
  839. package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
  840. package/dist/targets/cpp/emit-mixed-binary.js +60 -0
  841. package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
  842. package/dist/targets/cpp/emit-namespaces.js +133 -0
  843. package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
  844. package/dist/targets/cpp/emit-narrowing.js +3967 -0
  845. package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
  846. package/dist/targets/cpp/emit-native-equality.js +14 -0
  847. package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
  848. package/dist/targets/cpp/emit-native-selection.js +37 -0
  849. package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
  850. package/dist/targets/cpp/emit-object-tag.js +108 -0
  851. package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
  852. package/dist/targets/cpp/emit-owned-record.js +15 -0
  853. package/dist/targets/cpp/emit-presence.d.ts +78 -0
  854. package/dist/targets/cpp/emit-presence.js +376 -0
  855. package/dist/targets/cpp/emit-properties.d.ts +105 -0
  856. package/dist/targets/cpp/emit-properties.js +1640 -0
  857. package/dist/targets/cpp/emit-record-view.d.ts +20 -0
  858. package/dist/targets/cpp/emit-record-view.js +354 -0
  859. package/dist/targets/cpp/emit-return.d.ts +5 -0
  860. package/dist/targets/cpp/emit-return.js +237 -0
  861. package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
  862. package/dist/targets/cpp/emit-sum-widening.js +69 -0
  863. package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
  864. package/dist/targets/cpp/emit-tonumber.js +177 -0
  865. package/dist/targets/cpp/emit-tostring.d.ts +92 -0
  866. package/dist/targets/cpp/emit-tostring.js +556 -0
  867. package/dist/targets/cpp/emit-typeof.d.ts +49 -0
  868. package/dist/targets/cpp/emit-typeof.js +317 -0
  869. package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
  870. package/dist/targets/cpp/emit-union-properties.js +1281 -0
  871. package/dist/targets/cpp/emit.d.ts +45 -0
  872. package/dist/targets/cpp/emit.js +2225 -0
  873. package/dist/targets/cpp/error-types.d.ts +4 -0
  874. package/dist/targets/cpp/error-types.js +11 -0
  875. package/dist/targets/cpp/function-source-reads.d.ts +72 -0
  876. package/dist/targets/cpp/function-source-reads.js +148 -0
  877. package/dist/targets/cpp/host/atomics.d.ts +25 -0
  878. package/dist/targets/cpp/host/atomics.js +63 -0
  879. package/dist/targets/cpp/host/core-globals.d.ts +108 -0
  880. package/dist/targets/cpp/host/core-globals.js +158 -0
  881. package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
  882. package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
  883. package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
  884. package/dist/targets/cpp/host/emit-host-arity.js +232 -0
  885. package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
  886. package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
  887. package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
  888. package/dist/targets/cpp/host/emit-host-object.js +2206 -0
  889. package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
  890. package/dist/targets/cpp/host/emit-host-properties.js +533 -0
  891. package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
  892. package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
  893. package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
  894. package/dist/targets/cpp/host/emit-host-value.js +392 -0
  895. package/dist/targets/cpp/host/host-members.d.ts +505 -0
  896. package/dist/targets/cpp/host/host-members.js +819 -0
  897. package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
  898. package/dist/targets/cpp/host/host-method-aliases.js +76 -0
  899. package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
  900. package/dist/targets/cpp/host/native-protocols.js +183 -0
  901. package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
  902. package/dist/targets/cpp/host/object-protocol.js +671 -0
  903. package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
  904. package/dist/targets/cpp/host-namespace-reads.js +113 -0
  905. package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
  906. package/dist/targets/cpp/manifest/capabilities.js +1484 -0
  907. package/dist/targets/cpp/manifest.d.ts +23 -0
  908. package/dist/targets/cpp/manifest.js +113 -0
  909. package/dist/targets/cpp/native-error-base.d.ts +38 -0
  910. package/dist/targets/cpp/native-error-base.js +74 -0
  911. package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
  912. package/dist/targets/cpp/native-narrowing-transport.js +151 -0
  913. package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
  914. package/dist/targets/cpp/native-selection-helpers.js +46 -0
  915. package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
  916. package/dist/targets/cpp/native-symbol-keys.js +34 -0
  917. package/dist/targets/cpp/ownership.d.ts +43 -0
  918. package/dist/targets/cpp/ownership.js +38 -0
  919. package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
  920. package/dist/targets/cpp/owning-conversion-input.js +12 -0
  921. package/dist/targets/cpp/property-read-claims.d.ts +62 -0
  922. package/dist/targets/cpp/property-read-claims.js +23 -0
  923. package/dist/targets/cpp/property-store-claims.d.ts +62 -0
  924. package/dist/targets/cpp/property-store-claims.js +26 -0
  925. package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
  926. package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
  927. package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
  928. package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
  929. package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
  930. package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
  931. package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
  932. package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
  933. package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
  934. package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
  935. package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
  936. package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
  937. package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
  938. package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
  939. package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
  940. package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
  941. package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
  942. package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
  943. package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
  944. package/dist/targets/cpp/reactive-dependencies.js +432 -0
  945. package/dist/targets/cpp/reactive-origins.d.ts +44 -0
  946. package/dist/targets/cpp/reactive-origins.js +82 -0
  947. package/dist/targets/cpp/records.d.ts +277 -0
  948. package/dist/targets/cpp/records.js +2427 -0
  949. package/dist/targets/cpp/recursive-containers.d.ts +43 -0
  950. package/dist/targets/cpp/recursive-containers.js +144 -0
  951. package/dist/targets/cpp/regexp-types.d.ts +56 -0
  952. package/dist/targets/cpp/regexp-types.js +59 -0
  953. package/dist/targets/cpp/substrate.d.ts +125 -0
  954. package/dist/targets/cpp/substrate.js +12 -0
  955. package/dist/targets/cpp/translation-unit.d.ts +219 -0
  956. package/dist/targets/cpp/translation-unit.js +2063 -0
  957. package/dist/targets/cpp/types.d.ts +280 -0
  958. package/dist/targets/cpp/types.js +1135 -0
  959. package/dist/targets/cpp/virtual-methods.d.ts +95 -0
  960. package/dist/targets/cpp/virtual-methods.js +264 -0
  961. package/package.json +95 -0
  962. package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
  963. package/src/targets/cpp/runtime/gea_eval.h +1376 -0
  964. package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
  965. package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
  966. package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
@@ -0,0 +1,217 @@
1
+ import { templateArity } from '../../targets/cpp/host/host-members.js';
2
+ import { appleBridgeMetadata, appleClassConstructorParameters, appleMemberTables, appleModuleMarkers, appleNativeTypes } from './host.js';
3
+ /**
4
+ * How Apple's frameworks construct their own objects.
5
+ *
6
+ * `new NSStackView()` is not a member of anything -- it is the one expression
7
+ * that brings the view into existence -- so it cannot be a `hostMembers` row,
8
+ * and a compiler with no table for it refuses every program that builds a host
9
+ * object while preflight happily certifies the same program.
10
+ *
11
+ * The spelling is the package's, verbatim: an ObjC `alloc`/`init` message
12
+ * wrapped in the retain that hands the object to the C++ wrapper. Nothing here
13
+ * assembles one -- a constructor whose selector takes arguments
14
+ * (`NSClickGestureRecognizer(target, action)`) states its own `{argN}` slots,
15
+ * and the arity is read back off the template for the same reason
16
+ * `templateArity` exists: the text that renders is the only authority on how
17
+ * many arguments it consumes.
18
+ *
19
+ * Keyed by carrier rather than by class name, so a host's constructor rows and
20
+ * its member rows are filed under one name.
21
+ */
22
+ export const appleHostConstructors = () => {
23
+ const shims = appleMemberTables();
24
+ if (!shims)
25
+ return new Map();
26
+ const carriers = appleNativeTypes();
27
+ const rows = new Map();
28
+ for (const [className, entry] of Object.entries(shims.embeddedHostClasses ?? {})) {
29
+ const carrier = carriers.get(className);
30
+ // A class the type table does not carry has no key to file under, and
31
+ // inventing one would claim a constructor for a protocol nothing binds.
32
+ if (carrier === undefined)
33
+ continue;
34
+ const emit = entry.construct ?? factoryConstruction(entry, className);
35
+ // A class that states neither convention is skipped rather than guessed.
36
+ if (emit === undefined || emit.length === 0)
37
+ continue;
38
+ rows.set(carrier, { emit, arity: templateArity(emit) });
39
+ }
40
+ return rows;
41
+ };
42
+ /**
43
+ * The other construction convention this host states: a thunk, not a message
44
+ * send.
45
+ *
46
+ * Four Metal classes are built by a C function the generated bridge defines
47
+ * (`MTKView_init`) rather than by an inline `alloc`/`init`, and they say so
48
+ * with `factory` instead of `construct`. The call is the host package's own
49
+ * rule, quoted from where it states it: "`new X(args)` against an identifier
50
+ * registered here lowers to `wrapper(static_cast<double>(factory(args)))`" --
51
+ * the thunk hands back a retained handle as a `double`, and the wrapper struct
52
+ * is constructed from it.
53
+ *
54
+ * Nothing is invented: the wrapper and the thunk are both the package's, and
55
+ * the argument count is the class's own declared constructor parameter list, so
56
+ * a factory taking arguments renders them and one taking none renders none. A
57
+ * class whose parameters the metadata does not state is skipped -- a call with
58
+ * the wrong arity would be a link error naming a symbol the program never
59
+ * wrote.
60
+ */
61
+ const factoryConstruction = (entry, className) => {
62
+ const factory = entry.factory;
63
+ const wrapper = entry.wrapper;
64
+ if (factory === undefined || factory.length === 0 || wrapper === undefined || wrapper.length === 0)
65
+ return undefined;
66
+ const parameters = appleClassConstructorParameters(className);
67
+ if (parameters === null)
68
+ return undefined;
69
+ const args = parameters.map((_, position) => `{arg${position}}`).join(', ');
70
+ return `${wrapper}(static_cast<double>(${factory}(${args})))`;
71
+ };
72
+ /**
73
+ * Apple's own class hierarchy, carrier to immediate base carrier.
74
+ *
75
+ * `NSStackView` IS an `NSView`, and the generated bridge says so in C++ by
76
+ * giving the wrapper structs the same inheritance the ObjC classes have
77
+ * (`struct NSStackView : gea::apple::AppKit::NSView`, written by
78
+ * `appleNativeBridgeHeader`). So passing one where the other is declared costs
79
+ * nothing at all at the target -- but nothing in TypeScript's structural view
80
+ * relates two opaque handles, so without this table the backend refuses an
81
+ * upcast the target performs implicitly.
82
+ *
83
+ * The base is spelled `Framework.Class` in the metadata, which is also a key of
84
+ * `nativeTypes` -- the shim builder files every class under both its bare and
85
+ * its qualified name -- so the carrier is looked up rather than re-derived. A
86
+ * base the type table does not carry is dropped: an unresolvable base is a
87
+ * chain this compiler cannot follow, and half a chain would answer "unrelated"
88
+ * for a pair that is related, which is the same refusal with a worse reason.
89
+ */
90
+ export const appleNativeBases = () => {
91
+ const carriers = appleNativeTypes();
92
+ const rows = new Map();
93
+ for (const entry of Object.values(appleBridgeMetadata().classes ?? {})) {
94
+ const wrapper = entry.wrapper;
95
+ const base = entry.extends;
96
+ if (wrapper === undefined || base === undefined)
97
+ continue;
98
+ const baseCarrier = carriers.get(base);
99
+ if (baseCarrier === undefined || baseCarrier === wrapper)
100
+ continue;
101
+ rows.set(wrapper, baseCarrier);
102
+ }
103
+ return rows;
104
+ };
105
+ /**
106
+ * The one header every Apple carrier is declared by.
107
+ *
108
+ * Named as a constant rather than written twice because a second reader of the
109
+ * same spelling exists outside the carrier table: `generatedSupportIncludes`
110
+ * (plugin.ts) states it in `generated_support.hpp`, and
111
+ * `apple/targets/macos/build-macos.sh` -- through
112
+ * `finalize-apple-native-output.mjs` and
113
+ * `apple_native_cached_output_is_current` -- greps that file for exactly the
114
+ * `#include` line built from it to decide whether an app is apple-native. Two
115
+ * places that must agree on one string is what the constant is for; `cli-emit.ts`
116
+ * used to hold its own copy and search the rendered C++ for it.
117
+ *
118
+ * `native_bridge.h` is written by the plugin package itself
119
+ * (`writeAppleNativeBridgeRuntime`) next to the emitted unit, and it declares
120
+ * every wrapper struct, the `objc::object`/`objc::retain` handle functions the
121
+ * templates call, and the framework imports behind an `__OBJC__` guard. One
122
+ * header for all of them because one generator writes all of them; the table is
123
+ * still keyed by carrier so a program that uses no Apple type includes nothing.
124
+ */
125
+ export const appleNativeBridgeHeader = 'gea/apple/native_bridge.h';
126
+ export const appleNativeIncludes = () => new Map([...new Set(appleNativeTypes().values())].map((carrier) => [carrier, appleNativeBridgeHeader]));
127
+ /**
128
+ * Apple's ambient constants, to the C++ text each one is.
129
+ *
130
+ * `NSBoxCustom`, `NSLayoutAttributeLeading` and the hundred others are
131
+ * Objective-C enumerators. Nothing declares a C++ global of those names, so a
132
+ * program that reads one and gets an `extern double` does not link -- and in
133
+ * Objective-C++ it does not even compile, because the enumerator is already a
134
+ * name at that scope and the declaration is a redefinition as a different kind
135
+ * of symbol. The host states the value instead, and the read renders it.
136
+ */
137
+ export const appleNativeConstants = () => {
138
+ const shims = appleMemberTables();
139
+ if (!shims)
140
+ return new Map();
141
+ const rows = new Map();
142
+ for (const [name, entry] of Object.entries(shims.embeddedHostConstants ?? {})) {
143
+ const emit = entry.emit;
144
+ if (emit === undefined || emit.length === 0)
145
+ continue;
146
+ rows.set(name, emit);
147
+ }
148
+ return rows;
149
+ };
150
+ /**
151
+ * Apple's ambient free functions, to the C++ function each one is.
152
+ *
153
+ * `installRootViewController(vc)`, `CGRectMake(x, y, w, h)`,
154
+ * `dispatchAsyncMain(f)` -- names a program writes bare, that resolve to
155
+ * functions the target's own runtime defines (`macos_main.mm` defines the
156
+ * first; CoreGraphics defines the second). None of them is a member of
157
+ * anything, so `hostMembers` cannot state one, and none of them constructs a
158
+ * host object, so `hostConstructors` cannot either.
159
+ *
160
+ * Without this table the backend has one shape left for a value that is
161
+ * called -- a callable carrier -- and so it declares
162
+ * `extern gea::CallableObject<void(NSViewController)> installRootViewController;`
163
+ * and invokes `.call(...)` on it. That is not a near miss: the host exports a
164
+ * FUNCTION, this declares a global VARIABLE of the same name, and the program
165
+ * compiles and then fails to link against the very runtime that implements it.
166
+ *
167
+ * The spelling is the package's own `embeddedHostFunctions`, verbatim -- the
168
+ * same table v1's build has consumed all along, and the same one the bridge
169
+ * metadata records as each function's `thunk`.
170
+ */
171
+ export const appleHostFunctions = () => {
172
+ const shims = appleMemberTables();
173
+ if (!shims)
174
+ return new Map();
175
+ const rows = new Map();
176
+ for (const [name, emit] of Object.entries(shims.embeddedHostFunctions ?? {})) {
177
+ if (typeof emit !== 'string' || emit.length === 0)
178
+ continue;
179
+ rows.set(name, emit);
180
+ }
181
+ return rows;
182
+ };
183
+ /**
184
+ * The free functions whose spelling depends on which declaration the program
185
+ * read, keyed by the file that declaration lives in.
186
+ *
187
+ * `installRootView` is the whole of the case: UIKit declares one and AppKit
188
+ * declares another, they are different functions with different parameter types
189
+ * and different thunks, and they share a bare name. A table keyed by name alone
190
+ * cannot hold both, so the flat one holds whichever the package wrote last --
191
+ * and an iOS program calling UIKit's got AppKit's spelling, which is not a
192
+ * near miss but a call into a framework the program never imported.
193
+ *
194
+ * The name a program wrote is not the coordinate; the declaration it resolved to
195
+ * is. `appleModuleMarkers` says which marker each declaration file belongs to
196
+ * and the package says which spelling each marker names, so this is those two
197
+ * facts joined -- nothing about frameworks is decided here.
198
+ */
199
+ export const appleHostFunctionsByDeclaration = () => {
200
+ const shims = appleMemberTables();
201
+ if (!shims)
202
+ return new Map();
203
+ const variants = shims.embeddedHostFunctionFrameworkVariants ?? {};
204
+ const rows = new Map();
205
+ for (const [file, marker] of appleModuleMarkers()) {
206
+ const spellings = new Map();
207
+ for (const [name, byMarker] of Object.entries(variants)) {
208
+ const emit = byMarker[marker];
209
+ if (typeof emit !== 'string' || emit.length === 0)
210
+ continue;
211
+ spellings.set(name, emit);
212
+ }
213
+ if (spellings.size > 0)
214
+ rows.set(file, spellings);
215
+ }
216
+ return rows;
217
+ };
@@ -0,0 +1,181 @@
1
+ /**
2
+ * The two fields of the Apple packages this compiler reads, as this compiler
3
+ * needs them.
4
+ *
5
+ * Deliberately NOT `import type { HostShimDefinitions } from
6
+ * '@geastack/geatsc-plugin-apple-native'`: a static type import would make the
7
+ * Apple packages a hard build dependency of the compiler, and this load is a
8
+ * `require` in a `try` precisely so they are not one. The same reasoning
9
+ * `plugins/gea/host.ts` states for its own slice -- restating the shape of the
10
+ * one field read is not restating the data.
11
+ */
12
+ export interface AppleMemberBinding {
13
+ readonly emit?: string;
14
+ /** A C++ free function the generated bridge declares, taking the receiver first -- see `externTemplate`. */
15
+ readonly extern?: string;
16
+ readonly receiverTypes?: readonly string[];
17
+ }
18
+ /**
19
+ * A member of a *class object* -- `NSColor.clearColor`, `ObjCTarget.create`.
20
+ *
21
+ * Stated by class name rather than by receiver type, and with no receiver slot
22
+ * in the template at all: the spelling names the class outright
23
+ * (`[::NSColor clearColor]`), because the receiver of a class method is the
24
+ * class, which no value carries. `returnType` is the package's own note about
25
+ * what the spelling yields; this compiler reads the carrier from the checker
26
+ * instead and so does not consume it.
27
+ */
28
+ export interface AppleNamespaceMember {
29
+ readonly emit?: string;
30
+ readonly returnType?: string;
31
+ }
32
+ /** What constructing one of a host's classes costs, as the host spells it. */
33
+ export interface AppleHostClass {
34
+ readonly wrapper?: string;
35
+ /** The whole `new C(...)` expression, `{argN}`-slotted; absent when the class states no constructor. */
36
+ readonly construct?: string;
37
+ /** A thunk name, for a class whose construction is not an ObjC message send. */
38
+ readonly factory?: string;
39
+ }
40
+ export interface AppleHostShimSlice {
41
+ readonly nativeTypes?: Readonly<Record<string, string>>;
42
+ readonly nativeMemberMethods?: Readonly<Record<string, readonly AppleMemberBinding[]>>;
43
+ readonly nativeMemberPropertyGetters?: Readonly<Record<string, readonly AppleMemberBinding[]>>;
44
+ readonly nativeMemberPropertySetters?: Readonly<Record<string, readonly AppleMemberBinding[]>>;
45
+ readonly nativeNamespaceMethods?: Readonly<Record<string, Readonly<Record<string, AppleNamespaceMember>>>>;
46
+ readonly embeddedHostClasses?: Readonly<Record<string, AppleHostClass>>;
47
+ readonly embeddedHostConstants?: Readonly<Record<string, {
48
+ readonly emit?: string;
49
+ readonly type?: string;
50
+ }>>;
51
+ readonly embeddedHostFunctions?: Readonly<Record<string, string>>;
52
+ /**
53
+ * `bareName -> markerName -> spelling`, for the free functions whose bare name
54
+ * more than one framework declares.
55
+ *
56
+ * `installRootView` is UIKit's and AppKit's alike, so the flat map above keeps
57
+ * whichever framework the package happened to process last and the other one
58
+ * is simply gone. This table is the package's own answer to that: every
59
+ * colliding name is restated once per framework, keyed by the marker the
60
+ * framework's runtime module calls. Which marker belongs to which module is a
61
+ * fact the package states too -- see `appleModuleMarkers`.
62
+ */
63
+ readonly embeddedHostFunctionFrameworkVariants?: Readonly<Record<string, Readonly<Record<string, string>>>>;
64
+ }
65
+ /**
66
+ * One class in the bridge metadata, as this compiler needs it.
67
+ *
68
+ * The metadata is the SDK package's own description of the platform, one step
69
+ * upstream of the shim tables: `createAppleHostShims` reads it to produce the
70
+ * spellings, and it carries one fact the shims do not keep -- which class each
71
+ * class extends. `extends` is spelled `Framework.Class`, which is also a key of
72
+ * `nativeTypes`, so a base resolves to a carrier through the table already read
73
+ * rather than by re-deriving the C++ qualification here.
74
+ */
75
+ export interface AppleClassMetadata {
76
+ readonly name?: string;
77
+ readonly wrapper?: string;
78
+ readonly extends?: string;
79
+ readonly methods?: Readonly<Record<string, AppleMethodMetadata>>;
80
+ /**
81
+ * How the class is built, when it states one. Read for its parameter list
82
+ * alone: the shim tables downstream keep the thunk's NAME but not how many
83
+ * arguments it takes, and a thunk called with the wrong count is a link error
84
+ * naming a symbol the program never wrote.
85
+ */
86
+ readonly constructor?: AppleMethodMetadata;
87
+ }
88
+ /**
89
+ * One method's declared parameters, as the SDK states them.
90
+ *
91
+ * Read for one question only: what a parameter an attribute cannot spell would
92
+ * have to be. `{ kind: 'primitive', name: 'number' }` is a control state, an
93
+ * animation flag is `boolean`, and a parameter of any other kind has no value
94
+ * this compiler could supply -- see `plugins/apple/jsx.ts`. The shim tables one
95
+ * step downstream keep only the rendered template and its arity, so this is the
96
+ * nearest authority that still knows what each slot holds.
97
+ */
98
+ export interface AppleMethodParameter {
99
+ readonly type?: {
100
+ readonly kind?: string;
101
+ readonly name?: string;
102
+ };
103
+ }
104
+ export interface AppleMethodMetadata {
105
+ readonly parameters?: readonly AppleMethodParameter[];
106
+ }
107
+ export interface AppleBridgeMetadataSlice {
108
+ readonly classes?: Readonly<Record<string, AppleClassMetadata>>;
109
+ }
110
+ /** The declared type names Apple's frameworks own, to the C++ wrapper their runtime carries values of each in. */
111
+ export declare const appleNativeTypes: () => ReadonlyMap<string, string>;
112
+ /** The member tables, exactly as the plugin package states them; `null` when the packages are not installed. */
113
+ export declare const appleMemberTables: () => AppleHostShimSlice | null;
114
+ /** The SDK's own platform description, one step upstream of the shim tables; empty when the packages are not installed. */
115
+ export declare const appleBridgeMetadata: () => AppleBridgeMetadataSlice;
116
+ /**
117
+ * Each declaration file of the Apple SDK package, to the native-only marker the
118
+ * module implementing that same subpath calls.
119
+ *
120
+ * This is what makes a per-framework variant selectable. v1 never has to ask:
121
+ * it compiles the *bundled* program, where the placeholder body has been inlined
122
+ * and the marker call is right there in the source. v2 compiles the unbundled
123
+ * program against the package's `.d.ts`, where the body is not present at all --
124
+ * so the same fact has to be read from the package instead of from the program.
125
+ *
126
+ * And it is read, not assumed. The `exports` map pairs each subpath's `types`
127
+ * with its `import`; the implementation module is opened and asked which of the
128
+ * markers the variants table actually uses appear in it. No marker spelling is
129
+ * constructed here and no file-naming convention is relied on: a module that
130
+ * mentions exactly one marker identifies itself, a module that mentions none
131
+ * (every framework whose functions collide with nobody) contributes nothing, and
132
+ * a module that mentions more than one is ambiguous and contributes nothing
133
+ * either. Every one of those three is the same outcome as before this existed --
134
+ * the flat table's answer -- so the failure mode is the old behaviour, never a
135
+ * wrong framework.
136
+ */
137
+ export declare const appleModuleMarkers: () => ReadonlyMap<string, string>;
138
+ /**
139
+ * The parameters a class declares for its own constructor, or `null` when the
140
+ * metadata states none.
141
+ *
142
+ * Keyed by the class's own name, which is how `embeddedHostClasses` is keyed --
143
+ * the metadata is keyed by `Framework.Class`, so the two are joined on the
144
+ * `name` each metadata row carries rather than by re-deriving either spelling.
145
+ */
146
+ export declare const appleClassConstructorParameters: (className: string) => readonly AppleMethodParameter[] | null;
147
+ /**
148
+ * Writes `gea/apple/native_bridge.{h,mm}` next to the emitted unit, by driving
149
+ * the Apple plugin package's own generator.
150
+ *
151
+ * The unit this compiler emits opens with `#include "gea/apple/native_bridge.h"`
152
+ * and the target links `native_bridge.mm`, so both files are part of what a
153
+ * generated Apple program is compiled against -- the same kind of fact as the
154
+ * runtime header `cli-emit.ts` copies in, owned by a host rather than by the
155
+ * core. Nothing else in the tree writes them: v1's pipeline gets them from
156
+ * `createCppBackend(...).transformGeneratedSources(...)`, a hook this compiler's
157
+ * plugin seam does not have and should not grow, because the thing that hook
158
+ * exists to do to v1's SOURCES is not wanted here (see below).
159
+ *
160
+ * Measured, and this is why it is a defect worth a memory: with no one writing
161
+ * them, a build succeeded only where a *stale* bridge from a v1 build happened
162
+ * to still be sitting in the gitignored output directory. Moving it aside made
163
+ * the macOS build fail immediately, and the five iOS apps -- which had no
164
+ * leftover -- all stopped at `'gea/apple/native_bridge.h' file not found`.
165
+ *
166
+ * The metadata is the one the *pipeline* passed, not the fixture-derived table
167
+ * `appleHostShims` reads above, and the difference is load-bearing: v1's build
168
+ * script filters the SDK fixture by platform before writing the file, so a
169
+ * macOS build's metadata declares `AppKit.installRootView` and an iOS build's
170
+ * declares `UIKit.installRootView`. Generating the bridge from the unfiltered
171
+ * fixture would declare both, and the header would name five AppKit free
172
+ * functions no iOS target defines.
173
+ *
174
+ * Only the file-writing half of v1's hook is driven. The other half inserts a
175
+ * preamble of `gea::apple::bridge` helpers into `generated_support.hpp`, for
176
+ * calls v1's emitter makes; this compiler's units reference no such helper
177
+ * (measured: zero occurrences of `gea::apple::bridge::` across every emitted
178
+ * Apple unit), so an empty source list is handed over and the transformed
179
+ * result is discarded rather than a preamble being inserted for nothing.
180
+ */
181
+ export declare const writeAppleBridgeArtifacts: (metadataPath: string, outDir: string) => void;
@@ -0,0 +1,262 @@
1
+ import { createRequire } from 'node:module';
2
+ import { readFileSync } from 'node:fs';
3
+ import { dirname, resolve as resolvePath } from 'node:path';
4
+ const require_ = createRequire(import.meta.url);
5
+ /**
6
+ * `nativeTypes`, narrowed at the boundary.
7
+ *
8
+ * Anything that is not a string-to-string record is refused whole rather than
9
+ * partially admitted, exactly as the gea seam refuses its own: a table half of
10
+ * which is a carrier and half of which is something else would put this
11
+ * compiler back in the business of guessing.
12
+ */
13
+ const nativeTypesOf = (value) => {
14
+ if (value === undefined)
15
+ return new Map();
16
+ if (typeof value !== 'object' || value === null)
17
+ return null;
18
+ const table = new Map();
19
+ for (const [name, carrier] of Object.entries(value)) {
20
+ if (typeof carrier !== 'string' || carrier.length === 0)
21
+ return null;
22
+ table.set(name, carrier);
23
+ }
24
+ return table;
25
+ };
26
+ /** A module that failed to resolve because it is not installed, as opposed to one that failed to load. */
27
+ const isAbsent = (error) => error.code === 'MODULE_NOT_FOUND';
28
+ let loaded;
29
+ let loadedMetadata = null;
30
+ /**
31
+ * The Apple host type table, from the packages that own it.
32
+ *
33
+ * Two packages, because the data is split the way the platform is:
34
+ * `@geastack/apple` holds the SDK definition (`appleSdkFixture`) and the
35
+ * function that turns it into bridge metadata, and
36
+ * `@geastack/geatsc-plugin-apple-native` turns that metadata into the shim
37
+ * definitions a compiler consumes. Neither half is restated here -- the
38
+ * hundreds of AppKit/Foundation rows stay in the packages that generate them,
39
+ * which is the whole point.
40
+ *
41
+ * No platform filter is applied. v1's build script strips the off-platform
42
+ * framework's class MEMBERS (UIKit's, for a macOS build) while keeping the
43
+ * class shells, so that a member name shared by `UIView` and `NSView` resolves
44
+ * to the on-platform one. That filter exists to disambiguate the *member*
45
+ * tables; this compiler reads only `nativeTypes`, whose entry for a shell class
46
+ * is the same either way. Restating the filter here to change nothing would be
47
+ * a second copy of a rule that lives in v1's build script, and it would go
48
+ * stale the first time that rule changed. When the member tables are read, the
49
+ * platform will have to be an input to this function rather than a rule copied
50
+ * into it.
51
+ *
52
+ * `require` rather than `import()`, and the same two-failure distinction the
53
+ * gea seam draws: a package simply not installed is a configuration, and the
54
+ * table is empty. A package that IS installed but does not answer -- a load
55
+ * error, a missing export, a table that is not string-to-string -- is a defect,
56
+ * and it throws. Swallowing the second returns an empty table indistinguishable
57
+ * from the first, and every Apple program then loses every carrier at once and
58
+ * is refused for obligations spelled in names (`NSView@1`) that nothing was
59
+ * ever going to claim.
60
+ */
61
+ const appleHostShims = () => {
62
+ if (loaded !== undefined)
63
+ return loaded;
64
+ const sdkSpecifier = process.env.GEATSC2_APPLE_SDK ?? '@geastack/apple';
65
+ const pluginSpecifier = process.env.GEATSC2_APPLE_PLUGIN ?? '@geastack/geatsc-plugin-apple-native';
66
+ let sdk;
67
+ let plugin;
68
+ try {
69
+ sdk = require_(sdkSpecifier);
70
+ plugin = require_(pluginSpecifier);
71
+ }
72
+ catch (error) {
73
+ const requested = process.env.GEATSC2_APPLE_SDK !== undefined || process.env.GEATSC2_APPLE_PLUGIN !== undefined;
74
+ if (!isAbsent(error) || requested) {
75
+ throw new Error(`apple host shims failed to load from '${sdkSpecifier}' + '${pluginSpecifier}': ${String(error)}`);
76
+ }
77
+ loaded = null;
78
+ return null;
79
+ }
80
+ const fixture = sdk.appleSdkFixture;
81
+ const metadataOf = sdk.generateAppleBridgeMetadata;
82
+ const shimsOf = plugin.createAppleHostShims;
83
+ if (fixture === undefined || typeof metadataOf !== 'function') {
84
+ throw new Error(`'${sdkSpecifier}' exports no appleSdkFixture/generateAppleBridgeMetadata pair`);
85
+ }
86
+ if (typeof shimsOf !== 'function')
87
+ throw new Error(`'${pluginSpecifier}' exports no createAppleHostShims function`);
88
+ const metadata = metadataOf(fixture);
89
+ const shims = shimsOf(metadata);
90
+ if (nativeTypesOf(shims.nativeTypes) === null) {
91
+ throw new Error(`'${pluginSpecifier}' provided a nativeTypes table that is not string-to-string`);
92
+ }
93
+ loaded = shims;
94
+ loadedMetadata = (typeof metadata === 'object' && metadata !== null ? metadata : {});
95
+ return shims;
96
+ };
97
+ /** The declared type names Apple's frameworks own, to the C++ wrapper their runtime carries values of each in. */
98
+ export const appleNativeTypes = () => nativeTypesOf(appleHostShims()?.nativeTypes) ?? new Map();
99
+ /** The member tables, exactly as the plugin package states them; `null` when the packages are not installed. */
100
+ export const appleMemberTables = () => appleHostShims();
101
+ /** The SDK's own platform description, one step upstream of the shim tables; empty when the packages are not installed. */
102
+ export const appleBridgeMetadata = () => {
103
+ appleHostShims();
104
+ return loadedMetadata ?? {};
105
+ };
106
+ let loadedMarkers = null;
107
+ /** The directory of the package a resolved entry point belongs to, by its own manifest. */
108
+ const packageRootOf = (entry, name) => {
109
+ let directory = dirname(entry);
110
+ for (;;) {
111
+ try {
112
+ const manifest = JSON.parse(readFileSync(resolvePath(directory, 'package.json'), 'utf8'));
113
+ if (typeof manifest === 'object' && manifest !== null && manifest.name === name)
114
+ return directory;
115
+ }
116
+ catch {
117
+ // Not this directory's manifest, or none here at all. Keep walking up.
118
+ }
119
+ const parent = dirname(directory);
120
+ if (parent === directory)
121
+ return null;
122
+ directory = parent;
123
+ }
124
+ };
125
+ /**
126
+ * Each declaration file of the Apple SDK package, to the native-only marker the
127
+ * module implementing that same subpath calls.
128
+ *
129
+ * This is what makes a per-framework variant selectable. v1 never has to ask:
130
+ * it compiles the *bundled* program, where the placeholder body has been inlined
131
+ * and the marker call is right there in the source. v2 compiles the unbundled
132
+ * program against the package's `.d.ts`, where the body is not present at all --
133
+ * so the same fact has to be read from the package instead of from the program.
134
+ *
135
+ * And it is read, not assumed. The `exports` map pairs each subpath's `types`
136
+ * with its `import`; the implementation module is opened and asked which of the
137
+ * markers the variants table actually uses appear in it. No marker spelling is
138
+ * constructed here and no file-naming convention is relied on: a module that
139
+ * mentions exactly one marker identifies itself, a module that mentions none
140
+ * (every framework whose functions collide with nobody) contributes nothing, and
141
+ * a module that mentions more than one is ambiguous and contributes nothing
142
+ * either. Every one of those three is the same outcome as before this existed --
143
+ * the flat table's answer -- so the failure mode is the old behaviour, never a
144
+ * wrong framework.
145
+ */
146
+ export const appleModuleMarkers = () => {
147
+ if (loadedMarkers !== null)
148
+ return loadedMarkers;
149
+ const markers = new Map();
150
+ loadedMarkers = markers;
151
+ const shims = appleHostShims();
152
+ if (!shims)
153
+ return markers;
154
+ const used = new Set();
155
+ for (const variants of Object.values(shims.embeddedHostFunctionFrameworkVariants ?? {})) {
156
+ for (const marker of Object.keys(variants))
157
+ used.add(marker);
158
+ }
159
+ if (used.size === 0)
160
+ return markers;
161
+ const specifier = process.env.GEATSC2_APPLE_SDK ?? '@geastack/apple';
162
+ const root = packageRootOf(require_.resolve(specifier), specifier);
163
+ if (root === null)
164
+ return markers;
165
+ const manifest = JSON.parse(readFileSync(resolvePath(root, 'package.json'), 'utf8'));
166
+ const exports_ = manifest.exports;
167
+ if (typeof exports_ !== 'object' || exports_ === null)
168
+ return markers;
169
+ for (const entry of Object.values(exports_)) {
170
+ if (typeof entry !== 'object' || entry === null)
171
+ continue;
172
+ if (typeof entry.types !== 'string' || typeof entry.import !== 'string')
173
+ continue;
174
+ let implementation;
175
+ try {
176
+ implementation = readFileSync(resolvePath(root, entry.import), 'utf8');
177
+ }
178
+ catch {
179
+ continue;
180
+ }
181
+ const mentioned = [...used].filter((marker) => implementation.includes(marker));
182
+ if (mentioned.length !== 1)
183
+ continue;
184
+ markers.set(resolvePath(root, entry.types), mentioned[0]);
185
+ }
186
+ return markers;
187
+ };
188
+ /**
189
+ * The parameters a class declares for its own constructor, or `null` when the
190
+ * metadata states none.
191
+ *
192
+ * Keyed by the class's own name, which is how `embeddedHostClasses` is keyed --
193
+ * the metadata is keyed by `Framework.Class`, so the two are joined on the
194
+ * `name` each metadata row carries rather than by re-deriving either spelling.
195
+ */
196
+ export const appleClassConstructorParameters = (className) => {
197
+ for (const entry of Object.values(appleBridgeMetadata().classes ?? {})) {
198
+ if (entry.name !== className)
199
+ continue;
200
+ const declared = entry.constructor;
201
+ // `constructor` is inherited from `Object.prototype` on any plain object,
202
+ // so a class that states none answers with a FUNCTION here rather than
203
+ // with `undefined`. Own-property, or nothing.
204
+ if (!Object.prototype.hasOwnProperty.call(entry, 'constructor') || typeof declared !== 'object' || declared === null)
205
+ return null;
206
+ return declared.parameters ?? [];
207
+ }
208
+ return null;
209
+ };
210
+ /**
211
+ * Writes `gea/apple/native_bridge.{h,mm}` next to the emitted unit, by driving
212
+ * the Apple plugin package's own generator.
213
+ *
214
+ * The unit this compiler emits opens with `#include "gea/apple/native_bridge.h"`
215
+ * and the target links `native_bridge.mm`, so both files are part of what a
216
+ * generated Apple program is compiled against -- the same kind of fact as the
217
+ * runtime header `cli-emit.ts` copies in, owned by a host rather than by the
218
+ * core. Nothing else in the tree writes them: v1's pipeline gets them from
219
+ * `createCppBackend(...).transformGeneratedSources(...)`, a hook this compiler's
220
+ * plugin seam does not have and should not grow, because the thing that hook
221
+ * exists to do to v1's SOURCES is not wanted here (see below).
222
+ *
223
+ * Measured, and this is why it is a defect worth a memory: with no one writing
224
+ * them, a build succeeded only where a *stale* bridge from a v1 build happened
225
+ * to still be sitting in the gitignored output directory. Moving it aside made
226
+ * the macOS build fail immediately, and the five iOS apps -- which had no
227
+ * leftover -- all stopped at `'gea/apple/native_bridge.h' file not found`.
228
+ *
229
+ * The metadata is the one the *pipeline* passed, not the fixture-derived table
230
+ * `appleHostShims` reads above, and the difference is load-bearing: v1's build
231
+ * script filters the SDK fixture by platform before writing the file, so a
232
+ * macOS build's metadata declares `AppKit.installRootView` and an iOS build's
233
+ * declares `UIKit.installRootView`. Generating the bridge from the unfiltered
234
+ * fixture would declare both, and the header would name five AppKit free
235
+ * functions no iOS target defines.
236
+ *
237
+ * Only the file-writing half of v1's hook is driven. The other half inserts a
238
+ * preamble of `gea::apple::bridge` helpers into `generated_support.hpp`, for
239
+ * calls v1's emitter makes; this compiler's units reference no such helper
240
+ * (measured: zero occurrences of `gea::apple::bridge::` across every emitted
241
+ * Apple unit), so an empty source list is handed over and the transformed
242
+ * result is discarded rather than a preamble being inserted for nothing.
243
+ */
244
+ export const writeAppleBridgeArtifacts = (metadataPath, outDir) => {
245
+ const pluginSpecifier = process.env.GEATSC2_APPLE_PLUGIN ?? '@geastack/geatsc-plugin-apple-native';
246
+ const plugin = require_(pluginSpecifier);
247
+ const factory = plugin.appleNativePlugin;
248
+ if (typeof factory !== 'function')
249
+ throw new Error(`'${pluginSpecifier}' exports no appleNativePlugin function`);
250
+ // Read here rather than through the package's own `loadMetadata`, which is
251
+ // private to it and resolves relative to the compiled ENTRY -- a path this
252
+ // seam does not have. The pipeline states an absolute path
253
+ // (`build-gea-vite-geatsc.mjs` resolves `--out-dir` before joining), so
254
+ // resolving against the working directory is the same answer for every real
255
+ // build and a defined one otherwise.
256
+ const metadata = JSON.parse(readFileSync(resolvePath(metadataPath), 'utf8'));
257
+ const backend = factory({ metadata }).createCppBackend?.({ outDir });
258
+ if (backend?.transformGeneratedSources === undefined) {
259
+ throw new Error(`'${pluginSpecifier}' produced no C++ backend for the metadata at '${metadataPath}'`);
260
+ }
261
+ backend.transformGeneratedSources([]);
262
+ };
@@ -0,0 +1,2 @@
1
+ import type { PluginSourceFile } from '../model.js';
2
+ export declare const appleJsxTransform: ({ fileName, text }: PluginSourceFile) => string | null;