@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,398 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { basename, dirname, join, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { compile } from './compiler.js';
5
+ import { loadCliPlugins } from './plugins/load.js';
6
+ import { readModuleGraph } from './cli-module-graph.js';
7
+ import { findProjectFile } from './semantics/program.js';
8
+ /**
9
+ * Options that carry a value this compiler does not model, and options that
10
+ * are v1 build plumbing with no meaning here.
11
+ *
12
+ * `unmodeled` options change the program and must be reported. Explicit
13
+ * plugins are loaded separately; their options belong to the plugin API.
14
+ */
15
+ const plumbingWithValue = new Set(['--apple-platform']);
16
+ const unmodeledWithValue = new Set(['--cpp-board', '--cxx-standard']);
17
+ const unmodeledFlags = new Set(['--allow-any']);
18
+ const parseEmitArguments = (argv) => {
19
+ const positional = [];
20
+ const unhonored = [];
21
+ let outDir = null;
22
+ let entrySymbol = null;
23
+ let target = 'cpp';
24
+ let entry = null;
25
+ let stage = 'hybrid';
26
+ let projectFileName = null;
27
+ let dynamicFallback = false;
28
+ let closedScriptScope = false;
29
+ let isolateSymbols = false;
30
+ let translationUnits = 'single';
31
+ // Carried, never interpreted: an option here belongs to whichever library
32
+ // its prefix names, and this command's job is to deliver it rather than to
33
+ // have an opinion about it. `--plugin-option` used to be classified as build
34
+ // plumbing and dropped, which silently discarded `gea.cpp-prelude` -- the
35
+ // compiled stylesheet -- from every app this pipeline built.
36
+ const plugins = [];
37
+ const pluginOptions = new Map();
38
+ for (let index = 0; index < argv.length; index += 1) {
39
+ const argument = argv[index];
40
+ if (argument === undefined)
41
+ continue;
42
+ if (argument === '--out-dir') {
43
+ outDir = argv[index + 1] ?? null;
44
+ index += 1;
45
+ }
46
+ else if (argument === '--entry-symbol') {
47
+ entrySymbol = argv[index + 1] ?? null;
48
+ index += 1;
49
+ }
50
+ else if (argument === '--target') {
51
+ target = argv[index + 1] ?? target;
52
+ index += 1;
53
+ }
54
+ else if (argument === '--entry') {
55
+ entry = argv[index + 1] ?? null;
56
+ index += 1;
57
+ }
58
+ else if (argument === '--module-graph-stage') {
59
+ stage = argv[index + 1] ?? stage;
60
+ index += 1;
61
+ }
62
+ else if (argument === '--dynamic-fallback') {
63
+ dynamicFallback = true;
64
+ }
65
+ else if (argument === '--closed-script-scope') {
66
+ closedScriptScope = true;
67
+ }
68
+ else if (argument === '--isolate-symbols') {
69
+ isolateSymbols = true;
70
+ }
71
+ else if (argument === '--translation-units') {
72
+ const value = argv[index + 1] ?? '';
73
+ if (value !== 'single' && value !== 'per-file' && value !== 'balanced')
74
+ return `compile: --translation-units takes "single", "per-file", or "balanced", not "${value}"`;
75
+ translationUnits = value;
76
+ index += 1;
77
+ }
78
+ else if (argument === '--project') {
79
+ projectFileName = argv[index + 1] ?? null;
80
+ index += 1;
81
+ }
82
+ else if (argument === '--plugin') {
83
+ const specifier = argv[index + 1];
84
+ if (!specifier || specifier.startsWith('--'))
85
+ return 'compile: --plugin requires a module path or specifier';
86
+ plugins.push(specifier);
87
+ index += 1;
88
+ }
89
+ else if (argument === '--plugin-option') {
90
+ const pair = argv[index + 1] ?? '';
91
+ const split = pair.indexOf('=');
92
+ if (split <= 0 || pair.startsWith('--'))
93
+ return 'compile: --plugin-option requires key=value';
94
+ pluginOptions.set(pair.slice(0, split), pair.slice(split + 1));
95
+ index += 1;
96
+ }
97
+ else if (plumbingWithValue.has(argument)) {
98
+ index += 1;
99
+ }
100
+ else if (unmodeledWithValue.has(argument)) {
101
+ unhonored.push(`${argument} ${argv[index + 1] ?? ''}`.trim());
102
+ index += 1;
103
+ }
104
+ else if (unmodeledFlags.has(argument)) {
105
+ unhonored.push(argument);
106
+ }
107
+ else if (!argument.startsWith('--')) {
108
+ positional.push(argument);
109
+ }
110
+ }
111
+ const input = positional[0];
112
+ if (input === undefined)
113
+ return 'compile: no input file';
114
+ if (outDir === null)
115
+ return 'compile: --out-dir is required';
116
+ return {
117
+ dynamicFallback,
118
+ closedScriptScope,
119
+ input,
120
+ outDir,
121
+ entrySymbol,
122
+ target,
123
+ entry,
124
+ stage,
125
+ plugins,
126
+ pluginOptions,
127
+ projectFileName,
128
+ isolateSymbols,
129
+ translationUnits,
130
+ unhonored
131
+ };
132
+ };
133
+ /**
134
+ * The stem the emitted files are named from.
135
+ *
136
+ * Named after the input rather than after the entry symbol: the caller already
137
+ * knows the bundle it handed over, and a build that produced `gea-app.cpp` for
138
+ * every app would collide the moment two of them share an `--out-dir`, which
139
+ * is exactly what a resident multi-app build does. Under `single` the one unit
140
+ * is `<stem>.cpp`; under `per-file` the same stem prefixes the header, the
141
+ * program unit and every module unit, so one app's files sort together.
142
+ */
143
+ const unitStemOf = (input) => {
144
+ const stem = basename(input).replace(/\.[cm]?[jt]sx?$/, '');
145
+ return stem.length > 0 ? stem : 'unit';
146
+ };
147
+ /**
148
+ * Runs the pipeline and writes what it produced.
149
+ *
150
+ * The certificate gate is not re-litigated here: `compile` refuses to lower
151
+ * anything without one, so `source === null` is already the complete answer
152
+ * that this program is not yet compilable, and this command's job is to report
153
+ * that with the same detail the diagnostic CLI would rather than to write a
154
+ * partial unit the caller would try to build.
155
+ */
156
+ export const runEmit = async (argv, moduleGraph = false) => {
157
+ const parsed = parseEmitArguments(argv);
158
+ if (typeof parsed === 'string') {
159
+ process.stderr.write(`${parsed}\n`);
160
+ return 1;
161
+ }
162
+ if (parsed.target !== 'cpp') {
163
+ process.stderr.write(`compile: --target ${parsed.target} is not a target this compiler emits; only "cpp" is built\n`);
164
+ return 1;
165
+ }
166
+ for (const option of parsed.unhonored) {
167
+ process.stderr.write(`compile: option not honored by this compiler: ${option}\n`);
168
+ }
169
+ const plugins = await loadCliPlugins(parsed.plugins);
170
+ if (moduleGraph)
171
+ return runModuleGraph(parsed, plugins);
172
+ const input = resolve(parsed.input);
173
+ // A generated bundle is not a member of any project.
174
+ //
175
+ // It is written INTO a build directory that usually sits inside one, so
176
+ // walking up for a `tsconfig.json` finds the app's -- and then applies that
177
+ // project's `include`, `paths` and `lib` to a file the app never declared,
178
+ // which is a different program than the one the caller asked to compile. A
179
+ // bundle carries everything it needs (its own `/// <reference>` to the
180
+ // generated type hints), so the honest reading is that it has no project,
181
+ // and its types come from JSDoc.
182
+ const bundled = /\.[cm]?js$/.test(input);
183
+ // A named project wins over discovery, and over the bundle rule above: a
184
+ // caller that states which project an input belongs to has answered the
185
+ // question this command would otherwise guess at.
186
+ const projectFileName = parsed.projectFileName ?? (bundled ? null : findProjectFile(input.slice(0, Math.max(0, input.lastIndexOf('/'))) || '.'));
187
+ const result = compile({
188
+ rootFileNames: [input],
189
+ projectFileName,
190
+ javaScriptSources: bundled,
191
+ dynamicFallback: parsed.dynamicFallback,
192
+ ...(parsed.closedScriptScope ? { closedScriptScope: true } : {}),
193
+ plugins,
194
+ pluginOptions: parsed.pluginOptions,
195
+ isolateSymbols: parsed.isolateSymbols,
196
+ translationUnits: parsed.translationUnits,
197
+ unitBaseName: unitStemOf(parsed.input),
198
+ ...(parsed.entrySymbol === null ? {} : { entrySymbol: parsed.entrySymbol })
199
+ });
200
+ return report(result, parsed.outDir);
201
+ };
202
+ /**
203
+ * `compile-module-graph`: the path every real application build takes.
204
+ *
205
+ * The manifest names the modules and carries their text; the entry the pipeline
206
+ * states is the root. The project is the one nearest that entry -- the staged
207
+ * `tsconfig.json` the pipeline writes beside it, which is what gives the
208
+ * program its `jsx` setting and its lib. JSDoc typing is forced on for the same
209
+ * reason v1 forces it here and states in capitals: this path has no
210
+ * tsc-baseline to match, and a module whose types live in JSDoc silently
211
+ * becomes an untyped, boxed one if `checkJs` is off.
212
+ */
213
+ const runModuleGraph = (parsed, plugins) => {
214
+ const graph = readModuleGraph(parsed.input, parsed.stage, parsed.entry);
215
+ const result = compile({
216
+ rootFileNames: [graph.entry],
217
+ projectFileName: parsed.projectFileName ?? findProjectFile(dirname(graph.entry)),
218
+ javaScriptSources: true,
219
+ dynamicFallback: parsed.dynamicFallback,
220
+ plugins,
221
+ pluginOptions: parsed.pluginOptions,
222
+ sourceOverlay: graph.overlay,
223
+ moduleResolution: graph.imports,
224
+ // The graph is the module set; the staged project beside the entry is not.
225
+ statedModuleSet: true,
226
+ ...(parsed.closedScriptScope ? { closedScriptScope: true } : {}),
227
+ isolateSymbols: parsed.isolateSymbols,
228
+ translationUnits: parsed.translationUnits,
229
+ unitBaseName: unitStemOf(graph.entry),
230
+ ...(parsed.entrySymbol === null ? {} : { entrySymbol: parsed.entrySymbol })
231
+ });
232
+ return report(result, parsed.outDir);
233
+ };
234
+ /** This compiler's own installation, from the module doing the asking rather than the caller's cwd. */
235
+ const compilerRoot = dirname(dirname(fileURLToPath(import.meta.url)));
236
+ /**
237
+ * Write a file only when its content changes.
238
+ *
239
+ * The C++ build decides what to recompile by mtime -- its own objects against
240
+ * the units, and through depfiles against every header a unit includes. An
241
+ * emit that rewrote every file made every generation a full rebuild: 20
242
+ * unchanged units and both precompiled headers were rebuilt after one source
243
+ * was touched, because the header and `gea_runtime.h` were newer than every
244
+ * object. The emitted text is deterministic, so identical content is the same
245
+ * fact and leaves the file, and its mtime, alone.
246
+ */
247
+ const writeIfChanged = (path, content) => {
248
+ if (existsSync(path) && readFileSync(path, 'utf8') === content)
249
+ return;
250
+ writeFileSync(path, content);
251
+ };
252
+ /**
253
+ * `generated_support.hpp` — the second artifact the calling pipeline reads back.
254
+ *
255
+ * The contract is not only `geatsc-sources.txt`. A target derives an app's
256
+ * Apple-native ownership from the *transformed compiler output* rather than
257
+ * from the metadata it fed in, and the file it reads to do that is this one:
258
+ * `finalize-apple-native-output.mjs` fails closed when it is missing or empty,
259
+ * so a build driving this compiler stopped at "generation did not produce a
260
+ * non-empty generated_support.hpp" no matter how good the emitted unit was.
261
+ *
262
+ * v1 writes a header full of shared declarations because it splits a program
263
+ * across many translation units that each need the others' signatures. This
264
+ * compiler's `single` layout emits ONE unit, so there is nothing for a second
265
+ * unit to share, and its `per-file` layout writes the declarations its units
266
+ * share into ITS OWN header (`<stem>.hpp`, `translation-unit.ts`) that every
267
+ * unit includes by name. Either way the honest content here is the same
268
+ * statement of what a generated unit is compiled against that the unit itself
269
+ * makes, and nothing more. It is a declaration of ownership, not a substitute
270
+ * for the unit's own preamble.
271
+ *
272
+ * Which host headers belong in it is not this file's question and it no longer
273
+ * answers it. `gea_runtime.h` is stated unconditionally because every emitted
274
+ * unit is compiled against it; everything else comes from
275
+ * `result.generatedSupportIncludes`, which each plugin states for its own host
276
+ * on its own activation condition. This function used to hold one host's
277
+ * include spelling and decide the question by substring-searching the rendered
278
+ * C++ for it -- a source-shaped authority over generated text, and a host name
279
+ * in a core code path.
280
+ */
281
+ const writeGeneratedSupport = (outDir, hostHeaders) => {
282
+ const lines = [
283
+ '// @geastack/compiler: what a generated translation unit is compiled against.',
284
+ '// This states ownership, not declarations shared between units: a per-file',
285
+ '// layout carries those in its own <stem>.hpp, which each unit includes.',
286
+ '#pragma once',
287
+ '#include "gea_runtime.h"',
288
+ ...hostHeaders.map((header) => `#include "${header}"`)
289
+ ];
290
+ writeIfChanged(join(outDir, 'generated_support.hpp'), `${lines.join('\n')}\n`);
291
+ };
292
+ const report = (result, outDirName) => {
293
+ // Which file each `fN` identity segment names. A refusal cites raw ids
294
+ // (`decl|f9|179`), and on the module-graph path -- the one every real
295
+ // application build takes -- there is no other way to read one back to a
296
+ // source file, so tracking a refusal down means guessing at an alphabetical
297
+ // sort of the whole program including its lib files. An instrument like
298
+ // `GEA_STAGE_TIMING` and `GEA_DUMP_STRUCTURAL_TYPES`, not a flag.
299
+ if (process.env['GEA_DUMP_FILE_IDS']) {
300
+ for (const [identity, fileName] of result.sourceFileNames)
301
+ process.stderr.write(`[FILE] ${identity}\t${fileName}\n`);
302
+ }
303
+ if (result.units.length === 0) {
304
+ const certifyRefusals = result.refusals.filter((refusal) => refusal.stage === 'certify');
305
+ process.stderr.write(result.certificate === null
306
+ ? `compile: no certificate; ${certifyRefusals.length} capability refusal(s), ${result.diagnostics.diagnostics.length} diagnostic(s)\n`
307
+ : `compile: certified but nothing emitted; ${result.loweringBlockers.length} lowering blocker(s), ` +
308
+ `${result.emissionRefusals.length} emission refusal(s)\n`);
309
+ for (const blocker of result.loweringBlockers)
310
+ process.stderr.write(` lowering ${blocker.owner}: ${blocker.reason}\n`);
311
+ for (const refusal of certifyRefusals.slice(0, 40))
312
+ process.stderr.write(` certify ${refusal.owner}: ${refusal.key}: ${refusal.reason}\n`);
313
+ if (certifyRefusals.length > 40)
314
+ process.stderr.write(` ... and ${certifyRefusals.length - 40} more capability refusal(s)\n`);
315
+ for (const refusal of result.emissionRefusals)
316
+ process.stderr.write(` emission ${refusal.owner}: ${refusal.reason}\n`);
317
+ // The location, when there is one. A build's log is where someone finds
318
+ // out WHICH file did not compile, and a component id alone cannot answer
319
+ // that -- it names a component of the graph, not a place in the program.
320
+ const where = (diagnostic) => diagnostic.location ? `${diagnostic.location.file}:${diagnostic.location.line}:${diagnostic.location.column}` : diagnostic.component;
321
+ const roots = result.diagnostics.diagnostics.filter((diagnostic) => diagnostic.severity === 'root');
322
+ for (const diagnostic of roots)
323
+ process.stderr.write(` ${where(diagnostic)}: ${diagnostic.message}\n`);
324
+ // A root diagnostic is the one worth reading, so it is the only one printed
325
+ // WHEN THERE IS ONE. When there is not, printing nothing reported nothing:
326
+ // `certificate` is withheld whenever `diagnostics` is non-empty at all, so
327
+ // a program blocked solely by derived or unsupported diagnostics failed
328
+ // with an empty log, and "no certificate; 0 capability refusal(s)" was the
329
+ // whole message -- which names neither a cause nor a file. Four apps sat
330
+ // behind that message with nothing to act on.
331
+ if (roots.length === 0) {
332
+ const rest = result.diagnostics.diagnostics;
333
+ for (const diagnostic of rest.slice(0, 20)) {
334
+ process.stderr.write(` ${diagnostic.severity} ${where(diagnostic)}: ${diagnostic.message}\n`);
335
+ }
336
+ if (rest.length > 20)
337
+ process.stderr.write(` ... and ${rest.length - 20} more diagnostic(s)\n`);
338
+ if (rest.length === 0 && certifyRefusals.length === 0) {
339
+ process.stderr.write(' (no diagnostics recorded -- the certificate was withheld for another reason)\n');
340
+ }
341
+ }
342
+ return 1;
343
+ }
344
+ if (result.dynamicFallback.enabled) {
345
+ process.stderr.write(`geatsc: C++ dynamic fallback selected for ${result.dynamicFallback.valueCount} value positions\n`);
346
+ }
347
+ const outDir = resolve(outDirName);
348
+ mkdirSync(outDir, { recursive: true });
349
+ // The emitted unit `#include`s this compiler's own runtime, so the runtime
350
+ // has to arrive with it. The caller compiles what is in `--out-dir` and knows
351
+ // nothing about where this compiler keeps its header -- and should not: which
352
+ // runtime a unit needs is the compiler's fact, stated by putting it there.
353
+ // Same placement `scripts/corpus.mjs` already uses to compile emitted units.
354
+ writeIfChanged(join(outDir, 'gea_runtime.h'), readFileSync(join(compilerRoot, 'src/targets/cpp/runtime/gea_runtime.h'), 'utf8'));
355
+ writeIfChanged(join(outDir, 'gea_dynamic_proxy.h'), readFileSync(join(compilerRoot, 'src/targets/cpp/runtime/gea_dynamic_proxy.h'), 'utf8'));
356
+ writeIfChanged(join(outDir, 'gea_eval.h'), readFileSync(join(compilerRoot, 'src/targets/cpp/runtime/gea_eval.h'), 'utf8'));
357
+ writeIfChanged(join(outDir, 'gea_native_class_prototype.h'), readFileSync(join(compilerRoot, 'src/targets/cpp/runtime/gea_native_class_prototype.h'), 'utf8'));
358
+ writeIfChanged(join(outDir, 'gea_runtime_builtins.cpp'), readFileSync(join(compilerRoot, 'src/targets/cpp/runtime/gea_runtime_builtins.cpp'), 'utf8'));
359
+ const written = result.units.map((unit) => ({ unit, path: join(outDir, unit.fileName) }));
360
+ for (const { unit, path } of written)
361
+ writeIfChanged(path, `${unit.source}\n`);
362
+ writeGeneratedSupport(outDir, result.generatedSupportIncludes);
363
+ // Whatever the installed hosts require beside the unit -- Apple's
364
+ // `gea/apple/native_bridge.{h,mm}` is the case. After the units, and only on
365
+ // the path that wrote them: an artifact sitting next to a build that emitted
366
+ // nothing is a stale file the next build reads as fresh, which is precisely
367
+ // the failure this hook was added to end.
368
+ for (const writeArtifacts of result.artifacts)
369
+ writeArtifacts(outDir);
370
+ // The list the calling script reads back: every unit to COMPILE, so the
371
+ // per-file layout's header is not on it -- a header is included, not built,
372
+ // and a build handed one as a source would compile it as a unit of its own.
373
+ // The `single` layout lists its one unit; the contract has always been a
374
+ // LIST for exactly this reason, so every caller that reads it keeps working
375
+ // when the layout changes.
376
+ const compiled = written.filter(({ unit }) => unit.role !== 'header' && unit.role !== 'runtime-header');
377
+ writeIfChanged(join(outDir, 'geatsc-sources.txt'), `${compiled.map(({ path }) => path).join('\n')}\n`);
378
+ // The headers every listed unit includes, when the layout has them, so a
379
+ // build can precompile each once -- the runtime layer first, the program's
380
+ // header chained on it -- and hand `-include-pch` to every unit instead of
381
+ // letting each re-parse both. Stated as a file of its own rather than
382
+ // inferred from the sources list, and removed when the layout has no header,
383
+ // because a stale one from an earlier per-file build would name headers the
384
+ // single unit never includes.
385
+ const header = written.find(({ unit }) => unit.role === 'header');
386
+ const runtimeHeader = written.find(({ unit }) => unit.role === 'runtime-header');
387
+ if (header && runtimeHeader)
388
+ writeIfChanged(join(outDir, 'geatsc-header.txt'), `program=${header.path}\nruntime=${runtimeHeader.path}\n`);
389
+ else
390
+ rmSync(join(outDir, 'geatsc-header.txt'), { force: true });
391
+ const lines = (text) => text.split('\n').length;
392
+ const total = written.reduce((sum, { unit }) => sum + lines(unit.source), 0);
393
+ const single = written.length === 1 ? written[0] : undefined;
394
+ process.stdout.write(single
395
+ ? `compile: ${single.path} (${lines(single.unit.source)} lines)\n`
396
+ : `compile: ${compiled.length} unit(s) and two shared headers in ${outDir} (${total} lines)\n`);
397
+ return 0;
398
+ };
@@ -0,0 +1,18 @@
1
+ export interface ModuleGraphOverlay {
2
+ /** Every module's text, by absolute path -- including modules with no file on disk. */
3
+ readonly overlay: ReadonlyMap<string, string>;
4
+ /**
5
+ * How each module's own import specifiers resolved, by importing file.
6
+ *
7
+ * Vite already resolved every specifier when it built this graph -- that is
8
+ * what a bundler does -- and the answers are recorded per import
9
+ * (`resolvedId`). A bare `"gea-embedded"` or a `virtual:` specifier has no
10
+ * meaning to ordinary node resolution, so re-deriving it here would be a
11
+ * second authority guessing at what the build already decided. This carries
12
+ * the build's own answer instead.
13
+ */
14
+ readonly imports: ReadonlyMap<string, ReadonlyMap<string, string>>;
15
+ /** The entry the pipeline named, or the graph's own. */
16
+ readonly entry: string;
17
+ }
18
+ export declare const readModuleGraph: (manifestPath: string, stage: string, statedEntry: string | null) => ModuleGraphOverlay;
@@ -0,0 +1,123 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { dirname, isAbsolute, resolve } from 'node:path';
3
+ import { packageSourceFor } from './cli-package-source.js';
4
+ /**
5
+ * Whether a module is one this compiler can read as a program at all.
6
+ *
7
+ * A vite graph contains every module the bundler linked, and a bundler links
8
+ * more than code: `import './styles.css'` is a real edge in it. That import is
9
+ * a SIDE EFFECT -- it binds no names -- and the styles it names are already
10
+ * compiled by the pipeline into the prelude fragment this build passes as
11
+ * `gea.cpp-prelude`. Reading the file as source instead is not a near miss but
12
+ * a category error: measured, one `styles.css` produced 100 checker errors
13
+ * ("';' expected", "Octal literals are not allowed" -- a hex colour), because
14
+ * CSS parsed as TypeScript is not TypeScript.
15
+ */
16
+ const isScriptModule = (file) => /\.[cm]?[jt]sx?$/i.test(file);
17
+ /** Whether a snapshot still carries raw JSX, which only vite's own transform lowers. */
18
+ const holdsRawJsx = (file, text) => {
19
+ if (!/\.[jt]sx$/i.test(file))
20
+ return false;
21
+ // A JSX element opens with `<` followed by a tag name or a fragment, in a
22
+ // position an operator cannot occupy. Looked for the same way v1 looks for
23
+ // it: this decides which of two already-written snapshots to read, never what
24
+ // a construct means.
25
+ return /<\s*[A-Za-z_$>]/.test(text);
26
+ };
27
+ const snapshotFor = (module, stage, manifestDir) => {
28
+ const read = (relative) => relative ? readFileSync(isAbsolute(relative) ? relative : resolve(manifestDir, relative), 'utf8') : null;
29
+ if (stage === 'original')
30
+ return read(module.originalSource);
31
+ if (stage === 'transformed')
32
+ return read(module.transformedSource);
33
+ const original = read(module.originalSource);
34
+ if (original !== null && module.file && module.transformedSource && holdsRawJsx(module.file, original)) {
35
+ return read(module.transformedSource);
36
+ }
37
+ return original ?? read(module.transformedSource);
38
+ };
39
+ export const readModuleGraph = (manifestPath, stage, statedEntry) => {
40
+ const path = resolve(manifestPath);
41
+ const manifestDir = dirname(path);
42
+ const manifest = JSON.parse(readFileSync(path, 'utf8'));
43
+ const overlay = new Map();
44
+ let graphEntry = null;
45
+ for (const module of manifest.modules) {
46
+ if (!module.file)
47
+ continue;
48
+ const file = resolve(module.file);
49
+ if (module.isEntry)
50
+ graphEntry = file;
51
+ // A module that exists on disk is compiled FROM disk, and the snapshot is
52
+ // used only for one that does not (`virtual:gea-compiler-runtime`, which
53
+ // vite synthesizes and no file backs).
54
+ //
55
+ // This is where this compiler and v1 legitimately want different text for
56
+ // the same module, and it is not a disagreement about the program. The
57
+ // `original` snapshot is captured after the gea vite plugin has already
58
+ // COMPILED the JSX away: `<div class="app"><FpsBadge/></div>` arrives here
59
+ // as `document.createElement("template")`, `t.innerHTML = ...`,
60
+ // `cloneNode(true)`, `root.childNodes[1]`, `[GEA_STATIC_TEMPLATE](d)`. v1
61
+ // needs that, because its own path to a UI tree is that DOM-imperative
62
+ // form. This compiler has a native JSX producer (`producers/jsx.ts`, and
63
+ // the source pre-pass that types the elements), and handing it the lowered
64
+ // form both bypasses that producer and asks it to compile the most dynamic
65
+ // possible shape -- measured: 114 `property-access:dynamic` obligations,
66
+ // every one of them a `childNodes[i]`/`innerHTML` step that the JSX it was
67
+ // compiled from never contained.
68
+ //
69
+ // So the disk file is not a different program: it is the SAME module,
70
+ // before a lowering this compiler performs itself.
71
+ // A non-script module still has to RESOLVE -- the import is in the source
72
+ // and an unresolved specifier is a hole in the program -- so it is given an
73
+ // empty module rather than skipped. That is what it contributes: nothing.
74
+ if (!isScriptModule(file)) {
75
+ overlay.set(file, 'export {}\n');
76
+ continue;
77
+ }
78
+ if (existsSync(file))
79
+ continue;
80
+ const text = snapshotFor(module, stage, manifestDir);
81
+ if (text !== null)
82
+ overlay.set(file, text);
83
+ }
84
+ const byId = new Map();
85
+ for (const module of manifest.modules)
86
+ if (module.file)
87
+ byId.set(module.id ?? module.file, resolve(module.file));
88
+ const imports = new Map();
89
+ for (const module of manifest.modules) {
90
+ if (!module.file)
91
+ continue;
92
+ const resolved = new Map();
93
+ for (const one of module.imports ?? []) {
94
+ if (!one.resolvedId)
95
+ continue;
96
+ const linked = byId.get(one.resolvedId) ?? (one.resolvedId.startsWith('/') ? resolve(one.resolvedId) : null);
97
+ if (!linked)
98
+ continue;
99
+ // A dependency the bundler resolved to its BUILD, redirected to the
100
+ // source the package publishes for it -- see `packageSourceFor`. Only
101
+ // when the graph carries no text of its own for that module: a module the
102
+ // build snapshotted is one the build transformed, and replacing it would
103
+ // discard that transform.
104
+ const source = overlay.has(linked) ? null : packageSourceFor(linked);
105
+ const target = source ?? linked;
106
+ // An import TARGET can be a non-script too, and it does not have to be a
107
+ // module of the graph to be one: vite compiles CSS on its own side, so
108
+ // `import './styles.css'` is recorded as a resolved edge from a module
109
+ // while the stylesheet itself never appears in `modules`. Giving the
110
+ // target an empty module here is what keeps this resolution -- which is
111
+ // otherwise the build's own correct answer -- from handing the checker a
112
+ // stylesheet to parse as TypeScript.
113
+ if (!isScriptModule(target))
114
+ overlay.set(target, 'export {}\n');
115
+ resolved.set(one.specifier, target);
116
+ }
117
+ imports.set(resolve(module.file), resolved);
118
+ }
119
+ const entry = statedEntry ? resolve(statedEntry) : graphEntry;
120
+ if (!entry)
121
+ throw new Error(`module graph ${path} names no entry and none was given with --entry`);
122
+ return { overlay, imports, entry };
123
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The source file a package publishes for the built file the build resolved to,
3
+ * or `null` when it publishes none.
4
+ */
5
+ export declare const packageSourceFor: (target: string) => string | null;
@@ -0,0 +1,116 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
3
+ /**
4
+ * A package's own TypeScript, where the build resolved to its bundle.
5
+ *
6
+ * A bundler resolves a dependency to what it can execute: `@geajs/core` becomes
7
+ * `dist/compiler-runtime.mjs`, which is MINIFIED -- one-letter identifiers, no
8
+ * annotations, no JSDoc. Compiling that is not a slightly worse input, it is a
9
+ * categorically different program: a value whose type nothing states is a value
10
+ * this compiler must carry dynamically, so an entire typed reactive runtime
11
+ * arrives as `gea::Value` and the No Boxing rule is lost before a single
12
+ * defect has been fixed.
13
+ *
14
+ * The package already says where its real source is. Node's own conditional
15
+ * exports carry a `source` condition for exactly this -- a consumer that
16
+ * compiles rather than executes -- and `@geajs/core` publishes one for every
17
+ * entry it ships (`"./compiler-runtime": { "source": "./src/compiler-runtime.ts",
18
+ * ... }`). So this is not an override of the build's answer and not a guess: it
19
+ * asks the same package the build asked, for the entry the build already chose,
20
+ * and takes the answer the package gives for this use.
21
+ *
22
+ * Nothing is hardcoded about which package this is. A dependency that publishes
23
+ * no `source` is left exactly where the build put it.
24
+ */
25
+ /** The `package.json` governing this file, or `null` at the filesystem root. */
26
+ const packageOf = (file) => {
27
+ let dir = dirname(resolve(file));
28
+ for (;;) {
29
+ const candidate = join(dir, 'package.json');
30
+ if (existsSync(candidate)) {
31
+ try {
32
+ return { dir, manifest: JSON.parse(readFileSync(candidate, 'utf8')) };
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ const parent = dirname(dir);
39
+ if (parent === dir)
40
+ return null;
41
+ dir = parent;
42
+ }
43
+ };
44
+ /** Whether this exports entry is a condition object rather than a bare target string. */
45
+ const isConditions = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
46
+ /**
47
+ * The `source` beside whichever condition the build followed to `target`.
48
+ *
49
+ * An exports entry is a set of conditions over ONE subpath, so the entry that
50
+ * names `target` under any of its conditions is the entry that also names the
51
+ * source for it. Matching by resolved path rather than by condition name is
52
+ * what makes this agnostic to which condition the bundler actually used --
53
+ * `import`, `require`, `browser` and `default` all lead to the same entry.
54
+ */
55
+ const sourceBesideTarget = (packageDir, entry, target) => {
56
+ if (!isConditions(entry))
57
+ return null;
58
+ const source = entry['source'];
59
+ let names = false;
60
+ for (const [condition, value] of Object.entries(entry)) {
61
+ if (condition === 'source' || condition === 'types')
62
+ continue;
63
+ if (typeof value === 'string' && resolve(packageDir, value) === target)
64
+ names = true;
65
+ else if (isConditions(value) && sourceBesideTarget(packageDir, value, target) !== null)
66
+ names = true;
67
+ else if (isConditions(value)) {
68
+ for (const nested of Object.values(value)) {
69
+ if (typeof nested === 'string' && resolve(packageDir, nested) === target)
70
+ names = true;
71
+ }
72
+ }
73
+ }
74
+ if (!names)
75
+ return null;
76
+ if (typeof source !== 'string')
77
+ return null;
78
+ const file = resolve(packageDir, source);
79
+ return existsSync(file) ? file : null;
80
+ };
81
+ /**
82
+ * The source file a package publishes for the built file the build resolved to,
83
+ * or `null` when it publishes none.
84
+ */
85
+ export const packageSourceFor = (target) => {
86
+ if (!isAbsolute(target))
87
+ return null;
88
+ const owner = packageOf(target);
89
+ if (!owner)
90
+ return null;
91
+ const { dir, manifest } = owner;
92
+ const exports = manifest.exports;
93
+ if (isConditions(exports)) {
94
+ // A subpath map (`{"./x": {...}}`) and a bare condition set (`{"import": ...}`)
95
+ // are both objects; trying each entry as a condition set covers the first,
96
+ // and the whole object as one covers the second.
97
+ for (const entry of Object.values(exports)) {
98
+ const found = sourceBesideTarget(dir, entry, target);
99
+ if (found !== null)
100
+ return found;
101
+ }
102
+ const direct = sourceBesideTarget(dir, exports, target);
103
+ if (direct !== null)
104
+ return direct;
105
+ }
106
+ // The older convention, still what several bundlers read: one top-level
107
+ // `source` beside `main`/`module`.
108
+ const source = manifest.source;
109
+ if (typeof source !== 'string')
110
+ return null;
111
+ const built = [manifest.main, manifest.module].filter((value) => typeof value === 'string');
112
+ if (!built.some((value) => resolve(dir, value) === target))
113
+ return null;
114
+ const file = resolve(dir, source);
115
+ return existsSync(file) ? file : null;
116
+ };
@@ -0,0 +1,2 @@
1
+ export declare const isNodeProjectArguments: (argv: readonly string[]) => boolean;
2
+ export declare const runNodeProject: (argv: readonly string[]) => Promise<number>;