@tsonic/frontend 0.0.14 → 0.0.16

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 (507) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/graph/builder.js +2 -2
  3. package/dist/graph/builder.js.map +1 -1
  4. package/dist/graph/extraction/imports.js +1 -1
  5. package/dist/graph/extraction/imports.js.map +1 -1
  6. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  7. package/dist/graph/extraction/orchestrator.js +3 -2
  8. package/dist/graph/extraction/orchestrator.js.map +1 -1
  9. package/dist/ir/binding/index.d.ts +155 -0
  10. package/dist/ir/binding/index.d.ts.map +1 -0
  11. package/dist/ir/binding/index.js +1035 -0
  12. package/dist/ir/binding/index.js.map +1 -0
  13. package/dist/ir/binding-resolution.test.js +193 -52
  14. package/dist/ir/binding-resolution.test.js.map +1 -1
  15. package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
  16. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
  17. package/dist/ir/bindings-disambiguation.test.js +416 -0
  18. package/dist/ir/bindings-disambiguation.test.js.map +1 -0
  19. package/dist/ir/builder/exports.d.ts +20 -2
  20. package/dist/ir/builder/exports.d.ts.map +1 -1
  21. package/dist/ir/builder/exports.js +65 -6
  22. package/dist/ir/builder/exports.js.map +1 -1
  23. package/dist/ir/builder/imports.d.ts +9 -5
  24. package/dist/ir/builder/imports.d.ts.map +1 -1
  25. package/dist/ir/builder/imports.js +20 -31
  26. package/dist/ir/builder/imports.js.map +1 -1
  27. package/dist/ir/builder/orchestrator.d.ts +10 -1
  28. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  29. package/dist/ir/builder/orchestrator.js +32 -15
  30. package/dist/ir/builder/orchestrator.js.map +1 -1
  31. package/dist/ir/builder/statements.d.ts +7 -1
  32. package/dist/ir/builder/statements.d.ts.map +1 -1
  33. package/dist/ir/builder/statements.js +7 -2
  34. package/dist/ir/builder/statements.js.map +1 -1
  35. package/dist/ir/builder/types.d.ts +2 -0
  36. package/dist/ir/builder/types.d.ts.map +1 -1
  37. package/dist/ir/builder/validation.d.ts +4 -1
  38. package/dist/ir/builder/validation.d.ts.map +1 -1
  39. package/dist/ir/builder/validation.js +37 -37
  40. package/dist/ir/builder/validation.js.map +1 -1
  41. package/dist/ir/builder.test.js +55 -112
  42. package/dist/ir/builder.test.js.map +1 -1
  43. package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
  44. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  45. package/dist/ir/converters/anonymous-synthesis.js +46 -55
  46. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  47. package/dist/ir/converters/context.d.ts +40 -0
  48. package/dist/ir/converters/context.d.ts.map +1 -0
  49. package/dist/ir/converters/context.js +25 -0
  50. package/dist/ir/converters/context.js.map +1 -0
  51. package/dist/ir/converters/expressions/access.d.ts +6 -1
  52. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  53. package/dist/ir/converters/expressions/access.js +389 -43
  54. package/dist/ir/converters/expressions/access.js.map +1 -1
  55. package/dist/ir/converters/expressions/calls.d.ts +24 -3
  56. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  57. package/dist/ir/converters/expressions/calls.js +674 -397
  58. package/dist/ir/converters/expressions/calls.js.map +1 -1
  59. package/dist/ir/converters/expressions/collections.d.ts +16 -3
  60. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  61. package/dist/ir/converters/expressions/collections.js +300 -46
  62. package/dist/ir/converters/expressions/collections.js.map +1 -1
  63. package/dist/ir/converters/expressions/functions.d.ts +10 -3
  64. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  65. package/dist/ir/converters/expressions/functions.js +158 -32
  66. package/dist/ir/converters/expressions/functions.js.map +1 -1
  67. package/dist/ir/converters/expressions/helpers.d.ts +22 -23
  68. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  69. package/dist/ir/converters/expressions/helpers.js +242 -239
  70. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  71. package/dist/ir/converters/expressions/index.d.ts +1 -1
  72. package/dist/ir/converters/expressions/index.d.ts.map +1 -1
  73. package/dist/ir/converters/expressions/index.js +1 -1
  74. package/dist/ir/converters/expressions/index.js.map +1 -1
  75. package/dist/ir/converters/expressions/literals.d.ts +12 -12
  76. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  77. package/dist/ir/converters/expressions/literals.js +62 -17
  78. package/dist/ir/converters/expressions/literals.js.map +1 -1
  79. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
  80. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
  81. package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
  82. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  83. package/dist/ir/converters/expressions/operators.d.ts +13 -4
  84. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  85. package/dist/ir/converters/expressions/operators.js +183 -33
  86. package/dist/ir/converters/expressions/operators.js.map +1 -1
  87. package/dist/ir/converters/expressions/other.d.ts +11 -3
  88. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  89. package/dist/ir/converters/expressions/other.js +26 -10
  90. package/dist/ir/converters/expressions/other.js.map +1 -1
  91. package/dist/ir/converters/flow-narrowing.d.ts +27 -0
  92. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
  93. package/dist/ir/converters/flow-narrowing.js +73 -0
  94. package/dist/ir/converters/flow-narrowing.js.map +1 -0
  95. package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
  96. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
  97. package/dist/ir/converters/statements/control/blocks.js +7 -2
  98. package/dist/ir/converters/statements/control/blocks.js.map +1 -1
  99. package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
  100. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  101. package/dist/ir/converters/statements/control/conditionals.js +36 -10
  102. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  103. package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
  104. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
  105. package/dist/ir/converters/statements/control/exceptions.js +13 -7
  106. package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
  107. package/dist/ir/converters/statements/control/loops.d.ts +16 -5
  108. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  109. package/dist/ir/converters/statements/control/loops.js +25 -15
  110. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  111. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
  112. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  113. package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
  114. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  115. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
  116. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  117. package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
  118. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  119. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
  120. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  121. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
  122. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  123. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
  124. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  125. package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
  126. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  127. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
  128. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  129. package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
  130. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  131. package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
  132. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
  133. package/dist/ir/converters/statements/declarations/enums.js +8 -2
  134. package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
  135. package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
  136. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
  137. package/dist/ir/converters/statements/declarations/functions.js +11 -6
  138. package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
  139. package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
  140. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
  141. package/dist/ir/converters/statements/declarations/index.js +3 -1
  142. package/dist/ir/converters/statements/declarations/index.js.map +1 -1
  143. package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
  144. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  145. package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
  146. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  147. package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
  148. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
  149. package/dist/ir/converters/statements/declarations/registry.js +92 -0
  150. package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
  151. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
  152. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  153. package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
  154. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  155. package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
  156. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  157. package/dist/ir/converters/statements/declarations/variables.js +123 -19
  158. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  159. package/dist/ir/converters/statements/declarations.d.ts +4 -1
  160. package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
  161. package/dist/ir/converters/statements/declarations.js +4 -1
  162. package/dist/ir/converters/statements/declarations.js.map +1 -1
  163. package/dist/ir/converters/statements/helpers.d.ts +4 -3
  164. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  165. package/dist/ir/converters/statements/helpers.js +55 -31
  166. package/dist/ir/converters/statements/helpers.js.map +1 -1
  167. package/dist/ir/converters/statements/index.d.ts +1 -1
  168. package/dist/ir/converters/statements/index.d.ts.map +1 -1
  169. package/dist/ir/converters/statements/index.js +2 -1
  170. package/dist/ir/converters/statements/index.js.map +1 -1
  171. package/dist/ir/expression-converter.d.ts +10 -3
  172. package/dist/ir/expression-converter.d.ts.map +1 -1
  173. package/dist/ir/expression-converter.js +139 -57
  174. package/dist/ir/expression-converter.js.map +1 -1
  175. package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
  176. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
  177. package/dist/ir/index.d.ts +5 -0
  178. package/dist/ir/index.d.ts.map +1 -1
  179. package/dist/ir/index.js +5 -0
  180. package/dist/ir/index.js.map +1 -1
  181. package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
  182. package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
  183. package/dist/ir/no-ts-type-inference.test.js +171 -0
  184. package/dist/ir/no-ts-type-inference.test.js.map +1 -0
  185. package/dist/ir/program-context.d.ts +87 -0
  186. package/dist/ir/program-context.d.ts.map +1 -0
  187. package/dist/ir/program-context.js +289 -0
  188. package/dist/ir/program-context.js.map +1 -0
  189. package/dist/ir/statement-converter.d.ts +14 -4
  190. package/dist/ir/statement-converter.d.ts.map +1 -1
  191. package/dist/ir/statement-converter.js +31 -21
  192. package/dist/ir/statement-converter.js.map +1 -1
  193. package/dist/ir/syntax/binding-patterns.d.ts +22 -0
  194. package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
  195. package/dist/ir/{type-converter/patterns.js → syntax/binding-patterns.js} +34 -8
  196. package/dist/ir/syntax/binding-patterns.js.map +1 -0
  197. package/dist/ir/thisarg-inference.test.d.ts +8 -0
  198. package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
  199. package/dist/ir/thisarg-inference.test.js +94 -0
  200. package/dist/ir/thisarg-inference.test.js.map +1 -0
  201. package/dist/ir/type-system/index.d.ts +21 -0
  202. package/dist/ir/type-system/index.d.ts.map +1 -0
  203. package/dist/ir/type-system/index.js +43 -0
  204. package/dist/ir/type-system/index.js.map +1 -0
  205. package/dist/ir/type-system/internal/handle-types.d.ts +105 -0
  206. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
  207. package/dist/ir/type-system/internal/handle-types.js +13 -0
  208. package/dist/ir/type-system/internal/handle-types.js.map +1 -0
  209. package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
  210. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
  211. package/dist/ir/type-system/internal/nominal-env.js +301 -0
  212. package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
  213. package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
  214. package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
  215. package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
  216. package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
  217. package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
  218. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
  219. package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
  220. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
  221. package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
  222. package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
  223. package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
  224. package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
  225. package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
  226. package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
  227. package/dist/ir/type-system/internal/type-converter/index.js +11 -0
  228. package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
  229. package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
  230. package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
  231. package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
  232. package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
  233. package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
  234. package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
  235. package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
  236. package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
  237. package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
  238. package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
  239. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
  240. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
  241. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
  242. package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
  243. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
  244. package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +4 -4
  245. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
  246. package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +2 -2
  247. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
  248. package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
  249. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
  250. package/dist/ir/type-system/internal/type-converter/references.js +545 -0
  251. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
  252. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
  253. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
  254. package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
  255. package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
  256. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
  257. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
  258. package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
  259. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
  260. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
  261. package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
  262. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
  263. package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
  264. package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
  265. package/dist/ir/type-system/internal/type-converter.js +9 -0
  266. package/dist/ir/type-system/internal/type-converter.js.map +1 -0
  267. package/dist/ir/type-system/internal/type-registry.d.ts +112 -0
  268. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
  269. package/dist/ir/type-system/internal/type-registry.js +535 -0
  270. package/dist/ir/type-system/internal/type-registry.js.map +1 -0
  271. package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
  272. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
  273. package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
  274. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
  275. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
  276. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
  277. package/dist/ir/type-system/internal/universe/clr-catalog.js +1192 -0
  278. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
  279. package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
  280. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
  281. package/dist/ir/type-system/internal/universe/index.js +30 -0
  282. package/dist/ir/type-system/internal/universe/index.js.map +1 -0
  283. package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
  284. package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
  285. package/dist/ir/type-system/internal/universe/resolution.js +181 -0
  286. package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
  287. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +64 -0
  288. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
  289. package/dist/ir/type-system/internal/universe/source-catalog.js +96 -0
  290. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
  291. package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
  292. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
  293. package/dist/ir/type-system/internal/universe/types.js +69 -0
  294. package/dist/ir/type-system/internal/universe/types.js.map +1 -0
  295. package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
  296. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
  297. package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
  298. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
  299. package/dist/ir/type-system/type-system.d.ts +617 -0
  300. package/dist/ir/type-system/type-system.d.ts.map +1 -0
  301. package/dist/ir/type-system/type-system.js +2579 -0
  302. package/dist/ir/type-system/type-system.js.map +1 -0
  303. package/dist/ir/type-system/types.d.ts +176 -0
  304. package/dist/ir/type-system/types.d.ts.map +1 -0
  305. package/dist/ir/type-system/types.js +80 -0
  306. package/dist/ir/type-system/types.js.map +1 -0
  307. package/dist/ir/types/expressions.d.ts +35 -7
  308. package/dist/ir/types/expressions.d.ts.map +1 -1
  309. package/dist/ir/types/helpers.d.ts +22 -2
  310. package/dist/ir/types/helpers.d.ts.map +1 -1
  311. package/dist/ir/types/index.d.ts +4 -2
  312. package/dist/ir/types/index.d.ts.map +1 -1
  313. package/dist/ir/types/index.js +1 -0
  314. package/dist/ir/types/index.js.map +1 -1
  315. package/dist/ir/types/ir-substitution.d.ts +144 -0
  316. package/dist/ir/types/ir-substitution.d.ts.map +1 -0
  317. package/dist/ir/types/ir-substitution.js +569 -0
  318. package/dist/ir/types/ir-substitution.js.map +1 -0
  319. package/dist/ir/types/ir-types.d.ts +10 -4
  320. package/dist/ir/types/ir-types.d.ts.map +1 -1
  321. package/dist/ir/types/numeric-helpers.d.ts +2 -1
  322. package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
  323. package/dist/ir/types/numeric-helpers.js +9 -3
  324. package/dist/ir/types/numeric-helpers.js.map +1 -1
  325. package/dist/ir/types/statements.d.ts +22 -1
  326. package/dist/ir/types/statements.d.ts.map +1 -1
  327. package/dist/ir/types.d.ts +1 -1
  328. package/dist/ir/types.d.ts.map +1 -1
  329. package/dist/ir/types.js.map +1 -1
  330. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  331. package/dist/ir/validation/anonymous-type-lowering-pass.js +153 -8
  332. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  333. package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
  334. package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
  335. package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
  336. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
  337. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  338. package/dist/ir/validation/attribute-collection-pass.js +40 -6
  339. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  340. package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
  341. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  342. package/dist/ir/validation/char-validation-pass.d.ts +26 -0
  343. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
  344. package/dist/ir/validation/char-validation-pass.js +495 -0
  345. package/dist/ir/validation/char-validation-pass.js.map +1 -0
  346. package/dist/ir/validation/index.d.ts +3 -0
  347. package/dist/ir/validation/index.d.ts.map +1 -1
  348. package/dist/ir/validation/index.js +3 -0
  349. package/dist/ir/validation/index.js.map +1 -1
  350. package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
  351. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  352. package/dist/ir/validation/numeric-coercion-pass.js +159 -51
  353. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  354. package/dist/ir/validation/numeric-invariants.test.js +72 -108
  355. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  356. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  357. package/dist/ir/validation/numeric-proof-pass.js +71 -23
  358. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  359. package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
  360. package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
  361. package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
  362. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
  363. package/dist/ir/validation/soundness-gate.d.ts +11 -1
  364. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  365. package/dist/ir/validation/soundness-gate.js +42 -10
  366. package/dist/ir/validation/soundness-gate.js.map +1 -1
  367. package/dist/ir/validation/soundness-gate.test.js +19 -2
  368. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  369. package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
  370. package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
  371. package/dist/ir/validation/virtual-marking-pass.js +77 -0
  372. package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
  373. package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
  374. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  375. package/dist/program/bindings.d.ts +44 -0
  376. package/dist/program/bindings.d.ts.map +1 -1
  377. package/dist/program/bindings.js +248 -2
  378. package/dist/program/bindings.js.map +1 -1
  379. package/dist/program/bindings.test.js +30 -0
  380. package/dist/program/bindings.test.js.map +1 -1
  381. package/dist/program/creation.d.ts.map +1 -1
  382. package/dist/program/creation.js +158 -4
  383. package/dist/program/creation.js.map +1 -1
  384. package/dist/program/dependency-graph.d.ts.map +1 -1
  385. package/dist/program/dependency-graph.js +33 -26
  386. package/dist/program/dependency-graph.js.map +1 -1
  387. package/dist/program/index.d.ts +1 -1
  388. package/dist/program/index.d.ts.map +1 -1
  389. package/dist/program/types.d.ts +7 -8
  390. package/dist/program/types.d.ts.map +1 -1
  391. package/dist/resolver/clr-bindings-resolver.d.ts +6 -0
  392. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  393. package/dist/resolver/clr-bindings-resolver.js +185 -39
  394. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  395. package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
  396. package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
  397. package/dist/resolver/clr-bindings-resolver.test.js +161 -0
  398. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
  399. package/dist/resolver/import-resolution.d.ts +16 -1
  400. package/dist/resolver/import-resolution.d.ts.map +1 -1
  401. package/dist/resolver/import-resolution.js +29 -12
  402. package/dist/resolver/import-resolution.js.map +1 -1
  403. package/dist/resolver/namespace.d.ts +2 -1
  404. package/dist/resolver/namespace.d.ts.map +1 -1
  405. package/dist/resolver/namespace.js +5 -2
  406. package/dist/resolver/namespace.js.map +1 -1
  407. package/dist/resolver/namespace.test.js +6 -6
  408. package/dist/resolver/naming-policy.d.ts +20 -0
  409. package/dist/resolver/naming-policy.d.ts.map +1 -0
  410. package/dist/resolver/naming-policy.js +40 -0
  411. package/dist/resolver/naming-policy.js.map +1 -0
  412. package/dist/resolver/naming.d.ts +2 -5
  413. package/dist/resolver/naming.d.ts.map +1 -1
  414. package/dist/resolver/naming.js +3 -20
  415. package/dist/resolver/naming.js.map +1 -1
  416. package/dist/resolver.d.ts +2 -0
  417. package/dist/resolver.d.ts.map +1 -1
  418. package/dist/resolver.js +1 -0
  419. package/dist/resolver.js.map +1 -1
  420. package/dist/resolver.test.js +8 -3
  421. package/dist/resolver.test.js.map +1 -1
  422. package/dist/symbol-table/builder.d.ts +3 -1
  423. package/dist/symbol-table/builder.d.ts.map +1 -1
  424. package/dist/symbol-table/builder.js +9 -8
  425. package/dist/symbol-table/builder.js.map +1 -1
  426. package/dist/symbol-table/types.d.ts +2 -2
  427. package/dist/symbol-table/types.d.ts.map +1 -1
  428. package/dist/types/diagnostic.d.ts +12 -2
  429. package/dist/types/diagnostic.d.ts.map +1 -1
  430. package/dist/types/diagnostic.js +5 -1
  431. package/dist/types/diagnostic.js.map +1 -1
  432. package/dist/validation/core-intrinsics.d.ts +18 -0
  433. package/dist/validation/core-intrinsics.d.ts.map +1 -0
  434. package/dist/validation/core-intrinsics.js +186 -0
  435. package/dist/validation/core-intrinsics.js.map +1 -0
  436. package/dist/validation/extension-methods.d.ts +17 -0
  437. package/dist/validation/extension-methods.d.ts.map +1 -0
  438. package/dist/validation/extension-methods.js +133 -0
  439. package/dist/validation/extension-methods.js.map +1 -0
  440. package/dist/validation/generics.d.ts.map +1 -1
  441. package/dist/validation/generics.js +1 -129
  442. package/dist/validation/generics.js.map +1 -1
  443. package/dist/validation/imports.js +1 -1
  444. package/dist/validation/imports.js.map +1 -1
  445. package/dist/validation/index.d.ts +2 -0
  446. package/dist/validation/index.d.ts.map +1 -1
  447. package/dist/validation/index.js +2 -0
  448. package/dist/validation/index.js.map +1 -1
  449. package/dist/validation/orchestrator.d.ts.map +1 -1
  450. package/dist/validation/orchestrator.js +4 -0
  451. package/dist/validation/orchestrator.js.map +1 -1
  452. package/dist/validation/static-safety.d.ts +1 -0
  453. package/dist/validation/static-safety.d.ts.map +1 -1
  454. package/dist/validation/static-safety.js +366 -96
  455. package/dist/validation/static-safety.js.map +1 -1
  456. package/dist/validator.test.js +123 -1
  457. package/dist/validator.test.js.map +1 -1
  458. package/package.json +2 -2
  459. package/dist/ir/type-converter/arrays.d.ts +0 -10
  460. package/dist/ir/type-converter/arrays.d.ts.map +0 -1
  461. package/dist/ir/type-converter/arrays.js.map +0 -1
  462. package/dist/ir/type-converter/converter.d.ts +0 -6
  463. package/dist/ir/type-converter/converter.d.ts.map +0 -1
  464. package/dist/ir/type-converter/converter.js +0 -6
  465. package/dist/ir/type-converter/converter.js.map +0 -1
  466. package/dist/ir/type-converter/functions.d.ts +0 -10
  467. package/dist/ir/type-converter/functions.d.ts.map +0 -1
  468. package/dist/ir/type-converter/functions.js +0 -15
  469. package/dist/ir/type-converter/functions.js.map +0 -1
  470. package/dist/ir/type-converter/index.d.ts +0 -7
  471. package/dist/ir/type-converter/index.d.ts.map +0 -1
  472. package/dist/ir/type-converter/index.js +0 -7
  473. package/dist/ir/type-converter/index.js.map +0 -1
  474. package/dist/ir/type-converter/inference.d.ts +0 -32
  475. package/dist/ir/type-converter/inference.d.ts.map +0 -1
  476. package/dist/ir/type-converter/inference.js +0 -297
  477. package/dist/ir/type-converter/inference.js.map +0 -1
  478. package/dist/ir/type-converter/literals.d.ts.map +0 -1
  479. package/dist/ir/type-converter/literals.js.map +0 -1
  480. package/dist/ir/type-converter/objects.d.ts +0 -16
  481. package/dist/ir/type-converter/objects.d.ts.map +0 -1
  482. package/dist/ir/type-converter/objects.js.map +0 -1
  483. package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
  484. package/dist/ir/type-converter/orchestrator.js.map +0 -1
  485. package/dist/ir/type-converter/patterns.d.ts +0 -10
  486. package/dist/ir/type-converter/patterns.d.ts.map +0 -1
  487. package/dist/ir/type-converter/patterns.js.map +0 -1
  488. package/dist/ir/type-converter/primitives.d.ts.map +0 -1
  489. package/dist/ir/type-converter/primitives.js.map +0 -1
  490. package/dist/ir/type-converter/references.d.ts.map +0 -1
  491. package/dist/ir/type-converter/references.js +0 -371
  492. package/dist/ir/type-converter/references.js.map +0 -1
  493. package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
  494. package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
  495. package/dist/ir/type-converter/unions-intersections.js +0 -22
  496. package/dist/ir/type-converter/unions-intersections.js.map +0 -1
  497. package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
  498. package/dist/ir/type-converter/utility-types.js +0 -528
  499. package/dist/ir/type-converter/utility-types.js.map +0 -1
  500. package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
  501. package/dist/ir/type-converter/utility-types.test.js.map +0 -1
  502. package/dist/ir/type-converter.d.ts +0 -6
  503. package/dist/ir/type-converter.d.ts.map +0 -1
  504. package/dist/ir/type-converter.js +0 -6
  505. package/dist/ir/type-converter.js.map +0 -1
  506. /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
  507. /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
@@ -0,0 +1,535 @@
1
+ /**
2
+ * TypeRegistry - Pure IR source of truth for type declarations
3
+ *
4
+ * ALICE'S SPEC (Step 3): This registry stores IrType (pure IR), NOT ts.TypeNode.
5
+ * Types are converted at registration time, making queries deterministic.
6
+ *
7
+ * CANONICAL CLR IDENTITY: Well-known runtime types from @tsonic/globals,
8
+ * @tsonic/core, and @tsonic/dotnet are registered with canonical CLR FQ names
9
+ * (e.g., String → System.String, String$instance → System.String$instance).
10
+ *
11
+ * Part of Alice's specification for deterministic IR typing.
12
+ */
13
+ import * as ts from "typescript";
14
+ import { getNamespaceFromPath } from "../../../resolver/namespace.js";
15
+ import { GLOBALS_TO_CLR_FQ } from "./universe/alias-table.js";
16
+ // ═══════════════════════════════════════════════════════════════════════════
17
+ // CANONICAL CLR NAME HELPERS
18
+ // ═══════════════════════════════════════════════════════════════════════════
19
+ /**
20
+ * Check if a source file is from a well-known Tsonic library.
21
+ * These libraries contain runtime types that need canonical CLR FQ names.
22
+ */
23
+ const isWellKnownLibrary = (fileName) => {
24
+ return (fileName.includes("@tsonic/globals") ||
25
+ fileName.includes("@tsonic/core") ||
26
+ fileName.includes("@tsonic/dotnet"));
27
+ };
28
+ /**
29
+ * Get the canonical CLR FQ name for a type from a well-known library.
30
+ * Returns undefined if the type should use its default FQ name.
31
+ *
32
+ * Handles:
33
+ * - Global types: String → System.String, Array → System.Array
34
+ * - $instance companions: String$instance → System.String$instance
35
+ * - Core primitives: int → System.Int32, etc. (handled via type aliases)
36
+ */
37
+ const getCanonicalClrFQName = (simpleName, isFromWellKnownLib) => {
38
+ if (!isFromWellKnownLib)
39
+ return undefined;
40
+ // Check direct mapping (String, Array, Number, etc.)
41
+ const directMapping = GLOBALS_TO_CLR_FQ[simpleName];
42
+ if (directMapping)
43
+ return directMapping;
44
+ // Handle $instance companions - they map to System.X$instance
45
+ if (simpleName.endsWith("$instance")) {
46
+ const baseName = simpleName.slice(0, -9); // Remove "$instance"
47
+ const baseClrName = GLOBALS_TO_CLR_FQ[baseName];
48
+ if (baseClrName) {
49
+ return `${baseClrName}$instance`;
50
+ }
51
+ }
52
+ // Handle __X$views companions - they map to System.X$views
53
+ if (simpleName.includes("$views")) {
54
+ const baseName = simpleName.replace("__", "").replace("$views", "");
55
+ const baseClrName = GLOBALS_TO_CLR_FQ[baseName];
56
+ if (baseClrName) {
57
+ return `${baseClrName}$views`;
58
+ }
59
+ }
60
+ return undefined;
61
+ };
62
+ // ═══════════════════════════════════════════════════════════════════════════
63
+ // HELPER FUNCTIONS
64
+ // ═══════════════════════════════════════════════════════════════════════════
65
+ /**
66
+ * Extract type parameters from a declaration
67
+ */
68
+ const extractTypeParameters = (typeParams, convertType) => {
69
+ if (!typeParams)
70
+ return [];
71
+ return typeParams.map((p) => ({
72
+ name: p.name.text,
73
+ constraint: p.constraint ? convertType(p.constraint) : undefined,
74
+ defaultType: p.default ? convertType(p.default) : undefined,
75
+ }));
76
+ };
77
+ /**
78
+ * Get the name from a TypeNode (for heritage clauses)
79
+ */
80
+ const getTypeNodeName = (typeNode) => {
81
+ if (ts.isTypeReferenceNode(typeNode)) {
82
+ if (ts.isIdentifier(typeNode.typeName)) {
83
+ return typeNode.typeName.text;
84
+ }
85
+ if (ts.isQualifiedName(typeNode.typeName)) {
86
+ return typeNode.typeName.getText();
87
+ }
88
+ }
89
+ if (ts.isExpressionWithTypeArguments(typeNode)) {
90
+ if (ts.isIdentifier(typeNode.expression)) {
91
+ return typeNode.expression.text;
92
+ }
93
+ }
94
+ return undefined;
95
+ };
96
+ /**
97
+ * Resolve a heritage clause type name to the same fully-qualified form used by
98
+ * TypeRegistry entries.
99
+ *
100
+ * This is required so UnifiedUniverse can build correct stableIds for inheritance
101
+ * edges (projectName:fullyQualifiedName), enabling NominalEnv substitution through
102
+ * inheritance chains.
103
+ *
104
+ * DETERMINISTIC: Uses symbol resolution only (no ts.Type queries).
105
+ */
106
+ const resolveHeritageTypeName = (typeNode, checker, sourceRoot, rootNamespace, namespaceNamingPolicy) => {
107
+ const expr = typeNode.expression;
108
+ const symbol = (() => {
109
+ if (ts.isIdentifier(expr))
110
+ return checker.getSymbolAtLocation(expr);
111
+ if (ts.isPropertyAccessExpression(expr)) {
112
+ return checker.getSymbolAtLocation(expr.name);
113
+ }
114
+ return undefined;
115
+ })();
116
+ const resolvedSymbol = symbol && symbol.flags & ts.SymbolFlags.Alias
117
+ ? checker.getAliasedSymbol(symbol)
118
+ : symbol;
119
+ const decl = resolvedSymbol?.getDeclarations()?.[0];
120
+ const sourceFile = decl?.getSourceFile();
121
+ const simpleName = (() => {
122
+ if (decl &&
123
+ (ts.isClassDeclaration(decl) ||
124
+ ts.isInterfaceDeclaration(decl) ||
125
+ ts.isTypeAliasDeclaration(decl) ||
126
+ ts.isEnumDeclaration(decl)) &&
127
+ decl.name) {
128
+ return decl.name.text;
129
+ }
130
+ if (resolvedSymbol)
131
+ return resolvedSymbol.getName();
132
+ if (ts.isIdentifier(expr))
133
+ return expr.text;
134
+ if (ts.isPropertyAccessExpression(expr))
135
+ return expr.name.text;
136
+ return undefined;
137
+ })();
138
+ if (!simpleName)
139
+ return undefined;
140
+ // Canonicalize well-known runtime types to CLR FQ names.
141
+ const canonical = getCanonicalClrFQName(simpleName, sourceFile ? isWellKnownLibrary(sourceFile.fileName) : false);
142
+ if (canonical)
143
+ return canonical;
144
+ // Source-authored types use namespace-based FQ names.
145
+ const ns = sourceFile && !sourceFile.isDeclarationFile
146
+ ? getNamespaceFromPath(sourceFile.fileName, sourceRoot, rootNamespace, namespaceNamingPolicy)
147
+ : undefined;
148
+ return ns ? `${ns}.${simpleName}` : simpleName;
149
+ };
150
+ /**
151
+ * Extract member information from a class or interface - PURE IR version
152
+ */
153
+ const extractMembers = (members, convertType) => {
154
+ const result = new Map();
155
+ for (const member of members) {
156
+ // Constructor parameter properties (class)
157
+ // e.g., `constructor(public name: string, private password: string) {}`
158
+ if (ts.isConstructorDeclaration(member)) {
159
+ for (const param of member.parameters) {
160
+ const isParameterProperty = param.modifiers?.some((m) => m.kind === ts.SyntaxKind.PublicKeyword ||
161
+ m.kind === ts.SyntaxKind.PrivateKeyword ||
162
+ m.kind === ts.SyntaxKind.ProtectedKeyword ||
163
+ m.kind === ts.SyntaxKind.ReadonlyKeyword) ?? false;
164
+ if (!isParameterProperty)
165
+ continue;
166
+ if (!ts.isIdentifier(param.name))
167
+ continue;
168
+ const name = param.name.text;
169
+ const isOptional = !!param.questionToken || !!param.initializer;
170
+ const isReadonly = param.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ??
171
+ false;
172
+ result.set(name, {
173
+ kind: "property",
174
+ name,
175
+ type: param.type ? convertType(param.type) : undefined,
176
+ isOptional,
177
+ isReadonly,
178
+ });
179
+ }
180
+ }
181
+ // Property declarations (class)
182
+ if (ts.isPropertyDeclaration(member)) {
183
+ const name = member.name.getText();
184
+ const isOptional = member.questionToken !== undefined || member.initializer !== undefined;
185
+ const isReadonly = member.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword);
186
+ result.set(name, {
187
+ kind: "property",
188
+ name,
189
+ type: member.type ? convertType(member.type) : undefined,
190
+ isOptional,
191
+ isReadonly: isReadonly ?? false,
192
+ });
193
+ }
194
+ // Property signatures (interface)
195
+ if (ts.isPropertySignature(member)) {
196
+ const name = member.name.getText();
197
+ result.set(name, {
198
+ kind: "property",
199
+ name,
200
+ type: member.type ? convertType(member.type) : undefined,
201
+ isOptional: member.questionToken !== undefined,
202
+ isReadonly: member.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ?? false,
203
+ });
204
+ }
205
+ // Method declarations (class)
206
+ if (ts.isMethodDeclaration(member)) {
207
+ const name = member.name.getText();
208
+ const existing = result.get(name);
209
+ const newSig = convertMethodToSignature(member, convertType);
210
+ const signatures = existing?.methodSignatures
211
+ ? [...existing.methodSignatures, newSig]
212
+ : [newSig];
213
+ result.set(name, {
214
+ kind: "method",
215
+ name,
216
+ type: undefined, // Methods have signatures, not a single type
217
+ isOptional: member.questionToken !== undefined,
218
+ isReadonly: false,
219
+ methodSignatures: signatures,
220
+ });
221
+ }
222
+ // Method signatures (interface)
223
+ if (ts.isMethodSignature(member)) {
224
+ const name = member.name.getText();
225
+ const existing = result.get(name);
226
+ const newSig = convertMethodSignatureToIr(member, convertType);
227
+ const signatures = existing?.methodSignatures
228
+ ? [...existing.methodSignatures, newSig]
229
+ : [newSig];
230
+ result.set(name, {
231
+ kind: "method",
232
+ name,
233
+ type: undefined, // Methods have signatures, not a single type
234
+ isOptional: member.questionToken !== undefined,
235
+ isReadonly: false,
236
+ methodSignatures: signatures,
237
+ });
238
+ }
239
+ // Index signatures (interface)
240
+ if (ts.isIndexSignatureDeclaration(member)) {
241
+ const param = member.parameters[0];
242
+ const keyType = param?.type;
243
+ const keyName = keyType
244
+ ? ts.isTypeReferenceNode(keyType)
245
+ ? keyType.typeName.getText()
246
+ : keyType.getText()
247
+ : "unknown";
248
+ const name = `[${keyName}]`;
249
+ result.set(name, {
250
+ kind: "indexSignature",
251
+ name,
252
+ type: member.type ? convertType(member.type) : undefined,
253
+ isOptional: false,
254
+ isReadonly: member.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword) ?? false,
255
+ });
256
+ }
257
+ }
258
+ return result;
259
+ };
260
+ /**
261
+ * Extract members from an already-converted object type.
262
+ *
263
+ * This is used for object-like type aliases that expand deterministically to
264
+ * `IrObjectType` during registration (e.g., `type StatusMap = Record<...>`).
265
+ * Registering these members enables TypeSystem member lookups on aliased types.
266
+ */
267
+ const extractMembersFromAliasedObjectType = (aliased) => {
268
+ if (aliased.kind !== "objectType")
269
+ return new Map();
270
+ const result = new Map();
271
+ for (const member of aliased.members) {
272
+ if (member.kind === "propertySignature") {
273
+ result.set(member.name, {
274
+ kind: "property",
275
+ name: member.name,
276
+ type: member.type,
277
+ isOptional: member.isOptional,
278
+ isReadonly: member.isReadonly,
279
+ });
280
+ continue;
281
+ }
282
+ if (member.kind === "methodSignature") {
283
+ const existing = result.get(member.name);
284
+ const signatures = existing?.methodSignatures
285
+ ? [...existing.methodSignatures, member]
286
+ : [member];
287
+ result.set(member.name, {
288
+ kind: "method",
289
+ name: member.name,
290
+ type: undefined,
291
+ isOptional: false,
292
+ isReadonly: false,
293
+ methodSignatures: signatures,
294
+ });
295
+ continue;
296
+ }
297
+ }
298
+ return result;
299
+ };
300
+ /**
301
+ * Convert method declaration to IrMethodSignature
302
+ */
303
+ const convertMethodToSignature = (method, convertType) => ({
304
+ kind: "methodSignature",
305
+ name: method.name.getText(),
306
+ parameters: method.parameters.map((p) => ({
307
+ kind: "parameter",
308
+ pattern: {
309
+ kind: "identifierPattern",
310
+ name: ts.isIdentifier(p.name) ? p.name.text : "param",
311
+ },
312
+ type: p.type ? convertType(p.type) : undefined,
313
+ isOptional: !!p.questionToken || !!p.initializer,
314
+ isRest: !!p.dotDotDotToken,
315
+ passing: "value",
316
+ })),
317
+ returnType: method.type ? convertType(method.type) : undefined,
318
+ typeParameters: method.typeParameters?.map((tp) => ({
319
+ kind: "typeParameter",
320
+ name: tp.name.text,
321
+ constraint: tp.constraint ? convertType(tp.constraint) : undefined,
322
+ default: tp.default ? convertType(tp.default) : undefined,
323
+ })),
324
+ });
325
+ /**
326
+ * Convert method signature to IrMethodSignature
327
+ */
328
+ const convertMethodSignatureToIr = (method, convertType) => ({
329
+ kind: "methodSignature",
330
+ name: method.name.getText(),
331
+ parameters: method.parameters.map((p) => ({
332
+ kind: "parameter",
333
+ pattern: {
334
+ kind: "identifierPattern",
335
+ name: ts.isIdentifier(p.name) ? p.name.text : "param",
336
+ },
337
+ type: p.type ? convertType(p.type) : undefined,
338
+ isOptional: !!p.questionToken || !!p.initializer,
339
+ isRest: !!p.dotDotDotToken,
340
+ passing: "value",
341
+ })),
342
+ returnType: method.type ? convertType(method.type) : undefined,
343
+ typeParameters: method.typeParameters?.map((tp) => ({
344
+ kind: "typeParameter",
345
+ name: tp.name.text,
346
+ constraint: tp.constraint ? convertType(tp.constraint) : undefined,
347
+ default: tp.default ? convertType(tp.default) : undefined,
348
+ })),
349
+ });
350
+ /**
351
+ * Extract heritage clauses - PURE IR version
352
+ */
353
+ const extractHeritage = (clauses, checker, sourceRoot, rootNamespace, namespaceNamingPolicy, convertType, canonicalize) => {
354
+ if (!clauses)
355
+ return [];
356
+ const result = [];
357
+ for (const clause of clauses) {
358
+ const kind = clause.token === ts.SyntaxKind.ExtendsKeyword ? "extends" : "implements";
359
+ for (const type of clause.types) {
360
+ const resolvedName = resolveHeritageTypeName(type, checker, sourceRoot, rootNamespace, namespaceNamingPolicy);
361
+ const rawTypeName = resolvedName ?? getTypeNodeName(type);
362
+ if (rawTypeName) {
363
+ // Canonicalize the type name if a canonicalizer is provided
364
+ const typeName = canonicalize ? canonicalize(rawTypeName) : rawTypeName;
365
+ result.push({
366
+ kind,
367
+ baseType: convertType(type),
368
+ typeName,
369
+ });
370
+ }
371
+ }
372
+ }
373
+ return result;
374
+ };
375
+ // ═══════════════════════════════════════════════════════════════════════════
376
+ // BUILD FUNCTION
377
+ // ═══════════════════════════════════════════════════════════════════════════
378
+ /**
379
+ * Build a TypeRegistry from source files.
380
+ *
381
+ * @param sourceFiles Source files to scan for declarations
382
+ * @param checker TypeChecker for symbol resolution only (NOT for type inference)
383
+ * @param sourceRoot Absolute path to source root directory
384
+ * @param rootNamespace Root namespace for the project
385
+ * @param convertType Optional type converter for pure IR storage
386
+ */
387
+ export const buildTypeRegistry = (sourceFiles, checker, sourceRoot, rootNamespace, options = {}) => {
388
+ // Map from FQ name to pure IR entry
389
+ const entries = new Map();
390
+ // Map from simple name to FQ name (for reverse lookup)
391
+ const simpleNameToFQ = new Map();
392
+ // Default converter returns unknownType (used during bootstrap)
393
+ const convert = options.convertType ?? (() => ({ kind: "unknownType" }));
394
+ const namespaceNamingPolicy = options.namespaceNamingPolicy;
395
+ // Helper function to process a declaration node
396
+ const processDeclaration = (node, sf, ns) => {
397
+ // Check if this file is from a well-known Tsonic library
398
+ const isFromWellKnownLib = isWellKnownLibrary(sf.fileName);
399
+ // Canonicalize a type name to CLR FQ name if it's a well-known type
400
+ // This is used for both the type itself and its heritage references
401
+ const canonicalize = (simpleName) => {
402
+ // Check for canonical CLR name (works for both the current file and heritage refs)
403
+ // Heritage refs like String$instance should be canonicalized even if
404
+ // the current file isn't from a well-known lib (though it usually is)
405
+ const canonicalName = getCanonicalClrFQName(simpleName, true);
406
+ if (canonicalName)
407
+ return canonicalName;
408
+ return simpleName;
409
+ };
410
+ // Make FQ name - use canonical CLR FQ name for well-known types
411
+ const makeFQName = (simpleName) => {
412
+ // First check if this is a well-known type that needs canonical CLR name
413
+ const canonicalName = getCanonicalClrFQName(simpleName, isFromWellKnownLib);
414
+ if (canonicalName)
415
+ return canonicalName;
416
+ // Otherwise use namespace-based FQ name
417
+ return ns ? `${ns}.${simpleName}` : simpleName;
418
+ };
419
+ // Class declarations
420
+ if (ts.isClassDeclaration(node) && node.name) {
421
+ const simpleName = node.name.text;
422
+ const fqName = makeFQName(simpleName);
423
+ // Pure IR entry
424
+ entries.set(fqName, {
425
+ kind: "class",
426
+ name: simpleName,
427
+ fullyQualifiedName: fqName,
428
+ typeParameters: extractTypeParameters(node.typeParameters, convert),
429
+ members: extractMembers(node.members, convert),
430
+ heritage: extractHeritage(node.heritageClauses, checker, sourceRoot, rootNamespace, namespaceNamingPolicy, convert, canonicalize),
431
+ });
432
+ simpleNameToFQ.set(simpleName, fqName);
433
+ }
434
+ // Interface declarations
435
+ if (ts.isInterfaceDeclaration(node)) {
436
+ const simpleName = node.name.text;
437
+ const fqName = makeFQName(simpleName);
438
+ // Merge with existing interface (for module augmentation)
439
+ const existing = entries.get(fqName);
440
+ if (existing && existing.kind === "interface") {
441
+ // Merge members
442
+ const mergedMembers = new Map(existing.members);
443
+ for (const [memberName, memberInfo] of extractMembers(node.members, convert)) {
444
+ mergedMembers.set(memberName, memberInfo);
445
+ }
446
+ entries.set(fqName, {
447
+ ...existing,
448
+ members: mergedMembers,
449
+ heritage: [
450
+ ...existing.heritage,
451
+ ...extractHeritage(node.heritageClauses, checker, sourceRoot, rootNamespace, namespaceNamingPolicy, convert, canonicalize),
452
+ ],
453
+ });
454
+ }
455
+ else {
456
+ entries.set(fqName, {
457
+ kind: "interface",
458
+ name: simpleName,
459
+ fullyQualifiedName: fqName,
460
+ typeParameters: extractTypeParameters(node.typeParameters, convert),
461
+ members: extractMembers(node.members, convert),
462
+ heritage: extractHeritage(node.heritageClauses, checker, sourceRoot, rootNamespace, namespaceNamingPolicy, convert, canonicalize),
463
+ });
464
+ simpleNameToFQ.set(simpleName, fqName);
465
+ }
466
+ }
467
+ // Type alias declarations
468
+ if (ts.isTypeAliasDeclaration(node)) {
469
+ const simpleName = node.name.text;
470
+ const fqName = makeFQName(simpleName);
471
+ // Pure IR entry
472
+ const aliasedType = convert(node.type);
473
+ const aliasedMembers = extractMembersFromAliasedObjectType(aliasedType);
474
+ entries.set(fqName, {
475
+ kind: "typeAlias",
476
+ name: simpleName,
477
+ fullyQualifiedName: fqName,
478
+ typeParameters: extractTypeParameters(node.typeParameters, convert),
479
+ members: aliasedMembers,
480
+ heritage: [],
481
+ aliasedType,
482
+ });
483
+ simpleNameToFQ.set(simpleName, fqName);
484
+ }
485
+ // Handle 'declare global { ... }' blocks
486
+ if (ts.isModuleDeclaration(node) &&
487
+ ts.isIdentifier(node.name) &&
488
+ node.name.text === "global" &&
489
+ node.body &&
490
+ ts.isModuleBlock(node.body)) {
491
+ for (const stmt of node.body.statements) {
492
+ processDeclaration(stmt, sf, undefined);
493
+ }
494
+ }
495
+ };
496
+ for (const sourceFile of sourceFiles) {
497
+ const namespace = sourceFile.isDeclarationFile
498
+ ? undefined
499
+ : getNamespaceFromPath(sourceFile.fileName, sourceRoot, rootNamespace, namespaceNamingPolicy);
500
+ ts.forEachChild(sourceFile, (node) => {
501
+ processDeclaration(node, sourceFile, namespace);
502
+ });
503
+ }
504
+ return {
505
+ // Pure IR API
506
+ resolveNominal: (fqName) => {
507
+ return entries.get(fqName);
508
+ },
509
+ resolveBySimpleName: (simpleName) => {
510
+ const fqName = simpleNameToFQ.get(simpleName);
511
+ return fqName ? entries.get(fqName) : undefined;
512
+ },
513
+ getFQName: (simpleName) => {
514
+ return simpleNameToFQ.get(simpleName);
515
+ },
516
+ getMemberType: (fqNominal, memberName) => {
517
+ const entry = entries.get(fqNominal);
518
+ if (!entry)
519
+ return undefined;
520
+ const member = entry.members.get(memberName);
521
+ return member?.type;
522
+ },
523
+ getHeritageTypes: (fqNominal) => {
524
+ const entry = entries.get(fqNominal);
525
+ return entry?.heritage ?? [];
526
+ },
527
+ getAllTypeNames: () => {
528
+ return [...entries.keys()];
529
+ },
530
+ hasType: (fqName) => {
531
+ return entries.has(fqName);
532
+ },
533
+ };
534
+ };
535
+ //# sourceMappingURL=type-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-registry.js","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/type-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Alias Table — Maps Surface Names to Canonical TypeIds
3
+ *
4
+ * This module provides the alias table that maps TypeScript surface names
5
+ * to their canonical CLR TypeIds. This replaces the scattered type mappings
6
+ * in clr-type-mappings.ts with a unified, TypeId-based approach.
7
+ *
8
+ * INVARIANT: All surface names (primitives, globals, $instance interfaces)
9
+ * resolve to the same TypeId as their CLR counterparts.
10
+ *
11
+ * Example:
12
+ * - "string" → TypeId(System.String)
13
+ * - "String" → TypeId(System.String)
14
+ * - "System.String" → TypeId(System.String)
15
+ * - "String$instance" → TypeId(System.String)
16
+ *
17
+ * This unification is critical for Alice's TypeSystem spec:
18
+ * > "string and System.String unify to the same TypeId (stableId)"
19
+ */
20
+ import type { TypeId, AssemblyTypeCatalog } from "./types.js";
21
+ /**
22
+ * Alias table maps surface names to canonical TypeIds.
23
+ *
24
+ * This is a read-only map built once at universe construction time.
25
+ */
26
+ export type AliasTable = ReadonlyMap<string, TypeId>;
27
+ /**
28
+ * Record-based primitive type → CLR System.* mappings.
29
+ * Used for direct property access in type normalization.
30
+ *
31
+ * @deprecated Use normalizeToClrName() instead
32
+ */
33
+ export declare const PRIMITIVE_TO_CLR_FQ: Readonly<Record<string, string>>;
34
+ /**
35
+ * Record-based globals → CLR System.* mappings.
36
+ * Used for direct property access in type normalization.
37
+ *
38
+ * @deprecated Use normalizeToClrName() instead
39
+ */
40
+ export declare const GLOBALS_TO_CLR_FQ: Readonly<Record<string, string>>;
41
+ /**
42
+ * Build the alias table from a CLR catalog.
43
+ *
44
+ * For each alias, we look up the corresponding CLR type in the catalog
45
+ * and map the alias to that TypeId.
46
+ *
47
+ * @param clrCatalog - The CLR catalog containing loaded type metadata
48
+ * @returns AliasTable mapping surface names to TypeIds
49
+ */
50
+ export declare const buildAliasTable: (clrCatalog: AssemblyTypeCatalog) => AliasTable;
51
+ /**
52
+ * Resolve a type name to its canonical TypeId using the alias table.
53
+ *
54
+ * @param name - The type name to resolve (primitive, global, or CLR name)
55
+ * @param aliasTable - The alias table
56
+ * @returns The TypeId if found, undefined otherwise
57
+ */
58
+ export declare const resolveAlias: (name: string, aliasTable: AliasTable) => TypeId | undefined;
59
+ /**
60
+ * Check if a name is a known alias.
61
+ */
62
+ export declare const isKnownAlias: (name: string, aliasTable: AliasTable) => boolean;
63
+ /**
64
+ * Check if a type name is a known stdlib type (primitive, global, or System.*).
65
+ *
66
+ * This is used for fatal diagnostic stratification:
67
+ * - Missing stdlib type → fatal
68
+ * - Missing third-party type → error + unknownType
69
+ */
70
+ export declare const isStdlibTypeName: (name: string) => boolean;
71
+ /**
72
+ * Get all primitive type names.
73
+ */
74
+ export declare const getPrimitiveNames: () => readonly string[];
75
+ /**
76
+ * Get all global type names.
77
+ */
78
+ export declare const getGlobalNames: () => readonly string[];
79
+ /**
80
+ * Normalize a type name to its CLR fully-qualified name.
81
+ *
82
+ * @param typeName - Simple or already-qualified type name
83
+ * @returns CLR FQ name (e.g., "System.String") or original if no mapping exists
84
+ */
85
+ export declare const normalizeToClrName: (typeName: string) => string;
86
+ /**
87
+ * Get the $instance interface name for a CLR type.
88
+ *
89
+ * E.g., "System.String" → "String$instance", "String" → "String$instance"
90
+ */
91
+ export declare const getInstanceInterfaceName: (typeName: string) => string;
92
+ //# sourceMappingURL=alias-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias-table.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/universe/alias-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAM9D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAqErD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAC1B,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAC1B,CAAC;AAMtC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC1B,YAAY,mBAAmB,KAC9B,UA2CF,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,YAAY,UAAU,KACrB,MAAM,GAAG,SAEX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,YAAY,UAAU,KAAG,OAEnE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAM/C,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,SAAS,MAAM,EAEnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAO,SAAS,MAAM,EAEhD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAWrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,KAAG,MAS3D,CAAC"}