@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,177 +0,0 @@
1
- /**
2
- * Import resolution with ESM rules enforcement
3
- */
4
-
5
- import * as path from "node:path";
6
- import * as fs from "node:fs";
7
- import { Result, ok, error } from "../types/result.js";
8
- import { Diagnostic, createDiagnostic } from "../types/diagnostic.js";
9
- import { isLocalImport } from "../types/module.js";
10
- import { ResolvedModule } from "./types.js";
11
- import { getBindingRegistry } from "../ir/converters/statements/declarations/registry.js";
12
- import { DotNetImportResolver } from "./dotnet-import-resolver.js";
13
-
14
- /**
15
- * Resolve import specifier to module
16
- */
17
- export const resolveImport = (
18
- importSpecifier: string,
19
- containingFile: string,
20
- sourceRoot: string,
21
- dotnetResolver?: DotNetImportResolver
22
- ): Result<ResolvedModule, Diagnostic> => {
23
- if (isLocalImport(importSpecifier)) {
24
- return resolveLocalImport(importSpecifier, containingFile, sourceRoot);
25
- }
26
-
27
- // Use import-driven resolution for .NET imports (if resolver provided)
28
- if (dotnetResolver) {
29
- const dotnetResolution = dotnetResolver.resolve(importSpecifier);
30
- if (dotnetResolution.isDotNet) {
31
- return ok({
32
- resolvedPath: "", // No file path for .NET imports
33
- isLocal: false,
34
- isDotNet: true,
35
- originalSpecifier: importSpecifier,
36
- resolvedNamespace: dotnetResolution.resolvedNamespace,
37
- });
38
- }
39
- }
40
-
41
- // Check if this is a module binding (e.g., Node.js API)
42
- const binding = getBindingRegistry().getBinding(importSpecifier);
43
- if (binding && binding.kind === "module") {
44
- return ok({
45
- resolvedPath: "", // No file path for bound modules
46
- isLocal: false,
47
- isDotNet: false,
48
- originalSpecifier: importSpecifier,
49
- resolvedClrType: binding.type,
50
- resolvedAssembly: binding.assembly,
51
- });
52
- }
53
-
54
- // @tsonic/types is a type-only package (phantom types) - no runtime code
55
- if (importSpecifier === "@tsonic/types") {
56
- return ok({
57
- resolvedPath: "", // No file path for type-only packages
58
- isLocal: false,
59
- isDotNet: false,
60
- originalSpecifier: importSpecifier,
61
- resolvedClrType: undefined,
62
- resolvedAssembly: undefined,
63
- });
64
- }
65
-
66
- return error(
67
- createDiagnostic(
68
- "TSN1004",
69
- "error",
70
- `Unsupported module import: "${importSpecifier}"`,
71
- undefined,
72
- "Tsonic only supports local imports (with .ts), .NET imports, and registered module bindings"
73
- )
74
- );
75
- };
76
-
77
- /**
78
- * Resolve local import with ESM rules
79
- */
80
- export const resolveLocalImport = (
81
- importSpecifier: string,
82
- containingFile: string,
83
- sourceRoot: string
84
- ): Result<ResolvedModule, Diagnostic> => {
85
- // Check for .ts extension
86
- if (!importSpecifier.endsWith(".ts")) {
87
- return error(
88
- createDiagnostic(
89
- "TSN1001",
90
- "error",
91
- `Local import must have .ts extension: "${importSpecifier}"`,
92
- undefined,
93
- `Change to: "${importSpecifier}.ts"`
94
- )
95
- );
96
- }
97
-
98
- const containingDir = path.dirname(containingFile);
99
- const resolvedPath = path.resolve(containingDir, importSpecifier);
100
-
101
- // Check if file exists
102
- if (!fs.existsSync(resolvedPath)) {
103
- return error(
104
- createDiagnostic(
105
- "TSN1004",
106
- "error",
107
- `Cannot find module: "${importSpecifier}"`,
108
- undefined,
109
- `File not found: ${resolvedPath}`
110
- )
111
- );
112
- }
113
-
114
- // Check case sensitivity
115
- const realPath = fs.realpathSync(resolvedPath);
116
- if (realPath !== resolvedPath && process.platform !== "win32") {
117
- return error(
118
- createDiagnostic(
119
- "TSN1003",
120
- "error",
121
- `Case mismatch in import path: "${importSpecifier}"`,
122
- undefined,
123
- `File exists as: ${realPath}`
124
- )
125
- );
126
- }
127
-
128
- // Ensure it's within the source root
129
- if (!resolvedPath.startsWith(sourceRoot)) {
130
- return error(
131
- createDiagnostic(
132
- "TSN1004",
133
- "error",
134
- `Import outside source root: "${importSpecifier}"`,
135
- undefined,
136
- `Source root: ${sourceRoot}`
137
- )
138
- );
139
- }
140
-
141
- return ok({
142
- resolvedPath,
143
- isLocal: true,
144
- isDotNet: false,
145
- originalSpecifier: importSpecifier,
146
- });
147
- };
148
-
149
- /**
150
- * Resolve .NET import (namespace validation)
151
- */
152
- export const resolveDotNetImport = (
153
- importSpecifier: string
154
- ): Result<ResolvedModule, Diagnostic> => {
155
- // For .NET imports, we don't resolve to a file
156
- // We just validate the format and return the namespace
157
-
158
- // Check for invalid characters
159
- if (!/^[A-Za-z_][A-Za-z0-9_.]*$/.test(importSpecifier)) {
160
- return error(
161
- createDiagnostic(
162
- "TSN4001",
163
- "error",
164
- `Invalid .NET namespace: "${importSpecifier}"`,
165
- undefined,
166
- "Must be a valid .NET namespace identifier"
167
- )
168
- );
169
- }
170
-
171
- return ok({
172
- resolvedPath: "", // No file path for .NET imports
173
- isLocal: false,
174
- isDotNet: true,
175
- originalSpecifier: importSpecifier,
176
- });
177
- };
@@ -1,86 +0,0 @@
1
- import { describe, it } from "mocha";
2
- import { expect } from "chai";
3
- import { getNamespaceFromPath } from "./namespace.js";
4
-
5
- describe("getNamespaceFromPath", () => {
6
- it("should return root namespace for files directly in source root", () => {
7
- const result = getNamespaceFromPath(
8
- "/project/src/index.ts",
9
- "/project/src",
10
- "MyApp"
11
- );
12
- expect(result).to.equal("MyApp");
13
- });
14
-
15
- it("should return root namespace for files in source root without src directory", () => {
16
- const result = getNamespaceFromPath(
17
- "/project/index.ts",
18
- "/project",
19
- "MyApp"
20
- );
21
- expect(result).to.equal("MyApp");
22
- });
23
-
24
- it("should compute namespace from single subdirectory", () => {
25
- const result = getNamespaceFromPath(
26
- "/project/src/models/user.ts",
27
- "/project/src",
28
- "MyApp"
29
- );
30
- expect(result).to.equal("MyApp.models");
31
- });
32
-
33
- it("should compute namespace from nested subdirectories", () => {
34
- const result = getNamespaceFromPath(
35
- "/project/src/models/entities/user.ts",
36
- "/project/src",
37
- "MyApp"
38
- );
39
- expect(result).to.equal("MyApp.models.entities");
40
- });
41
-
42
- it("should filter out 'src' from path components", () => {
43
- const result = getNamespaceFromPath(
44
- "/project/src/models/src/user.ts",
45
- "/project/src",
46
- "MyApp"
47
- );
48
- expect(result).to.equal("MyApp.models");
49
- });
50
-
51
- it("should handle case-preserved directory names", () => {
52
- const result = getNamespaceFromPath(
53
- "/project/src/MyModels/UserEntity.ts",
54
- "/project/src",
55
- "MyApp"
56
- );
57
- expect(result).to.equal("MyApp.MyModels");
58
- });
59
-
60
- it("should handle deep nesting", () => {
61
- const result = getNamespaceFromPath(
62
- "/project/src/a/b/c/d/e/file.ts",
63
- "/project/src",
64
- "MyApp"
65
- );
66
- expect(result).to.equal("MyApp.a.b.c.d.e");
67
- });
68
-
69
- it("should handle source root without trailing slash", () => {
70
- const result = getNamespaceFromPath(
71
- "/project/src/models/user.ts",
72
- "/project/src",
73
- "MyApp"
74
- );
75
- expect(result).to.equal("MyApp.models");
76
- });
77
-
78
- it("should handle source root with trailing slash", () => {
79
- const result = getNamespaceFromPath(
80
- "/project/src/models/user.ts",
81
- "/project/src/",
82
- "MyApp"
83
- );
84
- expect(result).to.equal("MyApp.models");
85
- });
86
- });
@@ -1,42 +0,0 @@
1
- import { dirname, relative } from "path";
2
-
3
- /**
4
- * Compute namespace from file path relative to source root.
5
- *
6
- * Rules:
7
- * - Namespace = rootNamespace + path components (excluding "src")
8
- * - Path normalized with "/" separators after relative() call
9
- * - Empty path maps to root namespace
10
- *
11
- * Examples:
12
- * - /project/src/models/user.ts → RootNamespace.models
13
- * - /project/src/index.ts → RootNamespace
14
- * - /project/models/user.ts → RootNamespace.models
15
- *
16
- * @param filePath - Absolute path to the TypeScript file
17
- * @param sourceRoot - Absolute path to source root directory
18
- * @param rootNamespace - Root namespace for the project
19
- * @returns Computed namespace string
20
- */
21
- export const getNamespaceFromPath = (
22
- filePath: string,
23
- sourceRoot: string,
24
- rootNamespace: string
25
- ): string => {
26
- const fileDir = dirname(filePath);
27
-
28
- // Make relative to source root, then normalize to forward slashes
29
- // IMPORTANT: Normalize AFTER relative() call, not before (cross-platform)
30
- let relativePath = relative(sourceRoot, fileDir).replace(/\\/g, "/");
31
-
32
- // Split by "/" and filter out empty, ".", and "src" components
33
- const parts = relativePath
34
- .split("/")
35
- .filter((p) => p !== "" && p !== "." && p !== "src");
36
-
37
- // If no path components, return root namespace
38
- // Otherwise, join with "."
39
- return parts.length === 0
40
- ? rootNamespace
41
- : `${rootNamespace}.${parts.join(".")}`;
42
- };
@@ -1,38 +0,0 @@
1
- /**
2
- * Namespace and class name generation from file paths
3
- */
4
-
5
- import * as path from "node:path";
6
- import { resolveModulePath } from "./path-resolution.js";
7
-
8
- /**
9
- * Generate namespace from file path
10
- */
11
- export const getNamespaceFromPath = (
12
- filePath: string,
13
- sourceRoot: string,
14
- rootNamespace: string
15
- ): string => {
16
- const relativePath = resolveModulePath(filePath, sourceRoot);
17
- const dirPath = path.dirname(relativePath);
18
-
19
- if (dirPath === ".") {
20
- return rootNamespace;
21
- }
22
-
23
- // Strip hyphens from directory names (per spec: hyphens are ignored)
24
- const parts = dirPath
25
- .split(path.sep)
26
- .filter((p) => p !== ".")
27
- .map((p) => p.replace(/-/g, ""));
28
- return [rootNamespace, ...parts].join(".");
29
- };
30
-
31
- /**
32
- * Generate class name from file path
33
- */
34
- export const getClassNameFromPath = (filePath: string): string => {
35
- const basename = path.basename(filePath, ".ts");
36
- // Strip hyphens from file names (per spec: hyphens are ignored)
37
- return basename.replace(/-/g, "");
38
- };
@@ -1,22 +0,0 @@
1
- /**
2
- * Path resolution utilities
3
- */
4
-
5
- import * as path from "node:path";
6
-
7
- /**
8
- * Resolve module path relative to source root
9
- */
10
- export const resolveModulePath = (
11
- filePath: string,
12
- sourceRoot: string
13
- ): string => {
14
- const absolutePath = path.resolve(filePath);
15
- const absoluteRoot = path.resolve(sourceRoot);
16
-
17
- if (!absolutePath.startsWith(absoluteRoot)) {
18
- throw new Error(`File ${filePath} is outside source root ${sourceRoot}`);
19
- }
20
-
21
- return path.relative(absoluteRoot, absolutePath);
22
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * Resolver type definitions
3
- */
4
-
5
- export type ResolvedModule = {
6
- readonly resolvedPath: string;
7
- readonly isLocal: boolean;
8
- readonly isDotNet: boolean;
9
- readonly originalSpecifier: string;
10
- // For .NET imports: the CLR namespace (e.g., "System" from "@tsonic/dotnet/System")
11
- readonly resolvedNamespace?: string;
12
- // For module bindings (Node.js APIs mapped to CLR types)
13
- readonly resolvedClrType?: string; // e.g., "Tsonic.NodeApi.fs"
14
- readonly resolvedAssembly?: string; // e.g., "Tsonic.NodeApi"
15
- };
@@ -1,155 +0,0 @@
1
- /**
2
- * Tests for module resolver
3
- */
4
-
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import * as path from "node:path";
8
- import * as fs from "node:fs";
9
- import * as os from "node:os";
10
- import {
11
- resolveImport,
12
- getNamespaceFromPath,
13
- getClassNameFromPath,
14
- } from "./resolver.js";
15
-
16
- describe("Module Resolver", () => {
17
- describe("resolveImport", () => {
18
- const tempDir = path.join(os.tmpdir(), "tsonic-test");
19
- const sourceRoot = tempDir;
20
-
21
- before(() => {
22
- // Create temp directory structure
23
- fs.mkdirSync(path.join(tempDir, "src", "models"), { recursive: true });
24
- fs.writeFileSync(
25
- path.join(tempDir, "src", "models", "User.ts"),
26
- "export class User {}"
27
- );
28
- fs.writeFileSync(path.join(tempDir, "src", "index.ts"), "");
29
- });
30
-
31
- after(() => {
32
- // Clean up
33
- fs.rmSync(tempDir, { recursive: true, force: true });
34
- });
35
-
36
- it("should resolve local imports with .ts extension", () => {
37
- const result = resolveImport(
38
- "./models/User.ts",
39
- path.join(tempDir, "src", "index.ts"),
40
- sourceRoot
41
- );
42
-
43
- expect(result.ok).to.equal(true);
44
- if (result.ok) {
45
- expect(result.value.isLocal).to.equal(true);
46
- expect(result.value.isDotNet).to.equal(false);
47
- expect(result.value.resolvedPath).to.equal(
48
- path.join(tempDir, "src", "models", "User.ts")
49
- );
50
- }
51
- });
52
-
53
- it("should error on local imports without .ts extension", () => {
54
- const result = resolveImport(
55
- "./models/User",
56
- path.join(tempDir, "src", "index.ts"),
57
- sourceRoot
58
- );
59
-
60
- expect(result.ok).to.equal(false);
61
- if (!result.ok) {
62
- expect(result.error.code).to.equal("TSN1001");
63
- expect(result.error.message).to.include("must have .ts extension");
64
- }
65
- });
66
-
67
- it("should not detect bare imports as .NET without resolver with bindings", () => {
68
- // Import-driven resolution: bare imports like "System.IO" are only detected as .NET
69
- // if a resolver is provided and the import resolves to a package with bindings.json.
70
- // Without a resolver or package, bare imports are treated as unsupported node_modules.
71
- const result = resolveImport(
72
- "System.IO",
73
- path.join(tempDir, "src", "index.ts"),
74
- sourceRoot
75
- // No dotnetResolver passed
76
- );
77
-
78
- expect(result.ok).to.equal(false);
79
- if (!result.ok) {
80
- expect(result.error.code).to.equal("TSN1004");
81
- expect(result.error.message).to.include("Unsupported module import");
82
- }
83
- });
84
-
85
- it("should reject node_modules imports", () => {
86
- const result = resolveImport(
87
- "express",
88
- path.join(tempDir, "src", "index.ts"),
89
- sourceRoot
90
- );
91
-
92
- expect(result.ok).to.equal(false);
93
- if (!result.ok) {
94
- expect(result.error.code).to.equal("TSN1004");
95
- expect(result.error.message).to.include("Unsupported module import");
96
- }
97
- });
98
-
99
- it("should error on non-existent local files", () => {
100
- const result = resolveImport(
101
- "./nonexistent.ts",
102
- path.join(tempDir, "src", "index.ts"),
103
- sourceRoot
104
- );
105
-
106
- expect(result.ok).to.equal(false);
107
- if (!result.ok) {
108
- expect(result.error.code).to.equal("TSN1004");
109
- expect(result.error.message).to.include("Cannot find module");
110
- }
111
- });
112
- });
113
-
114
- describe("getNamespaceFromPath", () => {
115
- it("should generate namespace from directory structure", () => {
116
- const namespace = getNamespaceFromPath(
117
- "/project/src/models/auth/User.ts",
118
- "/project/src",
119
- "MyApp"
120
- );
121
-
122
- expect(namespace).to.equal("MyApp.models.auth");
123
- });
124
-
125
- it("should use root namespace for files in source root", () => {
126
- const namespace = getNamespaceFromPath(
127
- "/project/src/index.ts",
128
- "/project/src",
129
- "MyApp"
130
- );
131
-
132
- expect(namespace).to.equal("MyApp");
133
- });
134
-
135
- it("should preserve case in directory names", () => {
136
- const namespace = getNamespaceFromPath(
137
- "/project/src/Models/Auth/User.ts",
138
- "/project/src",
139
- "MyApp"
140
- );
141
-
142
- expect(namespace).to.equal("MyApp.Models.Auth");
143
- });
144
- });
145
-
146
- describe("getClassNameFromPath", () => {
147
- it("should extract class name from file name", () => {
148
- expect(getClassNameFromPath("/src/User.ts")).to.equal("User");
149
- expect(getClassNameFromPath("/src/models/UserProfile.ts")).to.equal(
150
- "UserProfile"
151
- );
152
- expect(getClassNameFromPath("index.ts")).to.equal("index");
153
- });
154
- });
155
- });
package/src/resolver.ts DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * Module resolution with ESM rules enforcement
3
- * Main dispatcher - re-exports from resolver/ subdirectory
4
- */
5
-
6
- export type { ResolvedModule, ResolvedDotNetImport } from "./resolver/index.js";
7
- export {
8
- resolveImport,
9
- resolveModulePath,
10
- getNamespaceFromPath,
11
- getClassNameFromPath,
12
- DotNetImportResolver,
13
- createDotNetImportResolver,
14
- } from "./resolver/index.js";
@@ -1,114 +0,0 @@
1
- /**
2
- * Symbol table builder from TypeScript AST
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { Symbol } from "./types.js";
7
- import { hasExportModifier } from "./helpers.js";
8
-
9
- /**
10
- * Build symbol table from a TypeScript source file
11
- */
12
- export const buildSymbolTable = (
13
- sourceFile: ts.SourceFile,
14
- checker: ts.TypeChecker
15
- ): readonly Symbol[] => {
16
- const symbols: Symbol[] = [];
17
- const modulePath = sourceFile.fileName;
18
-
19
- const visitor = (node: ts.Node): void => {
20
- // Check for exported declarations
21
- const isExported = hasExportModifier(node);
22
-
23
- if (ts.isClassDeclaration(node) && node.name) {
24
- symbols.push({
25
- name: node.name.text,
26
- kind: "class",
27
- isExported,
28
- module: modulePath,
29
- tsSymbol: checker.getSymbolAtLocation(node.name),
30
- });
31
- } else if (ts.isInterfaceDeclaration(node)) {
32
- symbols.push({
33
- name: node.name.text,
34
- kind: "interface",
35
- isExported,
36
- module: modulePath,
37
- tsSymbol: checker.getSymbolAtLocation(node.name),
38
- });
39
- } else if (ts.isFunctionDeclaration(node) && node.name) {
40
- symbols.push({
41
- name: node.name.text,
42
- kind: "function",
43
- isExported,
44
- module: modulePath,
45
- tsSymbol: checker.getSymbolAtLocation(node.name),
46
- });
47
- } else if (ts.isVariableStatement(node)) {
48
- node.declarationList.declarations.forEach((decl) => {
49
- if (ts.isIdentifier(decl.name)) {
50
- symbols.push({
51
- name: decl.name.text,
52
- kind: "variable",
53
- isExported,
54
- module: modulePath,
55
- tsSymbol: checker.getSymbolAtLocation(decl.name),
56
- });
57
- }
58
- });
59
- } else if (ts.isTypeAliasDeclaration(node)) {
60
- symbols.push({
61
- name: node.name.text,
62
- kind: "type",
63
- isExported,
64
- module: modulePath,
65
- tsSymbol: checker.getSymbolAtLocation(node.name),
66
- });
67
- } else if (ts.isEnumDeclaration(node)) {
68
- symbols.push({
69
- name: node.name.text,
70
- kind: "enum",
71
- isExported,
72
- module: modulePath,
73
- tsSymbol: checker.getSymbolAtLocation(node.name),
74
- });
75
- } else if (ts.isModuleDeclaration(node) && ts.isIdentifier(node.name)) {
76
- symbols.push({
77
- name: node.name.text,
78
- kind: "namespace",
79
- isExported,
80
- module: modulePath,
81
- tsSymbol: checker.getSymbolAtLocation(node.name),
82
- });
83
- }
84
-
85
- // Check for export declarations
86
- if (
87
- ts.isExportDeclaration(node) &&
88
- node.exportClause &&
89
- ts.isNamedExports(node.exportClause)
90
- ) {
91
- node.exportClause.elements.forEach((spec) => {
92
- const originalName = spec.propertyName?.text ?? spec.name.text;
93
- const exportedName = spec.name.text;
94
-
95
- // Find the original symbol and mark it as exported
96
- const originalSymbol = symbols.find(
97
- (s) => s.name === originalName && !s.isExported
98
- );
99
- if (originalSymbol) {
100
- symbols.push({
101
- ...originalSymbol,
102
- name: exportedName,
103
- isExported: true,
104
- });
105
- }
106
- });
107
- }
108
-
109
- ts.forEachChild(node, visitor);
110
- };
111
-
112
- visitor(sourceFile);
113
- return symbols;
114
- };