@tsonic/frontend 0.0.62 → 0.0.63

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 (377) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/dotnet-metadata.d.ts +0 -12
  7. package/dist/dotnet-metadata.d.ts.map +1 -1
  8. package/dist/dotnet-metadata.js +0 -24
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/generic-function-values.d.ts +11 -0
  11. package/dist/generic-function-values.d.ts.map +1 -0
  12. package/dist/generic-function-values.js +243 -0
  13. package/dist/generic-function-values.js.map +1 -0
  14. package/dist/generic-function-values.test.d.ts +2 -0
  15. package/dist/generic-function-values.test.d.ts.map +1 -0
  16. package/dist/generic-function-values.test.js +256 -0
  17. package/dist/generic-function-values.test.js.map +1 -0
  18. package/dist/graph/extraction/imports.d.ts +5 -0
  19. package/dist/graph/extraction/imports.d.ts.map +1 -1
  20. package/dist/graph/extraction/imports.js +30 -0
  21. package/dist/graph/extraction/imports.js.map +1 -1
  22. package/dist/graph/extraction/index.d.ts +1 -1
  23. package/dist/graph/extraction/index.d.ts.map +1 -1
  24. package/dist/graph/extraction/index.js +1 -1
  25. package/dist/graph/extraction/index.js.map +1 -1
  26. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  27. package/dist/graph/extraction/orchestrator.js +16 -2
  28. package/dist/graph/extraction/orchestrator.js.map +1 -1
  29. package/dist/graph/extraction.d.ts +1 -1
  30. package/dist/graph/extraction.d.ts.map +1 -1
  31. package/dist/graph/extraction.js +1 -1
  32. package/dist/graph/extraction.js.map +1 -1
  33. package/dist/ir/binding/binding-factory.d.ts +17 -0
  34. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  35. package/dist/ir/binding/binding-factory.js +765 -0
  36. package/dist/ir/binding/binding-factory.js.map +1 -0
  37. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  38. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  39. package/dist/ir/binding/binding-helpers.js +387 -0
  40. package/dist/ir/binding/binding-helpers.js.map +1 -0
  41. package/dist/ir/binding/binding-types.d.ts +203 -0
  42. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  43. package/dist/ir/binding/binding-types.js +9 -0
  44. package/dist/ir/binding/binding-types.js.map +1 -0
  45. package/dist/ir/binding/index.d.ts +4 -158
  46. package/dist/ir/binding/index.d.ts.map +1 -1
  47. package/dist/ir/binding/index.js +3 -1134
  48. package/dist/ir/binding/index.js.map +1 -1
  49. package/dist/ir/builder.test.js +223 -0
  50. package/dist/ir/builder.test.js.map +1 -1
  51. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  52. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  53. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  54. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  55. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  56. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  57. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  58. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  59. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  60. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  61. package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
  62. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  63. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  64. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  65. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  66. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  67. package/dist/ir/converters/expressions/access.d.ts +1 -7
  68. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  69. package/dist/ir/converters/expressions/access.js +1 -720
  70. package/dist/ir/converters/expressions/access.js.map +1 -1
  71. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  72. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  73. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  74. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  75. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  76. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  77. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  78. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  79. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  80. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  81. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  82. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  83. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  84. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  85. package/dist/ir/converters/expressions/calls.js +2 -1344
  86. package/dist/ir/converters/expressions/calls.js.map +1 -1
  87. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  88. package/dist/ir/converters/expressions/collections.js +37 -6
  89. package/dist/ir/converters/expressions/collections.js.map +1 -1
  90. package/dist/ir/converters/expressions/functions.js +1 -1
  91. package/dist/ir/converters/expressions/functions.js.map +1 -1
  92. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  93. package/dist/ir/converters/expressions/helpers.js +1 -0
  94. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  95. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  96. package/dist/ir/converters/expressions/other.js +3 -2
  97. package/dist/ir/converters/expressions/other.js.map +1 -1
  98. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  99. package/dist/ir/converters/flow-narrowing.js +3 -2
  100. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  101. package/dist/ir/converters/statements/declarations/classes/methods.js +1 -1
  102. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  103. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  104. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  105. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  106. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  107. package/dist/ir/converters/statements/declarations/variables.js +289 -2
  108. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  109. package/dist/ir/expression-converter.d.ts +0 -1
  110. package/dist/ir/expression-converter.d.ts.map +1 -1
  111. package/dist/ir/expression-converter.js +0 -2
  112. package/dist/ir/expression-converter.js.map +1 -1
  113. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  114. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  115. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  116. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  117. package/dist/ir/generic-validator.d.ts +3 -4
  118. package/dist/ir/generic-validator.d.ts.map +1 -1
  119. package/dist/ir/generic-validator.js +3 -35
  120. package/dist/ir/generic-validator.js.map +1 -1
  121. package/dist/ir/program-context.d.ts +7 -0
  122. package/dist/ir/program-context.d.ts.map +1 -1
  123. package/dist/ir/program-context.js +1 -0
  124. package/dist/ir/program-context.js.map +1 -1
  125. package/dist/ir/statement-converter.d.ts +0 -2
  126. package/dist/ir/statement-converter.d.ts.map +1 -1
  127. package/dist/ir/statement-converter.js +0 -3
  128. package/dist/ir/statement-converter.js.map +1 -1
  129. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  130. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  131. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  132. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  133. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  134. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  135. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  136. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  137. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  138. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  139. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  140. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  141. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  142. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  143. package/dist/ir/type-system/internal/type-converter/orchestrator.js +315 -23
  144. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  145. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  146. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  147. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  148. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  149. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  150. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  151. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  152. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  153. package/dist/ir/type-system/internal/type-converter/references.js +67 -29
  154. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  155. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  156. package/dist/ir/type-system/internal/type-converter/utility-types.js +145 -0
  157. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  158. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  159. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  160. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  161. package/dist/ir/type-system/internal/type-registry.js +7 -7
  162. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  163. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  164. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  165. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  166. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  167. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  168. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  169. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1044
  170. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  171. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  172. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  173. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  174. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  175. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  176. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  177. package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
  178. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  179. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  180. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  181. package/dist/ir/type-system/internal/universe/index.js +1 -3
  182. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  183. package/dist/ir/type-system/internal/universe/unified-universe.test.js +2 -0
  184. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  185. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  186. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  187. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  188. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  189. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  190. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  191. package/dist/ir/type-system/type-system-inference.js +1083 -0
  192. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  193. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  194. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  195. package/dist/ir/type-system/type-system-relations.js +152 -0
  196. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  197. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  198. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  199. package/dist/ir/type-system/type-system-state.js +212 -0
  200. package/dist/ir/type-system/type-system-state.js.map +1 -0
  201. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  202. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  203. package/dist/ir/type-system/type-system-utilities.js +373 -0
  204. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  205. package/dist/ir/type-system/type-system.d.ts +17 -358
  206. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  207. package/dist/ir/type-system/type-system.js +67 -2945
  208. package/dist/ir/type-system/type-system.js.map +1 -1
  209. package/dist/ir/types/index.d.ts +1 -0
  210. package/dist/ir/types/index.d.ts.map +1 -1
  211. package/dist/ir/types/index.js +1 -0
  212. package/dist/ir/types/index.js.map +1 -1
  213. package/dist/ir/types/ir-substitution.js +1 -1
  214. package/dist/ir/types/ir-substitution.js.map +1 -1
  215. package/dist/ir/types/statements.d.ts +1 -1
  216. package/dist/ir/types/type-ops.d.ts +9 -0
  217. package/dist/ir/types/type-ops.d.ts.map +1 -0
  218. package/dist/ir/types/type-ops.js +134 -0
  219. package/dist/ir/types/type-ops.js.map +1 -0
  220. package/dist/ir/types/type-ops.test.d.ts +2 -0
  221. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  222. package/dist/ir/types/type-ops.test.js +73 -0
  223. package/dist/ir/types/type-ops.test.js.map +1 -0
  224. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  225. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  226. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  227. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  228. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  229. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  230. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  231. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  232. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  233. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  234. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  235. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  236. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  237. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  238. package/dist/ir/validation/attribute-collection-pass.js +1 -961
  239. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  240. package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
  241. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  242. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  243. package/dist/ir/validation/soundness-gate.js +2 -1
  244. package/dist/ir/validation/soundness-gate.js.map +1 -1
  245. package/dist/ir/validation/soundness-gate.test.js +69 -0
  246. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  247. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  248. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  249. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  250. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  251. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  252. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  253. package/dist/program/binding-loader.d.ts +37 -0
  254. package/dist/program/binding-loader.d.ts.map +1 -0
  255. package/dist/program/binding-loader.js +155 -0
  256. package/dist/program/binding-loader.js.map +1 -0
  257. package/dist/program/binding-registry.d.ts +106 -0
  258. package/dist/program/binding-registry.d.ts.map +1 -0
  259. package/dist/program/binding-registry.js +590 -0
  260. package/dist/program/binding-registry.js.map +1 -0
  261. package/dist/program/binding-types.d.ts +166 -0
  262. package/dist/program/binding-types.d.ts.map +1 -0
  263. package/dist/program/binding-types.js +57 -0
  264. package/dist/program/binding-types.js.map +1 -0
  265. package/dist/program/bindings.d.ts +6 -271
  266. package/dist/program/bindings.d.ts.map +1 -1
  267. package/dist/program/bindings.js +7 -781
  268. package/dist/program/bindings.js.map +1 -1
  269. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  270. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  271. package/dist/resolver/clr-bindings-resolver.js +22 -32
  272. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  273. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  274. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  275. package/dist/resolver/import-resolution.d.ts +1 -1
  276. package/dist/resolver/import-resolution.d.ts.map +1 -1
  277. package/dist/resolver/import-resolution.js +2 -7
  278. package/dist/resolver/import-resolution.js.map +1 -1
  279. package/dist/resolver/naming.d.ts.map +1 -1
  280. package/dist/resolver/naming.js +1 -0
  281. package/dist/resolver/naming.js.map +1 -1
  282. package/dist/types/diagnostic.d.ts +1 -1
  283. package/dist/types/diagnostic.d.ts.map +1 -1
  284. package/dist/types/diagnostic.js.map +1 -1
  285. package/dist/validation/features.d.ts.map +1 -1
  286. package/dist/validation/features.js +38 -13
  287. package/dist/validation/features.js.map +1 -1
  288. package/dist/validation/features.test.d.ts +2 -0
  289. package/dist/validation/features.test.d.ts.map +1 -0
  290. package/dist/validation/features.test.js +273 -0
  291. package/dist/validation/features.test.js.map +1 -0
  292. package/dist/validation/generics.d.ts +1 -1
  293. package/dist/validation/generics.d.ts.map +1 -1
  294. package/dist/validation/generics.js +2 -26
  295. package/dist/validation/generics.js.map +1 -1
  296. package/dist/validation/imports.d.ts.map +1 -1
  297. package/dist/validation/imports.js +2 -1
  298. package/dist/validation/imports.js.map +1 -1
  299. package/dist/validation/imports.test.d.ts +2 -0
  300. package/dist/validation/imports.test.d.ts.map +1 -0
  301. package/dist/validation/imports.test.js +112 -0
  302. package/dist/validation/imports.test.js.map +1 -0
  303. package/dist/validation/static-safety.d.ts +6 -6
  304. package/dist/validation/static-safety.d.ts.map +1 -1
  305. package/dist/validation/static-safety.js +163 -109
  306. package/dist/validation/static-safety.js.map +1 -1
  307. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  308. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  309. package/dist/validation/unsupported-utility-types.js +4 -7
  310. package/dist/validation/unsupported-utility-types.js.map +1 -1
  311. package/dist/validator.maximus.test.d.ts +2 -0
  312. package/dist/validator.maximus.test.d.ts.map +1 -0
  313. package/dist/validator.maximus.test.js +1214 -0
  314. package/dist/validator.maximus.test.js.map +1 -0
  315. package/dist/validator.test.js +152 -18
  316. package/dist/validator.test.js.map +1 -1
  317. package/package.json +1 -1
  318. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  319. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  320. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  321. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  322. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  323. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  324. package/dist/ir/this-parameter-inference.test.js +0 -165
  325. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  326. package/dist/metadata/bindings-loader.d.ts +0 -41
  327. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  328. package/dist/metadata/bindings-loader.js +0 -308
  329. package/dist/metadata/bindings-loader.js.map +0 -1
  330. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  331. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  332. package/dist/metadata/bindings-loader.test.js +0 -117
  333. package/dist/metadata/bindings-loader.test.js.map +0 -1
  334. package/dist/metadata/index.d.ts +0 -8
  335. package/dist/metadata/index.d.ts.map +0 -1
  336. package/dist/metadata/index.js +0 -7
  337. package/dist/metadata/index.js.map +0 -1
  338. package/dist/metadata/library-loader.d.ts +0 -42
  339. package/dist/metadata/library-loader.d.ts.map +0 -1
  340. package/dist/metadata/library-loader.js +0 -126
  341. package/dist/metadata/library-loader.js.map +0 -1
  342. package/dist/metadata/loader.d.ts +0 -26
  343. package/dist/metadata/loader.d.ts.map +0 -1
  344. package/dist/metadata/loader.js +0 -333
  345. package/dist/metadata/loader.js.map +0 -1
  346. package/dist/metadata/loader.test.d.ts +0 -5
  347. package/dist/metadata/loader.test.d.ts.map +0 -1
  348. package/dist/metadata/loader.test.js +0 -119
  349. package/dist/metadata/loader.test.js.map +0 -1
  350. package/dist/resolver/naming-policy.d.ts +0 -20
  351. package/dist/resolver/naming-policy.d.ts.map +0 -1
  352. package/dist/resolver/naming-policy.js +0 -40
  353. package/dist/resolver/naming-policy.js.map +0 -1
  354. package/dist/types/bindings.d.ts +0 -153
  355. package/dist/types/bindings.d.ts.map +0 -1
  356. package/dist/types/bindings.js +0 -14
  357. package/dist/types/bindings.js.map +0 -1
  358. package/dist/types/metadata.d.ts +0 -196
  359. package/dist/types/metadata.d.ts.map +0 -1
  360. package/dist/types/metadata.js +0 -10
  361. package/dist/types/metadata.js.map +0 -1
  362. package/dist/types/nested-types.d.ts +0 -111
  363. package/dist/types/nested-types.d.ts.map +0 -1
  364. package/dist/types/nested-types.js +0 -176
  365. package/dist/types/nested-types.js.map +0 -1
  366. package/dist/types/nested-types.test.d.ts +0 -5
  367. package/dist/types/nested-types.test.d.ts.map +0 -1
  368. package/dist/types/nested-types.test.js +0 -135
  369. package/dist/types/nested-types.test.js.map +0 -1
  370. package/dist/types/ref-parameters.d.ts +0 -123
  371. package/dist/types/ref-parameters.d.ts.map +0 -1
  372. package/dist/types/ref-parameters.js +0 -203
  373. package/dist/types/ref-parameters.js.map +0 -1
  374. package/dist/types/ref-parameters.test.d.ts +0 -5
  375. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  376. package/dist/types/ref-parameters.test.js +0 -147
  377. package/dist/types/ref-parameters.test.js.map +0 -1
@@ -0,0 +1,56 @@
1
+ /**
2
+ * TypeSystem Utilities — Utility Type Expansion
3
+ *
4
+ * Implements all 13 TypeScript utility types with deterministic constraints.
5
+ *
6
+ * DAG position: depends on type-system-state + type-system-relations
7
+ */
8
+ import type { IrType, IrInterfaceMember, IrReferenceType } from "../types/index.js";
9
+ import type { UtilityTypeName } from "./types.js";
10
+ import type { TypeSystemState, Site } from "./type-system-state.js";
11
+ export declare const expandUtility: (state: TypeSystemState, name: UtilityTypeName, args: readonly IrType[], site?: Site) => IrType;
12
+ /**
13
+ * Expand NonNullable<T>: Filter out null and undefined from union
14
+ */
15
+ export declare const expandNonNullableUtility: (type: IrType) => IrType;
16
+ /**
17
+ * Expand Partial/Required/Readonly<T>: Mapped type transformation
18
+ */
19
+ export declare const expandMappedUtility: (state: TypeSystemState, type: IrType, mode: "optional" | "required" | "readonly", site?: Site) => IrType;
20
+ /**
21
+ * Transform members for Partial/Required/Readonly
22
+ */
23
+ export declare const transformMembers: (members: readonly IrInterfaceMember[], mode: "optional" | "required" | "readonly") => IrInterfaceMember[];
24
+ /**
25
+ * Get structural members for a reference type
26
+ */
27
+ export declare const getStructuralMembersForType: (state: TypeSystemState, type: IrReferenceType) => readonly IrInterfaceMember[];
28
+ /**
29
+ * Expand Pick/Omit<T, K>: Filter members by keys
30
+ */
31
+ export declare const expandPickOmitUtility: (state: TypeSystemState, type: IrType, keysType: IrType, isPick: boolean, site?: Site) => IrType;
32
+ /**
33
+ * Extract literal keys from a type (string literals or union of string literals)
34
+ */
35
+ export declare const extractLiteralKeys: (type: IrType) => Set<string> | null;
36
+ /**
37
+ * Expand ReturnType<F>: Extract return type from function type
38
+ */
39
+ export declare const expandReturnTypeUtility: (state: TypeSystemState, type: IrType, site?: Site) => IrType;
40
+ /**
41
+ * Expand Parameters<F>: Extract parameters as tuple from function type
42
+ */
43
+ export declare const expandParametersUtility: (state: TypeSystemState, type: IrType, site?: Site) => IrType;
44
+ /**
45
+ * Expand Exclude<T, U> or Extract<T, U>
46
+ */
47
+ export declare const expandExcludeExtractUtility: (tType: IrType, uType: IrType, isExtract: boolean) => IrType;
48
+ /**
49
+ * Expand Awaited<T>: Recursively unwrap Promise/Task/ValueTask.
50
+ */
51
+ export declare const expandAwaitedUtility: (type: IrType) => IrType;
52
+ /**
53
+ * Expand Record<K, V>: Create dictionary or object type.
54
+ */
55
+ export declare const expandRecordUtility: (state: TypeSystemState, keyArg: IrType, valueArg: IrType, site?: Site) => IrType;
56
+ //# sourceMappingURL=type-system-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-system-utilities.d.ts","sourceRoot":"","sources":["../../../src/ir/type-system/type-system-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EAEjB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAiBpE,eAAO,MAAM,aAAa,GACxB,OAAO,eAAe,EACtB,MAAM,eAAe,EACrB,MAAM,SAAS,MAAM,EAAE,EACvB,OAAO,IAAI,KACV,MA2HF,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,MAqBvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,EAC1C,OAAO,IAAI,KACV,MAmCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,SAAS,iBAAiB,EAAE,EACrC,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,KACzC,iBAAiB,EAgBnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,eAAe,EACtB,MAAM,eAAe,KACpB,SAAS,iBAAiB,EAyB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,QAAQ,OAAO,EACf,OAAO,IAAI,KACV,MAoCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAoB/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,OAAO,IAAI,KACV,MAWF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,MAAM,MAAM,EACZ,OAAO,IAAI,KACV,MAcF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,OAAO,MAAM,EACb,WAAW,OAAO,KACjB,MAwBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,MAyCnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,eAAe,EACtB,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,OAAO,IAAI,KACV,MAkCF,CAAC"}
@@ -0,0 +1,373 @@
1
+ /**
2
+ * TypeSystem Utilities — Utility Type Expansion
3
+ *
4
+ * Implements all 13 TypeScript utility types with deterministic constraints.
5
+ *
6
+ * DAG position: depends on type-system-state + type-system-relations
7
+ */
8
+ import { unknownType, neverType, voidType } from "./types.js";
9
+ import { emitDiagnostic, isNullishPrimitive } from "./type-system-state.js";
10
+ import { typesEqual, containsTypeParameter } from "./type-system-relations.js";
11
+ // ─────────────────────────────────────────────────────────────────────────
12
+ // expandUtility — Utility type expansion (Step 8)
13
+ //
14
+ // Implements all 13 utility types with deterministic constraints:
15
+ // - Partial/Required/Readonly: T must be object-like
16
+ // - Pick/Omit: K must be string literal union (finite keys)
17
+ // - ReturnType/Parameters: F must be function type
18
+ // - NonNullable: Works on any type
19
+ // - Exclude/Extract: Works on any types
20
+ // - Awaited: Recursive on Promise<T>, Task<T>, ValueTask<T>
21
+ // - Record: K must be finite literal union (string/number infinite → dictionary)
22
+ // ─────────────────────────────────────────────────────────────────────────
23
+ export const expandUtility = (state, name, args, site) => {
24
+ const firstArg = args[0];
25
+ if (!firstArg) {
26
+ emitDiagnostic(state, "TSN7414", `Utility type '${name}' requires a type argument`, site);
27
+ return unknownType;
28
+ }
29
+ // For utility types that operate on T where T is a type parameter,
30
+ // return a reference type that preserves the utility type structure.
31
+ // This allows downstream substitution to expand it later.
32
+ if (containsTypeParameter(firstArg)) {
33
+ // NonNullable, Exclude, Extract, Awaited can still partially evaluate
34
+ if (name !== "NonNullable" &&
35
+ name !== "Exclude" &&
36
+ name !== "Extract" &&
37
+ name !== "Awaited") {
38
+ return {
39
+ kind: "referenceType",
40
+ name,
41
+ typeArguments: [...args],
42
+ };
43
+ }
44
+ }
45
+ switch (name) {
46
+ case "Partial":
47
+ return expandMappedUtility(state, firstArg, "optional", site);
48
+ case "Required":
49
+ return expandMappedUtility(state, firstArg, "required", site);
50
+ case "Readonly":
51
+ return expandMappedUtility(state, firstArg, "readonly", site);
52
+ case "Pick": {
53
+ const keysArg = args[1];
54
+ if (!keysArg) {
55
+ emitDiagnostic(state, "TSN7414", "Pick requires two type arguments", site);
56
+ return unknownType;
57
+ }
58
+ return expandPickOmitUtility(state, firstArg, keysArg, true, site);
59
+ }
60
+ case "Omit": {
61
+ const keysArg = args[1];
62
+ if (!keysArg) {
63
+ emitDiagnostic(state, "TSN7414", "Omit requires two type arguments", site);
64
+ return unknownType;
65
+ }
66
+ return expandPickOmitUtility(state, firstArg, keysArg, false, site);
67
+ }
68
+ case "Record": {
69
+ const valueArg = args[1];
70
+ if (!valueArg) {
71
+ emitDiagnostic(state, "TSN7414", "Record requires two type arguments", site);
72
+ return unknownType;
73
+ }
74
+ return expandRecordUtility(state, firstArg, valueArg, site);
75
+ }
76
+ case "Exclude": {
77
+ const uArg = args[1];
78
+ if (!uArg) {
79
+ emitDiagnostic(state, "TSN7414", "Exclude requires two type arguments", site);
80
+ return unknownType;
81
+ }
82
+ return expandExcludeExtractUtility(firstArg, uArg, false);
83
+ }
84
+ case "Extract": {
85
+ const uArg = args[1];
86
+ if (!uArg) {
87
+ emitDiagnostic(state, "TSN7414", "Extract requires two type arguments", site);
88
+ return unknownType;
89
+ }
90
+ return expandExcludeExtractUtility(firstArg, uArg, true);
91
+ }
92
+ case "NonNullable":
93
+ return expandNonNullableUtility(firstArg);
94
+ case "ReturnType":
95
+ return expandReturnTypeUtility(state, firstArg, site);
96
+ case "Parameters":
97
+ return expandParametersUtility(state, firstArg, site);
98
+ case "Awaited":
99
+ return expandAwaitedUtility(firstArg);
100
+ case "InstanceType":
101
+ // InstanceType<T> - not fully supported yet, return as-is
102
+ return firstArg;
103
+ default:
104
+ emitDiagnostic(state, "TSN7414", `Unsupported utility type '${name}'`, site);
105
+ return unknownType;
106
+ }
107
+ };
108
+ // ─────────────────────────────────────────────────────────────────────────
109
+ // Utility Type Helper Functions
110
+ // ─────────────────────────────────────────────────────────────────────────
111
+ /**
112
+ * Expand NonNullable<T>: Filter out null and undefined from union
113
+ */
114
+ export const expandNonNullableUtility = (type) => {
115
+ // Direct null/undefined
116
+ if (isNullishPrimitive(type)) {
117
+ return neverType;
118
+ }
119
+ // Not a union - return as-is
120
+ if (type.kind !== "unionType") {
121
+ return type;
122
+ }
123
+ // Filter out null and undefined from union
124
+ const filtered = type.types.filter((t) => !isNullishPrimitive(t));
125
+ if (filtered.length === 0) {
126
+ return neverType;
127
+ }
128
+ if (filtered.length === 1 && filtered[0]) {
129
+ return filtered[0];
130
+ }
131
+ return { kind: "unionType", types: filtered };
132
+ };
133
+ /**
134
+ * Expand Partial/Required/Readonly<T>: Mapped type transformation
135
+ */
136
+ export const expandMappedUtility = (state, type, mode, site) => {
137
+ // Must be object-like
138
+ if (type.kind !== "objectType") {
139
+ // For reference types, we need structural members
140
+ if (type.kind === "referenceType") {
141
+ // Try to get structural members from type
142
+ const members = getStructuralMembersForType(state, type);
143
+ if (members.length === 0) {
144
+ emitDiagnostic(state, "TSN7414", `${mode === "optional" ? "Partial" : mode === "required" ? "Required" : "Readonly"} requires a concrete object type`, site);
145
+ return unknownType;
146
+ }
147
+ // Transform the members
148
+ return {
149
+ kind: "objectType",
150
+ members: transformMembers(members, mode),
151
+ };
152
+ }
153
+ emitDiagnostic(state, "TSN7414", `${mode === "optional" ? "Partial" : mode === "required" ? "Required" : "Readonly"} requires an object type`, site);
154
+ return unknownType;
155
+ }
156
+ return {
157
+ kind: "objectType",
158
+ members: transformMembers(type.members, mode),
159
+ };
160
+ };
161
+ /**
162
+ * Transform members for Partial/Required/Readonly
163
+ */
164
+ export const transformMembers = (members, mode) => {
165
+ return members.map((m) => {
166
+ if (m.kind === "propertySignature") {
167
+ return {
168
+ ...m,
169
+ isOptional: mode === "optional"
170
+ ? true
171
+ : mode === "required"
172
+ ? false
173
+ : m.isOptional,
174
+ isReadonly: mode === "readonly" ? true : m.isReadonly,
175
+ };
176
+ }
177
+ return m;
178
+ });
179
+ };
180
+ /**
181
+ * Get structural members for a reference type
182
+ */
183
+ export const getStructuralMembersForType = (state, type) => {
184
+ if (type.structuralMembers) {
185
+ return type.structuralMembers;
186
+ }
187
+ // Try to look up in registry
188
+ const fqName = state.typeRegistry.getFQName(type.name);
189
+ const entry = fqName
190
+ ? state.typeRegistry.resolveNominal(fqName)
191
+ : state.typeRegistry.resolveBySimpleName(type.name);
192
+ if (!entry)
193
+ return [];
194
+ // Convert registry members to IR members
195
+ const members = [];
196
+ entry.members.forEach((info, name) => {
197
+ if (info.kind === "property" && info.type) {
198
+ members.push({
199
+ kind: "propertySignature",
200
+ name,
201
+ type: info.type,
202
+ isOptional: info.isOptional,
203
+ isReadonly: info.isReadonly,
204
+ });
205
+ }
206
+ });
207
+ return members;
208
+ };
209
+ /**
210
+ * Expand Pick/Omit<T, K>: Filter members by keys
211
+ */
212
+ export const expandPickOmitUtility = (state, type, keysType, isPick, site) => {
213
+ // Extract literal keys from keysType
214
+ const keys = extractLiteralKeys(keysType);
215
+ if (keys === null) {
216
+ emitDiagnostic(state, "TSN7414", `${isPick ? "Pick" : "Omit"} requires literal string keys`, site);
217
+ return unknownType;
218
+ }
219
+ // Get members from type
220
+ let members;
221
+ if (type.kind === "objectType") {
222
+ members = type.members;
223
+ }
224
+ else if (type.kind === "referenceType") {
225
+ members = getStructuralMembersForType(state, type);
226
+ }
227
+ else {
228
+ emitDiagnostic(state, "TSN7414", `${isPick ? "Pick" : "Omit"} requires an object type`, site);
229
+ return unknownType;
230
+ }
231
+ // Filter members
232
+ const filtered = members.filter((m) => {
233
+ const include = isPick ? keys.has(m.name) : !keys.has(m.name);
234
+ return include;
235
+ });
236
+ return { kind: "objectType", members: filtered };
237
+ };
238
+ /**
239
+ * Extract literal keys from a type (string literals or union of string literals)
240
+ */
241
+ export const extractLiteralKeys = (type) => {
242
+ if (type.kind === "literalType" && typeof type.value === "string") {
243
+ return new Set([type.value]);
244
+ }
245
+ if (type.kind === "unionType") {
246
+ const keys = new Set();
247
+ for (const t of type.types) {
248
+ if (t.kind === "literalType" && typeof t.value === "string") {
249
+ keys.add(t.value);
250
+ }
251
+ else if (t.kind === "literalType" && typeof t.value === "number") {
252
+ keys.add(String(t.value));
253
+ }
254
+ else {
255
+ return null; // Non-literal in union
256
+ }
257
+ }
258
+ return keys;
259
+ }
260
+ return null;
261
+ };
262
+ /**
263
+ * Expand ReturnType<F>: Extract return type from function type
264
+ */
265
+ export const expandReturnTypeUtility = (state, type, site) => {
266
+ if (type.kind === "functionType") {
267
+ return type.returnType ?? voidType;
268
+ }
269
+ emitDiagnostic(state, "TSN7414", `ReturnType requires a function type argument`, site);
270
+ return unknownType;
271
+ };
272
+ /**
273
+ * Expand Parameters<F>: Extract parameters as tuple from function type
274
+ */
275
+ export const expandParametersUtility = (state, type, site) => {
276
+ if (type.kind === "functionType") {
277
+ const elementTypes = type.parameters.map((p) => p.type ?? { kind: "anyType" });
278
+ return { kind: "tupleType", elementTypes };
279
+ }
280
+ emitDiagnostic(state, "TSN7414", `Parameters requires a function type argument`, site);
281
+ return unknownType;
282
+ };
283
+ /**
284
+ * Expand Exclude<T, U> or Extract<T, U>
285
+ */
286
+ export const expandExcludeExtractUtility = (tType, uType, isExtract) => {
287
+ // If T is not a union, check if it matches U
288
+ if (tType.kind !== "unionType") {
289
+ const matches = typesEqual(tType, uType) ||
290
+ (uType.kind === "unionType" &&
291
+ uType.types.some((u) => typesEqual(tType, u)));
292
+ if (isExtract) {
293
+ return matches ? tType : neverType;
294
+ }
295
+ else {
296
+ return matches ? neverType : tType;
297
+ }
298
+ }
299
+ // T is a union - filter its constituents
300
+ const uTypes = uType.kind === "unionType" ? uType.types : [uType];
301
+ const filtered = tType.types.filter((t) => {
302
+ const matches = uTypes.some((u) => typesEqual(t, u));
303
+ return isExtract ? matches : !matches;
304
+ });
305
+ if (filtered.length === 0)
306
+ return neverType;
307
+ if (filtered.length === 1 && filtered[0])
308
+ return filtered[0];
309
+ return { kind: "unionType", types: filtered };
310
+ };
311
+ /**
312
+ * Expand Awaited<T>: Recursively unwrap Promise/Task/ValueTask.
313
+ */
314
+ export const expandAwaitedUtility = (type) => {
315
+ // Direct Promise<T>
316
+ if (type.kind === "referenceType") {
317
+ if ((type.name === "Promise" || type.name === "PromiseLike") &&
318
+ (type.typeArguments?.length ?? 0) === 1) {
319
+ const inner = type.typeArguments?.[0];
320
+ return inner ? expandAwaitedUtility(inner) : type;
321
+ }
322
+ // CLR async types
323
+ const clrName = type.typeId?.clrName;
324
+ // Non-generic Task/ValueTask → void
325
+ if (clrName === "System.Threading.Tasks.Task" ||
326
+ clrName === "System.Threading.Tasks.ValueTask") {
327
+ if (!type.typeArguments || type.typeArguments.length === 0) {
328
+ return voidType;
329
+ }
330
+ }
331
+ // Generic Task<T>/ValueTask<T>
332
+ if (clrName?.startsWith("System.Threading.Tasks.Task`") ||
333
+ clrName?.startsWith("System.Threading.Tasks.ValueTask`")) {
334
+ const inner = type.typeArguments?.[0];
335
+ return inner ? expandAwaitedUtility(inner) : type;
336
+ }
337
+ }
338
+ // Union: Awaited each member
339
+ if (type.kind === "unionType") {
340
+ const expanded = type.types.map(expandAwaitedUtility);
341
+ return { kind: "unionType", types: expanded };
342
+ }
343
+ return type;
344
+ };
345
+ /**
346
+ * Expand Record<K, V>: Create dictionary or object type.
347
+ */
348
+ export const expandRecordUtility = (state, keyArg, valueArg, site) => {
349
+ // string or number → dictionary type
350
+ if (keyArg.kind === "primitiveType" &&
351
+ (keyArg.name === "string" || keyArg.name === "number")) {
352
+ return {
353
+ kind: "dictionaryType",
354
+ keyType: keyArg,
355
+ valueType: valueArg,
356
+ };
357
+ }
358
+ // Finite literal union → object type
359
+ const keys = extractLiteralKeys(keyArg);
360
+ if (!keys) {
361
+ emitDiagnostic(state, "TSN7414", "Record key type must be string, number, or string literal union", site);
362
+ return unknownType;
363
+ }
364
+ const members = Array.from(keys).map((key) => ({
365
+ kind: "propertySignature",
366
+ name: key,
367
+ type: valueArg,
368
+ isOptional: false,
369
+ isReadonly: false,
370
+ }));
371
+ return { kind: "objectType", members };
372
+ };
373
+ //# sourceMappingURL=type-system-utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-system-utilities.js","sourceRoot":"","sources":["../../../src/ir/type-system/type-system-utilities.ts"],"names":[],"mappings":"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"}