@tsonic/emitter 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/adapter-generator.d.ts +28 -0
  3. package/dist/adapter-generator.d.ts.map +1 -0
  4. package/dist/adapter-generator.js +83 -0
  5. package/dist/adapter-generator.js.map +1 -0
  6. package/dist/array.test.d.ts +6 -0
  7. package/dist/array.test.d.ts.map +1 -0
  8. package/dist/array.test.js +274 -0
  9. package/dist/array.test.js.map +1 -0
  10. package/dist/async-investigation.test.d.ts +5 -0
  11. package/dist/async-investigation.test.d.ts.map +1 -0
  12. package/dist/async-investigation.test.js +239 -0
  13. package/dist/async-investigation.test.js.map +1 -0
  14. package/dist/constants.d.ts +15 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +22 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/core/exports.d.ts +10 -0
  19. package/dist/core/exports.d.ts.map +1 -0
  20. package/dist/core/exports.js +28 -0
  21. package/dist/core/exports.js.map +1 -0
  22. package/dist/core/imports.d.ts +26 -0
  23. package/dist/core/imports.d.ts.map +1 -0
  24. package/dist/core/imports.js +189 -0
  25. package/dist/core/imports.js.map +1 -0
  26. package/dist/core/imports.test.d.ts +6 -0
  27. package/dist/core/imports.test.d.ts.map +1 -0
  28. package/dist/core/imports.test.js +76 -0
  29. package/dist/core/imports.test.js.map +1 -0
  30. package/dist/core/index.d.ts +9 -0
  31. package/dist/core/index.d.ts.map +1 -0
  32. package/{src/core/index.ts → dist/core/index.js} +1 -1
  33. package/dist/core/index.js.map +1 -0
  34. package/dist/core/module-emitter/assembly.d.ts +21 -0
  35. package/dist/core/module-emitter/assembly.d.ts.map +1 -0
  36. package/dist/core/module-emitter/assembly.js +58 -0
  37. package/dist/core/module-emitter/assembly.js.map +1 -0
  38. package/dist/core/module-emitter/header.d.ts +10 -0
  39. package/dist/core/module-emitter/header.d.ts.map +1 -0
  40. package/dist/core/module-emitter/header.js +13 -0
  41. package/dist/core/module-emitter/header.js.map +1 -0
  42. package/{src/core/module-emitter/index.ts → dist/core/module-emitter/index.d.ts} +3 -10
  43. package/dist/core/module-emitter/index.d.ts.map +1 -0
  44. package/dist/core/module-emitter/index.js +10 -0
  45. package/dist/core/module-emitter/index.js.map +1 -0
  46. package/dist/core/module-emitter/namespace.d.ts +14 -0
  47. package/dist/core/module-emitter/namespace.d.ts.map +1 -0
  48. package/dist/core/module-emitter/namespace.js +26 -0
  49. package/dist/core/module-emitter/namespace.js.map +1 -0
  50. package/dist/core/module-emitter/orchestrator.d.ts +10 -0
  51. package/dist/core/module-emitter/orchestrator.d.ts.map +1 -0
  52. package/dist/core/module-emitter/orchestrator.js +58 -0
  53. package/dist/core/module-emitter/orchestrator.js.map +1 -0
  54. package/dist/core/module-emitter/separation.d.ts +14 -0
  55. package/dist/core/module-emitter/separation.d.ts.map +1 -0
  56. package/dist/core/module-emitter/separation.js +27 -0
  57. package/dist/core/module-emitter/separation.js.map +1 -0
  58. package/dist/core/module-emitter/static-container.d.ts +18 -0
  59. package/dist/core/module-emitter/static-container.d.ts.map +1 -0
  60. package/dist/core/module-emitter/static-container.js +49 -0
  61. package/dist/core/module-emitter/static-container.js.map +1 -0
  62. package/dist/core/module-emitter.d.ts +6 -0
  63. package/dist/core/module-emitter.d.ts.map +1 -0
  64. package/{src/core/module-emitter.ts → dist/core/module-emitter.js} +1 -1
  65. package/dist/core/module-emitter.js.map +1 -0
  66. package/dist/core/module-emitter.test.d.ts +6 -0
  67. package/dist/core/module-emitter.test.d.ts.map +1 -0
  68. package/dist/core/module-emitter.test.js +147 -0
  69. package/dist/core/module-emitter.test.js.map +1 -0
  70. package/dist/core/module-map.d.ts +35 -0
  71. package/dist/core/module-map.d.ts.map +1 -0
  72. package/dist/core/module-map.js +170 -0
  73. package/dist/core/module-map.js.map +1 -0
  74. package/dist/core/options.d.ts +9 -0
  75. package/dist/core/options.d.ts.map +1 -0
  76. package/dist/core/options.js +14 -0
  77. package/dist/core/options.js.map +1 -0
  78. package/dist/core/type-params.d.ts +9 -0
  79. package/dist/core/type-params.d.ts.map +1 -0
  80. package/dist/core/type-params.js +31 -0
  81. package/dist/core/type-params.js.map +1 -0
  82. package/dist/emitter-types/context.d.ts +29 -0
  83. package/dist/emitter-types/context.d.ts.map +1 -0
  84. package/dist/emitter-types/context.js +68 -0
  85. package/dist/emitter-types/context.js.map +1 -0
  86. package/dist/emitter-types/core.d.ts +129 -0
  87. package/dist/emitter-types/core.d.ts.map +1 -0
  88. package/dist/emitter-types/core.js +5 -0
  89. package/dist/emitter-types/core.js.map +1 -0
  90. package/dist/emitter-types/csharp-types.d.ts +27 -0
  91. package/dist/emitter-types/csharp-types.d.ts.map +1 -0
  92. package/dist/emitter-types/csharp-types.js +5 -0
  93. package/dist/emitter-types/csharp-types.js.map +1 -0
  94. package/dist/emitter-types/formatting.d.ts +9 -0
  95. package/dist/emitter-types/formatting.d.ts.map +1 -0
  96. package/dist/emitter-types/formatting.js +11 -0
  97. package/dist/emitter-types/formatting.js.map +1 -0
  98. package/dist/emitter-types/fqn.d.ts +53 -0
  99. package/dist/emitter-types/fqn.d.ts.map +1 -0
  100. package/dist/emitter-types/fqn.js +65 -0
  101. package/dist/emitter-types/fqn.js.map +1 -0
  102. package/dist/emitter-types/index.d.ts +9 -0
  103. package/dist/emitter-types/index.d.ts.map +1 -0
  104. package/dist/emitter-types/index.js +7 -0
  105. package/dist/emitter-types/index.js.map +1 -0
  106. package/dist/emitter.d.ts +27 -0
  107. package/dist/emitter.d.ts.map +1 -0
  108. package/dist/emitter.js +80 -0
  109. package/dist/emitter.js.map +1 -0
  110. package/dist/expression-emitter.d.ts +15 -0
  111. package/dist/expression-emitter.d.ts.map +1 -0
  112. package/dist/expression-emitter.js +67 -0
  113. package/dist/expression-emitter.js.map +1 -0
  114. package/dist/expressions/access.d.ts +12 -0
  115. package/dist/expressions/access.d.ts.map +1 -0
  116. package/dist/expressions/access.js +77 -0
  117. package/dist/expressions/access.js.map +1 -0
  118. package/dist/expressions/calls.d.ts +18 -0
  119. package/dist/expressions/calls.d.ts.map +1 -0
  120. package/dist/expressions/calls.js +207 -0
  121. package/dist/expressions/calls.js.map +1 -0
  122. package/dist/expressions/collections.d.ts +24 -0
  123. package/dist/expressions/collections.d.ts.map +1 -0
  124. package/dist/expressions/collections.js +254 -0
  125. package/dist/expressions/collections.js.map +1 -0
  126. package/dist/expressions/functions.d.ts +18 -0
  127. package/dist/expressions/functions.d.ts.map +1 -0
  128. package/dist/expressions/functions.js +60 -0
  129. package/dist/expressions/functions.js.map +1 -0
  130. package/dist/expressions/identifiers.d.ts +22 -0
  131. package/dist/expressions/identifiers.d.ts.map +1 -0
  132. package/dist/expressions/identifiers.js +99 -0
  133. package/dist/expressions/identifiers.js.map +1 -0
  134. package/dist/expressions/index.d.ts +12 -0
  135. package/dist/expressions/index.d.ts.map +1 -0
  136. package/{src/expressions/index.ts → dist/expressions/index.js} +3 -21
  137. package/dist/expressions/index.js.map +1 -0
  138. package/dist/expressions/index.test.d.ts +6 -0
  139. package/dist/expressions/index.test.d.ts.map +1 -0
  140. package/dist/expressions/index.test.js +480 -0
  141. package/dist/expressions/index.test.js.map +1 -0
  142. package/dist/expressions/literals.d.ts +31 -0
  143. package/dist/expressions/literals.d.ts.map +1 -0
  144. package/dist/expressions/literals.js +116 -0
  145. package/dist/expressions/literals.js.map +1 -0
  146. package/dist/expressions/operators.d.ts +52 -0
  147. package/dist/expressions/operators.d.ts.map +1 -0
  148. package/dist/expressions/operators.js +166 -0
  149. package/dist/expressions/operators.js.map +1 -0
  150. package/dist/expressions/other.d.ts +24 -0
  151. package/dist/expressions/other.d.ts.map +1 -0
  152. package/dist/expressions/other.js +43 -0
  153. package/dist/expressions/other.js.map +1 -0
  154. package/dist/generator-exchange.d.ts +11 -0
  155. package/dist/generator-exchange.d.ts.map +1 -0
  156. package/dist/generator-exchange.js +92 -0
  157. package/dist/generator-exchange.js.map +1 -0
  158. package/dist/generator.test.d.ts +6 -0
  159. package/dist/generator.test.d.ts.map +1 -0
  160. package/dist/generator.test.js +177 -0
  161. package/dist/generator.test.js.map +1 -0
  162. package/dist/golden-tests/config-parser.d.ts +9 -0
  163. package/dist/golden-tests/config-parser.d.ts.map +1 -0
  164. package/dist/golden-tests/config-parser.js +57 -0
  165. package/dist/golden-tests/config-parser.js.map +1 -0
  166. package/dist/golden-tests/discovery.d.ts +9 -0
  167. package/dist/golden-tests/discovery.d.ts.map +1 -0
  168. package/dist/golden-tests/discovery.js +51 -0
  169. package/dist/golden-tests/discovery.js.map +1 -0
  170. package/{src/golden-tests/index.ts → dist/golden-tests/index.d.ts} +1 -1
  171. package/dist/golden-tests/index.d.ts.map +1 -0
  172. package/dist/golden-tests/index.js +9 -0
  173. package/dist/golden-tests/index.js.map +1 -0
  174. package/dist/golden-tests/registration.d.ts +9 -0
  175. package/dist/golden-tests/registration.d.ts.map +1 -0
  176. package/dist/golden-tests/registration.js +23 -0
  177. package/dist/golden-tests/registration.js.map +1 -0
  178. package/dist/golden-tests/runner.d.ts +13 -0
  179. package/dist/golden-tests/runner.d.ts.map +1 -0
  180. package/dist/golden-tests/runner.js +99 -0
  181. package/dist/golden-tests/runner.js.map +1 -0
  182. package/dist/golden-tests/tree-builder.d.ts +9 -0
  183. package/dist/golden-tests/tree-builder.d.ts.map +1 -0
  184. package/dist/golden-tests/tree-builder.js +35 -0
  185. package/dist/golden-tests/tree-builder.js.map +1 -0
  186. package/dist/golden-tests/types.d.ts +19 -0
  187. package/dist/golden-tests/types.d.ts.map +1 -0
  188. package/dist/golden-tests/types.js +5 -0
  189. package/dist/golden-tests/types.js.map +1 -0
  190. package/dist/golden.test.d.ts +11 -0
  191. package/dist/golden.test.d.ts.map +1 -0
  192. package/{src/golden.test.ts → dist/golden.test.js} +15 -20
  193. package/dist/golden.test.js.map +1 -0
  194. package/dist/hierarchical-bindings.test.d.ts +6 -0
  195. package/dist/hierarchical-bindings.test.d.ts.map +1 -0
  196. package/dist/hierarchical-bindings.test.js +194 -0
  197. package/dist/hierarchical-bindings.test.js.map +1 -0
  198. package/dist/index.d.ts +9 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/{src/index.ts → dist/index.js} +2 -7
  201. package/dist/index.js.map +1 -0
  202. package/dist/integration.test.d.ts +6 -0
  203. package/dist/integration.test.d.ts.map +1 -0
  204. package/dist/integration.test.js +234 -0
  205. package/dist/integration.test.js.map +1 -0
  206. package/dist/specialization/call-site-rewriting.test.d.ts +6 -0
  207. package/dist/specialization/call-site-rewriting.test.d.ts.map +1 -0
  208. package/dist/specialization/call-site-rewriting.test.js +92 -0
  209. package/dist/specialization/call-site-rewriting.test.js.map +1 -0
  210. package/dist/specialization/collection/expressions.d.ts +10 -0
  211. package/dist/specialization/collection/expressions.d.ts.map +1 -0
  212. package/dist/specialization/collection/expressions.js +142 -0
  213. package/dist/specialization/collection/expressions.js.map +1 -0
  214. package/dist/specialization/collection/index.d.ts +7 -0
  215. package/dist/specialization/collection/index.d.ts.map +1 -0
  216. package/{src/specialization/collection/index.ts → dist/specialization/collection/index.js} +1 -1
  217. package/dist/specialization/collection/index.js.map +1 -0
  218. package/dist/specialization/collection/orchestrator.d.ts +11 -0
  219. package/dist/specialization/collection/orchestrator.d.ts.map +1 -0
  220. package/dist/specialization/collection/orchestrator.js +18 -0
  221. package/dist/specialization/collection/orchestrator.js.map +1 -0
  222. package/dist/specialization/collection/statements.d.ts +10 -0
  223. package/dist/specialization/collection/statements.d.ts.map +1 -0
  224. package/dist/specialization/collection/statements.js +75 -0
  225. package/dist/specialization/collection/statements.js.map +1 -0
  226. package/dist/specialization/collection.d.ts +6 -0
  227. package/dist/specialization/collection.d.ts.map +1 -0
  228. package/dist/specialization/collection.js +6 -0
  229. package/dist/specialization/collection.js.map +1 -0
  230. package/dist/specialization/generation.d.ts +11 -0
  231. package/dist/specialization/generation.d.ts.map +1 -0
  232. package/dist/specialization/generation.js +137 -0
  233. package/dist/specialization/generation.js.map +1 -0
  234. package/dist/specialization/generic-classes.test.d.ts +6 -0
  235. package/dist/specialization/generic-classes.test.d.ts.map +1 -0
  236. package/dist/specialization/generic-classes.test.js +55 -0
  237. package/dist/specialization/generic-classes.test.js.map +1 -0
  238. package/dist/specialization/generic-functions.test.d.ts +6 -0
  239. package/dist/specialization/generic-functions.test.d.ts.map +1 -0
  240. package/dist/specialization/generic-functions.test.js +275 -0
  241. package/dist/specialization/generic-functions.test.js.map +1 -0
  242. package/dist/specialization/helpers.d.ts +13 -0
  243. package/dist/specialization/helpers.d.ts.map +1 -0
  244. package/dist/specialization/helpers.js +33 -0
  245. package/dist/specialization/helpers.js.map +1 -0
  246. package/dist/specialization/index.d.ts +10 -0
  247. package/dist/specialization/index.d.ts.map +1 -0
  248. package/{src/specialization/index.ts → dist/specialization/index.js} +3 -17
  249. package/dist/specialization/index.js.map +1 -0
  250. package/dist/specialization/interfaces.test.d.ts +6 -0
  251. package/dist/specialization/interfaces.test.d.ts.map +1 -0
  252. package/dist/specialization/interfaces.test.js +139 -0
  253. package/dist/specialization/interfaces.test.js.map +1 -0
  254. package/dist/specialization/naming.d.ts +13 -0
  255. package/dist/specialization/naming.d.ts.map +1 -0
  256. package/dist/specialization/naming.js +25 -0
  257. package/dist/specialization/naming.js.map +1 -0
  258. package/dist/specialization/substitution.d.ts +17 -0
  259. package/dist/specialization/substitution.d.ts.map +1 -0
  260. package/dist/specialization/substitution.js +150 -0
  261. package/dist/specialization/substitution.js.map +1 -0
  262. package/dist/specialization/type-aliases.test.d.ts +6 -0
  263. package/dist/specialization/type-aliases.test.d.ts.map +1 -0
  264. package/dist/specialization/type-aliases.test.js +124 -0
  265. package/dist/specialization/type-aliases.test.js.map +1 -0
  266. package/dist/specialization/types.d.ts +14 -0
  267. package/dist/specialization/types.d.ts.map +1 -0
  268. package/dist/specialization/types.js +5 -0
  269. package/dist/specialization/types.js.map +1 -0
  270. package/{src/specialization-generator.ts → dist/specialization-generator.d.ts} +4 -15
  271. package/dist/specialization-generator.d.ts.map +1 -0
  272. package/dist/specialization-generator.js +11 -0
  273. package/dist/specialization-generator.js.map +1 -0
  274. package/dist/statement-emitter.d.ts +13 -0
  275. package/dist/statement-emitter.d.ts.map +1 -0
  276. package/dist/statement-emitter.js +67 -0
  277. package/dist/statement-emitter.js.map +1 -0
  278. package/dist/statements/blocks.d.ts +40 -0
  279. package/dist/statements/blocks.d.ts.map +1 -0
  280. package/dist/statements/blocks.js +86 -0
  281. package/dist/statements/blocks.js.map +1 -0
  282. package/{src/statements/classes/helpers.ts → dist/statements/classes/helpers.d.ts} +2 -3
  283. package/dist/statements/classes/helpers.d.ts.map +1 -0
  284. package/dist/statements/classes/helpers.js +8 -0
  285. package/dist/statements/classes/helpers.js.map +1 -0
  286. package/dist/statements/classes/index.d.ts +9 -0
  287. package/dist/statements/classes/index.d.ts.map +1 -0
  288. package/{src/statements/classes/index.ts → dist/statements/classes/index.js} +2 -6
  289. package/dist/statements/classes/index.js.map +1 -0
  290. package/dist/statements/classes/inline-types.d.ts +21 -0
  291. package/dist/statements/classes/inline-types.d.ts.map +1 -0
  292. package/dist/statements/classes/inline-types.js +50 -0
  293. package/dist/statements/classes/inline-types.js.map +1 -0
  294. package/dist/statements/classes/members/constructors.d.ts +12 -0
  295. package/dist/statements/classes/members/constructors.d.ts.map +1 -0
  296. package/dist/statements/classes/members/constructors.js +90 -0
  297. package/dist/statements/classes/members/constructors.js.map +1 -0
  298. package/dist/statements/classes/members/index.d.ts +8 -0
  299. package/dist/statements/classes/members/index.d.ts.map +1 -0
  300. package/{src/statements/classes/members/index.ts → dist/statements/classes/members/index.js} +1 -1
  301. package/dist/statements/classes/members/index.js.map +1 -0
  302. package/dist/statements/classes/members/methods.d.ts +12 -0
  303. package/dist/statements/classes/members/methods.d.ts.map +1 -0
  304. package/dist/statements/classes/members/methods.js +100 -0
  305. package/dist/statements/classes/members/methods.js.map +1 -0
  306. package/dist/statements/classes/members/orchestrator.d.ts +10 -0
  307. package/dist/statements/classes/members/orchestrator.d.ts.map +1 -0
  308. package/dist/statements/classes/members/orchestrator.js +24 -0
  309. package/dist/statements/classes/members/orchestrator.js.map +1 -0
  310. package/dist/statements/classes/members/properties.d.ts +12 -0
  311. package/dist/statements/classes/members/properties.d.ts.map +1 -0
  312. package/dist/statements/classes/members/properties.js +48 -0
  313. package/dist/statements/classes/members/properties.js.map +1 -0
  314. package/dist/statements/classes/members.d.ts +6 -0
  315. package/dist/statements/classes/members.d.ts.map +1 -0
  316. package/{src/statements/classes/members.ts → dist/statements/classes/members.js} +1 -1
  317. package/dist/statements/classes/members.js.map +1 -0
  318. package/dist/statements/classes/parameters.d.ts +10 -0
  319. package/dist/statements/classes/parameters.d.ts.map +1 -0
  320. package/dist/statements/classes/parameters.js +50 -0
  321. package/dist/statements/classes/parameters.js.map +1 -0
  322. package/dist/statements/classes/properties.d.ts +11 -0
  323. package/dist/statements/classes/properties.d.ts.map +1 -0
  324. package/dist/statements/classes/properties.js +74 -0
  325. package/dist/statements/classes/properties.js.map +1 -0
  326. package/dist/statements/classes.d.ts +6 -0
  327. package/dist/statements/classes.d.ts.map +1 -0
  328. package/dist/statements/classes.js +6 -0
  329. package/dist/statements/classes.js.map +1 -0
  330. package/dist/statements/control/conditionals.d.ts +18 -0
  331. package/dist/statements/control/conditionals.d.ts.map +1 -0
  332. package/dist/statements/control/conditionals.js +98 -0
  333. package/dist/statements/control/conditionals.js.map +1 -0
  334. package/dist/statements/control/exceptions.d.ts +18 -0
  335. package/dist/statements/control/exceptions.d.ts.map +1 -0
  336. package/dist/statements/control/exceptions.js +38 -0
  337. package/dist/statements/control/exceptions.js.map +1 -0
  338. package/dist/statements/control/index.d.ts +7 -0
  339. package/dist/statements/control/index.d.ts.map +1 -0
  340. package/{src/statements/control/index.ts → dist/statements/control/index.js} +2 -6
  341. package/dist/statements/control/index.js.map +1 -0
  342. package/dist/statements/control/loops.d.ts +29 -0
  343. package/dist/statements/control/loops.d.ts.map +1 -0
  344. package/dist/statements/control/loops.js +186 -0
  345. package/dist/statements/control/loops.js.map +1 -0
  346. package/dist/statements/control.d.ts +6 -0
  347. package/dist/statements/control.d.ts.map +1 -0
  348. package/dist/statements/control.js +6 -0
  349. package/dist/statements/control.js.map +1 -0
  350. package/dist/statements/declarations/classes.d.ts +12 -0
  351. package/dist/statements/declarations/classes.d.ts.map +1 -0
  352. package/dist/statements/declarations/classes.js +61 -0
  353. package/dist/statements/declarations/classes.js.map +1 -0
  354. package/dist/statements/declarations/enums.d.ts +12 -0
  355. package/dist/statements/declarations/enums.d.ts.map +1 -0
  356. package/dist/statements/declarations/enums.js +25 -0
  357. package/dist/statements/declarations/enums.js.map +1 -0
  358. package/dist/statements/declarations/functions.d.ts +12 -0
  359. package/dist/statements/declarations/functions.d.ts.map +1 -0
  360. package/dist/statements/declarations/functions.js +110 -0
  361. package/dist/statements/declarations/functions.js.map +1 -0
  362. package/dist/statements/declarations/index.d.ts +10 -0
  363. package/dist/statements/declarations/index.d.ts.map +1 -0
  364. package/{src/statements/declarations/index.ts → dist/statements/declarations/index.js} +1 -1
  365. package/dist/statements/declarations/index.js.map +1 -0
  366. package/dist/statements/declarations/interfaces.d.ts +12 -0
  367. package/dist/statements/declarations/interfaces.d.ts.map +1 -0
  368. package/dist/statements/declarations/interfaces.js +85 -0
  369. package/dist/statements/declarations/interfaces.js.map +1 -0
  370. package/dist/statements/declarations/structs.test.d.ts +5 -0
  371. package/dist/statements/declarations/structs.test.d.ts.map +1 -0
  372. package/dist/statements/declarations/structs.test.js +165 -0
  373. package/dist/statements/declarations/structs.test.js.map +1 -0
  374. package/dist/statements/declarations/type-aliases.d.ts +12 -0
  375. package/dist/statements/declarations/type-aliases.d.ts.map +1 -0
  376. package/dist/statements/declarations/type-aliases.js +80 -0
  377. package/dist/statements/declarations/type-aliases.js.map +1 -0
  378. package/dist/statements/declarations/variables.d.ts +12 -0
  379. package/dist/statements/declarations/variables.d.ts.map +1 -0
  380. package/dist/statements/declarations/variables.js +120 -0
  381. package/dist/statements/declarations/variables.js.map +1 -0
  382. package/dist/statements/declarations.d.ts +6 -0
  383. package/dist/statements/declarations.d.ts.map +1 -0
  384. package/dist/statements/declarations.js +6 -0
  385. package/dist/statements/declarations.js.map +1 -0
  386. package/dist/statements/index.d.ts +8 -0
  387. package/dist/statements/index.d.ts.map +1 -0
  388. package/dist/statements/index.js +12 -0
  389. package/dist/statements/index.js.map +1 -0
  390. package/dist/statements/index.test.d.ts +6 -0
  391. package/dist/statements/index.test.d.ts.map +1 -0
  392. package/dist/statements/index.test.js +248 -0
  393. package/dist/statements/index.test.js.map +1 -0
  394. package/dist/tests/emitter/expression-emission.test.d.ts +6 -0
  395. package/dist/tests/emitter/expression-emission.test.d.ts.map +1 -0
  396. package/dist/tests/emitter/expression-emission.test.js +322 -0
  397. package/dist/tests/emitter/expression-emission.test.js.map +1 -0
  398. package/dist/tests/emitter/import-handling.test.d.ts +6 -0
  399. package/dist/tests/emitter/import-handling.test.d.ts.map +1 -0
  400. package/dist/tests/emitter/import-handling.test.js +76 -0
  401. package/dist/tests/emitter/import-handling.test.js.map +1 -0
  402. package/dist/tests/emitter/module-generation.test.d.ts +6 -0
  403. package/dist/tests/emitter/module-generation.test.d.ts.map +1 -0
  404. package/dist/tests/emitter/module-generation.test.js +147 -0
  405. package/dist/tests/emitter/module-generation.test.js.map +1 -0
  406. package/dist/tests/emitter/statement-emission.test.d.ts +6 -0
  407. package/dist/tests/emitter/statement-emission.test.d.ts.map +1 -0
  408. package/dist/tests/emitter/statement-emission.test.js +138 -0
  409. package/dist/tests/emitter/statement-emission.test.js.map +1 -0
  410. package/dist/tests/emitter/type-emission.test.d.ts +6 -0
  411. package/dist/tests/emitter/type-emission.test.d.ts.map +1 -0
  412. package/dist/tests/emitter/type-emission.test.js +109 -0
  413. package/dist/tests/emitter/type-emission.test.js.map +1 -0
  414. package/dist/tests/generics/call-site-rewriting.test.d.ts +6 -0
  415. package/dist/tests/generics/call-site-rewriting.test.d.ts.map +1 -0
  416. package/dist/tests/generics/call-site-rewriting.test.js +92 -0
  417. package/dist/tests/generics/call-site-rewriting.test.js.map +1 -0
  418. package/dist/tests/generics/generic-classes.test.d.ts +6 -0
  419. package/dist/tests/generics/generic-classes.test.d.ts.map +1 -0
  420. package/dist/tests/generics/generic-classes.test.js +55 -0
  421. package/dist/tests/generics/generic-classes.test.js.map +1 -0
  422. package/dist/tests/generics/generic-functions.test.d.ts +6 -0
  423. package/dist/tests/generics/generic-functions.test.d.ts.map +1 -0
  424. package/dist/tests/generics/generic-functions.test.js +275 -0
  425. package/dist/tests/generics/generic-functions.test.js.map +1 -0
  426. package/dist/tests/generics/interfaces.test.d.ts +6 -0
  427. package/dist/tests/generics/interfaces.test.d.ts.map +1 -0
  428. package/dist/tests/generics/interfaces.test.js +139 -0
  429. package/dist/tests/generics/interfaces.test.js.map +1 -0
  430. package/dist/tests/generics/type-aliases.test.d.ts +6 -0
  431. package/dist/tests/generics/type-aliases.test.d.ts.map +1 -0
  432. package/dist/tests/generics/type-aliases.test.js +124 -0
  433. package/dist/tests/generics/type-aliases.test.js.map +1 -0
  434. package/dist/tests/hierarchical-bindings-full-pipeline.test.d.ts +6 -0
  435. package/dist/tests/hierarchical-bindings-full-pipeline.test.d.ts.map +1 -0
  436. package/dist/tests/hierarchical-bindings-full-pipeline.test.js +202 -0
  437. package/dist/tests/hierarchical-bindings-full-pipeline.test.js.map +1 -0
  438. package/dist/tests/ref-out-parameters.test.d.ts +5 -0
  439. package/dist/tests/ref-out-parameters.test.d.ts.map +1 -0
  440. package/dist/tests/ref-out-parameters.test.js +136 -0
  441. package/dist/tests/ref-out-parameters.test.js.map +1 -0
  442. package/dist/tests/structs/struct-emission.test.d.ts +5 -0
  443. package/dist/tests/structs/struct-emission.test.d.ts.map +1 -0
  444. package/dist/tests/structs/struct-emission.test.js +165 -0
  445. package/dist/tests/structs/struct-emission.test.js.map +1 -0
  446. package/dist/type-assertion.test.d.ts +6 -0
  447. package/dist/type-assertion.test.d.ts.map +1 -0
  448. package/dist/type-assertion.test.js +133 -0
  449. package/dist/type-assertion.test.js.map +1 -0
  450. package/dist/type-emitter.d.ts +6 -0
  451. package/dist/type-emitter.d.ts.map +1 -0
  452. package/dist/type-emitter.js +6 -0
  453. package/dist/type-emitter.js.map +1 -0
  454. package/dist/types/arrays.d.ts +12 -0
  455. package/dist/types/arrays.d.ts.map +1 -0
  456. package/dist/types/arrays.js +15 -0
  457. package/dist/types/arrays.js.map +1 -0
  458. package/dist/types/dictionaries.d.ts +17 -0
  459. package/dist/types/dictionaries.d.ts.map +1 -0
  460. package/dist/types/dictionaries.js +37 -0
  461. package/dist/types/dictionaries.js.map +1 -0
  462. package/dist/types/emitter.d.ts +10 -0
  463. package/dist/types/emitter.d.ts.map +1 -0
  464. package/dist/types/emitter.js +53 -0
  465. package/dist/types/emitter.js.map +1 -0
  466. package/dist/types/functions.d.ts +12 -0
  467. package/dist/types/functions.d.ts.map +1 -0
  468. package/dist/types/functions.js +34 -0
  469. package/dist/types/functions.js.map +1 -0
  470. package/dist/types/index.d.ts +14 -0
  471. package/dist/types/index.d.ts.map +1 -0
  472. package/{src/types/index.ts → dist/types/index.js} +1 -1
  473. package/dist/types/index.js.map +1 -0
  474. package/dist/types/index.test.d.ts +6 -0
  475. package/dist/types/index.test.d.ts.map +1 -0
  476. package/dist/types/index.test.js +109 -0
  477. package/dist/types/index.test.js.map +1 -0
  478. package/dist/types/intersections.d.ts +12 -0
  479. package/dist/types/intersections.d.ts.map +1 -0
  480. package/dist/types/intersections.js +13 -0
  481. package/dist/types/intersections.js.map +1 -0
  482. package/dist/types/literals.d.ts +12 -0
  483. package/dist/types/literals.d.ts.map +1 -0
  484. package/dist/types/literals.js +20 -0
  485. package/dist/types/literals.js.map +1 -0
  486. package/{src/types/objects.ts → dist/types/objects.d.ts} +4 -11
  487. package/dist/types/objects.d.ts.map +1 -0
  488. package/dist/types/objects.js +19 -0
  489. package/dist/types/objects.js.map +1 -0
  490. package/dist/types/parameters.d.ts +15 -0
  491. package/dist/types/parameters.d.ts.map +1 -0
  492. package/dist/types/parameters.js +69 -0
  493. package/dist/types/parameters.js.map +1 -0
  494. package/dist/types/parameters.test.d.ts +5 -0
  495. package/dist/types/parameters.test.d.ts.map +1 -0
  496. package/dist/types/parameters.test.js +135 -0
  497. package/dist/types/parameters.test.js.map +1 -0
  498. package/dist/types/primitives.d.ts +12 -0
  499. package/dist/types/primitives.d.ts.map +1 -0
  500. package/dist/types/primitives.js +17 -0
  501. package/dist/types/primitives.js.map +1 -0
  502. package/dist/types/references.d.ts +14 -0
  503. package/dist/types/references.d.ts.map +1 -0
  504. package/dist/types/references.js +154 -0
  505. package/dist/types/references.js.map +1 -0
  506. package/dist/types/unions.d.ts +12 -0
  507. package/dist/types/unions.d.ts.map +1 -0
  508. package/dist/types/unions.js +45 -0
  509. package/dist/types/unions.js.map +1 -0
  510. package/dist/types/unions.test.d.ts +6 -0
  511. package/dist/types/unions.test.d.ts.map +1 -0
  512. package/dist/types/unions.test.js +367 -0
  513. package/dist/types/unions.test.js.map +1 -0
  514. package/dist/types.d.ts +7 -0
  515. package/dist/types.d.ts.map +1 -0
  516. package/dist/types.js +6 -0
  517. package/dist/types.js.map +1 -0
  518. package/dist/union.test.d.ts +6 -0
  519. package/dist/union.test.d.ts.map +1 -0
  520. package/dist/union.test.js +367 -0
  521. package/dist/union.test.js.map +1 -0
  522. package/package.json +5 -2
  523. package/scripts/update-golden-tests.ts +0 -119
  524. package/src/adapter-generator.ts +0 -112
  525. package/src/array.test.ts +0 -301
  526. package/src/constants.ts +0 -32
  527. package/src/core/exports.ts +0 -36
  528. package/src/core/imports.test.ts +0 -83
  529. package/src/core/imports.ts +0 -243
  530. package/src/core/module-emitter/assembly.ts +0 -83
  531. package/src/core/module-emitter/header.ts +0 -19
  532. package/src/core/module-emitter/namespace.ts +0 -39
  533. package/src/core/module-emitter/orchestrator.ts +0 -98
  534. package/src/core/module-emitter/separation.ts +0 -41
  535. package/src/core/module-emitter/static-container.ts +0 -75
  536. package/src/core/module-emitter.test.ts +0 -154
  537. package/src/core/module-map.ts +0 -218
  538. package/src/core/options.ts +0 -16
  539. package/src/core/type-params.ts +0 -34
  540. package/src/emitter-types/context.ts +0 -91
  541. package/src/emitter-types/core.ts +0 -138
  542. package/src/emitter-types/csharp-types.ts +0 -42
  543. package/src/emitter-types/formatting.ts +0 -13
  544. package/src/emitter-types/fqn.ts +0 -81
  545. package/src/emitter-types/index.ts +0 -31
  546. package/src/emitter.ts +0 -107
  547. package/src/expression-emitter.ts +0 -112
  548. package/src/expressions/access.ts +0 -104
  549. package/src/expressions/calls.ts +0 -264
  550. package/src/expressions/collections.ts +0 -354
  551. package/src/expressions/functions.ts +0 -71
  552. package/src/expressions/identifiers.ts +0 -125
  553. package/src/expressions/index.test.ts +0 -515
  554. package/src/expressions/literals.ts +0 -138
  555. package/src/expressions/operators.ts +0 -211
  556. package/src/expressions/other.ts +0 -63
  557. package/src/generator-exchange.ts +0 -120
  558. package/src/generator.test.ts +0 -193
  559. package/src/golden-tests/config-parser.ts +0 -67
  560. package/src/golden-tests/discovery.ts +0 -61
  561. package/src/golden-tests/registration.ts +0 -26
  562. package/src/golden-tests/runner.ts +0 -131
  563. package/src/golden-tests/tree-builder.ts +0 -43
  564. package/src/golden-tests/types.ts +0 -21
  565. package/src/hierarchical-bindings.test.ts +0 -258
  566. package/src/integration.test.ts +0 -303
  567. package/src/specialization/call-site-rewriting.test.ts +0 -99
  568. package/src/specialization/collection/expressions.ts +0 -184
  569. package/src/specialization/collection/orchestrator.ts +0 -25
  570. package/src/specialization/collection/statements.ts +0 -91
  571. package/src/specialization/collection.ts +0 -10
  572. package/src/specialization/generation.ts +0 -189
  573. package/src/specialization/generic-classes.test.ts +0 -59
  574. package/src/specialization/generic-functions.test.ts +0 -292
  575. package/src/specialization/helpers.ts +0 -39
  576. package/src/specialization/interfaces.test.ts +0 -151
  577. package/src/specialization/naming.ts +0 -34
  578. package/src/specialization/substitution.ts +0 -186
  579. package/src/specialization/type-aliases.test.ts +0 -134
  580. package/src/specialization/types.ts +0 -19
  581. package/src/statement-emitter.ts +0 -117
  582. package/src/statements/blocks.ts +0 -115
  583. package/src/statements/classes/inline-types.ts +0 -79
  584. package/src/statements/classes/members/constructors.ts +0 -123
  585. package/src/statements/classes/members/methods.ts +0 -137
  586. package/src/statements/classes/members/orchestrator.ts +0 -33
  587. package/src/statements/classes/members/properties.ts +0 -62
  588. package/src/statements/classes/parameters.ts +0 -69
  589. package/src/statements/classes/properties.ts +0 -95
  590. package/src/statements/classes.ts +0 -14
  591. package/src/statements/control/conditionals.ts +0 -134
  592. package/src/statements/control/exceptions.ts +0 -59
  593. package/src/statements/control/loops.ts +0 -250
  594. package/src/statements/control.ts +0 -14
  595. package/src/statements/declarations/classes.ts +0 -89
  596. package/src/statements/declarations/enums.ts +0 -32
  597. package/src/statements/declarations/functions.ts +0 -147
  598. package/src/statements/declarations/interfaces.ts +0 -116
  599. package/src/statements/declarations/structs.test.ts +0 -182
  600. package/src/statements/declarations/type-aliases.ts +0 -104
  601. package/src/statements/declarations/variables.ts +0 -159
  602. package/src/statements/declarations.ts +0 -13
  603. package/src/statements/index.test.ts +0 -258
  604. package/src/statements/index.ts +0 -43
  605. package/src/type-assertion.test.ts +0 -143
  606. package/src/type-emitter.ts +0 -18
  607. package/src/types/arrays.ts +0 -21
  608. package/src/types/dictionaries.ts +0 -52
  609. package/src/types/emitter.ts +0 -76
  610. package/src/types/functions.ts +0 -45
  611. package/src/types/index.test.ts +0 -116
  612. package/src/types/intersections.ts +0 -19
  613. package/src/types/literals.ts +0 -26
  614. package/src/types/parameters.test.ts +0 -146
  615. package/src/types/parameters.ts +0 -95
  616. package/src/types/primitives.ts +0 -24
  617. package/src/types/references.ts +0 -187
  618. package/src/types/unions.test.ts +0 -397
  619. package/src/types/unions.ts +0 -62
  620. package/src/types.ts +0 -33
  621. package/testcases/README.md +0 -213
  622. package/testcases/arrays/basic/ArrayLiteral.ts +0 -4
  623. package/testcases/arrays/basic/config.yaml +0 -1
  624. package/testcases/arrays/destructuring/ArrayDestructure.ts +0 -4
  625. package/testcases/arrays/destructuring/config.yaml +0 -1
  626. package/testcases/arrays/methods/ArrayMethods.ts +0 -6
  627. package/testcases/arrays/methods/config.yaml +0 -1
  628. package/testcases/arrays/multidimensional/MultiDimensional.ts +0 -10
  629. package/testcases/arrays/multidimensional/config.yaml +0 -1
  630. package/testcases/arrays/spread/ArraySpread.ts +0 -3
  631. package/testcases/arrays/spread/config.yaml +0 -1
  632. package/testcases/async/basic/AsyncFunction.ts +0 -5
  633. package/testcases/async/basic/config.yaml +0 -1
  634. package/testcases/classes/abstract/AbstractClasses.ts +0 -53
  635. package/testcases/classes/abstract/config.yaml +0 -1
  636. package/testcases/classes/basic/Person.ts +0 -12
  637. package/testcases/classes/basic/config.yaml +0 -1
  638. package/testcases/classes/constructor/User.ts +0 -11
  639. package/testcases/classes/constructor/config.yaml +0 -1
  640. package/testcases/classes/field-inference/Counter.ts +0 -11
  641. package/testcases/classes/field-inference/config.yaml +0 -1
  642. package/testcases/classes/inheritance/Inheritance.ts +0 -24
  643. package/testcases/classes/inheritance/config.yaml +0 -1
  644. package/testcases/classes/static-members/MathHelper.ts +0 -12
  645. package/testcases/classes/static-members/config.yaml +0 -1
  646. package/testcases/control-flow/error-handling/ErrorHandling.ts +0 -13
  647. package/testcases/control-flow/error-handling/config.yaml +0 -1
  648. package/testcases/control-flow/loops/Loops.ts +0 -21
  649. package/testcases/control-flow/loops/config.yaml +0 -1
  650. package/testcases/control-flow/switch/SwitchStatement.ts +0 -15
  651. package/testcases/control-flow/switch/config.yaml +0 -1
  652. package/testcases/edge-cases/complex-expressions/ComplexExpressions.ts +0 -10
  653. package/testcases/edge-cases/complex-expressions/config.yaml +0 -1
  654. package/testcases/edge-cases/nested-scopes/NestedScopes.ts +0 -10
  655. package/testcases/edge-cases/nested-scopes/config.yaml +0 -1
  656. package/testcases/edge-cases/shadowing/Shadowing.ts +0 -16
  657. package/testcases/edge-cases/shadowing/config.yaml +0 -1
  658. package/testcases/functions/arrow/ArrowFunction.ts +0 -5
  659. package/testcases/functions/arrow/config.yaml +0 -1
  660. package/testcases/functions/basic/Greet.ts +0 -3
  661. package/testcases/functions/basic/config.yaml +0 -1
  662. package/testcases/functions/closures/Closures.ts +0 -11
  663. package/testcases/functions/closures/config.yaml +0 -1
  664. package/testcases/functions/default-params/DefaultParams.ts +0 -7
  665. package/testcases/functions/default-params/config.yaml +0 -1
  666. package/testcases/functions/rest-params/RestParams.ts +0 -7
  667. package/testcases/functions/rest-params/config.yaml +0 -1
  668. package/testcases/functions/type-guards/TypeGuards.ts +0 -52
  669. package/testcases/functions/type-guards/config.yaml +0 -1
  670. package/testcases/operators/logical/LogicalOperators.ts +0 -11
  671. package/testcases/operators/logical/config.yaml +0 -1
  672. package/testcases/operators/nullish-coalescing/NullishCoalescing.ts +0 -7
  673. package/testcases/operators/nullish-coalescing/config.yaml +0 -1
  674. package/testcases/operators/optional-chaining/OptionalChaining.ts +0 -15
  675. package/testcases/operators/optional-chaining/config.yaml +0 -1
  676. package/testcases/real-world/advanced-generics/advanced-generics.ts +0 -116
  677. package/testcases/real-world/advanced-generics/config.yaml +0 -1
  678. package/testcases/real-world/async-ops/async-ops.ts +0 -67
  679. package/testcases/real-world/async-ops/config.yaml +0 -1
  680. package/testcases/real-world/business-logic/business-logic.ts +0 -215
  681. package/testcases/real-world/business-logic/config.yaml +0 -1
  682. package/testcases/real-world/calculator/calculator.ts +0 -29
  683. package/testcases/real-world/calculator/config.yaml +0 -1
  684. package/testcases/real-world/data-structures/config.yaml +0 -1
  685. package/testcases/real-world/data-structures/data-structures.ts +0 -133
  686. package/testcases/real-world/functional/config.yaml +0 -1
  687. package/testcases/real-world/functional/functional.ts +0 -116
  688. package/testcases/real-world/shapes/config.yaml +0 -1
  689. package/testcases/real-world/shapes/shapes.ts +0 -87
  690. package/testcases/real-world/string-utils/config.yaml +0 -1
  691. package/testcases/real-world/string-utils/string-utils.ts +0 -47
  692. package/testcases/real-world/todo-list/config.yaml +0 -1
  693. package/testcases/real-world/todo-list/todo-list.ts +0 -52
  694. package/testcases/real-world/type-guards/config.yaml +0 -1
  695. package/testcases/real-world/type-guards/type-guards.ts +0 -71
  696. package/testcases/structs/basic/Point.ts +0 -9
  697. package/testcases/structs/basic/config.yaml +0 -1
  698. package/testcases/types/conditional/ConditionalTypes.ts +0 -35
  699. package/testcases/types/conditional/config.yaml +0 -1
  700. package/testcases/types/constants/ModuleConstants.ts +0 -6
  701. package/testcases/types/constants/config.yaml +0 -1
  702. package/testcases/types/generics/Generics.ts +0 -15
  703. package/testcases/types/generics/config.yaml +0 -1
  704. package/testcases/types/interfaces/Interfaces.ts +0 -14
  705. package/testcases/types/interfaces/config.yaml +0 -1
  706. package/testcases/types/mapped/MappedTypes.ts +0 -27
  707. package/testcases/types/mapped/config.yaml +0 -1
  708. package/testcases/types/tuples-intersections/TuplesAndIntersections.ts +0 -46
  709. package/testcases/types/tuples-intersections/config.yaml +0 -1
  710. package/testcases/types/unions/UnionTypes.ts +0 -11
  711. package/testcases/types/unions/config.yaml +0 -1
  712. package/tsconfig.json +0 -14
@@ -1,218 +0,0 @@
1
- /**
2
- * Module map for resolving cross-file imports
3
- */
4
-
5
- import { IrModule, Diagnostic } from "@tsonic/frontend";
6
- import type {
7
- ModuleIdentity,
8
- ModuleMap,
9
- ExportSource,
10
- ExportMap,
11
- } from "../emitter-types/core.js";
12
-
13
- // Re-export types for backward compatibility
14
- export type { ModuleIdentity, ModuleMap, ExportSource, ExportMap };
15
-
16
- /**
17
- * Normalize a file path for use as module map key
18
- * - Convert backslashes to forward slashes
19
- * - Remove .ts extension if present
20
- * - Normalize . and .. segments
21
- */
22
- export const canonicalizeFilePath = (filePath: string): string => {
23
- // Normalize slashes
24
- let normalized = filePath.replace(/\\/g, "/");
25
-
26
- // Remove .ts extension
27
- if (normalized.endsWith(".ts")) {
28
- normalized = normalized.slice(0, -3);
29
- }
30
-
31
- // Split into segments and resolve . and ..
32
- const segments: string[] = [];
33
- for (const segment of normalized.split("/")) {
34
- if (segment === "" || segment === ".") {
35
- continue; // Skip empty and current directory
36
- } else if (segment === "..") {
37
- segments.pop(); // Go up one directory
38
- } else {
39
- segments.push(segment);
40
- }
41
- }
42
-
43
- return segments.join("/");
44
- };
45
-
46
- /**
47
- * Result of building module map
48
- */
49
- export type ModuleMapResult =
50
- | {
51
- readonly ok: true;
52
- readonly value: ModuleMap;
53
- readonly exportMap: ExportMap;
54
- }
55
- | { readonly ok: false; readonly errors: readonly Diagnostic[] };
56
-
57
- /**
58
- * Build module map from IR modules.
59
- * Returns an error if any two files in the same namespace have the same
60
- * normalized class name (e.g., api-client.ts and apiclient.ts both map to "apiclient").
61
- */
62
- export const buildModuleMap = (
63
- modules: readonly IrModule[]
64
- ): ModuleMapResult => {
65
- const map = new Map<string, ModuleIdentity>();
66
- const errors: Diagnostic[] = [];
67
-
68
- // Group modules by namespace to detect class name collisions
69
- const byNamespace = new Map<string, IrModule[]>();
70
- for (const module of modules) {
71
- const existing = byNamespace.get(module.namespace) ?? [];
72
- byNamespace.set(module.namespace, [...existing, module]);
73
- }
74
-
75
- // Check for collisions within each namespace
76
- for (const [namespace, nsModules] of byNamespace) {
77
- const byClassName = new Map<string, IrModule[]>();
78
- for (const module of nsModules) {
79
- const existing = byClassName.get(module.className) ?? [];
80
- byClassName.set(module.className, [...existing, module]);
81
- }
82
-
83
- // Report collisions
84
- for (const [className, colliding] of byClassName) {
85
- if (colliding.length > 1) {
86
- const fileNames = colliding
87
- .map((m) => `'${m.filePath.split("/").pop()}'`)
88
- .join(" and ");
89
- errors.push({
90
- code: "TSN9001",
91
- message: `File name collision after normalization: ${fileNames} both map to class '${className}' in namespace '${namespace}'. Rename one file.`,
92
- severity: "error",
93
- });
94
- }
95
- }
96
- }
97
-
98
- if (errors.length > 0) {
99
- return { ok: false, errors };
100
- }
101
-
102
- // Build the map
103
- for (const module of modules) {
104
- const canonicalPath = canonicalizeFilePath(module.filePath);
105
- map.set(canonicalPath, {
106
- namespace: module.namespace,
107
- className: module.className,
108
- filePath: canonicalPath,
109
- });
110
- }
111
-
112
- // Build the export map
113
- const exportMap = buildExportMap(modules);
114
-
115
- return { ok: true, value: map, exportMap };
116
- };
117
-
118
- /**
119
- * Build export map from IR modules.
120
- * Maps (modulePath, exportName) -> actual source for re-exports.
121
- */
122
- const buildExportMap = (modules: readonly IrModule[]): ExportMap => {
123
- const exportMap = new Map<string, ExportSource>();
124
-
125
- // First pass: collect all re-exports
126
- for (const module of modules) {
127
- const modulePath = canonicalizeFilePath(module.filePath);
128
-
129
- for (const exp of module.exports) {
130
- if (exp.kind === "reexport") {
131
- // Resolve the source module path
132
- const sourcePath = resolveImportPath(module.filePath, exp.fromModule);
133
- const key = `${modulePath}:${exp.name}`;
134
- exportMap.set(key, {
135
- sourceFile: sourcePath,
136
- sourceName: exp.originalName,
137
- });
138
- }
139
- }
140
- }
141
-
142
- // Second pass: resolve transitive re-exports
143
- // Keep resolving until no changes (handles chains like A re-exports from B re-exports from C)
144
- const resolveTransitive = (): boolean => {
145
- let changed = false;
146
-
147
- for (const [key, source] of exportMap) {
148
- const transitiveKey = `${source.sourceFile}:${source.sourceName}`;
149
- const transitiveSource = exportMap.get(transitiveKey);
150
-
151
- if (transitiveSource) {
152
- // This is a transitive re-export - update to point to the actual source
153
- exportMap.set(key, transitiveSource);
154
- changed = true;
155
- }
156
- }
157
-
158
- return changed;
159
- };
160
-
161
- // Resolve transitive re-exports (max 10 iterations to prevent infinite loops)
162
- for (let i = 0; i < 10 && resolveTransitive(); i++) {
163
- // Keep resolving
164
- }
165
-
166
- return exportMap;
167
- };
168
-
169
- /**
170
- * Resolve a relative import path to a canonical file path
171
- */
172
- export const resolveImportPath = (
173
- currentFilePath: string,
174
- importSource: string
175
- ): string => {
176
- // Normalize current file path
177
- const currentCanonical = canonicalizeFilePath(currentFilePath);
178
-
179
- // Get directory of current file
180
- const lastSlash = currentCanonical.lastIndexOf("/");
181
- const currentDir = lastSlash >= 0 ? currentCanonical.slice(0, lastSlash) : "";
182
-
183
- // Normalize import source
184
- let source = importSource.replace(/\\/g, "/");
185
-
186
- // Remove .ts extension if present
187
- if (source.endsWith(".ts")) {
188
- source = source.slice(0, -3);
189
- }
190
-
191
- // Resolve relative path
192
- let resolvedPath: string;
193
- if (source.startsWith("./")) {
194
- // Same directory or subdirectory
195
- resolvedPath = currentDir
196
- ? `${currentDir}/${source.slice(2)}`
197
- : source.slice(2);
198
- } else if (source.startsWith("../")) {
199
- // Parent directory
200
- const parts = currentDir.split("/");
201
- let remaining = source;
202
- while (remaining.startsWith("../")) {
203
- parts.pop();
204
- remaining = remaining.slice(3);
205
- }
206
- resolvedPath =
207
- parts.length > 0 ? `${parts.join("/")}/${remaining}` : remaining;
208
- } else if (source.startsWith("/")) {
209
- // Absolute path (remove leading slash)
210
- resolvedPath = source.slice(1);
211
- } else {
212
- // No ./ or ../, treat as same directory
213
- resolvedPath = currentDir ? `${currentDir}/${source}` : source;
214
- }
215
-
216
- // Canonicalize the result
217
- return canonicalizeFilePath(resolvedPath);
218
- };
@@ -1,16 +0,0 @@
1
- /**
2
- * Emitter options and defaults
3
- */
4
-
5
- import { EmitterOptions } from "../types.js";
6
-
7
- /**
8
- * Default emitter options
9
- */
10
- export const defaultOptions: EmitterOptions = {
11
- rootNamespace: "MyApp",
12
- includeSourceMaps: false,
13
- indent: 4,
14
- maxLineLength: 120,
15
- includeTimestamp: true,
16
- };
@@ -1,34 +0,0 @@
1
- /**
2
- * Type parameter collection
3
- */
4
-
5
- import { IrModule, IrTypeParameter } from "@tsonic/frontend";
6
-
7
- /**
8
- * Collect all type parameters from declarations in a module
9
- */
10
- export const collectTypeParameters = (
11
- module: IrModule
12
- ): readonly IrTypeParameter[] => {
13
- const typeParams: IrTypeParameter[] = [];
14
-
15
- for (const stmt of module.body) {
16
- if (stmt.kind === "functionDeclaration" && stmt.typeParameters) {
17
- typeParams.push(...stmt.typeParameters);
18
- } else if (stmt.kind === "classDeclaration" && stmt.typeParameters) {
19
- typeParams.push(...stmt.typeParameters);
20
- // Also collect from class members
21
- for (const member of stmt.members) {
22
- if (member.kind === "methodDeclaration" && member.typeParameters) {
23
- typeParams.push(...member.typeParameters);
24
- }
25
- }
26
- } else if (stmt.kind === "interfaceDeclaration" && stmt.typeParameters) {
27
- typeParams.push(...stmt.typeParameters);
28
- } else if (stmt.kind === "typeAliasDeclaration" && stmt.typeParameters) {
29
- typeParams.push(...stmt.typeParameters);
30
- }
31
- }
32
-
33
- return typeParams;
34
- };
@@ -1,91 +0,0 @@
1
- /**
2
- * Context creation and manipulation functions
3
- */
4
-
5
- import { EmitterOptions, EmitterContext } from "./core.js";
6
- import {
7
- loadLibraries,
8
- buildBindingsRegistry,
9
- } from "@tsonic/frontend/metadata/index.js";
10
-
11
- /**
12
- * Create a new emitter context with default values
13
- */
14
- export const createContext = (options: EmitterOptions): EmitterContext => {
15
- // Load metadata and bindings from library directories
16
- let metadata: EmitterContext["metadata"] = undefined;
17
- let bindingsRegistry: EmitterContext["bindingsRegistry"] = undefined;
18
-
19
- if (options.libraries && options.libraries.length > 0) {
20
- const librariesResult = loadLibraries(options.libraries);
21
- if (librariesResult.ok) {
22
- metadata = librariesResult.value.metadata;
23
- bindingsRegistry = buildBindingsRegistry(librariesResult.value.bindings);
24
- } else {
25
- // TODO: Report diagnostics from librariesResult.error
26
- // Need to integrate diagnostic reporting infrastructure
27
- console.warn(
28
- "[Tsonic] Failed to load libraries:",
29
- librariesResult.error.map((d) => d.message).join(", ")
30
- );
31
- }
32
- }
33
-
34
- return {
35
- indentLevel: 0,
36
- options,
37
- isStatic: false,
38
- isAsync: false,
39
- metadata,
40
- bindingsRegistry,
41
- };
42
- };
43
-
44
- /**
45
- * Increase indentation level
46
- */
47
- export const indent = (context: EmitterContext): EmitterContext => ({
48
- ...context,
49
- indentLevel: context.indentLevel + 1,
50
- });
51
-
52
- /**
53
- * Decrease indentation level
54
- */
55
- export const dedent = (context: EmitterContext): EmitterContext => ({
56
- ...context,
57
- indentLevel: Math.max(0, context.indentLevel - 1),
58
- });
59
-
60
- /**
61
- * Set static context flag
62
- */
63
- export const withStatic = (
64
- context: EmitterContext,
65
- isStatic: boolean
66
- ): EmitterContext => ({
67
- ...context,
68
- isStatic,
69
- });
70
-
71
- /**
72
- * Set async context flag
73
- */
74
- export const withAsync = (
75
- context: EmitterContext,
76
- isAsync: boolean
77
- ): EmitterContext => ({
78
- ...context,
79
- isAsync,
80
- });
81
-
82
- /**
83
- * Set current class name in context
84
- */
85
- export const withClassName = (
86
- context: EmitterContext,
87
- className: string
88
- ): EmitterContext => ({
89
- ...context,
90
- className,
91
- });
@@ -1,138 +0,0 @@
1
- /**
2
- * Core emitter types
3
- */
4
-
5
- import type { MetadataFile } from "@tsonic/frontend/types/metadata.js";
6
- import type { TypeBinding } from "@tsonic/frontend/types/bindings.js";
7
-
8
- /**
9
- * Module identity for import resolution
10
- */
11
- export type ModuleIdentity = {
12
- readonly namespace: string;
13
- readonly className: string;
14
- readonly filePath: string;
15
- };
16
-
17
- /**
18
- * Module map for resolving cross-file imports
19
- */
20
- export type ModuleMap = ReadonlyMap<string, ModuleIdentity>;
21
-
22
- /**
23
- * Export source: where an export actually comes from
24
- * Used to resolve re-exports to their original source
25
- */
26
- export type ExportSource = {
27
- /** Canonical file path of the actual source */
28
- readonly sourceFile: string;
29
- /** Name of the export in the source file */
30
- readonly sourceName: string;
31
- };
32
-
33
- /**
34
- * Map from (moduleFilePath, exportName) to actual source
35
- * Key format: "moduleFilePath:exportName"
36
- */
37
- export type ExportMap = ReadonlyMap<string, ExportSource>;
38
-
39
- /**
40
- * Options for C# code generation
41
- */
42
- export type EmitterOptions = {
43
- /** Root namespace for the application */
44
- readonly rootNamespace: string;
45
- /** Whether to include source map comments */
46
- readonly includeSourceMaps?: boolean;
47
- /** Indentation style (spaces) */
48
- readonly indent?: number;
49
- /** Maximum line length */
50
- readonly maxLineLength?: number;
51
- /** Include timestamp in generated files */
52
- readonly includeTimestamp?: boolean;
53
- /** Whether this module is an entry point (needs Main method) */
54
- readonly isEntryPoint?: boolean;
55
- /** Entry point file path (for batch emit) */
56
- readonly entryPointPath?: string;
57
- /** External library paths (contain .metadata and .bindings directories) */
58
- readonly libraries?: readonly string[];
59
- /** Runtime mode: "js" uses Tsonic.JSRuntime extensions, "dotnet" uses pure .NET */
60
- readonly runtime?: "js" | "dotnet";
61
- /** Module map for resolving cross-file imports (populated during batch emission) */
62
- readonly moduleMap?: ModuleMap;
63
- /** Export map for resolving re-exports to actual source (populated during batch emission) */
64
- readonly exportMap?: ExportMap;
65
- };
66
-
67
- /**
68
- * Import binding information for qualifying imported identifiers.
69
- * Local module imports are always emitted as fully-qualified references
70
- * to avoid C# name ambiguity.
71
- *
72
- * All CLR name resolution is done in the frontend - the emitter just uses
73
- * the pre-computed clrName directly (no string parsing or type lookup).
74
- */
75
- export type ImportBinding = {
76
- /** Import kind: type (interface/class), value (function/variable), or namespace (import *) */
77
- readonly kind: "type" | "value" | "namespace";
78
- /**
79
- * Fully-qualified CLR name.
80
- * - For types: the type's FQN (e.g., "MultiFileTypes.models.User")
81
- * - For values/namespaces: the container class FQN (e.g., "MultiFileTypes.models.user")
82
- */
83
- readonly clrName: string;
84
- /** For value imports: the member name inside the container (e.g., "createUser") */
85
- readonly member?: string;
86
- };
87
-
88
- /**
89
- * Context passed through emission process
90
- */
91
- export type EmitterContext = {
92
- /** Current indentation level */
93
- readonly indentLevel: number;
94
- /** Options for emission */
95
- readonly options: EmitterOptions;
96
- /** Whether currently in static context */
97
- readonly isStatic: boolean;
98
- /** Whether currently in async context */
99
- readonly isAsync: boolean;
100
- /** Whether currently emitting an array index (omit .0 from integer literals) */
101
- readonly isArrayIndex?: boolean;
102
- /** Current class name (for constructor emission) */
103
- readonly className?: string;
104
- /** Whether the current class has a superclass (for virtual/override) */
105
- readonly hasSuperClass?: boolean;
106
- /** Whether the module has any inheritance (to decide virtual methods) */
107
- readonly hasInheritance?: boolean;
108
- /** Loaded .NET metadata files (for CLR type information) */
109
- readonly metadata?: ReadonlyArray<MetadataFile>;
110
- /** Registry mapping TypeScript emit names to type bindings */
111
- readonly bindingsRegistry?: ReadonlyMap<string, TypeBinding>;
112
- /** Map of local names to import binding info (for qualifying imported identifiers) */
113
- readonly importBindings?: ReadonlyMap<string, ImportBinding>;
114
- /** Set of variable names known to be int (from canonical for-loop counters) */
115
- readonly intLoopVars?: ReadonlySet<string>;
116
- };
117
-
118
- /**
119
- * Result of emitting C# code
120
- */
121
- export type EmitResult = {
122
- /** The generated C# code */
123
- readonly code: string;
124
- /** Updated context after emission */
125
- readonly context: EmitterContext;
126
- };
127
-
128
- /**
129
- * Helper type for C# code fragments
130
- */
131
- export type CSharpFragment = {
132
- /** The code fragment */
133
- readonly text: string;
134
- /** Whether this needs parentheses when used in expressions */
135
- readonly needsParens?: boolean;
136
- /** Precedence level for operator expressions */
137
- readonly precedence?: number;
138
- };
@@ -1,42 +0,0 @@
1
- /**
2
- * C# language-specific types
3
- */
4
-
5
- /**
6
- * C# access modifiers
7
- */
8
- export type CSharpAccessModifier =
9
- | "public"
10
- | "private"
11
- | "protected"
12
- | "internal"
13
- | "protected internal";
14
-
15
- /**
16
- * C# class modifiers
17
- */
18
- export type CSharpClassModifier = "static" | "abstract" | "sealed" | "partial";
19
-
20
- /**
21
- * C# method modifiers
22
- */
23
- export type CSharpMethodModifier =
24
- | "static"
25
- | "virtual"
26
- | "override"
27
- | "abstract"
28
- | "async"
29
- | "new"
30
- | "sealed";
31
-
32
- /**
33
- * Represents a C# using statement
34
- */
35
- export type CSharpUsing = {
36
- /** The namespace to import */
37
- readonly namespace: string;
38
- /** Whether this is a static import */
39
- readonly isStatic?: boolean;
40
- /** Alias for the import */
41
- readonly alias?: string;
42
- };
@@ -1,13 +0,0 @@
1
- /**
2
- * Formatting helper functions
3
- */
4
-
5
- import { EmitterContext } from "./core.js";
6
-
7
- /**
8
- * Get indentation string for current level
9
- */
10
- export const getIndent = (context: EmitterContext): string => {
11
- const spaces = context.options.indent ?? 4;
12
- return " ".repeat(spaces * context.indentLevel);
13
- };
@@ -1,81 +0,0 @@
1
- /**
2
- * Fully Qualified Name (FQN) rendering utilities
3
- *
4
- * All types and members are emitted with global:: prefix to eliminate
5
- * any ambiguity from C# using statements or namespace resolution.
6
- */
7
-
8
- /**
9
- * Render a fully qualified type name with global:: prefix
10
- * e.g., "System.Collections.Generic.List" → "global::System.Collections.Generic.List"
11
- */
12
- export const renderTypeFQN = (namespace: string, typeName: string): string => {
13
- return `global::${namespace}.${typeName}`;
14
- };
15
-
16
- /**
17
- * Render a fully qualified static member access with global:: prefix
18
- * e.g., ("System", "Console", "WriteLine") → "global::System.Console.WriteLine"
19
- */
20
- export const renderMemberFQN = (
21
- namespace: string,
22
- typeName: string,
23
- member: string
24
- ): string => {
25
- return `global::${namespace}.${typeName}.${member}`;
26
- };
27
-
28
- /**
29
- * Render a simple namespace-qualified name with global:: prefix
30
- * e.g., "System.Console" → "global::System.Console"
31
- */
32
- export const renderFQN = (qualifiedName: string): string => {
33
- return `global::${qualifiedName}`;
34
- };
35
-
36
- /**
37
- * Common fully qualified type names used throughout emission
38
- */
39
- export const FQN = {
40
- // System types
41
- Object: "global::System.Object",
42
- String: "global::System.String",
43
- Int32: "global::System.Int32",
44
- Int64: "global::System.Int64",
45
- Double: "global::System.Double",
46
- Boolean: "global::System.Boolean",
47
- Void: "void",
48
-
49
- // System.Collections.Generic
50
- List: (elementType: string) =>
51
- `global::System.Collections.Generic.List<${elementType}>`,
52
- Dictionary: (keyType: string, valueType: string) =>
53
- `global::System.Collections.Generic.Dictionary<${keyType}, ${valueType}>`,
54
- IEnumerable: (elementType: string) =>
55
- `global::System.Collections.Generic.IEnumerable<${elementType}>`,
56
-
57
- // System.Threading.Tasks
58
- Task: "global::System.Threading.Tasks.Task",
59
- TaskOf: (resultType: string) =>
60
- `global::System.Threading.Tasks.Task<${resultType}>`,
61
-
62
- // Tsonic.Runtime
63
- TsonicRuntime: {
64
- DynamicObject: "global::Tsonic.Runtime.DynamicObject",
65
- Union: (types: string) => `global::Tsonic.Runtime.Union<${types}>`,
66
- },
67
-
68
- // Tsonic.JSRuntime
69
- TsonicJSRuntime: {
70
- Array: "global::Tsonic.JSRuntime.Array",
71
- String: "global::Tsonic.JSRuntime.String",
72
- Number: "global::Tsonic.JSRuntime.Number",
73
- Math: "global::Tsonic.JSRuntime.Math",
74
- Console: "global::Tsonic.JSRuntime.Console",
75
- },
76
-
77
- // System.Func delegates
78
- Func: (typeArgs: string) => `global::System.Func<${typeArgs}>`,
79
- Action: "global::System.Action",
80
- ActionOf: (typeArgs: string) => `global::System.Action<${typeArgs}>`,
81
- } as const;
@@ -1,31 +0,0 @@
1
- /**
2
- * Emitter types - Public API
3
- */
4
-
5
- export type {
6
- EmitterOptions,
7
- EmitterContext,
8
- EmitResult,
9
- CSharpFragment,
10
- ImportBinding,
11
- ModuleIdentity,
12
- ModuleMap,
13
- ExportSource,
14
- ExportMap,
15
- } from "./core.js";
16
- export type {
17
- CSharpAccessModifier,
18
- CSharpClassModifier,
19
- CSharpMethodModifier,
20
- CSharpUsing,
21
- } from "./csharp-types.js";
22
- export {
23
- createContext,
24
- indent,
25
- dedent,
26
- withStatic,
27
- withAsync,
28
- withClassName,
29
- } from "./context.js";
30
- export { getIndent } from "./formatting.js";
31
- export { renderTypeFQN, renderMemberFQN, renderFQN, FQN } from "./fqn.js";