@tsonic/frontend 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (709) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/{src/dependency-graph.ts → dist/dependency-graph.d.ts} +3 -11
  3. package/dist/dependency-graph.d.ts.map +1 -0
  4. package/dist/dependency-graph.js +9 -0
  5. package/dist/dependency-graph.js.map +1 -0
  6. package/dist/dotnet-metadata.d.ts +71 -0
  7. package/dist/dotnet-metadata.d.ts.map +1 -0
  8. package/dist/dotnet-metadata.js +78 -0
  9. package/dist/dotnet-metadata.js.map +1 -0
  10. package/dist/graph/builder.d.ts +10 -0
  11. package/dist/graph/builder.d.ts.map +1 -0
  12. package/dist/graph/builder.js +54 -0
  13. package/dist/graph/builder.js.map +1 -0
  14. package/dist/graph/circular.d.ts +10 -0
  15. package/dist/graph/circular.d.ts.map +1 -0
  16. package/dist/graph/circular.js +40 -0
  17. package/dist/graph/circular.js.map +1 -0
  18. package/dist/graph/extraction/exports.d.ts +10 -0
  19. package/dist/graph/extraction/exports.d.ts.map +1 -0
  20. package/dist/graph/extraction/exports.js +46 -0
  21. package/dist/graph/extraction/exports.js.map +1 -0
  22. package/dist/graph/extraction/imports.d.ts +11 -0
  23. package/dist/graph/extraction/imports.d.ts.map +1 -0
  24. package/dist/graph/extraction/imports.js +63 -0
  25. package/dist/graph/extraction/imports.js.map +1 -0
  26. package/dist/graph/extraction/index.d.ts +7 -0
  27. package/dist/graph/extraction/index.d.ts.map +1 -0
  28. package/{src/graph/extraction/index.ts → dist/graph/extraction/index.js} +1 -1
  29. package/dist/graph/extraction/index.js.map +1 -0
  30. package/dist/graph/extraction/orchestrator.d.ts +11 -0
  31. package/dist/graph/extraction/orchestrator.d.ts.map +1 -0
  32. package/dist/graph/extraction/orchestrator.js +78 -0
  33. package/dist/graph/extraction/orchestrator.js.map +1 -0
  34. package/dist/graph/extraction.d.ts +6 -0
  35. package/dist/graph/extraction.d.ts.map +1 -0
  36. package/{src/graph/extraction.ts → dist/graph/extraction.js} +2 -6
  37. package/dist/graph/extraction.js.map +1 -0
  38. package/dist/graph/helpers.d.ts +17 -0
  39. package/dist/graph/helpers.d.ts.map +1 -0
  40. package/dist/graph/helpers.js +40 -0
  41. package/dist/graph/helpers.js.map +1 -0
  42. package/{src/graph/index.ts → dist/graph/index.d.ts} +3 -11
  43. package/dist/graph/index.d.ts.map +1 -0
  44. package/dist/graph/index.js +8 -0
  45. package/dist/graph/index.js.map +1 -0
  46. package/{src/graph/types.ts → dist/graph/types.d.ts} +4 -5
  47. package/dist/graph/types.d.ts.map +1 -0
  48. package/dist/graph/types.js +5 -0
  49. package/dist/graph/types.js.map +1 -0
  50. package/dist/index.d.ts +26 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +43 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/ir/binding-resolution.test.d.ts +5 -0
  55. package/dist/ir/binding-resolution.test.d.ts.map +1 -0
  56. package/dist/ir/binding-resolution.test.js +513 -0
  57. package/dist/ir/binding-resolution.test.js.map +1 -0
  58. package/dist/ir/builder/exports.d.ts +10 -0
  59. package/dist/ir/builder/exports.d.ts.map +1 -0
  60. package/dist/ir/builder/exports.js +75 -0
  61. package/dist/ir/builder/exports.js.map +1 -0
  62. package/dist/ir/builder/helpers.d.ts +13 -0
  63. package/dist/ir/builder/helpers.d.ts.map +1 -0
  64. package/dist/ir/builder/helpers.js +23 -0
  65. package/dist/ir/builder/helpers.js.map +1 -0
  66. package/dist/ir/builder/imports.d.ts +18 -0
  67. package/dist/ir/builder/imports.d.ts.map +1 -0
  68. package/dist/ir/builder/imports.js +121 -0
  69. package/dist/ir/builder/imports.js.map +1 -0
  70. package/{src/ir/builder/index.ts → dist/ir/builder/index.d.ts} +1 -1
  71. package/dist/ir/builder/index.d.ts.map +1 -0
  72. package/dist/ir/builder/index.js +9 -0
  73. package/dist/ir/builder/index.js.map +1 -0
  74. package/dist/ir/builder/orchestrator.d.ts +18 -0
  75. package/dist/ir/builder/orchestrator.d.ts.map +1 -0
  76. package/dist/ir/builder/orchestrator.js +121 -0
  77. package/dist/ir/builder/orchestrator.js.map +1 -0
  78. package/dist/ir/builder/statements.d.ts +14 -0
  79. package/dist/ir/builder/statements.d.ts.map +1 -0
  80. package/dist/ir/builder/statements.js +43 -0
  81. package/dist/ir/builder/statements.js.map +1 -0
  82. package/dist/ir/builder/types.d.ts +8 -0
  83. package/dist/ir/builder/types.d.ts.map +1 -0
  84. package/dist/ir/builder/types.js +5 -0
  85. package/dist/ir/builder/types.js.map +1 -0
  86. package/dist/ir/builder/validation.d.ts +10 -0
  87. package/dist/ir/builder/validation.d.ts.map +1 -0
  88. package/dist/ir/builder/validation.js +86 -0
  89. package/dist/ir/builder/validation.js.map +1 -0
  90. package/{src/ir/builder.ts → dist/ir/builder.d.ts} +2 -5
  91. package/dist/ir/builder.d.ts.map +1 -0
  92. package/dist/ir/builder.js +10 -0
  93. package/dist/ir/builder.js.map +1 -0
  94. package/dist/ir/builder.test.d.ts +5 -0
  95. package/dist/ir/builder.test.d.ts.map +1 -0
  96. package/dist/ir/builder.test.js +493 -0
  97. package/dist/ir/builder.test.js.map +1 -0
  98. package/dist/ir/converters/expressions/access.d.ts +10 -0
  99. package/dist/ir/converters/expressions/access.d.ts.map +1 -0
  100. package/dist/ir/converters/expressions/access.js +85 -0
  101. package/dist/ir/converters/expressions/access.js.map +1 -0
  102. package/dist/ir/converters/expressions/calls.d.ts +14 -0
  103. package/dist/ir/converters/expressions/calls.d.ts.map +1 -0
  104. package/dist/ir/converters/expressions/calls.js +104 -0
  105. package/dist/ir/converters/expressions/calls.js.map +1 -0
  106. package/dist/ir/converters/expressions/collections.d.ts +14 -0
  107. package/dist/ir/converters/expressions/collections.d.ts.map +1 -0
  108. package/dist/ir/converters/expressions/collections.js +70 -0
  109. package/dist/ir/converters/expressions/collections.js.map +1 -0
  110. package/dist/ir/converters/expressions/functions.d.ts +14 -0
  111. package/dist/ir/converters/expressions/functions.d.ts.map +1 -0
  112. package/dist/ir/converters/expressions/functions.js +42 -0
  113. package/dist/ir/converters/expressions/functions.js.map +1 -0
  114. package/dist/ir/converters/expressions/helpers.d.ts +43 -0
  115. package/dist/ir/converters/expressions/helpers.d.ts.map +1 -0
  116. package/dist/ir/converters/expressions/helpers.js +210 -0
  117. package/dist/ir/converters/expressions/helpers.js.map +1 -0
  118. package/dist/ir/converters/expressions/index.d.ts +12 -0
  119. package/dist/ir/converters/expressions/index.d.ts.map +1 -0
  120. package/dist/ir/converters/expressions/index.js +20 -0
  121. package/dist/ir/converters/expressions/index.js.map +1 -0
  122. package/dist/ir/converters/expressions/literals.d.ts +10 -0
  123. package/dist/ir/converters/expressions/literals.d.ts.map +1 -0
  124. package/dist/ir/converters/expressions/literals.js +17 -0
  125. package/dist/ir/converters/expressions/literals.js.map +1 -0
  126. package/dist/ir/converters/expressions/operators.d.ts +18 -0
  127. package/dist/ir/converters/expressions/operators.d.ts.map +1 -0
  128. package/dist/ir/converters/expressions/operators.js +111 -0
  129. package/dist/ir/converters/expressions/operators.js.map +1 -0
  130. package/dist/ir/converters/expressions/other.d.ts +14 -0
  131. package/dist/ir/converters/expressions/other.d.ts.map +1 -0
  132. package/dist/ir/converters/expressions/other.js +44 -0
  133. package/dist/ir/converters/expressions/other.js.map +1 -0
  134. package/dist/ir/converters/statements/control/blocks.d.ts +10 -0
  135. package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -0
  136. package/dist/ir/converters/statements/control/blocks.js +16 -0
  137. package/dist/ir/converters/statements/control/blocks.js.map +1 -0
  138. package/dist/ir/converters/statements/control/conditionals.d.ts +18 -0
  139. package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -0
  140. package/dist/ir/converters/statements/control/conditionals.js +46 -0
  141. package/dist/ir/converters/statements/control/conditionals.js.map +1 -0
  142. package/dist/ir/converters/statements/control/exceptions.d.ts +14 -0
  143. package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -0
  144. package/dist/ir/converters/statements/control/exceptions.js +33 -0
  145. package/dist/ir/converters/statements/control/exceptions.js.map +1 -0
  146. package/dist/ir/converters/statements/control/index.d.ts +8 -0
  147. package/dist/ir/converters/statements/control/index.d.ts.map +1 -0
  148. package/dist/ir/converters/statements/control/index.js +8 -0
  149. package/dist/ir/converters/statements/control/index.js.map +1 -0
  150. package/dist/ir/converters/statements/control/loops.d.ts +22 -0
  151. package/dist/ir/converters/statements/control/loops.d.ts.map +1 -0
  152. package/dist/ir/converters/statements/control/loops.js +75 -0
  153. package/dist/ir/converters/statements/control/loops.js.map +1 -0
  154. package/dist/ir/converters/statements/control.d.ts +6 -0
  155. package/dist/ir/converters/statements/control.d.ts.map +1 -0
  156. package/dist/ir/converters/statements/control.js +6 -0
  157. package/dist/ir/converters/statements/control.js.map +1 -0
  158. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +14 -0
  159. package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -0
  160. package/dist/ir/converters/statements/declarations/classes/constructors.js +91 -0
  161. package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -0
  162. package/{src/ir/converters/statements/declarations/classes/index.ts → dist/ir/converters/statements/declarations/classes/index.d.ts} +2 -5
  163. package/dist/ir/converters/statements/declarations/classes/index.d.ts.map +1 -0
  164. package/dist/ir/converters/statements/declarations/classes/index.js +9 -0
  165. package/dist/ir/converters/statements/declarations/classes/index.js.map +1 -0
  166. package/dist/ir/converters/statements/declarations/classes/methods.d.ts +10 -0
  167. package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -0
  168. package/dist/ir/converters/statements/declarations/classes/methods.js +39 -0
  169. package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -0
  170. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +10 -0
  171. package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -0
  172. package/dist/ir/converters/statements/declarations/classes/orchestrator.js +123 -0
  173. package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -0
  174. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +13 -0
  175. package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -0
  176. package/dist/ir/converters/statements/declarations/classes/override-detection.js +79 -0
  177. package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -0
  178. package/dist/ir/converters/statements/declarations/classes/properties.d.ts +10 -0
  179. package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -0
  180. package/dist/ir/converters/statements/declarations/classes/properties.js +42 -0
  181. package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -0
  182. package/dist/ir/converters/statements/declarations/classes.d.ts +6 -0
  183. package/dist/ir/converters/statements/declarations/classes.d.ts.map +1 -0
  184. package/{src/ir/converters/statements/declarations/classes.ts → dist/ir/converters/statements/declarations/classes.js} +1 -1
  185. package/dist/ir/converters/statements/declarations/classes.js.map +1 -0
  186. package/dist/ir/converters/statements/declarations/enums.d.ts +10 -0
  187. package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -0
  188. package/dist/ir/converters/statements/declarations/enums.js +24 -0
  189. package/dist/ir/converters/statements/declarations/enums.js.map +1 -0
  190. package/dist/ir/converters/statements/declarations/functions.d.ts +10 -0
  191. package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -0
  192. package/dist/ir/converters/statements/declarations/functions.js +28 -0
  193. package/dist/ir/converters/statements/declarations/functions.js.map +1 -0
  194. package/dist/ir/converters/statements/declarations/index.d.ts +11 -0
  195. package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -0
  196. package/{src/ir/converters/statements/declarations/index.ts → dist/ir/converters/statements/declarations/index.js} +2 -5
  197. package/dist/ir/converters/statements/declarations/index.js.map +1 -0
  198. package/dist/ir/converters/statements/declarations/interfaces.d.ts +15 -0
  199. package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -0
  200. package/dist/ir/converters/statements/declarations/interfaces.js +96 -0
  201. package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -0
  202. package/dist/ir/converters/statements/declarations/registry.d.ts +24 -0
  203. package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -0
  204. package/{src/ir/converters/statements/declarations/registry.ts → dist/ir/converters/statements/declarations/registry.js} +9 -16
  205. package/dist/ir/converters/statements/declarations/registry.js.map +1 -0
  206. package/dist/ir/converters/statements/declarations/type-aliases.d.ts +10 -0
  207. package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -0
  208. package/dist/ir/converters/statements/declarations/type-aliases.js +19 -0
  209. package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -0
  210. package/dist/ir/converters/statements/declarations/variables.d.ts +10 -0
  211. package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -0
  212. package/dist/ir/converters/statements/declarations/variables.js +45 -0
  213. package/dist/ir/converters/statements/declarations/variables.js.map +1 -0
  214. package/dist/ir/converters/statements/declarations.d.ts +6 -0
  215. package/dist/ir/converters/statements/declarations.d.ts.map +1 -0
  216. package/dist/ir/converters/statements/declarations.js +6 -0
  217. package/dist/ir/converters/statements/declarations.js.map +1 -0
  218. package/dist/ir/converters/statements/helpers.d.ts +34 -0
  219. package/dist/ir/converters/statements/helpers.d.ts.map +1 -0
  220. package/dist/ir/converters/statements/helpers.js +137 -0
  221. package/dist/ir/converters/statements/helpers.js.map +1 -0
  222. package/dist/ir/converters/statements/index.d.ts +7 -0
  223. package/dist/ir/converters/statements/index.d.ts.map +1 -0
  224. package/dist/ir/converters/statements/index.js +10 -0
  225. package/dist/ir/converters/statements/index.js.map +1 -0
  226. package/dist/ir/expression-converter.d.ts +13 -0
  227. package/dist/ir/expression-converter.d.ts.map +1 -0
  228. package/dist/ir/expression-converter.js +167 -0
  229. package/dist/ir/expression-converter.js.map +1 -0
  230. package/dist/ir/generic-validator.d.ts +38 -0
  231. package/dist/ir/generic-validator.d.ts.map +1 -0
  232. package/dist/ir/generic-validator.js +69 -0
  233. package/dist/ir/generic-validator.js.map +1 -0
  234. package/dist/ir/hierarchical-bindings-e2e.test.d.ts +6 -0
  235. package/dist/ir/hierarchical-bindings-e2e.test.d.ts.map +1 -0
  236. package/dist/ir/hierarchical-bindings-e2e.test.js +124 -0
  237. package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -0
  238. package/{src/ir/index.ts → dist/ir/index.d.ts} +1 -1
  239. package/dist/ir/index.d.ts.map +1 -0
  240. package/dist/ir/index.js +6 -0
  241. package/dist/ir/index.js.map +1 -0
  242. package/dist/ir/statement-converter.d.ts +14 -0
  243. package/dist/ir/statement-converter.d.ts.map +1 -0
  244. package/dist/ir/statement-converter.js +100 -0
  245. package/dist/ir/statement-converter.js.map +1 -0
  246. package/dist/ir/type-converter/arrays.d.ts +10 -0
  247. package/dist/ir/type-converter/arrays.d.ts.map +1 -0
  248. package/dist/ir/type-converter/arrays.js +13 -0
  249. package/dist/ir/type-converter/arrays.js.map +1 -0
  250. package/dist/ir/type-converter/clr-type-resolver.d.ts +15 -0
  251. package/dist/ir/type-converter/clr-type-resolver.d.ts.map +1 -0
  252. package/dist/ir/type-converter/clr-type-resolver.js +120 -0
  253. package/dist/ir/type-converter/clr-type-resolver.js.map +1 -0
  254. package/dist/ir/type-converter/converter.d.ts +6 -0
  255. package/dist/ir/type-converter/converter.d.ts.map +1 -0
  256. package/dist/ir/type-converter/converter.js +6 -0
  257. package/dist/ir/type-converter/converter.js.map +1 -0
  258. package/dist/ir/type-converter/functions.d.ts +10 -0
  259. package/dist/ir/type-converter/functions.d.ts.map +1 -0
  260. package/dist/ir/type-converter/functions.js +15 -0
  261. package/dist/ir/type-converter/functions.js.map +1 -0
  262. package/dist/ir/type-converter/index.d.ts +7 -0
  263. package/dist/ir/type-converter/index.d.ts.map +1 -0
  264. package/{src/ir/type-converter/index.ts → dist/ir/type-converter/index.js} +2 -6
  265. package/dist/ir/type-converter/index.js.map +1 -0
  266. package/dist/ir/type-converter/inference.d.ts +20 -0
  267. package/dist/ir/type-converter/inference.d.ts.map +1 -0
  268. package/dist/ir/type-converter/inference.js +104 -0
  269. package/dist/ir/type-converter/inference.js.map +1 -0
  270. package/dist/ir/type-converter/literals.d.ts +10 -0
  271. package/dist/ir/type-converter/literals.d.ts.map +1 -0
  272. package/dist/ir/type-converter/literals.js +31 -0
  273. package/dist/ir/type-converter/literals.js.map +1 -0
  274. package/dist/ir/type-converter/objects.d.ts +16 -0
  275. package/dist/ir/type-converter/objects.d.ts.map +1 -0
  276. package/dist/ir/type-converter/objects.js +81 -0
  277. package/dist/ir/type-converter/objects.js.map +1 -0
  278. package/dist/ir/type-converter/orchestrator.d.ts +13 -0
  279. package/dist/ir/type-converter/orchestrator.d.ts.map +1 -0
  280. package/dist/ir/type-converter/orchestrator.js +59 -0
  281. package/dist/ir/type-converter/orchestrator.js.map +1 -0
  282. package/dist/ir/type-converter/patterns.d.ts +10 -0
  283. package/dist/ir/type-converter/patterns.d.ts.map +1 -0
  284. package/dist/ir/type-converter/patterns.js +66 -0
  285. package/dist/ir/type-converter/patterns.js.map +1 -0
  286. package/dist/ir/type-converter/primitives.d.ts +18 -0
  287. package/dist/ir/type-converter/primitives.d.ts.map +1 -0
  288. package/dist/ir/type-converter/primitives.js +47 -0
  289. package/dist/ir/type-converter/primitives.js.map +1 -0
  290. package/dist/ir/type-converter/references.d.ts +11 -0
  291. package/dist/ir/type-converter/references.d.ts.map +1 -0
  292. package/dist/ir/type-converter/references.js +51 -0
  293. package/dist/ir/type-converter/references.js.map +1 -0
  294. package/dist/ir/type-converter/unions-intersections.d.ts +14 -0
  295. package/dist/ir/type-converter/unions-intersections.d.ts.map +1 -0
  296. package/dist/ir/type-converter/unions-intersections.js +22 -0
  297. package/dist/ir/type-converter/unions-intersections.js.map +1 -0
  298. package/dist/ir/type-converter.d.ts +6 -0
  299. package/dist/ir/type-converter.d.ts.map +1 -0
  300. package/dist/ir/type-converter.js +6 -0
  301. package/dist/ir/type-converter.js.map +1 -0
  302. package/dist/ir/types/expressions.d.ts +164 -0
  303. package/dist/ir/types/expressions.d.ts.map +1 -0
  304. package/dist/ir/types/expressions.js +5 -0
  305. package/dist/ir/types/expressions.js.map +1 -0
  306. package/dist/ir/types/guards.d.ts +8 -0
  307. package/dist/ir/types/guards.d.ts.map +1 -0
  308. package/dist/ir/types/guards.js +31 -0
  309. package/dist/ir/types/guards.js.map +1 -0
  310. package/dist/ir/types/helpers.d.ts +65 -0
  311. package/dist/ir/types/helpers.d.ts.map +1 -0
  312. package/dist/ir/types/helpers.js +5 -0
  313. package/dist/ir/types/helpers.js.map +1 -0
  314. package/dist/ir/types/index.d.ts +11 -0
  315. package/dist/ir/types/index.d.ts.map +1 -0
  316. package/dist/ir/types/index.js +7 -0
  317. package/dist/ir/types/index.js.map +1 -0
  318. package/dist/ir/types/ir-types.d.ts +69 -0
  319. package/dist/ir/types/ir-types.d.ts.map +1 -0
  320. package/dist/ir/types/ir-types.js +5 -0
  321. package/dist/ir/types/ir-types.js.map +1 -0
  322. package/dist/ir/types/module.d.ts +56 -0
  323. package/dist/ir/types/module.d.ts.map +1 -0
  324. package/dist/ir/types/module.js +5 -0
  325. package/dist/ir/types/module.js.map +1 -0
  326. package/dist/ir/types/statements.d.ts +182 -0
  327. package/dist/ir/types/statements.d.ts.map +1 -0
  328. package/dist/ir/types/statements.js +5 -0
  329. package/dist/ir/types/statements.js.map +1 -0
  330. package/dist/ir/types.d.ts +7 -0
  331. package/dist/ir/types.d.ts.map +1 -0
  332. package/dist/ir/types.js +7 -0
  333. package/dist/ir/types.js.map +1 -0
  334. package/dist/metadata/bindings-loader.d.ts +41 -0
  335. package/dist/metadata/bindings-loader.d.ts.map +1 -0
  336. package/dist/metadata/bindings-loader.js +308 -0
  337. package/dist/metadata/bindings-loader.js.map +1 -0
  338. package/dist/metadata/bindings-loader.test.d.ts +5 -0
  339. package/dist/metadata/bindings-loader.test.d.ts.map +1 -0
  340. package/dist/metadata/bindings-loader.test.js +117 -0
  341. package/dist/metadata/bindings-loader.test.js.map +1 -0
  342. package/{src/metadata/index.ts → dist/metadata/index.d.ts} +2 -9
  343. package/dist/metadata/index.d.ts.map +1 -0
  344. package/dist/metadata/index.js +7 -0
  345. package/dist/metadata/index.js.map +1 -0
  346. package/dist/metadata/library-loader.d.ts +42 -0
  347. package/dist/metadata/library-loader.d.ts.map +1 -0
  348. package/dist/metadata/library-loader.js +126 -0
  349. package/dist/metadata/library-loader.js.map +1 -0
  350. package/dist/metadata/loader.d.ts +26 -0
  351. package/dist/metadata/loader.d.ts.map +1 -0
  352. package/dist/metadata/loader.js +333 -0
  353. package/dist/metadata/loader.js.map +1 -0
  354. package/dist/metadata/loader.test.d.ts +5 -0
  355. package/dist/metadata/loader.test.d.ts.map +1 -0
  356. package/dist/metadata/loader.test.js +119 -0
  357. package/dist/metadata/loader.test.js.map +1 -0
  358. package/dist/program/bindings.d.ts +111 -0
  359. package/dist/program/bindings.d.ts.map +1 -0
  360. package/dist/program/bindings.js +167 -0
  361. package/dist/program/bindings.js.map +1 -0
  362. package/dist/program/bindings.test.d.ts +5 -0
  363. package/dist/program/bindings.test.d.ts.map +1 -0
  364. package/dist/program/bindings.test.js +435 -0
  365. package/dist/program/bindings.test.js.map +1 -0
  366. package/dist/program/config.d.ts +9 -0
  367. package/dist/program/config.d.ts.map +1 -0
  368. package/dist/program/config.js +29 -0
  369. package/dist/program/config.js.map +1 -0
  370. package/dist/program/creation.d.ts +17 -0
  371. package/dist/program/creation.d.ts.map +1 -0
  372. package/dist/program/creation.js +180 -0
  373. package/dist/program/creation.js.map +1 -0
  374. package/dist/program/dependency-graph.d.ts +19 -0
  375. package/dist/program/dependency-graph.d.ts.map +1 -0
  376. package/dist/program/dependency-graph.js +166 -0
  377. package/dist/program/dependency-graph.js.map +1 -0
  378. package/dist/program/diagnostics.d.ts +23 -0
  379. package/dist/program/diagnostics.d.ts.map +1 -0
  380. package/dist/program/diagnostics.js +65 -0
  381. package/dist/program/diagnostics.js.map +1 -0
  382. package/{src/program/index.ts → dist/program/index.d.ts} +3 -10
  383. package/dist/program/index.d.ts.map +1 -0
  384. package/dist/program/index.js +11 -0
  385. package/dist/program/index.js.map +1 -0
  386. package/dist/program/metadata.d.ts +10 -0
  387. package/dist/program/metadata.d.ts.map +1 -0
  388. package/dist/program/metadata.js +56 -0
  389. package/dist/program/metadata.js.map +1 -0
  390. package/dist/program/queries.d.ts +10 -0
  391. package/dist/program/queries.d.ts.map +1 -0
  392. package/dist/program/queries.js +12 -0
  393. package/dist/program/queries.js.map +1 -0
  394. package/dist/program/types.d.ts +35 -0
  395. package/dist/program/types.d.ts.map +1 -0
  396. package/dist/program/types.js +5 -0
  397. package/dist/program/types.js.map +1 -0
  398. package/{src/program.ts → dist/program.d.ts} +2 -7
  399. package/dist/program.d.ts.map +1 -0
  400. package/dist/program.js +6 -0
  401. package/dist/program.js.map +1 -0
  402. package/dist/resolver/dotnet-import-resolver.d.ts +74 -0
  403. package/dist/resolver/dotnet-import-resolver.d.ts.map +1 -0
  404. package/dist/resolver/dotnet-import-resolver.js +183 -0
  405. package/dist/resolver/dotnet-import-resolver.js.map +1 -0
  406. package/dist/resolver/import-resolution.d.ts +20 -0
  407. package/dist/resolver/import-resolution.d.ts.map +1 -0
  408. package/dist/resolver/import-resolution.js +102 -0
  409. package/dist/resolver/import-resolution.js.map +1 -0
  410. package/dist/resolver/index.d.ts +10 -0
  411. package/dist/resolver/index.d.ts.map +1 -0
  412. package/dist/resolver/index.js +9 -0
  413. package/dist/resolver/index.js.map +1 -0
  414. package/dist/resolver/namespace.d.ts +20 -0
  415. package/dist/resolver/namespace.d.ts.map +1 -0
  416. package/dist/resolver/namespace.js +35 -0
  417. package/dist/resolver/namespace.js.map +1 -0
  418. package/dist/resolver/namespace.test.d.ts +2 -0
  419. package/dist/resolver/namespace.test.d.ts.map +1 -0
  420. package/dist/resolver/namespace.test.js +42 -0
  421. package/dist/resolver/namespace.test.js.map +1 -0
  422. package/dist/resolver/naming.d.ts +12 -0
  423. package/dist/resolver/naming.d.ts.map +1 -0
  424. package/dist/resolver/naming.js +30 -0
  425. package/dist/resolver/naming.js.map +1 -0
  426. package/dist/resolver/path-resolution.d.ts +8 -0
  427. package/dist/resolver/path-resolution.d.ts.map +1 -0
  428. package/dist/resolver/path-resolution.js +16 -0
  429. package/dist/resolver/path-resolution.js.map +1 -0
  430. package/dist/resolver/types.d.ts +13 -0
  431. package/dist/resolver/types.d.ts.map +1 -0
  432. package/dist/resolver/types.js +5 -0
  433. package/dist/resolver/types.js.map +1 -0
  434. package/dist/resolver.d.ts +7 -0
  435. package/dist/resolver.d.ts.map +1 -0
  436. package/dist/resolver.js +6 -0
  437. package/dist/resolver.js.map +1 -0
  438. package/dist/resolver.test.d.ts +5 -0
  439. package/dist/resolver.test.d.ts.map +1 -0
  440. package/dist/resolver.test.js +93 -0
  441. package/dist/resolver.test.js.map +1 -0
  442. package/dist/symbol-table/builder.d.ts +10 -0
  443. package/dist/symbol-table/builder.d.ts.map +1 -0
  444. package/dist/symbol-table/builder.js +105 -0
  445. package/dist/symbol-table/builder.js.map +1 -0
  446. package/dist/symbol-table/creation.d.ts +13 -0
  447. package/dist/symbol-table/creation.d.ts.map +1 -0
  448. package/dist/symbol-table/creation.js +36 -0
  449. package/dist/symbol-table/creation.js.map +1 -0
  450. package/dist/symbol-table/helpers.d.ts +9 -0
  451. package/dist/symbol-table/helpers.d.ts.map +1 -0
  452. package/dist/symbol-table/helpers.js +15 -0
  453. package/dist/symbol-table/helpers.js.map +1 -0
  454. package/{src/symbol-table/index.ts → dist/symbol-table/index.d.ts} +2 -6
  455. package/dist/symbol-table/index.d.ts.map +1 -0
  456. package/dist/symbol-table/index.js +8 -0
  457. package/dist/symbol-table/index.js.map +1 -0
  458. package/dist/symbol-table/queries.d.ts +17 -0
  459. package/dist/symbol-table/queries.d.ts.map +1 -0
  460. package/dist/symbol-table/queries.js +27 -0
  461. package/dist/symbol-table/queries.js.map +1 -0
  462. package/dist/symbol-table/types.d.ts +18 -0
  463. package/dist/symbol-table/types.d.ts.map +1 -0
  464. package/dist/symbol-table/types.js +5 -0
  465. package/dist/symbol-table/types.js.map +1 -0
  466. package/{src/symbol-table.ts → dist/symbol-table.d.ts} +2 -9
  467. package/dist/symbol-table.d.ts.map +1 -0
  468. package/dist/symbol-table.js +6 -0
  469. package/dist/symbol-table.js.map +1 -0
  470. package/dist/types/bindings.d.ts +153 -0
  471. package/dist/types/bindings.d.ts.map +1 -0
  472. package/dist/types/bindings.js +14 -0
  473. package/dist/types/bindings.js.map +1 -0
  474. package/dist/types/diagnostic.d.ts +30 -0
  475. package/dist/types/diagnostic.d.ts.map +1 -0
  476. package/dist/types/diagnostic.js +37 -0
  477. package/dist/types/diagnostic.js.map +1 -0
  478. package/dist/types/diagnostic.test.d.ts +5 -0
  479. package/dist/types/diagnostic.test.d.ts.map +1 -0
  480. package/dist/types/diagnostic.test.js +94 -0
  481. package/dist/types/diagnostic.test.js.map +1 -0
  482. package/dist/types/explicit-views.d.ts +97 -0
  483. package/dist/types/explicit-views.d.ts.map +1 -0
  484. package/dist/types/explicit-views.js +163 -0
  485. package/dist/types/explicit-views.js.map +1 -0
  486. package/dist/types/explicit-views.test.d.ts +5 -0
  487. package/dist/types/explicit-views.test.d.ts.map +1 -0
  488. package/dist/types/explicit-views.test.js +67 -0
  489. package/dist/types/explicit-views.test.js.map +1 -0
  490. package/dist/types/metadata.d.ts +196 -0
  491. package/dist/types/metadata.d.ts.map +1 -0
  492. package/dist/types/metadata.js +10 -0
  493. package/dist/types/metadata.js.map +1 -0
  494. package/dist/types/module.d.ts +51 -0
  495. package/dist/types/module.d.ts.map +1 -0
  496. package/dist/types/module.js +28 -0
  497. package/dist/types/module.js.map +1 -0
  498. package/dist/types/nested-types.d.ts +111 -0
  499. package/dist/types/nested-types.d.ts.map +1 -0
  500. package/dist/types/nested-types.js +176 -0
  501. package/dist/types/nested-types.js.map +1 -0
  502. package/dist/types/nested-types.test.d.ts +5 -0
  503. package/dist/types/nested-types.test.d.ts.map +1 -0
  504. package/dist/types/nested-types.test.js +135 -0
  505. package/dist/types/nested-types.test.js.map +1 -0
  506. package/dist/types/parameter-modifiers.d.ts +55 -0
  507. package/dist/types/parameter-modifiers.d.ts.map +1 -0
  508. package/dist/types/parameter-modifiers.js +144 -0
  509. package/dist/types/parameter-modifiers.js.map +1 -0
  510. package/dist/types/ref-parameters.d.ts +123 -0
  511. package/dist/types/ref-parameters.d.ts.map +1 -0
  512. package/dist/types/ref-parameters.js +203 -0
  513. package/dist/types/ref-parameters.js.map +1 -0
  514. package/dist/types/ref-parameters.test.d.ts +5 -0
  515. package/dist/types/ref-parameters.test.d.ts.map +1 -0
  516. package/dist/types/ref-parameters.test.js +147 -0
  517. package/dist/types/ref-parameters.test.js.map +1 -0
  518. package/dist/types/result.d.ts +26 -0
  519. package/dist/types/result.d.ts.map +1 -0
  520. package/dist/types/result.js +19 -0
  521. package/dist/types/result.js.map +1 -0
  522. package/dist/types/result.test.d.ts +5 -0
  523. package/dist/types/result.test.d.ts.map +1 -0
  524. package/dist/types/result.test.js +121 -0
  525. package/dist/types/result.test.js.map +1 -0
  526. package/dist/types/support-types.d.ts +103 -0
  527. package/dist/types/support-types.d.ts.map +1 -0
  528. package/dist/types/support-types.js +220 -0
  529. package/dist/types/support-types.js.map +1 -0
  530. package/dist/types/support-types.test.d.ts +5 -0
  531. package/dist/types/support-types.test.d.ts.map +1 -0
  532. package/dist/types/support-types.test.js +50 -0
  533. package/dist/types/support-types.test.js.map +1 -0
  534. package/dist/types/test-debug.d.ts.map +1 -0
  535. package/dist/types/test-debug.js.map +1 -0
  536. package/dist/types/test-harness.d.ts +34 -0
  537. package/dist/types/test-harness.d.ts.map +1 -0
  538. package/dist/types/test-harness.js +127 -0
  539. package/dist/types/test-harness.js.map +1 -0
  540. package/dist/validation/aot-safety.d.ts +24 -0
  541. package/dist/validation/aot-safety.d.ts.map +1 -0
  542. package/dist/validation/aot-safety.js +114 -0
  543. package/dist/validation/aot-safety.js.map +1 -0
  544. package/dist/validation/exports.d.ts +11 -0
  545. package/dist/validation/exports.d.ts.map +1 -0
  546. package/dist/validation/exports.js +56 -0
  547. package/dist/validation/exports.js.map +1 -0
  548. package/dist/validation/features.d.ts +11 -0
  549. package/dist/validation/features.d.ts.map +1 -0
  550. package/dist/validation/features.js +36 -0
  551. package/dist/validation/features.js.map +1 -0
  552. package/dist/validation/generics.d.ts +11 -0
  553. package/dist/validation/generics.d.ts.map +1 -0
  554. package/dist/validation/generics.js +31 -0
  555. package/dist/validation/generics.js.map +1 -0
  556. package/dist/validation/helpers.d.ts +15 -0
  557. package/dist/validation/helpers.d.ts.map +1 -0
  558. package/dist/validation/helpers.js +18 -0
  559. package/dist/validation/helpers.js.map +1 -0
  560. package/dist/validation/imports.d.ts +15 -0
  561. package/dist/validation/imports.d.ts.map +1 -0
  562. package/dist/validation/imports.js +42 -0
  563. package/dist/validation/imports.js.map +1 -0
  564. package/dist/validation/index.d.ts +11 -0
  565. package/dist/validation/index.d.ts.map +1 -0
  566. package/{src/validation/index.ts → dist/validation/index.js} +1 -1
  567. package/dist/validation/index.js.map +1 -0
  568. package/dist/validation/orchestrator.d.ts +15 -0
  569. package/dist/validation/orchestrator.d.ts.map +1 -0
  570. package/dist/validation/orchestrator.js +30 -0
  571. package/dist/validation/orchestrator.js.map +1 -0
  572. package/dist/validation/static-safety.d.ts +23 -0
  573. package/dist/validation/static-safety.d.ts.map +1 -0
  574. package/dist/validation/static-safety.js +165 -0
  575. package/dist/validation/static-safety.js.map +1 -0
  576. package/dist/validator.d.ts +6 -0
  577. package/dist/validator.d.ts.map +1 -0
  578. package/dist/validator.js +6 -0
  579. package/dist/validator.js.map +1 -0
  580. package/dist/validator.test.d.ts +11 -0
  581. package/dist/validator.test.d.ts.map +1 -0
  582. package/dist/validator.test.js +340 -0
  583. package/dist/validator.test.js.map +1 -0
  584. package/package.json +4 -1
  585. package/src/dotnet-metadata.ts +0 -121
  586. package/src/graph/builder.ts +0 -81
  587. package/src/graph/circular.ts +0 -58
  588. package/src/graph/extraction/exports.ts +0 -55
  589. package/src/graph/extraction/imports.ts +0 -81
  590. package/src/graph/extraction/orchestrator.ts +0 -99
  591. package/src/graph/helpers.ts +0 -51
  592. package/src/index.ts +0 -80
  593. package/src/ir/binding-resolution.test.ts +0 -585
  594. package/src/ir/builder/exports.ts +0 -78
  595. package/src/ir/builder/helpers.ts +0 -27
  596. package/src/ir/builder/imports.ts +0 -153
  597. package/src/ir/builder/orchestrator.ts +0 -178
  598. package/src/ir/builder/statements.ts +0 -55
  599. package/src/ir/builder/types.ts +0 -8
  600. package/src/ir/builder/validation.ts +0 -129
  601. package/src/ir/builder.test.ts +0 -581
  602. package/src/ir/converters/expressions/access.ts +0 -99
  603. package/src/ir/converters/expressions/calls.ts +0 -137
  604. package/src/ir/converters/expressions/collections.ts +0 -84
  605. package/src/ir/converters/expressions/functions.ts +0 -62
  606. package/src/ir/converters/expressions/helpers.ts +0 -264
  607. package/src/ir/converters/expressions/index.ts +0 -43
  608. package/src/ir/converters/expressions/literals.ts +0 -22
  609. package/src/ir/converters/expressions/operators.ts +0 -147
  610. package/src/ir/converters/expressions/other.ts +0 -60
  611. package/src/ir/converters/statements/control/blocks.ts +0 -22
  612. package/src/ir/converters/statements/control/conditionals.ts +0 -67
  613. package/src/ir/converters/statements/control/exceptions.ts +0 -43
  614. package/src/ir/converters/statements/control/index.ts +0 -17
  615. package/src/ir/converters/statements/control/loops.ts +0 -99
  616. package/src/ir/converters/statements/control.ts +0 -17
  617. package/src/ir/converters/statements/declarations/classes/constructors.ts +0 -120
  618. package/src/ir/converters/statements/declarations/classes/methods.ts +0 -61
  619. package/src/ir/converters/statements/declarations/classes/orchestrator.ts +0 -166
  620. package/src/ir/converters/statements/declarations/classes/override-detection.ts +0 -116
  621. package/src/ir/converters/statements/declarations/classes/properties.ts +0 -63
  622. package/src/ir/converters/statements/declarations/enums.ts +0 -29
  623. package/src/ir/converters/statements/declarations/functions.ts +0 -39
  624. package/src/ir/converters/statements/declarations/interfaces.ts +0 -131
  625. package/src/ir/converters/statements/declarations/type-aliases.ts +0 -25
  626. package/src/ir/converters/statements/declarations/variables.ts +0 -60
  627. package/src/ir/converters/statements/declarations.ts +0 -16
  628. package/src/ir/converters/statements/helpers.ts +0 -174
  629. package/src/ir/converters/statements/index.ts +0 -40
  630. package/src/ir/expression-converter.ts +0 -207
  631. package/src/ir/generic-validator.ts +0 -100
  632. package/src/ir/hierarchical-bindings-e2e.test.ts +0 -163
  633. package/src/ir/statement-converter.ts +0 -128
  634. package/src/ir/type-converter/arrays.ts +0 -20
  635. package/src/ir/type-converter/converter.ts +0 -10
  636. package/src/ir/type-converter/functions.ts +0 -22
  637. package/src/ir/type-converter/inference.ts +0 -122
  638. package/src/ir/type-converter/literals.ts +0 -40
  639. package/src/ir/type-converter/objects.ts +0 -107
  640. package/src/ir/type-converter/orchestrator.ts +0 -85
  641. package/src/ir/type-converter/patterns.ts +0 -73
  642. package/src/ir/type-converter/primitives.ts +0 -57
  643. package/src/ir/type-converter/references.ts +0 -64
  644. package/src/ir/type-converter/unions-intersections.ts +0 -34
  645. package/src/ir/type-converter.ts +0 -13
  646. package/src/ir/types/expressions.ts +0 -215
  647. package/src/ir/types/guards.ts +0 -39
  648. package/src/ir/types/helpers.ts +0 -135
  649. package/src/ir/types/index.ts +0 -108
  650. package/src/ir/types/ir-types.ts +0 -96
  651. package/src/ir/types/module.ts +0 -57
  652. package/src/ir/types/statements.ts +0 -238
  653. package/src/ir/types.ts +0 -97
  654. package/src/metadata/bindings-loader.test.ts +0 -144
  655. package/src/metadata/bindings-loader.ts +0 -357
  656. package/src/metadata/library-loader.ts +0 -153
  657. package/src/metadata/loader.test.ts +0 -156
  658. package/src/metadata/loader.ts +0 -382
  659. package/src/program/bindings.test.ts +0 -512
  660. package/src/program/bindings.ts +0 -253
  661. package/src/program/config.ts +0 -30
  662. package/src/program/creation.ts +0 -249
  663. package/src/program/dependency-graph.ts +0 -245
  664. package/src/program/diagnostics.ts +0 -103
  665. package/src/program/metadata.ts +0 -68
  666. package/src/program/queries.ts +0 -18
  667. package/src/program/types.ts +0 -38
  668. package/src/resolver/dotnet-import-resolver.ts +0 -226
  669. package/src/resolver/import-resolution.ts +0 -177
  670. package/src/resolver/index.ts +0 -18
  671. package/src/resolver/namespace.test.ts +0 -86
  672. package/src/resolver/namespace.ts +0 -42
  673. package/src/resolver/naming.ts +0 -38
  674. package/src/resolver/path-resolution.ts +0 -22
  675. package/src/resolver/types.ts +0 -15
  676. package/src/resolver.test.ts +0 -155
  677. package/src/resolver.ts +0 -14
  678. package/src/symbol-table/builder.ts +0 -114
  679. package/src/symbol-table/creation.ts +0 -42
  680. package/src/symbol-table/helpers.ts +0 -18
  681. package/src/symbol-table/queries.ts +0 -42
  682. package/src/symbol-table/types.ts +0 -28
  683. package/src/types/bindings.ts +0 -172
  684. package/src/types/diagnostic.test.ts +0 -164
  685. package/src/types/diagnostic.ts +0 -153
  686. package/src/types/explicit-views.test.ts +0 -113
  687. package/src/types/explicit-views.ts +0 -218
  688. package/src/types/metadata.ts +0 -229
  689. package/src/types/module.ts +0 -99
  690. package/src/types/nested-types.test.ts +0 -194
  691. package/src/types/nested-types.ts +0 -215
  692. package/src/types/parameter-modifiers.ts +0 -173
  693. package/src/types/ref-parameters.test.ts +0 -192
  694. package/src/types/ref-parameters.ts +0 -268
  695. package/src/types/result.test.ts +0 -157
  696. package/src/types/result.ts +0 -48
  697. package/src/types/support-types.test.ts +0 -81
  698. package/src/types/support-types.ts +0 -288
  699. package/src/types/test-harness.ts +0 -180
  700. package/src/validation/exports.ts +0 -98
  701. package/src/validation/features.ts +0 -89
  702. package/src/validation/generics.ts +0 -40
  703. package/src/validation/helpers.ts +0 -31
  704. package/src/validation/imports.ts +0 -97
  705. package/src/validation/orchestrator.ts +0 -51
  706. package/src/validation/static-safety.ts +0 -267
  707. package/src/validator.test.ts +0 -468
  708. package/src/validator.ts +0 -15
  709. package/tsconfig.json +0 -13
@@ -1,192 +0,0 @@
1
- /**
2
- * Tests for ref/out parameter handling
3
- */
4
-
5
- import { describe, it } from "mocha";
6
- import { strict as assert } from "assert";
7
- import {
8
- getParameterModifier,
9
- requiresTSByRef,
10
- generateCSharpParameter,
11
- generateCSharpArgument,
12
- } from "./ref-parameters.js";
13
- import type { ParameterMetadata } from "./metadata.js";
14
-
15
- describe("Ref Parameters", () => {
16
- describe("getParameterModifier", () => {
17
- it("should return 'out' for out parameter", () => {
18
- const param: ParameterMetadata = {
19
- name: "result",
20
- type: "System.Int32",
21
- isRef: false,
22
- isOut: true,
23
- isParams: false,
24
- };
25
-
26
- const modifier = getParameterModifier(param);
27
-
28
- assert.equal(modifier, "out");
29
- });
30
-
31
- it("should return 'ref' for ref parameter", () => {
32
- const param: ParameterMetadata = {
33
- name: "value",
34
- type: "System.Int32",
35
- isRef: true,
36
- isOut: false,
37
- isParams: false,
38
- };
39
-
40
- const modifier = getParameterModifier(param);
41
-
42
- assert.equal(modifier, "ref");
43
- });
44
-
45
- it("should return 'in' for in parameter", () => {
46
- const param: ParameterMetadata = {
47
- name: "data",
48
- type: "LargeStruct",
49
- isRef: false,
50
- isOut: false,
51
- isIn: true,
52
- isParams: false,
53
- };
54
-
55
- const modifier = getParameterModifier(param);
56
-
57
- assert.equal(modifier, "in");
58
- });
59
-
60
- it("should return 'none' for regular parameter", () => {
61
- const param: ParameterMetadata = {
62
- name: "input",
63
- type: "System.String",
64
- isRef: false,
65
- isOut: false,
66
- isParams: false,
67
- };
68
-
69
- const modifier = getParameterModifier(param);
70
-
71
- assert.equal(modifier, "none");
72
- });
73
-
74
- it("should prioritize 'out' over 'ref'", () => {
75
- // This should not happen in valid metadata, but test defensive behavior
76
- const param: ParameterMetadata = {
77
- name: "weird",
78
- type: "System.Int32",
79
- isRef: true,
80
- isOut: true,
81
- isParams: false,
82
- };
83
-
84
- const modifier = getParameterModifier(param);
85
-
86
- assert.equal(modifier, "out");
87
- });
88
- });
89
-
90
- describe("requiresTSByRef", () => {
91
- it("should return true for out parameter", () => {
92
- const param: ParameterMetadata = {
93
- name: "result",
94
- type: "System.Int32",
95
- isRef: false,
96
- isOut: true,
97
- isParams: false,
98
- };
99
-
100
- assert.ok(requiresTSByRef(param));
101
- });
102
-
103
- it("should return true for ref parameter", () => {
104
- const param: ParameterMetadata = {
105
- name: "value",
106
- type: "System.Int32",
107
- isRef: true,
108
- isOut: false,
109
- isParams: false,
110
- };
111
-
112
- assert.ok(requiresTSByRef(param));
113
- });
114
-
115
- it("should return true for in parameter", () => {
116
- const param: ParameterMetadata = {
117
- name: "data",
118
- type: "LargeStruct",
119
- isRef: false,
120
- isOut: false,
121
- isIn: true,
122
- isParams: false,
123
- };
124
-
125
- assert.ok(requiresTSByRef(param));
126
- });
127
-
128
- it("should return false for regular parameter", () => {
129
- const param: ParameterMetadata = {
130
- name: "input",
131
- type: "System.String",
132
- isRef: false,
133
- isOut: false,
134
- isParams: false,
135
- };
136
-
137
- assert.ok(!requiresTSByRef(param));
138
- });
139
- });
140
-
141
- describe("generateCSharpParameter", () => {
142
- it("should generate out parameter", () => {
143
- const param = generateCSharpParameter("out", "int", "result");
144
-
145
- assert.equal(param, "out int result");
146
- });
147
-
148
- it("should generate ref parameter", () => {
149
- const param = generateCSharpParameter("ref", "string", "value");
150
-
151
- assert.equal(param, "ref string value");
152
- });
153
-
154
- it("should generate in parameter", () => {
155
- const param = generateCSharpParameter("in", "LargeStruct", "data");
156
-
157
- assert.equal(param, "in LargeStruct data");
158
- });
159
-
160
- it("should generate regular parameter without keyword", () => {
161
- const param = generateCSharpParameter("none", "string", "input");
162
-
163
- assert.equal(param, "string input");
164
- });
165
- });
166
-
167
- describe("generateCSharpArgument", () => {
168
- it("should generate out argument", () => {
169
- const arg = generateCSharpArgument("out", "result");
170
-
171
- assert.equal(arg, "out result");
172
- });
173
-
174
- it("should generate ref argument", () => {
175
- const arg = generateCSharpArgument("ref", "value");
176
-
177
- assert.equal(arg, "ref value");
178
- });
179
-
180
- it("should generate in argument", () => {
181
- const arg = generateCSharpArgument("in", "data");
182
-
183
- assert.equal(arg, "in data");
184
- });
185
-
186
- it("should generate regular argument without keyword", () => {
187
- const arg = generateCSharpArgument("none", "input");
188
-
189
- assert.equal(arg, "input");
190
- });
191
- });
192
- });
@@ -1,268 +0,0 @@
1
- /**
2
- * Ref/Out Parameter Handling - Generate C# ref/out/in keywords from TSByRef wrapper.
3
- *
4
- * C# supports pass-by-reference parameters (ref, out, in) which don't have direct
5
- * JavaScript equivalents. TypeScript code uses TSByRef<T> wrapper:
6
- *
7
- * TypeScript: const result = { value: 0 }; TryParse("42", result);
8
- * C#: int result; TryParse("42", out result);
9
- *
10
- * @see spec/ref-out-parameters.md for complete documentation
11
- */
12
-
13
- import * as ts from "typescript";
14
- import type { ParameterMetadata } from "./metadata.js";
15
- import { isTSByRef, getTSByRefWrappedType } from "./support-types.js";
16
-
17
- /**
18
- * Parameter modifier for C# emission.
19
- */
20
- export type ParameterModifier = "ref" | "out" | "in" | "none";
21
-
22
- /**
23
- * Information about a ref/out/in parameter.
24
- */
25
- export type RefParameterInfo = {
26
- readonly isRef: boolean;
27
- readonly isOut: boolean;
28
- readonly isIn: boolean;
29
- readonly modifier: ParameterModifier;
30
- readonly wrappedType: ts.Type;
31
- };
32
-
33
- /**
34
- * Get ref/out/in information from parameter metadata.
35
- *
36
- * @param paramMetadata - Parameter metadata from .metadata.json
37
- * @returns Parameter modifier to use in C# emission
38
- */
39
- export const getParameterModifier = (
40
- paramMetadata: ParameterMetadata
41
- ): ParameterModifier => {
42
- if (paramMetadata.isOut) {
43
- return "out";
44
- }
45
- if (paramMetadata.isRef) {
46
- return "ref";
47
- }
48
- if (paramMetadata.isIn) {
49
- return "in";
50
- }
51
- return "none";
52
- };
53
-
54
- /**
55
- * Check if parameter requires TSByRef wrapper based on metadata.
56
- *
57
- * @param paramMetadata - Parameter metadata from .metadata.json
58
- * @returns True if parameter should use TSByRef<T> in TypeScript
59
- */
60
- export const requiresTSByRef = (paramMetadata: ParameterMetadata): boolean => {
61
- return (
62
- paramMetadata.isRef || paramMetadata.isOut || (paramMetadata.isIn ?? false)
63
- );
64
- };
65
-
66
- /**
67
- * Get ref parameter info from TypeScript type and metadata.
68
- *
69
- * @param paramType - TypeScript parameter type
70
- * @param paramMetadata - Parameter metadata from .metadata.json
71
- * @param checker - TypeScript type checker
72
- * @returns Ref parameter info if applicable, undefined otherwise
73
- */
74
- export const getRefParameterInfo = (
75
- paramType: ts.Type,
76
- paramMetadata: ParameterMetadata,
77
- checker: ts.TypeChecker
78
- ): RefParameterInfo | undefined => {
79
- // Check if type is TSByRef<T>
80
- if (!isTSByRef(paramType, checker)) {
81
- return undefined;
82
- }
83
-
84
- // Extract wrapped type
85
- const wrappedType = getTSByRefWrappedType(paramType, checker);
86
- if (!wrappedType) {
87
- return undefined;
88
- }
89
-
90
- return {
91
- isRef: paramMetadata.isRef,
92
- isOut: paramMetadata.isOut,
93
- isIn: paramMetadata.isIn ?? false,
94
- modifier: getParameterModifier(paramMetadata),
95
- wrappedType,
96
- };
97
- };
98
-
99
- /**
100
- * Extract variable name from TSByRef argument expression.
101
- *
102
- * TypeScript: TryParse("42", result) // where result = { value: 0 }
103
- * C#: TryParse("42", out result)
104
- *
105
- * @param argumentNode - Argument AST node
106
- * @returns Variable identifier name, or undefined if not extractable
107
- */
108
- export const extractRefArgumentVariable = (
109
- argumentNode: ts.Expression
110
- ): string | undefined => {
111
- // Handle simple identifier
112
- if (ts.isIdentifier(argumentNode)) {
113
- return argumentNode.text;
114
- }
115
-
116
- // Handle property access (unlikely for ref params, but possible)
117
- if (ts.isPropertyAccessExpression(argumentNode)) {
118
- return argumentNode.name.text;
119
- }
120
-
121
- // Cannot extract variable name from complex expressions
122
- return undefined;
123
- };
124
-
125
- /**
126
- * Check if argument expression is a TSByRef wrapper object literal.
127
- *
128
- * Detects: { value: 0 } or { value: initialValue }
129
- *
130
- * @param argumentNode - Argument AST node
131
- * @returns True if argument is object literal with 'value' property
132
- */
133
- export const isTSByRefObjectLiteral = (
134
- argumentNode: ts.Expression
135
- ): boolean => {
136
- if (!ts.isObjectLiteralExpression(argumentNode)) {
137
- return false;
138
- }
139
-
140
- // Check if object has exactly one property named 'value'
141
- const properties = argumentNode.properties;
142
- if (properties.length !== 1) {
143
- return false;
144
- }
145
-
146
- const prop = properties[0];
147
- if (!prop || !ts.isPropertyAssignment(prop)) {
148
- return false;
149
- }
150
-
151
- if (!ts.isIdentifier(prop.name)) {
152
- return false;
153
- }
154
-
155
- return prop.name.text === "value";
156
- };
157
-
158
- /**
159
- * Generate C# parameter declaration with modifier.
160
- *
161
- * @param modifier - Parameter modifier (ref/out/in/none)
162
- * @param typeName - C# type name
163
- * @param paramName - Parameter name
164
- * @returns C# parameter declaration
165
- */
166
- export const generateCSharpParameter = (
167
- modifier: ParameterModifier,
168
- typeName: string,
169
- paramName: string
170
- ): string => {
171
- if (modifier === "none") {
172
- return `${typeName} ${paramName}`;
173
- }
174
- return `${modifier} ${typeName} ${paramName}`;
175
- };
176
-
177
- /**
178
- * Generate C# argument with modifier for method call.
179
- *
180
- * @param modifier - Parameter modifier (ref/out/in/none)
181
- * @param argumentExpression - C# argument expression
182
- * @returns C# argument with modifier
183
- */
184
- export const generateCSharpArgument = (
185
- modifier: ParameterModifier,
186
- argumentExpression: string
187
- ): string => {
188
- if (modifier === "none") {
189
- return argumentExpression;
190
- }
191
- return `${modifier} ${argumentExpression}`;
192
- };
193
-
194
- /**
195
- * Check if variable declaration is needed for out parameter.
196
- *
197
- * For out parameters in TypeScript:
198
- * const result = { value: 0 }; // Declaration
199
- * TryParse("42", result); // Usage
200
- *
201
- * For out parameters in C#:
202
- * TryParse("42", out int result); // Inline declaration
203
- *
204
- * @param argumentNode - Argument AST node
205
- * @returns True if variable should be declared before the call
206
- */
207
- export const needsOutVariableDeclaration = (
208
- argumentNode: ts.Expression
209
- ): boolean => {
210
- // If argument is already a simple identifier, it's already declared
211
- if (ts.isIdentifier(argumentNode)) {
212
- return false;
213
- }
214
-
215
- // If argument is an object literal { value: ... }, we need to declare the variable
216
- if (isTSByRefObjectLiteral(argumentNode)) {
217
- return true;
218
- }
219
-
220
- return false;
221
- };
222
-
223
- /**
224
- * Extract initial value from TSByRef object literal.
225
- *
226
- * { value: 42 } → 42
227
- * { value: getDefault() } → getDefault()
228
- *
229
- * @param argumentNode - Argument AST node (must be object literal)
230
- * @returns Initial value expression, or undefined if no initializer
231
- */
232
- export const extractTSByRefInitialValue = (
233
- argumentNode: ts.Expression
234
- ): ts.Expression | undefined => {
235
- if (!ts.isObjectLiteralExpression(argumentNode)) {
236
- return undefined;
237
- }
238
-
239
- const properties = argumentNode.properties;
240
- if (properties.length !== 1) {
241
- return undefined;
242
- }
243
-
244
- const prop = properties[0];
245
- if (!prop || !ts.isPropertyAssignment(prop)) {
246
- return undefined;
247
- }
248
-
249
- return prop.initializer;
250
- };
251
-
252
- /**
253
- * Determine if ref/out parameter should use inline declaration in C#.
254
- *
255
- * C# 7.0+ supports inline out var:
256
- * if (int.TryParse("42", out var result)) { ... }
257
- *
258
- * We use this when the TypeScript code declares the wrapper inline.
259
- *
260
- * @param argumentNode - Argument AST node
261
- * @returns True if should use inline declaration
262
- */
263
- export const shouldUseInlineDeclaration = (
264
- argumentNode: ts.Expression
265
- ): boolean => {
266
- // Use inline declaration if argument is an object literal
267
- return isTSByRefObjectLiteral(argumentNode);
268
- };
@@ -1,157 +0,0 @@
1
- /**
2
- * Tests for Result type
3
- */
4
-
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import {
8
- ok,
9
- error,
10
- map,
11
- flatMap,
12
- mapError,
13
- unwrapOr,
14
- unwrapOrElse,
15
- isOk,
16
- isError,
17
- } from "./result.js";
18
-
19
- describe("Result", () => {
20
- describe("ok and error constructors", () => {
21
- it("should create ok result", () => {
22
- const result = ok<number, string>(42);
23
- expect(result.ok).to.equal(true);
24
- if (result.ok) {
25
- expect(result.value).to.equal(42);
26
- }
27
- });
28
-
29
- it("should create error result", () => {
30
- const result = error<number, string>("Something went wrong");
31
- expect(result.ok).to.equal(false);
32
- if (!result.ok) {
33
- expect(result.error).to.equal("Something went wrong");
34
- }
35
- });
36
- });
37
-
38
- describe("map", () => {
39
- it("should map ok value", () => {
40
- const result = ok<number, string>(5);
41
- const mapped = map(result, (x) => x * 2);
42
-
43
- expect(mapped.ok).to.equal(true);
44
- if (mapped.ok) {
45
- expect(mapped.value).to.equal(10);
46
- }
47
- });
48
-
49
- it("should pass through error", () => {
50
- const result = error<number, string>("Error");
51
- const mapped = map(result, (x) => x * 2);
52
-
53
- expect(mapped.ok).to.equal(false);
54
- if (!mapped.ok) {
55
- expect(mapped.error).to.equal("Error");
56
- }
57
- });
58
- });
59
-
60
- describe("flatMap", () => {
61
- it("should flatMap ok value", () => {
62
- const result = ok<number, string>(5);
63
- const mapped = flatMap(result, (x) => ok(x.toString()));
64
-
65
- expect(mapped.ok).to.equal(true);
66
- if (mapped.ok) {
67
- expect(mapped.value).to.equal("5");
68
- }
69
- });
70
-
71
- it("should handle flatMap returning error", () => {
72
- const result = ok<number, string>(5);
73
- const mapped = flatMap(result, (x) =>
74
- x > 10 ? ok(x) : error("Too small")
75
- );
76
-
77
- expect(mapped.ok).to.equal(false);
78
- if (!mapped.ok) {
79
- expect(mapped.error).to.equal("Too small");
80
- }
81
- });
82
-
83
- it("should pass through original error", () => {
84
- const result = error<number, string>("Original error");
85
- const mapped = flatMap(result, (x) => ok(x * 2));
86
-
87
- expect(mapped.ok).to.equal(false);
88
- if (!mapped.ok) {
89
- expect(mapped.error).to.equal("Original error");
90
- }
91
- });
92
- });
93
-
94
- describe("mapError", () => {
95
- it("should map error value", () => {
96
- const result = error<number, string>("Error");
97
- const mapped = mapError(result, (e) => e.toUpperCase());
98
-
99
- expect(mapped.ok).to.equal(false);
100
- if (!mapped.ok) {
101
- expect(mapped.error).to.equal("ERROR");
102
- }
103
- });
104
-
105
- it("should pass through ok value", () => {
106
- const result = ok<number, string>(42);
107
- const mapped = mapError(result, (e) => e.toUpperCase());
108
-
109
- expect(mapped.ok).to.equal(true);
110
- if (mapped.ok) {
111
- expect(mapped.value).to.equal(42);
112
- }
113
- });
114
- });
115
-
116
- describe("unwrapOr", () => {
117
- it("should return value for ok", () => {
118
- const result = ok<number, string>(42);
119
- expect(unwrapOr(result, 0)).to.equal(42);
120
- });
121
-
122
- it("should return default for error", () => {
123
- const result = error<number, string>("Error");
124
- expect(unwrapOr(result, 0)).to.equal(0);
125
- });
126
- });
127
-
128
- describe("unwrapOrElse", () => {
129
- it("should return value for ok", () => {
130
- const result = ok<number, string>(42);
131
- expect(unwrapOrElse(result, (_e) => 0)).to.equal(42);
132
- });
133
-
134
- it("should call function for error", () => {
135
- const result = error<number, string>("Error");
136
- expect(unwrapOrElse(result, () => 0)).to.equal(0);
137
- });
138
- });
139
-
140
- describe("isOk and isError", () => {
141
- it("should identify ok results", () => {
142
- const okResult = ok<number, string>(42);
143
- const errorResult = error<number, string>("Error");
144
-
145
- expect(isOk(okResult)).to.equal(true);
146
- expect(isOk(errorResult)).to.equal(false);
147
- });
148
-
149
- it("should identify error results", () => {
150
- const okResult = ok<number, string>(42);
151
- const errorResult = error<number, string>("Error");
152
-
153
- expect(isError(okResult)).to.equal(false);
154
- expect(isError(errorResult)).to.equal(true);
155
- });
156
- });
157
- });
@@ -1,48 +0,0 @@
1
- /**
2
- * Result type for functional error handling
3
- */
4
-
5
- export type Result<T, E> =
6
- | { readonly ok: true; readonly value: T }
7
- | { readonly ok: false; readonly error: E };
8
-
9
- export const ok = <T, E>(value: T): Result<T, E> => ({
10
- ok: true,
11
- value,
12
- });
13
-
14
- export const error = <T, E>(error: E): Result<T, E> => ({
15
- ok: false,
16
- error,
17
- });
18
-
19
- export const map = <T, U, E>(
20
- result: Result<T, E>,
21
- fn: (value: T) => U
22
- ): Result<U, E> => (result.ok ? ok(fn(result.value)) : result);
23
-
24
- export const flatMap = <T, U, E>(
25
- result: Result<T, E>,
26
- fn: (value: T) => Result<U, E>
27
- ): Result<U, E> => (result.ok ? fn(result.value) : result);
28
-
29
- export const mapError = <T, E, F>(
30
- result: Result<T, E>,
31
- fn: (error: E) => F
32
- ): Result<T, F> => (result.ok ? result : error(fn(result.error)));
33
-
34
- export const unwrapOr = <T, E>(result: Result<T, E>, defaultValue: T): T =>
35
- result.ok ? result.value : defaultValue;
36
-
37
- export const unwrapOrElse = <T, E>(
38
- result: Result<T, E>,
39
- fn: (error: E) => T
40
- ): T => (result.ok ? result.value : fn(result.error));
41
-
42
- export const isOk = <T, E>(
43
- result: Result<T, E>
44
- ): result is { readonly ok: true; readonly value: T } => result.ok;
45
-
46
- export const isError = <T, E>(
47
- result: Result<T, E>
48
- ): result is { readonly ok: false; readonly error: E } => !result.ok;