@tsonic/frontend 0.0.1 → 0.0.2

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 (709) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/{src/dependency-graph.ts → dist/dependency-graph.d.ts} +3 -11
  3. package/dist/dependency-graph.d.ts.map +1 -0
  4. package/dist/dependency-graph.js +9 -0
  5. package/dist/dependency-graph.js.map +1 -0
  6. package/dist/dotnet-metadata.d.ts +71 -0
  7. package/dist/dotnet-metadata.d.ts.map +1 -0
  8. package/dist/dotnet-metadata.js +78 -0
  9. package/dist/dotnet-metadata.js.map +1 -0
  10. package/dist/graph/builder.d.ts +10 -0
  11. package/dist/graph/builder.d.ts.map +1 -0
  12. package/dist/graph/builder.js +54 -0
  13. package/dist/graph/builder.js.map +1 -0
  14. package/dist/graph/circular.d.ts +10 -0
  15. package/dist/graph/circular.d.ts.map +1 -0
  16. package/dist/graph/circular.js +40 -0
  17. package/dist/graph/circular.js.map +1 -0
  18. package/dist/graph/extraction/exports.d.ts +10 -0
  19. package/dist/graph/extraction/exports.d.ts.map +1 -0
  20. package/dist/graph/extraction/exports.js +46 -0
  21. package/dist/graph/extraction/exports.js.map +1 -0
  22. package/dist/graph/extraction/imports.d.ts +11 -0
  23. package/dist/graph/extraction/imports.d.ts.map +1 -0
  24. package/dist/graph/extraction/imports.js +63 -0
  25. package/dist/graph/extraction/imports.js.map +1 -0
  26. package/dist/graph/extraction/index.d.ts +7 -0
  27. package/dist/graph/extraction/index.d.ts.map +1 -0
  28. package/{src/graph/extraction/index.ts → dist/graph/extraction/index.js} +1 -1
  29. package/dist/graph/extraction/index.js.map +1 -0
  30. package/dist/graph/extraction/orchestrator.d.ts +11 -0
  31. package/dist/graph/extraction/orchestrator.d.ts.map +1 -0
  32. package/dist/graph/extraction/orchestrator.js +78 -0
  33. package/dist/graph/extraction/orchestrator.js.map +1 -0
  34. package/dist/graph/extraction.d.ts +6 -0
  35. package/dist/graph/extraction.d.ts.map +1 -0
  36. package/{src/graph/extraction.ts → dist/graph/extraction.js} +2 -6
  37. package/dist/graph/extraction.js.map +1 -0
  38. package/dist/graph/helpers.d.ts +17 -0
  39. package/dist/graph/helpers.d.ts.map +1 -0
  40. package/dist/graph/helpers.js +40 -0
  41. package/dist/graph/helpers.js.map +1 -0
  42. package/{src/graph/index.ts → dist/graph/index.d.ts} +3 -11
  43. package/dist/graph/index.d.ts.map +1 -0
  44. package/dist/graph/index.js +8 -0
  45. package/dist/graph/index.js.map +1 -0
  46. package/{src/graph/types.ts → dist/graph/types.d.ts} +4 -5
  47. package/dist/graph/types.d.ts.map +1 -0
  48. package/dist/graph/types.js +5 -0
  49. package/dist/graph/types.js.map +1 -0
  50. package/dist/index.d.ts +26 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +43 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/ir/binding-resolution.test.d.ts +5 -0
  55. package/dist/ir/binding-resolution.test.d.ts.map +1 -0
  56. package/dist/ir/binding-resolution.test.js +513 -0
  57. package/dist/ir/binding-resolution.test.js.map +1 -0
  58. package/dist/ir/builder/exports.d.ts +10 -0
  59. package/dist/ir/builder/exports.d.ts.map +1 -0
  60. package/dist/ir/builder/exports.js +75 -0
  61. package/dist/ir/builder/exports.js.map +1 -0
  62. package/dist/ir/builder/helpers.d.ts +13 -0
  63. package/dist/ir/builder/helpers.d.ts.map +1 -0
  64. package/dist/ir/builder/helpers.js +23 -0
  65. package/dist/ir/builder/helpers.js.map +1 -0
  66. package/dist/ir/builder/imports.d.ts +18 -0
  67. package/dist/ir/builder/imports.d.ts.map +1 -0
  68. package/dist/ir/builder/imports.js +121 -0
  69. package/dist/ir/builder/imports.js.map +1 -0
  70. package/{src/ir/builder/index.ts → dist/ir/builder/index.d.ts} +1 -1
  71. package/dist/ir/builder/index.d.ts.map +1 -0
  72. package/dist/ir/builder/index.js +9 -0
  73. package/dist/ir/builder/index.js.map +1 -0
  74. package/dist/ir/builder/orchestrator.d.ts +18 -0
  75. package/dist/ir/builder/orchestrator.d.ts.map +1 -0
  76. package/dist/ir/builder/orchestrator.js +121 -0
  77. package/dist/ir/builder/orchestrator.js.map +1 -0
  78. package/dist/ir/builder/statements.d.ts +14 -0
  79. package/dist/ir/builder/statements.d.ts.map +1 -0
  80. package/dist/ir/builder/statements.js +43 -0
  81. package/dist/ir/builder/statements.js.map +1 -0
  82. package/dist/ir/builder/types.d.ts +8 -0
  83. package/dist/ir/builder/types.d.ts.map +1 -0
  84. package/dist/ir/builder/types.js +5 -0
  85. package/dist/ir/builder/types.js.map +1 -0
  86. package/dist/ir/builder/validation.d.ts +10 -0
  87. package/dist/ir/builder/validation.d.ts.map +1 -0
  88. package/dist/ir/builder/validation.js +86 -0
  89. package/dist/ir/builder/validation.js.map +1 -0
  90. package/{src/ir/builder.ts → dist/ir/builder.d.ts} +2 -5
  91. package/dist/ir/builder.d.ts.map +1 -0
  92. package/dist/ir/builder.js +10 -0
  93. package/dist/ir/builder.js.map +1 -0
  94. package/dist/ir/builder.test.d.ts +5 -0
  95. package/dist/ir/builder.test.d.ts.map +1 -0
  96. package/dist/ir/builder.test.js +493 -0
  97. package/dist/ir/builder.test.js.map +1 -0
  98. package/dist/ir/converters/expressions/access.d.ts +10 -0
  99. package/dist/ir/converters/expressions/access.d.ts.map +1 -0
  100. package/dist/ir/converters/expressions/access.js +85 -0
  101. package/dist/ir/converters/expressions/access.js.map +1 -0
  102. package/dist/ir/converters/expressions/calls.d.ts +14 -0
  103. package/dist/ir/converters/expressions/calls.d.ts.map +1 -0
  104. package/dist/ir/converters/expressions/calls.js +104 -0
  105. package/dist/ir/converters/expressions/calls.js.map +1 -0
  106. package/dist/ir/converters/expressions/collections.d.ts +14 -0
  107. package/dist/ir/converters/expressions/collections.d.ts.map +1 -0
  108. package/dist/ir/converters/expressions/collections.js +70 -0
  109. package/dist/ir/converters/expressions/collections.js.map +1 -0
  110. package/dist/ir/converters/expressions/functions.d.ts +14 -0
  111. package/dist/ir/converters/expressions/functions.d.ts.map +1 -0
  112. package/dist/ir/converters/expressions/functions.js +42 -0
  113. package/dist/ir/converters/expressions/functions.js.map +1 -0
  114. package/dist/ir/converters/expressions/helpers.d.ts +43 -0
  115. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -0
  116. package/dist/ir/converters/expressions/helpers.js +210 -0
  117. package/dist/ir/converters/expressions/helpers.js.map +1 -0
  118. package/dist/ir/converters/expressions/index.d.ts +12 -0
  119. package/dist/ir/converters/expressions/index.d.ts.map +1 -0
  120. package/dist/ir/converters/expressions/index.js +20 -0
  121. package/dist/ir/converters/expressions/index.js.map +1 -0
  122. package/dist/ir/converters/expressions/literals.d.ts +10 -0
  123. package/dist/ir/converters/expressions/literals.d.ts.map +1 -0
  124. package/dist/ir/converters/expressions/literals.js +17 -0
  125. package/dist/ir/converters/expressions/literals.js.map +1 -0
  126. package/dist/ir/converters/expressions/operators.d.ts +18 -0
  127. package/dist/ir/converters/expressions/operators.d.ts.map +1 -0
  128. package/dist/ir/converters/expressions/operators.js +111 -0
  129. package/dist/ir/converters/expressions/operators.js.map +1 -0
  130. package/dist/ir/converters/expressions/other.d.ts +14 -0
  131. package/dist/ir/converters/expressions/other.d.ts.map +1 -0
  132. package/dist/ir/converters/expressions/other.js +44 -0
  133. package/dist/ir/converters/expressions/other.js.map +1 -0
  134. package/dist/ir/converters/statements/control/blocks.d.ts +10 -0
  135. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -0
  136. package/dist/ir/converters/statements/control/blocks.js +16 -0
  137. package/dist/ir/converters/statements/control/blocks.js.map +1 -0
  138. package/dist/ir/converters/statements/control/conditionals.d.ts +18 -0
  139. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -0
  140. package/dist/ir/converters/statements/control/conditionals.js +46 -0
  141. package/dist/ir/converters/statements/control/conditionals.js.map +1 -0
  142. package/dist/ir/converters/statements/control/exceptions.d.ts +14 -0
  143. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -0
  144. package/dist/ir/converters/statements/control/exceptions.js +33 -0
  145. package/dist/ir/converters/statements/control/exceptions.js.map +1 -0
  146. package/dist/ir/converters/statements/control/index.d.ts +8 -0
  147. package/dist/ir/converters/statements/control/index.d.ts.map +1 -0
  148. package/dist/ir/converters/statements/control/index.js +8 -0
  149. package/dist/ir/converters/statements/control/index.js.map +1 -0
  150. package/dist/ir/converters/statements/control/loops.d.ts +22 -0
  151. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -0
  152. package/dist/ir/converters/statements/control/loops.js +75 -0
  153. package/dist/ir/converters/statements/control/loops.js.map +1 -0
  154. package/dist/ir/converters/statements/control.d.ts +6 -0
  155. package/dist/ir/converters/statements/control.d.ts.map +1 -0
  156. package/dist/ir/converters/statements/control.js +6 -0
  157. package/dist/ir/converters/statements/control.js.map +1 -0
  158. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +14 -0
  159. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -0
  160. package/dist/ir/converters/statements/declarations/classes/constructors.js +91 -0
  161. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -0
  162. package/{src/ir/converters/statements/declarations/classes/index.ts → dist/ir/converters/statements/declarations/classes/index.d.ts} +2 -5
  163. package/dist/ir/converters/statements/declarations/classes/index.d.ts.map +1 -0
  164. package/dist/ir/converters/statements/declarations/classes/index.js +9 -0
  165. package/dist/ir/converters/statements/declarations/classes/index.js.map +1 -0
  166. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +10 -0
  167. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -0
  168. package/dist/ir/converters/statements/declarations/classes/methods.js +39 -0
  169. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -0
  170. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +10 -0
  171. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -0
  172. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +123 -0
  173. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -0
  174. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +13 -0
  175. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -0
  176. package/dist/ir/converters/statements/declarations/classes/override-detection.js +79 -0
  177. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -0
  178. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +10 -0
  179. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -0
  180. package/dist/ir/converters/statements/declarations/classes/properties.js +42 -0
  181. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -0
  182. package/dist/ir/converters/statements/declarations/classes.d.ts +6 -0
  183. package/dist/ir/converters/statements/declarations/classes.d.ts.map +1 -0
  184. package/{src/ir/converters/statements/declarations/classes.ts → dist/ir/converters/statements/declarations/classes.js} +1 -1
  185. package/dist/ir/converters/statements/declarations/classes.js.map +1 -0
  186. package/dist/ir/converters/statements/declarations/enums.d.ts +10 -0
  187. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -0
  188. package/dist/ir/converters/statements/declarations/enums.js +24 -0
  189. package/dist/ir/converters/statements/declarations/enums.js.map +1 -0
  190. package/dist/ir/converters/statements/declarations/functions.d.ts +10 -0
  191. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -0
  192. package/dist/ir/converters/statements/declarations/functions.js +28 -0
  193. package/dist/ir/converters/statements/declarations/functions.js.map +1 -0
  194. package/dist/ir/converters/statements/declarations/index.d.ts +11 -0
  195. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -0
  196. package/{src/ir/converters/statements/declarations/index.ts → dist/ir/converters/statements/declarations/index.js} +2 -5
  197. package/dist/ir/converters/statements/declarations/index.js.map +1 -0
  198. package/dist/ir/converters/statements/declarations/interfaces.d.ts +15 -0
  199. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -0
  200. package/dist/ir/converters/statements/declarations/interfaces.js +96 -0
  201. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -0
  202. package/dist/ir/converters/statements/declarations/registry.d.ts +24 -0
  203. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -0
  204. package/{src/ir/converters/statements/declarations/registry.ts → dist/ir/converters/statements/declarations/registry.js} +9 -16
  205. package/dist/ir/converters/statements/declarations/registry.js.map +1 -0
  206. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +10 -0
  207. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -0
  208. package/dist/ir/converters/statements/declarations/type-aliases.js +19 -0
  209. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -0
  210. package/dist/ir/converters/statements/declarations/variables.d.ts +10 -0
  211. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -0
  212. package/dist/ir/converters/statements/declarations/variables.js +45 -0
  213. package/dist/ir/converters/statements/declarations/variables.js.map +1 -0
  214. package/dist/ir/converters/statements/declarations.d.ts +6 -0
  215. package/dist/ir/converters/statements/declarations.d.ts.map +1 -0
  216. package/dist/ir/converters/statements/declarations.js +6 -0
  217. package/dist/ir/converters/statements/declarations.js.map +1 -0
  218. package/dist/ir/converters/statements/helpers.d.ts +34 -0
  219. package/dist/ir/converters/statements/helpers.d.ts.map +1 -0
  220. package/dist/ir/converters/statements/helpers.js +137 -0
  221. package/dist/ir/converters/statements/helpers.js.map +1 -0
  222. package/dist/ir/converters/statements/index.d.ts +7 -0
  223. package/dist/ir/converters/statements/index.d.ts.map +1 -0
  224. package/dist/ir/converters/statements/index.js +10 -0
  225. package/dist/ir/converters/statements/index.js.map +1 -0
  226. package/dist/ir/expression-converter.d.ts +13 -0
  227. package/dist/ir/expression-converter.d.ts.map +1 -0
  228. package/dist/ir/expression-converter.js +167 -0
  229. package/dist/ir/expression-converter.js.map +1 -0
  230. package/dist/ir/generic-validator.d.ts +38 -0
  231. package/dist/ir/generic-validator.d.ts.map +1 -0
  232. package/dist/ir/generic-validator.js +69 -0
  233. package/dist/ir/generic-validator.js.map +1 -0
  234. package/dist/ir/hierarchical-bindings-e2e.test.d.ts +6 -0
  235. package/dist/ir/hierarchical-bindings-e2e.test.d.ts.map +1 -0
  236. package/dist/ir/hierarchical-bindings-e2e.test.js +124 -0
  237. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -0
  238. package/{src/ir/index.ts → dist/ir/index.d.ts} +1 -1
  239. package/dist/ir/index.d.ts.map +1 -0
  240. package/dist/ir/index.js +6 -0
  241. package/dist/ir/index.js.map +1 -0
  242. package/dist/ir/statement-converter.d.ts +14 -0
  243. package/dist/ir/statement-converter.d.ts.map +1 -0
  244. package/dist/ir/statement-converter.js +100 -0
  245. package/dist/ir/statement-converter.js.map +1 -0
  246. package/dist/ir/type-converter/arrays.d.ts +10 -0
  247. package/dist/ir/type-converter/arrays.d.ts.map +1 -0
  248. package/dist/ir/type-converter/arrays.js +13 -0
  249. package/dist/ir/type-converter/arrays.js.map +1 -0
  250. package/dist/ir/type-converter/clr-type-resolver.d.ts +15 -0
  251. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +1 -0
  252. package/dist/ir/type-converter/clr-type-resolver.js +120 -0
  253. package/dist/ir/type-converter/clr-type-resolver.js.map +1 -0
  254. package/dist/ir/type-converter/converter.d.ts +6 -0
  255. package/dist/ir/type-converter/converter.d.ts.map +1 -0
  256. package/dist/ir/type-converter/converter.js +6 -0
  257. package/dist/ir/type-converter/converter.js.map +1 -0
  258. package/dist/ir/type-converter/functions.d.ts +10 -0
  259. package/dist/ir/type-converter/functions.d.ts.map +1 -0
  260. package/dist/ir/type-converter/functions.js +15 -0
  261. package/dist/ir/type-converter/functions.js.map +1 -0
  262. package/dist/ir/type-converter/index.d.ts +7 -0
  263. package/dist/ir/type-converter/index.d.ts.map +1 -0
  264. package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
  265. package/dist/ir/type-converter/index.js.map +1 -0
  266. package/dist/ir/type-converter/inference.d.ts +20 -0
  267. package/dist/ir/type-converter/inference.d.ts.map +1 -0
  268. package/dist/ir/type-converter/inference.js +104 -0
  269. package/dist/ir/type-converter/inference.js.map +1 -0
  270. package/dist/ir/type-converter/literals.d.ts +10 -0
  271. package/dist/ir/type-converter/literals.d.ts.map +1 -0
  272. package/dist/ir/type-converter/literals.js +31 -0
  273. package/dist/ir/type-converter/literals.js.map +1 -0
  274. package/dist/ir/type-converter/objects.d.ts +16 -0
  275. package/dist/ir/type-converter/objects.d.ts.map +1 -0
  276. package/dist/ir/type-converter/objects.js +81 -0
  277. package/dist/ir/type-converter/objects.js.map +1 -0
  278. package/dist/ir/type-converter/orchestrator.d.ts +13 -0
  279. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
  280. package/dist/ir/type-converter/orchestrator.js +59 -0
  281. package/dist/ir/type-converter/orchestrator.js.map +1 -0
  282. package/dist/ir/type-converter/patterns.d.ts +10 -0
  283. package/dist/ir/type-converter/patterns.d.ts.map +1 -0
  284. package/dist/ir/type-converter/patterns.js +66 -0
  285. package/dist/ir/type-converter/patterns.js.map +1 -0
  286. package/dist/ir/type-converter/primitives.d.ts +18 -0
  287. package/dist/ir/type-converter/primitives.d.ts.map +1 -0
  288. package/dist/ir/type-converter/primitives.js +47 -0
  289. package/dist/ir/type-converter/primitives.js.map +1 -0
  290. package/dist/ir/type-converter/references.d.ts +11 -0
  291. package/dist/ir/type-converter/references.d.ts.map +1 -0
  292. package/dist/ir/type-converter/references.js +51 -0
  293. package/dist/ir/type-converter/references.js.map +1 -0
  294. package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
  295. package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
  296. package/dist/ir/type-converter/unions-intersections.js +22 -0
  297. package/dist/ir/type-converter/unions-intersections.js.map +1 -0
  298. package/dist/ir/type-converter.d.ts +6 -0
  299. package/dist/ir/type-converter.d.ts.map +1 -0
  300. package/dist/ir/type-converter.js +6 -0
  301. package/dist/ir/type-converter.js.map +1 -0
  302. package/dist/ir/types/expressions.d.ts +164 -0
  303. package/dist/ir/types/expressions.d.ts.map +1 -0
  304. package/dist/ir/types/expressions.js +5 -0
  305. package/dist/ir/types/expressions.js.map +1 -0
  306. package/dist/ir/types/guards.d.ts +8 -0
  307. package/dist/ir/types/guards.d.ts.map +1 -0
  308. package/dist/ir/types/guards.js +31 -0
  309. package/dist/ir/types/guards.js.map +1 -0
  310. package/dist/ir/types/helpers.d.ts +65 -0
  311. package/dist/ir/types/helpers.d.ts.map +1 -0
  312. package/dist/ir/types/helpers.js +5 -0
  313. package/dist/ir/types/helpers.js.map +1 -0
  314. package/dist/ir/types/index.d.ts +11 -0
  315. package/dist/ir/types/index.d.ts.map +1 -0
  316. package/dist/ir/types/index.js +7 -0
  317. package/dist/ir/types/index.js.map +1 -0
  318. package/dist/ir/types/ir-types.d.ts +69 -0
  319. package/dist/ir/types/ir-types.d.ts.map +1 -0
  320. package/dist/ir/types/ir-types.js +5 -0
  321. package/dist/ir/types/ir-types.js.map +1 -0
  322. package/dist/ir/types/module.d.ts +56 -0
  323. package/dist/ir/types/module.d.ts.map +1 -0
  324. package/dist/ir/types/module.js +5 -0
  325. package/dist/ir/types/module.js.map +1 -0
  326. package/dist/ir/types/statements.d.ts +182 -0
  327. package/dist/ir/types/statements.d.ts.map +1 -0
  328. package/dist/ir/types/statements.js +5 -0
  329. package/dist/ir/types/statements.js.map +1 -0
  330. package/dist/ir/types.d.ts +7 -0
  331. package/dist/ir/types.d.ts.map +1 -0
  332. package/dist/ir/types.js +7 -0
  333. package/dist/ir/types.js.map +1 -0
  334. package/dist/metadata/bindings-loader.d.ts +41 -0
  335. package/dist/metadata/bindings-loader.d.ts.map +1 -0
  336. package/dist/metadata/bindings-loader.js +308 -0
  337. package/dist/metadata/bindings-loader.js.map +1 -0
  338. package/dist/metadata/bindings-loader.test.d.ts +5 -0
  339. package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
  340. package/dist/metadata/bindings-loader.test.js +117 -0
  341. package/dist/metadata/bindings-loader.test.js.map +1 -0
  342. package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
  343. package/dist/metadata/index.d.ts.map +1 -0
  344. package/dist/metadata/index.js +7 -0
  345. package/dist/metadata/index.js.map +1 -0
  346. package/dist/metadata/library-loader.d.ts +42 -0
  347. package/dist/metadata/library-loader.d.ts.map +1 -0
  348. package/dist/metadata/library-loader.js +126 -0
  349. package/dist/metadata/library-loader.js.map +1 -0
  350. package/dist/metadata/loader.d.ts +26 -0
  351. package/dist/metadata/loader.d.ts.map +1 -0
  352. package/dist/metadata/loader.js +333 -0
  353. package/dist/metadata/loader.js.map +1 -0
  354. package/dist/metadata/loader.test.d.ts +5 -0
  355. package/dist/metadata/loader.test.d.ts.map +1 -0
  356. package/dist/metadata/loader.test.js +119 -0
  357. package/dist/metadata/loader.test.js.map +1 -0
  358. package/dist/program/bindings.d.ts +111 -0
  359. package/dist/program/bindings.d.ts.map +1 -0
  360. package/dist/program/bindings.js +167 -0
  361. package/dist/program/bindings.js.map +1 -0
  362. package/dist/program/bindings.test.d.ts +5 -0
  363. package/dist/program/bindings.test.d.ts.map +1 -0
  364. package/dist/program/bindings.test.js +435 -0
  365. package/dist/program/bindings.test.js.map +1 -0
  366. package/dist/program/config.d.ts +9 -0
  367. package/dist/program/config.d.ts.map +1 -0
  368. package/dist/program/config.js +29 -0
  369. package/dist/program/config.js.map +1 -0
  370. package/dist/program/creation.d.ts +17 -0
  371. package/dist/program/creation.d.ts.map +1 -0
  372. package/dist/program/creation.js +180 -0
  373. package/dist/program/creation.js.map +1 -0
  374. package/dist/program/dependency-graph.d.ts +19 -0
  375. package/dist/program/dependency-graph.d.ts.map +1 -0
  376. package/dist/program/dependency-graph.js +166 -0
  377. package/dist/program/dependency-graph.js.map +1 -0
  378. package/dist/program/diagnostics.d.ts +23 -0
  379. package/dist/program/diagnostics.d.ts.map +1 -0
  380. package/dist/program/diagnostics.js +65 -0
  381. package/dist/program/diagnostics.js.map +1 -0
  382. package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
  383. package/dist/program/index.d.ts.map +1 -0
  384. package/dist/program/index.js +11 -0
  385. package/dist/program/index.js.map +1 -0
  386. package/dist/program/metadata.d.ts +10 -0
  387. package/dist/program/metadata.d.ts.map +1 -0
  388. package/dist/program/metadata.js +56 -0
  389. package/dist/program/metadata.js.map +1 -0
  390. package/dist/program/queries.d.ts +10 -0
  391. package/dist/program/queries.d.ts.map +1 -0
  392. package/dist/program/queries.js +12 -0
  393. package/dist/program/queries.js.map +1 -0
  394. package/dist/program/types.d.ts +35 -0
  395. package/dist/program/types.d.ts.map +1 -0
  396. package/dist/program/types.js +5 -0
  397. package/dist/program/types.js.map +1 -0
  398. package/{src/program.ts → dist/program.d.ts} +2 -7
  399. package/dist/program.d.ts.map +1 -0
  400. package/dist/program.js +6 -0
  401. package/dist/program.js.map +1 -0
  402. package/dist/resolver/dotnet-import-resolver.d.ts +74 -0
  403. package/dist/resolver/dotnet-import-resolver.d.ts.map +1 -0
  404. package/dist/resolver/dotnet-import-resolver.js +183 -0
  405. package/dist/resolver/dotnet-import-resolver.js.map +1 -0
  406. package/dist/resolver/import-resolution.d.ts +20 -0
  407. package/dist/resolver/import-resolution.d.ts.map +1 -0
  408. package/dist/resolver/import-resolution.js +102 -0
  409. package/dist/resolver/import-resolution.js.map +1 -0
  410. package/dist/resolver/index.d.ts +10 -0
  411. package/dist/resolver/index.d.ts.map +1 -0
  412. package/dist/resolver/index.js +9 -0
  413. package/dist/resolver/index.js.map +1 -0
  414. package/dist/resolver/namespace.d.ts +20 -0
  415. package/dist/resolver/namespace.d.ts.map +1 -0
  416. package/dist/resolver/namespace.js +35 -0
  417. package/dist/resolver/namespace.js.map +1 -0
  418. package/dist/resolver/namespace.test.d.ts +2 -0
  419. package/dist/resolver/namespace.test.d.ts.map +1 -0
  420. package/dist/resolver/namespace.test.js +42 -0
  421. package/dist/resolver/namespace.test.js.map +1 -0
  422. package/dist/resolver/naming.d.ts +12 -0
  423. package/dist/resolver/naming.d.ts.map +1 -0
  424. package/dist/resolver/naming.js +30 -0
  425. package/dist/resolver/naming.js.map +1 -0
  426. package/dist/resolver/path-resolution.d.ts +8 -0
  427. package/dist/resolver/path-resolution.d.ts.map +1 -0
  428. package/dist/resolver/path-resolution.js +16 -0
  429. package/dist/resolver/path-resolution.js.map +1 -0
  430. package/dist/resolver/types.d.ts +13 -0
  431. package/dist/resolver/types.d.ts.map +1 -0
  432. package/dist/resolver/types.js +5 -0
  433. package/dist/resolver/types.js.map +1 -0
  434. package/dist/resolver.d.ts +7 -0
  435. package/dist/resolver.d.ts.map +1 -0
  436. package/dist/resolver.js +6 -0
  437. package/dist/resolver.js.map +1 -0
  438. package/dist/resolver.test.d.ts +5 -0
  439. package/dist/resolver.test.d.ts.map +1 -0
  440. package/dist/resolver.test.js +93 -0
  441. package/dist/resolver.test.js.map +1 -0
  442. package/dist/symbol-table/builder.d.ts +10 -0
  443. package/dist/symbol-table/builder.d.ts.map +1 -0
  444. package/dist/symbol-table/builder.js +105 -0
  445. package/dist/symbol-table/builder.js.map +1 -0
  446. package/dist/symbol-table/creation.d.ts +13 -0
  447. package/dist/symbol-table/creation.d.ts.map +1 -0
  448. package/dist/symbol-table/creation.js +36 -0
  449. package/dist/symbol-table/creation.js.map +1 -0
  450. package/dist/symbol-table/helpers.d.ts +9 -0
  451. package/dist/symbol-table/helpers.d.ts.map +1 -0
  452. package/dist/symbol-table/helpers.js +15 -0
  453. package/dist/symbol-table/helpers.js.map +1 -0
  454. package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
  455. package/dist/symbol-table/index.d.ts.map +1 -0
  456. package/dist/symbol-table/index.js +8 -0
  457. package/dist/symbol-table/index.js.map +1 -0
  458. package/dist/symbol-table/queries.d.ts +17 -0
  459. package/dist/symbol-table/queries.d.ts.map +1 -0
  460. package/dist/symbol-table/queries.js +27 -0
  461. package/dist/symbol-table/queries.js.map +1 -0
  462. package/dist/symbol-table/types.d.ts +18 -0
  463. package/dist/symbol-table/types.d.ts.map +1 -0
  464. package/dist/symbol-table/types.js +5 -0
  465. package/dist/symbol-table/types.js.map +1 -0
  466. package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
  467. package/dist/symbol-table.d.ts.map +1 -0
  468. package/dist/symbol-table.js +6 -0
  469. package/dist/symbol-table.js.map +1 -0
  470. package/dist/types/bindings.d.ts +153 -0
  471. package/dist/types/bindings.d.ts.map +1 -0
  472. package/dist/types/bindings.js +14 -0
  473. package/dist/types/bindings.js.map +1 -0
  474. package/dist/types/diagnostic.d.ts +30 -0
  475. package/dist/types/diagnostic.d.ts.map +1 -0
  476. package/dist/types/diagnostic.js +37 -0
  477. package/dist/types/diagnostic.js.map +1 -0
  478. package/dist/types/diagnostic.test.d.ts +5 -0
  479. package/dist/types/diagnostic.test.d.ts.map +1 -0
  480. package/dist/types/diagnostic.test.js +94 -0
  481. package/dist/types/diagnostic.test.js.map +1 -0
  482. package/dist/types/explicit-views.d.ts +97 -0
  483. package/dist/types/explicit-views.d.ts.map +1 -0
  484. package/dist/types/explicit-views.js +163 -0
  485. package/dist/types/explicit-views.js.map +1 -0
  486. package/dist/types/explicit-views.test.d.ts +5 -0
  487. package/dist/types/explicit-views.test.d.ts.map +1 -0
  488. package/dist/types/explicit-views.test.js +67 -0
  489. package/dist/types/explicit-views.test.js.map +1 -0
  490. package/dist/types/metadata.d.ts +196 -0
  491. package/dist/types/metadata.d.ts.map +1 -0
  492. package/dist/types/metadata.js +10 -0
  493. package/dist/types/metadata.js.map +1 -0
  494. package/dist/types/module.d.ts +51 -0
  495. package/dist/types/module.d.ts.map +1 -0
  496. package/dist/types/module.js +28 -0
  497. package/dist/types/module.js.map +1 -0
  498. package/dist/types/nested-types.d.ts +111 -0
  499. package/dist/types/nested-types.d.ts.map +1 -0
  500. package/dist/types/nested-types.js +176 -0
  501. package/dist/types/nested-types.js.map +1 -0
  502. package/dist/types/nested-types.test.d.ts +5 -0
  503. package/dist/types/nested-types.test.d.ts.map +1 -0
  504. package/dist/types/nested-types.test.js +135 -0
  505. package/dist/types/nested-types.test.js.map +1 -0
  506. package/dist/types/parameter-modifiers.d.ts +55 -0
  507. package/dist/types/parameter-modifiers.d.ts.map +1 -0
  508. package/dist/types/parameter-modifiers.js +144 -0
  509. package/dist/types/parameter-modifiers.js.map +1 -0
  510. package/dist/types/ref-parameters.d.ts +123 -0
  511. package/dist/types/ref-parameters.d.ts.map +1 -0
  512. package/dist/types/ref-parameters.js +203 -0
  513. package/dist/types/ref-parameters.js.map +1 -0
  514. package/dist/types/ref-parameters.test.d.ts +5 -0
  515. package/dist/types/ref-parameters.test.d.ts.map +1 -0
  516. package/dist/types/ref-parameters.test.js +147 -0
  517. package/dist/types/ref-parameters.test.js.map +1 -0
  518. package/dist/types/result.d.ts +26 -0
  519. package/dist/types/result.d.ts.map +1 -0
  520. package/dist/types/result.js +19 -0
  521. package/dist/types/result.js.map +1 -0
  522. package/dist/types/result.test.d.ts +5 -0
  523. package/dist/types/result.test.d.ts.map +1 -0
  524. package/dist/types/result.test.js +121 -0
  525. package/dist/types/result.test.js.map +1 -0
  526. package/dist/types/support-types.d.ts +103 -0
  527. package/dist/types/support-types.d.ts.map +1 -0
  528. package/dist/types/support-types.js +220 -0
  529. package/dist/types/support-types.js.map +1 -0
  530. package/dist/types/support-types.test.d.ts +5 -0
  531. package/dist/types/support-types.test.d.ts.map +1 -0
  532. package/dist/types/support-types.test.js +50 -0
  533. package/dist/types/support-types.test.js.map +1 -0
  534. package/dist/types/test-debug.d.ts.map +1 -0
  535. package/dist/types/test-debug.js.map +1 -0
  536. package/dist/types/test-harness.d.ts +34 -0
  537. package/dist/types/test-harness.d.ts.map +1 -0
  538. package/dist/types/test-harness.js +127 -0
  539. package/dist/types/test-harness.js.map +1 -0
  540. package/dist/validation/aot-safety.d.ts +24 -0
  541. package/dist/validation/aot-safety.d.ts.map +1 -0
  542. package/dist/validation/aot-safety.js +114 -0
  543. package/dist/validation/aot-safety.js.map +1 -0
  544. package/dist/validation/exports.d.ts +11 -0
  545. package/dist/validation/exports.d.ts.map +1 -0
  546. package/dist/validation/exports.js +56 -0
  547. package/dist/validation/exports.js.map +1 -0
  548. package/dist/validation/features.d.ts +11 -0
  549. package/dist/validation/features.d.ts.map +1 -0
  550. package/dist/validation/features.js +36 -0
  551. package/dist/validation/features.js.map +1 -0
  552. package/dist/validation/generics.d.ts +11 -0
  553. package/dist/validation/generics.d.ts.map +1 -0
  554. package/dist/validation/generics.js +31 -0
  555. package/dist/validation/generics.js.map +1 -0
  556. package/dist/validation/helpers.d.ts +15 -0
  557. package/dist/validation/helpers.d.ts.map +1 -0
  558. package/dist/validation/helpers.js +18 -0
  559. package/dist/validation/helpers.js.map +1 -0
  560. package/dist/validation/imports.d.ts +15 -0
  561. package/dist/validation/imports.d.ts.map +1 -0
  562. package/dist/validation/imports.js +42 -0
  563. package/dist/validation/imports.js.map +1 -0
  564. package/dist/validation/index.d.ts +11 -0
  565. package/dist/validation/index.d.ts.map +1 -0
  566. package/{src/validation/index.ts → dist/validation/index.js} +1 -1
  567. package/dist/validation/index.js.map +1 -0
  568. package/dist/validation/orchestrator.d.ts +15 -0
  569. package/dist/validation/orchestrator.d.ts.map +1 -0
  570. package/dist/validation/orchestrator.js +30 -0
  571. package/dist/validation/orchestrator.js.map +1 -0
  572. package/dist/validation/static-safety.d.ts +23 -0
  573. package/dist/validation/static-safety.d.ts.map +1 -0
  574. package/dist/validation/static-safety.js +165 -0
  575. package/dist/validation/static-safety.js.map +1 -0
  576. package/dist/validator.d.ts +6 -0
  577. package/dist/validator.d.ts.map +1 -0
  578. package/dist/validator.js +6 -0
  579. package/dist/validator.js.map +1 -0
  580. package/dist/validator.test.d.ts +11 -0
  581. package/dist/validator.test.d.ts.map +1 -0
  582. package/dist/validator.test.js +340 -0
  583. package/dist/validator.test.js.map +1 -0
  584. package/package.json +4 -1
  585. package/src/dotnet-metadata.ts +0 -121
  586. package/src/graph/builder.ts +0 -81
  587. package/src/graph/circular.ts +0 -58
  588. package/src/graph/extraction/exports.ts +0 -55
  589. package/src/graph/extraction/imports.ts +0 -81
  590. package/src/graph/extraction/orchestrator.ts +0 -99
  591. package/src/graph/helpers.ts +0 -51
  592. package/src/index.ts +0 -80
  593. package/src/ir/binding-resolution.test.ts +0 -585
  594. package/src/ir/builder/exports.ts +0 -78
  595. package/src/ir/builder/helpers.ts +0 -27
  596. package/src/ir/builder/imports.ts +0 -153
  597. package/src/ir/builder/orchestrator.ts +0 -178
  598. package/src/ir/builder/statements.ts +0 -55
  599. package/src/ir/builder/types.ts +0 -8
  600. package/src/ir/builder/validation.ts +0 -129
  601. package/src/ir/builder.test.ts +0 -581
  602. package/src/ir/converters/expressions/access.ts +0 -99
  603. package/src/ir/converters/expressions/calls.ts +0 -137
  604. package/src/ir/converters/expressions/collections.ts +0 -84
  605. package/src/ir/converters/expressions/functions.ts +0 -62
  606. package/src/ir/converters/expressions/helpers.ts +0 -264
  607. package/src/ir/converters/expressions/index.ts +0 -43
  608. package/src/ir/converters/expressions/literals.ts +0 -22
  609. package/src/ir/converters/expressions/operators.ts +0 -147
  610. package/src/ir/converters/expressions/other.ts +0 -60
  611. package/src/ir/converters/statements/control/blocks.ts +0 -22
  612. package/src/ir/converters/statements/control/conditionals.ts +0 -67
  613. package/src/ir/converters/statements/control/exceptions.ts +0 -43
  614. package/src/ir/converters/statements/control/index.ts +0 -17
  615. package/src/ir/converters/statements/control/loops.ts +0 -99
  616. package/src/ir/converters/statements/control.ts +0 -17
  617. package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
  618. package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
  619. package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
  620. package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
  621. package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
  622. package/src/ir/converters/statements/declarations/enums.ts +0 -29
  623. package/src/ir/converters/statements/declarations/functions.ts +0 -39
  624. package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
  625. package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
  626. package/src/ir/converters/statements/declarations/variables.ts +0 -60
  627. package/src/ir/converters/statements/declarations.ts +0 -16
  628. package/src/ir/converters/statements/helpers.ts +0 -174
  629. package/src/ir/converters/statements/index.ts +0 -40
  630. package/src/ir/expression-converter.ts +0 -207
  631. package/src/ir/generic-validator.ts +0 -100
  632. package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
  633. package/src/ir/statement-converter.ts +0 -128
  634. package/src/ir/type-converter/arrays.ts +0 -20
  635. package/src/ir/type-converter/converter.ts +0 -10
  636. package/src/ir/type-converter/functions.ts +0 -22
  637. package/src/ir/type-converter/inference.ts +0 -122
  638. package/src/ir/type-converter/literals.ts +0 -40
  639. package/src/ir/type-converter/objects.ts +0 -107
  640. package/src/ir/type-converter/orchestrator.ts +0 -85
  641. package/src/ir/type-converter/patterns.ts +0 -73
  642. package/src/ir/type-converter/primitives.ts +0 -57
  643. package/src/ir/type-converter/references.ts +0 -64
  644. package/src/ir/type-converter/unions-intersections.ts +0 -34
  645. package/src/ir/type-converter.ts +0 -13
  646. package/src/ir/types/expressions.ts +0 -215
  647. package/src/ir/types/guards.ts +0 -39
  648. package/src/ir/types/helpers.ts +0 -135
  649. package/src/ir/types/index.ts +0 -108
  650. package/src/ir/types/ir-types.ts +0 -96
  651. package/src/ir/types/module.ts +0 -57
  652. package/src/ir/types/statements.ts +0 -238
  653. package/src/ir/types.ts +0 -97
  654. package/src/metadata/bindings-loader.test.ts +0 -144
  655. package/src/metadata/bindings-loader.ts +0 -357
  656. package/src/metadata/library-loader.ts +0 -153
  657. package/src/metadata/loader.test.ts +0 -156
  658. package/src/metadata/loader.ts +0 -382
  659. package/src/program/bindings.test.ts +0 -512
  660. package/src/program/bindings.ts +0 -253
  661. package/src/program/config.ts +0 -30
  662. package/src/program/creation.ts +0 -249
  663. package/src/program/dependency-graph.ts +0 -245
  664. package/src/program/diagnostics.ts +0 -103
  665. package/src/program/metadata.ts +0 -68
  666. package/src/program/queries.ts +0 -18
  667. package/src/program/types.ts +0 -38
  668. package/src/resolver/dotnet-import-resolver.ts +0 -226
  669. package/src/resolver/import-resolution.ts +0 -177
  670. package/src/resolver/index.ts +0 -18
  671. package/src/resolver/namespace.test.ts +0 -86
  672. package/src/resolver/namespace.ts +0 -42
  673. package/src/resolver/naming.ts +0 -38
  674. package/src/resolver/path-resolution.ts +0 -22
  675. package/src/resolver/types.ts +0 -15
  676. package/src/resolver.test.ts +0 -155
  677. package/src/resolver.ts +0 -14
  678. package/src/symbol-table/builder.ts +0 -114
  679. package/src/symbol-table/creation.ts +0 -42
  680. package/src/symbol-table/helpers.ts +0 -18
  681. package/src/symbol-table/queries.ts +0 -42
  682. package/src/symbol-table/types.ts +0 -28
  683. package/src/types/bindings.ts +0 -172
  684. package/src/types/diagnostic.test.ts +0 -164
  685. package/src/types/diagnostic.ts +0 -153
  686. package/src/types/explicit-views.test.ts +0 -113
  687. package/src/types/explicit-views.ts +0 -218
  688. package/src/types/metadata.ts +0 -229
  689. package/src/types/module.ts +0 -99
  690. package/src/types/nested-types.test.ts +0 -194
  691. package/src/types/nested-types.ts +0 -215
  692. package/src/types/parameter-modifiers.ts +0 -173
  693. package/src/types/ref-parameters.test.ts +0 -192
  694. package/src/types/ref-parameters.ts +0 -268
  695. package/src/types/result.test.ts +0 -157
  696. package/src/types/result.ts +0 -48
  697. package/src/types/support-types.test.ts +0 -81
  698. package/src/types/support-types.ts +0 -288
  699. package/src/types/test-harness.ts +0 -180
  700. package/src/validation/exports.ts +0 -98
  701. package/src/validation/features.ts +0 -89
  702. package/src/validation/generics.ts +0 -40
  703. package/src/validation/helpers.ts +0 -31
  704. package/src/validation/imports.ts +0 -97
  705. package/src/validation/orchestrator.ts +0 -51
  706. package/src/validation/static-safety.ts +0 -267
  707. package/src/validator.test.ts +0 -468
  708. package/src/validator.ts +0 -15
  709. package/tsconfig.json +0 -13
@@ -1,581 +0,0 @@
1
- /**
2
- * Tests for IR Builder
3
- */
4
-
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import * as ts from "typescript";
8
- import { buildIrModule } from "./builder.js";
9
- import {
10
- IrFunctionDeclaration,
11
- IrVariableDeclaration,
12
- IrClassDeclaration,
13
- } from "./types.js";
14
- import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
15
- import { BindingRegistry } from "../program/bindings.js";
16
- import { createDotNetImportResolver } from "../resolver/dotnet-import-resolver.js";
17
-
18
- describe("IR Builder", () => {
19
- const createTestProgram = (source: string, fileName = "/test/test.ts") => {
20
- const sourceFile = ts.createSourceFile(
21
- fileName,
22
- source,
23
- ts.ScriptTarget.ES2022,
24
- true,
25
- ts.ScriptKind.TS
26
- );
27
-
28
- const program = ts.createProgram(
29
- [fileName],
30
- {
31
- target: ts.ScriptTarget.ES2022,
32
- module: ts.ModuleKind.ES2022,
33
- },
34
- {
35
- getSourceFile: (name) => (name === fileName ? sourceFile : undefined),
36
- writeFile: () => {},
37
- getCurrentDirectory: () => "/test",
38
- getDirectories: () => [],
39
- fileExists: () => true,
40
- readFile: () => source,
41
- getCanonicalFileName: (f) => f,
42
- useCaseSensitiveFileNames: () => true,
43
- getNewLine: () => "\n",
44
- getDefaultLibFileName: (_options) => "lib.d.ts",
45
- }
46
- );
47
-
48
- return {
49
- program,
50
- checker: program.getTypeChecker(),
51
- options: { sourceRoot: "/test", rootNamespace: "TestApp", strict: true },
52
- sourceFiles: [sourceFile],
53
- metadata: new DotnetMetadataRegistry(),
54
- bindings: new BindingRegistry(),
55
- dotnetResolver: createDotNetImportResolver("/test"),
56
- };
57
- };
58
-
59
- describe("Module Structure", () => {
60
- it("should create IR module with correct namespace and class name", () => {
61
- const source = `
62
- export function greet(name: string): string {
63
- return \`Hello \${name}\`;
64
- }
65
- `;
66
-
67
- const testProgram = createTestProgram(source);
68
- const sourceFile = testProgram.sourceFiles[0];
69
- if (!sourceFile) throw new Error("Failed to create source file");
70
-
71
- const result = buildIrModule(sourceFile, testProgram, {
72
- sourceRoot: "/test",
73
- rootNamespace: "TestApp",
74
- });
75
-
76
- expect(result.ok).to.equal(true);
77
- if (result.ok) {
78
- const module = result.value;
79
- expect(module.kind).to.equal("module");
80
- expect(module.namespace).to.equal("TestApp");
81
- expect(module.className).to.equal("test");
82
- expect(module.isStaticContainer).to.equal(true);
83
- }
84
- });
85
-
86
- it("should detect top-level code", () => {
87
- const source = `
88
- console.log("Hello");
89
- export const x = 42;
90
- `;
91
-
92
- const testProgram = createTestProgram(source);
93
- const sourceFile = testProgram.sourceFiles[0];
94
- if (!sourceFile) throw new Error("Failed to create source file");
95
-
96
- const result = buildIrModule(sourceFile, testProgram, {
97
- sourceRoot: "/test",
98
- rootNamespace: "TestApp",
99
- });
100
-
101
- expect(result.ok).to.equal(true);
102
- if (result.ok) {
103
- expect(result.value.isStaticContainer).to.equal(false);
104
- }
105
- });
106
- });
107
-
108
- describe("Import Extraction", () => {
109
- it("should extract local imports", () => {
110
- const source = `
111
- import { User } from "./models/User.ts";
112
- import * as utils from "./utils.ts";
113
- `;
114
-
115
- const testProgram = createTestProgram(source);
116
- const sourceFile = testProgram.sourceFiles[0];
117
- if (!sourceFile) throw new Error("Failed to create source file");
118
-
119
- const result = buildIrModule(sourceFile, testProgram, {
120
- sourceRoot: "/test",
121
- rootNamespace: "TestApp",
122
- });
123
-
124
- expect(result.ok).to.equal(true);
125
- if (result.ok) {
126
- const imports = result.value.imports;
127
- expect(imports).to.have.length(2);
128
-
129
- const firstImport = imports[0];
130
- const secondImport = imports[1];
131
- if (!firstImport || !secondImport) throw new Error("Missing imports");
132
-
133
- expect(firstImport.source).to.equal("./models/User.ts");
134
- expect(firstImport.isLocal).to.equal(true);
135
- expect(firstImport.isDotNet).to.equal(false);
136
-
137
- expect(secondImport.source).to.equal("./utils.ts");
138
- const firstSpec = secondImport.specifiers[0];
139
- if (!firstSpec) throw new Error("Missing specifier");
140
- expect(firstSpec.kind).to.equal("namespace");
141
- }
142
- });
143
-
144
- it("should not detect bare imports as .NET without package bindings", () => {
145
- // Import-driven resolution: bare imports like "System.IO" are only detected as .NET
146
- // if they come from a package with bindings.json. Without an actual package,
147
- // the import is not recognized as .NET.
148
- const source = `
149
- import { File } from "System.IO";
150
- `;
151
-
152
- const testProgram = createTestProgram(source);
153
- const sourceFile = testProgram.sourceFiles[0];
154
- if (!sourceFile) throw new Error("Failed to create source file");
155
-
156
- const result = buildIrModule(sourceFile, testProgram, {
157
- sourceRoot: "/test",
158
- rootNamespace: "TestApp",
159
- });
160
-
161
- expect(result.ok).to.equal(true);
162
- if (result.ok) {
163
- const imports = result.value.imports;
164
- const firstImport = imports[0];
165
- if (!firstImport) throw new Error("Missing import");
166
- // Without an actual package with bindings.json, this is NOT detected as .NET
167
- expect(firstImport.isDotNet).to.equal(false);
168
- expect(firstImport.resolvedNamespace).to.equal(undefined);
169
- }
170
- });
171
- });
172
-
173
- describe("Statement Conversion", () => {
174
- it("should convert function declarations", () => {
175
- const source = `
176
- export function add(a: number, b: number): number {
177
- return a + b;
178
- }
179
- `;
180
-
181
- const testProgram = createTestProgram(source);
182
- const sourceFile = testProgram.sourceFiles[0];
183
- if (!sourceFile) throw new Error("Failed to create source file");
184
-
185
- const result = buildIrModule(sourceFile, testProgram, {
186
- sourceRoot: "/test",
187
- rootNamespace: "TestApp",
188
- });
189
-
190
- expect(result.ok).to.equal(true);
191
- if (result.ok) {
192
- const body = result.value.body;
193
- expect(body).to.have.length(1);
194
-
195
- const firstItem = body[0];
196
- if (!firstItem) throw new Error("Missing body item");
197
- expect(firstItem.kind).to.equal("functionDeclaration");
198
-
199
- const func = firstItem as IrFunctionDeclaration;
200
- expect(func.name).to.equal("add");
201
- expect(func.parameters).to.have.length(2);
202
- expect(func.isExported).to.equal(true);
203
- }
204
- });
205
-
206
- it("should convert variable declarations", () => {
207
- const source = `
208
- const x = 10;
209
- let y: string = "hello";
210
- export const z = { name: "test" };
211
- `;
212
-
213
- const testProgram = createTestProgram(source);
214
- const sourceFile = testProgram.sourceFiles[0];
215
- if (!sourceFile) throw new Error("Failed to create source file");
216
-
217
- const result = buildIrModule(sourceFile, testProgram, {
218
- sourceRoot: "/test",
219
- rootNamespace: "TestApp",
220
- });
221
-
222
- expect(result.ok).to.equal(true);
223
- if (result.ok) {
224
- const body = result.value.body;
225
- expect(body).to.have.length(3);
226
-
227
- const firstVar = body[0] as IrVariableDeclaration;
228
- expect(firstVar.kind).to.equal("variableDeclaration");
229
- expect(firstVar.declarationKind).to.equal("const");
230
-
231
- const secondVar = body[1] as IrVariableDeclaration;
232
- expect(secondVar.declarationKind).to.equal("let");
233
-
234
- const thirdVar = body[2] as IrVariableDeclaration;
235
- expect(thirdVar.isExported).to.equal(true);
236
- }
237
- });
238
-
239
- it("should convert class declarations", () => {
240
- const source = `
241
- export class User {
242
- private name: string;
243
- constructor(name: string) {
244
- this.name = name;
245
- }
246
- getName(): string {
247
- return this.name;
248
- }
249
- }
250
- `;
251
-
252
- const testProgram = createTestProgram(source);
253
- const sourceFile = testProgram.sourceFiles[0];
254
- if (!sourceFile) throw new Error("Failed to create source file");
255
-
256
- const result = buildIrModule(sourceFile, testProgram, {
257
- sourceRoot: "/test",
258
- rootNamespace: "TestApp",
259
- });
260
-
261
- expect(result.ok).to.equal(true);
262
- if (result.ok) {
263
- const body = result.value.body;
264
- expect(body).to.have.length(1);
265
-
266
- const cls = body[0] as IrClassDeclaration;
267
- expect(cls.kind).to.equal("classDeclaration");
268
- expect(cls.name).to.equal("User");
269
- expect(cls.isExported).to.equal(true);
270
- expect(cls.members).to.have.length.greaterThan(0);
271
- }
272
- });
273
- });
274
-
275
- describe("Expression Conversion", () => {
276
- it("should convert template literals", () => {
277
- const source = `
278
- const greeting = \`Hello \${name}\`;
279
- `;
280
-
281
- const testProgram = createTestProgram(source);
282
- const sourceFile = testProgram.sourceFiles[0];
283
- if (!sourceFile) throw new Error("Failed to create source file");
284
-
285
- const result = buildIrModule(sourceFile, testProgram, {
286
- sourceRoot: "/test",
287
- rootNamespace: "TestApp",
288
- });
289
-
290
- expect(result.ok).to.equal(true);
291
- if (result.ok) {
292
- const varDecl = result.value.body[0] as IrVariableDeclaration;
293
- const init = varDecl.declarations[0]?.initializer;
294
- if (init && init.kind === "templateLiteral") {
295
- expect(init.kind).to.equal("templateLiteral");
296
- expect(init.quasis).to.have.length(2);
297
- expect(init.expressions).to.have.length(1);
298
- }
299
- }
300
- });
301
-
302
- it("should convert arrow functions", () => {
303
- const source = `
304
- const double = (x: number) => x * 2;
305
- `;
306
-
307
- const testProgram = createTestProgram(source);
308
- const sourceFile = testProgram.sourceFiles[0];
309
- if (!sourceFile) throw new Error("Failed to create source file");
310
-
311
- const result = buildIrModule(sourceFile, testProgram, {
312
- sourceRoot: "/test",
313
- rootNamespace: "TestApp",
314
- });
315
-
316
- expect(result.ok).to.equal(true);
317
- if (result.ok) {
318
- const varDecl = result.value.body[0] as IrVariableDeclaration;
319
- const init = varDecl.declarations[0]?.initializer;
320
- if (init && init.kind === "arrowFunction") {
321
- expect(init.kind).to.equal("arrowFunction");
322
- expect(init.parameters).to.have.length(1);
323
- }
324
- }
325
- });
326
- });
327
-
328
- describe("Export Handling", () => {
329
- it("should handle named exports", () => {
330
- const source = `
331
- const a = 1;
332
- const b = 2;
333
- export { a, b as c };
334
- `;
335
-
336
- const testProgram = createTestProgram(source);
337
- const sourceFile = testProgram.sourceFiles[0];
338
- if (!sourceFile) throw new Error("Failed to create source file");
339
-
340
- const result = buildIrModule(sourceFile, testProgram, {
341
- sourceRoot: "/test",
342
- rootNamespace: "TestApp",
343
- });
344
-
345
- expect(result.ok).to.equal(true);
346
- if (result.ok) {
347
- const exports = result.value.exports;
348
- expect(exports).to.have.length(2);
349
-
350
- const firstExport = exports[0];
351
- if (!firstExport) throw new Error("Missing export");
352
- expect(firstExport.kind).to.equal("named");
353
- if (firstExport.kind === "named") {
354
- expect(firstExport.name).to.equal("a");
355
- expect(firstExport.localName).to.equal("a");
356
- }
357
-
358
- const second = exports[1];
359
- if (second && second.kind === "named") {
360
- expect(second.name).to.equal("c");
361
- expect(second.localName).to.equal("b");
362
- }
363
- }
364
- });
365
-
366
- it("should handle default export", () => {
367
- const source = `
368
- export default function main() {
369
- console.log("Hello");
370
- }
371
- `;
372
-
373
- const testProgram = createTestProgram(source);
374
- const sourceFile = testProgram.sourceFiles[0];
375
- if (!sourceFile) throw new Error("Failed to create source file");
376
-
377
- const result = buildIrModule(sourceFile, testProgram, {
378
- sourceRoot: "/test",
379
- rootNamespace: "TestApp",
380
- });
381
-
382
- expect(result.ok).to.equal(true);
383
- if (result.ok) {
384
- const exports = result.value.exports;
385
- expect(exports.some((e) => e.kind === "default")).to.equal(true);
386
- }
387
- });
388
- });
389
-
390
- describe("Struct Detection", () => {
391
- it("should detect struct marker in interface", () => {
392
- const source = `
393
- interface struct {
394
- readonly __brand: "struct";
395
- }
396
-
397
- export interface Point extends struct {
398
- x: number;
399
- y: number;
400
- }
401
- `;
402
-
403
- const testProgram = createTestProgram(source);
404
- const sourceFile = testProgram.sourceFiles[0];
405
- if (!sourceFile) throw new Error("Failed to create source file");
406
-
407
- const result = buildIrModule(sourceFile, testProgram, {
408
- sourceRoot: "/test",
409
- rootNamespace: "TestApp",
410
- });
411
-
412
- expect(result.ok).to.equal(true);
413
- if (result.ok) {
414
- const body = result.value.body;
415
- const pointInterface = body.find(
416
- (stmt) =>
417
- stmt.kind === "interfaceDeclaration" && stmt.name === "Point"
418
- );
419
- expect(pointInterface).not.to.equal(undefined);
420
- if (pointInterface && pointInterface.kind === "interfaceDeclaration") {
421
- expect(pointInterface.isStruct).to.equal(true);
422
- // Verify __brand property is filtered out
423
- expect(
424
- pointInterface.members.some(
425
- (m) => m.kind === "propertySignature" && m.name === "__brand"
426
- )
427
- ).to.equal(false);
428
- }
429
- }
430
- });
431
-
432
- it("should detect struct marker in class", () => {
433
- const source = `
434
- interface struct {
435
- readonly __brand: "struct";
436
- }
437
-
438
- export class Vector3D implements struct {
439
- x: number;
440
- y: number;
441
- z: number;
442
- }
443
- `;
444
-
445
- const testProgram = createTestProgram(source);
446
- const sourceFile = testProgram.sourceFiles[0];
447
- if (!sourceFile) throw new Error("Failed to create source file");
448
-
449
- const result = buildIrModule(sourceFile, testProgram, {
450
- sourceRoot: "/test",
451
- rootNamespace: "TestApp",
452
- });
453
-
454
- expect(result.ok).to.equal(true);
455
- if (result.ok) {
456
- const body = result.value.body;
457
- const vectorClass = body.find(
458
- (stmt) => stmt.kind === "classDeclaration" && stmt.name === "Vector3D"
459
- );
460
- expect(vectorClass).not.to.equal(undefined);
461
- if (vectorClass && vectorClass.kind === "classDeclaration") {
462
- expect(vectorClass.isStruct).to.equal(true);
463
- // Verify __brand property is filtered out
464
- expect(
465
- vectorClass.members.some(
466
- (m) => m.kind === "propertyDeclaration" && m.name === "__brand"
467
- )
468
- ).to.equal(false);
469
- }
470
- }
471
- });
472
-
473
- it("should not mark regular class as struct", () => {
474
- const source = `
475
- export class RegularClass {
476
- value: number;
477
- }
478
- `;
479
-
480
- const testProgram = createTestProgram(source);
481
- const sourceFile = testProgram.sourceFiles[0];
482
- if (!sourceFile) throw new Error("Failed to create source file");
483
-
484
- const result = buildIrModule(sourceFile, testProgram, {
485
- sourceRoot: "/test",
486
- rootNamespace: "TestApp",
487
- });
488
-
489
- expect(result.ok).to.equal(true);
490
- if (result.ok) {
491
- const body = result.value.body;
492
- const regularClass = body[0];
493
- expect(regularClass).not.to.equal(undefined);
494
- if (regularClass && regularClass.kind === "classDeclaration") {
495
- expect(regularClass.isStruct).to.equal(false);
496
- }
497
- }
498
- });
499
- });
500
-
501
- describe("Interface Implements Validation (TSN7301)", () => {
502
- it("should report error when class implements a nominalized interface", () => {
503
- const source = `
504
- interface Printable {
505
- print(): void;
506
- }
507
-
508
- export class Document implements Printable {
509
- print(): void {}
510
- }
511
- `;
512
-
513
- const testProgram = createTestProgram(source);
514
- const sourceFile = testProgram.sourceFiles[0];
515
- if (!sourceFile) throw new Error("Failed to create source file");
516
-
517
- const result = buildIrModule(sourceFile, testProgram, {
518
- sourceRoot: "/test",
519
- rootNamespace: "TestApp",
520
- });
521
-
522
- expect(result.ok).to.equal(false);
523
- if (!result.ok) {
524
- expect(result.error.code).to.equal("TSN7301");
525
- expect(result.error.message).to.include("Printable");
526
- expect(result.error.message).to.include("nominalized");
527
- }
528
- });
529
-
530
- it("should allow struct marker in implements clause", () => {
531
- const source = `
532
- interface struct {
533
- readonly __brand: "struct";
534
- }
535
-
536
- export class Point implements struct {
537
- x: number;
538
- y: number;
539
- }
540
- `;
541
-
542
- const testProgram = createTestProgram(source);
543
- const sourceFile = testProgram.sourceFiles[0];
544
- if (!sourceFile) throw new Error("Failed to create source file");
545
-
546
- const result = buildIrModule(sourceFile, testProgram, {
547
- sourceRoot: "/test",
548
- rootNamespace: "TestApp",
549
- });
550
-
551
- expect(result.ok).to.equal(true);
552
- });
553
-
554
- it("should report error when class implements a type alias", () => {
555
- const source = `
556
- type Serializable = {
557
- serialize(): string;
558
- };
559
-
560
- export class Config implements Serializable {
561
- serialize(): string { return "{}"; }
562
- }
563
- `;
564
-
565
- const testProgram = createTestProgram(source);
566
- const sourceFile = testProgram.sourceFiles[0];
567
- if (!sourceFile) throw new Error("Failed to create source file");
568
-
569
- const result = buildIrModule(sourceFile, testProgram, {
570
- sourceRoot: "/test",
571
- rootNamespace: "TestApp",
572
- });
573
-
574
- expect(result.ok).to.equal(false);
575
- if (!result.ok) {
576
- expect(result.error.code).to.equal("TSN7301");
577
- expect(result.error.message).to.include("Serializable");
578
- }
579
- });
580
- });
581
- });
@@ -1,99 +0,0 @@
1
- /**
2
- * Member access expression converters
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrMemberExpression } from "../../types.js";
7
- import { getInferredType } from "./helpers.js";
8
- import { convertExpression } from "../../expression-converter.js";
9
- import { getBindingRegistry } from "../statements/declarations/registry.js";
10
-
11
- /**
12
- * Resolve hierarchical binding for a member access
13
- * Handles namespace.type and type.member patterns
14
- */
15
- const resolveHierarchicalBinding = (
16
- object: ReturnType<typeof convertExpression>,
17
- propertyName: string
18
- ): IrMemberExpression["memberBinding"] => {
19
- const registry = getBindingRegistry();
20
-
21
- // Case 1: object is identifier → check if it's a namespace, then check if property is a type
22
- if (object.kind === "identifier") {
23
- const namespace = registry.getNamespace(object.name);
24
- if (namespace) {
25
- // Found namespace binding, check if property is a type within this namespace
26
- // Note: After schema swap, we look up by alias (TS identifier)
27
- const type = namespace.types.find((t) => t.alias === propertyName);
28
- if (type) {
29
- // This member access is namespace.type - we don't emit a member binding here
30
- // because we're just accessing a type, not calling a member
31
- return undefined;
32
- }
33
- }
34
- }
35
-
36
- // Case 2: object is member expression with a type reference → check if property is a member
37
- if (object.kind === "memberAccess" && !object.isComputed) {
38
- // Walk up the chain to find if this is a type reference
39
- // For systemLinq.enumerable, the object is "systemLinq" and property is "enumerable"
40
- if (object.object.kind === "identifier") {
41
- const namespace = registry.getNamespace(object.object.name);
42
- if (namespace && typeof object.property === "string") {
43
- const type = namespace.types.find((t) => t.alias === object.property);
44
- if (type) {
45
- // The object is a type reference (namespace.type), now check if property is a member
46
- const member = type.members.find((m) => m.alias === propertyName);
47
- if (member) {
48
- // Found a member binding!
49
- return {
50
- assembly: member.binding.assembly,
51
- type: member.binding.type,
52
- member: member.binding.member,
53
- };
54
- }
55
- }
56
- }
57
- }
58
- }
59
-
60
- return undefined;
61
- };
62
-
63
- /**
64
- * Convert property access or element access expression
65
- */
66
- export const convertMemberExpression = (
67
- node: ts.PropertyAccessExpression | ts.ElementAccessExpression,
68
- checker: ts.TypeChecker
69
- ): IrMemberExpression => {
70
- const isOptional = node.questionDotToken !== undefined;
71
- const inferredType = getInferredType(node, checker);
72
-
73
- if (ts.isPropertyAccessExpression(node)) {
74
- const object = convertExpression(node.expression, checker);
75
- const propertyName = node.name.text;
76
-
77
- // Try to resolve hierarchical binding
78
- const memberBinding = resolveHierarchicalBinding(object, propertyName);
79
-
80
- return {
81
- kind: "memberAccess",
82
- object,
83
- property: propertyName,
84
- isComputed: false,
85
- isOptional,
86
- inferredType,
87
- memberBinding,
88
- };
89
- } else {
90
- return {
91
- kind: "memberAccess",
92
- object: convertExpression(node.expression, checker),
93
- property: convertExpression(node.argumentExpression, checker),
94
- isComputed: true,
95
- isOptional,
96
- inferredType,
97
- };
98
- }
99
- };