@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,293 @@
1
+ import ts from 'typescript';
2
+ import { appleNativeTypes } from './host.js';
3
+ import { appleHostMembers, appleMethodParameters } from './members.js';
4
+ /**
5
+ * Apple's JSX, rewritten into the construction it always meant.
6
+ *
7
+ * ## Why this cannot be a producer
8
+ *
9
+ * Everything else this plugin does reads the checker's answer. This cannot,
10
+ * because for JSX over AppKit the checker has no answer to give:
11
+ *
12
+ * - Every JSX element is typed `JSX.Element`, never the tag's own class. That
13
+ * is the language's rule, not a configuration: the element type comes from
14
+ * the JSX namespace in scope. Measured against `jsx: "react-jsx"` with a
15
+ * factory declared `<T extends new () => NSView>(type: T, props:
16
+ * Partial<InstanceType<T>>): InstanceType<T>` -- the namespace's `Element`
17
+ * still wins, so `<NSStackView/>` is not an `NSStackView` to anything
18
+ * downstream.
19
+ * - JSX attribute checking requires the component to have a PROPS PARAMETER.
20
+ * An AppKit class does not have one, so `spacing="not-a-number"` produces no
21
+ * diagnostic whatsoever -- an entire class of author error passes silently.
22
+ *
23
+ * So a producer running after the checker would be handed `JSX.Element` and a
24
+ * bag of unchecked attributes, and would have to re-derive from syntax what the
25
+ * type system was supposed to establish. The element has to become ordinary
26
+ * TypeScript BEFORE the checker runs, which is what v1 does -- a Babel
27
+ * transform in `vite-plugin-apple-native`, whose output shape this reproduces
28
+ * exactly. After the rewrite the checker types `new NSStackView()` as an
29
+ * `NSStackView` and checks `stack.spacing = 8` against the real declared
30
+ * property, which is the entire point.
31
+ *
32
+ * ## What decides which tags are claimed
33
+ *
34
+ * `appleNativeTypes()`, and nothing else. v1's transform carries a hardcoded
35
+ * list of twenty-two tag names, which is a second copy of a fact the SDK
36
+ * package already states and which goes stale the first time the SDK grows a
37
+ * class. A tag this host does not own is left untouched, so a file mixing
38
+ * AppKit elements with another library's is rewritten only where it should be.
39
+ *
40
+ * Whether a child is added with `addArrangedSubview` or `addSubview` is decided
41
+ * the same way -- by asking whether the parent's carrier has an
42
+ * `addArrangedSubview` member -- rather than by a second hardcoded list of the
43
+ * three stack-shaped classes.
44
+ *
45
+ * ## Why text, and why splicing
46
+ *
47
+ * Text in, text out: what the checker parses is a program a person could have
48
+ * written, and every stage after it behaves as though the author wrote that.
49
+ * The rewrite splices only the ranges the elements occupy, innermost text taken
50
+ * from the original source, so every other byte of the file -- comments,
51
+ * formatting, the code around the element -- survives exactly. Reprinting the
52
+ * file through TypeScript's printer would have been less code and would have
53
+ * rewritten lines nothing asked to change.
54
+ */
55
+ /** The name a JSX tag spells, when it is a plain identifier; `null` for a qualified or namespaced tag. */
56
+ const tagNameOf = (element) => ts.isIdentifier(element.tagName) ? element.tagName.text : null;
57
+ const claimedElement = (node, carriers) => {
58
+ if (ts.isJsxSelfClosingElement(node)) {
59
+ const tag = tagNameOf(node);
60
+ return tag !== null && carriers.has(tag) ? { node, opening: node, tag, children: [] } : null;
61
+ }
62
+ if (!ts.isJsxElement(node))
63
+ return null;
64
+ const tag = tagNameOf(node.openingElement);
65
+ return tag !== null && carriers.has(tag) ? { node, opening: node.openingElement, tag, children: node.children } : null;
66
+ };
67
+ /**
68
+ * The call that adds a child to this parent, as the parent's own type decides.
69
+ *
70
+ * A stack view arranges its children with Auto Layout and takes them through
71
+ * `addArrangedSubview`; every other view takes them through `addSubview`, and
72
+ * handing a stack view the second silently produces a view with an unarranged,
73
+ * unpositioned child. The member table is what knows which is which, so the
74
+ * question is asked of it rather than of a list of class names kept here.
75
+ */
76
+ const childAdderOf = (carrier, members) => members.has(`${carrier}.addArrangedSubview`) ? 'addArrangedSubview' : 'addSubview';
77
+ /** The source text of a node, exactly as the author wrote it. */
78
+ const sourceTextOf = (node, file) => node.getText(file);
79
+ /**
80
+ * One attribute's value as an expression.
81
+ *
82
+ * A valueless attribute is `true`, which is JSX's own rule for one. A string
83
+ * literal and an expression container are both taken verbatim -- the author's
84
+ * text is the value, and re-rendering it would be this file deciding how their
85
+ * expression should look.
86
+ */
87
+ const attributeValueText = (attribute, file, tag) => {
88
+ const initializer = attribute.initializer;
89
+ if (initializer === undefined)
90
+ return 'true';
91
+ if (ts.isStringLiteral(initializer))
92
+ return sourceTextOf(initializer, file);
93
+ if (ts.isJsxExpression(initializer) && initializer.expression)
94
+ return sourceTextOf(initializer.expression, file);
95
+ throw new Error(`<${tag}> has an attribute with no value expression; an Apple native element sets properties, and a property needs a value`);
96
+ };
97
+ /** The object literal an attribute's value is, or `null` when it is any other expression. */
98
+ const objectLiteralOf = (attribute) => {
99
+ const initializer = attribute.initializer;
100
+ if (initializer === undefined || !ts.isJsxExpression(initializer) || !initializer.expression)
101
+ return null;
102
+ return ts.isObjectLiteralExpression(initializer.expression) ? initializer.expression : null;
103
+ };
104
+ /**
105
+ * An object-literal attribute CONFIGURES the member it names; it does not
106
+ * replace it.
107
+ *
108
+ * `layer={{ cornerRadius: 6 }}` is the case that proves the rule, and the
109
+ * checker is what proves it: `layer` is declared read-only -- a view owns its
110
+ * layer and a program cannot hand it a different one -- so rewriting the
111
+ * attribute as `view.layer = { … }` produces "Cannot assign to 'layer' because
112
+ * it is a read-only property", correctly. What the author means is the six
113
+ * words the object spells out: set these properties on the layer this view
114
+ * already has. So each property becomes its own assignment through the member.
115
+ *
116
+ * Stated generally rather than for `layer` alone (v1 names that one property):
117
+ * nothing about the rule is specific to layers, and a list of member names kept
118
+ * here would be one more copy of the host's own model.
119
+ */
120
+ const objectAttributeStatements = (view, member, literal, file, tag) => literal.properties.map((property) => {
121
+ if (!ts.isPropertyAssignment(property)) {
122
+ throw new Error(`<${tag}> configures "${member}" with an entry that is not a plain \`name: value\`; each one becomes an assignment, and only a named property has a name to assign through`);
123
+ }
124
+ if (!ts.isIdentifier(property.name) && !ts.isStringLiteral(property.name)) {
125
+ throw new Error(`<${tag}> configures "${member}" through a computed property name; the property a value lands on has to be known here, before the checker types it`);
126
+ }
127
+ return `${view}.${member}.${property.name.text} = ${sourceTextOf(property.initializer, file)};`;
128
+ });
129
+ /** The setter spelling of an attribute name: `title` becomes `setTitle`. */
130
+ const setterNameOf = (attribute) => `set${attribute.slice(0, 1).toUpperCase()}${attribute.slice(1)}`;
131
+ /**
132
+ * The value a parameter the attribute form cannot spell takes.
133
+ *
134
+ * `setTitle:forState:` has a control state and `setOn:animated:` has an
135
+ * animation flag; an attribute states one value and says nothing about either.
136
+ * What it means by saying nothing is the plain case -- the title in the normal
137
+ * state, set without animation -- and on this platform the plain case is the
138
+ * zero of the parameter's own declared type: control state `0` is `.normal`,
139
+ * `animated: false` is no animation.
140
+ *
141
+ * A parameter of any other kind has no such value. An object cannot be
142
+ * defaulted -- there is no empty `UIColor` that means "unspecified" -- and a
143
+ * primitive the SDK names something other than `number` or `boolean` is an
144
+ * enumeration whose zero this file has no standing to pick. Both are refused
145
+ * rather than guessed.
146
+ */
147
+ const parameterZeroOf = (type) => {
148
+ if (type?.kind !== 'primitive')
149
+ return null;
150
+ if (type.name === 'number')
151
+ return '0';
152
+ return type.name === 'boolean' ? 'false' : null;
153
+ };
154
+ /**
155
+ * An attribute the class states only as a setter.
156
+ *
157
+ * `<UIButton title="Go"/>`: a button has no `title` property, because a
158
+ * button's title is per control state, so UIKit spells it
159
+ * `setTitle:forState:`. Assigning the attribute as a property would emit
160
+ * `button.title = "Go"`, which the checker rejects outright -- and did, on five
161
+ * iOS programs, the moment this transform started producing code the checker
162
+ * actually types.
163
+ *
164
+ * Which attributes these are is not a list kept here. v1's transform names
165
+ * three of them; this asks the host's own tables the question those three are
166
+ * the answer to -- the carrier states no member `title`, and does state a
167
+ * method `setTitle` -- so a class that grows a fourth is carried without an
168
+ * edit here, and one that turns a setter into a property stops being routed
169
+ * without one either.
170
+ *
171
+ * `null` when the attribute is an ordinary property, which is nearly all of
172
+ * them: the caller then assigns it as written.
173
+ */
174
+ const setterStatement = (view, carrier, attribute, valueText, members, tag) => {
175
+ if (members.has(`${carrier}.${attribute}`))
176
+ return null;
177
+ const setter = setterNameOf(attribute);
178
+ if (!members.has(`${carrier}.${setter}`))
179
+ return null;
180
+ const parameters = appleMethodParameters(carrier, setter);
181
+ if (parameters === null)
182
+ return null;
183
+ const rest = parameters.slice(1).map((parameter) => {
184
+ const zero = parameterZeroOf(parameter.type);
185
+ if (zero === null) {
186
+ throw new Error(`<${tag}> sets "${attribute}" through ${setter}, which takes a further argument of a kind an attribute cannot leave unstated; ` +
187
+ `call ${setter} directly with every argument it needs`);
188
+ }
189
+ return zero;
190
+ });
191
+ return `${view}.${setter}(${[valueText, ...rest].join(', ')});`;
192
+ };
193
+ /**
194
+ * The whole element as one expression: build it, configure it, hand it back.
195
+ *
196
+ * An immediately-invoked arrow, because a JSX element is an EXPRESSION and the
197
+ * work it stands for is a sequence of statements. That is v1's shape too, and
198
+ * it is what lets an element appear wherever the author put one -- an
199
+ * initializer, an argument, a child of another element -- without this
200
+ * transform having to know where it landed.
201
+ */
202
+ const elementExpressionText = (claimed, file, carriers, members, nextName) => {
203
+ const view = nextName();
204
+ const carrier = carriers.get(claimed.tag) ?? '';
205
+ const statements = [`const ${view} = new ${claimed.tag}();`];
206
+ for (const attribute of claimed.opening.attributes.properties) {
207
+ if (!ts.isJsxAttribute(attribute) || !ts.isIdentifier(attribute.name)) {
208
+ // A spread carries names known only at run time, and a property assigned
209
+ // by a name nothing states is exactly the unchecked write this transform
210
+ // exists to eliminate.
211
+ throw new Error(`<${claimed.tag}> spreads its attributes; an Apple native element states each property it sets, by name`);
212
+ }
213
+ const literal = objectLiteralOf(attribute);
214
+ if (literal) {
215
+ statements.push(...objectAttributeStatements(view, attribute.name.text, literal, file, claimed.tag));
216
+ continue;
217
+ }
218
+ const value = attributeValueText(attribute, file, claimed.tag);
219
+ const setter = setterStatement(view, carrier, attribute.name.text, value, members, claimed.tag);
220
+ statements.push(setter ?? `${view}.${attribute.name.text} = ${value};`);
221
+ }
222
+ const adder = childAdderOf(carrier, members);
223
+ for (const child of claimed.children) {
224
+ const nested = claimedElement(child, carriers);
225
+ if (nested) {
226
+ statements.push(`${view}.${adder}(${elementExpressionText(nested, file, carriers, members, nextName)});`);
227
+ continue;
228
+ }
229
+ if (ts.isJsxExpression(child)) {
230
+ if (child.expression)
231
+ statements.push(`${view}.${adder}(${sourceTextOf(child.expression, file)});`);
232
+ continue;
233
+ }
234
+ if (ts.isJsxText(child)) {
235
+ if (child.text.trim().length > 0) {
236
+ throw new Error(`<${claimed.tag}> has text between its tags; an AppKit view holds subviews, and text belongs to a field's own string property`);
237
+ }
238
+ continue;
239
+ }
240
+ throw new Error(`<${claimed.tag}> has a child this transform does not read; an Apple native element's children are elements or expressions`);
241
+ }
242
+ statements.push(`return ${view};`);
243
+ return `(() => { ${statements.join(' ')} })()`;
244
+ };
245
+ /**
246
+ * The outermost claimed elements in a file, in source order.
247
+ *
248
+ * Outermost only: a claimed element renders its own children itself, from the
249
+ * original AST, so descending into one would rewrite the same text twice.
250
+ */
251
+ const claimedRootsOf = (file, carriers) => {
252
+ const roots = [];
253
+ const visit = (node) => {
254
+ const claimed = claimedElement(node, carriers);
255
+ if (claimed) {
256
+ roots.push(claimed);
257
+ return;
258
+ }
259
+ ts.forEachChild(node, visit);
260
+ };
261
+ ts.forEachChild(file, visit);
262
+ return roots;
263
+ };
264
+ export const appleJsxTransform = ({ fileName, text }) => {
265
+ // JSX is only JSX in a file whose extension says the parser should read it as
266
+ // such, and a file with no `<` cannot contain an element -- one substring test
267
+ // is what a file this plugin has nothing to do with costs.
268
+ if (!fileName.endsWith('.tsx') && !fileName.endsWith('.jsx'))
269
+ return null;
270
+ if (!text.includes('<'))
271
+ return null;
272
+ const carriers = appleNativeTypes();
273
+ if (carriers.size === 0)
274
+ return null;
275
+ const file = ts.createSourceFile(fileName, text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
276
+ const roots = claimedRootsOf(file, carriers);
277
+ if (roots.length === 0)
278
+ return null;
279
+ const members = appleHostMembers();
280
+ let counter = 0;
281
+ const nextName = () => `__geaAppleView${counter++}`;
282
+ // Spliced from the end so every earlier element's range is still the range it
283
+ // was measured at. Rewriting forwards would need every later position
284
+ // adjusted by the length each replacement changed, which is the same answer
285
+ // with an off-by-one to find.
286
+ let rewritten = text;
287
+ for (const claimed of [...roots].reverse()) {
288
+ const start = claimed.node.getStart(file);
289
+ rewritten =
290
+ rewritten.slice(0, start) + elementExpressionText(claimed, file, carriers, members, nextName) + rewritten.slice(claimed.node.end);
291
+ }
292
+ return rewritten;
293
+ };
@@ -0,0 +1,16 @@
1
+ import type { HostMemberTable } from '../../targets/cpp/host/host-members.js';
2
+ import { type AppleMethodParameter } from './host.js';
3
+ export declare const appleHostMembers: () => HostMemberTable;
4
+ /**
5
+ * The parameters a class declares for one of its methods.
6
+ *
7
+ * Walked up the chain the class extends, because a method is declared once, on
8
+ * the class that introduces it, while the member tables list every receiver
9
+ * that inherits it -- so "this carrier accepts `setTitle`" and "this class
10
+ * declares `setTitle`" are answered by two different rows, and only the second
11
+ * one carries the parameter list.
12
+ *
13
+ * `null` when nothing in the chain declares the method, which is a real answer
14
+ * and not an empty parameter list: a method with no parameters states `[]`.
15
+ */
16
+ export declare const appleMethodParameters: (carrier: string, method: string) => readonly AppleMethodParameter[] | null;
@@ -0,0 +1,190 @@
1
+ import { templateArity } from '../../targets/cpp/host/host-members.js';
2
+ import { appleBridgeMetadata, appleMemberTables, appleNativeTypes } from './host.js';
3
+ /**
4
+ * The carriers a binding applies to.
5
+ *
6
+ * A binding lists every spelling of every receiver it accepts -- the bare
7
+ * ObjC name (`NSView`), the pointer form (`NSView *`), the C++ wrapper
8
+ * (`gea::apple::AppKit::NSView`), and `gea_cpp_value`. Only the wrapper form is
9
+ * kept, because that is the carrier this compiler keys a host member by, and
10
+ * the bare and pointer forms are the same type under two other names.
11
+ *
12
+ * `gea_cpp_value` is dropped deliberately and permanently. It is v1's boxed
13
+ * receiver -- the dynamic fallback that lets a member resolve off a value whose
14
+ * type was erased -- and admitting it here would make every AppKit member
15
+ * reachable through the box this compiler exists not to produce.
16
+ */
17
+ const carriersOf = (binding) => (binding.receiverTypes ?? []).filter((name) => name.startsWith('gea::apple::'));
18
+ /**
19
+ * The other spelling convention this host states: a thunk, not a message send.
20
+ *
21
+ * Fifty of the Apple member rows carry `extern` instead of `emit` -- a C++ free
22
+ * function the generated bridge declares and defines, rather than an inline
23
+ * ObjC template. The calling convention is the package's own, stated in v1's
24
+ * `native-global-function-bindings.ts` where these tables are declared: "Reads
25
+ * and writes lower to configured extern names with the receiver as the first
26
+ * argument." The generated header says the same thing in C++ --
27
+ * `MTKView_get_currentRenderPassDescriptor(MTKView self)`,
28
+ * `MTKView_set_device(MTKView self, MTLDevice value)`.
29
+ *
30
+ * So the template is that call, and the only thing it needs beyond the row is
31
+ * how many arguments to pass. A getter takes none and a setter takes the value;
32
+ * a method takes what the class DECLARES, which the metadata one step upstream
33
+ * still knows (`appleMethodParameters`) and these tables no longer do. A method
34
+ * whose declaration cannot be found renders nothing rather than a call with a
35
+ * guessed arity: that would be a link error naming a symbol the program never
36
+ * wrote, in place of a refusal naming the member it could not spell.
37
+ */
38
+ const externTemplate = (name, binding, carrier, slots) => {
39
+ const symbol = binding.extern;
40
+ if (symbol === undefined || symbol.length === 0)
41
+ return null;
42
+ if (slots === 'none')
43
+ return `${symbol}({receiver})`;
44
+ if (slots === 'value')
45
+ return `${symbol}({receiver}, {value})`;
46
+ const parameters = appleMethodParameters(carrier, name);
47
+ if (parameters === null)
48
+ return null;
49
+ const args = parameters.map((_, position) => `, {arg${position}}`).join('');
50
+ return `${symbol}({receiver}${args})`;
51
+ };
52
+ const addRows = (rows, table, slots, member) => {
53
+ for (const [name, bindings] of Object.entries(table ?? {})) {
54
+ for (const binding of bindings) {
55
+ for (const carrier of carriersOf(binding)) {
56
+ const emit = binding.emit !== undefined && binding.emit.length > 0 ? binding.emit : externTemplate(name, binding, carrier, slots);
57
+ if (emit === null || emit === undefined || emit.length === 0)
58
+ continue;
59
+ const key = `${carrier}.${name}`;
60
+ const row = member(emit, rows.get(key));
61
+ if (row)
62
+ rows.set(key, row);
63
+ }
64
+ }
65
+ }
66
+ };
67
+ /**
68
+ * Apple's host members, keyed the way this backend keys every host member:
69
+ * `<carrier>.<member>`.
70
+ *
71
+ * The package states them the other way round -- keyed by member name, each
72
+ * binding listing the receiver types it accepts -- because that is the shape
73
+ * its own emitter looks members up in. Transposing here is not restating the
74
+ * data: every template, every receiver list and every cast stays in the package
75
+ * that generates it, and this is the one place that says which of the two
76
+ * indexes this compiler reads.
77
+ *
78
+ * A getter and a setter for one member are two rows in the package and one row
79
+ * here, merged by key, because a read and a write of `view.frame` are two
80
+ * directions of a single property and `HostMember` states them as such. The
81
+ * first binding to claim a key wins; a later one with different text for the
82
+ * same carrier and member would be the package disagreeing with itself, and
83
+ * silently overwriting would hide that.
84
+ */
85
+ /**
86
+ * A class object's own members, added under the carrier its instances use.
87
+ *
88
+ * `NSColor.clearColor` is a message to the class and `color.blendedColorWith`
89
+ * is a message to an object, but the declaration file names the class and the
90
+ * instance type with one identifier, so `nativeTypes` maps that one name to one
91
+ * C++ wrapper and both member sets are reached under one key.
92
+ *
93
+ * That is safe only while no class states a static and an instance member of
94
+ * the same name -- measured: zero collisions across all 58 Apple statics. It is
95
+ * not safe by construction, and the failure would be silent: the wrong template
96
+ * renders and clang accepts it, because both spell a valid message send. So the
97
+ * invariant is enforced rather than assumed. A collision means the packages now
98
+ * state something this key space cannot hold, and the fix is upstream of here.
99
+ */
100
+ const addNamespaceRows = (rows, shims) => {
101
+ const carriers = appleNativeTypes();
102
+ for (const [className, members] of Object.entries(shims.nativeNamespaceMethods ?? {})) {
103
+ const carrier = carriers.get(className);
104
+ // A class the type table does not carry has no key to file its statics
105
+ // under, and inventing one would claim a member of a protocol nothing
106
+ // binds. Skipping is the honest answer: no claim, so no drift.
107
+ if (carrier === undefined)
108
+ continue;
109
+ for (const [name, member] of Object.entries(members)) {
110
+ const emit = member.emit;
111
+ if (emit === undefined || emit.length === 0)
112
+ continue;
113
+ const key = `${carrier}.${name}`;
114
+ if (rows.has(key)) {
115
+ throw new Error(`apple host members: "${key}" is stated both as a member of ${className} instances and as a member of the ` +
116
+ `${className} class object; one key cannot render both, and choosing either silently renders the wrong message send`);
117
+ }
118
+ rows.set(key, { kind: 'method', emit, arity: templateArity(emit) });
119
+ }
120
+ }
121
+ };
122
+ export const appleHostMembers = () => {
123
+ const shims = appleMemberTables();
124
+ if (!shims)
125
+ return new Map();
126
+ const rows = new Map();
127
+ addRows(rows, shims.nativeMemberMethods, 'declared', (emit, existing) => existing ? null : { kind: 'method', emit, arity: templateArity(emit) });
128
+ addRows(rows, shims.nativeMemberPropertyGetters, 'none', (emit, existing) => existing?.kind === 'property' ? (existing.emit === null ? { ...existing, emit } : null) : { kind: 'property', emit, store: null });
129
+ addRows(rows, shims.nativeMemberPropertySetters, 'value', (emit, existing) => existing?.kind === 'property'
130
+ ? existing.store === null
131
+ ? { ...existing, store: emit }
132
+ : null
133
+ : existing
134
+ ? null
135
+ : { kind: 'property', emit: null, store: emit });
136
+ // Last, so the collision guard above sees every instance member already
137
+ // filed: a static added first would be the thing an instance member
138
+ // overwrote, and the overwrite is exactly what must not happen quietly.
139
+ addNamespaceRows(rows, shims);
140
+ return rows;
141
+ };
142
+ /**
143
+ * The metadata classes, indexed by the C++ wrapper each one's values carry.
144
+ *
145
+ * The metadata keys a class by `Framework.Class`, which is the spelling
146
+ * `extends` uses and so the one the chain walk below follows; the carrier is
147
+ * what every other table here is keyed by. Both indexes come from the same
148
+ * rows, so this is the metadata's own `wrapper` field read backwards rather
149
+ * than a second naming rule that could disagree with it.
150
+ */
151
+ let byCarrier = null;
152
+ const carrierIndex = () => {
153
+ if (byCarrier)
154
+ return byCarrier;
155
+ const index = new Map();
156
+ for (const [key, entry] of Object.entries(appleBridgeMetadata().classes ?? {})) {
157
+ if (typeof entry.wrapper === 'string' && entry.wrapper.length > 0)
158
+ index.set(entry.wrapper, key);
159
+ }
160
+ byCarrier = index;
161
+ return index;
162
+ };
163
+ /**
164
+ * The parameters a class declares for one of its methods.
165
+ *
166
+ * Walked up the chain the class extends, because a method is declared once, on
167
+ * the class that introduces it, while the member tables list every receiver
168
+ * that inherits it -- so "this carrier accepts `setTitle`" and "this class
169
+ * declares `setTitle`" are answered by two different rows, and only the second
170
+ * one carries the parameter list.
171
+ *
172
+ * `null` when nothing in the chain declares the method, which is a real answer
173
+ * and not an empty parameter list: a method with no parameters states `[]`.
174
+ */
175
+ export const appleMethodParameters = (carrier, method) => {
176
+ const classes = appleBridgeMetadata().classes ?? {};
177
+ let key = carrierIndex().get(carrier);
178
+ const seen = new Set();
179
+ while (key !== undefined && !seen.has(key)) {
180
+ seen.add(key);
181
+ const entry = classes[key];
182
+ if (entry === undefined)
183
+ return null;
184
+ const declared = entry.methods?.[method];
185
+ if (declared !== undefined)
186
+ return declared.parameters ?? [];
187
+ key = entry.extends;
188
+ }
189
+ return null;
190
+ };
@@ -0,0 +1,2 @@
1
+ import type { CompilerPlugin } from '../model.js';
2
+ export declare const applePlugin: CompilerPlugin;
@@ -0,0 +1,156 @@
1
+ import { noHostNamespaces } from '../../targets/cpp/host/host-members.js';
2
+ import { appleNativeTypes, writeAppleBridgeArtifacts } from './host.js';
3
+ import { appleHostConstructors, appleHostFunctions, appleHostFunctionsByDeclaration, appleNativeBases, appleNativeBridgeHeader, appleNativeConstants, appleNativeIncludes } from './constructors.js';
4
+ import { appleHostMembers } from './members.js';
5
+ import { appleJsxTransform } from './jsx.js';
6
+ /**
7
+ * Apple's native frameworks, as a plugin.
8
+ *
9
+ * Data only, for now, and deliberately so. `AppKit`, `Foundation` and their
10
+ * siblings are a *host's* description of itself: nothing about `NSView` or
11
+ * `NSTextField` is TypeScript, so a generic TypeScript-to-C++ compiler that
12
+ * knew how to render one would be asserting something about the program's
13
+ * environment that nothing in the program says. What it needs to be told is
14
+ * which declared type names that host owns and what its runtime carries their
15
+ * values in -- and that is exactly `nativeTypes`, which the Apple packages
16
+ * already generate for v1's build.
17
+ *
18
+ * No producer and no lowering: unlike gea, this host adds no meaning to a
19
+ * language form. An AppKit program is ordinary TypeScript calling methods on
20
+ * host objects, and the core compiles it as such the moment it knows those
21
+ * objects are host objects.
22
+ *
23
+ * The claim and the spelling travel together, as they must: `nativeTypes` is
24
+ * what makes a protocol claimable and `hostMembers` is what renders a member of
25
+ * it, and a plugin that stated one without the other would certify a program at
26
+ * preflight that emission then refuses by name.
27
+ */
28
+ /**
29
+ * The `writeArtifacts` half of this plugin, present only when the build stated
30
+ * where its Apple metadata is.
31
+ *
32
+ * Spread into the instance rather than defined on it so a non-Apple build has
33
+ * no such property at all, which is the same thing `PluginInstance` says an
34
+ * absent hook means -- rather than a function that is installed and then
35
+ * decides at write time to do nothing, which is a second place for the
36
+ * condition to be stated and to drift from the first.
37
+ */
38
+ const appleMetadataPath = (options) => {
39
+ const path = options.get('apple.metadata');
40
+ return path === undefined || path.length === 0 ? null : path;
41
+ };
42
+ const appleBridgeArtifacts = (options) => {
43
+ const metadataPath = appleMetadataPath(options);
44
+ if (metadataPath === null)
45
+ return {};
46
+ return { writeArtifacts: (outDir) => writeAppleBridgeArtifacts(metadataPath, outDir) };
47
+ };
48
+ export const applePlugin = {
49
+ name: 'apple-native',
50
+ instantiate: (options) => ({
51
+ producers: () => [],
52
+ lower: () => false,
53
+ // The bridge the emitted unit includes and the target links -- see
54
+ // `writeAppleBridgeArtifacts`. Installed only for a build that stated
55
+ // `apple.metadata`, which is exactly the build whose unit includes it:
56
+ // this plugin is installed unconditionally (its tables are data, and a
57
+ // program that names no Apple type reads none of them), so writing a
58
+ // bridge on the strength of installation alone would drop an AppKit header
59
+ // into every web and embedded app's output directory.
60
+ ...appleBridgeArtifacts(options),
61
+ // The one thing this host cannot state as data: JSX over its classes has to
62
+ // become construction before the checker runs, because the checker cannot
63
+ // type an element as its tag. See `jsx.ts` for what was measured.
64
+ transformSource: appleJsxTransform,
65
+ capabilities: {
66
+ runtimeHelpers: new Set(),
67
+ propertyRecipes: new Set(),
68
+ // Every protocol this plugin claims is derived from the carriers in
69
+ // `nativeTypes` (`compiler.ts` unions `${carrier}@1` in), so there is
70
+ // nothing to state twice here. A name absent from that table is not
71
+ // host-owned, and no protocol is claimed for it.
72
+ nativeProtocols: new Set(),
73
+ nativeTypes: appleNativeTypes(),
74
+ declarationModules: new Set([
75
+ process.env.GEATSC2_APPLE_SDK ?? '@geastack/apple',
76
+ `${process.env.GEATSC2_APPLE_SDK ?? '@geastack/apple'}/*`
77
+ ]),
78
+ // Apple's classes are ambient host declarations to begin with -- there
79
+ // is no OTHER, wrongly-stated ambient name for one of them to replace,
80
+ // which is the gap `ambientTypeRealizations` closes. See its own
81
+ // doc comment (`plugins/model.ts`) and `webgl/plugin.ts` for the host
82
+ // that actually needs one.
83
+ ambientTypeRealizations: new Map(),
84
+ hostMembers: appleHostMembers(),
85
+ // `AppleMemberBinding` (host.ts) states no `returnType` at all -- unlike
86
+ // gea's `GeaMemberBinding`, this plugin's member-method table carries no
87
+ // note of a real C++ return diverging from the checker's declared one --
88
+ // so there is nothing here for `emitCall` to force void from.
89
+ hostMemberVoidResults: new Set(),
90
+ hostConstructors: appleHostConstructors(),
91
+ hostFunctions: appleHostFunctions(),
92
+ // UIKit and AppKit each declare an `installRootView`, and the flat table
93
+ // above can hold only one. See `appleHostFunctionsByDeclaration`.
94
+ hostFunctionsByDeclaration: appleHostFunctionsByDeclaration(),
95
+ // The Apple packages state no namespace globals: every AppKit entry
96
+ // point this compiler reaches is a member of a class or a free function,
97
+ // and a class object is already carried by `nativeTypes`.
98
+ hostNamespaces: noHostNamespaces,
99
+ // No namespace roots claimed at all, so no per-file collision to state either.
100
+ hostNamespaceRootsByDeclaration: new Map(),
101
+ // No namespace roots, so nothing to state a type for either.
102
+ hostNamespaceRootTypes: new Map(),
103
+ // Every AppKit singleton this compiler reaches (`NSApplication.shared`)
104
+ // is a static member of a class object, which `host-class` already
105
+ // renders; no global name on this host is one.
106
+ hostSingletons: new Set(),
107
+ // No singletons claimed, so no per-file collision to state either.
108
+ hostSingletonsByDeclaration: new Map(),
109
+ // AppKit describes its own classes and says nothing about the web
110
+ // platform's globals; a program that also names one is describing a
111
+ // second host, and that host is the one that should answer for it.
112
+ absentGlobals: new Set(),
113
+ // Apple's declarations arrive through `nativeIncludes` -- one header per
114
+ // carrier -- rather than per spelling.
115
+ hostPreambles: new Map(),
116
+ nativeBases: appleNativeBases(),
117
+ nativeIncludes: appleNativeIncludes(),
118
+ nativeConstants: appleNativeConstants(),
119
+ // `embeddedHostConstants` (host.ts) carries no per-declaration-file
120
+ // variant the way `embeddedHostFunctionFrameworkVariants` does for
121
+ // functions -- the package states one ambient value per constant name,
122
+ // not one per framework -- so there is no collision to state here.
123
+ hostConstantsByDeclaration: new Map(),
124
+ // AppKit asks nothing of a generated unit: the target's own `macos_main.mm`
125
+ // defines every host function this plugin names, and the bridge is written
126
+ // by the plugin package next to the unit rather than into it.
127
+ // The unit is compiled against the bridge exactly when the bridge is
128
+ // written beside it, so this reads the same option `appleBridgeArtifacts`
129
+ // does, through the same helper: the two are one condition and a build
130
+ // that got one without the other would either include a header nothing
131
+ // wrote or write one nothing includes. Not derived from which carriers
132
+ // the plan selected -- an apple-native app whose program happens to name
133
+ // no Apple type is still an apple-native app, and the target decides that
134
+ // by reading this line out of `generated_support.hpp`.
135
+ generatedSupportIncludes: appleMetadataPath(options) === null ? [] : [appleNativeBridgeHeader],
136
+ runtimeDefinitions: [],
137
+ // AppKit/UIKit have no fragment node: a view is added to a superview, and
138
+ // there is nothing that splices its own children into whatever it is
139
+ // added to. So this host states none, and `<>...</>` is refused by name
140
+ // rather than rendered as some other container that would change the
141
+ // view hierarchy the program asked for.
142
+ elementFragment: null,
143
+ elementTextTags: [],
144
+ // Nothing this host lowers calls a class member the program does not name.
145
+ reachedMemberKeys: new Set(),
146
+ // AppKit's own state is not reactive in this sense: a control is read and
147
+ // written through the host, and nothing in the apple package declares a
148
+ // base whose fields re-render anything. Stating no fields is the truthful
149
+ // answer, not a gap -- an empty table is what makes a class here keep
150
+ // plain members.
151
+ reactiveClassFields: new Map(),
152
+ nativeReactiveCell: null,
153
+ nativeReactiveCellPreamble: []
154
+ }
155
+ })
156
+ };