@tsonic/frontend 0.0.61 → 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 (466) 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 +3 -25
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/dotnet-metadata.test.js.map +1 -1
  11. package/dist/generic-function-values.d.ts +11 -0
  12. package/dist/generic-function-values.d.ts.map +1 -0
  13. package/dist/generic-function-values.js +243 -0
  14. package/dist/generic-function-values.js.map +1 -0
  15. package/dist/generic-function-values.test.d.ts +2 -0
  16. package/dist/generic-function-values.test.d.ts.map +1 -0
  17. package/dist/generic-function-values.test.js +256 -0
  18. package/dist/generic-function-values.test.js.map +1 -0
  19. package/dist/graph/extraction/imports.d.ts +5 -0
  20. package/dist/graph/extraction/imports.d.ts.map +1 -1
  21. package/dist/graph/extraction/imports.js +30 -0
  22. package/dist/graph/extraction/imports.js.map +1 -1
  23. package/dist/graph/extraction/index.d.ts +1 -1
  24. package/dist/graph/extraction/index.d.ts.map +1 -1
  25. package/dist/graph/extraction/index.js +1 -1
  26. package/dist/graph/extraction/index.js.map +1 -1
  27. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  28. package/dist/graph/extraction/orchestrator.js +16 -2
  29. package/dist/graph/extraction/orchestrator.js.map +1 -1
  30. package/dist/graph/extraction.d.ts +1 -1
  31. package/dist/graph/extraction.d.ts.map +1 -1
  32. package/dist/graph/extraction.js +1 -1
  33. package/dist/graph/extraction.js.map +1 -1
  34. package/dist/ir/binding/binding-factory.d.ts +17 -0
  35. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  36. package/dist/ir/binding/binding-factory.js +765 -0
  37. package/dist/ir/binding/binding-factory.js.map +1 -0
  38. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  39. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  40. package/dist/ir/binding/binding-helpers.js +387 -0
  41. package/dist/ir/binding/binding-helpers.js.map +1 -0
  42. package/dist/ir/binding/binding-types.d.ts +203 -0
  43. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  44. package/dist/ir/binding/binding-types.js +9 -0
  45. package/dist/ir/binding/binding-types.js.map +1 -0
  46. package/dist/ir/binding/index.d.ts +4 -151
  47. package/dist/ir/binding/index.d.ts.map +1 -1
  48. package/dist/ir/binding/index.js +3 -1124
  49. package/dist/ir/binding/index.js.map +1 -1
  50. package/dist/ir/binding-resolution.test.js +4 -1
  51. package/dist/ir/binding-resolution.test.js.map +1 -1
  52. package/dist/ir/bindings-disambiguation.test.js.map +1 -1
  53. package/dist/ir/builder/imports.d.ts.map +1 -1
  54. package/dist/ir/builder/imports.js +91 -5
  55. package/dist/ir/builder/imports.js.map +1 -1
  56. package/dist/ir/builder.test.js +456 -24
  57. package/dist/ir/builder.test.js.map +1 -1
  58. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  59. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  60. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  61. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  62. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  63. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  64. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  65. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  66. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  67. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  68. package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
  69. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  70. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  71. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  72. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  73. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  74. package/dist/ir/converters/expressions/access.d.ts +1 -7
  75. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  76. package/dist/ir/converters/expressions/access.js +1 -720
  77. package/dist/ir/converters/expressions/access.js.map +1 -1
  78. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  79. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  80. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  81. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  82. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  83. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  84. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  85. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  86. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  87. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  88. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  89. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  90. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  91. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  92. package/dist/ir/converters/expressions/calls.js +2 -953
  93. package/dist/ir/converters/expressions/calls.js.map +1 -1
  94. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  95. package/dist/ir/converters/expressions/collections.js +56 -28
  96. package/dist/ir/converters/expressions/collections.js.map +1 -1
  97. package/dist/ir/converters/expressions/functions.js +3 -3
  98. package/dist/ir/converters/expressions/functions.js.map +1 -1
  99. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  100. package/dist/ir/converters/expressions/helpers.js +1 -0
  101. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  102. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  103. package/dist/ir/converters/expressions/operators.js +1 -1
  104. package/dist/ir/converters/expressions/operators.js.map +1 -1
  105. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  106. package/dist/ir/converters/expressions/other.js +17 -2
  107. package/dist/ir/converters/expressions/other.js.map +1 -1
  108. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  109. package/dist/ir/converters/flow-narrowing.js +3 -2
  110. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  111. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  112. package/dist/ir/converters/statements/control/loops.js +8 -2
  113. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  114. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  115. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -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 +71 -23
  118. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  119. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  120. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +10 -4
  121. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  122. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  123. package/dist/ir/converters/statements/declarations/classes/override-detection.js +5 -1
  124. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  125. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  126. package/dist/ir/converters/statements/declarations/classes/properties.js +2 -1
  127. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  128. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  129. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  130. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  131. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  132. package/dist/ir/converters/statements/declarations/variables.js +290 -3
  133. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  134. package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
  135. package/dist/ir/converters/statements/helpers.js +10 -2
  136. package/dist/ir/converters/statements/helpers.js.map +1 -1
  137. package/dist/ir/converters/type-env.d.ts.map +1 -1
  138. package/dist/ir/converters/type-env.js.map +1 -1
  139. package/dist/ir/expression-converter.d.ts +0 -1
  140. package/dist/ir/expression-converter.d.ts.map +1 -1
  141. package/dist/ir/expression-converter.js +25 -4
  142. package/dist/ir/expression-converter.js.map +1 -1
  143. package/dist/ir/field-marker.test.js.map +1 -1
  144. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  145. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  146. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  147. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  148. package/dist/ir/generic-validator.d.ts +3 -4
  149. package/dist/ir/generic-validator.d.ts.map +1 -1
  150. package/dist/ir/generic-validator.js +3 -35
  151. package/dist/ir/generic-validator.js.map +1 -1
  152. package/dist/ir/program-context.d.ts +7 -0
  153. package/dist/ir/program-context.d.ts.map +1 -1
  154. package/dist/ir/program-context.js +7 -2
  155. package/dist/ir/program-context.js.map +1 -1
  156. package/dist/ir/statement-converter.d.ts +0 -2
  157. package/dist/ir/statement-converter.d.ts.map +1 -1
  158. package/dist/ir/statement-converter.js +0 -3
  159. package/dist/ir/statement-converter.js.map +1 -1
  160. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  161. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  162. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  163. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  164. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  165. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  166. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  167. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  168. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  169. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  170. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  171. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  172. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  173. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  174. package/dist/ir/type-system/internal/type-converter/orchestrator.js +318 -24
  175. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  176. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  177. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  178. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  179. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  180. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  181. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  182. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  183. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  184. package/dist/ir/type-system/internal/type-converter/references.js +172 -26
  185. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  186. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  187. package/dist/ir/type-system/internal/type-converter/utility-types.js +154 -4
  188. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  189. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  190. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  191. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  192. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  193. package/dist/ir/type-system/internal/type-registry.js +15 -11
  194. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  195. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  196. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  197. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  198. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  199. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  200. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  201. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1027
  202. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  203. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  204. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  205. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  206. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  207. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  208. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  209. package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
  210. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  211. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  212. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  213. package/dist/ir/type-system/internal/universe/index.js +1 -3
  214. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  215. package/dist/ir/type-system/internal/universe/source-catalog.js +3 -1
  216. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  217. package/dist/ir/type-system/internal/universe/types.d.ts +7 -0
  218. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -1
  219. package/dist/ir/type-system/internal/universe/types.js.map +1 -1
  220. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -1
  221. package/dist/ir/type-system/internal/universe/unified-universe.js +16 -1
  222. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -1
  223. package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts +2 -0
  224. package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts.map +1 -0
  225. package/dist/ir/type-system/internal/universe/unified-universe.test.js +89 -0
  226. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -0
  227. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  228. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  229. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  230. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  231. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  232. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  233. package/dist/ir/type-system/type-system-inference.js +1083 -0
  234. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  235. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  236. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  237. package/dist/ir/type-system/type-system-relations.js +152 -0
  238. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  239. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  240. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  241. package/dist/ir/type-system/type-system-state.js +212 -0
  242. package/dist/ir/type-system/type-system-state.js.map +1 -0
  243. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  244. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  245. package/dist/ir/type-system/type-system-utilities.js +373 -0
  246. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  247. package/dist/ir/type-system/type-system.d.ts +17 -350
  248. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  249. package/dist/ir/type-system/type-system.js +67 -2764
  250. package/dist/ir/type-system/type-system.js.map +1 -1
  251. package/dist/ir/types/index.d.ts +1 -0
  252. package/dist/ir/types/index.d.ts.map +1 -1
  253. package/dist/ir/types/index.js +1 -0
  254. package/dist/ir/types/index.js.map +1 -1
  255. package/dist/ir/types/ir-substitution.js +1 -1
  256. package/dist/ir/types/ir-substitution.js.map +1 -1
  257. package/dist/ir/types/ir-types.d.ts.map +1 -1
  258. package/dist/ir/types/module.d.ts +11 -0
  259. package/dist/ir/types/module.d.ts.map +1 -1
  260. package/dist/ir/types/statements.d.ts +1 -1
  261. package/dist/ir/types/type-ops.d.ts +9 -0
  262. package/dist/ir/types/type-ops.d.ts.map +1 -0
  263. package/dist/ir/types/type-ops.js +134 -0
  264. package/dist/ir/types/type-ops.js.map +1 -0
  265. package/dist/ir/types/type-ops.test.d.ts +2 -0
  266. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  267. package/dist/ir/types/type-ops.test.js +73 -0
  268. package/dist/ir/types/type-ops.test.js.map +1 -0
  269. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  270. package/dist/ir/validation/anonymous-type-lowering-pass.js +101 -49
  271. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  272. package/dist/ir/validation/arrow-return-finalization-pass.js +13 -3
  273. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -1
  274. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  275. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  276. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  277. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  278. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  279. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  280. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  281. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  282. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  283. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  284. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  285. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  286. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  287. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  288. package/dist/ir/validation/attribute-collection-pass.js +1 -953
  289. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  290. package/dist/ir/validation/attribute-collection-pass.test.js +42 -19
  291. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  292. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -1
  293. package/dist/ir/validation/char-validation-pass.js +6 -3
  294. package/dist/ir/validation/char-validation-pass.js.map +1 -1
  295. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  296. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  297. package/dist/ir/validation/numeric-invariants.test.js +46 -0
  298. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  299. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  300. package/dist/ir/validation/numeric-proof-pass.js +68 -1
  301. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  302. package/dist/ir/validation/rest-type-synthesis-pass.js +1 -1
  303. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -1
  304. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  305. package/dist/ir/validation/soundness-gate.js +8 -5
  306. package/dist/ir/validation/soundness-gate.js.map +1 -1
  307. package/dist/ir/validation/soundness-gate.test.js +158 -0
  308. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  309. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  310. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  311. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  312. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  313. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  314. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  315. package/dist/program/binding-loader.d.ts +37 -0
  316. package/dist/program/binding-loader.d.ts.map +1 -0
  317. package/dist/program/binding-loader.js +155 -0
  318. package/dist/program/binding-loader.js.map +1 -0
  319. package/dist/program/binding-registry.d.ts +106 -0
  320. package/dist/program/binding-registry.d.ts.map +1 -0
  321. package/dist/program/binding-registry.js +590 -0
  322. package/dist/program/binding-registry.js.map +1 -0
  323. package/dist/program/binding-types.d.ts +166 -0
  324. package/dist/program/binding-types.d.ts.map +1 -0
  325. package/dist/program/binding-types.js +57 -0
  326. package/dist/program/binding-types.js.map +1 -0
  327. package/dist/program/bindings.d.ts +6 -271
  328. package/dist/program/bindings.d.ts.map +1 -1
  329. package/dist/program/bindings.js +7 -781
  330. package/dist/program/bindings.js.map +1 -1
  331. package/dist/program/clr-bindings-discovery.d.ts +19 -0
  332. package/dist/program/clr-bindings-discovery.d.ts.map +1 -0
  333. package/dist/program/clr-bindings-discovery.js +150 -0
  334. package/dist/program/clr-bindings-discovery.js.map +1 -0
  335. package/dist/program/clr-bindings-discovery.test.d.ts +2 -0
  336. package/dist/program/clr-bindings-discovery.test.d.ts.map +1 -0
  337. package/dist/program/clr-bindings-discovery.test.js +119 -0
  338. package/dist/program/clr-bindings-discovery.test.js.map +1 -0
  339. package/dist/program/creation.d.ts.map +1 -1
  340. package/dist/program/creation.js +2 -1
  341. package/dist/program/creation.js.map +1 -1
  342. package/dist/program/creation.test.js.map +1 -1
  343. package/dist/program/dependency-graph.d.ts +2 -2
  344. package/dist/program/dependency-graph.d.ts.map +1 -1
  345. package/dist/program/dependency-graph.js +26 -42
  346. package/dist/program/dependency-graph.js.map +1 -1
  347. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  348. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  349. package/dist/resolver/clr-bindings-resolver.js +22 -30
  350. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  351. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  352. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  353. package/dist/resolver/import-resolution.d.ts +1 -1
  354. package/dist/resolver/import-resolution.d.ts.map +1 -1
  355. package/dist/resolver/import-resolution.js +2 -7
  356. package/dist/resolver/import-resolution.js.map +1 -1
  357. package/dist/resolver/namespace.d.ts.map +1 -1
  358. package/dist/resolver/namespace.js +1 -3
  359. package/dist/resolver/namespace.js.map +1 -1
  360. package/dist/resolver/naming.d.ts.map +1 -1
  361. package/dist/resolver/naming.js +1 -0
  362. package/dist/resolver/naming.js.map +1 -1
  363. package/dist/tsbindgen/names.d.ts.map +1 -1
  364. package/dist/tsbindgen/names.js +4 -2
  365. package/dist/tsbindgen/names.js.map +1 -1
  366. package/dist/types/diagnostic.d.ts +1 -1
  367. package/dist/types/diagnostic.d.ts.map +1 -1
  368. package/dist/types/diagnostic.js.map +1 -1
  369. package/dist/validation/core-intrinsics.d.ts.map +1 -1
  370. package/dist/validation/core-intrinsics.js +3 -1
  371. package/dist/validation/core-intrinsics.js.map +1 -1
  372. package/dist/validation/extension-methods.d.ts.map +1 -1
  373. package/dist/validation/extension-methods.js.map +1 -1
  374. package/dist/validation/features.d.ts.map +1 -1
  375. package/dist/validation/features.js +38 -13
  376. package/dist/validation/features.js.map +1 -1
  377. package/dist/validation/features.test.d.ts +2 -0
  378. package/dist/validation/features.test.d.ts.map +1 -0
  379. package/dist/validation/features.test.js +273 -0
  380. package/dist/validation/features.test.js.map +1 -0
  381. package/dist/validation/generics.d.ts +1 -1
  382. package/dist/validation/generics.d.ts.map +1 -1
  383. package/dist/validation/generics.js +2 -26
  384. package/dist/validation/generics.js.map +1 -1
  385. package/dist/validation/imports.d.ts.map +1 -1
  386. package/dist/validation/imports.js +2 -1
  387. package/dist/validation/imports.js.map +1 -1
  388. package/dist/validation/imports.test.d.ts +2 -0
  389. package/dist/validation/imports.test.d.ts.map +1 -0
  390. package/dist/validation/imports.test.js +112 -0
  391. package/dist/validation/imports.test.js.map +1 -0
  392. package/dist/validation/static-safety.d.ts +6 -6
  393. package/dist/validation/static-safety.d.ts.map +1 -1
  394. package/dist/validation/static-safety.js +163 -94
  395. package/dist/validation/static-safety.js.map +1 -1
  396. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  397. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  398. package/dist/validation/unsupported-utility-types.js +4 -7
  399. package/dist/validation/unsupported-utility-types.js.map +1 -1
  400. package/dist/validator.maximus.test.d.ts +2 -0
  401. package/dist/validator.maximus.test.d.ts.map +1 -0
  402. package/dist/validator.maximus.test.js +1214 -0
  403. package/dist/validator.maximus.test.js.map +1 -0
  404. package/dist/validator.test.js +152 -18
  405. package/dist/validator.test.js.map +1 -1
  406. package/package.json +1 -1
  407. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  408. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  409. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  410. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  411. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  412. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  413. package/dist/ir/this-parameter-inference.test.js +0 -165
  414. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  415. package/dist/metadata/bindings-loader.d.ts +0 -41
  416. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  417. package/dist/metadata/bindings-loader.js +0 -308
  418. package/dist/metadata/bindings-loader.js.map +0 -1
  419. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  420. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  421. package/dist/metadata/bindings-loader.test.js +0 -117
  422. package/dist/metadata/bindings-loader.test.js.map +0 -1
  423. package/dist/metadata/index.d.ts +0 -8
  424. package/dist/metadata/index.d.ts.map +0 -1
  425. package/dist/metadata/index.js +0 -7
  426. package/dist/metadata/index.js.map +0 -1
  427. package/dist/metadata/library-loader.d.ts +0 -42
  428. package/dist/metadata/library-loader.d.ts.map +0 -1
  429. package/dist/metadata/library-loader.js +0 -126
  430. package/dist/metadata/library-loader.js.map +0 -1
  431. package/dist/metadata/loader.d.ts +0 -26
  432. package/dist/metadata/loader.d.ts.map +0 -1
  433. package/dist/metadata/loader.js +0 -333
  434. package/dist/metadata/loader.js.map +0 -1
  435. package/dist/metadata/loader.test.d.ts +0 -5
  436. package/dist/metadata/loader.test.d.ts.map +0 -1
  437. package/dist/metadata/loader.test.js +0 -119
  438. package/dist/metadata/loader.test.js.map +0 -1
  439. package/dist/resolver/naming-policy.d.ts +0 -20
  440. package/dist/resolver/naming-policy.d.ts.map +0 -1
  441. package/dist/resolver/naming-policy.js +0 -40
  442. package/dist/resolver/naming-policy.js.map +0 -1
  443. package/dist/types/bindings.d.ts +0 -153
  444. package/dist/types/bindings.d.ts.map +0 -1
  445. package/dist/types/bindings.js +0 -14
  446. package/dist/types/bindings.js.map +0 -1
  447. package/dist/types/metadata.d.ts +0 -196
  448. package/dist/types/metadata.d.ts.map +0 -1
  449. package/dist/types/metadata.js +0 -10
  450. package/dist/types/metadata.js.map +0 -1
  451. package/dist/types/nested-types.d.ts +0 -111
  452. package/dist/types/nested-types.d.ts.map +0 -1
  453. package/dist/types/nested-types.js +0 -176
  454. package/dist/types/nested-types.js.map +0 -1
  455. package/dist/types/nested-types.test.d.ts +0 -5
  456. package/dist/types/nested-types.test.d.ts.map +0 -1
  457. package/dist/types/nested-types.test.js +0 -135
  458. package/dist/types/nested-types.test.js.map +0 -1
  459. package/dist/types/ref-parameters.d.ts +0 -123
  460. package/dist/types/ref-parameters.d.ts.map +0 -1
  461. package/dist/types/ref-parameters.js +0 -203
  462. package/dist/types/ref-parameters.js.map +0 -1
  463. package/dist/types/ref-parameters.test.d.ts +0 -5
  464. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  465. package/dist/types/ref-parameters.test.js +0 -147
  466. 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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"}