@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,667 @@
1
+ import ts from 'typescript';
2
+ import { withStableTypeQueries } from './stable-checker.js';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { createModuleResolver, isDeclarationPath, mappedTypeScriptSource, moduleExtension, typeOnlyModuleUse } from './module-resolution.js';
5
+ import { createCommonJsRequireCensus } from './normalize/commonjs-require.js';
6
+ import { withoutBareWrapperRedeclarations } from './commonjs-wrapper.js';
7
+ import { resolveHostMethod } from './host-methods.js';
8
+ import { diagnosticSourcePreparation } from './diagnostic-source-preparation.js';
9
+ import { createFrontendTiming } from './frontend-timing.js';
10
+ export const defaultCompilerOptions = Object.freeze({
11
+ target: ts.ScriptTarget.ES2022,
12
+ module: ts.ModuleKind.ESNext,
13
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
14
+ strict: true,
15
+ allowJs: true,
16
+ checkJs: true,
17
+ maxNodeModuleJsDepth: 100,
18
+ noEmit: true,
19
+ skipLibCheck: true,
20
+ // A default for a program compiled without a project file, and nothing more.
21
+ // Leaving the option unset is the one answer that is always wrong: every JSX
22
+ // expression then becomes a checker error typed `any`, which is how a whole
23
+ // application silently turns into a boxed program. `preserve` is the choice
24
+ // that assumes least -- it keeps what the author wrote -- but a project that
25
+ // states its own setting overrides this, and must: whether `<C/>` reaches
26
+ // this compiler as an element or as a `jsx(type, props)` call is the
27
+ // library's decision, expressed where every other TypeScript tool reads it.
28
+ jsx: ts.JsxEmit.Preserve
29
+ });
30
+ /**
31
+ * The nearest project file at or above a directory, or `null`.
32
+ *
33
+ * This walks the filesystem, which looks like the source-shaped authority the
34
+ * architecture forbids -- it is not. The forbidden thing is deciding a value's
35
+ * *semantics* from a path. Finding the project that declares a program is how
36
+ * every TypeScript toolchain establishes what the program even is, and the
37
+ * answer feeds `ts.parseJsonConfigFileContent`, never a semantic decision.
38
+ */
39
+ export const findProjectFile = (fromDirectory) => ts.findConfigFile(fromDirectory, ts.sys.fileExists, 'tsconfig.json') ?? null;
40
+ /**
41
+ * Options this compiler fixes regardless of what a project asks for.
42
+ *
43
+ * Each one changes what the *checker* reports rather than what the program
44
+ * means: emit settings are irrelevant to a compiler that emits C++.
45
+ *
46
+ * `jsx` is the one that deserves suspicion, because overriding a project here
47
+ * silently discards what it asked for -- a project setting `react-jsx` is
48
+ * compiled as `preserve` with nothing said. It is pinned because the element
49
+ * tree is the input a template-compiling plugin reads (see
50
+ * `defaultCompilerOptions`), and it should stop being pinned as soon as a
51
+ * plugin exists that wants the factory form instead.
52
+ */
53
+ /**
54
+ * The one option a project may not decide, because it is not about the program.
55
+ *
56
+ * `noEmit` says this compiler is not asking TypeScript to write JavaScript --
57
+ * it reads the checker and emits C++ itself. Everything else, `jsx` included,
58
+ * comes from the project: overriding a project's JSX setting would mean this
59
+ * compiler deciding on the author's behalf whether their elements survive as
60
+ * elements or arrive already rewritten into factory calls, which is exactly the
61
+ * choice a library makes and states in its own tsconfig.
62
+ */
63
+ const fixedOptions = { noEmit: true };
64
+ /**
65
+ * The options that say "JavaScript is part of this program", carried onto a
66
+ * project's own settings rather than replaced by them.
67
+ *
68
+ * A caller that hands in JavaScript sources is stating a fact about the
69
+ * program, not expressing a preference a project may overrule: with `allowJs`
70
+ * off, every resolved `.js` module is reported as "could not find a declaration
71
+ * file ... implicitly has an `any` type" and the module is not compiled at all.
72
+ * That is how a staged project -- which no author wrote, and which therefore
73
+ * says nothing about vendor JavaScript -- silently removed `three`'s 388 real
74
+ * source modules from every application that imports them.
75
+ *
76
+ * Carried, never invented: the values are the caller's own
77
+ * (`frontend.ts` sets them from `javaScriptSources`), so a compilation that
78
+ * states no JavaScript adds nothing here and a project's settings pass through
79
+ * untouched.
80
+ */
81
+ const javaScriptAdmission = (options) => ({
82
+ ...(options.allowJs === undefined ? {} : { allowJs: options.allowJs }),
83
+ ...(options.checkJs === undefined ? {} : { checkJs: options.checkJs }),
84
+ ...(options.maxNodeModuleJsDepth === undefined ? {} : { maxNodeModuleJsDepth: options.maxNodeModuleJsDepth })
85
+ });
86
+ /**
87
+ * The script kind a file's extension declares.
88
+ *
89
+ * Asked only when a transform has already changed a file's text and the source
90
+ * file has to be re-created from it. This is not a source-shaped semantic
91
+ * decision -- it is the same extension-to-syntax mapping TypeScript itself
92
+ * performs to decide whether `<` opens a JSX element or a type argument list,
93
+ * and getting it wrong would reparse a rewritten `.tsx` as `.ts`.
94
+ */
95
+ const scriptKindOf = (fileName) => {
96
+ if (fileName.endsWith('.tsx'))
97
+ return ts.ScriptKind.TSX;
98
+ if (fileName.endsWith('.jsx'))
99
+ return ts.ScriptKind.JSX;
100
+ if (fileName.endsWith('.js') || fileName.endsWith('.mjs') || fileName.endsWith('.cjs'))
101
+ return ts.ScriptKind.JS;
102
+ // `.json` falls through to here too, and that is deliberate -- see
103
+ // `jsonModuleAsTypeScript`'s own comment for why a `.json` file's rewritten
104
+ // text needs exactly this script kind and not `ts.ScriptKind.JSON`.
105
+ return ts.ScriptKind.TS;
106
+ };
107
+ /**
108
+ * A `.json` module, rewritten as the ordinary TypeScript module
109
+ * `resolveJsonModule` behaves as if it always were.
110
+ *
111
+ * This is a language feature (`tsconfig`'s `resolveJsonModule`, the same one
112
+ * Node's own module loader implements), not a gea idiom, so it lives here
113
+ * rather than behind a plugin's `transformSource` -- every program that turns
114
+ * this option on gets it, with no plugin installed. A JSON document's grammar
115
+ * is already a strict subset of a TypeScript object/array/string/number/
116
+ * boolean/null literal, so wrapping the file's own text in `export default
117
+ * ...;` is the WHOLE of what is needed: every later stage -- census,
118
+ * `derive.ts`'s structural typing, emission's record/array-literal rendering
119
+ * -- already knows how to carry a literal value, because that is exactly what
120
+ * an ordinary `const x = {...}` already asks of them.
121
+ *
122
+ * Without this, the declaration a program's binding resolves to for
123
+ * `import data from './x.json'` is the JSON `SourceFile` itself -- TypeScript's
124
+ * own synthetic shape for a JSON module, with no expression a normal walk
125
+ * recognizes. `isAmbientSymbol` correctly says it is not ambient (it is not a
126
+ * `.d.ts` and carries no `declare`), so it is never treated as a host import
127
+ * either -- it is simply never censused at all: no placement, local or
128
+ * external, and a program that reads it hits `bindingReference`'s "this
129
+ * program never introduces" refusal at every use.
130
+ */
131
+ const jsonModuleAsTypeScript = (fileName, text) => fileName.endsWith('.json') ? `export default ${text};` : null;
132
+ /** A function-like node's own body, or `undefined` for one that declares none (a signature in a type, an overload). */
133
+ const functionBodyOf = (node) => {
134
+ if (ts.isArrowFunction(node))
135
+ return node.body;
136
+ if (ts.isFunctionDeclaration(node) ||
137
+ ts.isFunctionExpression(node) ||
138
+ ts.isMethodDeclaration(node) ||
139
+ ts.isConstructorDeclaration(node) ||
140
+ ts.isGetAccessorDeclaration(node) ||
141
+ ts.isSetAccessorDeclaration(node)) {
142
+ return node.body;
143
+ }
144
+ return undefined;
145
+ };
146
+ /**
147
+ * Whether a file's TOP LEVEL awaits -- outside every function, method,
148
+ * accessor, constructor, static block and namespace body, which are the
149
+ * scopes an `await` inside them belongs to instead.
150
+ *
151
+ * `await using` counts for the same reason `for await` does: both are the
152
+ * `await` token in a position only a module body may hold. Checked through
153
+ * the flag rather than the keyword because a declaration list carries it as
154
+ * `NodeFlags.AwaitUsing`, with no `AwaitExpression` node anywhere.
155
+ *
156
+ * That flag is a COMPOSITE -- `AwaitUsing` is `Const | Using`, the value 6 --
157
+ * so it has to be tested for every bit, not for any. Tested with `!== 0` it
158
+ * matched every plain `const`, whose own flag is the `Const` bit inside it,
159
+ * and so declared a top-level await in essentially every script file: it
160
+ * appended `export {}` to node-compat's `runtime/node/globals.ts`, turning a
161
+ * deliberate SCRIPT into a module and deleting `Headers`/`Request`/`Response`
162
+ * from the global scope every library file resolves them through. `tsc` on
163
+ * the same project reported nothing, because the project is fine; only this
164
+ * host's transformed copy was broken.
165
+ */
166
+ const awaitsAtTopLevel = (file) => {
167
+ const awaits = (node) => {
168
+ if (ts.isAwaitExpression(node))
169
+ return true;
170
+ if (ts.isForOfStatement(node) && node.awaitModifier !== undefined)
171
+ return true;
172
+ if (ts.isVariableStatement(node) && (node.declarationList.flags & ts.NodeFlags.AwaitUsing) === ts.NodeFlags.AwaitUsing)
173
+ return true;
174
+ // A static block and a namespace body are scopes of their own with no
175
+ // outer part to look at.
176
+ if (ts.isClassStaticBlockDeclaration(node) || ts.isModuleDeclaration(node))
177
+ return false;
178
+ // A function's BODY is its own scope; everything else about it -- a
179
+ // computed method name, a decorator, a parameter default, a type -- is
180
+ // evaluated where the function is DECLARED, so those stay in this walk.
181
+ // Skipping the whole node instead missed `class C { [await key()]() {} }`,
182
+ // whose await really is at the module's top level.
183
+ if (ts.isFunctionLike(node)) {
184
+ const body = functionBodyOf(node);
185
+ return ts.forEachChild(node, (child) => (child === body ? false : awaits(child))) ?? false;
186
+ }
187
+ return ts.forEachChild(node, awaits) ?? false;
188
+ };
189
+ return ts.forEachChild(file, awaits) ?? false;
190
+ };
191
+ /**
192
+ * A FILE THAT AWAITS AT ITS TOP LEVEL IS A MODULE. THAT IS THE GRAMMAR, NOT A
193
+ * PREFERENCE.
194
+ *
195
+ * ECMA-262 parses a source text under one of two goal symbols, and `await` in
196
+ * an outermost statement is grammatical under exactly one of them: `Module`
197
+ * (16.2.1.6.1 makes such a module `[[HasTLA]]`, and 27.7.5.3's `Await` is
198
+ * defined for its body). A `Script` cannot hold one at all. So a file whose
199
+ * top level awaits has already told the host which goal symbol it wants.
200
+ *
201
+ * TypeScript decides module-ness a different way -- by looking for an import
202
+ * or an export -- and then reports the file's own `await` as an error whose
203
+ * remedy it spells out: "Consider adding an empty 'export {}' to make this
204
+ * file a module." That is TypeScript answering a POSITIONAL question the
205
+ * language answers syntactically, the same shape of mismatch
206
+ * `structural-layout-type.ts`'s `literalTokenType` records for a literal
207
+ * token's type. This compiler is the host; deciding the goal symbol from the
208
+ * grammar is its job, and the remedy the diagnostic names is a one-line
209
+ * appendix to the text.
210
+ *
211
+ * Which is exactly what this returns -- `export {}`, appended, so every later
212
+ * stage sees an ordinary external module and nothing downstream needs to know
213
+ * this happened. `moduleEvaluationOrder` (`frontend.ts`) already orders module
214
+ * bodies and the entry already calls them in that order
215
+ * (`targets/cpp/translation-unit.ts`'s `entryDefinitionOf`), so an importer
216
+ * observes the awaited exports and never a half-evaluated module -- 16.2.1.5.3
217
+ * satisfied by construction rather than by a scheduler this runtime does not
218
+ * have.
219
+ *
220
+ * It cannot change the meaning of a program that already compiled. Appending
221
+ * an export turns script scope into module scope, which really does move
222
+ * top-level names out of the global namespace -- but the only files this fires
223
+ * on are files TypeScript refused outright, so there is no working program
224
+ * whose scoping this can move. A file that is already an external module is
225
+ * left exactly as it is.
226
+ *
227
+ * Not behind a plugin's `transformSource`, for `jsonModuleAsTypeScript`'s own
228
+ * reason one function above: this is the language, so every program gets it
229
+ * with no plugin installed. And not a text transform either -- "does this file
230
+ * await at its top level" is a question about the parse tree, and answering it
231
+ * off the characters is how a comment or a string containing the word would
232
+ * decide it.
233
+ */
234
+ const moduleMarkerForTopLevelAwait = (file) => !file.isDeclarationFile && !ts.isExternalModule(file) && awaitsAtTopLevel(file) ? `${file.text}\nexport {}\n` : null;
235
+ /**
236
+ * The compiler host, with the installed plugins' source transforms -- and the
237
+ * `.json`-module rewrite above, which every compilation gets regardless of
238
+ * which plugins are installed -- in front of every file it opens.
239
+ *
240
+ * Wrapping `getSourceFile` rather than `readFile` because the default host does
241
+ * not route one through the other: it closes over its own reader, so a
242
+ * `readFile` override is simply never consulted for a program's own sources.
243
+ *
244
+ * A declaration file is offered to nothing. `.d.ts` declares and evaluates
245
+ * nothing, so there is no expression in one for a transform to rewrite, and
246
+ * handing the standard library to a plugin would be inviting exactly the kind
247
+ * of reach a plugin should not have.
248
+ *
249
+ * A program with no plugins and no `.json` module parses every file exactly as
250
+ * it always did: `jsonModuleAsTypeScript` answers `null` for anything that is
251
+ * not `.json`, the plugin loop is empty, `text` never changes, and the early
252
+ * `text === file.text` return hands back the original file object untouched.
253
+ */
254
+ /**
255
+ * The specifiers a caller states resolve to a real SOURCE module of this program.
256
+ *
257
+ * `.d.ts` targets are excluded: a stated declaration target is a declaration
258
+ * target, and nothing about it is shadowed by another one.
259
+ */
260
+ const statedSourceSpecifiers = (stated) => {
261
+ const specifiers = new Set();
262
+ for (const answers of stated.values()) {
263
+ for (const [specifier, target] of answers)
264
+ if (!isDeclarationPath(target))
265
+ specifiers.add(specifier);
266
+ }
267
+ return specifiers;
268
+ };
269
+ /**
270
+ * Exact `paths` entries that resolve to program source rather than a
271
+ * declaration file.
272
+ *
273
+ * `tsconfig`'s `paths` is just as explicit an authority over a specifier as
274
+ * the caller's `moduleResolution` table. TypeScript nevertheless loads an
275
+ * ambient `declare module "node:events"` before the source module a project
276
+ * maps that spelling to, unless the declaration block is removed below. That
277
+ * splits the program in two: emission evaluates node-compat's `events.ts`,
278
+ * while the checker gives values the unrelated `@types/node` EventEmitter.
279
+ *
280
+ * Only non-pattern keys participate. A `*` key describes an open family and
281
+ * cannot prove one particular ambient module is shadowed; an exact key has a
282
+ * resolved source target the project itself selected. The resolver remains
283
+ * TypeScript's -- this function merely records that already-resolved fact for
284
+ * the declaration-file transform.
285
+ */
286
+ const pathMappedSourceSpecifiers = (options, host) => {
287
+ const paths = options.paths;
288
+ if (!paths)
289
+ return new Set();
290
+ // `pathsBasePath` is preserved by TypeScript's config parser but omitted
291
+ // from its public CompilerOptions declaration. It is still the authority
292
+ // for relative `paths` targets when present.
293
+ const pathsBasePath = options.pathsBasePath;
294
+ const base = pathsBasePath ?? options.baseUrl ?? host.getCurrentDirectory?.() ?? ts.sys.getCurrentDirectory();
295
+ const containingFile = resolve(base, '__gea_explicit_paths__.ts');
296
+ const result = new Set();
297
+ for (const specifier of Object.keys(paths)) {
298
+ if (specifier.includes('*'))
299
+ continue;
300
+ const resolved = ts.resolveModuleName(specifier, containingFile, options, host).resolvedModule;
301
+ if (resolved && !isDeclarationPath(resolved.resolvedFileName))
302
+ result.add(specifier);
303
+ }
304
+ return result;
305
+ };
306
+ /**
307
+ * A declaration file with its ambient `declare module '<spec>'` blocks removed,
308
+ * for every `<spec>` the CALLER states resolves to a real source module.
309
+ *
310
+ * TypeScript resolves a non-relative specifier against ambient module
311
+ * declarations BEFORE it resolves files, so a single
312
+ * `declare module 'troika-three-text' { ... }` anywhere in the program decides
313
+ * what the CHECKER thinks that import is -- while the emitter compiles the
314
+ * module the caller's own resolution named. Two authorities for one specifier,
315
+ * and the checker's loses every fact the real module states.
316
+ *
317
+ * Measured on the three.js app: its `src/troika-shims.d.ts` declares
318
+ * `export class Text extends Object3D` for the web build (where the npm package
319
+ * ships no types), while the native module graph resolves the same specifier to
320
+ * `native-webgl-angle/src/troika-three-text.ts` -- a real class the program
321
+ * compiles. Two things went wrong at once, both invisible: the ambient `Text`
322
+ * re-introduced the very name the real shim renames itself to avoid (gea maps
323
+ * the DOM `Text` onto `NodeHandle`, so the HUD's text objects were carried as
324
+ * DOM nodes), and the ambient class's `extends Object3D` resolved -- from a
325
+ * `.d.ts`, whose own imports the caller states nothing about -- to
326
+ * `@types/three`, binding `Vector3`/`Euler`/`Quaternion` as carrier-less host
327
+ * protocols. `native-boundary:Vector3@1`, 26 rows, all of them
328
+ * `<text>.position.set(...)`.
329
+ *
330
+ * The caller's stated resolution wins, because it is the module the program
331
+ * actually compiles and emits. The block is blanked rather than cut so every
332
+ * other position in the file is unchanged: a declaration file holds unrelated
333
+ * declarations (`declare module '*.woff'`), and shifting them would move
334
+ * diagnostics and identities that have nothing to do with this.
335
+ *
336
+ * AMBIENT, never an AUGMENTATION. The hazard above is one a `declare module`
337
+ * block can only pose from a GLOBAL declaration file: only there does the
338
+ * block introduce a module identity of its own, ahead of file resolution, for
339
+ * the checker to prefer. The same syntax inside a file that is itself a module
340
+ * is an augmentation -- TypeScript requires the specifier to resolve to an
341
+ * existing module and MERGES the block into it (it reports "Invalid module
342
+ * name in augmentation" when it does not), so it cannot shadow anything and
343
+ * there is nothing here to protect the program from. Blanking one deletes a
344
+ * declaration the application made about the very module this compilation
345
+ * resolved, and a path-mapped framework is exactly where an app states one:
346
+ * `notes-jsx`'s `env.d.ts` augments `@geastack/core` with the macOS shell's
347
+ * own JSX tags, and with the block blanked every `<glass-pane>` in the app was
348
+ * reported as not existing on `JSX.IntrinsicElements` -- an error about a
349
+ * declaration this function had removed.
350
+ */
351
+ const withoutShadowedAmbientModules = (file, shadowed, version) => {
352
+ if (shadowed.size === 0 || file.hasNoDefaultLib || ts.isExternalModule(file))
353
+ return file;
354
+ const spans = [];
355
+ for (const statement of file.statements) {
356
+ if (!ts.isModuleDeclaration(statement) || !ts.isStringLiteral(statement.name))
357
+ continue;
358
+ if (!shadowed.has(statement.name.text))
359
+ continue;
360
+ spans.push({ at: statement.getStart(file), end: statement.getEnd() });
361
+ }
362
+ if (spans.length === 0)
363
+ return file;
364
+ let text = file.text;
365
+ for (const span of [...spans].sort((a, b) => b.at - a.at)) {
366
+ const blanked = text.slice(span.at, span.end).replace(/[^\n]/g, ' ');
367
+ text = text.slice(0, span.at) + blanked + text.slice(span.end);
368
+ }
369
+ return ts.createSourceFile(file.fileName, text, version, true, scriptKindOf(file.fileName));
370
+ };
371
+ const transformingHost = (input, options, resolutionDiagnostics, preparedSourceText, timing) => {
372
+ const transforms = input.sourceTransforms ?? [];
373
+ const overlay = input.sourceOverlay;
374
+ const host = ts.createCompilerHost(options, true);
375
+ const read = host.getSourceFile.bind(host);
376
+ // An overlaid path must answer every question the filesystem would, not just
377
+ // the one that reads it: module resolution asks `fileExists` first and never
378
+ // reaches `getSourceFile` for a path it believes is absent, which is exactly
379
+ // how a virtual module disappears from a program that imports it.
380
+ if (overlay) {
381
+ const exists = host.fileExists.bind(host);
382
+ const readFile = host.readFile.bind(host);
383
+ const directoryExists = host.directoryExists?.bind(host);
384
+ const overlayDirectories = new Set();
385
+ for (const file of overlay.keys()) {
386
+ for (let directory = dirname(file); !overlayDirectories.has(directory); directory = dirname(directory)) {
387
+ overlayDirectories.add(directory);
388
+ if (dirname(directory) === directory)
389
+ break;
390
+ }
391
+ }
392
+ host.directoryExists = (directory) => overlayDirectories.has(resolve(directory)) || (directoryExists?.(directory) ?? false);
393
+ host.fileExists = (fileName) => overlay.has(resolve(fileName)) || exists(fileName);
394
+ host.readFile = (fileName) => overlay.get(resolve(fileName)) ?? readFile(fileName);
395
+ }
396
+ const stated = input.moduleResolution;
397
+ const shadowedSpecifiers = new Set([...(stated ? statedSourceSpecifiers(stated) : []), ...pathMappedSourceSpecifiers(options, host)]);
398
+ const resolver = createModuleResolver(host, options, input.declarationModules, input.packageSources);
399
+ const declarations = new Map();
400
+ host.resolveModuleNameLiterals = (literals, containingFile, _redirected, compilerOptions, containingSource) => {
401
+ const answers = stated?.get(resolve(containingFile));
402
+ return literals.map((literal) => {
403
+ const mode = ts.getModeForUsageLocation(containingSource, literal, compilerOptions);
404
+ const result = resolver.resolve(literal.text, containingFile, mode, answers?.get(literal.text));
405
+ if (typeOnlyModuleUse(literal) && result.declaration && !answers?.has(literal.text))
406
+ return { resolvedModule: result.declaration };
407
+ let implementation = result.implementation;
408
+ if (implementation && !answers?.has(literal.text)) {
409
+ const source = mappedTypeScriptSource(implementation.resolvedFileName, host);
410
+ if (source)
411
+ implementation = { ...implementation, resolvedFileName: source, extension: moduleExtension(source) };
412
+ }
413
+ if (implementation && result.declaration && !isDeclarationPath(implementation.resolvedFileName)) {
414
+ declarations.set(resolve(implementation.resolvedFileName), result.declaration.resolvedFileName);
415
+ }
416
+ if (!implementation && result.declaration && !result.native && !isDeclarationPath(containingFile) && !typeOnlyModuleUse(literal)) {
417
+ resolutionDiagnostics.push({
418
+ literal,
419
+ diagnostic: {
420
+ category: ts.DiagnosticCategory.Error,
421
+ code: 95001,
422
+ file: containingSource,
423
+ start: literal.getStart(containingSource),
424
+ length: literal.getWidth(containingSource),
425
+ messageText: `Module '${literal.text}' has declarations but no resolvable implementation or registered native binding.`
426
+ }
427
+ });
428
+ }
429
+ return { resolvedModule: implementation ?? result.declaration };
430
+ });
431
+ };
432
+ host.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
433
+ const prepared = preparedSourceText.get(resolve(fileName));
434
+ if (prepared !== undefined)
435
+ return ts.createSourceFile(fileName, prepared, languageVersionOrOptions, true, scriptKindOf(fileName));
436
+ const overlaid = overlay?.get(resolve(fileName));
437
+ const file = overlaid === undefined
438
+ ? read(fileName, languageVersionOrOptions, onError, shouldCreateNewSourceFile)
439
+ : ts.createSourceFile(fileName, overlaid, languageVersionOrOptions, true, scriptKindOf(fileName));
440
+ if (!file)
441
+ return file;
442
+ if (file.isDeclarationFile)
443
+ return withoutShadowedAmbientModules(file, shadowedSpecifiers, languageVersionOrOptions);
444
+ let text = jsonModuleAsTypeScript(fileName, file.text) ?? file.text;
445
+ const declarationFileName = declarations.get(resolve(fileName));
446
+ for (const [index, transform] of transforms.entries()) {
447
+ text = timing.measure(`transform:${index}:${transform.name}`, () => transform({ fileName, text, ...(declarationFileName ? { declarationFileName } : {}) }) ?? text);
448
+ }
449
+ const transformed = text === file.text ? file : ts.createSourceFile(fileName, text, languageVersionOrOptions, true, scriptKindOf(fileName));
450
+ // Asked of the TRANSFORMED file, not the one on disk: a plugin (or the
451
+ // `.json` rewrite above) can add the import or export that already makes
452
+ // the file a module, and can equally introduce the top-level `await` that
453
+ // asks for one. Either way the question is about the text this program
454
+ // actually compiles.
455
+ const marked = moduleMarkerForTopLevelAwait(transformed);
456
+ if (marked === null)
457
+ return transformed;
458
+ return ts.createSourceFile(fileName, marked, languageVersionOrOptions, true, scriptKindOf(fileName));
459
+ };
460
+ return host;
461
+ };
462
+ /**
463
+ * A literal CommonJS require is a runtime module edge even though TypeScript
464
+ * does not treat its string argument as a module-specifier node. Admit only
465
+ * calls whose resolved callee is an EXACT declaration the installed host owns;
466
+ * a local function, caller ambient, or a merged declaration coincidentally
467
+ * called `require` remains ordinary source and cannot pull a second module
468
+ * graph into this program.
469
+ */
470
+ const staticCommonJsTargetsOf = (program, globals, targetOf) => {
471
+ if (globals.size === 0)
472
+ return [];
473
+ const checker = program.getTypeChecker();
474
+ const requireCensus = createCommonJsRequireCensus(checker, program.getSourceFiles(), globals);
475
+ const targets = new Set();
476
+ const visit = (node, sourceFile) => {
477
+ const argument = ts.isCallExpression(node) && node.arguments.length === 1 ? node.arguments[0] : undefined;
478
+ if (ts.isCallExpression(node) && argument && ts.isStringLiteralLike(argument) && requireCensus.statusOf(node.expression) === 'static') {
479
+ const target = targetOf(argument.text, sourceFile.fileName, 'require');
480
+ if (target !== null)
481
+ targets.add(target);
482
+ }
483
+ ts.forEachChild(node, (child) => visit(child, sourceFile));
484
+ };
485
+ for (const sourceFile of program.getSourceFiles())
486
+ if (!sourceFile.isDeclarationFile)
487
+ visit(sourceFile, sourceFile);
488
+ return [...targets];
489
+ };
490
+ /**
491
+ * `getBuiltinModule` is a native, dynamic lookup, not a source import. A
492
+ * literal call is nevertheless enough evidence to retain the host's stated
493
+ * implementation source and register its ModuleRecord before the call runs.
494
+ * The method binding, loader spelling map, and source map are all host data;
495
+ * this program layer does not recognize a Process spelling on its own.
496
+ */
497
+ const staticBuiltinModuleTargetsOf = (program, bindings, names, sources) => {
498
+ if (bindings.size === 0 || names.size === 0 || sources.size === 0)
499
+ return [];
500
+ const checker = program.getTypeChecker();
501
+ const targets = new Set();
502
+ const visit = (node) => {
503
+ const argument = ts.isCallExpression(node) && node.arguments.length === 1 ? node.arguments[0] : undefined;
504
+ if (ts.isCallExpression(node) &&
505
+ argument &&
506
+ ts.isStringLiteralLike(argument) &&
507
+ (ts.isPropertyAccessExpression(node.expression) || ts.isElementAccessExpression(node.expression))) {
508
+ const method = resolveHostMethod(checker, bindings, node.expression);
509
+ const name = method?.builtinModuleLookup ? names.get(argument.text) : undefined;
510
+ const source = name === undefined ? undefined : sources.get(name);
511
+ if (source !== undefined)
512
+ targets.add(resolve(source));
513
+ }
514
+ ts.forEachChild(node, visit);
515
+ };
516
+ for (const sourceFile of program.getSourceFiles())
517
+ if (!sourceFile.isDeclarationFile)
518
+ visit(sourceFile);
519
+ return [...targets];
520
+ };
521
+ const configuredProgram = (input, resolutionDiagnostics, preparedSourceText, timing) => {
522
+ const runtimeModuleTargetOf = (host, options) => {
523
+ const resolver = createModuleResolver(host, options, input.declarationModules, input.packageSources);
524
+ return (specifier, containingFile, mode) => {
525
+ const statedTarget = input.moduleResolution?.get(resolve(containingFile))?.get(specifier);
526
+ const result = resolver.resolve(specifier, containingFile, mode === 'require' ? ts.ModuleKind.CommonJS : undefined, statedTarget);
527
+ let implementation = result.implementation;
528
+ if (implementation && !statedTarget) {
529
+ const source = mappedTypeScriptSource(implementation.resolvedFileName, host);
530
+ if (source)
531
+ implementation = { ...implementation, resolvedFileName: source, extension: moduleExtension(source) };
532
+ }
533
+ return implementation ? resolve(implementation.resolvedFileName) : null;
534
+ };
535
+ };
536
+ const projectFileName = input.projectFileName;
537
+ const buildProgram = (rootNames, options, host) => {
538
+ const targetOf = runtimeModuleTargetOf(host, options);
539
+ const roots = new Set(rootNames);
540
+ const commonJsTargetPaths = new Set();
541
+ let program = timing.measure('create-program', () => ts.createProgram({ rootNames: [...roots], options, host }));
542
+ for (;;) {
543
+ const targets = [
544
+ ...staticCommonJsTargetsOf(program, input.commonJsGlobals ?? new Map(), targetOf),
545
+ ...staticBuiltinModuleTargetsOf(program, input.hostMethodBindings ?? new Map(), input.commonJsBuiltinModules ?? new Map(), input.commonJsBuiltinModuleSources ?? new Map())
546
+ ];
547
+ for (const target of targets)
548
+ commonJsTargetPaths.add(target);
549
+ const added = targets.filter((target) => !roots.has(target) && program.getSourceFile(target) === undefined);
550
+ if (added.length === 0)
551
+ break;
552
+ for (const target of added) {
553
+ roots.add(target);
554
+ }
555
+ program = timing.measure('rebuild-program', () => ts.createProgram({ rootNames: [...roots], options, host }));
556
+ }
557
+ return { program, runtimeModuleTargetOf: targetOf, commonJsTargetPaths: [...commonJsTargetPaths] };
558
+ };
559
+ if (!projectFileName) {
560
+ const options = { ...input.options, ...(input.dynamicFallback ? { noImplicitAny: false, checkJs: false } : {}) };
561
+ const host = transformingHost(input, options, resolutionDiagnostics, preparedSourceText, timing);
562
+ const rootNames = [
563
+ ...new Set([
564
+ ...input.rootFileNames,
565
+ ...(input.commonJsGlobals ? [...input.commonJsGlobals.values()].map((entry) => entry.declarationFileName) : [])
566
+ ])
567
+ ];
568
+ // `host` is omitted rather than passed as `undefined`: under
569
+ // `exactOptionalPropertyTypes` the two are different, and the option is
570
+ // "the caller supplies a host" -- not "the caller supplies no host".
571
+ return buildProgram(rootNames, options, host ?? ts.createCompilerHost(options, true));
572
+ }
573
+ const read = ts.readConfigFile(projectFileName, ts.sys.readFile);
574
+ if (read.error) {
575
+ throw new Error(`project file ${projectFileName} could not be read: ${ts.flattenDiagnosticMessageText(read.error.messageText, ' ')}`);
576
+ }
577
+ // The base directory must be absolute. `parseJsonConfigFileContent` resolves
578
+ // `include` globs against it by asking the filesystem, and a relative base
579
+ // silently matches nothing -- which reads as a project that declares no files
580
+ // rather than as an error, so every ambient declaration disappears and every
581
+ // wildcard import in the program becomes an unresolved specifier.
582
+ const parsed = ts.parseJsonConfigFileContent(read.config, ts.sys, resolve(dirname(projectFileName)));
583
+ // The roots the caller named are added to the project's own file set rather
584
+ // than replacing it: a caller compiling one file of a project still needs the
585
+ // project's ambient declarations, and the project still needs to be told which
586
+ // file the caller cares about in case `include` does not cover it.
587
+ // Declarations only when the caller stated the module set: see
588
+ // `ProgramInput.statedModuleSet` for why a staged project's wildcard
589
+ // `include` is not this application's module list.
590
+ const projectFiles = input.statedModuleSet ? parsed.fileNames.filter(isDeclarationPath) : parsed.fileNames;
591
+ const rootNames = [
592
+ ...new Set([
593
+ ...projectFiles,
594
+ ...input.rootFileNames,
595
+ ...(input.commonJsGlobals ? [...input.commonJsGlobals.values()].map((entry) => entry.declarationFileName) : [])
596
+ ])
597
+ ];
598
+ const options = {
599
+ ...parsed.options,
600
+ ...javaScriptAdmission(input.options),
601
+ ...fixedOptions,
602
+ ...(input.dynamicFallback ? { noImplicitAny: false, checkJs: false } : {})
603
+ };
604
+ const host = transformingHost(input, options, resolutionDiagnostics, preparedSourceText, timing);
605
+ return buildProgram(rootNames, options, host ?? ts.createCompilerHost(options, true));
606
+ };
607
+ /**
608
+ * The caller's root file names, resolved to this program's own source files.
609
+ *
610
+ * `getSourceFile` is asked before `resolve` so a caller that already handed in
611
+ * an absolute path is answered without touching the filesystem; the second
612
+ * attempt is what makes a relative root work. A name that resolves to nothing
613
+ * contributes nothing rather than throwing -- the program still contains every
614
+ * file the project declared, and the honest consequence of an unresolvable
615
+ * root is that this compilation has no entry point to prune from.
616
+ */
617
+ const entryFilesOf = (program, rootFileNames) => {
618
+ const found = [];
619
+ for (const name of rootFileNames) {
620
+ const file = program.getSourceFile(name) ?? program.getSourceFile(resolve(name));
621
+ if (file && !file.isDeclarationFile)
622
+ found.push(file);
623
+ }
624
+ return found;
625
+ };
626
+ export const createProgram = (input) => {
627
+ const timing = createFrontendTiming('program');
628
+ const resolutionDiagnostics = [];
629
+ let configured = configuredProgram(input, resolutionDiagnostics, new Map(), timing);
630
+ const preparation = timing.measure('diagnostic-source-preparation', () => diagnosticSourcePreparation(ts, configured.program, input.packageSources ?? []));
631
+ // A bare `var require` in a CommonJS module redeclares the wrapper's own
632
+ // parameter; blanked here so the checker types the name from the host's
633
+ // declaration instead of from an uninitialized local (`commonjs-wrapper.ts`).
634
+ const redeclarations = withoutBareWrapperRedeclarations(configured.program, new Set(input.commonJsGlobals?.keys() ?? []), preparation.sourceText);
635
+ if (preparation.audit.length > 0 || redeclarations.size > 0) {
636
+ resolutionDiagnostics.length = 0;
637
+ configured = configuredProgram(input, resolutionDiagnostics, new Map([...preparation.sourceText, ...redeclarations]), timing);
638
+ }
639
+ const program = configured.program;
640
+ const checker = withStableTypeQueries(program.getTypeChecker());
641
+ const sourceFiles = program.getSourceFiles().filter((file) => !file.isDeclarationFile);
642
+ const diagnostics = [
643
+ ...timing.measure('syntactic-diagnostics', () => program.getSyntacticDiagnostics()),
644
+ ...timing.measure('semantic-diagnostics', () => program.getSemanticDiagnostics()),
645
+ ...resolutionDiagnostics
646
+ .filter(({ literal }) => !typeOnlyModuleUse(literal, checker, program.getCompilerOptions().verbatimModuleSyntax))
647
+ .map(({ diagnostic }) => diagnostic)
648
+ ];
649
+ timing.report();
650
+ return {
651
+ program,
652
+ checker,
653
+ runtimeModuleTargetOf: configured.runtimeModuleTargetOf,
654
+ sourceFileOf: (fileName) => program.getSourceFile(fileName) ?? null,
655
+ commonJsSourceFiles: configured.commonJsTargetPaths.flatMap((fileName) => {
656
+ const sourceFile = program.getSourceFile(fileName);
657
+ return sourceFile ? [sourceFile] : [];
658
+ }),
659
+ sourceFiles,
660
+ entryFiles: entryFilesOf(program, input.rootFileNames),
661
+ sourcePreparations: preparation.audit,
662
+ // A program that does not typecheck has no well-defined semantics to port.
663
+ // Collecting these here means the compiler can refuse before normalizing,
664
+ // rather than normalizing a program the checker never validated.
665
+ diagnostics
666
+ };
667
+ };
@@ -0,0 +1,4 @@
1
+ export declare const prototypeInstallSourceTransform: (input: {
2
+ readonly fileName: string;
3
+ readonly text: string;
4
+ }) => string | null;