@tsonic/frontend 0.0.62 → 0.0.64

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 (439) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/dotnet-metadata.d.ts +0 -12
  7. package/dist/dotnet-metadata.d.ts.map +1 -1
  8. package/dist/dotnet-metadata.js +0 -24
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/generic-function-values.d.ts +11 -0
  11. package/dist/generic-function-values.d.ts.map +1 -0
  12. package/dist/generic-function-values.js +243 -0
  13. package/dist/generic-function-values.js.map +1 -0
  14. package/dist/generic-function-values.test.d.ts +2 -0
  15. package/dist/generic-function-values.test.d.ts.map +1 -0
  16. package/dist/generic-function-values.test.js +256 -0
  17. package/dist/generic-function-values.test.js.map +1 -0
  18. package/dist/graph/extraction/imports.d.ts +5 -0
  19. package/dist/graph/extraction/imports.d.ts.map +1 -1
  20. package/dist/graph/extraction/imports.js +39 -1
  21. package/dist/graph/extraction/imports.js.map +1 -1
  22. package/dist/graph/extraction/index.d.ts +1 -1
  23. package/dist/graph/extraction/index.d.ts.map +1 -1
  24. package/dist/graph/extraction/index.js +1 -1
  25. package/dist/graph/extraction/index.js.map +1 -1
  26. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  27. package/dist/graph/extraction/orchestrator.js +16 -2
  28. package/dist/graph/extraction/orchestrator.js.map +1 -1
  29. package/dist/graph/extraction.d.ts +1 -1
  30. package/dist/graph/extraction.d.ts.map +1 -1
  31. package/dist/graph/extraction.js +1 -1
  32. package/dist/graph/extraction.js.map +1 -1
  33. package/dist/ir/binding/binding-factory.d.ts +17 -0
  34. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  35. package/dist/ir/binding/binding-factory.js +765 -0
  36. package/dist/ir/binding/binding-factory.js.map +1 -0
  37. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  38. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  39. package/dist/ir/binding/binding-helpers.js +387 -0
  40. package/dist/ir/binding/binding-helpers.js.map +1 -0
  41. package/dist/ir/binding/binding-types.d.ts +203 -0
  42. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  43. package/dist/ir/binding/binding-types.js +9 -0
  44. package/dist/ir/binding/binding-types.js.map +1 -0
  45. package/dist/ir/binding/index.d.ts +4 -158
  46. package/dist/ir/binding/index.d.ts.map +1 -1
  47. package/dist/ir/binding/index.js +3 -1134
  48. package/dist/ir/binding/index.js.map +1 -1
  49. package/dist/ir/binding-resolution.test.js +248 -0
  50. package/dist/ir/binding-resolution.test.js.map +1 -1
  51. package/dist/ir/builder/imports.d.ts.map +1 -1
  52. package/dist/ir/builder/imports.js +8 -1
  53. package/dist/ir/builder/imports.js.map +1 -1
  54. package/dist/ir/builder.test.js +360 -0
  55. package/dist/ir/builder.test.js.map +1 -1
  56. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  57. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  58. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  59. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  60. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  61. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  62. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  63. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  64. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  65. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  66. package/dist/ir/converters/expressions/access/binding-resolution.js +447 -0
  67. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  68. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  69. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  70. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  71. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  72. package/dist/ir/converters/expressions/access.d.ts +1 -7
  73. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  74. package/dist/ir/converters/expressions/access.js +1 -720
  75. package/dist/ir/converters/expressions/access.js.map +1 -1
  76. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  77. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  78. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  79. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  80. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  81. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  82. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  83. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  84. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  85. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  86. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  87. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  88. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  89. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  90. package/dist/ir/converters/expressions/calls.js +2 -1344
  91. package/dist/ir/converters/expressions/calls.js.map +1 -1
  92. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  93. package/dist/ir/converters/expressions/collections.js +37 -6
  94. package/dist/ir/converters/expressions/collections.js.map +1 -1
  95. package/dist/ir/converters/expressions/functions.js +1 -1
  96. package/dist/ir/converters/expressions/functions.js.map +1 -1
  97. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  98. package/dist/ir/converters/expressions/helpers.js +1 -0
  99. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  100. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  101. package/dist/ir/converters/expressions/other.js +3 -2
  102. package/dist/ir/converters/expressions/other.js.map +1 -1
  103. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  104. package/dist/ir/converters/flow-narrowing.js +3 -2
  105. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  106. package/dist/ir/converters/statements/declarations/classes/methods.js +1 -1
  107. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  108. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  109. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  110. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  111. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  112. package/dist/ir/converters/statements/declarations/variables.js +289 -2
  113. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  114. package/dist/ir/expression-converter.d.ts +0 -1
  115. package/dist/ir/expression-converter.d.ts.map +1 -1
  116. package/dist/ir/expression-converter.js +0 -2
  117. package/dist/ir/expression-converter.js.map +1 -1
  118. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  119. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  120. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  121. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  122. package/dist/ir/generic-validator.d.ts +3 -4
  123. package/dist/ir/generic-validator.d.ts.map +1 -1
  124. package/dist/ir/generic-validator.js +3 -35
  125. package/dist/ir/generic-validator.js.map +1 -1
  126. package/dist/ir/program-context.d.ts +12 -0
  127. package/dist/ir/program-context.d.ts.map +1 -1
  128. package/dist/ir/program-context.js +2 -0
  129. package/dist/ir/program-context.js.map +1 -1
  130. package/dist/ir/statement-converter.d.ts +0 -2
  131. package/dist/ir/statement-converter.d.ts.map +1 -1
  132. package/dist/ir/statement-converter.js +0 -3
  133. package/dist/ir/statement-converter.js.map +1 -1
  134. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  135. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  136. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  137. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  138. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  139. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  140. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  141. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  142. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  143. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  144. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  145. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  146. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  147. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  148. package/dist/ir/type-system/internal/type-converter/orchestrator.js +322 -23
  149. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  150. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  151. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  152. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  153. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  154. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  155. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  156. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  157. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  158. package/dist/ir/type-system/internal/type-converter/references.js +67 -29
  159. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  160. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  161. package/dist/ir/type-system/internal/type-converter/utility-types.js +145 -0
  162. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  163. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  164. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  165. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  166. package/dist/ir/type-system/internal/type-registry.js +7 -7
  167. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  168. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  169. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  170. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  171. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  172. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  173. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  174. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1044
  175. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  176. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  177. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  178. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  179. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  180. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  181. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  182. package/dist/ir/type-system/internal/universe/clr-type-parser.js +481 -0
  183. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  184. package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts +2 -0
  185. package/dist/ir/type-system/internal/universe/clr-type-parser.test.d.ts.map +1 -0
  186. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js +55 -0
  187. package/dist/ir/type-system/internal/universe/clr-type-parser.test.js.map +1 -0
  188. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  189. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  190. package/dist/ir/type-system/internal/universe/index.js +1 -3
  191. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  192. package/dist/ir/type-system/internal/universe/unified-universe.test.js +2 -0
  193. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  194. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  195. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  196. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  197. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  198. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  199. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  200. package/dist/ir/type-system/type-system-inference.js +1121 -0
  201. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  202. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  203. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  204. package/dist/ir/type-system/type-system-relations.js +152 -0
  205. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  206. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  207. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  208. package/dist/ir/type-system/type-system-state.js +212 -0
  209. package/dist/ir/type-system/type-system-state.js.map +1 -0
  210. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  211. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  212. package/dist/ir/type-system/type-system-utilities.js +373 -0
  213. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  214. package/dist/ir/type-system/type-system.d.ts +17 -358
  215. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  216. package/dist/ir/type-system/type-system.js +67 -2945
  217. package/dist/ir/type-system/type-system.js.map +1 -1
  218. package/dist/ir/types/index.d.ts +1 -0
  219. package/dist/ir/types/index.d.ts.map +1 -1
  220. package/dist/ir/types/index.js +1 -0
  221. package/dist/ir/types/index.js.map +1 -1
  222. package/dist/ir/types/ir-substitution.js +1 -1
  223. package/dist/ir/types/ir-substitution.js.map +1 -1
  224. package/dist/ir/types/statements.d.ts +1 -1
  225. package/dist/ir/types/type-ops.d.ts +9 -0
  226. package/dist/ir/types/type-ops.d.ts.map +1 -0
  227. package/dist/ir/types/type-ops.js +134 -0
  228. package/dist/ir/types/type-ops.js.map +1 -0
  229. package/dist/ir/types/type-ops.test.d.ts +2 -0
  230. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  231. package/dist/ir/types/type-ops.test.js +73 -0
  232. package/dist/ir/types/type-ops.test.js.map +1 -0
  233. package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
  234. package/dist/ir/validation/anonymous-type-lowering-pass.js +34 -0
  235. package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
  236. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts +2 -0
  237. package/dist/ir/validation/anonymous-type-lowering-regressions.test.d.ts.map +1 -0
  238. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js +121 -0
  239. package/dist/ir/validation/anonymous-type-lowering-regressions.test.js.map +1 -0
  240. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  241. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  242. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  243. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  244. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  245. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  246. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  247. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  248. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  249. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  250. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  251. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  252. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  253. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  254. package/dist/ir/validation/attribute-collection-pass.js +1 -961
  255. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  256. package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
  257. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  258. package/dist/ir/validation/numeric-invariants.test.js +29 -0
  259. package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
  260. package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
  261. package/dist/ir/validation/numeric-proof-pass.js +21 -0
  262. package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
  263. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  264. package/dist/ir/validation/soundness-gate.js +2 -1
  265. package/dist/ir/validation/soundness-gate.js.map +1 -1
  266. package/dist/ir/validation/soundness-gate.test.js +69 -0
  267. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  268. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  269. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  270. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  271. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  272. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  273. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  274. package/dist/program/binding-loader.d.ts +37 -0
  275. package/dist/program/binding-loader.d.ts.map +1 -0
  276. package/dist/program/binding-loader.js +155 -0
  277. package/dist/program/binding-loader.js.map +1 -0
  278. package/dist/program/binding-registry.d.ts +106 -0
  279. package/dist/program/binding-registry.d.ts.map +1 -0
  280. package/dist/program/binding-registry.js +590 -0
  281. package/dist/program/binding-registry.js.map +1 -0
  282. package/dist/program/binding-types.d.ts +166 -0
  283. package/dist/program/binding-types.d.ts.map +1 -0
  284. package/dist/program/binding-types.js +57 -0
  285. package/dist/program/binding-types.js.map +1 -0
  286. package/dist/program/bindings.d.ts +6 -271
  287. package/dist/program/bindings.d.ts.map +1 -1
  288. package/dist/program/bindings.js +7 -781
  289. package/dist/program/bindings.js.map +1 -1
  290. package/dist/program/creation.d.ts.map +1 -1
  291. package/dist/program/creation.js +104 -13
  292. package/dist/program/creation.js.map +1 -1
  293. package/dist/program/creation.test.js +133 -1
  294. package/dist/program/creation.test.js.map +1 -1
  295. package/dist/program/diagnostics.d.ts +1 -1
  296. package/dist/program/diagnostics.d.ts.map +1 -1
  297. package/dist/program/diagnostics.js +47 -2
  298. package/dist/program/diagnostics.js.map +1 -1
  299. package/dist/program/diagnostics.test.d.ts +2 -0
  300. package/dist/program/diagnostics.test.d.ts.map +1 -0
  301. package/dist/program/diagnostics.test.js +58 -0
  302. package/dist/program/diagnostics.test.js.map +1 -0
  303. package/dist/program/types.d.ts +2 -0
  304. package/dist/program/types.d.ts.map +1 -1
  305. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  306. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  307. package/dist/resolver/clr-bindings-resolver.js +22 -32
  308. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  309. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  310. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  311. package/dist/resolver/import-resolution.d.ts +3 -1
  312. package/dist/resolver/import-resolution.d.ts.map +1 -1
  313. package/dist/resolver/import-resolution.js +14 -11
  314. package/dist/resolver/import-resolution.js.map +1 -1
  315. package/dist/resolver/naming.d.ts.map +1 -1
  316. package/dist/resolver/naming.js +1 -0
  317. package/dist/resolver/naming.js.map +1 -1
  318. package/dist/resolver/node-module-aliases.d.ts +6 -0
  319. package/dist/resolver/node-module-aliases.d.ts.map +1 -0
  320. package/dist/resolver/node-module-aliases.js +164 -0
  321. package/dist/resolver/node-module-aliases.js.map +1 -0
  322. package/dist/resolver/node-module-aliases.test.d.ts +2 -0
  323. package/dist/resolver/node-module-aliases.test.d.ts.map +1 -0
  324. package/dist/resolver/node-module-aliases.test.js +64 -0
  325. package/dist/resolver/node-module-aliases.test.js.map +1 -0
  326. package/dist/resolver.test.js +103 -0
  327. package/dist/resolver.test.js.map +1 -1
  328. package/dist/surface/js-surface-shims.d.ts +3 -0
  329. package/dist/surface/js-surface-shims.d.ts.map +1 -0
  330. package/dist/surface/js-surface-shims.js +332 -0
  331. package/dist/surface/js-surface-shims.js.map +1 -0
  332. package/dist/surface/js-surface-shims.test.d.ts +2 -0
  333. package/dist/surface/js-surface-shims.test.d.ts.map +1 -0
  334. package/dist/surface/js-surface-shims.test.js +53 -0
  335. package/dist/surface/js-surface-shims.test.js.map +1 -0
  336. package/dist/surface/profiles.d.ts +10 -0
  337. package/dist/surface/profiles.d.ts.map +1 -0
  338. package/dist/surface/profiles.js +65 -0
  339. package/dist/surface/profiles.js.map +1 -0
  340. package/dist/surface/profiles.test.d.ts +2 -0
  341. package/dist/surface/profiles.test.d.ts.map +1 -0
  342. package/dist/surface/profiles.test.js +44 -0
  343. package/dist/surface/profiles.test.js.map +1 -0
  344. package/dist/types/diagnostic.d.ts +1 -1
  345. package/dist/types/diagnostic.d.ts.map +1 -1
  346. package/dist/types/diagnostic.js.map +1 -1
  347. package/dist/validation/features.d.ts.map +1 -1
  348. package/dist/validation/features.js +38 -13
  349. package/dist/validation/features.js.map +1 -1
  350. package/dist/validation/features.test.d.ts +2 -0
  351. package/dist/validation/features.test.d.ts.map +1 -0
  352. package/dist/validation/features.test.js +273 -0
  353. package/dist/validation/features.test.js.map +1 -0
  354. package/dist/validation/generics.d.ts +1 -1
  355. package/dist/validation/generics.d.ts.map +1 -1
  356. package/dist/validation/generics.js +2 -26
  357. package/dist/validation/generics.js.map +1 -1
  358. package/dist/validation/imports.d.ts.map +1 -1
  359. package/dist/validation/imports.js +29 -5
  360. package/dist/validation/imports.js.map +1 -1
  361. package/dist/validation/imports.test.d.ts +2 -0
  362. package/dist/validation/imports.test.d.ts.map +1 -0
  363. package/dist/validation/imports.test.js +211 -0
  364. package/dist/validation/imports.test.js.map +1 -0
  365. package/dist/validation/static-safety.d.ts +6 -6
  366. package/dist/validation/static-safety.d.ts.map +1 -1
  367. package/dist/validation/static-safety.js +163 -109
  368. package/dist/validation/static-safety.js.map +1 -1
  369. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  370. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  371. package/dist/validation/unsupported-utility-types.js +4 -7
  372. package/dist/validation/unsupported-utility-types.js.map +1 -1
  373. package/dist/validator.maximus.test.d.ts +2 -0
  374. package/dist/validator.maximus.test.d.ts.map +1 -0
  375. package/dist/validator.maximus.test.js +1214 -0
  376. package/dist/validator.maximus.test.js.map +1 -0
  377. package/dist/validator.test.js +152 -18
  378. package/dist/validator.test.js.map +1 -1
  379. package/package.json +1 -1
  380. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  381. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  382. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  383. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  384. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  385. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  386. package/dist/ir/this-parameter-inference.test.js +0 -165
  387. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  388. package/dist/metadata/bindings-loader.d.ts +0 -41
  389. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  390. package/dist/metadata/bindings-loader.js +0 -308
  391. package/dist/metadata/bindings-loader.js.map +0 -1
  392. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  393. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  394. package/dist/metadata/bindings-loader.test.js +0 -117
  395. package/dist/metadata/bindings-loader.test.js.map +0 -1
  396. package/dist/metadata/index.d.ts +0 -8
  397. package/dist/metadata/index.d.ts.map +0 -1
  398. package/dist/metadata/index.js +0 -7
  399. package/dist/metadata/index.js.map +0 -1
  400. package/dist/metadata/library-loader.d.ts +0 -42
  401. package/dist/metadata/library-loader.d.ts.map +0 -1
  402. package/dist/metadata/library-loader.js +0 -126
  403. package/dist/metadata/library-loader.js.map +0 -1
  404. package/dist/metadata/loader.d.ts +0 -26
  405. package/dist/metadata/loader.d.ts.map +0 -1
  406. package/dist/metadata/loader.js +0 -333
  407. package/dist/metadata/loader.js.map +0 -1
  408. package/dist/metadata/loader.test.d.ts +0 -5
  409. package/dist/metadata/loader.test.d.ts.map +0 -1
  410. package/dist/metadata/loader.test.js +0 -119
  411. package/dist/metadata/loader.test.js.map +0 -1
  412. package/dist/resolver/naming-policy.d.ts +0 -20
  413. package/dist/resolver/naming-policy.d.ts.map +0 -1
  414. package/dist/resolver/naming-policy.js +0 -40
  415. package/dist/resolver/naming-policy.js.map +0 -1
  416. package/dist/types/bindings.d.ts +0 -153
  417. package/dist/types/bindings.d.ts.map +0 -1
  418. package/dist/types/bindings.js +0 -14
  419. package/dist/types/bindings.js.map +0 -1
  420. package/dist/types/metadata.d.ts +0 -196
  421. package/dist/types/metadata.d.ts.map +0 -1
  422. package/dist/types/metadata.js +0 -10
  423. package/dist/types/metadata.js.map +0 -1
  424. package/dist/types/nested-types.d.ts +0 -111
  425. package/dist/types/nested-types.d.ts.map +0 -1
  426. package/dist/types/nested-types.js +0 -176
  427. package/dist/types/nested-types.js.map +0 -1
  428. package/dist/types/nested-types.test.d.ts +0 -5
  429. package/dist/types/nested-types.test.d.ts.map +0 -1
  430. package/dist/types/nested-types.test.js +0 -135
  431. package/dist/types/nested-types.test.js.map +0 -1
  432. package/dist/types/ref-parameters.d.ts +0 -123
  433. package/dist/types/ref-parameters.d.ts.map +0 -1
  434. package/dist/types/ref-parameters.js +0 -203
  435. package/dist/types/ref-parameters.js.map +0 -1
  436. package/dist/types/ref-parameters.test.d.ts +0 -5
  437. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  438. package/dist/types/ref-parameters.test.js +0 -147
  439. package/dist/types/ref-parameters.test.js.map +0 -1
@@ -0,0 +1,590 @@
1
+ /**
2
+ * Binding Registry - runtime registry of all loaded bindings
3
+ * Supports simple (global/module) and hierarchical (namespace/type/member) formats
4
+ */
5
+ import { tsbindgenClrTypeNameToTsTypeName } from "../tsbindgen/names.js";
6
+ import { isFullBindingManifest, isTsbindgenBindingFile, } from "./binding-types.js";
7
+ /**
8
+ * Registry of all loaded bindings
9
+ * Supports simple (global/module) and hierarchical (namespace/type/member) formats
10
+ */
11
+ export class BindingRegistry {
12
+ constructor() {
13
+ this.loadedBindingFiles = new Set();
14
+ // Simple format: global/module bindings for identifiers like console, Math, fs
15
+ this.simpleBindings = new Map();
16
+ // Hierarchical format: namespace/type/member bindings
17
+ this.namespaces = new Map();
18
+ this.types = new Map(); // Flat lookup by TS name
19
+ this.members = new Map(); // Flat lookup by "type.member"
20
+ this.memberOverloads = new Map(); // Overload-aware lookup by "type.member"
21
+ this.clrMemberOverloads = new Map(); // Overload-aware lookup by CLR target key
22
+ this.tsbindgenExports = new Map();
23
+ this.tsSupertypes = new Map();
24
+ /**
25
+ * Extension method index for instance-style calls.
26
+ *
27
+ * Keyed by:
28
+ * - declaring namespace key (CLR namespace with '.' replaced by '_', e.g. "System_Linq")
29
+ * - receiver TS type name (e.g. "IEnumerable_1")
30
+ * - method TS name (e.g. "where")
31
+ *
32
+ * Values are one or more candidates (overloads share the same target).
33
+ */
34
+ this.extensionMethods = new Map();
35
+ }
36
+ getExtensionMethodCandidates(namespaceKey, receiverTypeName, methodTsName) {
37
+ return this.extensionMethods
38
+ .get(namespaceKey)
39
+ ?.get(receiverTypeName)
40
+ ?.get(methodTsName);
41
+ }
42
+ addSupertype(typeAlias, superAlias) {
43
+ if (!typeAlias || !superAlias)
44
+ return;
45
+ if (typeAlias === superAlias)
46
+ return;
47
+ const set = this.tsSupertypes.get(typeAlias) ?? new Set();
48
+ set.add(superAlias);
49
+ this.tsSupertypes.set(typeAlias, set);
50
+ }
51
+ getDirectSupertypes(typeAlias) {
52
+ const set = this.tsSupertypes.get(typeAlias);
53
+ if (!set || set.size === 0)
54
+ return [];
55
+ return Array.from(set).sort((a, b) => a.localeCompare(b));
56
+ }
57
+ /**
58
+ * Resolve an extension method binding target by extension interface name.
59
+ *
60
+ * @param extensionInterfaceName - e.g. "__Ext_System_Linq_IEnumerable_1"
61
+ * @param methodTsName - e.g. "where"
62
+ */
63
+ resolveExtensionMethod(extensionInterfaceName, methodTsName, callArgumentCount) {
64
+ const parsed = this.parseExtensionInterfaceName(extensionInterfaceName);
65
+ if (!parsed)
66
+ return undefined;
67
+ return this.resolveExtensionMethodByKey(parsed.namespaceKey, parsed.receiverTypeName, methodTsName, callArgumentCount);
68
+ }
69
+ /**
70
+ * Resolve an extension method binding target by explicit (namespaceKey, receiverTypeName).
71
+ *
72
+ * Used when extension methods are emitted as method-table members with explicit `this:`
73
+ * receiver constraints (the declaring interface name no longer encodes the receiver type).
74
+ */
75
+ resolveExtensionMethodByKey(namespaceKey, receiverTypeName, methodTsName, callArgumentCount) {
76
+ const getParameterCount = (binding) => {
77
+ if (typeof binding.parameterCount === "number") {
78
+ return binding.parameterCount;
79
+ }
80
+ const sig = binding.signature;
81
+ if (!sig)
82
+ return undefined;
83
+ const paramsMatch = sig.match(/\|\(([^)]*)\):/);
84
+ const paramsStr = paramsMatch?.[1]?.trim();
85
+ if (!paramsStr)
86
+ return undefined;
87
+ return splitSignatureTypeList(paramsStr).length;
88
+ };
89
+ const getModifiersKey = (binding) => {
90
+ const mods = (binding.parameterModifiers ??
91
+ []);
92
+ if (!Array.isArray(mods) || mods.length === 0)
93
+ return "";
94
+ return [...mods]
95
+ .slice()
96
+ .sort((a, b) => a.index - b.index)
97
+ .map((m) => `${m.index}:${m.modifier}`)
98
+ .join(",");
99
+ };
100
+ const resolveForReceiver = (receiverTypeName) => {
101
+ const candidates = this.getExtensionMethodCandidates(namespaceKey, receiverTypeName, methodTsName);
102
+ if (!candidates || candidates.length === 0)
103
+ return { kind: "none" };
104
+ let filteredCandidates = candidates;
105
+ if (typeof callArgumentCount === "number") {
106
+ const desiredParamCount = callArgumentCount + 1;
107
+ const exact = candidates.filter((c) => getParameterCount(c) === desiredParamCount);
108
+ if (exact.length > 0) {
109
+ filteredCandidates = exact;
110
+ }
111
+ else {
112
+ // Optional-parameter safety: if no exact arity match, choose the smallest
113
+ // candidate arity that can still accept the provided arguments.
114
+ const larger = candidates
115
+ .map((c) => ({ c, count: getParameterCount(c) }))
116
+ .filter((x) => typeof x.count === "number" && x.count > desiredParamCount);
117
+ if (larger.length === 0)
118
+ return { kind: "none" };
119
+ const minCount = Math.min(...larger.map((x) => x.count));
120
+ filteredCandidates = larger
121
+ .filter((x) => x.count === minCount)
122
+ .map((x) => x.c);
123
+ }
124
+ }
125
+ // If multiple candidates map to different CLR targets, treat as unresolved (unsafe).
126
+ const first = filteredCandidates[0];
127
+ if (!first)
128
+ return { kind: "none" };
129
+ const firstTarget = `${first.binding.type}::${first.binding.member}`;
130
+ const firstModsKey = getModifiersKey(first);
131
+ for (const c of filteredCandidates) {
132
+ const target = `${c.binding.type}::${c.binding.member}`;
133
+ if (target !== firstTarget) {
134
+ return { kind: "ambiguous" };
135
+ }
136
+ if (getModifiersKey(c) !== firstModsKey) {
137
+ return { kind: "ambiguous" };
138
+ }
139
+ }
140
+ return { kind: "resolved", binding: first };
141
+ };
142
+ // 1) Exact receiver match.
143
+ const direct = resolveForReceiver(receiverTypeName);
144
+ if (direct.kind === "resolved")
145
+ return direct.binding;
146
+ if (direct.kind === "ambiguous")
147
+ return undefined;
148
+ // 2) Airplane-grade fallback: CLR interface/base-type inheritance.
149
+ // This allows instance-style calls to resolve when TS surface selects a method
150
+ // declared on a derived type's extension bucket (e.g., IQueryable<T>.ToList)
151
+ // but the CLR binding is declared on a base interface (e.g., IEnumerable<T>).
152
+ //
153
+ // Determinism rules:
154
+ // - Prefer the closest base match (BFS).
155
+ // - If multiple matches exist at the same depth with different CLR targets,
156
+ // treat as unresolved (unsafe).
157
+ const visited = new Set([receiverTypeName]);
158
+ let frontier = [receiverTypeName];
159
+ for (let depth = 0; depth < 20; depth++) {
160
+ const next = [];
161
+ for (const t of frontier) {
162
+ for (const sup of this.getDirectSupertypes(t)) {
163
+ if (visited.has(sup))
164
+ continue;
165
+ visited.add(sup);
166
+ next.push(sup);
167
+ }
168
+ }
169
+ if (next.length === 0)
170
+ break;
171
+ const resolvedAtDepth = [];
172
+ let sawAmbiguous = false;
173
+ for (const sup of next) {
174
+ const res = resolveForReceiver(sup);
175
+ if (res.kind === "ambiguous")
176
+ sawAmbiguous = true;
177
+ if (res.kind === "resolved")
178
+ resolvedAtDepth.push(res.binding);
179
+ }
180
+ if (resolvedAtDepth.length > 0 || sawAmbiguous) {
181
+ // If any ambiguity exists at the closest depth, do not guess.
182
+ if (sawAmbiguous)
183
+ return undefined;
184
+ const first = resolvedAtDepth[0];
185
+ if (!first)
186
+ return undefined;
187
+ const target0 = `${first.binding.type}::${first.binding.member}`;
188
+ const mods0 = getModifiersKey(first);
189
+ for (const b of resolvedAtDepth) {
190
+ const target = `${b.binding.type}::${b.binding.member}`;
191
+ if (target !== target0)
192
+ return undefined;
193
+ if (getModifiersKey(b) !== mods0)
194
+ return undefined;
195
+ }
196
+ return first;
197
+ }
198
+ frontier = next;
199
+ }
200
+ return undefined;
201
+ }
202
+ parseExtensionInterfaceName(extensionInterfaceName) {
203
+ if (!extensionInterfaceName.startsWith("__Ext_"))
204
+ return undefined;
205
+ const rest = extensionInterfaceName.slice("__Ext_".length);
206
+ // Find the longest namespaceKey prefix we have indexed.
207
+ let bestNamespaceKey;
208
+ for (const namespaceKey of this.extensionMethods.keys()) {
209
+ if (rest.startsWith(`${namespaceKey}_`)) {
210
+ if (!bestNamespaceKey ||
211
+ namespaceKey.length > bestNamespaceKey.length) {
212
+ bestNamespaceKey = namespaceKey;
213
+ }
214
+ }
215
+ }
216
+ if (!bestNamespaceKey)
217
+ return undefined;
218
+ const receiverTypeName = rest.slice(bestNamespaceKey.length + 1);
219
+ if (!receiverTypeName)
220
+ return undefined;
221
+ return { namespaceKey: bestNamespaceKey, receiverTypeName };
222
+ }
223
+ /**
224
+ * Load a binding manifest file and add its bindings to the registry
225
+ * Supports simple, full, and tsbindgen formats
226
+ */
227
+ addBindings(_filePath, manifest) {
228
+ // Airplane-grade: a given bindings file must be loaded exactly once per
229
+ // ProgramContext. Some converters perform on-demand bindings.json loading
230
+ // based on Binding-resolved MemberIds; without this guard, overload sets
231
+ // can silently duplicate and become ambiguous.
232
+ if (this.loadedBindingFiles.has(_filePath))
233
+ return;
234
+ this.loadedBindingFiles.add(_filePath);
235
+ const addMemberOverload = (key, member) => {
236
+ const existing = this.memberOverloads.get(key) ?? [];
237
+ existing.push(member);
238
+ this.memberOverloads.set(key, existing);
239
+ };
240
+ const addClrMemberOverload = (member) => {
241
+ if (member.kind !== "method")
242
+ return;
243
+ const clrTargetKey = makeClrMemberKey(member.binding.assembly, member.binding.type, member.binding.member);
244
+ const existing = this.clrMemberOverloads.get(clrTargetKey) ?? [];
245
+ existing.push(member);
246
+ this.clrMemberOverloads.set(clrTargetKey, existing);
247
+ };
248
+ if (isFullBindingManifest(manifest)) {
249
+ // Full format: hierarchical namespace/type/member structure
250
+ // Index by alias (TS identifier) for quick lookup
251
+ for (const ns of manifest.namespaces) {
252
+ this.namespaces.set(ns.alias, ns);
253
+ // Index types for quick lookup by TS alias
254
+ for (const type of ns.types) {
255
+ this.types.set(type.alias, type);
256
+ // Index members for quick lookup (keyed by "typeAlias.memberAlias")
257
+ for (const member of type.members) {
258
+ const key = `${type.alias}.${member.alias}`;
259
+ this.members.set(key, member);
260
+ addMemberOverload(key, member);
261
+ addClrMemberOverload(member);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ else if (isTsbindgenBindingFile(manifest)) {
267
+ // tsbindgen format: convert to internal format
268
+ for (const tsbType of manifest.types) {
269
+ // Create members from methods, properties, and fields
270
+ const members = [];
271
+ for (const method of tsbType.methods) {
272
+ const memberBinding = {
273
+ kind: "method",
274
+ name: method.clrName,
275
+ // No naming policy: TS member names are the CLR names as authored.
276
+ alias: method.clrName,
277
+ signature: method.normalizedSignature,
278
+ parameterCount: method.parameterCount,
279
+ binding: {
280
+ assembly: method.declaringAssemblyName,
281
+ type: method.declaringClrType,
282
+ // member = clrName (what C# emits, e.g., "Add")
283
+ member: method.clrName,
284
+ },
285
+ // Include parameter modifiers for ref/out/in parameters
286
+ parameterModifiers: method.parameterModifiers,
287
+ isExtensionMethod: method.isExtensionMethod ?? false,
288
+ };
289
+ members.push(memberBinding);
290
+ addClrMemberOverload(memberBinding);
291
+ // Index extension methods by (declaring namespace, receiver type, method name).
292
+ if (method.isExtensionMethod && method.normalizedSignature) {
293
+ const receiverTypeName = extractExtensionReceiverType(method.normalizedSignature);
294
+ const namespaceKey = extractNamespaceKey(method.declaringClrType);
295
+ if (receiverTypeName && namespaceKey) {
296
+ const nsMap = this.extensionMethods.get(namespaceKey) ??
297
+ new Map();
298
+ if (!this.extensionMethods.has(namespaceKey)) {
299
+ this.extensionMethods.set(namespaceKey, nsMap);
300
+ }
301
+ const receiverMap = nsMap.get(receiverTypeName) ??
302
+ new Map();
303
+ if (!nsMap.has(receiverTypeName)) {
304
+ nsMap.set(receiverTypeName, receiverMap);
305
+ }
306
+ const list = receiverMap.get(memberBinding.alias) ?? [];
307
+ list.push(memberBinding);
308
+ receiverMap.set(memberBinding.alias, list);
309
+ }
310
+ }
311
+ }
312
+ for (const prop of tsbType.properties) {
313
+ members.push({
314
+ kind: "property",
315
+ name: prop.clrName,
316
+ alias: prop.clrName,
317
+ binding: {
318
+ assembly: prop.declaringAssemblyName,
319
+ type: prop.declaringClrType,
320
+ member: prop.clrName,
321
+ },
322
+ });
323
+ }
324
+ for (const field of tsbType.fields) {
325
+ // Fields are treated as properties for binding purposes
326
+ members.push({
327
+ kind: "property",
328
+ name: field.clrName,
329
+ alias: field.clrName,
330
+ binding: {
331
+ assembly: field.declaringAssemblyName,
332
+ type: field.declaringClrType,
333
+ member: field.clrName,
334
+ },
335
+ });
336
+ }
337
+ const tsAlias = tsbindgenClrTypeNameToTsTypeName(tsbType.clrName);
338
+ // Record CLR inheritance relationships (base type + interfaces) so extension-method
339
+ // binding lookup can follow the CLR graph deterministically.
340
+ const baseAlias = tsbType.baseType?.clrName
341
+ ? tsbindgenClrTypeNameToTsTypeName(tsbType.baseType.clrName)
342
+ : undefined;
343
+ if (baseAlias)
344
+ this.addSupertype(tsAlias, baseAlias);
345
+ for (const iface of tsbType.interfaces ?? []) {
346
+ if (!iface?.clrName)
347
+ continue;
348
+ const ifaceAlias = tsbindgenClrTypeNameToTsTypeName(iface.clrName);
349
+ this.addSupertype(tsAlias, ifaceAlias);
350
+ }
351
+ const kindFromBindings = (() => {
352
+ switch (tsbType.kind) {
353
+ case "Interface":
354
+ return "interface";
355
+ case "Struct":
356
+ return "struct";
357
+ case "Enum":
358
+ return "enum";
359
+ case "Class":
360
+ default:
361
+ return "class";
362
+ }
363
+ })();
364
+ // Create TypeBinding - TS alias is derived deterministically from CLR name.
365
+ const typeBinding = {
366
+ name: tsbType.clrName,
367
+ alias: tsAlias,
368
+ kind: kindFromBindings,
369
+ members,
370
+ };
371
+ // Index the type by its TS name.
372
+ this.types.set(typeBinding.alias, typeBinding);
373
+ // Also index by simple name if ts alias has arity suffix (e.g., "List_1" -> also index as "List")
374
+ // This is needed because TS exports both List_1 and List as aliases, and TS code uses List<T>
375
+ // IMPORTANT: Only set if not already present - non-generic versions should take precedence
376
+ // (e.g., Action should resolve to System.Action, not System.Action`9)
377
+ const arityMatch = typeBinding.alias.match(/^(.+)_(\d+)$/);
378
+ const simpleAlias = arityMatch ? arityMatch[1] : null;
379
+ if (simpleAlias &&
380
+ simpleAlias !== typeBinding.alias &&
381
+ !this.types.has(simpleAlias)) {
382
+ this.types.set(simpleAlias, typeBinding);
383
+ }
384
+ // Index members for direct lookup.
385
+ for (const member of members) {
386
+ // Key by TS name (e.g., "List_1.Add")
387
+ const tsKey = `${typeBinding.alias}.${member.alias}`;
388
+ this.members.set(tsKey, member);
389
+ addMemberOverload(tsKey, member);
390
+ // Also key by simple alias if applicable (e.g., "List.Add")
391
+ if (simpleAlias) {
392
+ const simpleKey = `${simpleAlias}.${member.alias}`;
393
+ this.members.set(simpleKey, member);
394
+ addMemberOverload(simpleKey, member);
395
+ }
396
+ }
397
+ }
398
+ // Optional flattened named exports.
399
+ // These are stable value exports for CLR namespace facade modules and are
400
+ // resolved by Tsonic during import binding (so `import { x }` maps to
401
+ // `global::<DeclaringType>.<member>` in C#).
402
+ if (manifest.exports) {
403
+ const nsExports = this.tsbindgenExports.get(manifest.namespace) ??
404
+ new Map();
405
+ for (const [exportName, exp] of Object.entries(manifest.exports)) {
406
+ nsExports.set(exportName, exp);
407
+ }
408
+ this.tsbindgenExports.set(manifest.namespace, nsExports);
409
+ }
410
+ }
411
+ else {
412
+ // Simple format: global/module bindings
413
+ for (const [name, descriptor] of Object.entries(manifest.bindings)) {
414
+ this.simpleBindings.set(name, descriptor);
415
+ }
416
+ }
417
+ }
418
+ /**
419
+ * Look up a simple global/module binding
420
+ */
421
+ getBinding(name) {
422
+ return this.simpleBindings.get(name);
423
+ }
424
+ /**
425
+ * Look up a namespace binding by TS alias
426
+ */
427
+ getNamespace(tsAlias) {
428
+ return this.namespaces.get(tsAlias);
429
+ }
430
+ /**
431
+ * Look up a type binding by TS alias
432
+ */
433
+ getType(tsAlias) {
434
+ return this.types.get(tsAlias);
435
+ }
436
+ /**
437
+ * Look up a member binding by TS type alias and member alias
438
+ */
439
+ getMember(typeAlias, memberAlias) {
440
+ const key = `${typeAlias}.${memberAlias}`;
441
+ const direct = this.members.get(key);
442
+ if (direct)
443
+ return direct;
444
+ // tsbindgen encodes protected CLR members on a synthetic `${TypeName}$protected` class.
445
+ // Those members are still declared on the real CLR type, so bindings must resolve
446
+ // through the owning type alias.
447
+ if (typeAlias.endsWith("$protected")) {
448
+ const ownerAlias = typeAlias.slice(0, -"$protected".length);
449
+ return this.members.get(`${ownerAlias}.${memberAlias}`);
450
+ }
451
+ return undefined;
452
+ }
453
+ /**
454
+ * Look up all member bindings for a TS type alias + member alias.
455
+ *
456
+ * IMPORTANT: Methods can be overloaded, and overloads can differ in ref/out/in
457
+ * modifiers (tsbindgen provides these via `parameterModifiers`). This accessor
458
+ * preserves overload sets so the call converter can select the correct one.
459
+ */
460
+ getMemberOverloads(typeAlias, memberAlias) {
461
+ const key = `${typeAlias}.${memberAlias}`;
462
+ const direct = this.memberOverloads.get(key);
463
+ if (direct && direct.length > 0)
464
+ return direct;
465
+ // See getMember(): map `${TypeName}$protected` to `${TypeName}` for CLR binding lookup.
466
+ if (typeAlias.endsWith("$protected")) {
467
+ const ownerAlias = typeAlias.slice(0, -"$protected".length);
468
+ const ownerKey = `${ownerAlias}.${memberAlias}`;
469
+ const owner = this.memberOverloads.get(ownerKey);
470
+ if (owner && owner.length > 0)
471
+ return owner;
472
+ }
473
+ return undefined;
474
+ }
475
+ /**
476
+ * Look up all member bindings for a CLR member target.
477
+ *
478
+ * Keyed by declaring assembly, CLR type, and CLR member name.
479
+ */
480
+ getClrMemberOverloads(assembly, clrType, clrMember) {
481
+ return this.clrMemberOverloads.get(makeClrMemberKey(assembly, clrType, clrMember));
482
+ }
483
+ /**
484
+ * Look up a tsbindgen flattened named export by CLR namespace + export name.
485
+ */
486
+ getTsbindgenExport(namespace, exportName) {
487
+ return this.tsbindgenExports.get(namespace)?.get(exportName);
488
+ }
489
+ /**
490
+ * Get all loaded simple bindings
491
+ */
492
+ getAllBindings() {
493
+ return Array.from(this.simpleBindings.entries());
494
+ }
495
+ /**
496
+ * Get all loaded namespaces
497
+ */
498
+ getAllNamespaces() {
499
+ return Array.from(this.namespaces.values());
500
+ }
501
+ /**
502
+ * Get a copy of the types map for passing to the emitter.
503
+ * Returns a new Map to ensure immutability - callers cannot modify the registry.
504
+ */
505
+ getTypesMap() {
506
+ return new Map(this.types);
507
+ }
508
+ /**
509
+ * Clear all loaded bindings
510
+ */
511
+ clear() {
512
+ this.loadedBindingFiles.clear();
513
+ this.simpleBindings.clear();
514
+ this.namespaces.clear();
515
+ this.types.clear();
516
+ this.members.clear();
517
+ this.memberOverloads.clear();
518
+ this.clrMemberOverloads.clear();
519
+ this.extensionMethods.clear();
520
+ this.tsbindgenExports.clear();
521
+ }
522
+ }
523
+ const makeClrMemberKey = (assembly, clrType, clrMember) => `${assembly}:${clrType}::${clrMember}`;
524
+ /**
525
+ * Extract CLR namespace key ('.' → '_') from a full CLR type name.
526
+ * Example: "System.Linq.Enumerable" → "System_Linq"
527
+ */
528
+ const extractNamespaceKey = (clrType) => {
529
+ const lastDot = clrType.lastIndexOf(".");
530
+ if (lastDot <= 0)
531
+ return undefined;
532
+ return clrType.slice(0, lastDot).replace(/\./g, "_");
533
+ };
534
+ /**
535
+ * Extract the extension receiver TS type name from a tsbindgen normalized signature.
536
+ *
537
+ * Format: "Name|(ParamTypes):ReturnType|static=true"
538
+ * Example: "Where|(IEnumerable_1,Func_2):IEnumerable_1|static=true"
539
+ *
540
+ * Returns the first parameter type name (stripped of byref suffix and namespace prefix).
541
+ */
542
+ const extractExtensionReceiverType = (normalizedSignature) => {
543
+ const paramsMatch = normalizedSignature.match(/\|\(([^)]*)\):/);
544
+ const paramsStr = paramsMatch?.[1]?.trim();
545
+ if (!paramsStr)
546
+ return undefined;
547
+ const [first] = splitSignatureTypeList(paramsStr);
548
+ if (!first)
549
+ return undefined;
550
+ let receiver = first.trim();
551
+ if (receiver.endsWith("&"))
552
+ receiver = receiver.slice(0, -1);
553
+ if (receiver.endsWith("[]"))
554
+ receiver = receiver.slice(0, -2);
555
+ const lastDot = receiver.lastIndexOf(".");
556
+ if (lastDot >= 0)
557
+ receiver = receiver.slice(lastDot + 1);
558
+ return receiver || undefined;
559
+ };
560
+ /**
561
+ * Split a comma-delimited type list, respecting nested bracket depth.
562
+ * tsbindgen signatures use CLR-style nested generic brackets in some contexts.
563
+ */
564
+ const splitSignatureTypeList = (str) => {
565
+ const result = [];
566
+ let depth = 0;
567
+ let current = "";
568
+ for (const char of str) {
569
+ if (char === "[") {
570
+ depth++;
571
+ current += char;
572
+ }
573
+ else if (char === "]") {
574
+ depth--;
575
+ current += char;
576
+ }
577
+ else if (char === "," && depth === 0) {
578
+ result.push(current.trim());
579
+ current = "";
580
+ }
581
+ else {
582
+ current += char;
583
+ }
584
+ }
585
+ if (current.trim()) {
586
+ result.push(current.trim());
587
+ }
588
+ return result;
589
+ };
590
+ //# sourceMappingURL=binding-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-registry.js","sourceRoot":"","sources":["../../src/program/binding-registry.ts"],"names":[],"mappings":"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"}