@tsonic/frontend 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (709) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/{src/dependency-graph.ts → dist/dependency-graph.d.ts} +3 -11
  3. package/dist/dependency-graph.d.ts.map +1 -0
  4. package/dist/dependency-graph.js +9 -0
  5. package/dist/dependency-graph.js.map +1 -0
  6. package/dist/dotnet-metadata.d.ts +71 -0
  7. package/dist/dotnet-metadata.d.ts.map +1 -0
  8. package/dist/dotnet-metadata.js +78 -0
  9. package/dist/dotnet-metadata.js.map +1 -0
  10. package/dist/graph/builder.d.ts +10 -0
  11. package/dist/graph/builder.d.ts.map +1 -0
  12. package/dist/graph/builder.js +54 -0
  13. package/dist/graph/builder.js.map +1 -0
  14. package/dist/graph/circular.d.ts +10 -0
  15. package/dist/graph/circular.d.ts.map +1 -0
  16. package/dist/graph/circular.js +40 -0
  17. package/dist/graph/circular.js.map +1 -0
  18. package/dist/graph/extraction/exports.d.ts +10 -0
  19. package/dist/graph/extraction/exports.d.ts.map +1 -0
  20. package/dist/graph/extraction/exports.js +46 -0
  21. package/dist/graph/extraction/exports.js.map +1 -0
  22. package/dist/graph/extraction/imports.d.ts +11 -0
  23. package/dist/graph/extraction/imports.d.ts.map +1 -0
  24. package/dist/graph/extraction/imports.js +63 -0
  25. package/dist/graph/extraction/imports.js.map +1 -0
  26. package/dist/graph/extraction/index.d.ts +7 -0
  27. package/dist/graph/extraction/index.d.ts.map +1 -0
  28. package/{src/graph/extraction/index.ts → dist/graph/extraction/index.js} +1 -1
  29. package/dist/graph/extraction/index.js.map +1 -0
  30. package/dist/graph/extraction/orchestrator.d.ts +11 -0
  31. package/dist/graph/extraction/orchestrator.d.ts.map +1 -0
  32. package/dist/graph/extraction/orchestrator.js +78 -0
  33. package/dist/graph/extraction/orchestrator.js.map +1 -0
  34. package/dist/graph/extraction.d.ts +6 -0
  35. package/dist/graph/extraction.d.ts.map +1 -0
  36. package/{src/graph/extraction.ts → dist/graph/extraction.js} +2 -6
  37. package/dist/graph/extraction.js.map +1 -0
  38. package/dist/graph/helpers.d.ts +17 -0
  39. package/dist/graph/helpers.d.ts.map +1 -0
  40. package/dist/graph/helpers.js +40 -0
  41. package/dist/graph/helpers.js.map +1 -0
  42. package/{src/graph/index.ts → dist/graph/index.d.ts} +3 -11
  43. package/dist/graph/index.d.ts.map +1 -0
  44. package/dist/graph/index.js +8 -0
  45. package/dist/graph/index.js.map +1 -0
  46. package/{src/graph/types.ts → dist/graph/types.d.ts} +4 -5
  47. package/dist/graph/types.d.ts.map +1 -0
  48. package/dist/graph/types.js +5 -0
  49. package/dist/graph/types.js.map +1 -0
  50. package/dist/index.d.ts +26 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +43 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/ir/binding-resolution.test.d.ts +5 -0
  55. package/dist/ir/binding-resolution.test.d.ts.map +1 -0
  56. package/dist/ir/binding-resolution.test.js +513 -0
  57. package/dist/ir/binding-resolution.test.js.map +1 -0
  58. package/dist/ir/builder/exports.d.ts +10 -0
  59. package/dist/ir/builder/exports.d.ts.map +1 -0
  60. package/dist/ir/builder/exports.js +75 -0
  61. package/dist/ir/builder/exports.js.map +1 -0
  62. package/dist/ir/builder/helpers.d.ts +13 -0
  63. package/dist/ir/builder/helpers.d.ts.map +1 -0
  64. package/dist/ir/builder/helpers.js +23 -0
  65. package/dist/ir/builder/helpers.js.map +1 -0
  66. package/dist/ir/builder/imports.d.ts +18 -0
  67. package/dist/ir/builder/imports.d.ts.map +1 -0
  68. package/dist/ir/builder/imports.js +121 -0
  69. package/dist/ir/builder/imports.js.map +1 -0
  70. package/{src/ir/builder/index.ts → dist/ir/builder/index.d.ts} +1 -1
  71. package/dist/ir/builder/index.d.ts.map +1 -0
  72. package/dist/ir/builder/index.js +9 -0
  73. package/dist/ir/builder/index.js.map +1 -0
  74. package/dist/ir/builder/orchestrator.d.ts +18 -0
  75. package/dist/ir/builder/orchestrator.d.ts.map +1 -0
  76. package/dist/ir/builder/orchestrator.js +121 -0
  77. package/dist/ir/builder/orchestrator.js.map +1 -0
  78. package/dist/ir/builder/statements.d.ts +14 -0
  79. package/dist/ir/builder/statements.d.ts.map +1 -0
  80. package/dist/ir/builder/statements.js +43 -0
  81. package/dist/ir/builder/statements.js.map +1 -0
  82. package/dist/ir/builder/types.d.ts +8 -0
  83. package/dist/ir/builder/types.d.ts.map +1 -0
  84. package/dist/ir/builder/types.js +5 -0
  85. package/dist/ir/builder/types.js.map +1 -0
  86. package/dist/ir/builder/validation.d.ts +10 -0
  87. package/dist/ir/builder/validation.d.ts.map +1 -0
  88. package/dist/ir/builder/validation.js +86 -0
  89. package/dist/ir/builder/validation.js.map +1 -0
  90. package/{src/ir/builder.ts → dist/ir/builder.d.ts} +2 -5
  91. package/dist/ir/builder.d.ts.map +1 -0
  92. package/dist/ir/builder.js +10 -0
  93. package/dist/ir/builder.js.map +1 -0
  94. package/dist/ir/builder.test.d.ts +5 -0
  95. package/dist/ir/builder.test.d.ts.map +1 -0
  96. package/dist/ir/builder.test.js +493 -0
  97. package/dist/ir/builder.test.js.map +1 -0
  98. package/dist/ir/converters/expressions/access.d.ts +10 -0
  99. package/dist/ir/converters/expressions/access.d.ts.map +1 -0
  100. package/dist/ir/converters/expressions/access.js +85 -0
  101. package/dist/ir/converters/expressions/access.js.map +1 -0
  102. package/dist/ir/converters/expressions/calls.d.ts +14 -0
  103. package/dist/ir/converters/expressions/calls.d.ts.map +1 -0
  104. package/dist/ir/converters/expressions/calls.js +104 -0
  105. package/dist/ir/converters/expressions/calls.js.map +1 -0
  106. package/dist/ir/converters/expressions/collections.d.ts +14 -0
  107. package/dist/ir/converters/expressions/collections.d.ts.map +1 -0
  108. package/dist/ir/converters/expressions/collections.js +70 -0
  109. package/dist/ir/converters/expressions/collections.js.map +1 -0
  110. package/dist/ir/converters/expressions/functions.d.ts +14 -0
  111. package/dist/ir/converters/expressions/functions.d.ts.map +1 -0
  112. package/dist/ir/converters/expressions/functions.js +42 -0
  113. package/dist/ir/converters/expressions/functions.js.map +1 -0
  114. package/dist/ir/converters/expressions/helpers.d.ts +43 -0
  115. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -0
  116. package/dist/ir/converters/expressions/helpers.js +210 -0
  117. package/dist/ir/converters/expressions/helpers.js.map +1 -0
  118. package/dist/ir/converters/expressions/index.d.ts +12 -0
  119. package/dist/ir/converters/expressions/index.d.ts.map +1 -0
  120. package/dist/ir/converters/expressions/index.js +20 -0
  121. package/dist/ir/converters/expressions/index.js.map +1 -0
  122. package/dist/ir/converters/expressions/literals.d.ts +10 -0
  123. package/dist/ir/converters/expressions/literals.d.ts.map +1 -0
  124. package/dist/ir/converters/expressions/literals.js +17 -0
  125. package/dist/ir/converters/expressions/literals.js.map +1 -0
  126. package/dist/ir/converters/expressions/operators.d.ts +18 -0
  127. package/dist/ir/converters/expressions/operators.d.ts.map +1 -0
  128. package/dist/ir/converters/expressions/operators.js +111 -0
  129. package/dist/ir/converters/expressions/operators.js.map +1 -0
  130. package/dist/ir/converters/expressions/other.d.ts +14 -0
  131. package/dist/ir/converters/expressions/other.d.ts.map +1 -0
  132. package/dist/ir/converters/expressions/other.js +44 -0
  133. package/dist/ir/converters/expressions/other.js.map +1 -0
  134. package/dist/ir/converters/statements/control/blocks.d.ts +10 -0
  135. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -0
  136. package/dist/ir/converters/statements/control/blocks.js +16 -0
  137. package/dist/ir/converters/statements/control/blocks.js.map +1 -0
  138. package/dist/ir/converters/statements/control/conditionals.d.ts +18 -0
  139. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -0
  140. package/dist/ir/converters/statements/control/conditionals.js +46 -0
  141. package/dist/ir/converters/statements/control/conditionals.js.map +1 -0
  142. package/dist/ir/converters/statements/control/exceptions.d.ts +14 -0
  143. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -0
  144. package/dist/ir/converters/statements/control/exceptions.js +33 -0
  145. package/dist/ir/converters/statements/control/exceptions.js.map +1 -0
  146. package/dist/ir/converters/statements/control/index.d.ts +8 -0
  147. package/dist/ir/converters/statements/control/index.d.ts.map +1 -0
  148. package/dist/ir/converters/statements/control/index.js +8 -0
  149. package/dist/ir/converters/statements/control/index.js.map +1 -0
  150. package/dist/ir/converters/statements/control/loops.d.ts +22 -0
  151. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -0
  152. package/dist/ir/converters/statements/control/loops.js +75 -0
  153. package/dist/ir/converters/statements/control/loops.js.map +1 -0
  154. package/dist/ir/converters/statements/control.d.ts +6 -0
  155. package/dist/ir/converters/statements/control.d.ts.map +1 -0
  156. package/dist/ir/converters/statements/control.js +6 -0
  157. package/dist/ir/converters/statements/control.js.map +1 -0
  158. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +14 -0
  159. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -0
  160. package/dist/ir/converters/statements/declarations/classes/constructors.js +91 -0
  161. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -0
  162. package/{src/ir/converters/statements/declarations/classes/index.ts → dist/ir/converters/statements/declarations/classes/index.d.ts} +2 -5
  163. package/dist/ir/converters/statements/declarations/classes/index.d.ts.map +1 -0
  164. package/dist/ir/converters/statements/declarations/classes/index.js +9 -0
  165. package/dist/ir/converters/statements/declarations/classes/index.js.map +1 -0
  166. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +10 -0
  167. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -0
  168. package/dist/ir/converters/statements/declarations/classes/methods.js +39 -0
  169. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -0
  170. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +10 -0
  171. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -0
  172. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +123 -0
  173. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -0
  174. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +13 -0
  175. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -0
  176. package/dist/ir/converters/statements/declarations/classes/override-detection.js +79 -0
  177. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -0
  178. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +10 -0
  179. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -0
  180. package/dist/ir/converters/statements/declarations/classes/properties.js +42 -0
  181. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -0
  182. package/dist/ir/converters/statements/declarations/classes.d.ts +6 -0
  183. package/dist/ir/converters/statements/declarations/classes.d.ts.map +1 -0
  184. package/{src/ir/converters/statements/declarations/classes.ts → dist/ir/converters/statements/declarations/classes.js} +1 -1
  185. package/dist/ir/converters/statements/declarations/classes.js.map +1 -0
  186. package/dist/ir/converters/statements/declarations/enums.d.ts +10 -0
  187. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -0
  188. package/dist/ir/converters/statements/declarations/enums.js +24 -0
  189. package/dist/ir/converters/statements/declarations/enums.js.map +1 -0
  190. package/dist/ir/converters/statements/declarations/functions.d.ts +10 -0
  191. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -0
  192. package/dist/ir/converters/statements/declarations/functions.js +28 -0
  193. package/dist/ir/converters/statements/declarations/functions.js.map +1 -0
  194. package/dist/ir/converters/statements/declarations/index.d.ts +11 -0
  195. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -0
  196. package/{src/ir/converters/statements/declarations/index.ts → dist/ir/converters/statements/declarations/index.js} +2 -5
  197. package/dist/ir/converters/statements/declarations/index.js.map +1 -0
  198. package/dist/ir/converters/statements/declarations/interfaces.d.ts +15 -0
  199. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -0
  200. package/dist/ir/converters/statements/declarations/interfaces.js +96 -0
  201. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -0
  202. package/dist/ir/converters/statements/declarations/registry.d.ts +24 -0
  203. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -0
  204. package/{src/ir/converters/statements/declarations/registry.ts → dist/ir/converters/statements/declarations/registry.js} +9 -16
  205. package/dist/ir/converters/statements/declarations/registry.js.map +1 -0
  206. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +10 -0
  207. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -0
  208. package/dist/ir/converters/statements/declarations/type-aliases.js +19 -0
  209. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -0
  210. package/dist/ir/converters/statements/declarations/variables.d.ts +10 -0
  211. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -0
  212. package/dist/ir/converters/statements/declarations/variables.js +45 -0
  213. package/dist/ir/converters/statements/declarations/variables.js.map +1 -0
  214. package/dist/ir/converters/statements/declarations.d.ts +6 -0
  215. package/dist/ir/converters/statements/declarations.d.ts.map +1 -0
  216. package/dist/ir/converters/statements/declarations.js +6 -0
  217. package/dist/ir/converters/statements/declarations.js.map +1 -0
  218. package/dist/ir/converters/statements/helpers.d.ts +34 -0
  219. package/dist/ir/converters/statements/helpers.d.ts.map +1 -0
  220. package/dist/ir/converters/statements/helpers.js +137 -0
  221. package/dist/ir/converters/statements/helpers.js.map +1 -0
  222. package/dist/ir/converters/statements/index.d.ts +7 -0
  223. package/dist/ir/converters/statements/index.d.ts.map +1 -0
  224. package/dist/ir/converters/statements/index.js +10 -0
  225. package/dist/ir/converters/statements/index.js.map +1 -0
  226. package/dist/ir/expression-converter.d.ts +13 -0
  227. package/dist/ir/expression-converter.d.ts.map +1 -0
  228. package/dist/ir/expression-converter.js +167 -0
  229. package/dist/ir/expression-converter.js.map +1 -0
  230. package/dist/ir/generic-validator.d.ts +38 -0
  231. package/dist/ir/generic-validator.d.ts.map +1 -0
  232. package/dist/ir/generic-validator.js +69 -0
  233. package/dist/ir/generic-validator.js.map +1 -0
  234. package/dist/ir/hierarchical-bindings-e2e.test.d.ts +6 -0
  235. package/dist/ir/hierarchical-bindings-e2e.test.d.ts.map +1 -0
  236. package/dist/ir/hierarchical-bindings-e2e.test.js +124 -0
  237. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -0
  238. package/{src/ir/index.ts → dist/ir/index.d.ts} +1 -1
  239. package/dist/ir/index.d.ts.map +1 -0
  240. package/dist/ir/index.js +6 -0
  241. package/dist/ir/index.js.map +1 -0
  242. package/dist/ir/statement-converter.d.ts +14 -0
  243. package/dist/ir/statement-converter.d.ts.map +1 -0
  244. package/dist/ir/statement-converter.js +100 -0
  245. package/dist/ir/statement-converter.js.map +1 -0
  246. package/dist/ir/type-converter/arrays.d.ts +10 -0
  247. package/dist/ir/type-converter/arrays.d.ts.map +1 -0
  248. package/dist/ir/type-converter/arrays.js +13 -0
  249. package/dist/ir/type-converter/arrays.js.map +1 -0
  250. package/dist/ir/type-converter/clr-type-resolver.d.ts +15 -0
  251. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +1 -0
  252. package/dist/ir/type-converter/clr-type-resolver.js +120 -0
  253. package/dist/ir/type-converter/clr-type-resolver.js.map +1 -0
  254. package/dist/ir/type-converter/converter.d.ts +6 -0
  255. package/dist/ir/type-converter/converter.d.ts.map +1 -0
  256. package/dist/ir/type-converter/converter.js +6 -0
  257. package/dist/ir/type-converter/converter.js.map +1 -0
  258. package/dist/ir/type-converter/functions.d.ts +10 -0
  259. package/dist/ir/type-converter/functions.d.ts.map +1 -0
  260. package/dist/ir/type-converter/functions.js +15 -0
  261. package/dist/ir/type-converter/functions.js.map +1 -0
  262. package/dist/ir/type-converter/index.d.ts +7 -0
  263. package/dist/ir/type-converter/index.d.ts.map +1 -0
  264. package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
  265. package/dist/ir/type-converter/index.js.map +1 -0
  266. package/dist/ir/type-converter/inference.d.ts +20 -0
  267. package/dist/ir/type-converter/inference.d.ts.map +1 -0
  268. package/dist/ir/type-converter/inference.js +104 -0
  269. package/dist/ir/type-converter/inference.js.map +1 -0
  270. package/dist/ir/type-converter/literals.d.ts +10 -0
  271. package/dist/ir/type-converter/literals.d.ts.map +1 -0
  272. package/dist/ir/type-converter/literals.js +31 -0
  273. package/dist/ir/type-converter/literals.js.map +1 -0
  274. package/dist/ir/type-converter/objects.d.ts +16 -0
  275. package/dist/ir/type-converter/objects.d.ts.map +1 -0
  276. package/dist/ir/type-converter/objects.js +81 -0
  277. package/dist/ir/type-converter/objects.js.map +1 -0
  278. package/dist/ir/type-converter/orchestrator.d.ts +13 -0
  279. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
  280. package/dist/ir/type-converter/orchestrator.js +59 -0
  281. package/dist/ir/type-converter/orchestrator.js.map +1 -0
  282. package/dist/ir/type-converter/patterns.d.ts +10 -0
  283. package/dist/ir/type-converter/patterns.d.ts.map +1 -0
  284. package/dist/ir/type-converter/patterns.js +66 -0
  285. package/dist/ir/type-converter/patterns.js.map +1 -0
  286. package/dist/ir/type-converter/primitives.d.ts +18 -0
  287. package/dist/ir/type-converter/primitives.d.ts.map +1 -0
  288. package/dist/ir/type-converter/primitives.js +47 -0
  289. package/dist/ir/type-converter/primitives.js.map +1 -0
  290. package/dist/ir/type-converter/references.d.ts +11 -0
  291. package/dist/ir/type-converter/references.d.ts.map +1 -0
  292. package/dist/ir/type-converter/references.js +51 -0
  293. package/dist/ir/type-converter/references.js.map +1 -0
  294. package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
  295. package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
  296. package/dist/ir/type-converter/unions-intersections.js +22 -0
  297. package/dist/ir/type-converter/unions-intersections.js.map +1 -0
  298. package/dist/ir/type-converter.d.ts +6 -0
  299. package/dist/ir/type-converter.d.ts.map +1 -0
  300. package/dist/ir/type-converter.js +6 -0
  301. package/dist/ir/type-converter.js.map +1 -0
  302. package/dist/ir/types/expressions.d.ts +164 -0
  303. package/dist/ir/types/expressions.d.ts.map +1 -0
  304. package/dist/ir/types/expressions.js +5 -0
  305. package/dist/ir/types/expressions.js.map +1 -0
  306. package/dist/ir/types/guards.d.ts +8 -0
  307. package/dist/ir/types/guards.d.ts.map +1 -0
  308. package/dist/ir/types/guards.js +31 -0
  309. package/dist/ir/types/guards.js.map +1 -0
  310. package/dist/ir/types/helpers.d.ts +65 -0
  311. package/dist/ir/types/helpers.d.ts.map +1 -0
  312. package/dist/ir/types/helpers.js +5 -0
  313. package/dist/ir/types/helpers.js.map +1 -0
  314. package/dist/ir/types/index.d.ts +11 -0
  315. package/dist/ir/types/index.d.ts.map +1 -0
  316. package/dist/ir/types/index.js +7 -0
  317. package/dist/ir/types/index.js.map +1 -0
  318. package/dist/ir/types/ir-types.d.ts +69 -0
  319. package/dist/ir/types/ir-types.d.ts.map +1 -0
  320. package/dist/ir/types/ir-types.js +5 -0
  321. package/dist/ir/types/ir-types.js.map +1 -0
  322. package/dist/ir/types/module.d.ts +56 -0
  323. package/dist/ir/types/module.d.ts.map +1 -0
  324. package/dist/ir/types/module.js +5 -0
  325. package/dist/ir/types/module.js.map +1 -0
  326. package/dist/ir/types/statements.d.ts +182 -0
  327. package/dist/ir/types/statements.d.ts.map +1 -0
  328. package/dist/ir/types/statements.js +5 -0
  329. package/dist/ir/types/statements.js.map +1 -0
  330. package/dist/ir/types.d.ts +7 -0
  331. package/dist/ir/types.d.ts.map +1 -0
  332. package/dist/ir/types.js +7 -0
  333. package/dist/ir/types.js.map +1 -0
  334. package/dist/metadata/bindings-loader.d.ts +41 -0
  335. package/dist/metadata/bindings-loader.d.ts.map +1 -0
  336. package/dist/metadata/bindings-loader.js +308 -0
  337. package/dist/metadata/bindings-loader.js.map +1 -0
  338. package/dist/metadata/bindings-loader.test.d.ts +5 -0
  339. package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
  340. package/dist/metadata/bindings-loader.test.js +117 -0
  341. package/dist/metadata/bindings-loader.test.js.map +1 -0
  342. package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
  343. package/dist/metadata/index.d.ts.map +1 -0
  344. package/dist/metadata/index.js +7 -0
  345. package/dist/metadata/index.js.map +1 -0
  346. package/dist/metadata/library-loader.d.ts +42 -0
  347. package/dist/metadata/library-loader.d.ts.map +1 -0
  348. package/dist/metadata/library-loader.js +126 -0
  349. package/dist/metadata/library-loader.js.map +1 -0
  350. package/dist/metadata/loader.d.ts +26 -0
  351. package/dist/metadata/loader.d.ts.map +1 -0
  352. package/dist/metadata/loader.js +333 -0
  353. package/dist/metadata/loader.js.map +1 -0
  354. package/dist/metadata/loader.test.d.ts +5 -0
  355. package/dist/metadata/loader.test.d.ts.map +1 -0
  356. package/dist/metadata/loader.test.js +119 -0
  357. package/dist/metadata/loader.test.js.map +1 -0
  358. package/dist/program/bindings.d.ts +111 -0
  359. package/dist/program/bindings.d.ts.map +1 -0
  360. package/dist/program/bindings.js +167 -0
  361. package/dist/program/bindings.js.map +1 -0
  362. package/dist/program/bindings.test.d.ts +5 -0
  363. package/dist/program/bindings.test.d.ts.map +1 -0
  364. package/dist/program/bindings.test.js +435 -0
  365. package/dist/program/bindings.test.js.map +1 -0
  366. package/dist/program/config.d.ts +9 -0
  367. package/dist/program/config.d.ts.map +1 -0
  368. package/dist/program/config.js +29 -0
  369. package/dist/program/config.js.map +1 -0
  370. package/dist/program/creation.d.ts +17 -0
  371. package/dist/program/creation.d.ts.map +1 -0
  372. package/dist/program/creation.js +180 -0
  373. package/dist/program/creation.js.map +1 -0
  374. package/dist/program/dependency-graph.d.ts +19 -0
  375. package/dist/program/dependency-graph.d.ts.map +1 -0
  376. package/dist/program/dependency-graph.js +166 -0
  377. package/dist/program/dependency-graph.js.map +1 -0
  378. package/dist/program/diagnostics.d.ts +23 -0
  379. package/dist/program/diagnostics.d.ts.map +1 -0
  380. package/dist/program/diagnostics.js +65 -0
  381. package/dist/program/diagnostics.js.map +1 -0
  382. package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
  383. package/dist/program/index.d.ts.map +1 -0
  384. package/dist/program/index.js +11 -0
  385. package/dist/program/index.js.map +1 -0
  386. package/dist/program/metadata.d.ts +10 -0
  387. package/dist/program/metadata.d.ts.map +1 -0
  388. package/dist/program/metadata.js +56 -0
  389. package/dist/program/metadata.js.map +1 -0
  390. package/dist/program/queries.d.ts +10 -0
  391. package/dist/program/queries.d.ts.map +1 -0
  392. package/dist/program/queries.js +12 -0
  393. package/dist/program/queries.js.map +1 -0
  394. package/dist/program/types.d.ts +35 -0
  395. package/dist/program/types.d.ts.map +1 -0
  396. package/dist/program/types.js +5 -0
  397. package/dist/program/types.js.map +1 -0
  398. package/{src/program.ts → dist/program.d.ts} +2 -7
  399. package/dist/program.d.ts.map +1 -0
  400. package/dist/program.js +6 -0
  401. package/dist/program.js.map +1 -0
  402. package/dist/resolver/dotnet-import-resolver.d.ts +74 -0
  403. package/dist/resolver/dotnet-import-resolver.d.ts.map +1 -0
  404. package/dist/resolver/dotnet-import-resolver.js +183 -0
  405. package/dist/resolver/dotnet-import-resolver.js.map +1 -0
  406. package/dist/resolver/import-resolution.d.ts +20 -0
  407. package/dist/resolver/import-resolution.d.ts.map +1 -0
  408. package/dist/resolver/import-resolution.js +102 -0
  409. package/dist/resolver/import-resolution.js.map +1 -0
  410. package/dist/resolver/index.d.ts +10 -0
  411. package/dist/resolver/index.d.ts.map +1 -0
  412. package/dist/resolver/index.js +9 -0
  413. package/dist/resolver/index.js.map +1 -0
  414. package/dist/resolver/namespace.d.ts +20 -0
  415. package/dist/resolver/namespace.d.ts.map +1 -0
  416. package/dist/resolver/namespace.js +35 -0
  417. package/dist/resolver/namespace.js.map +1 -0
  418. package/dist/resolver/namespace.test.d.ts +2 -0
  419. package/dist/resolver/namespace.test.d.ts.map +1 -0
  420. package/dist/resolver/namespace.test.js +42 -0
  421. package/dist/resolver/namespace.test.js.map +1 -0
  422. package/dist/resolver/naming.d.ts +12 -0
  423. package/dist/resolver/naming.d.ts.map +1 -0
  424. package/dist/resolver/naming.js +30 -0
  425. package/dist/resolver/naming.js.map +1 -0
  426. package/dist/resolver/path-resolution.d.ts +8 -0
  427. package/dist/resolver/path-resolution.d.ts.map +1 -0
  428. package/dist/resolver/path-resolution.js +16 -0
  429. package/dist/resolver/path-resolution.js.map +1 -0
  430. package/dist/resolver/types.d.ts +13 -0
  431. package/dist/resolver/types.d.ts.map +1 -0
  432. package/dist/resolver/types.js +5 -0
  433. package/dist/resolver/types.js.map +1 -0
  434. package/dist/resolver.d.ts +7 -0
  435. package/dist/resolver.d.ts.map +1 -0
  436. package/dist/resolver.js +6 -0
  437. package/dist/resolver.js.map +1 -0
  438. package/dist/resolver.test.d.ts +5 -0
  439. package/dist/resolver.test.d.ts.map +1 -0
  440. package/dist/resolver.test.js +93 -0
  441. package/dist/resolver.test.js.map +1 -0
  442. package/dist/symbol-table/builder.d.ts +10 -0
  443. package/dist/symbol-table/builder.d.ts.map +1 -0
  444. package/dist/symbol-table/builder.js +105 -0
  445. package/dist/symbol-table/builder.js.map +1 -0
  446. package/dist/symbol-table/creation.d.ts +13 -0
  447. package/dist/symbol-table/creation.d.ts.map +1 -0
  448. package/dist/symbol-table/creation.js +36 -0
  449. package/dist/symbol-table/creation.js.map +1 -0
  450. package/dist/symbol-table/helpers.d.ts +9 -0
  451. package/dist/symbol-table/helpers.d.ts.map +1 -0
  452. package/dist/symbol-table/helpers.js +15 -0
  453. package/dist/symbol-table/helpers.js.map +1 -0
  454. package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
  455. package/dist/symbol-table/index.d.ts.map +1 -0
  456. package/dist/symbol-table/index.js +8 -0
  457. package/dist/symbol-table/index.js.map +1 -0
  458. package/dist/symbol-table/queries.d.ts +17 -0
  459. package/dist/symbol-table/queries.d.ts.map +1 -0
  460. package/dist/symbol-table/queries.js +27 -0
  461. package/dist/symbol-table/queries.js.map +1 -0
  462. package/dist/symbol-table/types.d.ts +18 -0
  463. package/dist/symbol-table/types.d.ts.map +1 -0
  464. package/dist/symbol-table/types.js +5 -0
  465. package/dist/symbol-table/types.js.map +1 -0
  466. package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
  467. package/dist/symbol-table.d.ts.map +1 -0
  468. package/dist/symbol-table.js +6 -0
  469. package/dist/symbol-table.js.map +1 -0
  470. package/dist/types/bindings.d.ts +153 -0
  471. package/dist/types/bindings.d.ts.map +1 -0
  472. package/dist/types/bindings.js +14 -0
  473. package/dist/types/bindings.js.map +1 -0
  474. package/dist/types/diagnostic.d.ts +30 -0
  475. package/dist/types/diagnostic.d.ts.map +1 -0
  476. package/dist/types/diagnostic.js +37 -0
  477. package/dist/types/diagnostic.js.map +1 -0
  478. package/dist/types/diagnostic.test.d.ts +5 -0
  479. package/dist/types/diagnostic.test.d.ts.map +1 -0
  480. package/dist/types/diagnostic.test.js +94 -0
  481. package/dist/types/diagnostic.test.js.map +1 -0
  482. package/dist/types/explicit-views.d.ts +97 -0
  483. package/dist/types/explicit-views.d.ts.map +1 -0
  484. package/dist/types/explicit-views.js +163 -0
  485. package/dist/types/explicit-views.js.map +1 -0
  486. package/dist/types/explicit-views.test.d.ts +5 -0
  487. package/dist/types/explicit-views.test.d.ts.map +1 -0
  488. package/dist/types/explicit-views.test.js +67 -0
  489. package/dist/types/explicit-views.test.js.map +1 -0
  490. package/dist/types/metadata.d.ts +196 -0
  491. package/dist/types/metadata.d.ts.map +1 -0
  492. package/dist/types/metadata.js +10 -0
  493. package/dist/types/metadata.js.map +1 -0
  494. package/dist/types/module.d.ts +51 -0
  495. package/dist/types/module.d.ts.map +1 -0
  496. package/dist/types/module.js +28 -0
  497. package/dist/types/module.js.map +1 -0
  498. package/dist/types/nested-types.d.ts +111 -0
  499. package/dist/types/nested-types.d.ts.map +1 -0
  500. package/dist/types/nested-types.js +176 -0
  501. package/dist/types/nested-types.js.map +1 -0
  502. package/dist/types/nested-types.test.d.ts +5 -0
  503. package/dist/types/nested-types.test.d.ts.map +1 -0
  504. package/dist/types/nested-types.test.js +135 -0
  505. package/dist/types/nested-types.test.js.map +1 -0
  506. package/dist/types/parameter-modifiers.d.ts +55 -0
  507. package/dist/types/parameter-modifiers.d.ts.map +1 -0
  508. package/dist/types/parameter-modifiers.js +144 -0
  509. package/dist/types/parameter-modifiers.js.map +1 -0
  510. package/dist/types/ref-parameters.d.ts +123 -0
  511. package/dist/types/ref-parameters.d.ts.map +1 -0
  512. package/dist/types/ref-parameters.js +203 -0
  513. package/dist/types/ref-parameters.js.map +1 -0
  514. package/dist/types/ref-parameters.test.d.ts +5 -0
  515. package/dist/types/ref-parameters.test.d.ts.map +1 -0
  516. package/dist/types/ref-parameters.test.js +147 -0
  517. package/dist/types/ref-parameters.test.js.map +1 -0
  518. package/dist/types/result.d.ts +26 -0
  519. package/dist/types/result.d.ts.map +1 -0
  520. package/dist/types/result.js +19 -0
  521. package/dist/types/result.js.map +1 -0
  522. package/dist/types/result.test.d.ts +5 -0
  523. package/dist/types/result.test.d.ts.map +1 -0
  524. package/dist/types/result.test.js +121 -0
  525. package/dist/types/result.test.js.map +1 -0
  526. package/dist/types/support-types.d.ts +103 -0
  527. package/dist/types/support-types.d.ts.map +1 -0
  528. package/dist/types/support-types.js +220 -0
  529. package/dist/types/support-types.js.map +1 -0
  530. package/dist/types/support-types.test.d.ts +5 -0
  531. package/dist/types/support-types.test.d.ts.map +1 -0
  532. package/dist/types/support-types.test.js +50 -0
  533. package/dist/types/support-types.test.js.map +1 -0
  534. package/dist/types/test-debug.d.ts.map +1 -0
  535. package/dist/types/test-debug.js.map +1 -0
  536. package/dist/types/test-harness.d.ts +34 -0
  537. package/dist/types/test-harness.d.ts.map +1 -0
  538. package/dist/types/test-harness.js +127 -0
  539. package/dist/types/test-harness.js.map +1 -0
  540. package/dist/validation/aot-safety.d.ts +24 -0
  541. package/dist/validation/aot-safety.d.ts.map +1 -0
  542. package/dist/validation/aot-safety.js +114 -0
  543. package/dist/validation/aot-safety.js.map +1 -0
  544. package/dist/validation/exports.d.ts +11 -0
  545. package/dist/validation/exports.d.ts.map +1 -0
  546. package/dist/validation/exports.js +56 -0
  547. package/dist/validation/exports.js.map +1 -0
  548. package/dist/validation/features.d.ts +11 -0
  549. package/dist/validation/features.d.ts.map +1 -0
  550. package/dist/validation/features.js +36 -0
  551. package/dist/validation/features.js.map +1 -0
  552. package/dist/validation/generics.d.ts +11 -0
  553. package/dist/validation/generics.d.ts.map +1 -0
  554. package/dist/validation/generics.js +31 -0
  555. package/dist/validation/generics.js.map +1 -0
  556. package/dist/validation/helpers.d.ts +15 -0
  557. package/dist/validation/helpers.d.ts.map +1 -0
  558. package/dist/validation/helpers.js +18 -0
  559. package/dist/validation/helpers.js.map +1 -0
  560. package/dist/validation/imports.d.ts +15 -0
  561. package/dist/validation/imports.d.ts.map +1 -0
  562. package/dist/validation/imports.js +42 -0
  563. package/dist/validation/imports.js.map +1 -0
  564. package/dist/validation/index.d.ts +11 -0
  565. package/dist/validation/index.d.ts.map +1 -0
  566. package/{src/validation/index.ts → dist/validation/index.js} +1 -1
  567. package/dist/validation/index.js.map +1 -0
  568. package/dist/validation/orchestrator.d.ts +15 -0
  569. package/dist/validation/orchestrator.d.ts.map +1 -0
  570. package/dist/validation/orchestrator.js +30 -0
  571. package/dist/validation/orchestrator.js.map +1 -0
  572. package/dist/validation/static-safety.d.ts +23 -0
  573. package/dist/validation/static-safety.d.ts.map +1 -0
  574. package/dist/validation/static-safety.js +165 -0
  575. package/dist/validation/static-safety.js.map +1 -0
  576. package/dist/validator.d.ts +6 -0
  577. package/dist/validator.d.ts.map +1 -0
  578. package/dist/validator.js +6 -0
  579. package/dist/validator.js.map +1 -0
  580. package/dist/validator.test.d.ts +11 -0
  581. package/dist/validator.test.d.ts.map +1 -0
  582. package/dist/validator.test.js +340 -0
  583. package/dist/validator.test.js.map +1 -0
  584. package/package.json +4 -1
  585. package/src/dotnet-metadata.ts +0 -121
  586. package/src/graph/builder.ts +0 -81
  587. package/src/graph/circular.ts +0 -58
  588. package/src/graph/extraction/exports.ts +0 -55
  589. package/src/graph/extraction/imports.ts +0 -81
  590. package/src/graph/extraction/orchestrator.ts +0 -99
  591. package/src/graph/helpers.ts +0 -51
  592. package/src/index.ts +0 -80
  593. package/src/ir/binding-resolution.test.ts +0 -585
  594. package/src/ir/builder/exports.ts +0 -78
  595. package/src/ir/builder/helpers.ts +0 -27
  596. package/src/ir/builder/imports.ts +0 -153
  597. package/src/ir/builder/orchestrator.ts +0 -178
  598. package/src/ir/builder/statements.ts +0 -55
  599. package/src/ir/builder/types.ts +0 -8
  600. package/src/ir/builder/validation.ts +0 -129
  601. package/src/ir/builder.test.ts +0 -581
  602. package/src/ir/converters/expressions/access.ts +0 -99
  603. package/src/ir/converters/expressions/calls.ts +0 -137
  604. package/src/ir/converters/expressions/collections.ts +0 -84
  605. package/src/ir/converters/expressions/functions.ts +0 -62
  606. package/src/ir/converters/expressions/helpers.ts +0 -264
  607. package/src/ir/converters/expressions/index.ts +0 -43
  608. package/src/ir/converters/expressions/literals.ts +0 -22
  609. package/src/ir/converters/expressions/operators.ts +0 -147
  610. package/src/ir/converters/expressions/other.ts +0 -60
  611. package/src/ir/converters/statements/control/blocks.ts +0 -22
  612. package/src/ir/converters/statements/control/conditionals.ts +0 -67
  613. package/src/ir/converters/statements/control/exceptions.ts +0 -43
  614. package/src/ir/converters/statements/control/index.ts +0 -17
  615. package/src/ir/converters/statements/control/loops.ts +0 -99
  616. package/src/ir/converters/statements/control.ts +0 -17
  617. package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
  618. package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
  619. package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
  620. package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
  621. package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
  622. package/src/ir/converters/statements/declarations/enums.ts +0 -29
  623. package/src/ir/converters/statements/declarations/functions.ts +0 -39
  624. package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
  625. package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
  626. package/src/ir/converters/statements/declarations/variables.ts +0 -60
  627. package/src/ir/converters/statements/declarations.ts +0 -16
  628. package/src/ir/converters/statements/helpers.ts +0 -174
  629. package/src/ir/converters/statements/index.ts +0 -40
  630. package/src/ir/expression-converter.ts +0 -207
  631. package/src/ir/generic-validator.ts +0 -100
  632. package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
  633. package/src/ir/statement-converter.ts +0 -128
  634. package/src/ir/type-converter/arrays.ts +0 -20
  635. package/src/ir/type-converter/converter.ts +0 -10
  636. package/src/ir/type-converter/functions.ts +0 -22
  637. package/src/ir/type-converter/inference.ts +0 -122
  638. package/src/ir/type-converter/literals.ts +0 -40
  639. package/src/ir/type-converter/objects.ts +0 -107
  640. package/src/ir/type-converter/orchestrator.ts +0 -85
  641. package/src/ir/type-converter/patterns.ts +0 -73
  642. package/src/ir/type-converter/primitives.ts +0 -57
  643. package/src/ir/type-converter/references.ts +0 -64
  644. package/src/ir/type-converter/unions-intersections.ts +0 -34
  645. package/src/ir/type-converter.ts +0 -13
  646. package/src/ir/types/expressions.ts +0 -215
  647. package/src/ir/types/guards.ts +0 -39
  648. package/src/ir/types/helpers.ts +0 -135
  649. package/src/ir/types/index.ts +0 -108
  650. package/src/ir/types/ir-types.ts +0 -96
  651. package/src/ir/types/module.ts +0 -57
  652. package/src/ir/types/statements.ts +0 -238
  653. package/src/ir/types.ts +0 -97
  654. package/src/metadata/bindings-loader.test.ts +0 -144
  655. package/src/metadata/bindings-loader.ts +0 -357
  656. package/src/metadata/library-loader.ts +0 -153
  657. package/src/metadata/loader.test.ts +0 -156
  658. package/src/metadata/loader.ts +0 -382
  659. package/src/program/bindings.test.ts +0 -512
  660. package/src/program/bindings.ts +0 -253
  661. package/src/program/config.ts +0 -30
  662. package/src/program/creation.ts +0 -249
  663. package/src/program/dependency-graph.ts +0 -245
  664. package/src/program/diagnostics.ts +0 -103
  665. package/src/program/metadata.ts +0 -68
  666. package/src/program/queries.ts +0 -18
  667. package/src/program/types.ts +0 -38
  668. package/src/resolver/dotnet-import-resolver.ts +0 -226
  669. package/src/resolver/import-resolution.ts +0 -177
  670. package/src/resolver/index.ts +0 -18
  671. package/src/resolver/namespace.test.ts +0 -86
  672. package/src/resolver/namespace.ts +0 -42
  673. package/src/resolver/naming.ts +0 -38
  674. package/src/resolver/path-resolution.ts +0 -22
  675. package/src/resolver/types.ts +0 -15
  676. package/src/resolver.test.ts +0 -155
  677. package/src/resolver.ts +0 -14
  678. package/src/symbol-table/builder.ts +0 -114
  679. package/src/symbol-table/creation.ts +0 -42
  680. package/src/symbol-table/helpers.ts +0 -18
  681. package/src/symbol-table/queries.ts +0 -42
  682. package/src/symbol-table/types.ts +0 -28
  683. package/src/types/bindings.ts +0 -172
  684. package/src/types/diagnostic.test.ts +0 -164
  685. package/src/types/diagnostic.ts +0 -153
  686. package/src/types/explicit-views.test.ts +0 -113
  687. package/src/types/explicit-views.ts +0 -218
  688. package/src/types/metadata.ts +0 -229
  689. package/src/types/module.ts +0 -99
  690. package/src/types/nested-types.test.ts +0 -194
  691. package/src/types/nested-types.ts +0 -215
  692. package/src/types/parameter-modifiers.ts +0 -173
  693. package/src/types/ref-parameters.test.ts +0 -192
  694. package/src/types/ref-parameters.ts +0 -268
  695. package/src/types/result.test.ts +0 -157
  696. package/src/types/result.ts +0 -48
  697. package/src/types/support-types.test.ts +0 -81
  698. package/src/types/support-types.ts +0 -288
  699. package/src/types/test-harness.ts +0 -180
  700. package/src/validation/exports.ts +0 -98
  701. package/src/validation/features.ts +0 -89
  702. package/src/validation/generics.ts +0 -40
  703. package/src/validation/helpers.ts +0 -31
  704. package/src/validation/imports.ts +0 -97
  705. package/src/validation/orchestrator.ts +0 -51
  706. package/src/validation/static-safety.ts +0 -267
  707. package/src/validator.test.ts +0 -468
  708. package/src/validator.ts +0 -15
  709. package/tsconfig.json +0 -13
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Nested Types Handling - Parse and transform nested type names.
3
+ *
4
+ * C# supports nested types (types inside types). TypeScript doesn't have true nested
5
+ * type syntax, so tsbindgen flattens them using a dollar sign separator:
6
+ *
7
+ * CLR: Outer+Nested (reflection uses +)
8
+ * TypeScript: Outer$Nested ($ separator)
9
+ * C#: Outer.Nested (dot in source code)
10
+ *
11
+ * @see spec/nested-types.md for complete documentation
12
+ */
13
+ /**
14
+ * Information about a nested type name.
15
+ */
16
+ export type NestedTypeInfo = {
17
+ readonly isNested: boolean;
18
+ readonly outerType: string;
19
+ readonly nestedType: string;
20
+ readonly fullPath: readonly string[];
21
+ readonly depth: number;
22
+ };
23
+ /**
24
+ * Parse a TypeScript type name to check if it represents a nested type.
25
+ *
26
+ * @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
27
+ * @returns Nested type info if nested, undefined if not nested
28
+ */
29
+ export declare const parseNestedTypeName: (tsEmitName: string) => NestedTypeInfo | undefined;
30
+ /**
31
+ * Check if a TypeScript emit name represents a nested type.
32
+ *
33
+ * @param tsEmitName - TypeScript emit name
34
+ * @returns True if nested type
35
+ */
36
+ export declare const isNestedType: (tsEmitName: string) => boolean;
37
+ /**
38
+ * Convert TypeScript nested type name to C# nested type name.
39
+ *
40
+ * TypeScript: List_1$Enumerator
41
+ * C#: List<T>.Enumerator
42
+ *
43
+ * Note: This only converts the separator ($ → .). Generic arity substitution
44
+ * (_1 → <T>) is handled separately by generic type processing.
45
+ *
46
+ * @param tsEmitName - TypeScript emit name with $ separator
47
+ * @returns C# name with dot separator (generic arity not substituted)
48
+ */
49
+ export declare const tsCSharpNestedTypeName: (tsEmitName: string) => string;
50
+ /**
51
+ * Convert CLR reflection name to TypeScript emit name.
52
+ *
53
+ * CLR uses + for nested types (reflection metadata).
54
+ * TypeScript uses $.
55
+ *
56
+ * CLR: List`1+Enumerator
57
+ * TypeScript: List_1$Enumerator
58
+ *
59
+ * @param clrName - CLR reflection name with + separator and ` for generics
60
+ * @returns TypeScript emit name with $ separator and _ for generics
61
+ */
62
+ export declare const clrToTsNestedTypeName: (clrName: string) => string;
63
+ /**
64
+ * Convert TypeScript emit name to CLR reflection name.
65
+ *
66
+ * Reverse of clrToTsNestedTypeName.
67
+ *
68
+ * TypeScript: List_1$Enumerator
69
+ * CLR: List`1+Enumerator
70
+ *
71
+ * @param tsEmitName - TypeScript emit name
72
+ * @returns CLR reflection name
73
+ */
74
+ export declare const tsToCLRNestedTypeName: (tsEmitName: string) => string;
75
+ /**
76
+ * Get all nesting levels from a nested type name.
77
+ *
78
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
79
+ * @returns Array of type names at each level ["A", "A$B", "A$B$C"]
80
+ */
81
+ export declare const getNestedTypeLevels: (tsEmitName: string) => readonly string[];
82
+ /**
83
+ * Get the outermost type name from a nested type.
84
+ *
85
+ * @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
86
+ * @returns Outermost type name (e.g., "List_1")
87
+ */
88
+ export declare const getOutermostType: (tsEmitName: string) => string;
89
+ /**
90
+ * Get the innermost type name from a nested type.
91
+ *
92
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
93
+ * @returns Innermost type name (e.g., "C")
94
+ */
95
+ export declare const getInnermostType: (tsEmitName: string) => string;
96
+ /**
97
+ * Check if one type is nested inside another.
98
+ *
99
+ * @param innerType - Potentially nested type (e.g., "List_1$Enumerator")
100
+ * @param outerType - Potentially containing type (e.g., "List_1")
101
+ * @returns True if innerType is nested inside outerType
102
+ */
103
+ export declare const isNestedInside: (innerType: string, outerType: string) => boolean;
104
+ /**
105
+ * Get parent type name from a nested type.
106
+ *
107
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
108
+ * @returns Parent type name (e.g., "A$B"), or undefined if not nested
109
+ */
110
+ export declare const getParentType: (tsEmitName: string) => string | undefined;
111
+ //# sourceMappingURL=nested-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-types.d.ts","sourceRoot":"","sources":["../../src/types/nested-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,KACjB,cAAc,GAAG,SA0BnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,OAEjD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,YAAY,MAAM,KAAG,MAE3D,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,KAAG,MAQvD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,MAAM,KAAG,MAW1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,SAAS,MAAM,EAavE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAMrD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,MAIrD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,OAMF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,MAAM,KAAG,MAAM,GAAG,SAW3D,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Nested Types Handling - Parse and transform nested type names.
3
+ *
4
+ * C# supports nested types (types inside types). TypeScript doesn't have true nested
5
+ * type syntax, so tsbindgen flattens them using a dollar sign separator:
6
+ *
7
+ * CLR: Outer+Nested (reflection uses +)
8
+ * TypeScript: Outer$Nested ($ separator)
9
+ * C#: Outer.Nested (dot in source code)
10
+ *
11
+ * @see spec/nested-types.md for complete documentation
12
+ */
13
+ /**
14
+ * Parse a TypeScript type name to check if it represents a nested type.
15
+ *
16
+ * @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
17
+ * @returns Nested type info if nested, undefined if not nested
18
+ */
19
+ export const parseNestedTypeName = (tsEmitName) => {
20
+ // Check if name contains $ separator
21
+ if (!tsEmitName.includes("$")) {
22
+ return undefined;
23
+ }
24
+ // Split on $ to get nesting path
25
+ const parts = tsEmitName.split("$");
26
+ if (parts.length < 2) {
27
+ return undefined;
28
+ }
29
+ const outerType = parts[0];
30
+ const nestedType = parts[parts.length - 1];
31
+ if (!outerType || !nestedType) {
32
+ return undefined;
33
+ }
34
+ return {
35
+ isNested: true,
36
+ outerType,
37
+ nestedType,
38
+ fullPath: parts,
39
+ depth: parts.length - 1,
40
+ };
41
+ };
42
+ /**
43
+ * Check if a TypeScript emit name represents a nested type.
44
+ *
45
+ * @param tsEmitName - TypeScript emit name
46
+ * @returns True if nested type
47
+ */
48
+ export const isNestedType = (tsEmitName) => {
49
+ return tsEmitName.includes("$");
50
+ };
51
+ /**
52
+ * Convert TypeScript nested type name to C# nested type name.
53
+ *
54
+ * TypeScript: List_1$Enumerator
55
+ * C#: List<T>.Enumerator
56
+ *
57
+ * Note: This only converts the separator ($ → .). Generic arity substitution
58
+ * (_1 → <T>) is handled separately by generic type processing.
59
+ *
60
+ * @param tsEmitName - TypeScript emit name with $ separator
61
+ * @returns C# name with dot separator (generic arity not substituted)
62
+ */
63
+ export const tsCSharpNestedTypeName = (tsEmitName) => {
64
+ return tsEmitName.replace(/\$/g, ".");
65
+ };
66
+ /**
67
+ * Convert CLR reflection name to TypeScript emit name.
68
+ *
69
+ * CLR uses + for nested types (reflection metadata).
70
+ * TypeScript uses $.
71
+ *
72
+ * CLR: List`1+Enumerator
73
+ * TypeScript: List_1$Enumerator
74
+ *
75
+ * @param clrName - CLR reflection name with + separator and ` for generics
76
+ * @returns TypeScript emit name with $ separator and _ for generics
77
+ */
78
+ export const clrToTsNestedTypeName = (clrName) => {
79
+ // First replace backticks with underscores for generic arity
80
+ let tsName = clrName.replace(/`/g, "_");
81
+ // Then replace plus signs with dollar signs for nesting
82
+ tsName = tsName.replace(/\+/g, "$");
83
+ return tsName;
84
+ };
85
+ /**
86
+ * Convert TypeScript emit name to CLR reflection name.
87
+ *
88
+ * Reverse of clrToTsNestedTypeName.
89
+ *
90
+ * TypeScript: List_1$Enumerator
91
+ * CLR: List`1+Enumerator
92
+ *
93
+ * @param tsEmitName - TypeScript emit name
94
+ * @returns CLR reflection name
95
+ */
96
+ export const tsToCLRNestedTypeName = (tsEmitName) => {
97
+ // Replace dollar signs with plus signs for nesting
98
+ let clrName = tsEmitName.replace(/\$/g, "+");
99
+ // Replace underscores with backticks for generic arity
100
+ // Note: This is a simple replacement. In practice, we need to be careful
101
+ // not to replace underscores that are part of the actual type name.
102
+ // For now, we assume _N pattern at end of each segment indicates arity.
103
+ clrName = clrName.replace(/_(\d+)/g, "`$1");
104
+ return clrName;
105
+ };
106
+ /**
107
+ * Get all nesting levels from a nested type name.
108
+ *
109
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
110
+ * @returns Array of type names at each level ["A", "A$B", "A$B$C"]
111
+ */
112
+ export const getNestedTypeLevels = (tsEmitName) => {
113
+ if (!isNestedType(tsEmitName)) {
114
+ return [tsEmitName];
115
+ }
116
+ const parts = tsEmitName.split("$");
117
+ const levels = [];
118
+ for (let i = 0; i < parts.length; i++) {
119
+ levels.push(parts.slice(0, i + 1).join("$"));
120
+ }
121
+ return levels;
122
+ };
123
+ /**
124
+ * Get the outermost type name from a nested type.
125
+ *
126
+ * @param tsEmitName - TypeScript emit name (e.g., "List_1$Enumerator")
127
+ * @returns Outermost type name (e.g., "List_1")
128
+ */
129
+ export const getOutermostType = (tsEmitName) => {
130
+ const dollarIndex = tsEmitName.indexOf("$");
131
+ if (dollarIndex === -1) {
132
+ return tsEmitName;
133
+ }
134
+ return tsEmitName.substring(0, dollarIndex);
135
+ };
136
+ /**
137
+ * Get the innermost type name from a nested type.
138
+ *
139
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
140
+ * @returns Innermost type name (e.g., "C")
141
+ */
142
+ export const getInnermostType = (tsEmitName) => {
143
+ const parts = tsEmitName.split("$");
144
+ const innermost = parts[parts.length - 1];
145
+ return innermost || tsEmitName;
146
+ };
147
+ /**
148
+ * Check if one type is nested inside another.
149
+ *
150
+ * @param innerType - Potentially nested type (e.g., "List_1$Enumerator")
151
+ * @param outerType - Potentially containing type (e.g., "List_1")
152
+ * @returns True if innerType is nested inside outerType
153
+ */
154
+ export const isNestedInside = (innerType, outerType) => {
155
+ if (!isNestedType(innerType)) {
156
+ return false;
157
+ }
158
+ return innerType.startsWith(outerType + "$");
159
+ };
160
+ /**
161
+ * Get parent type name from a nested type.
162
+ *
163
+ * @param tsEmitName - TypeScript emit name (e.g., "A$B$C")
164
+ * @returns Parent type name (e.g., "A$B"), or undefined if not nested
165
+ */
166
+ export const getParentType = (tsEmitName) => {
167
+ const info = parseNestedTypeName(tsEmitName);
168
+ if (!info) {
169
+ return undefined;
170
+ }
171
+ if (info.fullPath.length < 2) {
172
+ return undefined;
173
+ }
174
+ return info.fullPath.slice(0, -1).join("$");
175
+ };
176
+ //# sourceMappingURL=nested-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-types.js","sourceRoot":"","sources":["../../src/types/nested-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for nested types handling
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=nested-types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-types.test.d.ts","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Tests for nested types handling
3
+ */
4
+ import { describe, it } from "mocha";
5
+ import { strict as assert } from "assert";
6
+ import { parseNestedTypeName, isNestedType, tsCSharpNestedTypeName, clrToTsNestedTypeName, tsToCLRNestedTypeName, getNestedTypeLevels, getOutermostType, getInnermostType, isNestedInside, getParentType, } from "./nested-types.js";
7
+ describe("Nested Types", () => {
8
+ describe("isNestedType", () => {
9
+ it("should detect nested type with $ separator", () => {
10
+ assert.ok(isNestedType("List_1$Enumerator"));
11
+ });
12
+ it("should return false for non-nested type", () => {
13
+ assert.ok(!isNestedType("List_1"));
14
+ });
15
+ });
16
+ describe("parseNestedTypeName", () => {
17
+ it("should parse simple nested type", () => {
18
+ const info = parseNestedTypeName("List_1$Enumerator");
19
+ assert.ok(info);
20
+ assert.equal(info?.outerType, "List_1");
21
+ assert.equal(info?.nestedType, "Enumerator");
22
+ assert.equal(info?.depth, 1);
23
+ assert.deepEqual(info?.fullPath, ["List_1", "Enumerator"]);
24
+ });
25
+ it("should parse multiple nesting levels", () => {
26
+ const info = parseNestedTypeName("A$B$C");
27
+ assert.ok(info);
28
+ assert.equal(info?.outerType, "A");
29
+ assert.equal(info?.nestedType, "C");
30
+ assert.equal(info?.depth, 2);
31
+ assert.deepEqual(info?.fullPath, ["A", "B", "C"]);
32
+ });
33
+ it("should return undefined for non-nested type", () => {
34
+ const info = parseNestedTypeName("SimpleType");
35
+ assert.equal(info, undefined);
36
+ });
37
+ });
38
+ describe("tsCSharpNestedTypeName", () => {
39
+ it("should convert $ to . separator", () => {
40
+ const result = tsCSharpNestedTypeName("List_1$Enumerator");
41
+ assert.equal(result, "List_1.Enumerator");
42
+ });
43
+ it("should handle multiple levels", () => {
44
+ const result = tsCSharpNestedTypeName("A$B$C");
45
+ assert.equal(result, "A.B.C");
46
+ });
47
+ it("should leave non-nested types unchanged", () => {
48
+ const result = tsCSharpNestedTypeName("SimpleType");
49
+ assert.equal(result, "SimpleType");
50
+ });
51
+ });
52
+ describe("clrToTsNestedTypeName", () => {
53
+ it("should convert CLR name to TypeScript", () => {
54
+ const result = clrToTsNestedTypeName("List`1+Enumerator");
55
+ assert.equal(result, "List_1$Enumerator");
56
+ });
57
+ it("should handle multiple levels", () => {
58
+ const result = clrToTsNestedTypeName("A+B+C");
59
+ assert.equal(result, "A$B$C");
60
+ });
61
+ it("should handle generic nested types", () => {
62
+ const result = clrToTsNestedTypeName("Dictionary`2+KeyCollection`1");
63
+ assert.equal(result, "Dictionary_2$KeyCollection_1");
64
+ });
65
+ });
66
+ describe("tsToCLRNestedTypeName", () => {
67
+ it("should convert TypeScript name to CLR", () => {
68
+ const result = tsToCLRNestedTypeName("List_1$Enumerator");
69
+ assert.equal(result, "List`1+Enumerator");
70
+ });
71
+ it("should handle multiple levels", () => {
72
+ const result = tsToCLRNestedTypeName("A$B$C");
73
+ assert.equal(result, "A+B+C");
74
+ });
75
+ });
76
+ describe("getNestedTypeLevels", () => {
77
+ it("should return all nesting levels", () => {
78
+ const levels = getNestedTypeLevels("A$B$C");
79
+ assert.deepEqual(levels, ["A", "A$B", "A$B$C"]);
80
+ });
81
+ it("should return single level for non-nested type", () => {
82
+ const levels = getNestedTypeLevels("SimpleType");
83
+ assert.deepEqual(levels, ["SimpleType"]);
84
+ });
85
+ });
86
+ describe("getOutermostType", () => {
87
+ it("should return outermost type", () => {
88
+ const outermost = getOutermostType("List_1$Enumerator");
89
+ assert.equal(outermost, "List_1");
90
+ });
91
+ it("should return same type for non-nested", () => {
92
+ const outermost = getOutermostType("SimpleType");
93
+ assert.equal(outermost, "SimpleType");
94
+ });
95
+ });
96
+ describe("getInnermostType", () => {
97
+ it("should return innermost type", () => {
98
+ const innermost = getInnermostType("A$B$C");
99
+ assert.equal(innermost, "C");
100
+ });
101
+ it("should return same type for non-nested", () => {
102
+ const innermost = getInnermostType("SimpleType");
103
+ assert.equal(innermost, "SimpleType");
104
+ });
105
+ });
106
+ describe("isNestedInside", () => {
107
+ it("should detect type nested inside another", () => {
108
+ const result = isNestedInside("List_1$Enumerator", "List_1");
109
+ assert.ok(result);
110
+ });
111
+ it("should return false for unrelated types", () => {
112
+ const result = isNestedInside("Dictionary_2$KeyCollection", "List_1");
113
+ assert.ok(!result);
114
+ });
115
+ it("should return false for non-nested type", () => {
116
+ const result = isNestedInside("SimpleType", "List_1");
117
+ assert.ok(!result);
118
+ });
119
+ });
120
+ describe("getParentType", () => {
121
+ it("should return parent type", () => {
122
+ const parent = getParentType("A$B$C");
123
+ assert.equal(parent, "A$B");
124
+ });
125
+ it("should return parent for single nesting", () => {
126
+ const parent = getParentType("List_1$Enumerator");
127
+ assert.equal(parent, "List_1");
128
+ });
129
+ it("should return undefined for non-nested type", () => {
130
+ const parent = getParentType("SimpleType");
131
+ assert.equal(parent, undefined);
132
+ });
133
+ });
134
+ });
135
+ //# sourceMappingURL=nested-types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nested-types.test.js","sourceRoot":"","sources":["../../src/types/nested-types.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
3
+ *
4
+ * This module tracks which ref, out, and In types are legitimately imported
5
+ * from @tsonic/types to ensure we only apply parameter modifiers to the
6
+ * correct types (not user-defined types with the same names).
7
+ */
8
+ import * as ts from "typescript";
9
+ /**
10
+ * Registry for tracking trusted parameter modifier types
11
+ */
12
+ export declare class ParameterModifierRegistry {
13
+ private static instance;
14
+ private trustedSymbols;
15
+ private aliasMap;
16
+ private constructor();
17
+ /**
18
+ * Get singleton instance
19
+ */
20
+ static getInstance(): ParameterModifierRegistry;
21
+ /**
22
+ * Reset the registry (useful for testing)
23
+ */
24
+ static reset(): void;
25
+ /**
26
+ * Process an import declaration to track ref/out/In from @tsonic/types
27
+ */
28
+ processImport(importDecl: ts.ImportDeclaration): void;
29
+ /**
30
+ * Check if a type name is a trusted parameter modifier type
31
+ */
32
+ isTrustedParameterModifier(typeName: string): boolean;
33
+ /**
34
+ * Get the parameter modifier kind for a trusted type
35
+ * @returns 'ref', 'out', 'in', or null if not a parameter modifier
36
+ */
37
+ getParameterModifierKind(typeName: string): "ref" | "out" | "in" | null;
38
+ /**
39
+ * Check if a TypeScript type is a parameter modifier type from @tsonic/types
40
+ * This checks both the type name and verifies it was imported from @tsonic/types
41
+ */
42
+ isParameterModifierType(type: ts.Type, _checker: ts.TypeChecker): boolean;
43
+ /**
44
+ * Get parameter modifier info from a type
45
+ */
46
+ getParameterModifierInfo(type: ts.Type, _checker: ts.TypeChecker): {
47
+ kind: "ref" | "out" | "in";
48
+ wrappedType: ts.Type;
49
+ } | null;
50
+ }
51
+ /**
52
+ * Get the global parameter modifier registry instance
53
+ */
54
+ export declare const getParameterModifierRegistry: () => ParameterModifierRegistry;
55
+ //# sourceMappingURL=parameter-modifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-modifiers.d.ts","sourceRoot":"","sources":["../../src/types/parameter-modifiers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IAGjE,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI;IAoCrD;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrD;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI;IAoBvE;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,GAAG,OAAO;IAWzE;;OAEG;IACH,wBAAwB,CACtB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,EAAE,CAAC,WAAW,GACvB;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAA;KAAE,GAAG,IAAI;CA8B/D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,yBAE/C,CAAC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Parameter Modifier Tracking - Track ref/out/in types from @tsonic/types
3
+ *
4
+ * This module tracks which ref, out, and In types are legitimately imported
5
+ * from @tsonic/types to ensure we only apply parameter modifiers to the
6
+ * correct types (not user-defined types with the same names).
7
+ */
8
+ import * as ts from "typescript";
9
+ /**
10
+ * Registry for tracking trusted parameter modifier types
11
+ */
12
+ export class ParameterModifierRegistry {
13
+ constructor() {
14
+ // Track which symbols are imported from @tsonic/types
15
+ this.trustedSymbols = new Set();
16
+ // Track aliases (e.g., import { ref as myRef })
17
+ this.aliasMap = new Map();
18
+ }
19
+ /**
20
+ * Get singleton instance
21
+ */
22
+ static getInstance() {
23
+ if (!ParameterModifierRegistry.instance) {
24
+ ParameterModifierRegistry.instance = new ParameterModifierRegistry();
25
+ }
26
+ return ParameterModifierRegistry.instance;
27
+ }
28
+ /**
29
+ * Reset the registry (useful for testing)
30
+ */
31
+ static reset() {
32
+ if (ParameterModifierRegistry.instance) {
33
+ ParameterModifierRegistry.instance.trustedSymbols.clear();
34
+ ParameterModifierRegistry.instance.aliasMap.clear();
35
+ }
36
+ }
37
+ /**
38
+ * Process an import declaration to track ref/out/In from @tsonic/types
39
+ */
40
+ processImport(importDecl) {
41
+ // Check if this is an import from @tsonic/types
42
+ if (!ts.isStringLiteral(importDecl.moduleSpecifier)) {
43
+ return;
44
+ }
45
+ const moduleSpecifier = importDecl.moduleSpecifier.text;
46
+ if (moduleSpecifier !== "@tsonic/types") {
47
+ return;
48
+ }
49
+ // Extract named imports
50
+ if (importDecl.importClause?.namedBindings) {
51
+ if (ts.isNamedImports(importDecl.importClause.namedBindings)) {
52
+ for (const spec of importDecl.importClause.namedBindings.elements) {
53
+ const importedName = (spec.propertyName ?? spec.name).text;
54
+ const localName = spec.name.text;
55
+ // Check if this is ref, out, or In
56
+ if (importedName === "ref" ||
57
+ importedName === "out" ||
58
+ importedName === "In") {
59
+ this.trustedSymbols.add(localName);
60
+ // Track alias if different from imported name
61
+ if (importedName !== localName) {
62
+ this.aliasMap.set(localName, importedName);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ /**
70
+ * Check if a type name is a trusted parameter modifier type
71
+ */
72
+ isTrustedParameterModifier(typeName) {
73
+ return this.trustedSymbols.has(typeName);
74
+ }
75
+ /**
76
+ * Get the parameter modifier kind for a trusted type
77
+ * @returns 'ref', 'out', 'in', or null if not a parameter modifier
78
+ */
79
+ getParameterModifierKind(typeName) {
80
+ if (!this.isTrustedParameterModifier(typeName)) {
81
+ return null;
82
+ }
83
+ // Check if it's an alias
84
+ const originalName = this.aliasMap.get(typeName) ?? typeName;
85
+ switch (originalName) {
86
+ case "ref":
87
+ return "ref";
88
+ case "out":
89
+ return "out";
90
+ case "In":
91
+ return "in";
92
+ default:
93
+ return null;
94
+ }
95
+ }
96
+ /**
97
+ * Check if a TypeScript type is a parameter modifier type from @tsonic/types
98
+ * This checks both the type name and verifies it was imported from @tsonic/types
99
+ */
100
+ isParameterModifierType(type, _checker) {
101
+ // Get the symbol name
102
+ const symbol = type.aliasSymbol || type.symbol;
103
+ if (!symbol) {
104
+ return false;
105
+ }
106
+ const typeName = symbol.getName();
107
+ return this.isTrustedParameterModifier(typeName);
108
+ }
109
+ /**
110
+ * Get parameter modifier info from a type
111
+ */
112
+ getParameterModifierInfo(type, _checker) {
113
+ const symbol = type.aliasSymbol || type.symbol;
114
+ if (!symbol) {
115
+ return null;
116
+ }
117
+ const typeName = symbol.getName();
118
+ const kind = this.getParameterModifierKind(typeName);
119
+ if (!kind) {
120
+ return null;
121
+ }
122
+ // Extract the wrapped type (T in ref<T>, out<T>, or In<T>)
123
+ let wrappedType;
124
+ if (type.aliasTypeArguments && type.aliasTypeArguments.length > 0) {
125
+ wrappedType = type.aliasTypeArguments[0];
126
+ }
127
+ else if (type.typeArguments &&
128
+ type.typeArguments.length > 0) {
129
+ wrappedType = type.typeArguments[0];
130
+ }
131
+ if (!wrappedType) {
132
+ return null;
133
+ }
134
+ return { kind, wrappedType };
135
+ }
136
+ }
137
+ ParameterModifierRegistry.instance = null;
138
+ /**
139
+ * Get the global parameter modifier registry instance
140
+ */
141
+ export const getParameterModifierRegistry = () => {
142
+ return ParameterModifierRegistry.getInstance();
143
+ };
144
+ //# sourceMappingURL=parameter-modifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-modifiers.js","sourceRoot":"","sources":["../../src/types/parameter-modifiers.ts"],"names":[],"mappings":"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"}