@tsonic/frontend 0.0.74 → 0.0.75

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 (1782) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core-intrinsics/provenance.d.ts +7 -0
  3. package/dist/core-intrinsics/provenance.d.ts.map +1 -1
  4. package/dist/core-intrinsics/provenance.js +27 -4
  5. package/dist/core-intrinsics/provenance.js.map +1 -1
  6. package/dist/graph/extraction/imports.d.ts.map +1 -1
  7. package/dist/graph/extraction/imports.js +2 -0
  8. package/dist/graph/extraction/imports.js.map +1 -1
  9. package/dist/ir/binding/binding-call-resolution-calls.d.ts +11 -0
  10. package/dist/ir/binding/binding-call-resolution-calls.d.ts.map +1 -0
  11. package/dist/ir/binding/binding-call-resolution-calls.js +974 -0
  12. package/dist/ir/binding/binding-call-resolution-calls.js.map +1 -0
  13. package/dist/ir/binding/binding-call-resolution-candidates.d.ts +15 -0
  14. package/dist/ir/binding/binding-call-resolution-candidates.d.ts.map +1 -0
  15. package/dist/ir/binding/binding-call-resolution-candidates.js +178 -0
  16. package/dist/ir/binding/binding-call-resolution-candidates.js.map +1 -0
  17. package/dist/ir/binding/binding-call-resolution.d.ts +11 -0
  18. package/dist/ir/binding/binding-call-resolution.d.ts.map +1 -0
  19. package/dist/ir/binding/binding-call-resolution.js +11 -0
  20. package/dist/ir/binding/binding-call-resolution.js.map +1 -0
  21. package/dist/ir/binding/binding-factory.d.ts +7 -4
  22. package/dist/ir/binding/binding-factory.d.ts.map +1 -1
  23. package/dist/ir/binding/binding-factory.js +44 -829
  24. package/dist/ir/binding/binding-factory.js.map +1 -1
  25. package/dist/ir/binding/binding-helpers.d.ts +1 -0
  26. package/dist/ir/binding/binding-helpers.d.ts.map +1 -1
  27. package/dist/ir/binding/binding-helpers.js +37 -14
  28. package/dist/ir/binding/binding-helpers.js.map +1 -1
  29. package/dist/ir/binding/binding-registry.d.ts +52 -0
  30. package/dist/ir/binding/binding-registry.d.ts.map +1 -0
  31. package/dist/ir/binding/binding-registry.js +582 -0
  32. package/dist/ir/binding/binding-registry.js.map +1 -0
  33. package/dist/ir/binding/binding-types.d.ts +2 -0
  34. package/dist/ir/binding/binding-types.d.ts.map +1 -1
  35. package/dist/ir/binding-resolution-cases/extension-method-binding.test.d.ts +7 -0
  36. package/dist/ir/binding-resolution-cases/extension-method-binding.test.d.ts.map +1 -0
  37. package/dist/ir/binding-resolution-cases/extension-method-binding.test.js +463 -0
  38. package/dist/ir/binding-resolution-cases/extension-method-binding.test.js.map +1 -0
  39. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.d.ts +6 -0
  40. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.d.ts.map +1 -0
  41. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.js +252 -0
  42. package/dist/ir/binding-resolution-cases/extension-method-owner-resolution.test.js.map +1 -0
  43. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.d.ts +6 -0
  44. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.d.ts.map +1 -0
  45. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.js +369 -0
  46. package/dist/ir/binding-resolution-cases/extension-method-tsbindgen-modifiers.test.js.map +1 -0
  47. package/dist/ir/binding-resolution-cases/extract-type-name.test.d.ts +5 -0
  48. package/dist/ir/binding-resolution-cases/extract-type-name.test.d.ts.map +1 -0
  49. package/dist/ir/binding-resolution-cases/extract-type-name.test.js +57 -0
  50. package/dist/ir/binding-resolution-cases/extract-type-name.test.js.map +1 -0
  51. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.d.ts +5 -0
  52. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.d.ts.map +1 -0
  53. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.js +323 -0
  54. package/dist/ir/binding-resolution-cases/global-binding-preferences.test.js.map +1 -0
  55. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.d.ts +5 -0
  56. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.d.ts.map +1 -0
  57. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.js +1057 -0
  58. package/dist/ir/binding-resolution-cases/global-identifier-resolution.test.js.map +1 -0
  59. package/dist/ir/binding-resolution-cases/helpers.d.ts +38 -0
  60. package/dist/ir/binding-resolution-cases/helpers.d.ts.map +1 -0
  61. package/dist/ir/binding-resolution-cases/helpers.js +59 -0
  62. package/dist/ir/binding-resolution-cases/helpers.js.map +1 -0
  63. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.d.ts +5 -0
  64. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.d.ts.map +1 -0
  65. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.js +259 -0
  66. package/dist/ir/binding-resolution-cases/hierarchical-binding-resolution.test.js.map +1 -0
  67. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.d.ts +2 -0
  68. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.d.ts.map +1 -0
  69. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.js +566 -0
  70. package/dist/ir/binding-resolution-cases/imported-globals-shadowing.test.js.map +1 -0
  71. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.d.ts +5 -0
  72. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.d.ts.map +1 -0
  73. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.js +186 -0
  74. package/dist/ir/binding-resolution-cases/js-array-member-binding.test.js.map +1 -0
  75. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.d.ts +6 -0
  76. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.d.ts.map +1 -0
  77. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.js +198 -0
  78. package/dist/ir/binding-resolution-cases/module-import-type-alias-renaming.test.js.map +1 -0
  79. package/dist/ir/binding-resolution.test.d.ts +9 -4
  80. package/dist/ir/binding-resolution.test.d.ts.map +1 -1
  81. package/dist/ir/binding-resolution.test.js +9 -1428
  82. package/dist/ir/binding-resolution.test.js.map +1 -1
  83. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.d.ts +8 -0
  84. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.d.ts.map +1 -0
  85. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.js +255 -0
  86. package/dist/ir/bindings-disambiguation-cases/failure-disambiguation.test.js.map +1 -0
  87. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.d.ts +11 -0
  88. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.d.ts.map +1 -0
  89. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.js +326 -0
  90. package/dist/ir/bindings-disambiguation-cases/success-disambiguation.test.js.map +1 -0
  91. package/dist/ir/bindings-disambiguation.test.d.ts +2 -10
  92. package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -1
  93. package/dist/ir/bindings-disambiguation.test.js +2 -561
  94. package/dist/ir/bindings-disambiguation.test.js.map +1 -1
  95. package/dist/ir/builder/exports.d.ts +2 -2
  96. package/dist/ir/builder/exports.d.ts.map +1 -1
  97. package/dist/ir/builder/exports.js +6 -10
  98. package/dist/ir/builder/exports.js.map +1 -1
  99. package/dist/ir/builder/imports.d.ts.map +1 -1
  100. package/dist/ir/builder/imports.js +104 -58
  101. package/dist/ir/builder/imports.js.map +1 -1
  102. package/dist/ir/builder/orchestrator.d.ts.map +1 -1
  103. package/dist/ir/builder/orchestrator.js +7 -9
  104. package/dist/ir/builder/orchestrator.js.map +1 -1
  105. package/dist/ir/builder/statements.d.ts +5 -0
  106. package/dist/ir/builder/statements.d.ts.map +1 -1
  107. package/dist/ir/builder/statements.js +16 -5
  108. package/dist/ir/builder/statements.js.map +1 -1
  109. package/dist/ir/builder-cases/_test-helpers.d.ts +61 -0
  110. package/dist/ir/builder-cases/_test-helpers.d.ts.map +1 -0
  111. package/dist/ir/builder-cases/_test-helpers.js +123 -0
  112. package/dist/ir/builder-cases/_test-helpers.js.map +1 -0
  113. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.d.ts +2 -0
  114. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.d.ts.map +1 -0
  115. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.js +123 -0
  116. package/dist/ir/builder-cases/call-inference-generics/alias-cache.test.js.map +1 -0
  117. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.d.ts +2 -0
  118. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.d.ts.map +1 -0
  119. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.js +839 -0
  120. package/dist/ir/builder-cases/call-inference-generics/context-threading.test.js.map +1 -0
  121. package/dist/ir/builder-cases/clr-identity.test.d.ts +5 -0
  122. package/dist/ir/builder-cases/clr-identity.test.d.ts.map +1 -0
  123. package/dist/ir/builder-cases/clr-identity.test.js +188 -0
  124. package/dist/ir/builder-cases/clr-identity.test.js.map +1 -0
  125. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.d.ts +2 -0
  126. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.d.ts.map +1 -0
  127. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.js +1436 -0
  128. package/dist/ir/builder-cases/clr-iterable-overload-resolution.test.js.map +1 -0
  129. package/dist/ir/builder-cases/conditional-narrowing.test.d.ts +5 -0
  130. package/dist/ir/builder-cases/conditional-narrowing.test.d.ts.map +1 -0
  131. package/dist/ir/builder-cases/conditional-narrowing.test.js +598 -0
  132. package/dist/ir/builder-cases/conditional-narrowing.test.js.map +1 -0
  133. package/dist/ir/builder-cases/contextual-typing-middleware.test.d.ts +5 -0
  134. package/dist/ir/builder-cases/contextual-typing-middleware.test.d.ts.map +1 -0
  135. package/dist/ir/builder-cases/contextual-typing-middleware.test.js +384 -0
  136. package/dist/ir/builder-cases/contextual-typing-middleware.test.js.map +1 -0
  137. package/dist/ir/builder-cases/expression-conversion.test.d.ts +5 -0
  138. package/dist/ir/builder-cases/expression-conversion.test.d.ts.map +1 -0
  139. package/dist/ir/builder-cases/expression-conversion.test.js +712 -0
  140. package/dist/ir/builder-cases/expression-conversion.test.js.map +1 -0
  141. package/dist/ir/builder-cases/fluent-and-nullable-params.test.d.ts +5 -0
  142. package/dist/ir/builder-cases/fluent-and-nullable-params.test.d.ts.map +1 -0
  143. package/dist/ir/builder-cases/fluent-and-nullable-params.test.js +170 -0
  144. package/dist/ir/builder-cases/fluent-and-nullable-params.test.js.map +1 -0
  145. package/dist/ir/builder-cases/for-of-loops.test.d.ts +5 -0
  146. package/dist/ir/builder-cases/for-of-loops.test.d.ts.map +1 -0
  147. package/dist/ir/builder-cases/for-of-loops.test.js +367 -0
  148. package/dist/ir/builder-cases/for-of-loops.test.js.map +1 -0
  149. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.d.ts +2 -0
  150. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.d.ts.map +1 -0
  151. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.js +192 -0
  152. package/dist/ir/builder-cases/generic-call-parameter-specialization.test.js.map +1 -0
  153. package/dist/ir/builder-cases/implements-and-struct.test.d.ts +5 -0
  154. package/dist/ir/builder-cases/implements-and-struct.test.d.ts.map +1 -0
  155. package/dist/ir/builder-cases/implements-and-struct.test.js +145 -0
  156. package/dist/ir/builder-cases/implements-and-struct.test.js.map +1 -0
  157. package/dist/ir/builder-cases/import-extraction.test.d.ts +5 -0
  158. package/dist/ir/builder-cases/import-extraction.test.d.ts.map +1 -0
  159. package/dist/ir/builder-cases/import-extraction.test.js +852 -0
  160. package/dist/ir/builder-cases/import-extraction.test.js.map +1 -0
  161. package/dist/ir/builder-cases/imported-null-guard-assignments.test.d.ts +2 -0
  162. package/dist/ir/builder-cases/imported-null-guard-assignments.test.d.ts.map +1 -0
  163. package/dist/ir/builder-cases/imported-null-guard-assignments.test.js +185 -0
  164. package/dist/ir/builder-cases/imported-null-guard-assignments.test.js.map +1 -0
  165. package/dist/ir/builder-cases/imported-union-aliases.test.d.ts +2 -0
  166. package/dist/ir/builder-cases/imported-union-aliases.test.d.ts.map +1 -0
  167. package/dist/ir/builder-cases/imported-union-aliases.test.js +255 -0
  168. package/dist/ir/builder-cases/imported-union-aliases.test.js.map +1 -0
  169. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.d.ts +2 -0
  170. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.d.ts.map +1 -0
  171. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.js +1267 -0
  172. package/dist/ir/builder-cases/installed-source-package-deterministic-typing.test.js.map +1 -0
  173. package/dist/ir/builder-cases/invocation-flow-assertions.test.d.ts +2 -0
  174. package/dist/ir/builder-cases/invocation-flow-assertions.test.d.ts.map +1 -0
  175. package/dist/ir/builder-cases/invocation-flow-assertions.test.js +198 -0
  176. package/dist/ir/builder-cases/invocation-flow-assertions.test.js.map +1 -0
  177. package/dist/ir/builder-cases/js-surface-helpers.test.d.ts +5 -0
  178. package/dist/ir/builder-cases/js-surface-helpers.test.d.ts.map +1 -0
  179. package/dist/ir/builder-cases/js-surface-helpers.test.js +1990 -0
  180. package/dist/ir/builder-cases/js-surface-helpers.test.js.map +1 -0
  181. package/dist/ir/builder-cases/module-structure-and-exports.test.d.ts +5 -0
  182. package/dist/ir/builder-cases/module-structure-and-exports.test.d.ts.map +1 -0
  183. package/dist/ir/builder-cases/module-structure-and-exports.test.js +97 -0
  184. package/dist/ir/builder-cases/module-structure-and-exports.test.js.map +1 -0
  185. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.d.ts +5 -0
  186. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.d.ts.map +1 -0
  187. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.js +511 -0
  188. package/dist/ir/builder-cases/namespace-imports-and-function-narrowing.test.js.map +1 -0
  189. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.d.ts +5 -0
  190. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.d.ts.map +1 -0
  191. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.js +676 -0
  192. package/dist/ir/builder-cases/narrowing-isarray-and-typeof.test.js.map +1 -0
  193. package/dist/ir/builder-cases/object-exports-and-member-inference.test.d.ts +5 -0
  194. package/dist/ir/builder-cases/object-exports-and-member-inference.test.d.ts.map +1 -0
  195. package/dist/ir/builder-cases/object-exports-and-member-inference.test.js +159 -0
  196. package/dist/ir/builder-cases/object-exports-and-member-inference.test.js.map +1 -0
  197. package/dist/ir/builder-cases/object-synthesis-advanced.test.d.ts +5 -0
  198. package/dist/ir/builder-cases/object-synthesis-advanced.test.d.ts.map +1 -0
  199. package/dist/ir/builder-cases/object-synthesis-advanced.test.js +250 -0
  200. package/dist/ir/builder-cases/object-synthesis-advanced.test.js.map +1 -0
  201. package/dist/ir/builder-cases/object-synthesis.test.d.ts +5 -0
  202. package/dist/ir/builder-cases/object-synthesis.test.d.ts.map +1 -0
  203. package/dist/ir/builder-cases/object-synthesis.test.js +254 -0
  204. package/dist/ir/builder-cases/object-synthesis.test.js.map +1 -0
  205. package/dist/ir/builder-cases/overload-family-markers.test.d.ts +2 -0
  206. package/dist/ir/builder-cases/overload-family-markers.test.d.ts.map +1 -0
  207. package/dist/ir/builder-cases/overload-family-markers.test.js +264 -0
  208. package/dist/ir/builder-cases/overload-family-markers.test.js.map +1 -0
  209. package/dist/ir/builder-cases/overload-null-guard-selection.test.d.ts +2 -0
  210. package/dist/ir/builder-cases/overload-null-guard-selection.test.d.ts.map +1 -0
  211. package/dist/ir/builder-cases/overload-null-guard-selection.test.js +210 -0
  212. package/dist/ir/builder-cases/overload-null-guard-selection.test.js.map +1 -0
  213. package/dist/ir/builder-cases/overload-stub-typing.test.d.ts +2 -0
  214. package/dist/ir/builder-cases/overload-stub-typing.test.d.ts.map +1 -0
  215. package/dist/ir/builder-cases/overload-stub-typing.test.js +111 -0
  216. package/dist/ir/builder-cases/overload-stub-typing.test.js.map +1 -0
  217. package/dist/ir/builder-cases/private-members-and-instanceof.test.d.ts +5 -0
  218. package/dist/ir/builder-cases/private-members-and-instanceof.test.d.ts.map +1 -0
  219. package/dist/ir/builder-cases/private-members-and-instanceof.test.js +239 -0
  220. package/dist/ir/builder-cases/private-members-and-instanceof.test.js.map +1 -0
  221. package/dist/ir/builder-cases/promise-callback-typing.test.d.ts +5 -0
  222. package/dist/ir/builder-cases/promise-callback-typing.test.d.ts.map +1 -0
  223. package/dist/ir/builder-cases/promise-callback-typing.test.js +977 -0
  224. package/dist/ir/builder-cases/promise-callback-typing.test.js.map +1 -0
  225. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.d.ts +5 -0
  226. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.d.ts.map +1 -0
  227. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.js +509 -0
  228. package/dist/ir/builder-cases/recursive-aliases-and-flow-types.test.js.map +1 -0
  229. package/dist/ir/builder-cases/statement-conversion.test.d.ts +5 -0
  230. package/dist/ir/builder-cases/statement-conversion.test.d.ts.map +1 -0
  231. package/dist/ir/builder-cases/statement-conversion.test.js +240 -0
  232. package/dist/ir/builder-cases/statement-conversion.test.js.map +1 -0
  233. package/dist/ir/builder-cases/type-access-and-records.test.d.ts +5 -0
  234. package/dist/ir/builder-cases/type-access-and-records.test.d.ts.map +1 -0
  235. package/dist/ir/builder-cases/type-access-and-records.test.js +420 -0
  236. package/dist/ir/builder-cases/type-access-and-records.test.js.map +1 -0
  237. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.d.ts +5 -0
  238. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.d.ts.map +1 -0
  239. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.js +187 -0
  240. package/dist/ir/builder-cases/typeof-narrowing-and-intrinsics.test.js.map +1 -0
  241. package/dist/ir/builder.test.d.ts +27 -4
  242. package/dist/ir/builder.test.d.ts.map +1 -1
  243. package/dist/ir/builder.test.js +27 -3583
  244. package/dist/ir/builder.test.js.map +1 -1
  245. package/dist/ir/converters/access-paths.d.ts +20 -0
  246. package/dist/ir/converters/access-paths.d.ts.map +1 -0
  247. package/dist/ir/converters/access-paths.js +163 -0
  248. package/dist/ir/converters/access-paths.js.map +1 -0
  249. package/dist/ir/converters/array-type-guards.d.ts +7 -0
  250. package/dist/ir/converters/array-type-guards.d.ts.map +1 -0
  251. package/dist/ir/converters/array-type-guards.js +33 -0
  252. package/dist/ir/converters/array-type-guards.js.map +1 -0
  253. package/dist/ir/converters/assertion-wrapping.d.ts +4 -0
  254. package/dist/ir/converters/assertion-wrapping.d.ts.map +1 -0
  255. package/dist/ir/converters/assertion-wrapping.js +40 -0
  256. package/dist/ir/converters/assertion-wrapping.js.map +1 -0
  257. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -1
  258. package/dist/ir/converters/expressions/access/access-converter.js +104 -40
  259. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -1
  260. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.d.ts +18 -0
  261. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.d.ts.map +1 -0
  262. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.js +347 -0
  263. package/dist/ir/converters/expressions/access/binding-resolution-hierarchical.js.map +1 -0
  264. package/dist/ir/converters/expressions/access/binding-resolution-memberid.d.ts +28 -0
  265. package/dist/ir/converters/expressions/access/binding-resolution-memberid.d.ts.map +1 -0
  266. package/dist/ir/converters/expressions/access/binding-resolution-memberid.js +522 -0
  267. package/dist/ir/converters/expressions/access/binding-resolution-memberid.js.map +1 -0
  268. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +7 -31
  269. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -1
  270. package/dist/ir/converters/expressions/access/binding-resolution.js +7 -490
  271. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -1
  272. package/dist/ir/converters/expressions/access/member-resolution.d.ts +7 -6
  273. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -1
  274. package/dist/ir/converters/expressions/access/member-resolution.js +323 -77
  275. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -1
  276. package/dist/ir/converters/expressions/ambient-global-source-owner.d.ts +5 -0
  277. package/dist/ir/converters/expressions/ambient-global-source-owner.d.ts.map +1 -0
  278. package/dist/ir/converters/expressions/ambient-global-source-owner.js +252 -0
  279. package/dist/ir/converters/expressions/ambient-global-source-owner.js.map +1 -0
  280. package/dist/ir/converters/expressions/array-literals.d.ts +25 -0
  281. package/dist/ir/converters/expressions/array-literals.d.ts.map +1 -0
  282. package/dist/ir/converters/expressions/array-literals.js +356 -0
  283. package/dist/ir/converters/expressions/array-literals.js.map +1 -0
  284. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.d.ts +13 -0
  285. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.d.ts.map +1 -0
  286. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.js +56 -0
  287. package/dist/ir/converters/expressions/calls/bound-global-call-parameters.js.map +1 -0
  288. package/dist/ir/converters/expressions/calls/call-converter.d.ts +7 -17
  289. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -1
  290. package/dist/ir/converters/expressions/calls/call-converter.js +7 -648
  291. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -1
  292. package/dist/ir/converters/expressions/calls/call-expression.d.ts +9 -0
  293. package/dist/ir/converters/expressions/calls/call-expression.d.ts.map +1 -0
  294. package/dist/ir/converters/expressions/calls/call-expression.js +9 -0
  295. package/dist/ir/converters/expressions/calls/call-expression.js.map +1 -0
  296. package/dist/ir/converters/expressions/calls/call-general.d.ts +25 -0
  297. package/dist/ir/converters/expressions/calls/call-general.d.ts.map +1 -0
  298. package/dist/ir/converters/expressions/calls/call-general.js +2237 -0
  299. package/dist/ir/converters/expressions/calls/call-general.js.map +1 -0
  300. package/dist/ir/converters/expressions/calls/call-intrinsics.d.ts +16 -0
  301. package/dist/ir/converters/expressions/calls/call-intrinsics.d.ts.map +1 -0
  302. package/dist/ir/converters/expressions/calls/call-intrinsics.js +308 -0
  303. package/dist/ir/converters/expressions/calls/call-intrinsics.js.map +1 -0
  304. package/dist/ir/converters/expressions/calls/call-resolution.d.ts +58 -0
  305. package/dist/ir/converters/expressions/calls/call-resolution.d.ts.map +1 -0
  306. package/dist/ir/converters/expressions/calls/call-resolution.js +293 -0
  307. package/dist/ir/converters/expressions/calls/call-resolution.js.map +1 -0
  308. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.d.ts +51 -0
  309. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.d.ts.map +1 -0
  310. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.js +313 -0
  311. package/dist/ir/converters/expressions/calls/call-site-analysis-argument-passing.js.map +1 -0
  312. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.d.ts +13 -0
  313. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.d.ts.map +1 -0
  314. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.js +251 -0
  315. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.js.map +1 -0
  316. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.d.ts +2 -0
  317. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.d.ts.map +1 -0
  318. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.js +18 -0
  319. package/dist/ir/converters/expressions/calls/call-site-analysis-unification.test.js.map +1 -0
  320. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +12 -51
  321. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -1
  322. package/dist/ir/converters/expressions/calls/call-site-analysis.js +9 -526
  323. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -1
  324. package/dist/ir/converters/expressions/calls/invocation-finalization.d.ts +56 -0
  325. package/dist/ir/converters/expressions/calls/invocation-finalization.d.ts.map +1 -0
  326. package/dist/ir/converters/expressions/calls/invocation-finalization.js +723 -0
  327. package/dist/ir/converters/expressions/calls/invocation-finalization.js.map +1 -0
  328. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -1
  329. package/dist/ir/converters/expressions/calls/new-converter.js +78 -3
  330. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -1
  331. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.d.ts +22 -0
  332. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.d.ts.map +1 -0
  333. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.js +257 -0
  334. package/dist/ir/converters/expressions/calls/source-backed-constructor-metadata.js.map +1 -0
  335. package/dist/ir/converters/expressions/collections.d.ts +5 -25
  336. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  337. package/dist/ir/converters/expressions/collections.js +5 -886
  338. package/dist/ir/converters/expressions/collections.js.map +1 -1
  339. package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
  340. package/dist/ir/converters/expressions/functions.js +80 -65
  341. package/dist/ir/converters/expressions/functions.js.map +1 -1
  342. package/dist/ir/converters/expressions/helpers.js +1 -1
  343. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  344. package/dist/ir/converters/expressions/import-meta.d.ts +3 -3
  345. package/dist/ir/converters/expressions/import-meta.d.ts.map +1 -1
  346. package/dist/ir/converters/expressions/import-meta.js +22 -8
  347. package/dist/ir/converters/expressions/import-meta.js.map +1 -1
  348. package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
  349. package/dist/ir/converters/expressions/literals.js +31 -6
  350. package/dist/ir/converters/expressions/literals.js.map +1 -1
  351. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.d.ts +9 -0
  352. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.d.ts.map +1 -0
  353. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.js +124 -0
  354. package/dist/ir/converters/expressions/numeric-recovery-cases/call-return-and-intent.test.js.map +1 -0
  355. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.d.ts +8 -0
  356. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.d.ts.map +1 -0
  357. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.js +117 -0
  358. package/dist/ir/converters/expressions/numeric-recovery-cases/e2e-integration.test.js.map +1 -0
  359. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.d.ts +8 -0
  360. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.d.ts.map +1 -0
  361. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.js +170 -0
  362. package/dist/ir/converters/expressions/numeric-recovery-cases/property-access-recovery.test.js.map +1 -0
  363. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.d.ts +31 -0
  364. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.d.ts.map +1 -0
  365. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.js +183 -0
  366. package/dist/ir/converters/expressions/numeric-recovery-cases/test-helpers.js.map +1 -0
  367. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +3 -16
  368. package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
  369. package/dist/ir/converters/expressions/numeric-recovery.test.js +3 -407
  370. package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
  371. package/dist/ir/converters/expressions/object-literal-helpers.d.ts +12 -0
  372. package/dist/ir/converters/expressions/object-literal-helpers.d.ts.map +1 -0
  373. package/dist/ir/converters/expressions/object-literal-helpers.js +12 -0
  374. package/dist/ir/converters/expressions/object-literal-helpers.js.map +1 -0
  375. package/dist/ir/converters/expressions/object-literal-synthesis.d.ts +27 -0
  376. package/dist/ir/converters/expressions/object-literal-synthesis.d.ts.map +1 -0
  377. package/dist/ir/converters/expressions/object-literal-synthesis.js +459 -0
  378. package/dist/ir/converters/expressions/object-literal-synthesis.js.map +1 -0
  379. package/dist/ir/converters/expressions/object-literal-type-helpers.d.ts +27 -0
  380. package/dist/ir/converters/expressions/object-literal-type-helpers.d.ts.map +1 -0
  381. package/dist/ir/converters/expressions/object-literal-type-helpers.js +267 -0
  382. package/dist/ir/converters/expressions/object-literal-type-helpers.js.map +1 -0
  383. package/dist/ir/converters/expressions/object-literals.d.ts +16 -0
  384. package/dist/ir/converters/expressions/object-literals.d.ts.map +1 -0
  385. package/dist/ir/converters/expressions/object-literals.js +317 -0
  386. package/dist/ir/converters/expressions/object-literals.js.map +1 -0
  387. package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
  388. package/dist/ir/converters/expressions/operators.js +33 -19
  389. package/dist/ir/converters/expressions/operators.js.map +1 -1
  390. package/dist/ir/converters/expressions/other.d.ts +4 -2
  391. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  392. package/dist/ir/converters/expressions/other.js +32 -10
  393. package/dist/ir/converters/expressions/other.js.map +1 -1
  394. package/dist/ir/converters/flow-narrowing.d.ts +6 -25
  395. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  396. package/dist/ir/converters/flow-narrowing.js +5 -418
  397. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  398. package/dist/ir/converters/heritage-reference-type.d.ts +5 -0
  399. package/dist/ir/converters/heritage-reference-type.d.ts.map +1 -0
  400. package/dist/ir/converters/heritage-reference-type.js +22 -0
  401. package/dist/ir/converters/heritage-reference-type.js.map +1 -0
  402. package/dist/ir/converters/narrowing-candidates.d.ts +7 -0
  403. package/dist/ir/converters/narrowing-candidates.d.ts.map +1 -0
  404. package/dist/ir/converters/narrowing-candidates.js +5 -0
  405. package/dist/ir/converters/narrowing-candidates.js.map +1 -0
  406. package/dist/ir/converters/narrowing-collection.d.ts +10 -0
  407. package/dist/ir/converters/narrowing-collection.d.ts.map +1 -0
  408. package/dist/ir/converters/narrowing-collection.js +10 -0
  409. package/dist/ir/converters/narrowing-collection.js.map +1 -0
  410. package/dist/ir/converters/narrowing-environment.d.ts +13 -0
  411. package/dist/ir/converters/narrowing-environment.d.ts.map +1 -0
  412. package/dist/ir/converters/narrowing-environment.js +83 -0
  413. package/dist/ir/converters/narrowing-environment.js.map +1 -0
  414. package/dist/ir/converters/narrowing-property-helpers.d.ts +8 -0
  415. package/dist/ir/converters/narrowing-property-helpers.d.ts.map +1 -0
  416. package/dist/ir/converters/narrowing-property-helpers.js +57 -0
  417. package/dist/ir/converters/narrowing-property-helpers.js.map +1 -0
  418. package/dist/ir/converters/narrowing-resolvers-equality.d.ts +22 -0
  419. package/dist/ir/converters/narrowing-resolvers-equality.d.ts.map +1 -0
  420. package/dist/ir/converters/narrowing-resolvers-equality.js +309 -0
  421. package/dist/ir/converters/narrowing-resolvers-equality.js.map +1 -0
  422. package/dist/ir/converters/narrowing-resolvers-equality.test.d.ts +2 -0
  423. package/dist/ir/converters/narrowing-resolvers-equality.test.d.ts.map +1 -0
  424. package/dist/ir/converters/narrowing-resolvers-equality.test.js +159 -0
  425. package/dist/ir/converters/narrowing-resolvers-equality.test.js.map +1 -0
  426. package/dist/ir/converters/narrowing-resolvers-typeof.d.ts +41 -0
  427. package/dist/ir/converters/narrowing-resolvers-typeof.d.ts.map +1 -0
  428. package/dist/ir/converters/narrowing-resolvers-typeof.js +251 -0
  429. package/dist/ir/converters/narrowing-resolvers-typeof.js.map +1 -0
  430. package/dist/ir/converters/narrowing-resolvers.d.ts +12 -0
  431. package/dist/ir/converters/narrowing-resolvers.d.ts.map +1 -0
  432. package/dist/ir/converters/narrowing-resolvers.js +10 -0
  433. package/dist/ir/converters/narrowing-resolvers.js.map +1 -0
  434. package/dist/ir/converters/narrowing-truthy.d.ts +19 -0
  435. package/dist/ir/converters/narrowing-truthy.d.ts.map +1 -0
  436. package/dist/ir/converters/narrowing-truthy.js +355 -0
  437. package/dist/ir/converters/narrowing-truthy.js.map +1 -0
  438. package/dist/ir/converters/reference-type-guards.d.ts +8 -0
  439. package/dist/ir/converters/reference-type-guards.d.ts.map +1 -0
  440. package/dist/ir/converters/reference-type-guards.js +51 -0
  441. package/dist/ir/converters/reference-type-guards.js.map +1 -0
  442. package/dist/ir/converters/reference-type-guards.test.d.ts +2 -0
  443. package/dist/ir/converters/reference-type-guards.test.d.ts.map +1 -0
  444. package/dist/ir/converters/reference-type-guards.test.js +51 -0
  445. package/dist/ir/converters/reference-type-guards.test.js.map +1 -0
  446. package/dist/ir/converters/return-expression-types.d.ts +3 -0
  447. package/dist/ir/converters/return-expression-types.d.ts.map +1 -0
  448. package/dist/ir/converters/return-expression-types.js +10 -0
  449. package/dist/ir/converters/return-expression-types.js.map +1 -0
  450. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
  451. package/dist/ir/converters/statements/control/blocks.js +72 -2
  452. package/dist/ir/converters/statements/control/blocks.js.map +1 -1
  453. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
  454. package/dist/ir/converters/statements/control/conditionals.js +2 -12
  455. package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
  456. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
  457. package/dist/ir/converters/statements/control/loops.js +18 -4
  458. package/dist/ir/converters/statements/control/loops.js.map +1 -1
  459. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
  460. package/dist/ir/converters/statements/declarations/classes/constructors.js +36 -19
  461. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
  462. package/dist/ir/converters/statements/declarations/classes/member-names.d.ts +5 -0
  463. package/dist/ir/converters/statements/declarations/classes/member-names.d.ts.map +1 -0
  464. package/dist/ir/converters/statements/declarations/classes/member-names.js +6 -0
  465. package/dist/ir/converters/statements/declarations/classes/member-names.js.map +1 -0
  466. package/dist/ir/converters/statements/declarations/classes/method-declaration.d.ts +11 -0
  467. package/dist/ir/converters/statements/declarations/classes/method-declaration.d.ts.map +1 -0
  468. package/dist/ir/converters/statements/declarations/classes/method-declaration.js +54 -0
  469. package/dist/ir/converters/statements/declarations/classes/method-declaration.js.map +1 -0
  470. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -15
  471. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
  472. package/dist/ir/converters/statements/declarations/classes/methods.js +2 -810
  473. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  474. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
  475. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +15 -41
  476. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
  477. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +4 -1
  478. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
  479. package/dist/ir/converters/statements/declarations/classes/override-detection.js +18 -10
  480. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
  481. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
  482. package/dist/ir/converters/statements/declarations/classes/properties.js +10 -3
  483. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
  484. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
  485. package/dist/ir/converters/statements/declarations/functions.js +8 -2
  486. package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
  487. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
  488. package/dist/ir/converters/statements/declarations/interfaces.js +67 -2
  489. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
  490. package/dist/ir/converters/statements/declarations/overload-family-builders.d.ts +9 -0
  491. package/dist/ir/converters/statements/declarations/overload-family-builders.d.ts.map +1 -0
  492. package/dist/ir/converters/statements/declarations/overload-family-builders.js +21 -0
  493. package/dist/ir/converters/statements/declarations/overload-family-builders.js.map +1 -0
  494. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
  495. package/dist/ir/converters/statements/declarations/type-aliases.js +12 -1
  496. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  497. package/dist/ir/converters/statements/declarations/variable-generic-lowering.d.ts +50 -0
  498. package/dist/ir/converters/statements/declarations/variable-generic-lowering.d.ts.map +1 -0
  499. package/dist/ir/converters/statements/declarations/variable-generic-lowering.js +281 -0
  500. package/dist/ir/converters/statements/declarations/variable-generic-lowering.js.map +1 -0
  501. package/dist/ir/converters/statements/declarations/variable-helpers.d.ts +29 -0
  502. package/dist/ir/converters/statements/declarations/variable-helpers.d.ts.map +1 -0
  503. package/dist/ir/converters/statements/declarations/variable-helpers.js +58 -0
  504. package/dist/ir/converters/statements/declarations/variable-helpers.js.map +1 -0
  505. package/dist/ir/converters/statements/declarations/variables-generic-function-values.d.ts +21 -0
  506. package/dist/ir/converters/statements/declarations/variables-generic-function-values.d.ts.map +1 -0
  507. package/dist/ir/converters/statements/declarations/variables-generic-function-values.js +263 -0
  508. package/dist/ir/converters/statements/declarations/variables-generic-function-values.js.map +1 -0
  509. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  510. package/dist/ir/converters/statements/declarations/variables.js +3 -262
  511. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  512. package/dist/ir/converters/synthetic-types.d.ts.map +1 -1
  513. package/dist/ir/converters/synthetic-types.js +83 -4
  514. package/dist/ir/converters/synthetic-types.js.map +1 -1
  515. package/dist/ir/converters/type-env.d.ts +3 -1
  516. package/dist/ir/converters/type-env.d.ts.map +1 -1
  517. package/dist/ir/converters/type-env.js +52 -19
  518. package/dist/ir/converters/type-env.js.map +1 -1
  519. package/dist/ir/expression-converter-dispatch.d.ts +21 -0
  520. package/dist/ir/expression-converter-dispatch.d.ts.map +1 -0
  521. package/dist/ir/expression-converter-dispatch.js +550 -0
  522. package/dist/ir/expression-converter-dispatch.js.map +1 -0
  523. package/dist/ir/expression-converter-helpers.d.ts +27 -0
  524. package/dist/ir/expression-converter-helpers.d.ts.map +1 -0
  525. package/dist/ir/expression-converter-helpers.js +172 -0
  526. package/dist/ir/expression-converter-helpers.js.map +1 -0
  527. package/dist/ir/expression-converter.d.ts +5 -15
  528. package/dist/ir/expression-converter.d.ts.map +1 -1
  529. package/dist/ir/expression-converter.js +5 -410
  530. package/dist/ir/expression-converter.js.map +1 -1
  531. package/dist/ir/field-marker.test.js +1 -1
  532. package/dist/ir/field-marker.test.js.map +1 -1
  533. package/dist/ir/json-global-typing.test.d.ts +2 -0
  534. package/dist/ir/json-global-typing.test.d.ts.map +1 -0
  535. package/dist/ir/json-global-typing.test.js +80 -0
  536. package/dist/ir/json-global-typing.test.js.map +1 -0
  537. package/dist/ir/program-context-factory.d.ts +25 -0
  538. package/dist/ir/program-context-factory.d.ts.map +1 -0
  539. package/dist/ir/program-context-factory.js +196 -0
  540. package/dist/ir/program-context-factory.js.map +1 -0
  541. package/dist/ir/program-context-types.d.ts +147 -0
  542. package/dist/ir/program-context-types.d.ts.map +1 -0
  543. package/dist/ir/program-context-types.js +123 -0
  544. package/dist/ir/program-context-types.js.map +1 -0
  545. package/dist/ir/program-context.d.ts +6 -122
  546. package/dist/ir/program-context.d.ts.map +1 -1
  547. package/dist/ir/program-context.js +5 -347
  548. package/dist/ir/program-context.js.map +1 -1
  549. package/dist/ir/program-context.test.js +20 -0
  550. package/dist/ir/program-context.test.js.map +1 -1
  551. package/dist/ir/syntax/overload-stubs.d.ts +4 -0
  552. package/dist/ir/syntax/overload-stubs.d.ts.map +1 -0
  553. package/dist/ir/syntax/overload-stubs.js +32 -0
  554. package/dist/ir/syntax/overload-stubs.js.map +1 -0
  555. package/dist/ir/syntax/property-names.d.ts +6 -0
  556. package/dist/ir/syntax/property-names.d.ts.map +1 -0
  557. package/dist/ir/syntax/property-names.js +116 -0
  558. package/dist/ir/syntax/property-names.js.map +1 -0
  559. package/dist/ir/type-system/call-resolution-callable-types.d.ts +10 -0
  560. package/dist/ir/type-system/call-resolution-callable-types.d.ts.map +1 -0
  561. package/dist/ir/type-system/call-resolution-callable-types.js +288 -0
  562. package/dist/ir/type-system/call-resolution-callable-types.js.map +1 -0
  563. package/dist/ir/type-system/call-resolution-candidate-selection.d.ts +9 -0
  564. package/dist/ir/type-system/call-resolution-candidate-selection.d.ts.map +1 -0
  565. package/dist/ir/type-system/call-resolution-candidate-selection.js +413 -0
  566. package/dist/ir/type-system/call-resolution-candidate-selection.js.map +1 -0
  567. package/dist/ir/type-system/call-resolution-inference.d.ts +12 -0
  568. package/dist/ir/type-system/call-resolution-inference.d.ts.map +1 -0
  569. package/dist/ir/type-system/call-resolution-inference.js +12 -0
  570. package/dist/ir/type-system/call-resolution-inference.js.map +1 -0
  571. package/dist/ir/type-system/call-resolution-method-substitution.d.ts +12 -0
  572. package/dist/ir/type-system/call-resolution-method-substitution.d.ts.map +1 -0
  573. package/dist/ir/type-system/call-resolution-method-substitution.js +115 -0
  574. package/dist/ir/type-system/call-resolution-method-substitution.js.map +1 -0
  575. package/dist/ir/type-system/call-resolution-parameters.d.ts +30 -0
  576. package/dist/ir/type-system/call-resolution-parameters.d.ts.map +1 -0
  577. package/dist/ir/type-system/call-resolution-parameters.js +167 -0
  578. package/dist/ir/type-system/call-resolution-parameters.js.map +1 -0
  579. package/dist/ir/type-system/call-resolution-receiver-substitution.d.ts +12 -0
  580. package/dist/ir/type-system/call-resolution-receiver-substitution.d.ts.map +1 -0
  581. package/dist/ir/type-system/call-resolution-receiver-substitution.js +134 -0
  582. package/dist/ir/type-system/call-resolution-receiver-substitution.js.map +1 -0
  583. package/dist/ir/type-system/call-resolution-resolve.d.ts +12 -0
  584. package/dist/ir/type-system/call-resolution-resolve.d.ts.map +1 -0
  585. package/dist/ir/type-system/call-resolution-resolve.js +275 -0
  586. package/dist/ir/type-system/call-resolution-resolve.js.map +1 -0
  587. package/dist/ir/type-system/call-resolution-scoring.d.ts +18 -0
  588. package/dist/ir/type-system/call-resolution-scoring.d.ts.map +1 -0
  589. package/dist/ir/type-system/call-resolution-scoring.js +166 -0
  590. package/dist/ir/type-system/call-resolution-scoring.js.map +1 -0
  591. package/dist/ir/type-system/call-resolution-signatures-catalog.d.ts +19 -0
  592. package/dist/ir/type-system/call-resolution-signatures-catalog.d.ts.map +1 -0
  593. package/dist/ir/type-system/call-resolution-signatures-catalog.js +121 -0
  594. package/dist/ir/type-system/call-resolution-signatures-catalog.js.map +1 -0
  595. package/dist/ir/type-system/call-resolution-signatures-catalog.test.d.ts +2 -0
  596. package/dist/ir/type-system/call-resolution-signatures-catalog.test.d.ts.map +1 -0
  597. package/dist/ir/type-system/call-resolution-signatures-catalog.test.js +88 -0
  598. package/dist/ir/type-system/call-resolution-signatures-catalog.test.js.map +1 -0
  599. package/dist/ir/type-system/call-resolution-signatures-raw.d.ts +21 -0
  600. package/dist/ir/type-system/call-resolution-signatures-raw.d.ts.map +1 -0
  601. package/dist/ir/type-system/call-resolution-signatures-raw.js +242 -0
  602. package/dist/ir/type-system/call-resolution-signatures-raw.js.map +1 -0
  603. package/dist/ir/type-system/call-resolution-signatures.d.ts +10 -0
  604. package/dist/ir/type-system/call-resolution-signatures.d.ts.map +1 -0
  605. package/dist/ir/type-system/call-resolution-signatures.js +10 -0
  606. package/dist/ir/type-system/call-resolution-signatures.js.map +1 -0
  607. package/dist/ir/type-system/call-resolution-type-ids.d.ts +43 -0
  608. package/dist/ir/type-system/call-resolution-type-ids.d.ts.map +1 -0
  609. package/dist/ir/type-system/call-resolution-type-ids.js +465 -0
  610. package/dist/ir/type-system/call-resolution-type-ids.js.map +1 -0
  611. package/dist/ir/type-system/call-resolution-type-ids.test.d.ts +2 -0
  612. package/dist/ir/type-system/call-resolution-type-ids.test.d.ts.map +1 -0
  613. package/dist/ir/type-system/call-resolution-type-ids.test.js +63 -0
  614. package/dist/ir/type-system/call-resolution-type-ids.test.js.map +1 -0
  615. package/dist/ir/type-system/call-resolution-unification.d.ts +18 -0
  616. package/dist/ir/type-system/call-resolution-unification.d.ts.map +1 -0
  617. package/dist/ir/type-system/call-resolution-unification.js +637 -0
  618. package/dist/ir/type-system/call-resolution-unification.js.map +1 -0
  619. package/dist/ir/type-system/call-resolution-utilities.d.ts +11 -0
  620. package/dist/ir/type-system/call-resolution-utilities.d.ts.map +1 -0
  621. package/dist/ir/type-system/call-resolution-utilities.js +11 -0
  622. package/dist/ir/type-system/call-resolution-utilities.js.map +1 -0
  623. package/dist/ir/type-system/inference-declarations-overrides.d.ts +33 -0
  624. package/dist/ir/type-system/inference-declarations-overrides.d.ts.map +1 -0
  625. package/dist/ir/type-system/inference-declarations-overrides.js +241 -0
  626. package/dist/ir/type-system/inference-declarations-overrides.js.map +1 -0
  627. package/dist/ir/type-system/inference-declarations-types.d.ts +20 -0
  628. package/dist/ir/type-system/inference-declarations-types.d.ts.map +1 -0
  629. package/dist/ir/type-system/inference-declarations-types.js +475 -0
  630. package/dist/ir/type-system/inference-declarations-types.js.map +1 -0
  631. package/dist/ir/type-system/inference-declarations.d.ts +10 -0
  632. package/dist/ir/type-system/inference-declarations.d.ts.map +1 -0
  633. package/dist/ir/type-system/inference-declarations.js +10 -0
  634. package/dist/ir/type-system/inference-declarations.js.map +1 -0
  635. package/dist/ir/type-system/inference-expressions-infer.d.ts +25 -0
  636. package/dist/ir/type-system/inference-expressions-infer.d.ts.map +1 -0
  637. package/dist/ir/type-system/inference-expressions-infer.js +427 -0
  638. package/dist/ir/type-system/inference-expressions-infer.js.map +1 -0
  639. package/dist/ir/type-system/inference-expressions-lambda.d.ts +13 -0
  640. package/dist/ir/type-system/inference-expressions-lambda.d.ts.map +1 -0
  641. package/dist/ir/type-system/inference-expressions-lambda.js +101 -0
  642. package/dist/ir/type-system/inference-expressions-lambda.js.map +1 -0
  643. package/dist/ir/type-system/inference-expressions.d.ts +10 -0
  644. package/dist/ir/type-system/inference-expressions.d.ts.map +1 -0
  645. package/dist/ir/type-system/inference-expressions.js +10 -0
  646. package/dist/ir/type-system/inference-expressions.js.map +1 -0
  647. package/dist/ir/type-system/inference-initializers-call.d.ts +37 -0
  648. package/dist/ir/type-system/inference-initializers-call.d.ts.map +1 -0
  649. package/dist/ir/type-system/inference-initializers-call.js +242 -0
  650. package/dist/ir/type-system/inference-initializers-call.js.map +1 -0
  651. package/dist/ir/type-system/inference-initializers-variable.d.ts +14 -0
  652. package/dist/ir/type-system/inference-initializers-variable.d.ts.map +1 -0
  653. package/dist/ir/type-system/inference-initializers-variable.js +178 -0
  654. package/dist/ir/type-system/inference-initializers-variable.js.map +1 -0
  655. package/dist/ir/type-system/inference-initializers.d.ts +10 -0
  656. package/dist/ir/type-system/inference-initializers.d.ts.map +1 -0
  657. package/dist/ir/type-system/inference-initializers.js +10 -0
  658. package/dist/ir/type-system/inference-initializers.js.map +1 -0
  659. package/dist/ir/type-system/inference-member-id.d.ts +21 -0
  660. package/dist/ir/type-system/inference-member-id.d.ts.map +1 -0
  661. package/dist/ir/type-system/inference-member-id.js +402 -0
  662. package/dist/ir/type-system/inference-member-id.js.map +1 -0
  663. package/dist/ir/type-system/inference-member-lookup.d.ts +15 -0
  664. package/dist/ir/type-system/inference-member-lookup.d.ts.map +1 -0
  665. package/dist/ir/type-system/inference-member-lookup.js +567 -0
  666. package/dist/ir/type-system/inference-member-lookup.js.map +1 -0
  667. package/dist/ir/type-system/inference-member-resolution.d.ts +10 -0
  668. package/dist/ir/type-system/inference-member-resolution.d.ts.map +1 -0
  669. package/dist/ir/type-system/inference-member-resolution.js +10 -0
  670. package/dist/ir/type-system/inference-member-resolution.js.map +1 -0
  671. package/dist/ir/type-system/inference-type-preference.d.ts +9 -0
  672. package/dist/ir/type-system/inference-type-preference.d.ts.map +1 -0
  673. package/dist/ir/type-system/inference-type-preference.js +67 -0
  674. package/dist/ir/type-system/inference-type-preference.js.map +1 -0
  675. package/dist/ir/type-system/inference-utilities.d.ts +48 -0
  676. package/dist/ir/type-system/inference-utilities.d.ts.map +1 -0
  677. package/dist/ir/type-system/inference-utilities.js +182 -0
  678. package/dist/ir/type-system/inference-utilities.js.map +1 -0
  679. package/dist/ir/type-system/internal/handle-types.d.ts +12 -0
  680. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  681. package/dist/ir/type-system/internal/nominal-env.d.ts +1 -1
  682. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  683. package/dist/ir/type-system/internal/nominal-env.js +12 -114
  684. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  685. package/dist/ir/type-system/internal/registry-builder.d.ts +19 -0
  686. package/dist/ir/type-system/internal/registry-builder.d.ts.map +1 -0
  687. package/dist/ir/type-system/internal/registry-builder.js +292 -0
  688. package/dist/ir/type-system/internal/registry-builder.js.map +1 -0
  689. package/dist/ir/type-system/internal/registry-helpers-extraction.d.ts +69 -0
  690. package/dist/ir/type-system/internal/registry-helpers-extraction.d.ts.map +1 -0
  691. package/dist/ir/type-system/internal/registry-helpers-extraction.js +429 -0
  692. package/dist/ir/type-system/internal/registry-helpers-extraction.js.map +1 -0
  693. package/dist/ir/type-system/internal/registry-helpers-inference.d.ts +19 -0
  694. package/dist/ir/type-system/internal/registry-helpers-inference.d.ts.map +1 -0
  695. package/dist/ir/type-system/internal/registry-helpers-inference.js +237 -0
  696. package/dist/ir/type-system/internal/registry-helpers-inference.js.map +1 -0
  697. package/dist/ir/type-system/internal/registry-helpers.d.ts +12 -0
  698. package/dist/ir/type-system/internal/registry-helpers.d.ts.map +1 -0
  699. package/dist/ir/type-system/internal/registry-helpers.js +12 -0
  700. package/dist/ir/type-system/internal/registry-helpers.js.map +1 -0
  701. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.d.ts +53 -0
  702. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.d.ts.map +1 -0
  703. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.js +281 -0
  704. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-core.js.map +1 -0
  705. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.d.ts +35 -0
  706. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.d.ts.map +1 -0
  707. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.js +308 -0
  708. package/dist/ir/type-system/internal/type-converter/conditional-utility-types-extract.js.map +1 -0
  709. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.d.ts +23 -0
  710. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.d.ts.map +1 -0
  711. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.js +23 -0
  712. package/dist/ir/type-system/internal/type-converter/conditional-utility-types.js.map +1 -0
  713. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.d.ts +5 -0
  714. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.d.ts.map +1 -0
  715. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.js +232 -0
  716. package/dist/ir/type-system/internal/type-converter/direct-alias-expansion.js.map +1 -0
  717. package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -1
  718. package/dist/ir/type-system/internal/type-converter/functions.js +21 -0
  719. package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -1
  720. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.d.ts +37 -0
  721. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.d.ts.map +1 -0
  722. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.js +334 -0
  723. package/dist/ir/type-system/internal/type-converter/mapped-utility-expansion.js.map +1 -0
  724. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.d.ts +27 -0
  725. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.d.ts.map +1 -0
  726. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.js +174 -0
  727. package/dist/ir/type-system/internal/type-converter/mapped-utility-record.js.map +1 -0
  728. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.d.ts +10 -0
  729. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.d.ts.map +1 -0
  730. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.js +10 -0
  731. package/dist/ir/type-system/internal/type-converter/mapped-utility-types.js.map +1 -0
  732. package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -1
  733. package/dist/ir/type-system/internal/type-converter/objects.js +11 -6
  734. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  735. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +6 -5
  736. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  737. package/dist/ir/type-system/internal/type-converter/orchestrator.js +80 -463
  738. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  739. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +47 -57
  740. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -1
  741. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  742. package/dist/ir/type-system/internal/type-converter/primitives.js +9 -1
  743. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  744. package/dist/ir/type-system/internal/type-converter/references-alias.d.ts +21 -0
  745. package/dist/ir/type-system/internal/type-converter/references-alias.d.ts.map +1 -0
  746. package/dist/ir/type-system/internal/type-converter/references-alias.js +267 -0
  747. package/dist/ir/type-system/internal/type-converter/references-alias.js.map +1 -0
  748. package/dist/ir/type-system/internal/type-converter/references-converter.d.ts +16 -0
  749. package/dist/ir/type-system/internal/type-converter/references-converter.d.ts.map +1 -0
  750. package/dist/ir/type-system/internal/type-converter/references-converter.js +203 -0
  751. package/dist/ir/type-system/internal/type-converter/references-converter.js.map +1 -0
  752. package/dist/ir/type-system/internal/type-converter/references-normalize.d.ts +49 -0
  753. package/dist/ir/type-system/internal/type-converter/references-normalize.d.ts.map +1 -0
  754. package/dist/ir/type-system/internal/type-converter/references-normalize.js +162 -0
  755. package/dist/ir/type-system/internal/type-converter/references-normalize.js.map +1 -0
  756. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.d.ts +52 -0
  757. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.d.ts.map +1 -0
  758. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.js +295 -0
  759. package/dist/ir/type-system/internal/type-converter/references-structural-bindings.js.map +1 -0
  760. package/dist/ir/type-system/internal/type-converter/references-structural-members.d.ts +55 -0
  761. package/dist/ir/type-system/internal/type-converter/references-structural-members.d.ts.map +1 -0
  762. package/dist/ir/type-system/internal/type-converter/references-structural-members.js +334 -0
  763. package/dist/ir/type-system/internal/type-converter/references-structural-members.js.map +1 -0
  764. package/dist/ir/type-system/internal/type-converter/references-structural.d.ts +12 -0
  765. package/dist/ir/type-system/internal/type-converter/references-structural.d.ts.map +1 -0
  766. package/dist/ir/type-system/internal/type-converter/references-structural.js +12 -0
  767. package/dist/ir/type-system/internal/type-converter/references-structural.js.map +1 -0
  768. package/dist/ir/type-system/internal/type-converter/references.d.ts +8 -9
  769. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  770. package/dist/ir/type-system/internal/type-converter/references.js +7 -981
  771. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  772. package/dist/ir/type-system/internal/type-converter/type-operators.d.ts +16 -0
  773. package/dist/ir/type-system/internal/type-converter/type-operators.d.ts.map +1 -0
  774. package/dist/ir/type-system/internal/type-converter/type-operators.js +197 -0
  775. package/dist/ir/type-system/internal/type-converter/type-operators.js.map +1 -0
  776. package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -1
  777. package/dist/ir/type-system/internal/type-converter/unions-intersections.js +2 -4
  778. package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -1
  779. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.d.ts +2 -0
  780. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.d.ts.map +1 -0
  781. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.js +246 -0
  782. package/dist/ir/type-system/internal/type-converter/utility-types-cases/comprehensive-expansion.test.js.map +1 -0
  783. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.d.ts +2 -0
  784. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.d.ts.map +1 -0
  785. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.js +179 -0
  786. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-awaited-constructor-instance.test.js.map +1 -0
  787. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.d.ts +2 -0
  788. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.d.ts.map +1 -0
  789. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.js +277 -0
  790. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-nonnullable-exclude-extract.test.js.map +1 -0
  791. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.d.ts +2 -0
  792. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.d.ts.map +1 -0
  793. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.js +163 -0
  794. package/dist/ir/type-system/internal/type-converter/utility-types-cases/conditional-return-params.test.js.map +1 -0
  795. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.d.ts +2 -0
  796. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.d.ts.map +1 -0
  797. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.js +305 -0
  798. package/dist/ir/type-system/internal/type-converter/utility-types-cases/expansion-safety.test.js.map +1 -0
  799. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.d.ts +38 -0
  800. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.d.ts.map +1 -0
  801. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.js +127 -0
  802. package/dist/ir/type-system/internal/type-converter/utility-types-cases/helpers.js.map +1 -0
  803. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.d.ts +2 -0
  804. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.d.ts.map +1 -0
  805. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.js +145 -0
  806. package/dist/ir/type-system/internal/type-converter/utility-types-cases/record-expansion.test.js.map +1 -0
  807. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts +6 -76
  808. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  809. package/dist/ir/type-system/internal/type-converter/utility-types.js +6 -1031
  810. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  811. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts +6 -9
  812. package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -1
  813. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +6 -1416
  814. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  815. package/dist/ir/type-system/internal/type-converter/value-inference.d.ts +13 -0
  816. package/dist/ir/type-system/internal/type-converter/value-inference.d.ts.map +1 -0
  817. package/dist/ir/type-system/internal/type-converter/value-inference.js +311 -0
  818. package/dist/ir/type-system/internal/type-converter/value-inference.js.map +1 -0
  819. package/dist/ir/type-system/internal/type-registry.d.ts +12 -12
  820. package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
  821. package/dist/ir/type-system/internal/type-registry.js +4 -529
  822. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  823. package/dist/ir/type-system/internal/universe/catalog-types.d.ts +260 -0
  824. package/dist/ir/type-system/internal/universe/catalog-types.d.ts.map +1 -0
  825. package/dist/ir/type-system/internal/universe/catalog-types.js +12 -0
  826. package/dist/ir/type-system/internal/universe/catalog-types.js.map +1 -0
  827. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +7 -5
  828. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  829. package/dist/ir/type-system/internal/universe/clr-catalog.js +160 -90
  830. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  831. package/dist/ir/type-system/internal/universe/clr-catalog.test.js +166 -72
  832. package/dist/ir/type-system/internal/universe/clr-catalog.test.js.map +1 -1
  833. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +7 -47
  834. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -1
  835. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +6 -695
  836. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -1
  837. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.d.ts +10 -0
  838. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.d.ts.map +1 -0
  839. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.js +168 -0
  840. package/dist/ir/type-system/internal/universe/clr-heritage-enrichment.js.map +1 -0
  841. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.d.ts +28 -0
  842. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.d.ts.map +1 -0
  843. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.js +307 -0
  844. package/dist/ir/type-system/internal/universe/clr-heritage-extraction.js.map +1 -0
  845. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.d.ts +11 -0
  846. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.d.ts.map +1 -0
  847. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.js +10 -0
  848. package/dist/ir/type-system/internal/universe/clr-heritage-extractor.js.map +1 -0
  849. package/dist/ir/type-system/internal/universe/clr-raw-converter.d.ts +41 -0
  850. package/dist/ir/type-system/internal/universe/clr-raw-converter.d.ts.map +1 -0
  851. package/dist/ir/type-system/internal/universe/clr-raw-converter.js +364 -0
  852. package/dist/ir/type-system/internal/universe/clr-raw-converter.js.map +1 -0
  853. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +3 -41
  854. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -1
  855. package/dist/ir/type-system/internal/universe/clr-type-parser.js +3 -470
  856. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -1
  857. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js +13 -2
  858. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js.map +1 -1
  859. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.d.ts +28 -0
  860. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.d.ts.map +1 -0
  861. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.js +208 -0
  862. package/dist/ir/type-system/internal/universe/clr-type-string-parsing.js.map +1 -0
  863. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.d.ts +28 -0
  864. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.d.ts.map +1 -0
  865. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.js +279 -0
  866. package/dist/ir/type-system/internal/universe/dts-type-node-conversion.js.map +1 -0
  867. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  868. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  869. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  870. package/dist/ir/type-system/internal/universe/raw-bindings-types.d.ts +167 -0
  871. package/dist/ir/type-system/internal/universe/raw-bindings-types.d.ts.map +1 -0
  872. package/dist/ir/type-system/internal/universe/raw-bindings-types.js +79 -0
  873. package/dist/ir/type-system/internal/universe/raw-bindings-types.js.map +1 -0
  874. package/dist/ir/type-system/internal/universe/source-catalog.d.ts +1 -1
  875. package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -1
  876. package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
  877. package/dist/ir/type-system/internal/universe/types.d.ts +4 -388
  878. package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -1
  879. package/dist/ir/type-system/internal/universe/types.js +2 -60
  880. package/dist/ir/type-system/internal/universe/types.js.map +1 -1
  881. package/dist/ir/type-system/internal/universe/unified-universe.d.ts +2 -2
  882. package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -1
  883. package/dist/ir/type-system/internal/universe/unified-universe.js +467 -19
  884. package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -1
  885. package/dist/ir/type-system/internal/universe/unified-universe.test.js +7 -2
  886. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  887. package/dist/ir/type-system/iterable-type-shapes.d.ts +8 -0
  888. package/dist/ir/type-system/iterable-type-shapes.d.ts.map +1 -0
  889. package/dist/ir/type-system/iterable-type-shapes.js +229 -0
  890. package/dist/ir/type-system/iterable-type-shapes.js.map +1 -0
  891. package/dist/ir/type-system/type-alias-expansion.d.ts +4 -0
  892. package/dist/ir/type-system/type-alias-expansion.d.ts.map +1 -0
  893. package/dist/ir/type-system/type-alias-expansion.js +27 -0
  894. package/dist/ir/type-system/type-alias-expansion.js.map +1 -0
  895. package/dist/ir/type-system/type-system-call-resolution.d.ts +16 -68
  896. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -1
  897. package/dist/ir/type-system/type-system-call-resolution.js +17 -1407
  898. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -1
  899. package/dist/ir/type-system/type-system-factory.d.ts +24 -0
  900. package/dist/ir/type-system/type-system-factory.d.ts.map +1 -0
  901. package/dist/ir/type-system/type-system-factory.js +145 -0
  902. package/dist/ir/type-system/type-system-factory.js.map +1 -0
  903. package/dist/ir/type-system/type-system-inference.d.ts +13 -92
  904. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -1
  905. package/dist/ir/type-system/type-system-inference.js +18 -1315
  906. package/dist/ir/type-system/type-system-inference.js.map +1 -1
  907. package/dist/ir/type-system/type-system-relations.d.ts +1 -0
  908. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -1
  909. package/dist/ir/type-system/type-system-relations.js +332 -19
  910. package/dist/ir/type-system/type-system-relations.js.map +1 -1
  911. package/dist/ir/type-system/type-system-state-call-types.d.ts +62 -0
  912. package/dist/ir/type-system/type-system-state-call-types.d.ts.map +1 -0
  913. package/dist/ir/type-system/type-system-state-call-types.js +2 -0
  914. package/dist/ir/type-system/type-system-state-call-types.js.map +1 -0
  915. package/dist/ir/type-system/type-system-state-handle-types.d.ts +134 -0
  916. package/dist/ir/type-system/type-system-state-handle-types.d.ts.map +1 -0
  917. package/dist/ir/type-system/type-system-state-handle-types.js +2 -0
  918. package/dist/ir/type-system/type-system-state-handle-types.js.map +1 -0
  919. package/dist/ir/type-system/type-system-state-helpers.d.ts +56 -0
  920. package/dist/ir/type-system/type-system-state-helpers.d.ts.map +1 -0
  921. package/dist/ir/type-system/type-system-state-helpers.js +291 -0
  922. package/dist/ir/type-system/type-system-state-helpers.js.map +1 -0
  923. package/dist/ir/type-system/type-system-state-model.d.ts +33 -0
  924. package/dist/ir/type-system/type-system-state-model.d.ts.map +1 -0
  925. package/dist/ir/type-system/type-system-state-model.js +3 -0
  926. package/dist/ir/type-system/type-system-state-model.js.map +1 -0
  927. package/dist/ir/type-system/type-system-state-registry-types.d.ts +11 -0
  928. package/dist/ir/type-system/type-system-state-registry-types.d.ts.map +1 -0
  929. package/dist/ir/type-system/type-system-state-registry-types.js +17 -0
  930. package/dist/ir/type-system/type-system-state-registry-types.js.map +1 -0
  931. package/dist/ir/type-system/type-system-state-types.d.ts +4 -0
  932. package/dist/ir/type-system/type-system-state-types.d.ts.map +1 -0
  933. package/dist/ir/type-system/type-system-state-types.js +4 -0
  934. package/dist/ir/type-system/type-system-state-types.js.map +1 -0
  935. package/dist/ir/type-system/type-system-state.d.ts +4 -454
  936. package/dist/ir/type-system/type-system-state.d.ts.map +1 -1
  937. package/dist/ir/type-system/type-system-state.js +4 -228
  938. package/dist/ir/type-system/type-system-state.js.map +1 -1
  939. package/dist/ir/type-system/type-system-types-api.d.ts +341 -0
  940. package/dist/ir/type-system/type-system-types-api.d.ts.map +1 -0
  941. package/dist/ir/type-system/type-system-types-api.js +11 -0
  942. package/dist/ir/type-system/type-system-types-api.js.map +1 -0
  943. package/dist/ir/type-system/type-system-utilities.d.ts +4 -48
  944. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -1
  945. package/dist/ir/type-system/type-system-utilities.js +4 -349
  946. package/dist/ir/type-system/type-system-utilities.js.map +1 -1
  947. package/dist/ir/type-system/type-system.d.ts +8 -313
  948. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  949. package/dist/ir/type-system/type-system.js +7 -131
  950. package/dist/ir/type-system/type-system.js.map +1 -1
  951. package/dist/ir/type-system/types.d.ts +2 -0
  952. package/dist/ir/type-system/types.d.ts.map +1 -1
  953. package/dist/ir/type-system/types.js +5 -0
  954. package/dist/ir/type-system/types.js.map +1 -1
  955. package/dist/ir/type-system/utility-type-filter-helpers.d.ts +40 -0
  956. package/dist/ir/type-system/utility-type-filter-helpers.d.ts.map +1 -0
  957. package/dist/ir/type-system/utility-type-filter-helpers.js +142 -0
  958. package/dist/ir/type-system/utility-type-filter-helpers.js.map +1 -0
  959. package/dist/ir/type-system/utility-type-mapped-helpers.d.ts +34 -0
  960. package/dist/ir/type-system/utility-type-mapped-helpers.d.ts.map +1 -0
  961. package/dist/ir/type-system/utility-type-mapped-helpers.js +243 -0
  962. package/dist/ir/type-system/utility-type-mapped-helpers.js.map +1 -0
  963. package/dist/ir/types/expressions-core.d.ts +331 -0
  964. package/dist/ir/types/expressions-core.d.ts.map +1 -0
  965. package/dist/ir/types/expressions-core.js +5 -0
  966. package/dist/ir/types/expressions-core.js.map +1 -0
  967. package/dist/ir/types/expressions-extended.d.ts +232 -0
  968. package/dist/ir/types/expressions-extended.d.ts.map +1 -0
  969. package/dist/ir/types/expressions-extended.js +6 -0
  970. package/dist/ir/types/expressions-extended.js.map +1 -0
  971. package/dist/ir/types/expressions.d.ts +6 -480
  972. package/dist/ir/types/expressions.d.ts.map +1 -1
  973. package/dist/ir/types/expressions.js +5 -1
  974. package/dist/ir/types/expressions.js.map +1 -1
  975. package/dist/ir/types/helpers.d.ts +4 -0
  976. package/dist/ir/types/helpers.d.ts.map +1 -1
  977. package/dist/ir/types/index.d.ts +4 -2
  978. package/dist/ir/types/index.d.ts.map +1 -1
  979. package/dist/ir/types/index.js +2 -1
  980. package/dist/ir/types/index.js.map +1 -1
  981. package/dist/ir/types/ir-substitution-builders.d.ts +91 -0
  982. package/dist/ir/types/ir-substitution-builders.d.ts.map +1 -0
  983. package/dist/ir/types/ir-substitution-builders.js +340 -0
  984. package/dist/ir/types/ir-substitution-builders.js.map +1 -0
  985. package/dist/ir/types/ir-substitution-core.d.ts +55 -0
  986. package/dist/ir/types/ir-substitution-core.d.ts.map +1 -0
  987. package/dist/ir/types/ir-substitution-core.js +402 -0
  988. package/dist/ir/types/ir-substitution-core.js.map +1 -0
  989. package/dist/ir/types/ir-substitution.d.ts +13 -142
  990. package/dist/ir/types/ir-substitution.d.ts.map +1 -1
  991. package/dist/ir/types/ir-substitution.js +9 -565
  992. package/dist/ir/types/ir-substitution.js.map +1 -1
  993. package/dist/ir/types/ir-types.d.ts +80 -4
  994. package/dist/ir/types/ir-types.d.ts.map +1 -1
  995. package/dist/ir/types/overload-family.d.ts +36 -0
  996. package/dist/ir/types/overload-family.d.ts.map +1 -0
  997. package/dist/ir/types/overload-family.js +9 -0
  998. package/dist/ir/types/overload-family.js.map +1 -0
  999. package/dist/ir/types/statements.d.ts +8 -1
  1000. package/dist/ir/types/statements.d.ts.map +1 -1
  1001. package/dist/ir/types/type-ops.d.ts +41 -2
  1002. package/dist/ir/types/type-ops.d.ts.map +1 -1
  1003. package/dist/ir/types/type-ops.js +744 -45
  1004. package/dist/ir/types/type-ops.js.map +1 -1
  1005. package/dist/ir/types/type-ops.test.js +443 -1
  1006. package/dist/ir/types/type-ops.test.js.map +1 -1
  1007. package/dist/ir/types.d.ts +2 -2
  1008. package/dist/ir/types.d.ts.map +1 -1
  1009. package/dist/ir/types.js +1 -1
  1010. package/dist/ir/types.js.map +1 -1
  1011. package/dist/ir/validation/anon-type-declaration-synthesis.d.ts +11 -0
  1012. package/dist/ir/validation/anon-type-declaration-synthesis.d.ts.map +1 -0
  1013. package/dist/ir/validation/anon-type-declaration-synthesis.js +11 -0
  1014. package/dist/ir/validation/anon-type-declaration-synthesis.js.map +1 -0
  1015. package/dist/ir/validation/anon-type-ir-rewriting.d.ts +10 -0
  1016. package/dist/ir/validation/anon-type-ir-rewriting.d.ts.map +1 -0
  1017. package/dist/ir/validation/anon-type-ir-rewriting.js +3 -0
  1018. package/dist/ir/validation/anon-type-ir-rewriting.js.map +1 -0
  1019. package/dist/ir/validation/anon-type-lower-expressions.d.ts +10 -0
  1020. package/dist/ir/validation/anon-type-lower-expressions.d.ts.map +1 -0
  1021. package/dist/ir/validation/anon-type-lower-expressions.js +364 -0
  1022. package/dist/ir/validation/anon-type-lower-expressions.js.map +1 -0
  1023. package/dist/ir/validation/anon-type-lower-statements.d.ts +13 -0
  1024. package/dist/ir/validation/anon-type-lower-statements.d.ts.map +1 -0
  1025. package/dist/ir/validation/anon-type-lower-statements.js +270 -0
  1026. package/dist/ir/validation/anon-type-lower-statements.js.map +1 -0
  1027. package/dist/ir/validation/anon-type-lower-types.d.ts +60 -0
  1028. package/dist/ir/validation/anon-type-lower-types.d.ts.map +1 -0
  1029. package/dist/ir/validation/anon-type-lower-types.js +287 -0
  1030. package/dist/ir/validation/anon-type-lower-types.js.map +1 -0
  1031. package/dist/ir/validation/anon-type-naming.d.ts +20 -0
  1032. package/dist/ir/validation/anon-type-naming.d.ts.map +1 -0
  1033. package/dist/ir/validation/anon-type-naming.js +153 -0
  1034. package/dist/ir/validation/anon-type-naming.js.map +1 -0
  1035. package/dist/ir/validation/anon-type-shape-analysis.d.ts +13 -0
  1036. package/dist/ir/validation/anon-type-shape-analysis.d.ts.map +1 -0
  1037. package/dist/ir/validation/anon-type-shape-analysis.js +12 -0
  1038. package/dist/ir/validation/anon-type-shape-analysis.js.map +1 -0
  1039. package/dist/ir/validation/anon-type-shape-collectors.d.ts +39 -0
  1040. package/dist/ir/validation/anon-type-shape-collectors.d.ts.map +1 -0
  1041. package/dist/ir/validation/anon-type-shape-collectors.js +369 -0
  1042. package/dist/ir/validation/anon-type-shape-collectors.js.map +1 -0
  1043. package/dist/ir/validation/anon-type-shape-serialization.d.ts +38 -0
  1044. package/dist/ir/validation/anon-type-shape-serialization.d.ts.map +1 -0
  1045. package/dist/ir/validation/anon-type-shape-serialization.js +241 -0
  1046. package/dist/ir/validation/anon-type-shape-serialization.js.map +1 -0
  1047. package/dist/ir/validation/anon-type-template-inference.d.ts +12 -0
  1048. package/dist/ir/validation/anon-type-template-inference.d.ts.map +1 -0
  1049. package/dist/ir/validation/anon-type-template-inference.js +296 -0
  1050. package/dist/ir/validation/anon-type-template-inference.js.map +1 -0
  1051. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts +7 -1
  1052. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  1053. package/dist/ir/validation/anonymous-type-lowering-pass.js +315 -1166
  1054. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  1055. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.d.ts +2 -0
  1056. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.d.ts.map +1 -0
  1057. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.js +332 -0
  1058. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/basic-lowering.test.js.map +1 -0
  1059. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.d.ts +2 -0
  1060. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.d.ts.map +1 -0
  1061. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.js +255 -0
  1062. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/cross-module-reuse.test.js.map +1 -0
  1063. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.d.ts +2 -0
  1064. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.d.ts.map +1 -0
  1065. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.js +715 -0
  1066. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/structural-references.test.js.map +1 -0
  1067. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.d.ts +4 -0
  1068. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.d.ts.map +1 -0
  1069. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.js +85 -0
  1070. package/dist/ir/validation/anonymous-type-lowering-regressions-cases/test-helpers.js.map +1 -0
  1071. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts +3 -1
  1072. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts.map +1 -1
  1073. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js +3 -120
  1074. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js.map +1 -1
  1075. package/dist/ir/validation/arrow-return-expression-walk.d.ts +13 -0
  1076. package/dist/ir/validation/arrow-return-expression-walk.d.ts.map +1 -0
  1077. package/dist/ir/validation/arrow-return-expression-walk.js +224 -0
  1078. package/dist/ir/validation/arrow-return-expression-walk.js.map +1 -0
  1079. package/dist/ir/validation/arrow-return-finalization-pass.d.ts +3 -17
  1080. package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -1
  1081. package/dist/ir/validation/arrow-return-finalization-pass.js +2 -418
  1082. package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -1
  1083. package/dist/ir/validation/arrow-return-statement-walk.d.ts +27 -0
  1084. package/dist/ir/validation/arrow-return-statement-walk.d.ts.map +1 -0
  1085. package/dist/ir/validation/arrow-return-statement-walk.js +206 -0
  1086. package/dist/ir/validation/arrow-return-statement-walk.js.map +1 -0
  1087. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +8 -2
  1088. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -1
  1089. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -1
  1090. package/dist/ir/validation/attribute-collection/marker-chain-parser.d.ts +21 -0
  1091. package/dist/ir/validation/attribute-collection/marker-chain-parser.d.ts.map +1 -0
  1092. package/dist/ir/validation/attribute-collection/marker-chain-parser.js +261 -0
  1093. package/dist/ir/validation/attribute-collection/marker-chain-parser.js.map +1 -0
  1094. package/dist/ir/validation/attribute-collection/marker-collection.d.ts +28 -0
  1095. package/dist/ir/validation/attribute-collection/marker-collection.d.ts.map +1 -0
  1096. package/dist/ir/validation/attribute-collection/marker-collection.js +343 -0
  1097. package/dist/ir/validation/attribute-collection/marker-collection.js.map +1 -0
  1098. package/dist/ir/validation/attribute-collection/marker-detection.d.ts +25 -0
  1099. package/dist/ir/validation/attribute-collection/marker-detection.d.ts.map +1 -0
  1100. package/dist/ir/validation/attribute-collection/marker-detection.js +214 -0
  1101. package/dist/ir/validation/attribute-collection/marker-detection.js.map +1 -0
  1102. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +7 -24
  1103. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -1
  1104. package/dist/ir/validation/attribute-collection/marker-parser.js +7 -400
  1105. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -1
  1106. package/dist/ir/validation/attribute-collection/module-rebuild.d.ts +28 -0
  1107. package/dist/ir/validation/attribute-collection/module-rebuild.d.ts.map +1 -0
  1108. package/dist/ir/validation/attribute-collection/module-rebuild.js +176 -0
  1109. package/dist/ir/validation/attribute-collection/module-rebuild.js.map +1 -0
  1110. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +3 -19
  1111. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -1
  1112. package/dist/ir/validation/attribute-collection/orchestrator.js +2 -323
  1113. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -1
  1114. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.d.ts +5 -0
  1115. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.d.ts.map +1 -0
  1116. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.js +62 -0
  1117. package/dist/ir/validation/attribute-collection-cases/ctor-add.test.js.map +1 -0
  1118. package/dist/ir/validation/attribute-collection-cases/error-cases.test.d.ts +5 -0
  1119. package/dist/ir/validation/attribute-collection-cases/error-cases.test.d.ts.map +1 -0
  1120. package/dist/ir/validation/attribute-collection-cases/error-cases.test.js +246 -0
  1121. package/dist/ir/validation/attribute-collection-cases/error-cases.test.js.map +1 -0
  1122. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.d.ts +6 -0
  1123. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.d.ts.map +1 -0
  1124. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.js +77 -0
  1125. package/dist/ir/validation/attribute-collection-cases/function-and-misc.test.js.map +1 -0
  1126. package/dist/ir/validation/attribute-collection-cases/helpers.d.ts +186 -0
  1127. package/dist/ir/validation/attribute-collection-cases/helpers.d.ts.map +1 -0
  1128. package/dist/ir/validation/attribute-collection-cases/helpers.js +239 -0
  1129. package/dist/ir/validation/attribute-collection-cases/helpers.js.map +1 -0
  1130. package/dist/ir/validation/attribute-collection-cases/method-selector.test.d.ts +5 -0
  1131. package/dist/ir/validation/attribute-collection-cases/method-selector.test.d.ts.map +1 -0
  1132. package/dist/ir/validation/attribute-collection-cases/method-selector.test.js +371 -0
  1133. package/dist/ir/validation/attribute-collection-cases/method-selector.test.js.map +1 -0
  1134. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.d.ts +5 -0
  1135. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.d.ts.map +1 -0
  1136. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.js +209 -0
  1137. package/dist/ir/validation/attribute-collection-cases/prop-selector.test.js.map +1 -0
  1138. package/dist/ir/validation/attribute-collection-cases/type-add.test.d.ts +5 -0
  1139. package/dist/ir/validation/attribute-collection-cases/type-add.test.d.ts.map +1 -0
  1140. package/dist/ir/validation/attribute-collection-cases/type-add.test.js +330 -0
  1141. package/dist/ir/validation/attribute-collection-cases/type-add.test.js.map +1 -0
  1142. package/dist/ir/validation/attribute-collection-pass.d.ts +5 -4
  1143. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  1144. package/dist/ir/validation/attribute-collection-pass.js +5 -4
  1145. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  1146. package/dist/ir/validation/attribute-collection-pass.test.d.ts +8 -1
  1147. package/dist/ir/validation/attribute-collection-pass.test.d.ts.map +1 -1
  1148. package/dist/ir/validation/attribute-collection-pass.test.js +8 -1331
  1149. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  1150. package/dist/ir/validation/call-resolution-refresh-pass.d.ts +8 -0
  1151. package/dist/ir/validation/call-resolution-refresh-pass.d.ts.map +1 -0
  1152. package/dist/ir/validation/call-resolution-refresh-pass.js +616 -0
  1153. package/dist/ir/validation/call-resolution-refresh-pass.js.map +1 -0
  1154. package/dist/ir/validation/char-validation-expressions.d.ts +13 -0
  1155. package/dist/ir/validation/char-validation-expressions.d.ts.map +1 -0
  1156. package/dist/ir/validation/char-validation-expressions.js +362 -0
  1157. package/dist/ir/validation/char-validation-expressions.js.map +1 -0
  1158. package/dist/ir/validation/char-validation-pass.d.ts +7 -22
  1159. package/dist/ir/validation/char-validation-pass.d.ts.map +1 -1
  1160. package/dist/ir/validation/char-validation-pass.js +6 -504
  1161. package/dist/ir/validation/char-validation-pass.js.map +1 -1
  1162. package/dist/ir/validation/char-validation-types.d.ts +28 -0
  1163. package/dist/ir/validation/char-validation-types.d.ts.map +1 -0
  1164. package/dist/ir/validation/char-validation-types.js +144 -0
  1165. package/dist/ir/validation/char-validation-types.js.map +1 -0
  1166. package/dist/ir/validation/index.d.ts +3 -0
  1167. package/dist/ir/validation/index.d.ts.map +1 -1
  1168. package/dist/ir/validation/index.js +3 -0
  1169. package/dist/ir/validation/index.js.map +1 -1
  1170. package/dist/ir/validation/known-builtin-reference-types.d.ts +12 -0
  1171. package/dist/ir/validation/known-builtin-reference-types.d.ts.map +1 -0
  1172. package/dist/ir/validation/known-builtin-reference-types.js +29 -0
  1173. package/dist/ir/validation/known-builtin-reference-types.js.map +1 -0
  1174. package/dist/ir/validation/numeric-classification.d.ts +105 -0
  1175. package/dist/ir/validation/numeric-classification.d.ts.map +1 -0
  1176. package/dist/ir/validation/numeric-classification.js +368 -0
  1177. package/dist/ir/validation/numeric-classification.js.map +1 -0
  1178. package/dist/ir/validation/numeric-coercion-pass.d.ts +3 -50
  1179. package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
  1180. package/dist/ir/validation/numeric-coercion-pass.js +3 -777
  1181. package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
  1182. package/dist/ir/validation/numeric-expression-validation.d.ts +26 -0
  1183. package/dist/ir/validation/numeric-expression-validation.d.ts.map +1 -0
  1184. package/dist/ir/validation/numeric-expression-validation.js +253 -0
  1185. package/dist/ir/validation/numeric-expression-validation.js.map +1 -0
  1186. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.d.ts +11 -0
  1187. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.d.ts.map +1 -0
  1188. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.js +185 -0
  1189. package/dist/ir/validation/numeric-invariants-cases/array-index-proofs.test.js.map +1 -0
  1190. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.d.ts +16 -0
  1191. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.d.ts.map +1 -0
  1192. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.js +364 -0
  1193. package/dist/ir/validation/numeric-invariants-cases/arrow-function-proofs.test.js.map +1 -0
  1194. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.d.ts +9 -0
  1195. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.d.ts.map +1 -0
  1196. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.js +119 -0
  1197. package/dist/ir/validation/numeric-invariants-cases/binary-promotion.test.js.map +1 -0
  1198. package/dist/ir/validation/numeric-invariants-cases/helpers.d.ts +60 -0
  1199. package/dist/ir/validation/numeric-invariants-cases/helpers.d.ts.map +1 -0
  1200. package/dist/ir/validation/numeric-invariants-cases/helpers.js +163 -0
  1201. package/dist/ir/validation/numeric-invariants-cases/helpers.js.map +1 -0
  1202. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.d.ts +8 -0
  1203. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.d.ts.map +1 -0
  1204. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.js +110 -0
  1205. package/dist/ir/validation/numeric-invariants-cases/literal-range-validation.test.js.map +1 -0
  1206. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.d.ts +12 -0
  1207. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.d.ts.map +1 -0
  1208. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.js +188 -0
  1209. package/dist/ir/validation/numeric-invariants-cases/narrowing-intent.test.js.map +1 -0
  1210. package/dist/ir/validation/numeric-invariants.test.d.ts +5 -14
  1211. package/dist/ir/validation/numeric-invariants.test.d.ts.map +1 -1
  1212. package/dist/ir/validation/numeric-invariants.test.js +5 -932
  1213. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  1214. package/dist/ir/validation/numeric-proof-analysis.d.ts +9 -0
  1215. package/dist/ir/validation/numeric-proof-analysis.d.ts.map +1 -0
  1216. package/dist/ir/validation/numeric-proof-analysis.js +8 -0
  1217. package/dist/ir/validation/numeric-proof-analysis.js.map +1 -0
  1218. package/dist/ir/validation/numeric-proof-expression-walk.d.ts +18 -0
  1219. package/dist/ir/validation/numeric-proof-expression-walk.d.ts.map +1 -0
  1220. package/dist/ir/validation/numeric-proof-expression-walk.js +331 -0
  1221. package/dist/ir/validation/numeric-proof-expression-walk.js.map +1 -0
  1222. package/dist/ir/validation/numeric-proof-guard-facts.d.ts +29 -0
  1223. package/dist/ir/validation/numeric-proof-guard-facts.d.ts.map +1 -0
  1224. package/dist/ir/validation/numeric-proof-guard-facts.js +213 -0
  1225. package/dist/ir/validation/numeric-proof-guard-facts.js.map +1 -0
  1226. package/dist/ir/validation/numeric-proof-inference.d.ts +33 -0
  1227. package/dist/ir/validation/numeric-proof-inference.d.ts.map +1 -0
  1228. package/dist/ir/validation/numeric-proof-inference.js +222 -0
  1229. package/dist/ir/validation/numeric-proof-inference.js.map +1 -0
  1230. package/dist/ir/validation/numeric-proof-pass.d.ts +5 -25
  1231. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  1232. package/dist/ir/validation/numeric-proof-pass.js +5 -1165
  1233. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  1234. package/dist/ir/validation/numeric-proof-proving.d.ts +21 -0
  1235. package/dist/ir/validation/numeric-proof-proving.d.ts.map +1 -0
  1236. package/dist/ir/validation/numeric-proof-proving.js +261 -0
  1237. package/dist/ir/validation/numeric-proof-proving.js.map +1 -0
  1238. package/dist/ir/validation/numeric-proof-statement-walk.d.ts +37 -0
  1239. package/dist/ir/validation/numeric-proof-statement-walk.d.ts.map +1 -0
  1240. package/dist/ir/validation/numeric-proof-statement-walk.js +295 -0
  1241. package/dist/ir/validation/numeric-proof-statement-walk.js.map +1 -0
  1242. package/dist/ir/validation/numeric-proof-walk.d.ts +10 -0
  1243. package/dist/ir/validation/numeric-proof-walk.d.ts.map +1 -0
  1244. package/dist/ir/validation/numeric-proof-walk.js +9 -0
  1245. package/dist/ir/validation/numeric-proof-walk.js.map +1 -0
  1246. package/dist/ir/validation/numeric-statement-processing.d.ts +39 -0
  1247. package/dist/ir/validation/numeric-statement-processing.d.ts.map +1 -0
  1248. package/dist/ir/validation/numeric-statement-processing.js +229 -0
  1249. package/dist/ir/validation/numeric-statement-processing.js.map +1 -0
  1250. package/dist/ir/validation/numeric-validation.d.ts +13 -0
  1251. package/dist/ir/validation/numeric-validation.d.ts.map +1 -0
  1252. package/dist/ir/validation/numeric-validation.js +12 -0
  1253. package/dist/ir/validation/numeric-validation.js.map +1 -0
  1254. package/dist/ir/validation/overload-collection-cases/basic.test.d.ts +2 -0
  1255. package/dist/ir/validation/overload-collection-cases/basic.test.d.ts.map +1 -0
  1256. package/dist/ir/validation/overload-collection-cases/basic.test.js +103 -0
  1257. package/dist/ir/validation/overload-collection-cases/basic.test.js.map +1 -0
  1258. package/dist/ir/validation/overload-collection-cases/consistency.test.d.ts +2 -0
  1259. package/dist/ir/validation/overload-collection-cases/consistency.test.d.ts.map +1 -0
  1260. package/dist/ir/validation/overload-collection-cases/consistency.test.js +79 -0
  1261. package/dist/ir/validation/overload-collection-cases/consistency.test.js.map +1 -0
  1262. package/dist/ir/validation/overload-collection-cases/error-cases.test.d.ts +2 -0
  1263. package/dist/ir/validation/overload-collection-cases/error-cases.test.d.ts.map +1 -0
  1264. package/dist/ir/validation/overload-collection-cases/error-cases.test.js +24 -0
  1265. package/dist/ir/validation/overload-collection-cases/error-cases.test.js.map +1 -0
  1266. package/dist/ir/validation/overload-collection-cases/helpers.d.ts +107 -0
  1267. package/dist/ir/validation/overload-collection-cases/helpers.d.ts.map +1 -0
  1268. package/dist/ir/validation/overload-collection-cases/helpers.js +142 -0
  1269. package/dist/ir/validation/overload-collection-cases/helpers.js.map +1 -0
  1270. package/dist/ir/validation/overload-collection-pass.d.ts +16 -0
  1271. package/dist/ir/validation/overload-collection-pass.d.ts.map +1 -0
  1272. package/dist/ir/validation/overload-collection-pass.js +930 -0
  1273. package/dist/ir/validation/overload-collection-pass.js.map +1 -0
  1274. package/dist/ir/validation/overload-collection-pass.test.d.ts +4 -0
  1275. package/dist/ir/validation/overload-collection-pass.test.d.ts.map +1 -0
  1276. package/dist/ir/validation/overload-collection-pass.test.js +4 -0
  1277. package/dist/ir/validation/overload-collection-pass.test.js.map +1 -0
  1278. package/dist/ir/validation/overload-family-consistency-pass.d.ts +9 -0
  1279. package/dist/ir/validation/overload-family-consistency-pass.d.ts.map +1 -0
  1280. package/dist/ir/validation/overload-family-consistency-pass.js +161 -0
  1281. package/dist/ir/validation/overload-family-consistency-pass.js.map +1 -0
  1282. package/dist/ir/validation/rest-type-synthesis-helpers.d.ts +52 -0
  1283. package/dist/ir/validation/rest-type-synthesis-helpers.d.ts.map +1 -0
  1284. package/dist/ir/validation/rest-type-synthesis-helpers.js +250 -0
  1285. package/dist/ir/validation/rest-type-synthesis-helpers.js.map +1 -0
  1286. package/dist/ir/validation/rest-type-synthesis-pass.d.ts +6 -20
  1287. package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -1
  1288. package/dist/ir/validation/rest-type-synthesis-pass.js +5 -461
  1289. package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -1
  1290. package/dist/ir/validation/rest-type-synthesis-processing.d.ts +14 -0
  1291. package/dist/ir/validation/rest-type-synthesis-processing.d.ts.map +1 -0
  1292. package/dist/ir/validation/rest-type-synthesis-processing.js +220 -0
  1293. package/dist/ir/validation/rest-type-synthesis-processing.js.map +1 -0
  1294. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.d.ts +12 -0
  1295. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.d.ts.map +1 -0
  1296. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.js +99 -0
  1297. package/dist/ir/validation/soundness-gate-cases/any-type-and-primitives.test.js.map +1 -0
  1298. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.d.ts +10 -0
  1299. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.d.ts.map +1 -0
  1300. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.js +139 -0
  1301. package/dist/ir/validation/soundness-gate-cases/computed-member-access.test.js.map +1 -0
  1302. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.d.ts +10 -0
  1303. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.d.ts.map +1 -0
  1304. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.js +123 -0
  1305. package/dist/ir/validation/soundness-gate-cases/inference-diagnostics.test.js.map +1 -0
  1306. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.d.ts +15 -0
  1307. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.d.ts.map +1 -0
  1308. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.js +292 -0
  1309. package/dist/ir/validation/soundness-gate-cases/reference-type-resolution.test.js.map +1 -0
  1310. package/dist/ir/validation/soundness-gate-cases/test-helpers.d.ts +12 -0
  1311. package/dist/ir/validation/soundness-gate-cases/test-helpers.d.ts.map +1 -0
  1312. package/dist/ir/validation/soundness-gate-cases/test-helpers.js +36 -0
  1313. package/dist/ir/validation/soundness-gate-cases/test-helpers.js.map +1 -0
  1314. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.d.ts +11 -0
  1315. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.d.ts.map +1 -0
  1316. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.js +249 -0
  1317. package/dist/ir/validation/soundness-gate-cases/type-params-and-intrinsics.test.js.map +1 -0
  1318. package/dist/ir/validation/soundness-gate-expression-validation.d.ts +3 -0
  1319. package/dist/ir/validation/soundness-gate-expression-validation.d.ts.map +1 -0
  1320. package/dist/ir/validation/soundness-gate-expression-validation.js +205 -0
  1321. package/dist/ir/validation/soundness-gate-expression-validation.js.map +1 -0
  1322. package/dist/ir/validation/soundness-gate-shared.d.ts +26 -0
  1323. package/dist/ir/validation/soundness-gate-shared.d.ts.map +1 -0
  1324. package/dist/ir/validation/soundness-gate-shared.js +46 -0
  1325. package/dist/ir/validation/soundness-gate-shared.js.map +1 -0
  1326. package/dist/ir/validation/soundness-gate-statement-validation.d.ts +5 -0
  1327. package/dist/ir/validation/soundness-gate-statement-validation.d.ts.map +1 -0
  1328. package/dist/ir/validation/soundness-gate-statement-validation.js +199 -0
  1329. package/dist/ir/validation/soundness-gate-statement-validation.js.map +1 -0
  1330. package/dist/ir/validation/soundness-gate-type-validation.d.ts +9 -0
  1331. package/dist/ir/validation/soundness-gate-type-validation.d.ts.map +1 -0
  1332. package/dist/ir/validation/soundness-gate-type-validation.js +149 -0
  1333. package/dist/ir/validation/soundness-gate-type-validation.js.map +1 -0
  1334. package/dist/ir/validation/soundness-gate.d.ts +2 -18
  1335. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  1336. package/dist/ir/validation/soundness-gate.js +15 -608
  1337. package/dist/ir/validation/soundness-gate.js.map +1 -1
  1338. package/dist/ir/validation/soundness-gate.test.d.ts +5 -12
  1339. package/dist/ir/validation/soundness-gate.test.d.ts.map +1 -1
  1340. package/dist/ir/validation/soundness-gate.test.js +5 -696
  1341. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  1342. package/dist/ir/validation/virtual-marking-pass.d.ts +10 -2
  1343. package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -1
  1344. package/dist/ir/validation/virtual-marking-pass.js +347 -59
  1345. package/dist/ir/validation/virtual-marking-pass.js.map +1 -1
  1346. package/dist/ir/validation/virtual-marking-pass.test.d.ts +2 -0
  1347. package/dist/ir/validation/virtual-marking-pass.test.d.ts.map +1 -0
  1348. package/dist/ir/validation/virtual-marking-pass.test.js +314 -0
  1349. package/dist/ir/validation/virtual-marking-pass.test.js.map +1 -0
  1350. package/dist/ir/validation/yield-expression-lowering.d.ts +13 -0
  1351. package/dist/ir/validation/yield-expression-lowering.d.ts.map +1 -0
  1352. package/dist/ir/validation/yield-expression-lowering.js +13 -0
  1353. package/dist/ir/validation/yield-expression-lowering.js.map +1 -0
  1354. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.d.ts +14 -0
  1355. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.d.ts.map +1 -0
  1356. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.js +383 -0
  1357. package/dist/ir/validation/yield-lowering-cases/assignment-yield.test.js.map +1 -0
  1358. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.d.ts +12 -0
  1359. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.d.ts.map +1 -0
  1360. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.js +120 -0
  1361. package/dist/ir/validation/yield-lowering-cases/basic-yield.test.js.map +1 -0
  1362. package/dist/ir/validation/yield-lowering-cases/control-flow.test.d.ts +13 -0
  1363. package/dist/ir/validation/yield-lowering-cases/control-flow.test.d.ts.map +1 -0
  1364. package/dist/ir/validation/yield-lowering-cases/control-flow.test.js +284 -0
  1365. package/dist/ir/validation/yield-lowering-cases/control-flow.test.js.map +1 -0
  1366. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.d.ts +13 -0
  1367. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.d.ts.map +1 -0
  1368. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.js +334 -0
  1369. package/dist/ir/validation/yield-lowering-cases/destructuring-and-unsupported.test.js.map +1 -0
  1370. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.d.ts +16 -0
  1371. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.d.ts.map +1 -0
  1372. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.js +321 -0
  1373. package/dist/ir/validation/yield-lowering-cases/for-loop-initializer.test.js.map +1 -0
  1374. package/dist/ir/validation/yield-lowering-cases/helpers.d.ts +32 -0
  1375. package/dist/ir/validation/yield-lowering-cases/helpers.d.ts.map +1 -0
  1376. package/dist/ir/validation/yield-lowering-cases/helpers.js +76 -0
  1377. package/dist/ir/validation/yield-lowering-cases/helpers.js.map +1 -0
  1378. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.d.ts +13 -0
  1379. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.d.ts.map +1 -0
  1380. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.js +221 -0
  1381. package/dist/ir/validation/yield-lowering-cases/nested-yield-in-statements.test.js.map +1 -0
  1382. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.d.ts +11 -0
  1383. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.d.ts.map +1 -0
  1384. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.js +136 -0
  1385. package/dist/ir/validation/yield-lowering-cases/non-generator-and-modules.test.js.map +1 -0
  1386. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.d.ts +14 -0
  1387. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.d.ts.map +1 -0
  1388. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.js +219 -0
  1389. package/dist/ir/validation/yield-lowering-cases/pipeline-contract-and-return.test.js.map +1 -0
  1390. package/dist/ir/validation/yield-lowering-helpers.d.ts +63 -0
  1391. package/dist/ir/validation/yield-lowering-helpers.d.ts.map +1 -0
  1392. package/dist/ir/validation/yield-lowering-helpers.js +240 -0
  1393. package/dist/ir/validation/yield-lowering-helpers.js.map +1 -0
  1394. package/dist/ir/validation/yield-lowering-pass.d.ts +7 -1
  1395. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  1396. package/dist/ir/validation/yield-lowering-pass.js +8 -1418
  1397. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  1398. package/dist/ir/validation/yield-lowering-pass.test.d.ts +8 -11
  1399. package/dist/ir/validation/yield-lowering-pass.test.d.ts.map +1 -1
  1400. package/dist/ir/validation/yield-lowering-pass.test.js +8 -1975
  1401. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  1402. package/dist/ir/validation/yield-main-expression-lowering.d.ts +20 -0
  1403. package/dist/ir/validation/yield-main-expression-lowering.d.ts.map +1 -0
  1404. package/dist/ir/validation/yield-main-expression-lowering.js +381 -0
  1405. package/dist/ir/validation/yield-main-expression-lowering.js.map +1 -0
  1406. package/dist/ir/validation/yield-member-access-lowering.d.ts +21 -0
  1407. package/dist/ir/validation/yield-member-access-lowering.d.ts.map +1 -0
  1408. package/dist/ir/validation/yield-member-access-lowering.js +58 -0
  1409. package/dist/ir/validation/yield-member-access-lowering.js.map +1 -0
  1410. package/dist/ir/validation/yield-module-processing.d.ts +25 -0
  1411. package/dist/ir/validation/yield-module-processing.d.ts.map +1 -0
  1412. package/dist/ir/validation/yield-module-processing.js +180 -0
  1413. package/dist/ir/validation/yield-module-processing.js.map +1 -0
  1414. package/dist/ir/validation/yield-statement-loops.d.ts +51 -0
  1415. package/dist/ir/validation/yield-statement-loops.d.ts.map +1 -0
  1416. package/dist/ir/validation/yield-statement-loops.js +344 -0
  1417. package/dist/ir/validation/yield-statement-loops.js.map +1 -0
  1418. package/dist/ir/validation/yield-statement-lowering.d.ts +18 -0
  1419. package/dist/ir/validation/yield-statement-lowering.d.ts.map +1 -0
  1420. package/dist/ir/validation/yield-statement-lowering.js +48 -0
  1421. package/dist/ir/validation/yield-statement-lowering.js.map +1 -0
  1422. package/dist/ir/validation/yield-statement-simple.d.ts +33 -0
  1423. package/dist/ir/validation/yield-statement-simple.d.ts.map +1 -0
  1424. package/dist/ir/validation/yield-statement-simple.js +268 -0
  1425. package/dist/ir/validation/yield-statement-simple.js.map +1 -0
  1426. package/dist/program/binding-loader.d.ts.map +1 -1
  1427. package/dist/program/binding-loader.js +1099 -6
  1428. package/dist/program/binding-loader.js.map +1 -1
  1429. package/dist/program/binding-payload-invariants.test.d.ts +2 -0
  1430. package/dist/program/binding-payload-invariants.test.d.ts.map +1 -0
  1431. package/dist/program/binding-payload-invariants.test.js +55 -0
  1432. package/dist/program/binding-payload-invariants.test.js.map +1 -0
  1433. package/dist/program/binding-registry-loading.d.ts +51 -0
  1434. package/dist/program/binding-registry-loading.d.ts.map +1 -0
  1435. package/dist/program/binding-registry-loading.js +816 -0
  1436. package/dist/program/binding-registry-loading.js.map +1 -0
  1437. package/dist/program/binding-registry-resolution-extension.d.ts +26 -0
  1438. package/dist/program/binding-registry-resolution-extension.d.ts.map +1 -0
  1439. package/dist/program/binding-registry-resolution-extension.js +161 -0
  1440. package/dist/program/binding-registry-resolution-extension.js.map +1 -0
  1441. package/dist/program/binding-registry-resolution-member.d.ts +46 -0
  1442. package/dist/program/binding-registry-resolution-member.d.ts.map +1 -0
  1443. package/dist/program/binding-registry-resolution-member.js +252 -0
  1444. package/dist/program/binding-registry-resolution-member.js.map +1 -0
  1445. package/dist/program/binding-registry-resolution.d.ts +13 -0
  1446. package/dist/program/binding-registry-resolution.d.ts.map +1 -0
  1447. package/dist/program/binding-registry-resolution.js +12 -0
  1448. package/dist/program/binding-registry-resolution.js.map +1 -0
  1449. package/dist/program/binding-registry.d.ts +34 -22
  1450. package/dist/program/binding-registry.d.ts.map +1 -1
  1451. package/dist/program/binding-registry.js +111 -562
  1452. package/dist/program/binding-registry.js.map +1 -1
  1453. package/dist/program/binding-types.d.ts +34 -3
  1454. package/dist/program/binding-types.d.ts.map +1 -1
  1455. package/dist/program/binding-types.js +72 -2
  1456. package/dist/program/binding-types.js.map +1 -1
  1457. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.d.ts +2 -0
  1458. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.d.ts.map +1 -0
  1459. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.js +115 -0
  1460. package/dist/program/bindings-cases/dotnet-payload-boundaries.test.js.map +1 -0
  1461. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.d.ts +6 -0
  1462. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.d.ts.map +1 -0
  1463. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.js +573 -0
  1464. package/dist/program/bindings-cases/hierarchical-and-type-semantics.test.js.map +1 -0
  1465. package/dist/program/bindings-cases/load-bindings.test.d.ts +7 -0
  1466. package/dist/program/bindings-cases/load-bindings.test.d.ts.map +1 -0
  1467. package/dist/program/bindings-cases/load-bindings.test.js +545 -0
  1468. package/dist/program/bindings-cases/load-bindings.test.js.map +1 -0
  1469. package/dist/program/bindings-cases/registry-basics.test.d.ts +6 -0
  1470. package/dist/program/bindings-cases/registry-basics.test.d.ts.map +1 -0
  1471. package/dist/program/bindings-cases/registry-basics.test.js +201 -0
  1472. package/dist/program/bindings-cases/registry-basics.test.js.map +1 -0
  1473. package/dist/program/bindings-cases/registry-member-resolution.test.d.ts +8 -0
  1474. package/dist/program/bindings-cases/registry-member-resolution.test.d.ts.map +1 -0
  1475. package/dist/program/bindings-cases/registry-member-resolution.test.js +301 -0
  1476. package/dist/program/bindings-cases/registry-member-resolution.test.js.map +1 -0
  1477. package/dist/program/bindings.d.ts +2 -1
  1478. package/dist/program/bindings.d.ts.map +1 -1
  1479. package/dist/program/bindings.js +1 -0
  1480. package/dist/program/bindings.js.map +1 -1
  1481. package/dist/program/bindings.test.d.ts +12 -2
  1482. package/dist/program/bindings.test.d.ts.map +1 -1
  1483. package/dist/program/bindings.test.js +12 -988
  1484. package/dist/program/bindings.test.js.map +1 -1
  1485. package/dist/program/core-declarations.d.ts +16 -0
  1486. package/dist/program/core-declarations.d.ts.map +1 -0
  1487. package/dist/program/core-declarations.js +126 -0
  1488. package/dist/program/core-declarations.js.map +1 -0
  1489. package/dist/program/creation-cases/authoritative-type-roots.test.d.ts +6 -0
  1490. package/dist/program/creation-cases/authoritative-type-roots.test.d.ts.map +1 -0
  1491. package/dist/program/creation-cases/authoritative-type-roots.test.js +136 -0
  1492. package/dist/program/creation-cases/authoritative-type-roots.test.js.map +1 -0
  1493. package/dist/program/creation-cases/compiler-options.test.d.ts +5 -0
  1494. package/dist/program/creation-cases/compiler-options.test.d.ts.map +1 -0
  1495. package/dist/program/creation-cases/compiler-options.test.js +77 -0
  1496. package/dist/program/creation-cases/compiler-options.test.js.map +1 -0
  1497. package/dist/program/creation-cases/core-type-checking.test.d.ts +6 -0
  1498. package/dist/program/creation-cases/core-type-checking.test.d.ts.map +1 -0
  1499. package/dist/program/creation-cases/core-type-checking.test.js +66 -0
  1500. package/dist/program/creation-cases/core-type-checking.test.js.map +1 -0
  1501. package/dist/program/creation-cases/js-surface-globals.test.d.ts +6 -0
  1502. package/dist/program/creation-cases/js-surface-globals.test.d.ts.map +1 -0
  1503. package/dist/program/creation-cases/js-surface-globals.test.js +236 -0
  1504. package/dist/program/creation-cases/js-surface-globals.test.js.map +1 -0
  1505. package/dist/program/creation-cases/module-bindings.test.d.ts +2 -0
  1506. package/dist/program/creation-cases/module-bindings.test.d.ts.map +1 -0
  1507. package/dist/program/creation-cases/module-bindings.test.js +253 -0
  1508. package/dist/program/creation-cases/module-bindings.test.js.map +1 -0
  1509. package/dist/program/creation-cases/package-resolution.test.d.ts +6 -0
  1510. package/dist/program/creation-cases/package-resolution.test.d.ts.map +1 -0
  1511. package/dist/program/creation-cases/package-resolution.test.js +116 -0
  1512. package/dist/program/creation-cases/package-resolution.test.js.map +1 -0
  1513. package/dist/program/creation-cases/surface-isolation.test.d.ts +6 -0
  1514. package/dist/program/creation-cases/surface-isolation.test.d.ts.map +1 -0
  1515. package/dist/program/creation-cases/surface-isolation.test.js +196 -0
  1516. package/dist/program/creation-cases/surface-isolation.test.js.map +1 -0
  1517. package/dist/program/creation-cases/test-package-helpers.d.ts +6 -0
  1518. package/dist/program/creation-cases/test-package-helpers.d.ts.map +1 -0
  1519. package/dist/program/creation-cases/test-package-helpers.js +26 -0
  1520. package/dist/program/creation-cases/test-package-helpers.js.map +1 -0
  1521. package/dist/program/creation.d.ts +3 -14
  1522. package/dist/program/creation.d.ts.map +1 -1
  1523. package/dist/program/creation.js +3 -780
  1524. package/dist/program/creation.js.map +1 -1
  1525. package/dist/program/creation.test.d.ts +10 -2
  1526. package/dist/program/creation.test.d.ts.map +1 -1
  1527. package/dist/program/creation.test.js +10 -929
  1528. package/dist/program/creation.test.js.map +1 -1
  1529. package/dist/program/declaration-module-aliases.d.ts +13 -0
  1530. package/dist/program/declaration-module-aliases.d.ts.map +1 -0
  1531. package/dist/program/declaration-module-aliases.js +144 -0
  1532. package/dist/program/declaration-module-aliases.js.map +1 -0
  1533. package/dist/program/dependency-graph.d.ts +3 -1
  1534. package/dist/program/dependency-graph.d.ts.map +1 -1
  1535. package/dist/program/dependency-graph.js +211 -23
  1536. package/dist/program/dependency-graph.js.map +1 -1
  1537. package/dist/program/dependency-graph.test.js +307 -85
  1538. package/dist/program/dependency-graph.test.js.map +1 -1
  1539. package/dist/program/diagnostics.d.ts +1 -1
  1540. package/dist/program/diagnostics.d.ts.map +1 -1
  1541. package/dist/program/diagnostics.js +2 -48
  1542. package/dist/program/diagnostics.js.map +1 -1
  1543. package/dist/program/diagnostics.test.js +9 -24
  1544. package/dist/program/diagnostics.test.js.map +1 -1
  1545. package/dist/program/dotnet-binding-payload.d.ts +12 -0
  1546. package/dist/program/dotnet-binding-payload.d.ts.map +1 -0
  1547. package/dist/program/dotnet-binding-payload.js +71 -0
  1548. package/dist/program/dotnet-binding-payload.js.map +1 -0
  1549. package/dist/program/fixture-fast-coverage.test.d.ts +2 -0
  1550. package/dist/program/fixture-fast-coverage.test.d.ts.map +1 -0
  1551. package/dist/program/fixture-fast-coverage.test.js +225 -0
  1552. package/dist/program/fixture-fast-coverage.test.js.map +1 -0
  1553. package/dist/program/index.d.ts +1 -1
  1554. package/dist/program/index.d.ts.map +1 -1
  1555. package/dist/program/index.js +1 -1
  1556. package/dist/program/index.js.map +1 -1
  1557. package/dist/program/json-deserialize-overload-resolution.test.d.ts +2 -0
  1558. package/dist/program/json-deserialize-overload-resolution.test.d.ts.map +1 -0
  1559. package/dist/program/json-deserialize-overload-resolution.test.js +57 -0
  1560. package/dist/program/json-deserialize-overload-resolution.test.js.map +1 -0
  1561. package/dist/program/metadata.d.ts.map +1 -1
  1562. package/dist/program/metadata.js +24 -8
  1563. package/dist/program/metadata.js.map +1 -1
  1564. package/dist/program/metadata.test.js +30 -82
  1565. package/dist/program/metadata.test.js.map +1 -1
  1566. package/dist/program/module-resolution.d.ts +29 -0
  1567. package/dist/program/module-resolution.d.ts.map +1 -0
  1568. package/dist/program/module-resolution.js +257 -0
  1569. package/dist/program/module-resolution.js.map +1 -0
  1570. package/dist/program/package-roots.d.ts +3 -1
  1571. package/dist/program/package-roots.d.ts.map +1 -1
  1572. package/dist/program/package-roots.js +159 -21
  1573. package/dist/program/package-roots.js.map +1 -1
  1574. package/dist/program/package-roots.test.js +81 -25
  1575. package/dist/program/package-roots.test.js.map +1 -1
  1576. package/dist/program/program-assembly.d.ts +12 -0
  1577. package/dist/program/program-assembly.d.ts.map +1 -0
  1578. package/dist/program/program-assembly.js +409 -0
  1579. package/dist/program/program-assembly.js.map +1 -0
  1580. package/dist/program/program-factory.d.ts +9 -0
  1581. package/dist/program/program-factory.d.ts.map +1 -0
  1582. package/dist/program/program-factory.js +9 -0
  1583. package/dist/program/program-factory.js.map +1 -0
  1584. package/dist/program/program-input-discovery.d.ts +19 -0
  1585. package/dist/program/program-input-discovery.d.ts.map +1 -0
  1586. package/dist/program/program-input-discovery.js +379 -0
  1587. package/dist/program/program-input-discovery.js.map +1 -0
  1588. package/dist/program/program-input-discovery.test.d.ts +2 -0
  1589. package/dist/program/program-input-discovery.test.d.ts.map +1 -0
  1590. package/dist/program/program-input-discovery.test.js +342 -0
  1591. package/dist/program/program-input-discovery.test.js.map +1 -0
  1592. package/dist/program/source-binding-imports.d.ts +7 -0
  1593. package/dist/program/source-binding-imports.d.ts.map +1 -0
  1594. package/dist/program/source-binding-imports.js +80 -0
  1595. package/dist/program/source-binding-imports.js.map +1 -0
  1596. package/dist/program/source-binding-imports.test.d.ts +2 -0
  1597. package/dist/program/source-binding-imports.test.d.ts.map +1 -0
  1598. package/dist/program/source-binding-imports.test.js +58 -0
  1599. package/dist/program/source-binding-imports.test.js.map +1 -0
  1600. package/dist/program/source-file-identity.d.ts +13 -0
  1601. package/dist/program/source-file-identity.d.ts.map +1 -0
  1602. package/dist/program/source-file-identity.js +127 -0
  1603. package/dist/program/source-file-identity.js.map +1 -0
  1604. package/dist/program/source-package-metadata.d.ts +14 -0
  1605. package/dist/program/source-package-metadata.d.ts.map +1 -0
  1606. package/dist/program/source-package-metadata.js +227 -0
  1607. package/dist/program/source-package-metadata.js.map +1 -0
  1608. package/dist/program/tsbindgen-instance-receiver-substitution.test.d.ts +2 -0
  1609. package/dist/program/tsbindgen-instance-receiver-substitution.test.d.ts.map +1 -0
  1610. package/dist/program/tsbindgen-instance-receiver-substitution.test.js +194 -0
  1611. package/dist/program/tsbindgen-instance-receiver-substitution.test.js.map +1 -0
  1612. package/dist/program/types.d.ts +3 -2
  1613. package/dist/program/types.d.ts.map +1 -1
  1614. package/dist/program/xunit-equal-overload-resolution.test.d.ts +2 -0
  1615. package/dist/program/xunit-equal-overload-resolution.test.d.ts.map +1 -0
  1616. package/dist/program/xunit-equal-overload-resolution.test.js +205 -0
  1617. package/dist/program/xunit-equal-overload-resolution.test.js.map +1 -0
  1618. package/dist/program.d.ts +1 -1
  1619. package/dist/program.d.ts.map +1 -1
  1620. package/dist/resolver/clr-bindings-package-resolution.d.ts +28 -0
  1621. package/dist/resolver/clr-bindings-package-resolution.d.ts.map +1 -0
  1622. package/dist/resolver/clr-bindings-package-resolution.js +120 -0
  1623. package/dist/resolver/clr-bindings-package-resolution.js.map +1 -0
  1624. package/dist/resolver/clr-bindings-resolve-logic.d.ts +40 -0
  1625. package/dist/resolver/clr-bindings-resolve-logic.d.ts.map +1 -0
  1626. package/dist/resolver/clr-bindings-resolve-logic.js +192 -0
  1627. package/dist/resolver/clr-bindings-resolve-logic.js.map +1 -0
  1628. package/dist/resolver/clr-bindings-resolver.d.ts +9 -69
  1629. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  1630. package/dist/resolver/clr-bindings-resolver.js +4 -436
  1631. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  1632. package/dist/resolver/import-resolution.d.ts +3 -0
  1633. package/dist/resolver/import-resolution.d.ts.map +1 -1
  1634. package/dist/resolver/import-resolution.js +120 -33
  1635. package/dist/resolver/import-resolution.js.map +1 -1
  1636. package/dist/resolver/source-package-resolution.d.ts +18 -0
  1637. package/dist/resolver/source-package-resolution.d.ts.map +1 -1
  1638. package/dist/resolver/source-package-resolution.js +141 -14
  1639. package/dist/resolver/source-package-resolution.js.map +1 -1
  1640. package/dist/resolver/source-package-resolution.test.js +27 -52
  1641. package/dist/resolver/source-package-resolution.test.js.map +1 -1
  1642. package/dist/resolver-cases/namespace-and-classname.test.d.ts +5 -0
  1643. package/dist/resolver-cases/namespace-and-classname.test.d.ts.map +1 -0
  1644. package/dist/resolver-cases/namespace-and-classname.test.js +32 -0
  1645. package/dist/resolver-cases/namespace-and-classname.test.js.map +1 -0
  1646. package/dist/resolver-cases/resolve-import.test.d.ts +5 -0
  1647. package/dist/resolver-cases/resolve-import.test.d.ts.map +1 -0
  1648. package/dist/resolver-cases/resolve-import.test.js +460 -0
  1649. package/dist/resolver-cases/resolve-import.test.js.map +1 -0
  1650. package/dist/resolver.test.d.ts +2 -4
  1651. package/dist/resolver.test.d.ts.map +1 -1
  1652. package/dist/resolver.test.js +2 -289
  1653. package/dist/resolver.test.js.map +1 -1
  1654. package/dist/surface/profiles.d.ts +1 -1
  1655. package/dist/surface/profiles.d.ts.map +1 -1
  1656. package/dist/surface/profiles.js +146 -53
  1657. package/dist/surface/profiles.js.map +1 -1
  1658. package/dist/surface/profiles.test.js +97 -108
  1659. package/dist/surface/profiles.test.js.map +1 -1
  1660. package/dist/testing/filesystem-fixtures.d.ts +7 -0
  1661. package/dist/testing/filesystem-fixtures.d.ts.map +1 -0
  1662. package/dist/testing/filesystem-fixtures.js +80 -0
  1663. package/dist/testing/filesystem-fixtures.js.map +1 -0
  1664. package/dist/types/diagnostic.d.ts +1 -1
  1665. package/dist/types/diagnostic.d.ts.map +1 -1
  1666. package/dist/types/diagnostic.js.map +1 -1
  1667. package/dist/validation/contextual-type-analysis.d.ts +12 -0
  1668. package/dist/validation/contextual-type-analysis.d.ts.map +1 -0
  1669. package/dist/validation/contextual-type-analysis.js +11 -0
  1670. package/dist/validation/contextual-type-analysis.js.map +1 -0
  1671. package/dist/validation/contextual-type-checks.d.ts +35 -0
  1672. package/dist/validation/contextual-type-checks.d.ts.map +1 -0
  1673. package/dist/validation/contextual-type-checks.js +214 -0
  1674. package/dist/validation/contextual-type-checks.js.map +1 -0
  1675. package/dist/validation/exports.d.ts.map +1 -1
  1676. package/dist/validation/exports.js +14 -15
  1677. package/dist/validation/exports.js.map +1 -1
  1678. package/dist/validation/features-cases/promise-chaining.test.d.ts +2 -0
  1679. package/dist/validation/features-cases/promise-chaining.test.d.ts.map +1 -0
  1680. package/dist/validation/features-cases/promise-chaining.test.js +113 -0
  1681. package/dist/validation/features-cases/promise-chaining.test.js.map +1 -0
  1682. package/dist/validation/features-cases/test-helpers.d.ts +11 -0
  1683. package/dist/validation/features-cases/test-helpers.d.ts.map +1 -0
  1684. package/dist/validation/features-cases/test-helpers.js +125 -0
  1685. package/dist/validation/features-cases/test-helpers.js.map +1 -0
  1686. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.d.ts +2 -0
  1687. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.d.ts.map +1 -0
  1688. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.js +158 -0
  1689. package/dist/validation/features-cases/tsn2001-unsupported-syntax.test.js.map +1 -0
  1690. package/dist/validation/features-cases/tsn5001-function-length.test.d.ts +2 -0
  1691. package/dist/validation/features-cases/tsn5001-function-length.test.d.ts.map +1 -0
  1692. package/dist/validation/features-cases/tsn5001-function-length.test.js +104 -0
  1693. package/dist/validation/features-cases/tsn5001-function-length.test.js.map +1 -0
  1694. package/dist/validation/features.d.ts.map +1 -1
  1695. package/dist/validation/features.js +223 -0
  1696. package/dist/validation/features.js.map +1 -1
  1697. package/dist/validation/features.test.d.ts +3 -1
  1698. package/dist/validation/features.test.d.ts.map +1 -1
  1699. package/dist/validation/features.test.js +3 -386
  1700. package/dist/validation/features.test.js.map +1 -1
  1701. package/dist/validation/imports.d.ts.map +1 -1
  1702. package/dist/validation/imports.js +37 -3
  1703. package/dist/validation/imports.js.map +1 -1
  1704. package/dist/validation/imports.test.js +45 -9
  1705. package/dist/validation/imports.test.js.map +1 -1
  1706. package/dist/validation/static-safety-arrow-rules.d.ts +11 -0
  1707. package/dist/validation/static-safety-arrow-rules.d.ts.map +1 -0
  1708. package/dist/validation/static-safety-arrow-rules.js +54 -0
  1709. package/dist/validation/static-safety-arrow-rules.js.map +1 -0
  1710. package/dist/validation/static-safety-dictionary-keys.d.ts +10 -0
  1711. package/dist/validation/static-safety-dictionary-keys.d.ts.map +1 -0
  1712. package/dist/validation/static-safety-dictionary-keys.js +32 -0
  1713. package/dist/validation/static-safety-dictionary-keys.js.map +1 -0
  1714. package/dist/validation/static-safety-rules.d.ts +27 -0
  1715. package/dist/validation/static-safety-rules.d.ts.map +1 -0
  1716. package/dist/validation/static-safety-rules.js +231 -0
  1717. package/dist/validation/static-safety-rules.js.map +1 -0
  1718. package/dist/validation/static-safety.d.ts +4 -7
  1719. package/dist/validation/static-safety.d.ts.map +1 -1
  1720. package/dist/validation/static-safety.js +3 -673
  1721. package/dist/validation/static-safety.js.map +1 -1
  1722. package/dist/validation/synthesis-eligibility.d.ts +31 -0
  1723. package/dist/validation/synthesis-eligibility.d.ts.map +1 -0
  1724. package/dist/validation/synthesis-eligibility.js +161 -0
  1725. package/dist/validation/synthesis-eligibility.js.map +1 -0
  1726. package/dist/validator-cases/any-and-object-literals.test.d.ts +10 -0
  1727. package/dist/validator-cases/any-and-object-literals.test.d.ts.map +1 -0
  1728. package/dist/validator-cases/any-and-object-literals.test.js +271 -0
  1729. package/dist/validator-cases/any-and-object-literals.test.js.map +1 -0
  1730. package/dist/validator-cases/generic-validation.test.d.ts +11 -0
  1731. package/dist/validator-cases/generic-validation.test.d.ts.map +1 -0
  1732. package/dist/validator-cases/generic-validation.test.js +282 -0
  1733. package/dist/validator-cases/generic-validation.test.js.map +1 -0
  1734. package/dist/validator-cases/helpers.d.ts +9 -0
  1735. package/dist/validator-cases/helpers.d.ts.map +1 -0
  1736. package/dist/validator-cases/helpers.js +46 -0
  1737. package/dist/validator-cases/helpers.js.map +1 -0
  1738. package/dist/validator-cases/parameters-and-dict-keys.test.d.ts +10 -0
  1739. package/dist/validator-cases/parameters-and-dict-keys.test.d.ts.map +1 -0
  1740. package/dist/validator-cases/parameters-and-dict-keys.test.js +280 -0
  1741. package/dist/validator-cases/parameters-and-dict-keys.test.js.map +1 -0
  1742. package/dist/validator-cases/utility-types.test.d.ts +12 -0
  1743. package/dist/validator-cases/utility-types.test.d.ts.map +1 -0
  1744. package/dist/validator-cases/utility-types.test.js +323 -0
  1745. package/dist/validator-cases/utility-types.test.js.map +1 -0
  1746. package/dist/validator-maximus-cases/array-and-literal-inference.test.d.ts +2 -0
  1747. package/dist/validator-maximus-cases/array-and-literal-inference.test.d.ts.map +1 -0
  1748. package/dist/validator-maximus-cases/array-and-literal-inference.test.js +221 -0
  1749. package/dist/validator-maximus-cases/array-and-literal-inference.test.js.map +1 -0
  1750. package/dist/validator-maximus-cases/deterministic-typing.test.d.ts +2 -0
  1751. package/dist/validator-maximus-cases/deterministic-typing.test.d.ts.map +1 -0
  1752. package/dist/validator-maximus-cases/deterministic-typing.test.js +432 -0
  1753. package/dist/validator-maximus-cases/deterministic-typing.test.js.map +1 -0
  1754. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.d.ts +2 -0
  1755. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.d.ts.map +1 -0
  1756. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.js +273 -0
  1757. package/dist/validator-maximus-cases/dictionary-and-object-literal.test.js.map +1 -0
  1758. package/dist/validator-maximus-cases/feature-gating.test.d.ts +2 -0
  1759. package/dist/validator-maximus-cases/feature-gating.test.d.ts.map +1 -0
  1760. package/dist/validator-maximus-cases/feature-gating.test.js +181 -0
  1761. package/dist/validator-maximus-cases/feature-gating.test.js.map +1 -0
  1762. package/dist/validator-maximus-cases/generic-function-values.test.d.ts +2 -0
  1763. package/dist/validator-maximus-cases/generic-function-values.test.d.ts.map +1 -0
  1764. package/dist/validator-maximus-cases/generic-function-values.test.js +346 -0
  1765. package/dist/validator-maximus-cases/generic-function-values.test.js.map +1 -0
  1766. package/dist/validator-maximus-cases/helpers.d.ts +9 -0
  1767. package/dist/validator-maximus-cases/helpers.d.ts.map +1 -0
  1768. package/dist/validator-maximus-cases/helpers.js +113 -0
  1769. package/dist/validator-maximus-cases/helpers.js.map +1 -0
  1770. package/dist/validator-maximus-cases/type-syntax.test.d.ts +2 -0
  1771. package/dist/validator-maximus-cases/type-syntax.test.d.ts.map +1 -0
  1772. package/dist/validator-maximus-cases/type-syntax.test.js +157 -0
  1773. package/dist/validator-maximus-cases/type-syntax.test.js.map +1 -0
  1774. package/dist/validator.maximus.test.d.ts +6 -1
  1775. package/dist/validator.maximus.test.d.ts.map +1 -1
  1776. package/dist/validator.maximus.test.js +6 -1417
  1777. package/dist/validator.maximus.test.js.map +1 -1
  1778. package/dist/validator.test.d.ts +4 -10
  1779. package/dist/validator.test.d.ts.map +1 -1
  1780. package/dist/validator.test.js +4 -1086
  1781. package/dist/validator.test.js.map +1 -1
  1782. package/package.json +3 -3
@@ -1,1417 +1,7 @@
1
- /**
2
- * Tests for utility type expansion
3
- *
4
- * Covers the safety guarantees per Alice's review:
5
- * 1. Index signatures block expansion (never drop members)
6
- * 2. Symbol/computed keys block expansion (never drop members)
7
- * 3. Explicit undefined is preserved (not stripped)
8
- */
9
- import { describe, it } from "mocha";
10
- import { expect } from "chai";
11
- import * as ts from "typescript";
12
- import { expandUtilityType, expandConditionalUtilityType, expandRecordType, } from "./utility-types.js";
13
- import { createBinding } from "../../../binding/index.js";
14
- /**
15
- * Assert value is not null/undefined and return it typed as non-null.
16
- * Throws if value is null or undefined.
17
- */
18
- function assertDefined(value, msg) {
19
- if (value === null || value === undefined) {
20
- throw new Error(msg ?? "Expected value to be defined");
21
- }
22
- return value;
23
- }
24
- /**
25
- * Helper to create a TypeScript program from source code
26
- */
27
- const createTestProgram = (source, fileName = "test.ts") => {
28
- const compilerOptions = {
29
- target: ts.ScriptTarget.ES2022,
30
- module: ts.ModuleKind.NodeNext,
31
- strict: true,
32
- noEmit: true,
33
- };
34
- const host = ts.createCompilerHost(compilerOptions);
35
- const originalGetSourceFile = host.getSourceFile;
36
- const originalFileExists = host.fileExists;
37
- const originalReadFile = host.readFile;
38
- host.getSourceFile = (name, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
39
- if (name === fileName) {
40
- return ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
41
- }
42
- return originalGetSourceFile.call(host, name, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
43
- };
44
- host.fileExists = (name) => name === fileName || originalFileExists.call(host, name);
45
- host.readFile = (name) => name === fileName ? source : originalReadFile.call(host, name);
46
- const program = ts.createProgram([fileName], compilerOptions, host);
47
- const sourceFile = assertDefined(program.getSourceFile(fileName), `Source file ${fileName} not found`);
48
- const checker = program.getTypeChecker();
49
- const binding = createBinding(checker);
50
- return { program, checker, sourceFile, binding };
51
- };
52
- /**
53
- * Helper to find a type alias by name and get its type reference node
54
- */
55
- const findTypeAliasReference = (sourceFile, aliasName) => {
56
- let result = null;
57
- const visitor = (node) => {
58
- if (ts.isTypeAliasDeclaration(node) && node.name.text === aliasName) {
59
- if (ts.isTypeReferenceNode(node.type)) {
60
- result = node.type;
61
- }
62
- }
63
- ts.forEachChild(node, visitor);
64
- };
65
- ts.forEachChild(sourceFile, visitor);
66
- return result;
67
- };
68
- /**
69
- * Stub convertType for testing - just returns the type name
70
- */
71
- const stubConvertType = (node, _binding) => {
72
- if (ts.isTypeReferenceNode(node)) {
73
- const name = ts.isIdentifier(node.typeName)
74
- ? node.typeName.text
75
- : node.typeName.getText();
76
- return { kind: "referenceType", name, typeArguments: [] };
77
- }
78
- if (node.kind === ts.SyntaxKind.StringKeyword) {
79
- return { kind: "primitiveType", name: "string" };
80
- }
81
- if (node.kind === ts.SyntaxKind.NumberKeyword) {
82
- return { kind: "primitiveType", name: "number" };
83
- }
84
- if (node.kind === ts.SyntaxKind.BooleanKeyword) {
85
- return { kind: "primitiveType", name: "boolean" };
86
- }
87
- if (node.kind === ts.SyntaxKind.UndefinedKeyword) {
88
- return { kind: "primitiveType", name: "undefined" };
89
- }
90
- if (node.kind === ts.SyntaxKind.NullKeyword) {
91
- return { kind: "primitiveType", name: "null" };
92
- }
93
- if (node.kind === ts.SyntaxKind.NeverKeyword) {
94
- return { kind: "neverType" };
95
- }
96
- // Handle literal type nodes (e.g., "a", 1, null, undefined)
97
- if (ts.isLiteralTypeNode(node)) {
98
- const literal = node.literal;
99
- if (ts.isStringLiteral(literal)) {
100
- return { kind: "literalType", value: literal.text };
101
- }
102
- if (ts.isNumericLiteral(literal)) {
103
- return { kind: "literalType", value: Number(literal.text) };
104
- }
105
- // null can appear as LiteralTypeNode in type positions
106
- if (literal.kind === ts.SyntaxKind.NullKeyword) {
107
- return { kind: "primitiveType", name: "null" };
108
- }
109
- }
110
- if (ts.isUnionTypeNode(node)) {
111
- return {
112
- kind: "unionType",
113
- types: node.types.map((t) => stubConvertType(t, _binding)),
114
- };
115
- }
116
- return { kind: "anyType" };
117
- };
118
- describe("Utility Type Expansion Safety", () => {
119
- describe("Index signatures block expansion", () => {
120
- it("should return null for Partial<T> when T has string index signature", () => {
121
- const source = `
122
- interface WithStringIndex {
123
- [key: string]: number;
124
- name: string;
125
- }
126
- type PartialWithIndex = Partial<WithStringIndex>;
127
- `;
128
- const { binding, sourceFile } = createTestProgram(source);
129
- const typeRef = findTypeAliasReference(sourceFile, "PartialWithIndex");
130
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
131
- // Should return null because expansion would lose the index signature
132
- expect(result).to.equal(null);
133
- });
134
- it("should return null for Readonly<T> when T has number index signature", () => {
135
- const source = `
136
- interface WithNumberIndex {
137
- [key: number]: string;
138
- length: number;
139
- }
140
- type ReadonlyWithIndex = Readonly<WithNumberIndex>;
141
- `;
142
- const { binding, sourceFile } = createTestProgram(source);
143
- const typeRef = findTypeAliasReference(sourceFile, "ReadonlyWithIndex");
144
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Readonly", binding, stubConvertType);
145
- // Should return null because expansion would lose the index signature
146
- expect(result).to.equal(null);
147
- });
148
- it("should expand normally when T has no index signatures", () => {
149
- const source = `
150
- interface Person {
151
- name: string;
152
- age: number;
153
- }
154
- type PartialPerson = Partial<Person>;
155
- `;
156
- const { binding, sourceFile } = createTestProgram(source);
157
- const typeRef = findTypeAliasReference(sourceFile, "PartialPerson");
158
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
159
- // Should expand successfully
160
- expect(result).not.to.equal(null);
161
- expect(result?.kind).to.equal("objectType");
162
- expect(result?.members).to.have.length(2);
163
- });
164
- });
165
- describe("Symbol/computed keys block expansion", () => {
166
- it("should return null when T has symbol keys", () => {
167
- // Note: Symbol keys in TypeScript are represented with __@ prefix internally
168
- // This test validates that the expansion correctly identifies and rejects them
169
- const source = `
170
- const sym = Symbol("test");
171
- interface WithSymbol {
172
- [sym]: string;
173
- name: string;
174
- }
175
- type PartialWithSymbol = Partial<WithSymbol>;
176
- `;
177
- const { binding, sourceFile } = createTestProgram(source);
178
- const typeRef = findTypeAliasReference(sourceFile, "PartialWithSymbol");
179
- // This may or may not find the type ref depending on how TS handles it
180
- if (typeRef) {
181
- const result = expandUtilityType(typeRef, "Partial", binding, stubConvertType);
182
- // If expansion proceeds, it should return null due to symbol key
183
- // (symbol keys start with __@ internally)
184
- // Note: The actual behavior depends on whether TS resolves the symbol key
185
- // Either result is null (rejected) or expanded (symbol was ignored)
186
- expect(result === null || result.kind === "objectType").to.equal(true);
187
- }
188
- // Test passes if we get here - the key insight is the code handles this case
189
- });
190
- });
191
- describe("Explicit undefined preservation", () => {
192
- it("should preserve explicit undefined in optional property type", () => {
193
- const source = `
194
- interface WithExplicitUndefined {
195
- x?: string | undefined;
196
- }
197
- type PartialWithUndefined = Partial<WithExplicitUndefined>;
198
- `;
199
- const { binding, sourceFile } = createTestProgram(source);
200
- const typeRef = findTypeAliasReference(sourceFile, "PartialWithUndefined");
201
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
202
- expect(result).not.to.equal(null);
203
- expect(result?.kind).to.equal("objectType");
204
- // The property should preserve the union with undefined
205
- const xProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "x");
206
- expect(xProp).not.to.equal(undefined);
207
- // The type should be a union containing undefined
208
- if (xProp && xProp.kind === "propertySignature") {
209
- // With explicit undefined, the type should include undefined in the union
210
- // The exact representation depends on whether we stripped synthetic undefined
211
- // The key is that we DON'T strip it when explicit undefined was declared
212
- expect(xProp.type.kind).to.equal("unionType");
213
- }
214
- });
215
- it("should strip synthetic undefined from optional property without explicit undefined", () => {
216
- const source = `
217
- interface WithSyntheticUndefined {
218
- x?: string;
219
- }
220
- type PartialWithSynthetic = Partial<WithSyntheticUndefined>;
221
- `;
222
- const { binding, sourceFile } = createTestProgram(source);
223
- const typeRef = findTypeAliasReference(sourceFile, "PartialWithSynthetic");
224
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
225
- expect(result).not.to.equal(null);
226
- expect(result?.kind).to.equal("objectType");
227
- // The property type should be string (not string | undefined)
228
- // because we strip synthetic undefined
229
- const xProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "x");
230
- expect(xProp).not.to.equal(undefined);
231
- if (xProp && xProp.kind === "propertySignature") {
232
- // Synthetic undefined should be stripped, leaving just string
233
- expect(xProp.type.kind).to.equal("primitiveType");
234
- if (xProp.type.kind === "primitiveType") {
235
- expect(xProp.type.name).to.equal("string");
236
- }
237
- }
238
- });
239
- it("should preserve explicit undefined in required property", () => {
240
- const source = `
241
- interface WithRequiredUndefined {
242
- x: string | undefined;
243
- }
244
- type PartialRequired = Partial<WithRequiredUndefined>;
245
- `;
246
- const { binding, sourceFile } = createTestProgram(source);
247
- const typeRef = findTypeAliasReference(sourceFile, "PartialRequired");
248
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
249
- expect(result).not.to.equal(null);
250
- const xProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "x");
251
- expect(xProp).not.to.equal(undefined);
252
- // Required property with explicit undefined should keep the union
253
- if (xProp && xProp.kind === "propertySignature") {
254
- expect(xProp.type.kind).to.equal("unionType");
255
- }
256
- });
257
- });
258
- describe("Readonly preservation in nested utility types", () => {
259
- it("should preserve readonly in Partial<Readonly<T>>", () => {
260
- const source = `
261
- interface Person {
262
- name: string;
263
- age: number;
264
- }
265
- type PartialReadonly = Partial<Readonly<Person>>;
266
- `;
267
- const { binding, sourceFile } = createTestProgram(source);
268
- const typeRef = findTypeAliasReference(sourceFile, "PartialReadonly");
269
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
270
- expect(result).not.to.equal(null);
271
- expect(result?.kind).to.equal("objectType");
272
- // All properties should be readonly (from inner Readonly<T>)
273
- const nameProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "name");
274
- expect(nameProp).not.to.equal(undefined);
275
- if (nameProp && nameProp.kind === "propertySignature") {
276
- expect(nameProp.isReadonly).to.equal(true);
277
- expect(nameProp.isOptional).to.equal(true);
278
- }
279
- });
280
- it("should preserve readonly and optional in Readonly<Partial<T>>", () => {
281
- const source = `
282
- interface Person {
283
- name: string;
284
- age: number;
285
- }
286
- type ReadonlyPartial = Readonly<Partial<Person>>;
287
- `;
288
- const { binding, sourceFile } = createTestProgram(source);
289
- const typeRef = findTypeAliasReference(sourceFile, "ReadonlyPartial");
290
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Readonly", binding, stubConvertType);
291
- expect(result).not.to.equal(null);
292
- expect(result?.kind).to.equal("objectType");
293
- // All properties should be both readonly (from Readonly<T>) and optional (from Partial<T>)
294
- const nameProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "name");
295
- expect(nameProp).not.to.equal(undefined);
296
- if (nameProp && nameProp.kind === "propertySignature") {
297
- expect(nameProp.isReadonly).to.equal(true);
298
- expect(nameProp.isOptional).to.equal(true);
299
- }
300
- });
301
- });
302
- describe("Method signatures in utility types", () => {
303
- it("should expand interface with method as methodSignature", () => {
304
- const source = `
305
- interface WithMethod {
306
- name: string;
307
- greet(greeting: string): string;
308
- }
309
- type PartialWithMethod = Partial<WithMethod>;
310
- `;
311
- const { binding, sourceFile } = createTestProgram(source);
312
- const typeRef = findTypeAliasReference(sourceFile, "PartialWithMethod");
313
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
314
- expect(result).not.to.equal(null);
315
- expect(result?.kind).to.equal("objectType");
316
- // Should have both property and method
317
- const nameProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "name");
318
- const greetMethod = result?.members.find((m) => m.kind === "methodSignature" && m.name === "greet");
319
- expect(nameProp).not.to.equal(undefined);
320
- expect(greetMethod).not.to.equal(undefined);
321
- // Method should have parameters
322
- if (greetMethod && greetMethod.kind === "methodSignature") {
323
- expect(greetMethod.parameters).to.have.length(1);
324
- }
325
- });
326
- it("should ignore internal marker members during utility expansion", () => {
327
- const source = `
328
- interface Probe {
329
- readonly "__tsonic_binding_alias_Acme.Core.Probe"?: never;
330
- readonly __tsonic_type_Acme_Core_Probe?: never;
331
- readonly __tsonic_iface_Acme_Core_Probe?: never;
332
- value?: number;
333
- greet(name: string): string;
334
- }
335
- type RequiredProbe = Required<Probe>;
336
- `;
337
- const { binding, sourceFile } = createTestProgram(source);
338
- const typeRef = findTypeAliasReference(sourceFile, "RequiredProbe");
339
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Required", binding, stubConvertType);
340
- expect(result).not.to.equal(null);
341
- expect(result?.kind).to.equal("objectType");
342
- const memberNames = result?.members.map((member) => member.name).sort() ?? [];
343
- expect(memberNames).to.deep.equal(["greet", "value"]);
344
- });
345
- });
346
- describe("Pick and Omit with multiple keys", () => {
347
- it("should expand Pick with multiple keys", () => {
348
- const source = `
349
- interface Person {
350
- name: string;
351
- age: number;
352
- email: string;
353
- phone: string;
354
- }
355
- type ContactInfo = Pick<Person, "name" | "email" | "phone">;
356
- `;
357
- const { binding, sourceFile } = createTestProgram(source);
358
- const typeRef = findTypeAliasReference(sourceFile, "ContactInfo");
359
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Pick", binding, stubConvertType);
360
- expect(result).not.to.equal(null);
361
- expect(result?.kind).to.equal("objectType");
362
- // Should only have name, email, phone (not age)
363
- expect(result?.members).to.have.length(3);
364
- const propNames = result?.members
365
- .filter((m) => m.kind === "propertySignature")
366
- .map((m) => m.name);
367
- expect(propNames).to.include("name");
368
- expect(propNames).to.include("email");
369
- expect(propNames).to.include("phone");
370
- expect(propNames).not.to.include("age");
371
- });
372
- it("should expand Omit with multiple keys", () => {
373
- const source = `
374
- interface Person {
375
- name: string;
376
- age: number;
377
- email: string;
378
- phone: string;
379
- }
380
- type MinimalPerson = Omit<Person, "email" | "phone">;
381
- `;
382
- const { binding, sourceFile } = createTestProgram(source);
383
- const typeRef = findTypeAliasReference(sourceFile, "MinimalPerson");
384
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Omit", binding, stubConvertType);
385
- expect(result).not.to.equal(null);
386
- expect(result?.kind).to.equal("objectType");
387
- // Should only have name, age (not email, phone)
388
- expect(result?.members).to.have.length(2);
389
- const propNames = result?.members
390
- .filter((m) => m.kind === "propertySignature")
391
- .map((m) => m.name);
392
- expect(propNames).to.include("name");
393
- expect(propNames).to.include("age");
394
- expect(propNames).not.to.include("email");
395
- expect(propNames).not.to.include("phone");
396
- });
397
- });
398
- describe("Type parameter detection", () => {
399
- it("should return null for Partial<T> where T is a type parameter", () => {
400
- const source = `
401
- function process<T>(data: Partial<T>): void {}
402
- `;
403
- const { binding, sourceFile } = createTestProgram(source);
404
- // Find the Partial<T> type reference in the function parameter
405
- let typeRef = null;
406
- const visitor = (node) => {
407
- if (ts.isTypeReferenceNode(node) &&
408
- ts.isIdentifier(node.typeName) &&
409
- node.typeName.text === "Partial") {
410
- typeRef = node;
411
- }
412
- ts.forEachChild(node, visitor);
413
- };
414
- ts.forEachChild(sourceFile, visitor);
415
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
416
- // Should return null because T is a type parameter - can't expand at compile time
417
- expect(result).to.equal(null);
418
- });
419
- });
420
- describe("Comprehensive utility type tests (nested, recursive, generic)", () => {
421
- it("should expand Partial on recursive type (tree node)", () => {
422
- const source = `
423
- interface TreeNode {
424
- value: number;
425
- children: TreeNode[];
426
- }
427
- type PartialTreeNode = Partial<TreeNode>;
428
- `;
429
- const { binding, sourceFile } = createTestProgram(source);
430
- const typeRef = findTypeAliasReference(sourceFile, "PartialTreeNode");
431
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
432
- expect(result).not.to.equal(null);
433
- expect(result?.kind).to.equal("objectType");
434
- expect(result?.members).to.have.length(2);
435
- const valueProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "value");
436
- const childrenProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "children");
437
- expect(valueProp).not.to.equal(undefined);
438
- expect(childrenProp).not.to.equal(undefined);
439
- if (valueProp && valueProp.kind === "propertySignature") {
440
- expect(valueProp.isOptional).to.equal(true);
441
- }
442
- if (childrenProp && childrenProp.kind === "propertySignature") {
443
- expect(childrenProp.isOptional).to.equal(true);
444
- }
445
- });
446
- it("should expand Partial on linked list type (self-referential)", () => {
447
- const source = `
448
- interface ListNode<T> {
449
- value: T;
450
- next: ListNode<T> | null;
451
- }
452
- type PartialListNode = Partial<ListNode<string>>;
453
- `;
454
- const { binding, sourceFile } = createTestProgram(source);
455
- const typeRef = findTypeAliasReference(sourceFile, "PartialListNode");
456
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
457
- expect(result).not.to.equal(null);
458
- expect(result?.kind).to.equal("objectType");
459
- const valueProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "value");
460
- const nextProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "next");
461
- expect(valueProp).not.to.equal(undefined);
462
- expect(nextProp).not.to.equal(undefined);
463
- });
464
- it("should expand triple-nested utility types", () => {
465
- const source = `
466
- interface Data {
467
- id: number;
468
- name: string;
469
- }
470
- type TripleNested = Partial<Readonly<Required<Data>>>;
471
- `;
472
- const { binding, sourceFile } = createTestProgram(source);
473
- const typeRef = findTypeAliasReference(sourceFile, "TripleNested");
474
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
475
- expect(result).not.to.equal(null);
476
- expect(result?.kind).to.equal("objectType");
477
- const idProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "id");
478
- expect(idProp).not.to.equal(undefined);
479
- if (idProp && idProp.kind === "propertySignature") {
480
- expect(idProp.isReadonly).to.equal(true);
481
- expect(idProp.isOptional).to.equal(true);
482
- }
483
- });
484
- it("should expand Pick on nested utility type", () => {
485
- const source = `
486
- interface User {
487
- id: number;
488
- name: string;
489
- email: string;
490
- password: string;
491
- }
492
- type SafeUser = Pick<Readonly<User>, "id" | "name" | "email">;
493
- `;
494
- const { binding, sourceFile } = createTestProgram(source);
495
- const typeRef = findTypeAliasReference(sourceFile, "SafeUser");
496
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Pick", binding, stubConvertType);
497
- expect(result).not.to.equal(null);
498
- expect(result?.kind).to.equal("objectType");
499
- expect(result?.members).to.have.length(3);
500
- const propNames = result?.members
501
- .filter((m) => m.kind === "propertySignature")
502
- .map((m) => m.name);
503
- expect(propNames).to.include("id");
504
- expect(propNames).to.include("name");
505
- expect(propNames).to.include("email");
506
- expect(propNames).not.to.include("password");
507
- });
508
- it("should expand Omit on Partial type", () => {
509
- const source = `
510
- interface Config {
511
- host: string;
512
- port: number;
513
- timeout: number;
514
- debug: boolean;
515
- }
516
- type PartialConfig = Omit<Partial<Config>, "debug">;
517
- `;
518
- const { binding, sourceFile } = createTestProgram(source);
519
- const typeRef = findTypeAliasReference(sourceFile, "PartialConfig");
520
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Omit", binding, stubConvertType);
521
- expect(result).not.to.equal(null);
522
- expect(result?.kind).to.equal("objectType");
523
- expect(result?.members).to.have.length(3);
524
- const propNames = result?.members
525
- .filter((m) => m.kind === "propertySignature")
526
- .map((m) => m.name);
527
- expect(propNames).not.to.include("debug");
528
- expect(propNames).to.include("host");
529
- });
530
- it("should expand Required on Partial type (roundtrip)", () => {
531
- const source = `
532
- interface Base {
533
- x: number;
534
- y: number;
535
- }
536
- type RoundTrip = Required<Partial<Base>>;
537
- `;
538
- const { binding, sourceFile } = createTestProgram(source);
539
- const typeRef = findTypeAliasReference(sourceFile, "RoundTrip");
540
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Required", binding, stubConvertType);
541
- expect(result).not.to.equal(null);
542
- expect(result?.kind).to.equal("objectType");
543
- const xProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "x");
544
- expect(xProp).not.to.equal(undefined);
545
- if (xProp && xProp.kind === "propertySignature") {
546
- // Required removes optional, so isOptional should be false
547
- expect(xProp.isOptional).to.equal(false);
548
- }
549
- });
550
- it("should expand utility type on generic interface with concrete type arg", () => {
551
- const source = `
552
- interface Container<T> {
553
- value: T;
554
- metadata: string;
555
- }
556
- type PartialNumberContainer = Partial<Container<number>>;
557
- `;
558
- const { binding, sourceFile } = createTestProgram(source);
559
- const typeRef = findTypeAliasReference(sourceFile, "PartialNumberContainer");
560
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
561
- expect(result).not.to.equal(null);
562
- expect(result?.kind).to.equal("objectType");
563
- const valueProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "value");
564
- const metadataProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "metadata");
565
- expect(valueProp).not.to.equal(undefined);
566
- expect(metadataProp).not.to.equal(undefined);
567
- if (valueProp && valueProp.kind === "propertySignature") {
568
- expect(valueProp.isOptional).to.equal(true);
569
- }
570
- });
571
- it("should expand utility type on generic interface with multiple type params", () => {
572
- const source = `
573
- interface Pair<K, V> {
574
- key: K;
575
- value: V;
576
- }
577
- type PartialPair = Partial<Pair<string, number>>;
578
- `;
579
- const { binding, sourceFile } = createTestProgram(source);
580
- const typeRef = findTypeAliasReference(sourceFile, "PartialPair");
581
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
582
- expect(result).not.to.equal(null);
583
- expect(result?.kind).to.equal("objectType");
584
- expect(result?.members).to.have.length(2);
585
- // Verify both properties exist and are optional
586
- const keyProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "key");
587
- const valueProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "value");
588
- expect(keyProp).not.to.equal(undefined);
589
- expect(valueProp).not.to.equal(undefined);
590
- if (keyProp && keyProp.kind === "propertySignature") {
591
- expect(keyProp.isOptional).to.equal(true);
592
- }
593
- if (valueProp && valueProp.kind === "propertySignature") {
594
- expect(valueProp.isOptional).to.equal(true);
595
- }
596
- });
597
- it("should expand Readonly on interface with method returning self type", () => {
598
- const source = `
599
- interface Builder {
600
- value: number;
601
- build(): Builder;
602
- }
603
- type ReadonlyBuilder = Readonly<Builder>;
604
- `;
605
- const { binding, sourceFile } = createTestProgram(source);
606
- const typeRef = findTypeAliasReference(sourceFile, "ReadonlyBuilder");
607
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Readonly", binding, stubConvertType);
608
- expect(result).not.to.equal(null);
609
- expect(result?.kind).to.equal("objectType");
610
- const valueProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "value");
611
- const buildMethod = result?.members.find((m) => m.kind === "methodSignature" && m.name === "build");
612
- expect(valueProp).not.to.equal(undefined);
613
- expect(buildMethod).not.to.equal(undefined);
614
- if (valueProp && valueProp.kind === "propertySignature") {
615
- expect(valueProp.isReadonly).to.equal(true);
616
- }
617
- });
618
- it("should expand utility type on deeply nested object type", () => {
619
- const source = `
620
- interface DeepNested {
621
- level1: {
622
- level2: {
623
- level3: {
624
- value: string;
625
- };
626
- };
627
- };
628
- }
629
- type PartialDeep = Partial<DeepNested>;
630
- `;
631
- const { binding, sourceFile } = createTestProgram(source);
632
- const typeRef = findTypeAliasReference(sourceFile, "PartialDeep");
633
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Partial", binding, stubConvertType);
634
- expect(result).not.to.equal(null);
635
- expect(result?.kind).to.equal("objectType");
636
- const level1Prop = result?.members.find((m) => m.kind === "propertySignature" && m.name === "level1");
637
- expect(level1Prop).not.to.equal(undefined);
638
- if (level1Prop && level1Prop.kind === "propertySignature") {
639
- expect(level1Prop.isOptional).to.equal(true);
640
- }
641
- });
642
- it("should handle Pick with single key on large interface", () => {
643
- const source = `
644
- interface LargeInterface {
645
- a: string;
646
- b: number;
647
- c: boolean;
648
- d: string[];
649
- e: number[];
650
- f: { nested: string };
651
- }
652
- type SinglePick = Pick<LargeInterface, "c">;
653
- `;
654
- const { binding, sourceFile } = createTestProgram(source);
655
- const typeRef = findTypeAliasReference(sourceFile, "SinglePick");
656
- const result = expandUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Pick", binding, stubConvertType);
657
- expect(result).not.to.equal(null);
658
- expect(result?.kind).to.equal("objectType");
659
- expect(result?.members).to.have.length(1);
660
- const cProp = result?.members.find((m) => m.kind === "propertySignature" && m.name === "c");
661
- expect(cProp).not.to.equal(undefined);
662
- });
663
- });
664
- });
665
- describe("Conditional Utility Type Expansion", () => {
666
- describe("NonNullable<T>", () => {
667
- it("should expand NonNullable<string | null> to string", () => {
668
- const source = `
669
- type Result = NonNullable<string | null>;
670
- `;
671
- const { binding, sourceFile } = createTestProgram(source);
672
- const typeRef = findTypeAliasReference(sourceFile, "Result");
673
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
674
- expect(result).not.to.equal(null);
675
- expect(result?.kind).to.equal("primitiveType");
676
- if (result?.kind === "primitiveType") {
677
- expect(result.name).to.equal("string");
678
- }
679
- });
680
- it("should expand NonNullable<string | null | undefined> to string", () => {
681
- const source = `
682
- type Result = NonNullable<string | null | undefined>;
683
- `;
684
- const { binding, sourceFile } = createTestProgram(source);
685
- const typeRef = findTypeAliasReference(sourceFile, "Result");
686
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
687
- expect(result).not.to.equal(null);
688
- expect(result?.kind).to.equal("primitiveType");
689
- if (result?.kind === "primitiveType") {
690
- expect(result.name).to.equal("string");
691
- }
692
- });
693
- it("should return never for NonNullable<null | undefined>", () => {
694
- const source = `
695
- type Result = NonNullable<null | undefined>;
696
- `;
697
- const { binding, sourceFile } = createTestProgram(source);
698
- const typeRef = findTypeAliasReference(sourceFile, "Result");
699
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
700
- expect(result).not.to.equal(null);
701
- expect(result?.kind).to.equal("neverType");
702
- });
703
- it("should preserve any for NonNullable<any>", () => {
704
- const source = `
705
- type Result = NonNullable<any>;
706
- `;
707
- const { binding, sourceFile } = createTestProgram(source);
708
- const typeRef = findTypeAliasReference(sourceFile, "Result");
709
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
710
- expect(result).not.to.equal(null);
711
- expect(result?.kind).to.equal("anyType");
712
- });
713
- it("should preserve unknown for NonNullable<unknown>", () => {
714
- const source = `
715
- type Result = NonNullable<unknown>;
716
- `;
717
- const { binding, sourceFile } = createTestProgram(source);
718
- const typeRef = findTypeAliasReference(sourceFile, "Result");
719
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
720
- expect(result).not.to.equal(null);
721
- expect(result?.kind).to.equal("unknownType");
722
- });
723
- it("should return null for NonNullable<T> where T is a type parameter", () => {
724
- const source = `
725
- function process<T>(data: NonNullable<T>): void {}
726
- `;
727
- const { binding, sourceFile } = createTestProgram(source);
728
- let typeRef = null;
729
- const visitor = (node) => {
730
- if (ts.isTypeReferenceNode(node) &&
731
- ts.isIdentifier(node.typeName) &&
732
- node.typeName.text === "NonNullable") {
733
- typeRef = node;
734
- }
735
- ts.forEachChild(node, visitor);
736
- };
737
- ts.forEachChild(sourceFile, visitor);
738
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "NonNullable", binding, stubConvertType);
739
- expect(result).to.equal(null);
740
- });
741
- });
742
- describe("Exclude<T, U>", () => {
743
- it("should expand Exclude with literal strings", () => {
744
- const source = `
745
- type Result = Exclude<"a" | "b" | "c", "a">;
746
- `;
747
- const { binding, sourceFile } = createTestProgram(source);
748
- const typeRef = findTypeAliasReference(sourceFile, "Result");
749
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
750
- // Should expand successfully (result is "b" | "c")
751
- // Note: The exact IR kind depends on how TypeScript represents the resolved type
752
- // which may vary. The key is that expansion succeeds and doesn't return null.
753
- expect(result).not.to.equal(null);
754
- });
755
- it("should expand Exclude<string | number, number> to string", () => {
756
- const source = `
757
- type Result = Exclude<string | number, number>;
758
- `;
759
- const { binding, sourceFile } = createTestProgram(source);
760
- const typeRef = findTypeAliasReference(sourceFile, "Result");
761
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
762
- expect(result).not.to.equal(null);
763
- expect(result?.kind).to.equal("primitiveType");
764
- if (result?.kind === "primitiveType") {
765
- expect(result.name).to.equal("string");
766
- }
767
- });
768
- it("should return never for Exclude<string, string>", () => {
769
- const source = `
770
- type Result = Exclude<string, string>;
771
- `;
772
- const { binding, sourceFile } = createTestProgram(source);
773
- const typeRef = findTypeAliasReference(sourceFile, "Result");
774
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
775
- expect(result).not.to.equal(null);
776
- expect(result?.kind).to.equal("neverType");
777
- });
778
- it("should return null for Exclude<T, U> where T is a type parameter", () => {
779
- const source = `
780
- function process<T>(data: Exclude<T, null>): void {}
781
- `;
782
- const { binding, sourceFile } = createTestProgram(source);
783
- let typeRef = null;
784
- const visitor = (node) => {
785
- if (ts.isTypeReferenceNode(node) &&
786
- ts.isIdentifier(node.typeName) &&
787
- node.typeName.text === "Exclude") {
788
- typeRef = node;
789
- }
790
- ts.forEachChild(node, visitor);
791
- };
792
- ts.forEachChild(sourceFile, visitor);
793
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
794
- expect(result).to.equal(null);
795
- });
796
- });
797
- describe("Extract<T, U>", () => {
798
- it("should expand Extract with literal strings", () => {
799
- const source = `
800
- type Result = Extract<"a" | "b" | "c", "a" | "f">;
801
- `;
802
- const { binding, sourceFile } = createTestProgram(source);
803
- const typeRef = findTypeAliasReference(sourceFile, "Result");
804
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
805
- expect(result).not.to.equal(null);
806
- // Result should be "a" (the only common literal)
807
- });
808
- it("should expand Extract<string | number, string> to string", () => {
809
- const source = `
810
- type Result = Extract<string | number, string>;
811
- `;
812
- const { binding, sourceFile } = createTestProgram(source);
813
- const typeRef = findTypeAliasReference(sourceFile, "Result");
814
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
815
- expect(result).not.to.equal(null);
816
- expect(result?.kind).to.equal("primitiveType");
817
- if (result?.kind === "primitiveType") {
818
- expect(result.name).to.equal("string");
819
- }
820
- });
821
- it("should return never for Extract<string, number>", () => {
822
- const source = `
823
- type Result = Extract<string, number>;
824
- `;
825
- const { binding, sourceFile } = createTestProgram(source);
826
- const typeRef = findTypeAliasReference(sourceFile, "Result");
827
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
828
- expect(result).not.to.equal(null);
829
- expect(result?.kind).to.equal("neverType");
830
- });
831
- });
832
- describe("Distributive and never edge cases", () => {
833
- it("should expand Exclude with never input to never", () => {
834
- const source = `
835
- type Result = Exclude<never, string>;
836
- `;
837
- const { binding, sourceFile } = createTestProgram(source);
838
- const typeRef = findTypeAliasReference(sourceFile, "Result");
839
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
840
- expect(result).not.to.equal(null);
841
- expect(result?.kind).to.equal("neverType");
842
- });
843
- it("should expand Extract with never input to never", () => {
844
- const source = `
845
- type Result = Extract<never, string>;
846
- `;
847
- const { binding, sourceFile } = createTestProgram(source);
848
- const typeRef = findTypeAliasReference(sourceFile, "Result");
849
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
850
- expect(result).not.to.equal(null);
851
- expect(result?.kind).to.equal("neverType");
852
- });
853
- it("should distribute Exclude over union - removing multiple types", () => {
854
- const source = `
855
- type Result = Exclude<"a" | "b" | "c" | "d", "a" | "c">;
856
- `;
857
- const { binding, sourceFile } = createTestProgram(source);
858
- const typeRef = findTypeAliasReference(sourceFile, "Result");
859
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
860
- expect(result).not.to.equal(null);
861
- // Should be a union of "b" | "d" (TypeScript checker resolves this)
862
- });
863
- it("should distribute Extract over union - extracting multiple types", () => {
864
- const source = `
865
- type Result = Extract<"a" | "b" | "c" | "d", "a" | "c" | "e">;
866
- `;
867
- const { binding, sourceFile } = createTestProgram(source);
868
- const typeRef = findTypeAliasReference(sourceFile, "Result");
869
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
870
- expect(result).not.to.equal(null);
871
- // Should be a union of "a" | "c" (TypeScript checker resolves this)
872
- });
873
- it("should handle Exclude with function types", () => {
874
- const source = `
875
- type Result = Exclude<string | number | (() => void), Function>;
876
- `;
877
- const { binding, sourceFile } = createTestProgram(source);
878
- const typeRef = findTypeAliasReference(sourceFile, "Result");
879
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
880
- expect(result).not.to.equal(null);
881
- // Should expand to string | number (function removed)
882
- });
883
- it("should distribute Exclude over mixed string and number literals", () => {
884
- // Alice's review case: mixed literals with Exclude filtering by type
885
- const source = `
886
- type Mixed = ("a" | "b") | (1 | 2);
887
- type OnlyNumbers = Exclude<Mixed, string>;
888
- `;
889
- const { binding, sourceFile } = createTestProgram(source);
890
- const typeRef = findTypeAliasReference(sourceFile, "OnlyNumbers");
891
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
892
- expect(result).not.to.equal(null);
893
- // Should be 1 | 2 (string literals removed)
894
- // TypeScript distributes over the union and removes string-assignable types
895
- expect(result?.kind).to.equal("unionType");
896
- if (result?.kind === "unionType") {
897
- expect(result.types).to.have.length(2);
898
- const values = result.types
899
- .filter((t) => t.kind === "literalType")
900
- .map((t) => (t.kind === "literalType" ? t.value : null));
901
- expect(values).to.deep.equal([1, 2]);
902
- }
903
- });
904
- it("should distribute Extract over mixed string and number literals", () => {
905
- // Alice's review case: mixed literals with Extract filtering by type
906
- const source = `
907
- type Mixed = ("a" | "b") | (1 | 2);
908
- type OnlyStrings = Extract<Mixed, string>;
909
- `;
910
- const { binding, sourceFile } = createTestProgram(source);
911
- const typeRef = findTypeAliasReference(sourceFile, "OnlyStrings");
912
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Extract", binding, stubConvertType);
913
- expect(result).not.to.equal(null);
914
- // Should be "a" | "b" (number literals removed)
915
- // TypeScript distributes over the union and keeps only string-assignable types
916
- expect(result?.kind).to.equal("unionType");
917
- if (result?.kind === "unionType") {
918
- expect(result.types).to.have.length(2);
919
- const values = result.types
920
- .filter((t) => t.kind === "literalType")
921
- .map((t) => (t.kind === "literalType" ? t.value : null));
922
- expect(values).to.deep.equal(["a", "b"]);
923
- }
924
- });
925
- it("should handle nested conditional types", () => {
926
- const source = `
927
- type Result = Exclude<Exclude<string | null | undefined, null>, undefined>;
928
- `;
929
- const { binding, sourceFile } = createTestProgram(source);
930
- const typeRef = findTypeAliasReference(sourceFile, "Result");
931
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Exclude", binding, stubConvertType);
932
- expect(result).not.to.equal(null);
933
- expect(result?.kind).to.equal("primitiveType");
934
- if (result?.kind === "primitiveType") {
935
- expect(result.name).to.equal("string");
936
- }
937
- });
938
- });
939
- describe("ReturnType<T>", () => {
940
- it("should expand ReturnType<() => string> to string", () => {
941
- const source = `
942
- type Result = ReturnType<() => string>;
943
- `;
944
- const { binding, sourceFile } = createTestProgram(source);
945
- const typeRef = findTypeAliasReference(sourceFile, "Result");
946
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
947
- expect(result).not.to.equal(null);
948
- expect(result?.kind).to.equal("primitiveType");
949
- if (result?.kind === "primitiveType") {
950
- expect(result.name).to.equal("string");
951
- }
952
- });
953
- it("should expand ReturnType<(x: number) => boolean> to boolean", () => {
954
- const source = `
955
- type Result = ReturnType<(x: number) => boolean>;
956
- `;
957
- const { binding, sourceFile } = createTestProgram(source);
958
- const typeRef = findTypeAliasReference(sourceFile, "Result");
959
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
960
- expect(result).not.to.equal(null);
961
- expect(result?.kind).to.equal("primitiveType");
962
- if (result?.kind === "primitiveType") {
963
- expect(result.name).to.equal("boolean");
964
- }
965
- });
966
- it("should expand ReturnType with void return type", () => {
967
- const source = `
968
- type Result = ReturnType<() => void>;
969
- `;
970
- const { binding, sourceFile } = createTestProgram(source);
971
- const typeRef = findTypeAliasReference(sourceFile, "Result");
972
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
973
- expect(result).not.to.equal(null);
974
- // void is handled by fallback
975
- });
976
- it("should expand ReturnType with union function types", () => {
977
- const source = `
978
- type Fn1 = () => string;
979
- type Fn2 = () => number;
980
- type Result = ReturnType<Fn1 | Fn2>;
981
- `;
982
- const { binding, sourceFile } = createTestProgram(source);
983
- const typeRef = findTypeAliasReference(sourceFile, "Result");
984
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
985
- expect(result).not.to.equal(null);
986
- // Should be string | number
987
- expect(result?.kind).to.equal("unionType");
988
- if (result?.kind === "unionType") {
989
- expect(result.types).to.have.length(2);
990
- const names = result.types
991
- .filter((t) => t.kind === "primitiveType")
992
- .map((t) => (t.kind === "primitiveType" ? t.name : null));
993
- expect(names).to.deep.equal(["string", "number"]);
994
- }
995
- });
996
- it("should return null for ReturnType<T> where T is a type parameter", () => {
997
- const source = `
998
- function process<T extends () => unknown>(fn: T): ReturnType<T> {
999
- return fn();
1000
- }
1001
- `;
1002
- const { binding, sourceFile } = createTestProgram(source);
1003
- let typeRef = null;
1004
- const visitor = (node) => {
1005
- if (ts.isTypeReferenceNode(node) &&
1006
- ts.isIdentifier(node.typeName) &&
1007
- node.typeName.text === "ReturnType") {
1008
- typeRef = node;
1009
- }
1010
- ts.forEachChild(node, visitor);
1011
- };
1012
- ts.forEachChild(sourceFile, visitor);
1013
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
1014
- expect(result).to.equal(null);
1015
- });
1016
- it("should expand ReturnType with typeof function", () => {
1017
- const source = `
1018
- function add(a: number, b: number): number {
1019
- return a + b;
1020
- }
1021
- type Result = ReturnType<typeof add>;
1022
- `;
1023
- const { binding, sourceFile } = createTestProgram(source);
1024
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1025
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ReturnType", binding, stubConvertType);
1026
- expect(result).not.to.equal(null);
1027
- expect(result?.kind).to.equal("primitiveType");
1028
- if (result?.kind === "primitiveType") {
1029
- expect(result.name).to.equal("number");
1030
- }
1031
- });
1032
- });
1033
- describe("Parameters<T>", () => {
1034
- it("should expand Parameters<(x: string, y: number) => void> to tuple", () => {
1035
- const source = `
1036
- type Result = Parameters<(x: string, y: number) => void>;
1037
- `;
1038
- const { binding, sourceFile } = createTestProgram(source);
1039
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1040
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Parameters", binding, stubConvertType);
1041
- expect(result).not.to.equal(null);
1042
- // Parameters returns a tuple type - the exact representation depends on TypeScript
1043
- });
1044
- it("should handle Parameters<() => void> (empty tuple)", () => {
1045
- const source = `
1046
- type Result = Parameters<() => void>;
1047
- `;
1048
- const { binding, sourceFile } = createTestProgram(source);
1049
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1050
- // Empty tuple may return null (falls through to referenceType)
1051
- // or may return an expanded type - both are acceptable behaviors
1052
- // The key is that it doesn't throw an error
1053
- expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Parameters", binding, stubConvertType);
1054
- });
1055
- it("should expand Parameters with single parameter", () => {
1056
- const source = `
1057
- type Result = Parameters<(x: boolean) => void>;
1058
- `;
1059
- const { binding, sourceFile } = createTestProgram(source);
1060
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1061
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Parameters", binding, stubConvertType);
1062
- expect(result).not.to.equal(null);
1063
- });
1064
- it("should return null for Parameters<T> where T is a type parameter", () => {
1065
- const source = `
1066
- function callWith<T extends (...args: unknown[]) => unknown>(
1067
- fn: T,
1068
- args: Parameters<T>
1069
- ): void {
1070
- fn(...args);
1071
- }
1072
- `;
1073
- const { binding, sourceFile } = createTestProgram(source);
1074
- let typeRef = null;
1075
- const visitor = (node) => {
1076
- if (ts.isTypeReferenceNode(node) &&
1077
- ts.isIdentifier(node.typeName) &&
1078
- node.typeName.text === "Parameters") {
1079
- typeRef = node;
1080
- }
1081
- ts.forEachChild(node, visitor);
1082
- };
1083
- ts.forEachChild(sourceFile, visitor);
1084
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Parameters", binding, stubConvertType);
1085
- expect(result).to.equal(null);
1086
- });
1087
- it("should expand Parameters with typeof function", () => {
1088
- const source = `
1089
- function greet(name: string, age: number): void {}
1090
- type Result = Parameters<typeof greet>;
1091
- `;
1092
- const { binding, sourceFile } = createTestProgram(source);
1093
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1094
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Parameters", binding, stubConvertType);
1095
- expect(result).not.to.equal(null);
1096
- });
1097
- });
1098
- describe("Awaited<T>", () => {
1099
- it("should expand Awaited<Promise<string>> to string", () => {
1100
- const source = `
1101
- type Result = Awaited<Promise<string>>;
1102
- `;
1103
- const { binding, sourceFile } = createTestProgram(source);
1104
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1105
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1106
- expect(result).not.to.equal(null);
1107
- expect(result?.kind).to.equal("primitiveType");
1108
- if (result?.kind === "primitiveType") {
1109
- expect(result.name).to.equal("string");
1110
- }
1111
- });
1112
- it("should expand Awaited<Promise<Promise<number>>> recursively to number", () => {
1113
- const source = `
1114
- type Result = Awaited<Promise<Promise<number>>>;
1115
- `;
1116
- const { binding, sourceFile } = createTestProgram(source);
1117
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1118
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1119
- expect(result).not.to.equal(null);
1120
- expect(result?.kind).to.equal("primitiveType");
1121
- if (result?.kind === "primitiveType") {
1122
- expect(result.name).to.equal("number");
1123
- }
1124
- });
1125
- it("should expand Awaited<string> to string (non-promise passthrough)", () => {
1126
- const source = `
1127
- type Result = Awaited<string>;
1128
- `;
1129
- const { binding, sourceFile } = createTestProgram(source);
1130
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1131
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1132
- expect(result).not.to.equal(null);
1133
- expect(result?.kind).to.equal("primitiveType");
1134
- if (result?.kind === "primitiveType") {
1135
- expect(result.name).to.equal("string");
1136
- }
1137
- });
1138
- it("should expand Awaited with union of promises", () => {
1139
- const source = `
1140
- type Result = Awaited<Promise<string> | Promise<number>>;
1141
- `;
1142
- const { binding, sourceFile } = createTestProgram(source);
1143
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1144
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1145
- expect(result).not.to.equal(null);
1146
- // Should be string | number
1147
- expect(result?.kind).to.equal("unionType");
1148
- });
1149
- it("should return null for Awaited<T> where T is a type parameter", () => {
1150
- const source = `
1151
- async function processAsync<T>(promise: Promise<T>): Promise<Awaited<T>> {
1152
- return await promise;
1153
- }
1154
- `;
1155
- const { binding, sourceFile } = createTestProgram(source);
1156
- let typeRef = null;
1157
- const visitor = (node) => {
1158
- if (ts.isTypeReferenceNode(node) &&
1159
- ts.isIdentifier(node.typeName) &&
1160
- node.typeName.text === "Awaited") {
1161
- typeRef = node;
1162
- }
1163
- ts.forEachChild(node, visitor);
1164
- };
1165
- ts.forEachChild(sourceFile, visitor);
1166
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1167
- expect(result).to.equal(null);
1168
- });
1169
- it("should expand Awaited<null> to null", () => {
1170
- const source = `
1171
- type Result = Awaited<null>;
1172
- `;
1173
- const { binding, sourceFile } = createTestProgram(source);
1174
- const typeRef = findTypeAliasReference(sourceFile, "Result");
1175
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "Awaited", binding, stubConvertType);
1176
- expect(result).not.to.equal(null);
1177
- expect(result?.kind).to.equal("primitiveType");
1178
- if (result?.kind === "primitiveType") {
1179
- expect(result.name).to.equal("null");
1180
- }
1181
- });
1182
- });
1183
- describe("ConstructorParameters<T>", () => {
1184
- it("expands constructor type node to tuple", () => {
1185
- const source = `
1186
- type Ctor = new (name: string, age: number) => { name: string };
1187
- type Params = ConstructorParameters<Ctor>;
1188
- `;
1189
- const { binding, sourceFile } = createTestProgram(source);
1190
- const typeRef = findTypeAliasReference(sourceFile, "Params");
1191
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ConstructorParameters", binding, stubConvertType);
1192
- expect(result).not.to.equal(null);
1193
- expect(result?.kind).to.equal("tupleType");
1194
- if (result?.kind === "tupleType") {
1195
- expect(result.elementTypes).to.deep.equal([
1196
- { kind: "primitiveType", name: "string" },
1197
- { kind: "primitiveType", name: "number" },
1198
- ]);
1199
- }
1200
- });
1201
- it("expands ConstructorParameters<typeof ClassName>", () => {
1202
- const source = `
1203
- class User {
1204
- constructor(name: string, active: boolean) {}
1205
- }
1206
- type Params = ConstructorParameters<typeof User>;
1207
- `;
1208
- const { binding, sourceFile } = createTestProgram(source);
1209
- const typeRef = findTypeAliasReference(sourceFile, "Params");
1210
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ConstructorParameters", binding, stubConvertType);
1211
- expect(result).not.to.equal(null);
1212
- expect(result?.kind).to.equal("tupleType");
1213
- if (result?.kind === "tupleType") {
1214
- expect(result.elementTypes).to.deep.equal([
1215
- { kind: "primitiveType", name: "string" },
1216
- { kind: "primitiveType", name: "boolean" },
1217
- ]);
1218
- }
1219
- });
1220
- it("returns null for ConstructorParameters<T> when T is a type parameter", () => {
1221
- const source = `
1222
- type Wrapper<T extends abstract new (...args: unknown[]) => unknown> =
1223
- ConstructorParameters<T>;
1224
- `;
1225
- const { binding, sourceFile } = createTestProgram(source);
1226
- const typeRef = findTypeAliasReference(sourceFile, "Wrapper");
1227
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "ConstructorParameters", binding, stubConvertType);
1228
- expect(result).to.equal(null);
1229
- });
1230
- });
1231
- describe("InstanceType<T>", () => {
1232
- it("expands constructor type node to instance type", () => {
1233
- const source = `
1234
- interface Item { id: number; }
1235
- type Ctor = new (id: number) => Item;
1236
- type Instance = InstanceType<Ctor>;
1237
- `;
1238
- const { binding, sourceFile } = createTestProgram(source);
1239
- const typeRef = findTypeAliasReference(sourceFile, "Instance");
1240
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "InstanceType", binding, stubConvertType);
1241
- expect(result).to.deep.equal({
1242
- kind: "referenceType",
1243
- name: "Item",
1244
- typeArguments: [],
1245
- });
1246
- });
1247
- it("expands InstanceType<typeof ClassName> to class reference", () => {
1248
- const source = `
1249
- class Product {
1250
- constructor(public readonly sku: string) {}
1251
- }
1252
- type Instance = InstanceType<typeof Product>;
1253
- `;
1254
- const { binding, sourceFile } = createTestProgram(source);
1255
- const typeRef = findTypeAliasReference(sourceFile, "Instance");
1256
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "InstanceType", binding, stubConvertType);
1257
- expect(result).to.deep.equal({
1258
- kind: "referenceType",
1259
- name: "Product",
1260
- });
1261
- });
1262
- it("returns null for InstanceType<T> when T is a type parameter", () => {
1263
- const source = `
1264
- type Wrapper<T extends abstract new (...args: unknown[]) => unknown> =
1265
- InstanceType<T>;
1266
- `;
1267
- const { binding, sourceFile } = createTestProgram(source);
1268
- const typeRef = findTypeAliasReference(sourceFile, "Wrapper");
1269
- const result = expandConditionalUtilityType(assertDefined(typeRef, "typeRef should be defined"), "InstanceType", binding, stubConvertType);
1270
- expect(result).to.equal(null);
1271
- });
1272
- });
1273
- });
1274
- describe("Record Type Expansion", () => {
1275
- describe("Record with finite literal keys", () => {
1276
- it("should expand Record with string literal keys to IrObjectType", () => {
1277
- const source = `
1278
- type Config = Record<"a" | "b", number>;
1279
- `;
1280
- const { binding, sourceFile } = createTestProgram(source);
1281
- const typeRef = findTypeAliasReference(sourceFile, "Config");
1282
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1283
- expect(result).not.to.equal(null);
1284
- expect(result?.kind).to.equal("objectType");
1285
- expect(result?.members).to.have.length(2);
1286
- const propNames = result?.members
1287
- .filter((m) => m.kind === "propertySignature")
1288
- .map((m) => m.name);
1289
- expect(propNames).to.include("a");
1290
- expect(propNames).to.include("b");
1291
- });
1292
- it("should expand Record with number literal keys to IrObjectType", () => {
1293
- const source = `
1294
- type IndexedConfig = Record<1 | 2, string>;
1295
- `;
1296
- const { binding, sourceFile } = createTestProgram(source);
1297
- const typeRef = findTypeAliasReference(sourceFile, "IndexedConfig");
1298
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1299
- expect(result).not.to.equal(null);
1300
- expect(result?.kind).to.equal("objectType");
1301
- expect(result?.members).to.have.length(2);
1302
- // Numeric keys are prefixed with '_' to be valid C# identifiers
1303
- const propNames = result?.members
1304
- .filter((m) => m.kind === "propertySignature")
1305
- .map((m) => m.name);
1306
- expect(propNames).to.include("_1");
1307
- expect(propNames).to.include("_2");
1308
- });
1309
- it("should expand Record with mixed literal keys", () => {
1310
- const source = `
1311
- type MixedConfig = Record<"name" | "age" | "email", boolean>;
1312
- `;
1313
- const { binding, sourceFile } = createTestProgram(source);
1314
- const typeRef = findTypeAliasReference(sourceFile, "MixedConfig");
1315
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1316
- expect(result).not.to.equal(null);
1317
- expect(result?.kind).to.equal("objectType");
1318
- expect(result?.members).to.have.length(3);
1319
- });
1320
- });
1321
- describe("Record should fall back for non-literal keys", () => {
1322
- it("should return null for Record<string, T>", () => {
1323
- const source = `
1324
- type Dictionary = Record<string, number>;
1325
- `;
1326
- const { binding, sourceFile } = createTestProgram(source);
1327
- const typeRef = findTypeAliasReference(sourceFile, "Dictionary");
1328
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1329
- // Should return null - use IrDictionaryType instead
1330
- expect(result).to.equal(null);
1331
- });
1332
- it("should return null for Record<number, T>", () => {
1333
- const source = `
1334
- type NumberDictionary = Record<number, string>;
1335
- `;
1336
- const { binding, sourceFile } = createTestProgram(source);
1337
- const typeRef = findTypeAliasReference(sourceFile, "NumberDictionary");
1338
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1339
- // Should return null - use IrDictionaryType instead
1340
- expect(result).to.equal(null);
1341
- });
1342
- it("should return null for Record<K, T> where K is a type parameter", () => {
1343
- const source = `
1344
- function makeRecord<K extends string>(keys: K[]): Record<K, number> {
1345
- return {} as Record<K, number>;
1346
- }
1347
- `;
1348
- const { binding, sourceFile } = createTestProgram(source);
1349
- let typeRef = null;
1350
- const visitor = (node) => {
1351
- if (ts.isTypeReferenceNode(node) &&
1352
- ts.isIdentifier(node.typeName) &&
1353
- node.typeName.text === "Record") {
1354
- typeRef = node;
1355
- return; // Take first one (return type)
1356
- }
1357
- ts.forEachChild(node, visitor);
1358
- };
1359
- ts.forEachChild(sourceFile, visitor);
1360
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1361
- // Should return null - type parameter can't be expanded
1362
- expect(result).to.equal(null);
1363
- });
1364
- it("should return null for Record<PropertyKey, T> (complex key type)", () => {
1365
- // PropertyKey is string | number | symbol - not a finite set of literals
1366
- // This should NOT be expanded to objectType or dictionaryType
1367
- const source = `
1368
- type AnyKeyRecord = Record<PropertyKey, number>;
1369
- `;
1370
- const { binding, sourceFile } = createTestProgram(source);
1371
- const typeRef = findTypeAliasReference(sourceFile, "AnyKeyRecord");
1372
- const result = expandRecordType(assertDefined(typeRef, "typeRef should be defined"), binding, stubConvertType);
1373
- // Should return null - PropertyKey is not a finite set of literals
1374
- // and should fall through to referenceType (not dictionaryType)
1375
- expect(result).to.equal(null);
1376
- });
1377
- });
1378
- describe("Record<K, V> full type conversion (integration test)", () => {
1379
- it("should convert Record<K, V> with type parameter K to referenceType, not dictionaryType", () => {
1380
- // This tests the full convertTypeReference flow, not just expandRecordType
1381
- // The bug was: Record<K, V> where K is a type parameter was incorrectly
1382
- // converted to dictionaryType instead of referenceType
1383
- const source = `
1384
- interface Wrapper<K extends string> {
1385
- data: Record<K, number>;
1386
- }
1387
- `;
1388
- const { checker, sourceFile } = createTestProgram(source);
1389
- // Find the Record<K, number> type reference in the interface property
1390
- let typeRef = null;
1391
- const visitor = (node) => {
1392
- if (ts.isTypeReferenceNode(node) &&
1393
- ts.isIdentifier(node.typeName) &&
1394
- node.typeName.text === "Record") {
1395
- typeRef = node;
1396
- }
1397
- ts.forEachChild(node, visitor);
1398
- };
1399
- ts.forEachChild(sourceFile, visitor);
1400
- // Get the key type node and check its flags
1401
- expect(typeRef).not.to.equal(null);
1402
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1403
- const foundTypeRef = typeRef;
1404
- const keyTypeNode = foundTypeRef.typeArguments?.[0];
1405
- expect(keyTypeNode).not.to.equal(undefined);
1406
- // NOTE: This test uses getTypeAtLocation to verify TS internal behavior
1407
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1408
- const keyTsType = checker.getTypeAtLocation(keyTypeNode);
1409
- // The key type should be a type parameter, not string
1410
- expect(!!(keyTsType.flags & ts.TypeFlags.TypeParameter)).to.equal(true);
1411
- expect(!!(keyTsType.flags & ts.TypeFlags.String)).to.equal(false);
1412
- // This confirms the fix: when K is a type parameter, the code should
1413
- // fall through to referenceType instead of creating a dictionaryType
1414
- });
1415
- });
1416
- });
1
+ import "./utility-types-cases/expansion-safety.test.js";
2
+ import "./utility-types-cases/comprehensive-expansion.test.js";
3
+ import "./utility-types-cases/conditional-nonnullable-exclude-extract.test.js";
4
+ import "./utility-types-cases/conditional-return-params.test.js";
5
+ import "./utility-types-cases/conditional-awaited-constructor-instance.test.js";
6
+ import "./utility-types-cases/record-expansion.test.js";
1417
7
  //# sourceMappingURL=utility-types.test.js.map