@tsonic/frontend 0.0.62 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/dependency-graph.d.ts +1 -1
  3. package/dist/dependency-graph.d.ts.map +1 -1
  4. package/dist/dependency-graph.js +1 -1
  5. package/dist/dependency-graph.js.map +1 -1
  6. package/dist/dotnet-metadata.d.ts +0 -12
  7. package/dist/dotnet-metadata.d.ts.map +1 -1
  8. package/dist/dotnet-metadata.js +0 -24
  9. package/dist/dotnet-metadata.js.map +1 -1
  10. package/dist/generic-function-values.d.ts +11 -0
  11. package/dist/generic-function-values.d.ts.map +1 -0
  12. package/dist/generic-function-values.js +243 -0
  13. package/dist/generic-function-values.js.map +1 -0
  14. package/dist/generic-function-values.test.d.ts +2 -0
  15. package/dist/generic-function-values.test.d.ts.map +1 -0
  16. package/dist/generic-function-values.test.js +256 -0
  17. package/dist/generic-function-values.test.js.map +1 -0
  18. package/dist/graph/extraction/imports.d.ts +5 -0
  19. package/dist/graph/extraction/imports.d.ts.map +1 -1
  20. package/dist/graph/extraction/imports.js +30 -0
  21. package/dist/graph/extraction/imports.js.map +1 -1
  22. package/dist/graph/extraction/index.d.ts +1 -1
  23. package/dist/graph/extraction/index.d.ts.map +1 -1
  24. package/dist/graph/extraction/index.js +1 -1
  25. package/dist/graph/extraction/index.js.map +1 -1
  26. package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
  27. package/dist/graph/extraction/orchestrator.js +16 -2
  28. package/dist/graph/extraction/orchestrator.js.map +1 -1
  29. package/dist/graph/extraction.d.ts +1 -1
  30. package/dist/graph/extraction.d.ts.map +1 -1
  31. package/dist/graph/extraction.js +1 -1
  32. package/dist/graph/extraction.js.map +1 -1
  33. package/dist/ir/binding/binding-factory.d.ts +17 -0
  34. package/dist/ir/binding/binding-factory.d.ts.map +1 -0
  35. package/dist/ir/binding/binding-factory.js +765 -0
  36. package/dist/ir/binding/binding-factory.js.map +1 -0
  37. package/dist/ir/binding/binding-helpers.d.ts +90 -0
  38. package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
  39. package/dist/ir/binding/binding-helpers.js +387 -0
  40. package/dist/ir/binding/binding-helpers.js.map +1 -0
  41. package/dist/ir/binding/binding-types.d.ts +203 -0
  42. package/dist/ir/binding/binding-types.d.ts.map +1 -0
  43. package/dist/ir/binding/binding-types.js +9 -0
  44. package/dist/ir/binding/binding-types.js.map +1 -0
  45. package/dist/ir/binding/index.d.ts +4 -158
  46. package/dist/ir/binding/index.d.ts.map +1 -1
  47. package/dist/ir/binding/index.js +3 -1134
  48. package/dist/ir/binding/index.js.map +1 -1
  49. package/dist/ir/builder.test.js +223 -0
  50. package/dist/ir/builder.test.js.map +1 -1
  51. package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
  52. package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
  53. package/dist/ir/converters/anonymous-synthesis.js +45 -8
  54. package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
  55. package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
  56. package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
  57. package/dist/ir/converters/expressions/access/access-converter.js +141 -0
  58. package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
  59. package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
  60. package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
  61. package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
  62. package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
  63. package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
  64. package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
  65. package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
  66. package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
  67. package/dist/ir/converters/expressions/access.d.ts +1 -7
  68. package/dist/ir/converters/expressions/access.d.ts.map +1 -1
  69. package/dist/ir/converters/expressions/access.js +1 -720
  70. package/dist/ir/converters/expressions/access.js.map +1 -1
  71. package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
  72. package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
  73. package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
  74. package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
  75. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
  76. package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
  77. package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
  78. package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
  79. package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
  80. package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
  81. package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
  82. package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
  83. package/dist/ir/converters/expressions/calls.d.ts +2 -28
  84. package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
  85. package/dist/ir/converters/expressions/calls.js +2 -1344
  86. package/dist/ir/converters/expressions/calls.js.map +1 -1
  87. package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
  88. package/dist/ir/converters/expressions/collections.js +37 -6
  89. package/dist/ir/converters/expressions/collections.js.map +1 -1
  90. package/dist/ir/converters/expressions/functions.js +1 -1
  91. package/dist/ir/converters/expressions/functions.js.map +1 -1
  92. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
  93. package/dist/ir/converters/expressions/helpers.js +1 -0
  94. package/dist/ir/converters/expressions/helpers.js.map +1 -1
  95. package/dist/ir/converters/expressions/other.d.ts.map +1 -1
  96. package/dist/ir/converters/expressions/other.js +3 -2
  97. package/dist/ir/converters/expressions/other.js.map +1 -1
  98. package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
  99. package/dist/ir/converters/flow-narrowing.js +3 -2
  100. package/dist/ir/converters/flow-narrowing.js.map +1 -1
  101. package/dist/ir/converters/statements/declarations/classes/methods.js +1 -1
  102. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
  103. package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
  104. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
  105. package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
  106. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
  107. package/dist/ir/converters/statements/declarations/variables.js +289 -2
  108. package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
  109. package/dist/ir/expression-converter.d.ts +0 -1
  110. package/dist/ir/expression-converter.d.ts.map +1 -1
  111. package/dist/ir/expression-converter.js +0 -2
  112. package/dist/ir/expression-converter.js.map +1 -1
  113. package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
  114. package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
  115. package/dist/ir/generic-function-value-lowering.test.js +312 -0
  116. package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
  117. package/dist/ir/generic-validator.d.ts +3 -4
  118. package/dist/ir/generic-validator.d.ts.map +1 -1
  119. package/dist/ir/generic-validator.js +3 -35
  120. package/dist/ir/generic-validator.js.map +1 -1
  121. package/dist/ir/program-context.d.ts +7 -0
  122. package/dist/ir/program-context.d.ts.map +1 -1
  123. package/dist/ir/program-context.js +1 -0
  124. package/dist/ir/program-context.js.map +1 -1
  125. package/dist/ir/statement-converter.d.ts +0 -2
  126. package/dist/ir/statement-converter.d.ts.map +1 -1
  127. package/dist/ir/statement-converter.js +0 -3
  128. package/dist/ir/statement-converter.js.map +1 -1
  129. package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
  130. package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
  131. package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
  132. package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
  133. package/dist/ir/type-system/internal/nominal-env.js +2 -6
  134. package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
  135. package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
  136. package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
  137. package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
  138. package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
  139. package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
  140. package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
  141. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
  142. package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
  143. package/dist/ir/type-system/internal/type-converter/orchestrator.js +315 -23
  144. package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
  145. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
  146. package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
  147. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
  148. package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
  149. package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
  150. package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
  151. package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
  152. package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
  153. package/dist/ir/type-system/internal/type-converter/references.js +67 -29
  154. package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
  155. package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
  156. package/dist/ir/type-system/internal/type-converter/utility-types.js +145 -0
  157. package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
  158. package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
  159. package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
  160. package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
  161. package/dist/ir/type-system/internal/type-registry.js +7 -7
  162. package/dist/ir/type-system/internal/type-registry.js.map +1 -1
  163. package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
  164. package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
  165. package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
  166. package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
  167. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
  168. package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
  169. package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1044
  170. package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
  171. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
  172. package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
  173. package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
  174. package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
  175. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
  176. package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
  177. package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
  178. package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
  179. package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
  180. package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
  181. package/dist/ir/type-system/internal/universe/index.js +1 -3
  182. package/dist/ir/type-system/internal/universe/index.js.map +1 -1
  183. package/dist/ir/type-system/internal/universe/unified-universe.test.js +2 -0
  184. package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
  185. package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
  186. package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
  187. package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
  188. package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
  189. package/dist/ir/type-system/type-system-inference.d.ts +98 -0
  190. package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
  191. package/dist/ir/type-system/type-system-inference.js +1083 -0
  192. package/dist/ir/type-system/type-system-inference.js.map +1 -0
  193. package/dist/ir/type-system/type-system-relations.d.ts +15 -0
  194. package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
  195. package/dist/ir/type-system/type-system-relations.js +152 -0
  196. package/dist/ir/type-system/type-system-relations.js.map +1 -0
  197. package/dist/ir/type-system/type-system-state.d.ts +436 -0
  198. package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
  199. package/dist/ir/type-system/type-system-state.js +212 -0
  200. package/dist/ir/type-system/type-system-state.js.map +1 -0
  201. package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
  202. package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
  203. package/dist/ir/type-system/type-system-utilities.js +373 -0
  204. package/dist/ir/type-system/type-system-utilities.js.map +1 -0
  205. package/dist/ir/type-system/type-system.d.ts +17 -358
  206. package/dist/ir/type-system/type-system.d.ts.map +1 -1
  207. package/dist/ir/type-system/type-system.js +67 -2945
  208. package/dist/ir/type-system/type-system.js.map +1 -1
  209. package/dist/ir/types/index.d.ts +1 -0
  210. package/dist/ir/types/index.d.ts.map +1 -1
  211. package/dist/ir/types/index.js +1 -0
  212. package/dist/ir/types/index.js.map +1 -1
  213. package/dist/ir/types/ir-substitution.js +1 -1
  214. package/dist/ir/types/ir-substitution.js.map +1 -1
  215. package/dist/ir/types/statements.d.ts +1 -1
  216. package/dist/ir/types/type-ops.d.ts +9 -0
  217. package/dist/ir/types/type-ops.d.ts.map +1 -0
  218. package/dist/ir/types/type-ops.js +134 -0
  219. package/dist/ir/types/type-ops.js.map +1 -0
  220. package/dist/ir/types/type-ops.test.d.ts +2 -0
  221. package/dist/ir/types/type-ops.test.d.ts.map +1 -0
  222. package/dist/ir/types/type-ops.test.js +73 -0
  223. package/dist/ir/types/type-ops.test.js.map +1 -0
  224. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
  225. package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
  226. package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
  227. package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
  228. package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
  229. package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
  230. package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
  231. package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
  232. package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
  233. package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
  234. package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
  235. package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
  236. package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
  237. package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
  238. package/dist/ir/validation/attribute-collection-pass.js +1 -961
  239. package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
  240. package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
  241. package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
  242. package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
  243. package/dist/ir/validation/soundness-gate.js +2 -1
  244. package/dist/ir/validation/soundness-gate.js.map +1 -1
  245. package/dist/ir/validation/soundness-gate.test.js +69 -0
  246. package/dist/ir/validation/soundness-gate.test.js.map +1 -1
  247. package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
  248. package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
  249. package/dist/ir/validation/yield-lowering-pass.js +942 -48
  250. package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
  251. package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
  252. package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
  253. package/dist/program/binding-loader.d.ts +37 -0
  254. package/dist/program/binding-loader.d.ts.map +1 -0
  255. package/dist/program/binding-loader.js +155 -0
  256. package/dist/program/binding-loader.js.map +1 -0
  257. package/dist/program/binding-registry.d.ts +106 -0
  258. package/dist/program/binding-registry.d.ts.map +1 -0
  259. package/dist/program/binding-registry.js +590 -0
  260. package/dist/program/binding-registry.js.map +1 -0
  261. package/dist/program/binding-types.d.ts +166 -0
  262. package/dist/program/binding-types.d.ts.map +1 -0
  263. package/dist/program/binding-types.js +57 -0
  264. package/dist/program/binding-types.js.map +1 -0
  265. package/dist/program/bindings.d.ts +6 -271
  266. package/dist/program/bindings.d.ts.map +1 -1
  267. package/dist/program/bindings.js +7 -781
  268. package/dist/program/bindings.js.map +1 -1
  269. package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
  270. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
  271. package/dist/resolver/clr-bindings-resolver.js +22 -32
  272. package/dist/resolver/clr-bindings-resolver.js.map +1 -1
  273. package/dist/resolver/clr-bindings-resolver.test.js +0 -27
  274. package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
  275. package/dist/resolver/import-resolution.d.ts +1 -1
  276. package/dist/resolver/import-resolution.d.ts.map +1 -1
  277. package/dist/resolver/import-resolution.js +2 -7
  278. package/dist/resolver/import-resolution.js.map +1 -1
  279. package/dist/resolver/naming.d.ts.map +1 -1
  280. package/dist/resolver/naming.js +1 -0
  281. package/dist/resolver/naming.js.map +1 -1
  282. package/dist/types/diagnostic.d.ts +1 -1
  283. package/dist/types/diagnostic.d.ts.map +1 -1
  284. package/dist/types/diagnostic.js.map +1 -1
  285. package/dist/validation/features.d.ts.map +1 -1
  286. package/dist/validation/features.js +38 -13
  287. package/dist/validation/features.js.map +1 -1
  288. package/dist/validation/features.test.d.ts +2 -0
  289. package/dist/validation/features.test.d.ts.map +1 -0
  290. package/dist/validation/features.test.js +273 -0
  291. package/dist/validation/features.test.js.map +1 -0
  292. package/dist/validation/generics.d.ts +1 -1
  293. package/dist/validation/generics.d.ts.map +1 -1
  294. package/dist/validation/generics.js +2 -26
  295. package/dist/validation/generics.js.map +1 -1
  296. package/dist/validation/imports.d.ts.map +1 -1
  297. package/dist/validation/imports.js +2 -1
  298. package/dist/validation/imports.js.map +1 -1
  299. package/dist/validation/imports.test.d.ts +2 -0
  300. package/dist/validation/imports.test.d.ts.map +1 -0
  301. package/dist/validation/imports.test.js +112 -0
  302. package/dist/validation/imports.test.js.map +1 -0
  303. package/dist/validation/static-safety.d.ts +6 -6
  304. package/dist/validation/static-safety.d.ts.map +1 -1
  305. package/dist/validation/static-safety.js +163 -109
  306. package/dist/validation/static-safety.js.map +1 -1
  307. package/dist/validation/unsupported-utility-types.d.ts +3 -3
  308. package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
  309. package/dist/validation/unsupported-utility-types.js +4 -7
  310. package/dist/validation/unsupported-utility-types.js.map +1 -1
  311. package/dist/validator.maximus.test.d.ts +2 -0
  312. package/dist/validator.maximus.test.d.ts.map +1 -0
  313. package/dist/validator.maximus.test.js +1214 -0
  314. package/dist/validator.maximus.test.js.map +1 -0
  315. package/dist/validator.test.js +152 -18
  316. package/dist/validator.test.js.map +1 -1
  317. package/package.json +1 -1
  318. package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
  319. package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
  320. package/dist/ir/converters/statements/declarations/registry.js +0 -130
  321. package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
  322. package/dist/ir/this-parameter-inference.test.d.ts +0 -13
  323. package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
  324. package/dist/ir/this-parameter-inference.test.js +0 -165
  325. package/dist/ir/this-parameter-inference.test.js.map +0 -1
  326. package/dist/metadata/bindings-loader.d.ts +0 -41
  327. package/dist/metadata/bindings-loader.d.ts.map +0 -1
  328. package/dist/metadata/bindings-loader.js +0 -308
  329. package/dist/metadata/bindings-loader.js.map +0 -1
  330. package/dist/metadata/bindings-loader.test.d.ts +0 -5
  331. package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
  332. package/dist/metadata/bindings-loader.test.js +0 -117
  333. package/dist/metadata/bindings-loader.test.js.map +0 -1
  334. package/dist/metadata/index.d.ts +0 -8
  335. package/dist/metadata/index.d.ts.map +0 -1
  336. package/dist/metadata/index.js +0 -7
  337. package/dist/metadata/index.js.map +0 -1
  338. package/dist/metadata/library-loader.d.ts +0 -42
  339. package/dist/metadata/library-loader.d.ts.map +0 -1
  340. package/dist/metadata/library-loader.js +0 -126
  341. package/dist/metadata/library-loader.js.map +0 -1
  342. package/dist/metadata/loader.d.ts +0 -26
  343. package/dist/metadata/loader.d.ts.map +0 -1
  344. package/dist/metadata/loader.js +0 -333
  345. package/dist/metadata/loader.js.map +0 -1
  346. package/dist/metadata/loader.test.d.ts +0 -5
  347. package/dist/metadata/loader.test.d.ts.map +0 -1
  348. package/dist/metadata/loader.test.js +0 -119
  349. package/dist/metadata/loader.test.js.map +0 -1
  350. package/dist/resolver/naming-policy.d.ts +0 -20
  351. package/dist/resolver/naming-policy.d.ts.map +0 -1
  352. package/dist/resolver/naming-policy.js +0 -40
  353. package/dist/resolver/naming-policy.js.map +0 -1
  354. package/dist/types/bindings.d.ts +0 -153
  355. package/dist/types/bindings.d.ts.map +0 -1
  356. package/dist/types/bindings.js +0 -14
  357. package/dist/types/bindings.js.map +0 -1
  358. package/dist/types/metadata.d.ts +0 -196
  359. package/dist/types/metadata.d.ts.map +0 -1
  360. package/dist/types/metadata.js +0 -10
  361. package/dist/types/metadata.js.map +0 -1
  362. package/dist/types/nested-types.d.ts +0 -111
  363. package/dist/types/nested-types.d.ts.map +0 -1
  364. package/dist/types/nested-types.js +0 -176
  365. package/dist/types/nested-types.js.map +0 -1
  366. package/dist/types/nested-types.test.d.ts +0 -5
  367. package/dist/types/nested-types.test.d.ts.map +0 -1
  368. package/dist/types/nested-types.test.js +0 -135
  369. package/dist/types/nested-types.test.js.map +0 -1
  370. package/dist/types/ref-parameters.d.ts +0 -123
  371. package/dist/types/ref-parameters.d.ts.map +0 -1
  372. package/dist/types/ref-parameters.js +0 -203
  373. package/dist/types/ref-parameters.js.map +0 -1
  374. package/dist/types/ref-parameters.test.d.ts +0 -5
  375. package/dist/types/ref-parameters.test.d.ts.map +0 -1
  376. package/dist/types/ref-parameters.test.js +0 -147
  377. package/dist/types/ref-parameters.test.js.map +0 -1
@@ -1,130 +0,0 @@
1
- /**
2
- * Metadata and binding registry management
3
- *
4
- * Provides module-level singletons for:
5
- * - DotnetMetadataRegistry: .NET metadata for imported types
6
- * - BindingRegistry: CLR bindings from tsbindgen
7
- * - TypeRegistry: AST-based type declarations (opaque, set by orchestrator)
8
- * - NominalEnv: Inheritance chain substitution (opaque, set by orchestrator)
9
- *
10
- * ALICE'S SPEC: This module does NOT import internal types.
11
- * TypeRegistry and NominalEnv are stored as opaque values.
12
- * Only the orchestrator (which IS allowed to import internals) knows the actual types.
13
- */
14
- import { DotnetMetadataRegistry } from "../../../../dotnet-metadata.js";
15
- import { BindingRegistry } from "../../../../program/bindings.js";
16
- /**
17
- * Module-level metadata registry singleton
18
- * Set once at the start of compilation via setMetadataRegistry()
19
- */
20
- let _metadataRegistry = new DotnetMetadataRegistry();
21
- /**
22
- * Module-level binding registry singleton
23
- * Set once at the start of compilation via setBindingRegistry()
24
- */
25
- let _bindingRegistry = new BindingRegistry();
26
- /**
27
- * Module-level type registry singleton (opaque)
28
- * Set once at the start of compilation via setTypeRegistry()
29
- * Used for AST-based type declaration lookups (deterministic typing)
30
- *
31
- * ALICE'S SPEC: Stored as opaque value. Only orchestrator knows actual type.
32
- */
33
- let _typeRegistry = undefined;
34
- /**
35
- * Module-level nominal env singleton (opaque)
36
- * Set once at the start of compilation via setNominalEnv()
37
- * Used for inheritance chain substitution (deterministic typing)
38
- *
39
- * ALICE'S SPEC: Stored as opaque value. Only orchestrator knows actual type.
40
- */
41
- let _nominalEnv = undefined;
42
- /**
43
- * Module-level TypeSystem singleton
44
- * Set once at the start of compilation via setTypeSystem()
45
- * This is the single source of truth for all type queries (Alice's spec)
46
- */
47
- let _typeSystem = undefined;
48
- /**
49
- * Set the metadata registry for this compilation
50
- * Called once at the start of IR building
51
- */
52
- export const setMetadataRegistry = (registry) => {
53
- _metadataRegistry = registry;
54
- };
55
- /**
56
- * Get the current metadata registry
57
- */
58
- export const getMetadataRegistry = () => _metadataRegistry;
59
- /**
60
- * Set the binding registry for this compilation
61
- * Called once at the start of IR building
62
- */
63
- export const setBindingRegistry = (registry) => {
64
- _bindingRegistry = registry;
65
- };
66
- /**
67
- * Get the current binding registry
68
- */
69
- export const getBindingRegistry = () => _bindingRegistry;
70
- /**
71
- * Set the type registry for this compilation (opaque)
72
- * Called once at the start of IR building by orchestrator
73
- *
74
- * ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual TypeRegistry.
75
- */
76
- export const setTypeRegistry = (registry) => {
77
- _typeRegistry = registry;
78
- };
79
- /**
80
- * Internal accessor for TypeSystem construction only.
81
- * NOT for use in converters - use TypeSystem methods instead.
82
- *
83
- * ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
84
- */
85
- export const _internalGetTypeRegistry = () => _typeRegistry;
86
- /**
87
- * Set the nominal env for this compilation (opaque)
88
- * Called once at the start of IR building by orchestrator
89
- *
90
- * ALICE'S SPEC: Parameter is opaque. Orchestrator passes actual NominalEnv.
91
- */
92
- export const setNominalEnv = (env) => {
93
- _nominalEnv = env;
94
- };
95
- /**
96
- * Internal accessor for TypeSystem construction only.
97
- * NOT for use in converters - use TypeSystem methods instead.
98
- *
99
- * ALICE'S SPEC: Returns opaque value. Orchestrator casts to actual type.
100
- */
101
- export const _internalGetNominalEnv = () => _nominalEnv;
102
- /**
103
- * Set the TypeSystem for this compilation.
104
- * Called once at the start of IR building, after TypeRegistry and NominalEnv are created.
105
- *
106
- * This is the ONLY way to set the global TypeSystem. All converters should
107
- * eventually receive TypeSystem as a parameter, but during migration they
108
- * can access it via getTypeSystem().
109
- */
110
- export const setTypeSystem = (ts) => {
111
- _typeSystem = ts;
112
- };
113
- /**
114
- * Get the current TypeSystem.
115
- * Returns undefined if not yet initialized.
116
- *
117
- * During Step 7 migration, converters can use this to access TypeSystem
118
- * before they are fully migrated to receive it as a parameter.
119
- */
120
- export const getTypeSystem = () => _typeSystem;
121
- /**
122
- * Clear type registry, nominal env, and TypeSystem.
123
- * Called between compilations to prevent stale data.
124
- */
125
- export const clearTypeRegistries = () => {
126
- _typeRegistry = undefined;
127
- _nominalEnv = undefined;
128
- _typeSystem = undefined;
129
- };
130
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../src/ir/converters/statements/declarations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAelE;;;GAGG;AACH,IAAI,iBAAiB,GAA2B,IAAI,sBAAsB,EAAE,CAAC;AAE7E;;;GAGG;AACH,IAAI,gBAAgB,GAAoB,IAAI,eAAe,EAAE,CAAC;AAE9D;;;;;;GAMG;AACH,IAAI,aAAa,GAAmC,SAAS,CAAC;AAE9D;;;;;;GAMG;AACH,IAAI,WAAW,GAAiC,SAAS,CAAC;AAE1D;;;;GAIG;AACH,IAAI,WAAW,GAA2B,SAAS,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgC,EAAQ,EAAE;IAC5E,iBAAiB,GAAG,QAAQ,CAAC;AAC/B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA2B,EAAE,CAC9D,iBAAiB,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAyB,EAAQ,EAAE;IACpE,gBAAgB,GAAG,QAAQ,CAAC;AAC9B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE,CAAC,gBAAgB,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAA4B,EAAQ,EAAE;IACpE,aAAa,GAAG,QAAQ,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAmC,EAAE,CAC3E,aAAa,CAAC;AAEhB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAqB,EAAQ,EAAE;IAC3D,WAAW,GAAG,GAAG,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAiC,EAAE,CACvE,WAAW,CAAC;AAEd;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAc,EAAQ,EAAE;IACpD,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAA2B,EAAE,CAAC,WAAW,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAS,EAAE;IAC5C,aAAa,GAAG,SAAS,CAAC;IAC1B,WAAW,GAAG,SAAS,CAAC;IACxB,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Tests for TypeScript `this:` parameters in call signatures.
3
- *
4
- * tsbindgen uses TS `this:` parameters for extension-method-like surfaces, e.g.:
5
- * Where<T>(this: IQueryable<T>, ...): Rewrap<this, IQueryable<T>>
6
- *
7
- * For airplane-grade deterministic typing, Tsonic must:
8
- * - exclude `this` from call arity (it's not a call-site argument)
9
- * - infer method type parameters from the receiver via the `this` parameter type
10
- * - erase Rewrap<TReceiver, TNewShape> to the runtime shape (TNewShape)
11
- */
12
- export {};
13
- //# sourceMappingURL=this-parameter-inference.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"this-parameter-inference.test.d.ts","sourceRoot":"","sources":["../../src/ir/this-parameter-inference.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -1,165 +0,0 @@
1
- /**
2
- * Tests for TypeScript `this:` parameters in call signatures.
3
- *
4
- * tsbindgen uses TS `this:` parameters for extension-method-like surfaces, e.g.:
5
- * Where<T>(this: IQueryable<T>, ...): Rewrap<this, IQueryable<T>>
6
- *
7
- * For airplane-grade deterministic typing, Tsonic must:
8
- * - exclude `this` from call arity (it's not a call-site argument)
9
- * - infer method type parameters from the receiver via the `this` parameter type
10
- * - erase Rewrap<TReceiver, TNewShape> to the runtime shape (TNewShape)
11
- */
12
- import { describe, it } from "mocha";
13
- import { expect } from "chai";
14
- import * as ts from "typescript";
15
- import { buildIrModule } from "./builder.js";
16
- import { createProgramContext } from "./program-context.js";
17
- import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
18
- import { BindingRegistry } from "../program/bindings.js";
19
- import { createClrBindingsResolver } from "../resolver/clr-bindings-resolver.js";
20
- import { createBinding } from "./binding/index.js";
21
- describe("TS `this:` parameter inference", () => {
22
- const createTestProgram = (source, fileName = "sample.ts") => {
23
- const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
24
- const compilerOptions = {
25
- target: ts.ScriptTarget.ES2022,
26
- module: ts.ModuleKind.NodeNext,
27
- strict: true,
28
- noEmit: true,
29
- };
30
- const host = ts.createCompilerHost(compilerOptions);
31
- const originalGetSourceFile = host.getSourceFile;
32
- host.getSourceFile = (name, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
33
- if (name === fileName) {
34
- return sourceFile;
35
- }
36
- return originalGetSourceFile.call(host, name, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
37
- };
38
- const program = ts.createProgram([fileName], compilerOptions, host);
39
- const checker = program.getTypeChecker();
40
- const testProgram = {
41
- program,
42
- checker,
43
- options: {
44
- projectRoot: process.cwd(),
45
- sourceRoot: process.cwd(),
46
- rootNamespace: "TestApp",
47
- strict: true,
48
- },
49
- sourceFiles: [sourceFile],
50
- declarationSourceFiles: [],
51
- metadata: new DotnetMetadataRegistry(),
52
- bindings: new BindingRegistry(),
53
- clrResolver: createClrBindingsResolver("/test"),
54
- binding: createBinding(checker),
55
- };
56
- const options = { sourceRoot: "/test", rootNamespace: "TestApp" };
57
- const ctx = createProgramContext(testProgram, options);
58
- return { testProgram, ctx, options };
59
- };
60
- it("infers method type parameters from the receiver via `this:`", () => {
61
- const source = `
62
- import type { Rewrap } from "@tsonic/core/lang.js";
63
-
64
- interface IQueryable_1<T> {}
65
-
66
- interface __Ext_System_Linq_IQueryable_1<T> {
67
- First<TSource>(this: IQueryable_1<TSource>): Rewrap<this, TSource>;
68
- Where<TSource>(this: IQueryable_1<TSource>, predicate: (x: TSource) => boolean): Rewrap<this, IQueryable_1<TSource>>;
69
- }
70
-
71
- declare const xs: IQueryable_1<string> & __Ext_System_Linq_IQueryable_1<string>;
72
-
73
- export function testFirst(): string {
74
- return xs.First();
75
- }
76
-
77
- export function testWhere(): void {
78
- const ys = xs.Where((x) => x.length > 0);
79
- void ys;
80
- }
81
- `;
82
- const { testProgram, ctx, options } = createTestProgram(source);
83
- const sourceFile = testProgram.sourceFiles[0];
84
- if (!sourceFile)
85
- throw new Error("Failed to create source file");
86
- // Provide minimal tsbindgen-style CLR bindings so __Ext_* members are treated
87
- // as valid extension methods (avoids TSN4004 during IR build).
88
- ctx.bindings.addBindings("/test/System.Linq/bindings.json", {
89
- namespace: "System.Linq",
90
- types: [
91
- {
92
- clrName: "System.Linq.Queryable",
93
- assemblyName: "System.Linq",
94
- methods: [
95
- {
96
- clrName: "First",
97
- normalizedSignature: "First|(IQueryable_1):System.String|static=true",
98
- parameterCount: 1,
99
- declaringClrType: "System.Linq.Queryable",
100
- declaringAssemblyName: "System.Linq",
101
- isExtensionMethod: true,
102
- },
103
- {
104
- clrName: "Where",
105
- normalizedSignature: "Where|(IQueryable_1,System.Func_2):IQueryable_1|static=true",
106
- parameterCount: 2,
107
- declaringClrType: "System.Linq.Queryable",
108
- declaringAssemblyName: "System.Linq",
109
- isExtensionMethod: true,
110
- },
111
- ],
112
- properties: [],
113
- fields: [],
114
- },
115
- ],
116
- });
117
- const result = buildIrModule(sourceFile, testProgram, options, ctx);
118
- expect(result.ok).to.equal(true);
119
- if (!result.ok)
120
- return;
121
- // No deterministic typing diagnostics should be emitted for this pattern.
122
- expect(ctx.diagnostics.map((d) => d.code)).to.deep.equal([]);
123
- const module = result.value;
124
- const testFirstFn = module.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "testFirst");
125
- if (!testFirstFn || testFirstFn.kind !== "functionDeclaration") {
126
- throw new Error("Expected function declaration 'testFirst'");
127
- }
128
- const returnStmt = testFirstFn.body.statements.find((s) => s.kind === "returnStatement");
129
- if (!returnStmt || returnStmt.kind !== "returnStatement") {
130
- throw new Error("Expected return statement in testFirst()");
131
- }
132
- const firstCall = returnStmt.expression;
133
- if (!firstCall || firstCall.kind !== "call") {
134
- throw new Error("Expected call expression in testFirst() return");
135
- }
136
- expect(firstCall.inferredType).to.deep.equal({
137
- kind: "primitiveType",
138
- name: "string",
139
- });
140
- const testWhereFn = module.body.find((stmt) => stmt.kind === "functionDeclaration" && stmt.name === "testWhere");
141
- if (!testWhereFn || testWhereFn.kind !== "functionDeclaration") {
142
- throw new Error("Expected function declaration 'testWhere'");
143
- }
144
- const varStmt = testWhereFn.body.statements.find((s) => s.kind === "variableDeclaration");
145
- if (!varStmt || varStmt.kind !== "variableDeclaration") {
146
- throw new Error("Expected variable declaration in testWhere()");
147
- }
148
- const init = varStmt.declarations[0]?.initializer;
149
- if (!init || init.kind !== "call") {
150
- throw new Error("Expected call initializer for ys");
151
- }
152
- expect(init.inferredType).to.not.equal(undefined);
153
- if (!init.inferredType)
154
- return;
155
- expect(init.inferredType.kind).to.equal("referenceType");
156
- if (init.inferredType.kind === "referenceType") {
157
- expect(init.inferredType.name).to.equal("IQueryable_1");
158
- expect(init.inferredType.typeArguments?.[0]).to.deep.equal({
159
- kind: "primitiveType",
160
- name: "string",
161
- });
162
- }
163
- });
164
- });
165
- //# sourceMappingURL=this-parameter-inference.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"this-parameter-inference.test.js","sourceRoot":"","sources":["../../src/ir/this-parameter-inference.test.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Bindings JSON loader - Reads and validates .bindings.json files from tsbindgen.
3
- *
4
- * This module provides pure functions to load runtime binding files and validate
5
- * their structure against the expected schema.
6
- *
7
- * @see spec/bindings.md for complete schema documentation
8
- */
9
- import type { Result } from "../types/result.ts";
10
- import type { Diagnostic } from "../types/diagnostic.ts";
11
- import type { BindingsFile, TypeBinding } from "../types/bindings.ts";
12
- /**
13
- * Load and parse a bindings.json file.
14
- *
15
- * @param filePath - Absolute path to the .bindings.json file
16
- * @returns Result containing parsed bindings or diagnostics
17
- */
18
- export declare const loadBindingsFile: (filePath: string) => Result<BindingsFile, Diagnostic[]>;
19
- /**
20
- * Load bindings from a directory containing .bindings.json files.
21
- *
22
- * @param directoryPath - Path to directory containing bindings files
23
- * @returns Result containing array of loaded bindings files or diagnostics
24
- */
25
- export declare const loadBindingsDirectory: (directoryPath: string) => Result<BindingsFile[], Diagnostic[]>;
26
- /**
27
- * Build a registry of type bindings for fast lookup by TypeScript emit name.
28
- *
29
- * @param bindingsFiles - Array of loaded bindings files
30
- * @returns Map from tsEmitName to TypeBinding
31
- */
32
- export declare const buildBindingsRegistry: (bindingsFiles: readonly BindingsFile[]) => ReadonlyMap<string, TypeBinding>;
33
- /**
34
- * Look up a type binding by fully-qualified TypeScript emit name.
35
- *
36
- * @param registry - Bindings registry
37
- * @param qualifiedTsName - Fully qualified TS name (e.g., "System.Collections.Generic.List_1")
38
- * @returns TypeBinding if found, undefined otherwise
39
- */
40
- export declare const lookupTypeBinding: (registry: ReadonlyMap<string, TypeBinding>, qualifiedTsName: string) => TypeBinding | undefined;
41
- //# sourceMappingURL=bindings-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bindings-loader.d.ts","sourceRoot":"","sources":["../../src/metadata/bindings-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,KACf,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,CA2DnC,CAAC;AAmKF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,eAAe,MAAM,KACpB,MAAM,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAoErC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,eAAe,SAAS,YAAY,EAAE,KACrC,WAAW,CAAC,MAAM,EAAE,WAAW,CAWjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAC1C,iBAAiB,MAAM,KACtB,WAAW,GAAG,SAEhB,CAAC"}
@@ -1,308 +0,0 @@
1
- /**
2
- * Bindings JSON loader - Reads and validates .bindings.json files from tsbindgen.
3
- *
4
- * This module provides pure functions to load runtime binding files and validate
5
- * their structure against the expected schema.
6
- *
7
- * @see spec/bindings.md for complete schema documentation
8
- */
9
- import * as fs from "fs";
10
- import * as path from "path";
11
- /**
12
- * Load and parse a bindings.json file.
13
- *
14
- * @param filePath - Absolute path to the .bindings.json file
15
- * @returns Result containing parsed bindings or diagnostics
16
- */
17
- export const loadBindingsFile = (filePath) => {
18
- // Check file exists
19
- if (!fs.existsSync(filePath)) {
20
- return {
21
- ok: false,
22
- error: [
23
- {
24
- code: "TSN9101",
25
- message: `Bindings file not found: ${filePath}`,
26
- severity: "error",
27
- location: undefined,
28
- },
29
- ],
30
- };
31
- }
32
- // Read file contents
33
- let content;
34
- try {
35
- content = fs.readFileSync(filePath, "utf-8");
36
- }
37
- catch (error) {
38
- return {
39
- ok: false,
40
- error: [
41
- {
42
- code: "TSN9102",
43
- message: `Failed to read bindings file: ${error}`,
44
- severity: "error",
45
- location: undefined,
46
- },
47
- ],
48
- };
49
- }
50
- // Parse JSON
51
- let parsed;
52
- try {
53
- parsed = JSON.parse(content);
54
- }
55
- catch (error) {
56
- return {
57
- ok: false,
58
- error: [
59
- {
60
- code: "TSN9103",
61
- message: `Invalid JSON in bindings file: ${error}`,
62
- severity: "error",
63
- location: undefined,
64
- },
65
- ],
66
- };
67
- }
68
- // Validate structure
69
- const validation = validateBindingsFile(parsed, filePath);
70
- if (!validation.ok) {
71
- return validation;
72
- }
73
- return { ok: true, value: validation.value };
74
- };
75
- /**
76
- * Validate that parsed JSON matches BindingsFile schema.
77
- *
78
- * @param data - Parsed JSON data
79
- * @param filePath - File path for error messages
80
- * @returns Result containing validated bindings or diagnostics
81
- */
82
- const validateBindingsFile = (data, filePath) => {
83
- const diagnostics = [];
84
- if (typeof data !== "object" || data === null) {
85
- return {
86
- ok: false,
87
- error: [
88
- {
89
- code: "TSN9104",
90
- message: `Bindings file must be an object, got ${typeof data}`,
91
- severity: "error",
92
- location: undefined,
93
- },
94
- ],
95
- };
96
- }
97
- const obj = data;
98
- // Validate namespace
99
- if (typeof obj.namespace !== "string") {
100
- diagnostics.push({
101
- code: "TSN9105",
102
- message: `Missing or invalid 'namespace' field in ${path.basename(filePath)}`,
103
- severity: "error",
104
- location: undefined,
105
- });
106
- }
107
- // Validate types array
108
- if (!Array.isArray(obj.types)) {
109
- diagnostics.push({
110
- code: "TSN9106",
111
- message: `Missing or invalid 'types' field in ${path.basename(filePath)}`,
112
- severity: "error",
113
- location: undefined,
114
- });
115
- }
116
- else {
117
- // Validate each type binding
118
- for (let i = 0; i < obj.types.length; i++) {
119
- const typeValidation = validateTypeBinding(obj.types[i], filePath, i);
120
- if (!typeValidation.ok) {
121
- diagnostics.push(...typeValidation.error);
122
- }
123
- }
124
- }
125
- if (diagnostics.length > 0) {
126
- return { ok: false, error: diagnostics };
127
- }
128
- return { ok: true, value: obj };
129
- };
130
- /**
131
- * Validate a single TypeBinding object.
132
- *
133
- * @param data - Type binding to validate
134
- * @param filePath - File path for error messages
135
- * @param index - Type index in array
136
- * @returns Result indicating validation success or errors
137
- */
138
- const validateTypeBinding = (data, filePath, index) => {
139
- const diagnostics = [];
140
- const context = `type binding ${index} in ${path.basename(filePath)}`;
141
- if (typeof data !== "object" || data === null) {
142
- return {
143
- ok: false,
144
- error: [
145
- {
146
- code: "TSN9107",
147
- message: `Invalid ${context}: must be an object`,
148
- severity: "error",
149
- location: undefined,
150
- },
151
- ],
152
- };
153
- }
154
- const type = data;
155
- // Validate required string fields
156
- const requiredStringFields = ["clrName", "tsEmitName", "assemblyName"];
157
- for (const field of requiredStringFields) {
158
- if (typeof type[field] !== "string") {
159
- diagnostics.push({
160
- code: "TSN9108",
161
- message: `Invalid ${context}: missing or invalid '${field}'`,
162
- severity: "error",
163
- location: undefined,
164
- });
165
- }
166
- }
167
- // Validate metadataToken
168
- if (typeof type.metadataToken !== "number") {
169
- diagnostics.push({
170
- code: "TSN9109",
171
- message: `Invalid ${context}: 'metadataToken' must be a number`,
172
- severity: "error",
173
- location: undefined,
174
- });
175
- }
176
- // Validate optional array fields (V1 Definitions)
177
- const v1ArrayFields = ["methods", "properties", "fields", "events"];
178
- for (const field of v1ArrayFields) {
179
- if (type[field] !== undefined && !Array.isArray(type[field])) {
180
- diagnostics.push({
181
- code: "TSN9110",
182
- message: `Invalid ${context}: '${field}' must be an array if present`,
183
- severity: "error",
184
- location: undefined,
185
- });
186
- }
187
- }
188
- // Validate optional array fields (V2 Exposures)
189
- const v2ArrayFields = [
190
- "exposedMethods",
191
- "exposedProperties",
192
- "exposedFields",
193
- "exposedEvents",
194
- ];
195
- for (const field of v2ArrayFields) {
196
- if (type[field] !== undefined && !Array.isArray(type[field])) {
197
- diagnostics.push({
198
- code: "TSN9111",
199
- message: `Invalid ${context}: '${field}' must be an array if present`,
200
- severity: "error",
201
- location: undefined,
202
- });
203
- }
204
- }
205
- // Note: We're doing basic structural validation here
206
- // More detailed validation of nested objects (method bindings, etc.)
207
- // can be added in future iterations if needed
208
- if (diagnostics.length > 0) {
209
- return { ok: false, error: diagnostics };
210
- }
211
- return { ok: true, value: type };
212
- };
213
- /**
214
- * Load bindings from a directory containing .bindings.json files.
215
- *
216
- * @param directoryPath - Path to directory containing bindings files
217
- * @returns Result containing array of loaded bindings files or diagnostics
218
- */
219
- export const loadBindingsDirectory = (directoryPath) => {
220
- if (!fs.existsSync(directoryPath)) {
221
- return {
222
- ok: false,
223
- error: [
224
- {
225
- code: "TSN9112",
226
- message: `Bindings directory not found: ${directoryPath}`,
227
- severity: "error",
228
- location: undefined,
229
- },
230
- ],
231
- };
232
- }
233
- const stats = fs.statSync(directoryPath);
234
- if (!stats.isDirectory()) {
235
- return {
236
- ok: false,
237
- error: [
238
- {
239
- code: "TSN9113",
240
- message: `Not a directory: ${directoryPath}`,
241
- severity: "error",
242
- location: undefined,
243
- },
244
- ],
245
- };
246
- }
247
- // Find all .bindings.json files
248
- const files = fs
249
- .readdirSync(directoryPath)
250
- .filter((file) => file.endsWith(".bindings.json"))
251
- .map((file) => path.join(directoryPath, file));
252
- if (files.length === 0) {
253
- return {
254
- ok: false,
255
- error: [
256
- {
257
- code: "TSN9114",
258
- message: `No .bindings.json files found in ${directoryPath}`,
259
- severity: "warning",
260
- location: undefined,
261
- },
262
- ],
263
- };
264
- }
265
- // Load each file
266
- const bindingsFiles = [];
267
- const diagnostics = [];
268
- for (const file of files) {
269
- const result = loadBindingsFile(file);
270
- if (result.ok) {
271
- bindingsFiles.push(result.value);
272
- }
273
- else {
274
- diagnostics.push(...result.error);
275
- }
276
- }
277
- if (diagnostics.length > 0) {
278
- return { ok: false, error: diagnostics };
279
- }
280
- return { ok: true, value: bindingsFiles };
281
- };
282
- /**
283
- * Build a registry of type bindings for fast lookup by TypeScript emit name.
284
- *
285
- * @param bindingsFiles - Array of loaded bindings files
286
- * @returns Map from tsEmitName to TypeBinding
287
- */
288
- export const buildBindingsRegistry = (bindingsFiles) => {
289
- const registry = new Map();
290
- for (const file of bindingsFiles) {
291
- for (const typeBinding of file.types) {
292
- const key = `${file.namespace}.${typeBinding.tsEmitName}`;
293
- registry.set(key, typeBinding);
294
- }
295
- }
296
- return registry;
297
- };
298
- /**
299
- * Look up a type binding by fully-qualified TypeScript emit name.
300
- *
301
- * @param registry - Bindings registry
302
- * @param qualifiedTsName - Fully qualified TS name (e.g., "System.Collections.Generic.List_1")
303
- * @returns TypeBinding if found, undefined otherwise
304
- */
305
- export const lookupTypeBinding = (registry, qualifiedTsName) => {
306
- return registry.get(qualifiedTsName);
307
- };
308
- //# sourceMappingURL=bindings-loader.js.map