@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,245 +0,0 @@
1
- /**
2
- * Dependency graph builder - Multi-file compilation
3
- * Traverses local imports using ts.resolveModuleName()
4
- */
5
-
6
- import * as ts from "typescript";
7
- import { relative, resolve } from "path";
8
- import { Result, ok, error } from "../types/result.js";
9
- import { Diagnostic, createDiagnostic } from "../types/diagnostic.js";
10
- import { IrModule } from "../ir/types.js";
11
- import { buildIrModule } from "../ir/builder/orchestrator.js";
12
- import { createProgram, createCompilerOptions } from "./creation.js";
13
- import { CompilerOptions } from "./types.js";
14
-
15
- export type ModuleDependencyGraphResult = {
16
- readonly modules: readonly IrModule[];
17
- readonly entryModule: IrModule;
18
- };
19
-
20
- /**
21
- * Extract module specifier from import or re-export declaration
22
- * Returns the module specifier string literal, or null if not applicable
23
- */
24
- const getModuleSpecifier = (stmt: ts.Statement): ts.StringLiteral | null => {
25
- // Handle: import { x } from "./module"
26
- if (
27
- ts.isImportDeclaration(stmt) &&
28
- ts.isStringLiteral(stmt.moduleSpecifier)
29
- ) {
30
- return stmt.moduleSpecifier;
31
- }
32
-
33
- // Handle: export { x } from "./module" (re-exports)
34
- if (
35
- ts.isExportDeclaration(stmt) &&
36
- stmt.moduleSpecifier &&
37
- ts.isStringLiteral(stmt.moduleSpecifier)
38
- ) {
39
- return stmt.moduleSpecifier;
40
- }
41
-
42
- return null;
43
- };
44
-
45
- /**
46
- * Build complete module dependency graph from entry point
47
- * Traverses all local imports and builds IR for all discovered modules
48
- * Uses TypeScript's ts.resolveModuleName() for correct module resolution
49
- */
50
- export const buildModuleDependencyGraph = (
51
- entryFile: string,
52
- options: CompilerOptions
53
- ): Result<ModuleDependencyGraphResult, readonly Diagnostic[]> => {
54
- const diagnostics: Diagnostic[] = [];
55
-
56
- // Normalize entry file and source root to absolute paths
57
- const entryAbs = resolve(entryFile);
58
- const sourceRootAbs = resolve(options.sourceRoot);
59
-
60
- // Get TypeScript compiler options for module resolution
61
- const compilerOptions = createCompilerOptions(options);
62
-
63
- // Track all discovered files for later type checking
64
- const allDiscoveredFiles: string[] = [];
65
-
66
- // BFS to discover all local imports
67
- const visited = new Set<string>();
68
- const queue: string[] = [entryAbs];
69
-
70
- // First pass: discover all files
71
- while (queue.length > 0) {
72
- const currentFile = queue.shift()!;
73
-
74
- // Dedup by realpath (handles symlinks, relative paths)
75
- const realPath = ts.sys.realpath?.(currentFile) ?? currentFile;
76
- if (visited.has(realPath)) {
77
- continue;
78
- }
79
- visited.add(realPath);
80
- allDiscoveredFiles.push(realPath);
81
-
82
- // Read source file directly from filesystem
83
- const sourceText = ts.sys.readFile(currentFile);
84
- if (!sourceText) {
85
- // Missing file - add diagnostic but continue traversal
86
- const relativeCurrent = relative(sourceRootAbs, currentFile);
87
- diagnostics.push(
88
- createDiagnostic(
89
- "TSN1002",
90
- "error",
91
- `Cannot find module '${relativeCurrent}'`,
92
- {
93
- file: currentFile,
94
- line: 1,
95
- column: 1,
96
- length: 1,
97
- }
98
- )
99
- );
100
- continue;
101
- }
102
-
103
- // Parse source file to extract imports
104
- const sourceFile = ts.createSourceFile(
105
- currentFile,
106
- sourceText,
107
- ts.ScriptTarget.Latest,
108
- true
109
- );
110
-
111
- // Extract local imports and re-exports using TypeScript's resolution
112
- for (const stmt of sourceFile.statements) {
113
- // Handle import declarations: import { x } from "./module"
114
- // Handle re-export declarations: export { x } from "./module"
115
- const moduleSpecifier = getModuleSpecifier(stmt);
116
- if (!moduleSpecifier) {
117
- continue;
118
- }
119
-
120
- const importSpecifier = moduleSpecifier.text;
121
-
122
- // Only process local imports (starts with . or /)
123
- if (
124
- !importSpecifier.startsWith(".") &&
125
- !importSpecifier.startsWith("/")
126
- ) {
127
- continue;
128
- }
129
-
130
- // Resolve using TypeScript's module resolution
131
- const resolved = ts.resolveModuleName(
132
- importSpecifier,
133
- currentFile,
134
- compilerOptions,
135
- ts.sys
136
- );
137
-
138
- if (resolved.resolvedModule?.resolvedFileName) {
139
- const resolvedPath = resolved.resolvedModule.resolvedFileName;
140
-
141
- // Only include .ts files (not .d.ts) within source root
142
- if (
143
- resolvedPath.startsWith(sourceRootAbs) &&
144
- resolvedPath.endsWith(".ts") &&
145
- !resolvedPath.endsWith(".d.ts")
146
- ) {
147
- queue.push(resolvedPath);
148
- }
149
- } else {
150
- // Import resolution failed - add diagnostic with context
151
- const relativeCurrent = relative(sourceRootAbs, currentFile);
152
- diagnostics.push(
153
- createDiagnostic(
154
- "TSN1002",
155
- "error",
156
- `Cannot resolve import '${importSpecifier}' from '${relativeCurrent}'`,
157
- {
158
- file: currentFile,
159
- line: stmt.getStart(sourceFile),
160
- column: 1,
161
- length: importSpecifier.length,
162
- }
163
- )
164
- );
165
- }
166
- }
167
- }
168
-
169
- // If any diagnostics from discovery, fail the build
170
- if (diagnostics.length > 0) {
171
- return error(diagnostics);
172
- }
173
-
174
- // Ensure we discovered at least the entry file
175
- if (allDiscoveredFiles.length === 0) {
176
- return error([
177
- createDiagnostic(
178
- "TSN1002",
179
- "error",
180
- `No modules found starting from entry point '${entryFile}'`,
181
- {
182
- file: entryFile,
183
- line: 1,
184
- column: 1,
185
- length: 1,
186
- }
187
- ),
188
- ]);
189
- }
190
-
191
- // Second pass: Create TypeScript program with all discovered files for type checking
192
- // Use absolute sourceRoot for consistency
193
- const programResult = createProgram(allDiscoveredFiles, {
194
- ...options,
195
- sourceRoot: sourceRootAbs,
196
- });
197
-
198
- if (!programResult.ok) {
199
- return error(programResult.error.diagnostics);
200
- }
201
-
202
- const tsonicProgram = programResult.value;
203
-
204
- // Third pass: Build IR for all discovered modules
205
- const modules: IrModule[] = [];
206
-
207
- for (const filePath of allDiscoveredFiles) {
208
- const sourceFile = tsonicProgram.program.getSourceFile(filePath);
209
- if (!sourceFile) {
210
- // This shouldn't happen since we already verified files exist
211
- continue;
212
- }
213
-
214
- const moduleResult = buildIrModule(sourceFile, tsonicProgram, {
215
- sourceRoot: sourceRootAbs,
216
- rootNamespace: options.rootNamespace,
217
- });
218
-
219
- if (!moduleResult.ok) {
220
- diagnostics.push(moduleResult.error);
221
- continue;
222
- }
223
-
224
- modules.push(moduleResult.value);
225
- }
226
-
227
- // If any diagnostics from IR building, fail the build
228
- if (diagnostics.length > 0) {
229
- return error(diagnostics);
230
- }
231
-
232
- // Sort modules by relative path for deterministic output
233
- modules.sort((a, b) => a.filePath.localeCompare(b.filePath));
234
-
235
- // Entry module is the first one (after sorting, it should be the entry file)
236
- // But let's find it by matching the entry file path
237
- const entryRelative = relative(sourceRootAbs, entryAbs).replace(/\\/g, "/");
238
- const entryModule =
239
- modules.find((m) => m.filePath === entryRelative) ?? modules[0]!;
240
-
241
- return ok({
242
- modules,
243
- entryModule,
244
- });
245
- };
@@ -1,103 +0,0 @@
1
- /**
2
- * TypeScript diagnostics collection and conversion
3
- */
4
-
5
- import * as ts from "typescript";
6
- import {
7
- Diagnostic,
8
- DiagnosticsCollector,
9
- createDiagnosticsCollector,
10
- addDiagnostic,
11
- createDiagnostic,
12
- } from "../types/diagnostic.js";
13
-
14
- /**
15
- * Collect all TypeScript diagnostics from a program
16
- */
17
- export const collectTsDiagnostics = (
18
- program: ts.Program
19
- ): DiagnosticsCollector => {
20
- const tsDiagnostics = [
21
- ...program.getConfigFileParsingDiagnostics(),
22
- ...program.getOptionsDiagnostics(),
23
- ...program.getSyntacticDiagnostics(),
24
- ...program.getGlobalDiagnostics(),
25
- ...program.getSemanticDiagnostics(),
26
- ];
27
-
28
- return tsDiagnostics.reduce((collector, tsDiag) => {
29
- const diagnostic = convertTsDiagnostic(tsDiag);
30
- return diagnostic ? addDiagnostic(collector, diagnostic) : collector;
31
- }, createDiagnosticsCollector());
32
- };
33
-
34
- /**
35
- * Convert TypeScript diagnostic to Tsonic diagnostic
36
- */
37
- export const convertTsDiagnostic = (
38
- tsDiag: ts.Diagnostic
39
- ): Diagnostic | null => {
40
- if (tsDiag.category === ts.DiagnosticCategory.Suggestion) {
41
- return null; // Ignore suggestions
42
- }
43
-
44
- const message = ts.flattenDiagnosticMessageText(tsDiag.messageText, "\n");
45
-
46
- // Ignore "type used as value" errors for .NET types
47
- // These are handled by the Tsonic compiler
48
- if (
49
- message.includes("only refers to a type, but is being used as a value") &&
50
- tsDiag.file
51
- ) {
52
- // Check if this is a .NET import
53
- const sourceText = tsDiag.file.getText();
54
- if (
55
- sourceText.includes('from "System') ||
56
- sourceText.includes('from "Microsoft') ||
57
- sourceText.includes('from "Windows')
58
- ) {
59
- return null; // Ignore - will be handled by Tsonic
60
- }
61
- }
62
-
63
- const severity =
64
- tsDiag.category === ts.DiagnosticCategory.Error
65
- ? "error"
66
- : tsDiag.category === ts.DiagnosticCategory.Warning
67
- ? "warning"
68
- : "info";
69
-
70
- const location =
71
- tsDiag.file && tsDiag.start !== undefined
72
- ? getSourceLocation(tsDiag.file, tsDiag.start, tsDiag.length ?? 1)
73
- : undefined;
74
-
75
- return createDiagnostic(
76
- "TSN2001", // Generic TypeScript error
77
- severity,
78
- message,
79
- location
80
- );
81
- };
82
-
83
- /**
84
- * Get source location information from TypeScript source file
85
- */
86
- export const getSourceLocation = (
87
- file: ts.SourceFile,
88
- start: number,
89
- length: number
90
- ): {
91
- readonly file: string;
92
- readonly line: number;
93
- readonly column: number;
94
- readonly length: number;
95
- } => {
96
- const { line, character } = file.getLineAndCharacterOfPosition(start);
97
- return {
98
- file: file.fileName,
99
- line: line + 1,
100
- column: character + 1,
101
- length,
102
- };
103
- };
@@ -1,68 +0,0 @@
1
- /**
2
- * .NET metadata file loading
3
- */
4
-
5
- import * as fs from "node:fs";
6
- import * as path from "node:path";
7
- import {
8
- DotnetMetadataRegistry,
9
- DotnetMetadataFile,
10
- } from "../dotnet-metadata.js";
11
-
12
- /**
13
- * Recursively scan a directory for .d.ts files
14
- */
15
- const scanForDeclarationFiles = (dir: string): readonly string[] => {
16
- if (!fs.existsSync(dir)) {
17
- return [];
18
- }
19
-
20
- const results: string[] = [];
21
- const entries = fs.readdirSync(dir, { withFileTypes: true });
22
-
23
- for (const entry of entries) {
24
- const fullPath = path.join(dir, entry.name);
25
- if (entry.isDirectory()) {
26
- results.push(...scanForDeclarationFiles(fullPath));
27
- } else if (entry.name.endsWith(".d.ts")) {
28
- results.push(fullPath);
29
- }
30
- }
31
-
32
- return results;
33
- };
34
-
35
- /**
36
- * Load .NET metadata files from configured type roots
37
- * Looks for *.metadata.json files alongside .d.ts files
38
- */
39
- export const loadDotnetMetadata = (
40
- typeRoots: readonly string[]
41
- ): DotnetMetadataRegistry => {
42
- const registry = new DotnetMetadataRegistry();
43
-
44
- // Scan all type roots for .d.ts files
45
- for (const typeRoot of typeRoots) {
46
- const absoluteRoot = path.resolve(typeRoot);
47
- const declFiles = scanForDeclarationFiles(absoluteRoot);
48
-
49
- for (const declPath of declFiles) {
50
- // Look for corresponding .metadata.json file
51
- const metadataPath = declPath.replace(/\.d\.ts$/, ".metadata.json");
52
-
53
- try {
54
- if (fs.existsSync(metadataPath)) {
55
- const content = fs.readFileSync(metadataPath, "utf-8");
56
- const metadataFile = JSON.parse(content) as DotnetMetadataFile;
57
- registry.loadMetadataFile(metadataPath, metadataFile);
58
- }
59
- } catch (err) {
60
- // Silently skip files that can't be read or parsed
61
- // In production, we might want to emit a warning diagnostic
62
- console.warn(`Failed to load metadata from ${metadataPath}:`, err);
63
- }
64
- }
65
- }
66
-
67
- return registry;
68
- };
@@ -1,18 +0,0 @@
1
- /**
2
- * Program query functions
3
- */
4
-
5
- import * as ts from "typescript";
6
- import * as path from "node:path";
7
- import { TsonicProgram } from "./types.js";
8
-
9
- /**
10
- * Get a source file from the program by file path
11
- */
12
- export const getSourceFile = (
13
- program: TsonicProgram,
14
- filePath: string
15
- ): ts.SourceFile | null => {
16
- const absolutePath = path.resolve(filePath);
17
- return program.program.getSourceFile(absolutePath) ?? null;
18
- };
@@ -1,38 +0,0 @@
1
- /**
2
- * Program type definitions
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { DotnetMetadataRegistry } from "../dotnet-metadata.js";
7
- import { BindingRegistry } from "./bindings.js";
8
- import { DotNetImportResolver } from "../resolver/dotnet-import-resolver.js";
9
-
10
- export type RuntimeMode = "js" | "dotnet";
11
-
12
- export type CompilerOptions = {
13
- readonly sourceRoot: string;
14
- readonly rootNamespace: string;
15
- readonly strict?: boolean;
16
- readonly typeRoots?: readonly string[];
17
- readonly verbose?: boolean;
18
- /** Use TypeScript standard lib (Array, Promise, etc.) instead of noLib mode */
19
- readonly useStandardLib?: boolean;
20
- /**
21
- * Runtime mode:
22
- * - "js": JS built-ins available via Tsonic.JSRuntime
23
- * - "dotnet": Pure .NET mode, JS built-ins forbidden
24
- * Defaults to "js"
25
- */
26
- readonly runtime?: RuntimeMode;
27
- };
28
-
29
- export type TsonicProgram = {
30
- readonly program: ts.Program;
31
- readonly checker: ts.TypeChecker;
32
- readonly options: CompilerOptions;
33
- readonly sourceFiles: readonly ts.SourceFile[];
34
- readonly metadata: DotnetMetadataRegistry;
35
- readonly bindings: BindingRegistry;
36
- /** Resolver for .NET namespace imports (import-driven discovery) */
37
- readonly dotnetResolver: DotNetImportResolver;
38
- };
@@ -1,226 +0,0 @@
1
- /**
2
- * Import-driven .NET namespace resolution
3
- *
4
- * Determines if an import specifier refers to a CLR namespace by checking
5
- * if bindings.json exists in the package's namespace directory.
6
- *
7
- * This is the ONLY mechanism for detecting .NET imports - no heuristics,
8
- * no special-casing for @tsonic/dotnet or any other package.
9
- */
10
-
11
- import { existsSync } from "node:fs";
12
- import { dirname, join } from "node:path";
13
- import { createRequire } from "node:module";
14
-
15
- /**
16
- * Result of resolving a .NET import
17
- */
18
- export type ResolvedDotNetImport =
19
- | {
20
- readonly isDotNet: true;
21
- readonly packageName: string;
22
- readonly resolvedNamespace: string;
23
- readonly bindingsPath: string;
24
- readonly metadataPath: string | undefined;
25
- }
26
- | {
27
- readonly isDotNet: false;
28
- };
29
-
30
- /**
31
- * Parsed module specifier
32
- */
33
- type ParsedSpecifier = {
34
- readonly packageName: string;
35
- readonly subpath: string;
36
- };
37
-
38
- /**
39
- * Resolver for .NET namespace imports
40
- *
41
- * An import is a CLR namespace import iff:
42
- * - It's a package import with a subpath (e.g., @scope/pkg/Namespace)
43
- * - The package contains bindings.json in that subpath directory
44
- *
45
- * This works for any bindings provider package, not just @tsonic/dotnet.
46
- */
47
- export class DotNetImportResolver {
48
- // Cache: packageName -> packageRoot (or null if not found)
49
- private readonly pkgRootCache = new Map<string, string | null>();
50
-
51
- // Cache: absolute bindingsPath -> exists
52
- private readonly bindingsExistsCache = new Map<string, boolean>();
53
-
54
- // require function for Node resolution from the base directory
55
- private readonly require: NodeRequire;
56
-
57
- constructor(baseDir: string) {
58
- // Create a require function that resolves relative to baseDir
59
- this.require = createRequire(join(baseDir, "package.json"));
60
- }
61
-
62
- /**
63
- * Resolve an import specifier to determine if it's a CLR namespace import
64
- */
65
- resolve(moduleSpecifier: string): ResolvedDotNetImport {
66
- // Skip local imports
67
- if (moduleSpecifier.startsWith(".") || moduleSpecifier.startsWith("/")) {
68
- return { isDotNet: false };
69
- }
70
-
71
- // Parse the specifier into package name and subpath
72
- const parsed = this.parseModuleSpecifier(moduleSpecifier);
73
- if (!parsed) {
74
- return { isDotNet: false };
75
- }
76
-
77
- const { packageName, subpath } = parsed;
78
-
79
- // No subpath means it's not a namespace import (e.g., just "@tsonic/dotnet")
80
- if (!subpath) {
81
- return { isDotNet: false };
82
- }
83
-
84
- // Resolve package root using Node resolution
85
- const pkgRoot = this.resolvePkgRoot(packageName);
86
- if (!pkgRoot) {
87
- return { isDotNet: false };
88
- }
89
-
90
- // Check if bindings.json exists in the namespace directory
91
- const bindingsPath = join(pkgRoot, subpath, "bindings.json");
92
- if (!this.hasBindings(bindingsPath)) {
93
- return { isDotNet: false };
94
- }
95
-
96
- // Check for optional metadata.json
97
- const metadataPath = join(pkgRoot, subpath, "internal", "metadata.json");
98
- const hasMetadata = this.fileExists(metadataPath);
99
-
100
- return {
101
- isDotNet: true,
102
- packageName,
103
- resolvedNamespace: subpath,
104
- bindingsPath,
105
- metadataPath: hasMetadata ? metadataPath : undefined,
106
- };
107
- }
108
-
109
- /**
110
- * Parse a module specifier into package name and subpath
111
- *
112
- * Examples:
113
- * - "@tsonic/dotnet/System.IO" -> { packageName: "@tsonic/dotnet", subpath: "System.IO" }
114
- * - "lodash/fp" -> { packageName: "lodash", subpath: "fp" }
115
- * - "@tsonic/dotnet" -> null (no subpath)
116
- * - "lodash" -> null (no subpath)
117
- */
118
- private parseModuleSpecifier(spec: string): ParsedSpecifier | null {
119
- if (spec.startsWith("@")) {
120
- // Scoped package: @scope/pkg/subpath
121
- const match = spec.match(/^(@[^/]+\/[^/]+)(?:\/(.+))?$/);
122
- if (!match) return null;
123
- const packageName = match[1];
124
- const subpath = match[2];
125
- if (!packageName || !subpath) return null;
126
- return { packageName, subpath };
127
- } else {
128
- // Regular package: pkg/subpath
129
- const slashIdx = spec.indexOf("/");
130
- if (slashIdx === -1) return null;
131
- return {
132
- packageName: spec.slice(0, slashIdx),
133
- subpath: spec.slice(slashIdx + 1),
134
- };
135
- }
136
- }
137
-
138
- /**
139
- * Resolve package root directory using Node resolution
140
- *
141
- * Uses require.resolve to find the package's package.json,
142
- * then returns the directory containing it.
143
- */
144
- private resolvePkgRoot(packageName: string): string | null {
145
- const cached = this.pkgRootCache.get(packageName);
146
- if (cached !== undefined) {
147
- return cached;
148
- }
149
-
150
- try {
151
- // Try to resolve the package's package.json directly
152
- const pkgJsonPath = this.require.resolve(`${packageName}/package.json`);
153
- const pkgRoot = dirname(pkgJsonPath);
154
- this.pkgRootCache.set(packageName, pkgRoot);
155
- return pkgRoot;
156
- } catch {
157
- // package.json might not be exported - try finding package root via node_modules path
158
- // This works by looking for node_modules/<package-name> in the require paths
159
- try {
160
- const paths = this.require.resolve.paths(packageName);
161
- if (paths) {
162
- for (const searchPath of paths) {
163
- // For scoped packages, the path structure is node_modules/@scope/name
164
- const pkgDir = packageName.startsWith("@")
165
- ? join(searchPath, packageName)
166
- : join(searchPath, packageName);
167
-
168
- // Check if package.json exists at this location
169
- if (existsSync(join(pkgDir, "package.json"))) {
170
- this.pkgRootCache.set(packageName, pkgDir);
171
- return pkgDir;
172
- }
173
- }
174
- }
175
- } catch {
176
- // Fallback failed
177
- }
178
-
179
- this.pkgRootCache.set(packageName, null);
180
- return null;
181
- }
182
- }
183
-
184
- /**
185
- * Check if bindings.json exists at the given path (cached)
186
- */
187
- private hasBindings(bindingsPath: string): boolean {
188
- const cached = this.bindingsExistsCache.get(bindingsPath);
189
- if (cached !== undefined) {
190
- return cached;
191
- }
192
-
193
- const exists = existsSync(bindingsPath);
194
- this.bindingsExistsCache.set(bindingsPath, exists);
195
- return exists;
196
- }
197
-
198
- /**
199
- * Check if a file exists (not cached - used for optional files)
200
- */
201
- private fileExists(filePath: string): boolean {
202
- return existsSync(filePath);
203
- }
204
-
205
- /**
206
- * Get all discovered binding paths (for loading)
207
- */
208
- getDiscoveredBindingPaths(): ReadonlySet<string> {
209
- const paths = new Set<string>();
210
- for (const [path, exists] of this.bindingsExistsCache) {
211
- if (exists) {
212
- paths.add(path);
213
- }
214
- }
215
- return paths;
216
- }
217
- }
218
-
219
- /**
220
- * Create a resolver instance for a given source root
221
- */
222
- export const createDotNetImportResolver = (
223
- sourceRoot: string
224
- ): DotNetImportResolver => {
225
- return new DotNetImportResolver(sourceRoot);
226
- };