@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,166 +0,0 @@
1
- /**
2
- * Class declaration conversion orchestrator
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrClassDeclaration, IrClassMember } from "../../../../types.js";
7
- import { convertExpression } from "../../../../expression-converter.js";
8
- import { convertType } from "../../../../type-converter.js";
9
- import { hasExportModifier, convertTypeParameters } from "../../helpers.js";
10
- import { convertProperty } from "./properties.js";
11
- import { convertMethod } from "./methods.js";
12
- import {
13
- convertConstructor,
14
- extractParameterProperties,
15
- } from "./constructors.js";
16
-
17
- /**
18
- * Convert a single class member
19
- */
20
- const convertClassMember = (
21
- node: ts.ClassElement,
22
- checker: ts.TypeChecker,
23
- superClass: ts.ExpressionWithTypeArguments | undefined,
24
- constructorParams?: ts.NodeArray<ts.ParameterDeclaration>
25
- ): IrClassMember | null => {
26
- if (ts.isPropertyDeclaration(node)) {
27
- return convertProperty(node, checker, superClass);
28
- }
29
-
30
- if (ts.isMethodDeclaration(node)) {
31
- return convertMethod(node, checker, superClass);
32
- }
33
-
34
- if (ts.isConstructorDeclaration(node)) {
35
- return convertConstructor(node, checker, constructorParams);
36
- }
37
-
38
- return null;
39
- };
40
-
41
- /**
42
- * Filter members to only include those declared directly on this class
43
- */
44
- const filterOwnMembers = (
45
- node: ts.ClassDeclaration,
46
- checker: ts.TypeChecker
47
- ): readonly ts.ClassElement[] => {
48
- return node.members.filter((m) => {
49
- // Always include constructors and methods declared on this class
50
- if (ts.isConstructorDeclaration(m) || ts.isMethodDeclaration(m)) {
51
- return true;
52
- }
53
- // For properties, only include if they're declared directly on this class
54
- if (ts.isPropertyDeclaration(m)) {
55
- // Check if this property has a declaration on this specific class node
56
- const symbol = checker.getSymbolAtLocation(m.name);
57
- if (!symbol) return true; // Include if we can't determine
58
- const declarations = symbol.getDeclarations() || [];
59
- // Only include if this exact node is in the declarations
60
- return declarations.some((d) => d === m);
61
- }
62
- return true;
63
- });
64
- };
65
-
66
- /**
67
- * Deduplicate members by name, keeping first occurrence
68
- */
69
- const deduplicateMembers = (
70
- members: readonly IrClassMember[]
71
- ): readonly IrClassMember[] => {
72
- const seenNames = new Set<string>();
73
- return members.filter((member) => {
74
- if (member.kind === "constructorDeclaration") {
75
- return true; // Always include constructor
76
- }
77
- const name =
78
- member.kind === "propertyDeclaration" ||
79
- member.kind === "methodDeclaration"
80
- ? member.name
81
- : null;
82
- if (!name) return true;
83
- if (seenNames.has(name)) {
84
- return false; // Skip duplicate
85
- }
86
- seenNames.add(name);
87
- return true;
88
- });
89
- };
90
-
91
- /**
92
- * Check if a type reference is the struct marker
93
- */
94
- const isStructMarker = (
95
- typeRef: ts.ExpressionWithTypeArguments,
96
- checker: ts.TypeChecker
97
- ): boolean => {
98
- const symbol = checker.getSymbolAtLocation(typeRef.expression);
99
- return symbol?.escapedName === "struct" || symbol?.escapedName === "Struct";
100
- };
101
-
102
- /**
103
- * Convert class declaration to IR
104
- */
105
- export const convertClassDeclaration = (
106
- node: ts.ClassDeclaration,
107
- checker: ts.TypeChecker
108
- ): IrClassDeclaration | null => {
109
- if (!node.name) return null;
110
-
111
- const superClass = node.heritageClauses?.find(
112
- (h) => h.token === ts.SyntaxKind.ExtendsKeyword
113
- )?.types[0];
114
-
115
- // Detect struct marker in implements clause
116
- let isStruct = false;
117
- const implementsClause = node.heritageClauses?.find(
118
- (h) => h.token === ts.SyntaxKind.ImplementsKeyword
119
- );
120
- const implementsTypes =
121
- implementsClause?.types
122
- .filter((t) => {
123
- if (isStructMarker(t, checker)) {
124
- isStruct = true;
125
- return false; // Remove marker from implements
126
- }
127
- return true;
128
- })
129
- .map((t) => convertType(t, checker)) ?? [];
130
-
131
- // Extract parameter properties from constructor
132
- const constructor = node.members.find(ts.isConstructorDeclaration);
133
- const parameterProperties = extractParameterProperties(constructor, checker);
134
-
135
- // Filter to only include members declared directly on this class (not inherited)
136
- const ownMembers = filterOwnMembers(node, checker);
137
-
138
- const convertedMembers = ownMembers
139
- .map((m) =>
140
- convertClassMember(m, checker, superClass, constructor?.parameters)
141
- )
142
- .filter((m): m is IrClassMember => m !== null);
143
-
144
- // Deduplicate members by name (keep first occurrence)
145
- // Parameter properties should take precedence over regular properties with same name
146
- const allMembers = [...parameterProperties, ...convertedMembers];
147
- const deduplicatedMembers = deduplicateMembers(allMembers);
148
-
149
- // Filter out __brand property if this is a struct
150
- const finalMembers = isStruct
151
- ? deduplicatedMembers.filter(
152
- (m) => m.kind !== "propertyDeclaration" || m.name !== "__brand"
153
- )
154
- : deduplicatedMembers;
155
-
156
- return {
157
- kind: "classDeclaration",
158
- name: node.name.text,
159
- typeParameters: convertTypeParameters(node.typeParameters, checker),
160
- superClass: superClass ? convertExpression(superClass, checker) : undefined,
161
- implements: implementsTypes,
162
- members: finalMembers,
163
- isExported: hasExportModifier(node),
164
- isStruct,
165
- };
166
- };
@@ -1,116 +0,0 @@
1
- /**
2
- * Override detection for class members
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { getMetadataRegistry } from "../registry.js";
7
-
8
- export type OverrideInfo = {
9
- readonly isOverride: boolean;
10
- readonly isShadow: boolean;
11
- };
12
-
13
- /**
14
- * Check if a method/property should be marked as override based on base class metadata
15
- */
16
- export const detectOverride = (
17
- memberName: string,
18
- memberKind: "method" | "property",
19
- superClass: ts.ExpressionWithTypeArguments | undefined,
20
- checker: ts.TypeChecker,
21
- parameterTypes?: readonly string[]
22
- ): OverrideInfo => {
23
- if (!superClass) {
24
- return { isOverride: false, isShadow: false };
25
- }
26
-
27
- // Resolve the base class type
28
- const baseType = checker.getTypeAtLocation(superClass.expression);
29
- const baseSymbol = baseType.getSymbol();
30
-
31
- if (!baseSymbol) {
32
- return { isOverride: false, isShadow: false };
33
- }
34
-
35
- // Get fully-qualified name for .NET types
36
- const qualifiedName = checker.getFullyQualifiedName(baseSymbol);
37
-
38
- // Check if this is a .NET type (starts with "System." or other .NET namespaces)
39
- const isDotNetType =
40
- qualifiedName.startsWith("System.") ||
41
- qualifiedName.startsWith("Microsoft.") ||
42
- qualifiedName.startsWith("Tsonic.Runtime.");
43
-
44
- if (isDotNetType) {
45
- return detectDotNetOverride(
46
- memberName,
47
- memberKind,
48
- qualifiedName,
49
- parameterTypes
50
- );
51
- } else {
52
- return detectTypeScriptOverride(memberName, memberKind, baseSymbol);
53
- }
54
- };
55
-
56
- /**
57
- * Detect override for .NET base classes using metadata
58
- */
59
- const detectDotNetOverride = (
60
- memberName: string,
61
- memberKind: "method" | "property",
62
- qualifiedName: string,
63
- parameterTypes?: readonly string[]
64
- ): OverrideInfo => {
65
- const metadata = getMetadataRegistry();
66
-
67
- if (memberKind === "method" && parameterTypes) {
68
- const signature = `${memberName}(${parameterTypes.join(",")})`;
69
- const isVirtual = metadata.isVirtualMember(qualifiedName, signature);
70
- const isSealed = metadata.isSealedMember(qualifiedName, signature);
71
- return { isOverride: isVirtual && !isSealed, isShadow: !isVirtual };
72
- } else if (memberKind === "property") {
73
- // For properties, check without parameters
74
- const isVirtual = metadata.isVirtualMember(qualifiedName, memberName);
75
- const isSealed = metadata.isSealedMember(qualifiedName, memberName);
76
- return { isOverride: isVirtual && !isSealed, isShadow: !isVirtual };
77
- }
78
-
79
- return { isOverride: false, isShadow: false };
80
- };
81
-
82
- /**
83
- * Detect override for TypeScript base classes
84
- */
85
- const detectTypeScriptOverride = (
86
- memberName: string,
87
- memberKind: "method" | "property",
88
- baseSymbol: ts.Symbol
89
- ): OverrideInfo => {
90
- const baseDeclarations = baseSymbol.getDeclarations();
91
-
92
- if (!baseDeclarations || baseDeclarations.length === 0) {
93
- return { isOverride: false, isShadow: false };
94
- }
95
-
96
- for (const baseDecl of baseDeclarations) {
97
- if (ts.isClassDeclaration(baseDecl)) {
98
- // Check if base class has this member
99
- const baseMember = baseDecl.members.find((m) => {
100
- if (memberKind === "method" && ts.isMethodDeclaration(m)) {
101
- return ts.isIdentifier(m.name) && m.name.text === memberName;
102
- } else if (memberKind === "property" && ts.isPropertyDeclaration(m)) {
103
- return ts.isIdentifier(m.name) && m.name.text === memberName;
104
- }
105
- return false;
106
- });
107
-
108
- if (baseMember) {
109
- // In TypeScript, all methods can be overridden unless final (not supported in TS)
110
- return { isOverride: true, isShadow: false };
111
- }
112
- }
113
- }
114
-
115
- return { isOverride: false, isShadow: false };
116
- };
@@ -1,63 +0,0 @@
1
- /**
2
- * Property member conversion
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrClassMember } from "../../../../types.js";
7
- import { convertExpression } from "../../../../expression-converter.js";
8
- import { convertType, inferType } from "../../../../type-converter.js";
9
- import {
10
- hasStaticModifier,
11
- hasReadonlyModifier,
12
- getAccessibility,
13
- } from "../../helpers.js";
14
- import { detectOverride } from "./override-detection.js";
15
-
16
- /**
17
- * Get the IR type for a property declaration.
18
- * Uses explicit annotation if present, otherwise infers from TypeChecker.
19
- * C# requires explicit types for class fields (no 'var').
20
- */
21
- const getPropertyType = (
22
- node: ts.PropertyDeclaration,
23
- checker: ts.TypeChecker
24
- ) => {
25
- // If there's an explicit type annotation, use it
26
- if (node.type) {
27
- return convertType(node.type, checker);
28
- }
29
- // Infer type from checker (always needed for class fields)
30
- return inferType(node, checker);
31
- };
32
-
33
- /**
34
- * Convert property declaration to IR
35
- */
36
- export const convertProperty = (
37
- node: ts.PropertyDeclaration,
38
- checker: ts.TypeChecker,
39
- superClass: ts.ExpressionWithTypeArguments | undefined
40
- ): IrClassMember => {
41
- const memberName = ts.isIdentifier(node.name) ? node.name.text : "[computed]";
42
-
43
- const overrideInfo = detectOverride(
44
- memberName,
45
- "property",
46
- superClass,
47
- checker
48
- );
49
-
50
- return {
51
- kind: "propertyDeclaration",
52
- name: memberName,
53
- type: getPropertyType(node, checker),
54
- initializer: node.initializer
55
- ? convertExpression(node.initializer, checker)
56
- : undefined,
57
- isStatic: hasStaticModifier(node),
58
- isReadonly: hasReadonlyModifier(node),
59
- accessibility: getAccessibility(node),
60
- isOverride: overrideInfo.isOverride ? true : undefined,
61
- isShadow: overrideInfo.isShadow ? true : undefined,
62
- };
63
- };
@@ -1,29 +0,0 @@
1
- /**
2
- * Enum declaration converter
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrEnumDeclaration } from "../../../types.js";
7
- import { convertExpression } from "../../../expression-converter.js";
8
- import { hasExportModifier } from "../helpers.js";
9
-
10
- /**
11
- * Convert enum declaration
12
- */
13
- export const convertEnumDeclaration = (
14
- node: ts.EnumDeclaration,
15
- checker: ts.TypeChecker
16
- ): IrEnumDeclaration => {
17
- return {
18
- kind: "enumDeclaration",
19
- name: node.name.text,
20
- members: node.members.map((m) => ({
21
- kind: "enumMember" as const,
22
- name: ts.isIdentifier(m.name) ? m.name.text : "[computed]",
23
- initializer: m.initializer
24
- ? convertExpression(m.initializer, checker)
25
- : undefined,
26
- })),
27
- isExported: hasExportModifier(node),
28
- };
29
- };
@@ -1,39 +0,0 @@
1
- /**
2
- * Function declaration converter
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrFunctionDeclaration } from "../../../types.js";
7
- import { convertType } from "../../../type-converter.js";
8
- import { convertBlockStatement } from "../control.js";
9
- import {
10
- hasExportModifier,
11
- convertTypeParameters,
12
- convertParameters,
13
- } from "../helpers.js";
14
-
15
- /**
16
- * Convert function declaration
17
- */
18
- export const convertFunctionDeclaration = (
19
- node: ts.FunctionDeclaration,
20
- checker: ts.TypeChecker
21
- ): IrFunctionDeclaration | null => {
22
- if (!node.name) return null;
23
-
24
- return {
25
- kind: "functionDeclaration",
26
- name: node.name.text,
27
- typeParameters: convertTypeParameters(node.typeParameters, checker),
28
- parameters: convertParameters(node.parameters, checker),
29
- returnType: node.type ? convertType(node.type, checker) : undefined,
30
- body: node.body
31
- ? convertBlockStatement(node.body, checker)
32
- : { kind: "blockStatement", statements: [] },
33
- isAsync: !!node.modifiers?.some(
34
- (m) => m.kind === ts.SyntaxKind.AsyncKeyword
35
- ),
36
- isGenerator: !!node.asteriskToken,
37
- isExported: hasExportModifier(node),
38
- };
39
- };
@@ -1,131 +0,0 @@
1
- /**
2
- * Interface declaration converter
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrInterfaceDeclaration, IrInterfaceMember } from "../../../types.js";
7
- import { convertType } from "../../../type-converter.js";
8
- import {
9
- hasExportModifier,
10
- hasReadonlyModifier,
11
- convertTypeParameters,
12
- convertParameters,
13
- } from "../helpers.js";
14
-
15
- /**
16
- * Convert interface member
17
- */
18
- export const convertInterfaceMember = (
19
- node: ts.TypeElement,
20
- checker: ts.TypeChecker
21
- ): IrInterfaceMember | null => {
22
- if (ts.isPropertySignature(node) && node.type) {
23
- return {
24
- kind: "propertySignature",
25
- name:
26
- node.name && ts.isIdentifier(node.name) ? node.name.text : "[computed]",
27
- type: convertType(node.type, checker),
28
- isOptional: !!node.questionToken,
29
- isReadonly: hasReadonlyModifier(node),
30
- };
31
- }
32
-
33
- if (ts.isMethodSignature(node)) {
34
- return {
35
- kind: "methodSignature",
36
- name:
37
- node.name && ts.isIdentifier(node.name) ? node.name.text : "[computed]",
38
- typeParameters: convertTypeParameters(node.typeParameters, checker),
39
- parameters: convertParameters(node.parameters, checker),
40
- returnType: node.type ? convertType(node.type, checker) : undefined,
41
- };
42
- }
43
-
44
- return null;
45
- };
46
-
47
- /**
48
- * Check if a type reference is the struct marker
49
- */
50
- const isStructMarker = (
51
- typeRef: ts.ExpressionWithTypeArguments,
52
- checker: ts.TypeChecker
53
- ): boolean => {
54
- const symbol = checker.getSymbolAtLocation(typeRef.expression);
55
- return symbol?.escapedName === "struct" || symbol?.escapedName === "Struct";
56
- };
57
-
58
- /**
59
- * Check if an interface declaration IS the struct marker itself (should be filtered out)
60
- */
61
- const isMarkerInterface = (node: ts.InterfaceDeclaration): boolean => {
62
- const name = node.name.text;
63
- if (name !== "struct" && name !== "Struct") {
64
- return false;
65
- }
66
-
67
- // Check if it has only the __brand property
68
- const members = node.members;
69
- if (members.length !== 1) {
70
- return false;
71
- }
72
-
73
- const member = members[0];
74
- if (!member || !ts.isPropertySignature(member)) {
75
- return false;
76
- }
77
-
78
- const memberName =
79
- member.name && ts.isIdentifier(member.name) ? member.name.text : "";
80
- return memberName === "__brand";
81
- };
82
-
83
- /**
84
- * Convert interface declaration
85
- * Returns null for marker interfaces that should be filtered out
86
- */
87
- export const convertInterfaceDeclaration = (
88
- node: ts.InterfaceDeclaration,
89
- checker: ts.TypeChecker
90
- ): IrInterfaceDeclaration | null => {
91
- // Filter out marker interfaces completely
92
- if (isMarkerInterface(node)) {
93
- return null;
94
- }
95
- // Detect struct marker in extends clause
96
- let isStruct = false;
97
- const extendsClause = node.heritageClauses?.find(
98
- (h) => h.token === ts.SyntaxKind.ExtendsKeyword
99
- );
100
- const extendsTypes =
101
- extendsClause?.types
102
- .filter((t) => {
103
- if (isStructMarker(t, checker)) {
104
- isStruct = true;
105
- return false; // Remove marker from extends
106
- }
107
- return true;
108
- })
109
- .map((t) => convertType(t, checker)) ?? [];
110
-
111
- const allMembers = node.members
112
- .map((m) => convertInterfaceMember(m, checker))
113
- .filter((m): m is IrInterfaceMember => m !== null);
114
-
115
- // Filter out __brand property if this is a struct
116
- const finalMembers = isStruct
117
- ? allMembers.filter(
118
- (m) => m.kind !== "propertySignature" || m.name !== "__brand"
119
- )
120
- : allMembers;
121
-
122
- return {
123
- kind: "interfaceDeclaration",
124
- name: node.name.text,
125
- typeParameters: convertTypeParameters(node.typeParameters, checker),
126
- extends: extendsTypes,
127
- members: finalMembers,
128
- isExported: hasExportModifier(node),
129
- isStruct,
130
- };
131
- };
@@ -1,25 +0,0 @@
1
- /**
2
- * Type alias declaration converter
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrTypeAliasDeclaration } from "../../../types.js";
7
- import { convertType } from "../../../type-converter.js";
8
- import { hasExportModifier, convertTypeParameters } from "../helpers.js";
9
-
10
- /**
11
- * Convert type alias declaration
12
- */
13
- export const convertTypeAliasDeclaration = (
14
- node: ts.TypeAliasDeclaration,
15
- checker: ts.TypeChecker
16
- ): IrTypeAliasDeclaration => {
17
- return {
18
- kind: "typeAliasDeclaration",
19
- name: node.name.text,
20
- typeParameters: convertTypeParameters(node.typeParameters, checker),
21
- type: convertType(node.type, checker),
22
- isExported: hasExportModifier(node),
23
- isStruct: false, // Type aliases are not structs by default
24
- };
25
- };
@@ -1,60 +0,0 @@
1
- /**
2
- * Variable declaration converter
3
- */
4
-
5
- import * as ts from "typescript";
6
- import { IrVariableDeclaration } from "../../../types.js";
7
- import { convertExpression } from "../../../expression-converter.js";
8
- import {
9
- convertType,
10
- convertBindingName,
11
- inferType,
12
- } from "../../../type-converter.js";
13
- import { hasExportModifier } from "../helpers.js";
14
-
15
- /**
16
- * Get the IR type for a variable declaration.
17
- * Uses explicit annotation if present, otherwise infers from TypeChecker.
18
- */
19
- const getDeclarationType = (
20
- decl: ts.VariableDeclaration,
21
- checker: ts.TypeChecker,
22
- needsExplicitType: boolean
23
- ) => {
24
- // If there's an explicit type annotation, use it
25
- if (decl.type) {
26
- return convertType(decl.type, checker);
27
- }
28
- // If we need an explicit type (for module-level exports), infer it
29
- if (needsExplicitType) {
30
- return inferType(decl, checker);
31
- }
32
- return undefined;
33
- };
34
-
35
- /**
36
- * Convert variable statement
37
- */
38
- export const convertVariableStatement = (
39
- node: ts.VariableStatement,
40
- checker: ts.TypeChecker
41
- ): IrVariableDeclaration => {
42
- const isConst = !!(node.declarationList.flags & ts.NodeFlags.Const);
43
- const isLet = !!(node.declarationList.flags & ts.NodeFlags.Let);
44
- const declarationKind = isConst ? "const" : isLet ? "let" : "var";
45
- const isExported = hasExportModifier(node);
46
-
47
- return {
48
- kind: "variableDeclaration",
49
- declarationKind,
50
- declarations: node.declarationList.declarations.map((decl) => ({
51
- kind: "variableDeclarator",
52
- name: convertBindingName(decl.name),
53
- type: getDeclarationType(decl, checker, isExported),
54
- initializer: decl.initializer
55
- ? convertExpression(decl.initializer, checker)
56
- : undefined,
57
- })),
58
- isExported,
59
- };
60
- };
@@ -1,16 +0,0 @@
1
- /**
2
- * Declaration converters (variables, functions, classes, interfaces, enums, type aliases)
3
- * Main dispatcher - re-exports from declarations/ subdirectory
4
- */
5
-
6
- export {
7
- setMetadataRegistry,
8
- setBindingRegistry,
9
- convertVariableStatement,
10
- convertFunctionDeclaration,
11
- convertClassDeclaration,
12
- convertInterfaceDeclaration,
13
- convertInterfaceMember,
14
- convertEnumDeclaration,
15
- convertTypeAliasDeclaration,
16
- } from "./declarations/index.js";