@tsonic/frontend 0.0.1 → 0.0.4

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 (698) 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 +518 -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 +123 -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 +498 -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 +132 -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 +217 -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 +129 -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/converter.d.ts +6 -0
  251. package/dist/ir/type-converter/converter.d.ts.map +1 -0
  252. package/dist/ir/type-converter/converter.js +6 -0
  253. package/dist/ir/type-converter/converter.js.map +1 -0
  254. package/dist/ir/type-converter/functions.d.ts +10 -0
  255. package/dist/ir/type-converter/functions.d.ts.map +1 -0
  256. package/dist/ir/type-converter/functions.js +15 -0
  257. package/dist/ir/type-converter/functions.js.map +1 -0
  258. package/dist/ir/type-converter/index.d.ts +7 -0
  259. package/dist/ir/type-converter/index.d.ts.map +1 -0
  260. package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
  261. package/dist/ir/type-converter/index.js.map +1 -0
  262. package/dist/ir/type-converter/inference.d.ts +20 -0
  263. package/dist/ir/type-converter/inference.d.ts.map +1 -0
  264. package/dist/ir/type-converter/inference.js +105 -0
  265. package/dist/ir/type-converter/inference.js.map +1 -0
  266. package/dist/ir/type-converter/literals.d.ts +10 -0
  267. package/dist/ir/type-converter/literals.d.ts.map +1 -0
  268. package/dist/ir/type-converter/literals.js +31 -0
  269. package/dist/ir/type-converter/literals.js.map +1 -0
  270. package/dist/ir/type-converter/objects.d.ts +16 -0
  271. package/dist/ir/type-converter/objects.d.ts.map +1 -0
  272. package/dist/ir/type-converter/objects.js +82 -0
  273. package/dist/ir/type-converter/objects.js.map +1 -0
  274. package/dist/ir/type-converter/orchestrator.d.ts +13 -0
  275. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
  276. package/dist/ir/type-converter/orchestrator.js +59 -0
  277. package/dist/ir/type-converter/orchestrator.js.map +1 -0
  278. package/dist/ir/type-converter/patterns.d.ts +10 -0
  279. package/dist/ir/type-converter/patterns.d.ts.map +1 -0
  280. package/dist/ir/type-converter/patterns.js +66 -0
  281. package/dist/ir/type-converter/patterns.js.map +1 -0
  282. package/dist/ir/type-converter/primitives.d.ts +18 -0
  283. package/dist/ir/type-converter/primitives.d.ts.map +1 -0
  284. package/dist/ir/type-converter/primitives.js +47 -0
  285. package/dist/ir/type-converter/primitives.js.map +1 -0
  286. package/dist/ir/type-converter/references.d.ts +11 -0
  287. package/dist/ir/type-converter/references.d.ts.map +1 -0
  288. package/dist/ir/type-converter/references.js +62 -0
  289. package/dist/ir/type-converter/references.js.map +1 -0
  290. package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
  291. package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
  292. package/dist/ir/type-converter/unions-intersections.js +22 -0
  293. package/dist/ir/type-converter/unions-intersections.js.map +1 -0
  294. package/dist/ir/type-converter.d.ts +6 -0
  295. package/dist/ir/type-converter.d.ts.map +1 -0
  296. package/dist/ir/type-converter.js +6 -0
  297. package/dist/ir/type-converter.js.map +1 -0
  298. package/dist/ir/types/expressions.d.ts +164 -0
  299. package/dist/ir/types/expressions.d.ts.map +1 -0
  300. package/dist/ir/types/expressions.js +5 -0
  301. package/dist/ir/types/expressions.js.map +1 -0
  302. package/dist/ir/types/guards.d.ts +8 -0
  303. package/dist/ir/types/guards.d.ts.map +1 -0
  304. package/dist/ir/types/guards.js +31 -0
  305. package/dist/ir/types/guards.js.map +1 -0
  306. package/dist/ir/types/helpers.d.ts +65 -0
  307. package/dist/ir/types/helpers.d.ts.map +1 -0
  308. package/dist/ir/types/helpers.js +5 -0
  309. package/dist/ir/types/helpers.js.map +1 -0
  310. package/dist/ir/types/index.d.ts +11 -0
  311. package/dist/ir/types/index.d.ts.map +1 -0
  312. package/dist/ir/types/index.js +7 -0
  313. package/dist/ir/types/index.js.map +1 -0
  314. package/dist/ir/types/ir-types.d.ts +79 -0
  315. package/dist/ir/types/ir-types.d.ts.map +1 -0
  316. package/dist/ir/types/ir-types.js +5 -0
  317. package/dist/ir/types/ir-types.js.map +1 -0
  318. package/dist/ir/types/module.d.ts +56 -0
  319. package/dist/ir/types/module.d.ts.map +1 -0
  320. package/dist/ir/types/module.js +5 -0
  321. package/dist/ir/types/module.js.map +1 -0
  322. package/dist/ir/types/statements.d.ts +182 -0
  323. package/dist/ir/types/statements.d.ts.map +1 -0
  324. package/dist/ir/types/statements.js +5 -0
  325. package/dist/ir/types/statements.js.map +1 -0
  326. package/dist/ir/types.d.ts +7 -0
  327. package/dist/ir/types.d.ts.map +1 -0
  328. package/dist/ir/types.js +7 -0
  329. package/dist/ir/types.js.map +1 -0
  330. package/dist/metadata/bindings-loader.d.ts +41 -0
  331. package/dist/metadata/bindings-loader.d.ts.map +1 -0
  332. package/dist/metadata/bindings-loader.js +308 -0
  333. package/dist/metadata/bindings-loader.js.map +1 -0
  334. package/dist/metadata/bindings-loader.test.d.ts +5 -0
  335. package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
  336. package/dist/metadata/bindings-loader.test.js +117 -0
  337. package/dist/metadata/bindings-loader.test.js.map +1 -0
  338. package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
  339. package/dist/metadata/index.d.ts.map +1 -0
  340. package/dist/metadata/index.js +7 -0
  341. package/dist/metadata/index.js.map +1 -0
  342. package/dist/metadata/library-loader.d.ts +42 -0
  343. package/dist/metadata/library-loader.d.ts.map +1 -0
  344. package/dist/metadata/library-loader.js +126 -0
  345. package/dist/metadata/library-loader.js.map +1 -0
  346. package/dist/metadata/loader.d.ts +26 -0
  347. package/dist/metadata/loader.d.ts.map +1 -0
  348. package/dist/metadata/loader.js +333 -0
  349. package/dist/metadata/loader.js.map +1 -0
  350. package/dist/metadata/loader.test.d.ts +5 -0
  351. package/dist/metadata/loader.test.d.ts.map +1 -0
  352. package/dist/metadata/loader.test.js +119 -0
  353. package/dist/metadata/loader.test.js.map +1 -0
  354. package/dist/program/bindings.d.ts +159 -0
  355. package/dist/program/bindings.d.ts.map +1 -0
  356. package/dist/program/bindings.js +329 -0
  357. package/dist/program/bindings.js.map +1 -0
  358. package/dist/program/bindings.test.d.ts +5 -0
  359. package/dist/program/bindings.test.d.ts.map +1 -0
  360. package/dist/program/bindings.test.js +435 -0
  361. package/dist/program/bindings.test.js.map +1 -0
  362. package/dist/program/config.d.ts +9 -0
  363. package/dist/program/config.d.ts.map +1 -0
  364. package/dist/program/config.js +29 -0
  365. package/dist/program/config.js.map +1 -0
  366. package/dist/program/creation.d.ts +17 -0
  367. package/dist/program/creation.d.ts.map +1 -0
  368. package/dist/program/creation.js +182 -0
  369. package/dist/program/creation.js.map +1 -0
  370. package/dist/program/dependency-graph.d.ts +19 -0
  371. package/dist/program/dependency-graph.d.ts.map +1 -0
  372. package/dist/program/dependency-graph.js +230 -0
  373. package/dist/program/dependency-graph.js.map +1 -0
  374. package/dist/program/diagnostics.d.ts +23 -0
  375. package/dist/program/diagnostics.d.ts.map +1 -0
  376. package/dist/program/diagnostics.js +65 -0
  377. package/dist/program/diagnostics.js.map +1 -0
  378. package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
  379. package/dist/program/index.d.ts.map +1 -0
  380. package/dist/program/index.js +11 -0
  381. package/dist/program/index.js.map +1 -0
  382. package/dist/program/metadata.d.ts +10 -0
  383. package/dist/program/metadata.d.ts.map +1 -0
  384. package/dist/program/metadata.js +56 -0
  385. package/dist/program/metadata.js.map +1 -0
  386. package/dist/program/queries.d.ts +10 -0
  387. package/dist/program/queries.d.ts.map +1 -0
  388. package/dist/program/queries.js +12 -0
  389. package/dist/program/queries.js.map +1 -0
  390. package/dist/program/types.d.ts +36 -0
  391. package/dist/program/types.d.ts.map +1 -0
  392. package/dist/program/types.js +5 -0
  393. package/dist/program/types.js.map +1 -0
  394. package/{src/program.ts → dist/program.d.ts} +2 -7
  395. package/dist/program.d.ts.map +1 -0
  396. package/dist/program.js +6 -0
  397. package/dist/program.js.map +1 -0
  398. package/dist/resolver/clr-bindings-resolver.d.ts +84 -0
  399. package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -0
  400. package/dist/resolver/clr-bindings-resolver.js +224 -0
  401. package/dist/resolver/clr-bindings-resolver.js.map +1 -0
  402. package/dist/resolver/import-resolution.d.ts +20 -0
  403. package/dist/resolver/import-resolution.d.ts.map +1 -0
  404. package/dist/resolver/import-resolution.js +102 -0
  405. package/dist/resolver/import-resolution.js.map +1 -0
  406. package/{src/resolver/index.ts → dist/resolver/index.d.ts} +3 -11
  407. package/dist/resolver/index.d.ts.map +1 -0
  408. package/dist/resolver/index.js +9 -0
  409. package/dist/resolver/index.js.map +1 -0
  410. package/dist/resolver/namespace.d.ts +20 -0
  411. package/dist/resolver/namespace.d.ts.map +1 -0
  412. package/dist/resolver/namespace.js +35 -0
  413. package/dist/resolver/namespace.js.map +1 -0
  414. package/dist/resolver/namespace.test.d.ts +2 -0
  415. package/dist/resolver/namespace.test.d.ts.map +1 -0
  416. package/dist/resolver/namespace.test.js +42 -0
  417. package/dist/resolver/namespace.test.js.map +1 -0
  418. package/dist/resolver/naming.d.ts +12 -0
  419. package/dist/resolver/naming.d.ts.map +1 -0
  420. package/dist/resolver/naming.js +30 -0
  421. package/dist/resolver/naming.js.map +1 -0
  422. package/dist/resolver/path-resolution.d.ts +8 -0
  423. package/dist/resolver/path-resolution.d.ts.map +1 -0
  424. package/dist/resolver/path-resolution.js +16 -0
  425. package/dist/resolver/path-resolution.js.map +1 -0
  426. package/dist/resolver/types.d.ts +13 -0
  427. package/dist/resolver/types.d.ts.map +1 -0
  428. package/dist/resolver/types.js +5 -0
  429. package/dist/resolver/types.js.map +1 -0
  430. package/dist/resolver.d.ts +7 -0
  431. package/dist/resolver.d.ts.map +1 -0
  432. package/dist/resolver.js +6 -0
  433. package/dist/resolver.js.map +1 -0
  434. package/dist/resolver.test.d.ts +5 -0
  435. package/dist/resolver.test.d.ts.map +1 -0
  436. package/dist/resolver.test.js +93 -0
  437. package/dist/resolver.test.js.map +1 -0
  438. package/dist/symbol-table/builder.d.ts +10 -0
  439. package/dist/symbol-table/builder.d.ts.map +1 -0
  440. package/dist/symbol-table/builder.js +105 -0
  441. package/dist/symbol-table/builder.js.map +1 -0
  442. package/dist/symbol-table/creation.d.ts +13 -0
  443. package/dist/symbol-table/creation.d.ts.map +1 -0
  444. package/dist/symbol-table/creation.js +36 -0
  445. package/dist/symbol-table/creation.js.map +1 -0
  446. package/dist/symbol-table/helpers.d.ts +9 -0
  447. package/dist/symbol-table/helpers.d.ts.map +1 -0
  448. package/dist/symbol-table/helpers.js +15 -0
  449. package/dist/symbol-table/helpers.js.map +1 -0
  450. package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
  451. package/dist/symbol-table/index.d.ts.map +1 -0
  452. package/dist/symbol-table/index.js +8 -0
  453. package/dist/symbol-table/index.js.map +1 -0
  454. package/dist/symbol-table/queries.d.ts +17 -0
  455. package/dist/symbol-table/queries.d.ts.map +1 -0
  456. package/dist/symbol-table/queries.js +27 -0
  457. package/dist/symbol-table/queries.js.map +1 -0
  458. package/dist/symbol-table/types.d.ts +18 -0
  459. package/dist/symbol-table/types.d.ts.map +1 -0
  460. package/dist/symbol-table/types.js +5 -0
  461. package/dist/symbol-table/types.js.map +1 -0
  462. package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
  463. package/dist/symbol-table.d.ts.map +1 -0
  464. package/dist/symbol-table.js +6 -0
  465. package/dist/symbol-table.js.map +1 -0
  466. package/dist/types/bindings.d.ts +153 -0
  467. package/dist/types/bindings.d.ts.map +1 -0
  468. package/dist/types/bindings.js +14 -0
  469. package/dist/types/bindings.js.map +1 -0
  470. package/dist/types/diagnostic.d.ts +30 -0
  471. package/dist/types/diagnostic.d.ts.map +1 -0
  472. package/dist/types/diagnostic.js +37 -0
  473. package/dist/types/diagnostic.js.map +1 -0
  474. package/dist/types/diagnostic.test.d.ts +5 -0
  475. package/dist/types/diagnostic.test.d.ts.map +1 -0
  476. package/dist/types/diagnostic.test.js +94 -0
  477. package/dist/types/diagnostic.test.js.map +1 -0
  478. package/dist/types/explicit-views.d.ts +97 -0
  479. package/dist/types/explicit-views.d.ts.map +1 -0
  480. package/dist/types/explicit-views.js +163 -0
  481. package/dist/types/explicit-views.js.map +1 -0
  482. package/dist/types/explicit-views.test.d.ts +5 -0
  483. package/dist/types/explicit-views.test.d.ts.map +1 -0
  484. package/dist/types/explicit-views.test.js +67 -0
  485. package/dist/types/explicit-views.test.js.map +1 -0
  486. package/dist/types/metadata.d.ts +196 -0
  487. package/dist/types/metadata.d.ts.map +1 -0
  488. package/dist/types/metadata.js +10 -0
  489. package/dist/types/metadata.js.map +1 -0
  490. package/dist/types/module.d.ts +51 -0
  491. package/dist/types/module.d.ts.map +1 -0
  492. package/dist/types/module.js +28 -0
  493. package/dist/types/module.js.map +1 -0
  494. package/dist/types/nested-types.d.ts +111 -0
  495. package/dist/types/nested-types.d.ts.map +1 -0
  496. package/dist/types/nested-types.js +176 -0
  497. package/dist/types/nested-types.js.map +1 -0
  498. package/dist/types/nested-types.test.d.ts +5 -0
  499. package/dist/types/nested-types.test.d.ts.map +1 -0
  500. package/dist/types/nested-types.test.js +135 -0
  501. package/dist/types/nested-types.test.js.map +1 -0
  502. package/dist/types/parameter-modifiers.d.ts +55 -0
  503. package/dist/types/parameter-modifiers.d.ts.map +1 -0
  504. package/dist/types/parameter-modifiers.js +148 -0
  505. package/dist/types/parameter-modifiers.js.map +1 -0
  506. package/dist/types/ref-parameters.d.ts +123 -0
  507. package/dist/types/ref-parameters.d.ts.map +1 -0
  508. package/dist/types/ref-parameters.js +203 -0
  509. package/dist/types/ref-parameters.js.map +1 -0
  510. package/dist/types/ref-parameters.test.d.ts +5 -0
  511. package/dist/types/ref-parameters.test.d.ts.map +1 -0
  512. package/dist/types/ref-parameters.test.js +147 -0
  513. package/dist/types/ref-parameters.test.js.map +1 -0
  514. package/dist/types/result.d.ts +26 -0
  515. package/dist/types/result.d.ts.map +1 -0
  516. package/dist/types/result.js +19 -0
  517. package/dist/types/result.js.map +1 -0
  518. package/dist/types/result.test.d.ts +5 -0
  519. package/dist/types/result.test.d.ts.map +1 -0
  520. package/dist/types/result.test.js +121 -0
  521. package/dist/types/result.test.js.map +1 -0
  522. package/dist/types/support-types.d.ts +103 -0
  523. package/dist/types/support-types.d.ts.map +1 -0
  524. package/dist/types/support-types.js +220 -0
  525. package/dist/types/support-types.js.map +1 -0
  526. package/dist/types/support-types.test.d.ts +5 -0
  527. package/dist/types/support-types.test.d.ts.map +1 -0
  528. package/dist/types/support-types.test.js +53 -0
  529. package/dist/types/support-types.test.js.map +1 -0
  530. package/dist/types/test-harness.d.ts +34 -0
  531. package/dist/types/test-harness.d.ts.map +1 -0
  532. package/dist/types/test-harness.js +127 -0
  533. package/dist/types/test-harness.js.map +1 -0
  534. package/dist/validation/exports.d.ts +11 -0
  535. package/dist/validation/exports.d.ts.map +1 -0
  536. package/dist/validation/exports.js +56 -0
  537. package/dist/validation/exports.js.map +1 -0
  538. package/dist/validation/features.d.ts +11 -0
  539. package/dist/validation/features.d.ts.map +1 -0
  540. package/dist/validation/features.js +36 -0
  541. package/dist/validation/features.js.map +1 -0
  542. package/dist/validation/generics.d.ts +11 -0
  543. package/dist/validation/generics.d.ts.map +1 -0
  544. package/dist/validation/generics.js +31 -0
  545. package/dist/validation/generics.js.map +1 -0
  546. package/dist/validation/helpers.d.ts +15 -0
  547. package/dist/validation/helpers.d.ts.map +1 -0
  548. package/dist/validation/helpers.js +18 -0
  549. package/dist/validation/helpers.js.map +1 -0
  550. package/dist/validation/imports.d.ts +15 -0
  551. package/dist/validation/imports.d.ts.map +1 -0
  552. package/dist/validation/imports.js +42 -0
  553. package/dist/validation/imports.js.map +1 -0
  554. package/dist/validation/index.d.ts +11 -0
  555. package/dist/validation/index.d.ts.map +1 -0
  556. package/{src/validation/index.ts → dist/validation/index.js} +1 -1
  557. package/dist/validation/index.js.map +1 -0
  558. package/dist/validation/orchestrator.d.ts +15 -0
  559. package/dist/validation/orchestrator.d.ts.map +1 -0
  560. package/dist/validation/orchestrator.js +30 -0
  561. package/dist/validation/orchestrator.js.map +1 -0
  562. package/dist/validation/static-safety.d.ts +23 -0
  563. package/dist/validation/static-safety.d.ts.map +1 -0
  564. package/dist/validation/static-safety.js +165 -0
  565. package/dist/validation/static-safety.js.map +1 -0
  566. package/dist/validator.d.ts +6 -0
  567. package/dist/validator.d.ts.map +1 -0
  568. package/dist/validator.js +6 -0
  569. package/dist/validator.js.map +1 -0
  570. package/dist/validator.test.d.ts +11 -0
  571. package/dist/validator.test.d.ts.map +1 -0
  572. package/dist/validator.test.js +341 -0
  573. package/dist/validator.test.js.map +1 -0
  574. package/package.json +4 -1
  575. package/src/dotnet-metadata.ts +0 -121
  576. package/src/graph/builder.ts +0 -81
  577. package/src/graph/circular.ts +0 -58
  578. package/src/graph/extraction/exports.ts +0 -55
  579. package/src/graph/extraction/imports.ts +0 -81
  580. package/src/graph/extraction/orchestrator.ts +0 -99
  581. package/src/graph/helpers.ts +0 -51
  582. package/src/index.ts +0 -80
  583. package/src/ir/binding-resolution.test.ts +0 -585
  584. package/src/ir/builder/exports.ts +0 -78
  585. package/src/ir/builder/helpers.ts +0 -27
  586. package/src/ir/builder/imports.ts +0 -153
  587. package/src/ir/builder/orchestrator.ts +0 -178
  588. package/src/ir/builder/statements.ts +0 -55
  589. package/src/ir/builder/types.ts +0 -8
  590. package/src/ir/builder/validation.ts +0 -129
  591. package/src/ir/builder.test.ts +0 -581
  592. package/src/ir/converters/expressions/access.ts +0 -99
  593. package/src/ir/converters/expressions/calls.ts +0 -137
  594. package/src/ir/converters/expressions/collections.ts +0 -84
  595. package/src/ir/converters/expressions/functions.ts +0 -62
  596. package/src/ir/converters/expressions/helpers.ts +0 -264
  597. package/src/ir/converters/expressions/index.ts +0 -43
  598. package/src/ir/converters/expressions/literals.ts +0 -22
  599. package/src/ir/converters/expressions/operators.ts +0 -147
  600. package/src/ir/converters/expressions/other.ts +0 -60
  601. package/src/ir/converters/statements/control/blocks.ts +0 -22
  602. package/src/ir/converters/statements/control/conditionals.ts +0 -67
  603. package/src/ir/converters/statements/control/exceptions.ts +0 -43
  604. package/src/ir/converters/statements/control/index.ts +0 -17
  605. package/src/ir/converters/statements/control/loops.ts +0 -99
  606. package/src/ir/converters/statements/control.ts +0 -17
  607. package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
  608. package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
  609. package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
  610. package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
  611. package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
  612. package/src/ir/converters/statements/declarations/enums.ts +0 -29
  613. package/src/ir/converters/statements/declarations/functions.ts +0 -39
  614. package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
  615. package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
  616. package/src/ir/converters/statements/declarations/variables.ts +0 -60
  617. package/src/ir/converters/statements/declarations.ts +0 -16
  618. package/src/ir/converters/statements/helpers.ts +0 -174
  619. package/src/ir/converters/statements/index.ts +0 -40
  620. package/src/ir/expression-converter.ts +0 -207
  621. package/src/ir/generic-validator.ts +0 -100
  622. package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
  623. package/src/ir/statement-converter.ts +0 -128
  624. package/src/ir/type-converter/arrays.ts +0 -20
  625. package/src/ir/type-converter/converter.ts +0 -10
  626. package/src/ir/type-converter/functions.ts +0 -22
  627. package/src/ir/type-converter/inference.ts +0 -122
  628. package/src/ir/type-converter/literals.ts +0 -40
  629. package/src/ir/type-converter/objects.ts +0 -107
  630. package/src/ir/type-converter/orchestrator.ts +0 -85
  631. package/src/ir/type-converter/patterns.ts +0 -73
  632. package/src/ir/type-converter/primitives.ts +0 -57
  633. package/src/ir/type-converter/references.ts +0 -64
  634. package/src/ir/type-converter/unions-intersections.ts +0 -34
  635. package/src/ir/type-converter.ts +0 -13
  636. package/src/ir/types/expressions.ts +0 -215
  637. package/src/ir/types/guards.ts +0 -39
  638. package/src/ir/types/helpers.ts +0 -135
  639. package/src/ir/types/index.ts +0 -108
  640. package/src/ir/types/ir-types.ts +0 -96
  641. package/src/ir/types/module.ts +0 -57
  642. package/src/ir/types/statements.ts +0 -238
  643. package/src/ir/types.ts +0 -97
  644. package/src/metadata/bindings-loader.test.ts +0 -144
  645. package/src/metadata/bindings-loader.ts +0 -357
  646. package/src/metadata/library-loader.ts +0 -153
  647. package/src/metadata/loader.test.ts +0 -156
  648. package/src/metadata/loader.ts +0 -382
  649. package/src/program/bindings.test.ts +0 -512
  650. package/src/program/bindings.ts +0 -253
  651. package/src/program/config.ts +0 -30
  652. package/src/program/creation.ts +0 -249
  653. package/src/program/dependency-graph.ts +0 -245
  654. package/src/program/diagnostics.ts +0 -103
  655. package/src/program/metadata.ts +0 -68
  656. package/src/program/queries.ts +0 -18
  657. package/src/program/types.ts +0 -38
  658. package/src/resolver/dotnet-import-resolver.ts +0 -226
  659. package/src/resolver/import-resolution.ts +0 -177
  660. package/src/resolver/namespace.test.ts +0 -86
  661. package/src/resolver/namespace.ts +0 -42
  662. package/src/resolver/naming.ts +0 -38
  663. package/src/resolver/path-resolution.ts +0 -22
  664. package/src/resolver/types.ts +0 -15
  665. package/src/resolver.test.ts +0 -155
  666. package/src/resolver.ts +0 -14
  667. package/src/symbol-table/builder.ts +0 -114
  668. package/src/symbol-table/creation.ts +0 -42
  669. package/src/symbol-table/helpers.ts +0 -18
  670. package/src/symbol-table/queries.ts +0 -42
  671. package/src/symbol-table/types.ts +0 -28
  672. package/src/types/bindings.ts +0 -172
  673. package/src/types/diagnostic.test.ts +0 -164
  674. package/src/types/diagnostic.ts +0 -153
  675. package/src/types/explicit-views.test.ts +0 -113
  676. package/src/types/explicit-views.ts +0 -218
  677. package/src/types/metadata.ts +0 -229
  678. package/src/types/module.ts +0 -99
  679. package/src/types/nested-types.test.ts +0 -194
  680. package/src/types/nested-types.ts +0 -215
  681. package/src/types/parameter-modifiers.ts +0 -173
  682. package/src/types/ref-parameters.test.ts +0 -192
  683. package/src/types/ref-parameters.ts +0 -268
  684. package/src/types/result.test.ts +0 -157
  685. package/src/types/result.ts +0 -48
  686. package/src/types/support-types.test.ts +0 -81
  687. package/src/types/support-types.ts +0 -288
  688. package/src/types/test-harness.ts +0 -180
  689. package/src/validation/exports.ts +0 -98
  690. package/src/validation/features.ts +0 -89
  691. package/src/validation/generics.ts +0 -40
  692. package/src/validation/helpers.ts +0 -31
  693. package/src/validation/imports.ts +0 -97
  694. package/src/validation/orchestrator.ts +0 -51
  695. package/src/validation/static-safety.ts +0 -267
  696. package/src/validator.test.ts +0 -468
  697. package/src/validator.ts +0 -15
  698. 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
- };