@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,15 @@
1
+ /**
2
+ * Validation orchestrator - coordinates all validation functions
3
+ */
4
+ import * as ts from "typescript";
5
+ import { TsonicProgram } from "../program.js";
6
+ import { DiagnosticsCollector } from "../types/diagnostic.js";
7
+ /**
8
+ * Validate an entire Tsonic program
9
+ */
10
+ export declare const validateProgram: (program: TsonicProgram) => DiagnosticsCollector;
11
+ /**
12
+ * Validate a single source file
13
+ */
14
+ export declare const validateSourceFile: (sourceFile: ts.SourceFile, program: TsonicProgram, collector: DiagnosticsCollector) => DiagnosticsCollector;
15
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/validation/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,oBAAoB,EAErB,MAAM,wBAAwB,CAAC;AAOhC;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,aAAa,KACrB,oBAOF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,EACtB,WAAW,oBAAoB,KAC9B,oBAaF,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Validation orchestrator - coordinates all validation functions
3
+ */
4
+ import { createDiagnosticsCollector, } from "../types/diagnostic.js";
5
+ import { validateImports } from "./imports.js";
6
+ import { validateExports } from "./exports.js";
7
+ import { validateUnsupportedFeatures } from "./features.js";
8
+ import { validateGenerics } from "./generics.js";
9
+ import { validateStaticSafety } from "./static-safety.js";
10
+ /**
11
+ * Validate an entire Tsonic program
12
+ */
13
+ export const validateProgram = (program) => {
14
+ const collector = createDiagnosticsCollector();
15
+ return program.sourceFiles.reduce((acc, sourceFile) => validateSourceFile(sourceFile, program, acc), collector);
16
+ };
17
+ /**
18
+ * Validate a single source file
19
+ */
20
+ export const validateSourceFile = (sourceFile, program, collector) => {
21
+ const validationFns = [
22
+ validateImports,
23
+ validateExports,
24
+ validateUnsupportedFeatures,
25
+ validateGenerics,
26
+ validateStaticSafety,
27
+ ];
28
+ return validationFns.reduce((acc, fn) => fn(sourceFile, program, acc), collector);
29
+ };
30
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/validation/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAEL,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAsB,EACA,EAAE;IACxB,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;IAE/C,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,EACjE,SAAS,CACV,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,UAAyB,EACzB,OAAsB,EACtB,SAA+B,EACT,EAAE;IACxB,MAAM,aAAa,GAAG;QACpB,eAAe;QACf,eAAe;QACf,2BAA2B;QAC3B,gBAAgB;QAChB,oBAAoB;KACrB,CAAC;IAEF,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,EACzC,SAAS,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Static Safety Validation
3
+ *
4
+ * Detects patterns that violate static typing requirements:
5
+ * - TSN7401: 'any' type usage
6
+ * - TSN7403: Object literal without contextual nominal type
7
+ * - TSN7405: Untyped function/arrow/lambda parameter
8
+ * - TSN7413: Dictionary key must be string type
9
+ *
10
+ * This ensures NativeAOT-compatible, predictable-performance output.
11
+ *
12
+ * Note: We intentionally do NOT validate JS built-in usage (arr.map, str.length)
13
+ * or dictionary dot-access patterns. These will fail naturally in C# if used
14
+ * incorrectly, which is an acceptable failure mode.
15
+ */
16
+ import * as ts from "typescript";
17
+ import { TsonicProgram } from "../program.js";
18
+ import { DiagnosticsCollector } from "../types/diagnostic.js";
19
+ /**
20
+ * Validate a source file for static safety violations.
21
+ */
22
+ export declare const validateStaticSafety: (sourceFile: ts.SourceFile, program: TsonicProgram, collector: DiagnosticsCollector) => DiagnosticsCollector;
23
+ //# sourceMappingURL=static-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-safety.d.ts","sourceRoot":"","sources":["../../src/validation/static-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,oBAAoB,EAGrB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,aAAa,EACtB,WAAW,oBAAoB,KAC9B,oBA6IF,CAAC"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Static Safety Validation
3
+ *
4
+ * Detects patterns that violate static typing requirements:
5
+ * - TSN7401: 'any' type usage
6
+ * - TSN7403: Object literal without contextual nominal type
7
+ * - TSN7405: Untyped function/arrow/lambda parameter
8
+ * - TSN7413: Dictionary key must be string type
9
+ *
10
+ * This ensures NativeAOT-compatible, predictable-performance output.
11
+ *
12
+ * Note: We intentionally do NOT validate JS built-in usage (arr.map, str.length)
13
+ * or dictionary dot-access patterns. These will fail naturally in C# if used
14
+ * incorrectly, which is an acceptable failure mode.
15
+ */
16
+ import * as ts from "typescript";
17
+ import { addDiagnostic, createDiagnostic, } from "../types/diagnostic.js";
18
+ import { getNodeLocation } from "./helpers.js";
19
+ /**
20
+ * Validate a source file for static safety violations.
21
+ */
22
+ export const validateStaticSafety = (sourceFile, program, collector) => {
23
+ const checker = program.checker;
24
+ const visitor = (node, accCollector) => {
25
+ let currentCollector = accCollector;
26
+ // TSN7401: Check for explicit 'any' type annotations
27
+ if (node.kind === ts.SyntaxKind.AnyKeyword) {
28
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7401", "error", "'any' type is not supported. Provide a concrete type, use 'unknown', or define a nominal type.", getNodeLocation(sourceFile, node), "Replace 'any' with a specific type like 'unknown', 'object', or a custom interface."));
29
+ }
30
+ // TSN7401: Check for 'as any' type assertions
31
+ if (ts.isAsExpression(node) &&
32
+ node.type.kind === ts.SyntaxKind.AnyKeyword) {
33
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7401", "error", "'as any' type assertion is not supported. Use a specific type assertion.", getNodeLocation(sourceFile, node), "Replace 'as any' with a specific type like 'as unknown' or 'as YourType'."));
34
+ }
35
+ // TSN7405: Check for untyped function parameters
36
+ // Covers: function declarations, methods, constructors, arrow functions, function expressions
37
+ if (ts.isParameter(node) && !node.type) {
38
+ const parent = node.parent;
39
+ const isFunctionLike = ts.isFunctionDeclaration(parent) ||
40
+ ts.isMethodDeclaration(parent) ||
41
+ ts.isConstructorDeclaration(parent) ||
42
+ ts.isArrowFunction(parent) ||
43
+ ts.isFunctionExpression(parent) ||
44
+ ts.isGetAccessorDeclaration(parent) ||
45
+ ts.isSetAccessorDeclaration(parent);
46
+ if (isFunctionLike) {
47
+ const paramName = ts.isIdentifier(node.name) ? node.name.text : "param";
48
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7405", "error", `Parameter '${paramName}' must have an explicit type annotation.`, getNodeLocation(sourceFile, node), "Add a type annotation to this parameter."));
49
+ }
50
+ }
51
+ // TSN7403: Check for object literals without contextual nominal type
52
+ if (ts.isObjectLiteralExpression(node)) {
53
+ const contextualType = checker.getContextualType(node);
54
+ // Must have a contextual type that resolves to a nominal type or dictionary
55
+ if (!contextualType ||
56
+ !isNominalOrDictionaryType(contextualType, checker)) {
57
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7403", "error", "Object literal requires a contextual nominal type (interface, type alias, or class). Anonymous object types are not supported.", getNodeLocation(sourceFile, node), "Add a type annotation like 'const x: MyInterface = { ... }' or define an interface/type alias."));
58
+ }
59
+ }
60
+ // TSN7413: Check for non-string dictionary keys
61
+ // Record<K, V> where K is not string
62
+ if (ts.isTypeReferenceNode(node)) {
63
+ const typeName = node.typeName;
64
+ if (ts.isIdentifier(typeName) && typeName.text === "Record") {
65
+ const typeArgs = node.typeArguments;
66
+ if (typeArgs && typeArgs.length >= 1) {
67
+ const keyTypeNode = typeArgs[0];
68
+ if (!isStringKeyType(keyTypeNode)) {
69
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7413", "error", "Dictionary key type must be 'string'. Non-string key types are not supported for NativeAOT compatibility.", getNodeLocation(sourceFile, keyTypeNode), "Use Record<string, V> instead of Record<number, V> or other key types."));
70
+ }
71
+ }
72
+ }
73
+ }
74
+ // TSN7413: Check for non-string index signatures
75
+ // { [k: number]: V } is not allowed
76
+ if (ts.isIndexSignatureDeclaration(node)) {
77
+ const keyParam = node.parameters[0];
78
+ if (keyParam?.type && !isStringKeyType(keyParam.type)) {
79
+ currentCollector = addDiagnostic(currentCollector, createDiagnostic("TSN7413", "error", "Index signature key type must be 'string'. Non-string key types are not supported for NativeAOT compatibility.", getNodeLocation(sourceFile, keyParam.type), "Use { [key: string]: V } instead of { [key: number]: V }."));
80
+ }
81
+ }
82
+ // Continue visiting children
83
+ ts.forEachChild(node, (child) => {
84
+ currentCollector = visitor(child, currentCollector);
85
+ });
86
+ return currentCollector;
87
+ };
88
+ return visitor(sourceFile, collector);
89
+ };
90
+ /**
91
+ * Check if a contextual type is a nominal type (interface, type alias, class)
92
+ * or a dictionary type that we can emit.
93
+ *
94
+ * Returns false for anonymous object types like `{ x: number }` without a name.
95
+ */
96
+ const isNominalOrDictionaryType = (type, checker) => {
97
+ // Check if it's a dictionary type (Record<K,V> or index signature)
98
+ if (isTsDictionaryType(type)) {
99
+ return true;
100
+ }
101
+ // Check if the type has a symbol with a declaration (named type)
102
+ const symbol = type.getSymbol() ?? type.aliasSymbol;
103
+ if (symbol) {
104
+ const declarations = symbol.getDeclarations();
105
+ if (declarations && declarations.length > 0) {
106
+ const decl = declarations[0];
107
+ // Accept: interface, type alias, class
108
+ if (ts.isInterfaceDeclaration(decl) ||
109
+ ts.isTypeAliasDeclaration(decl) ||
110
+ ts.isClassDeclaration(decl)) {
111
+ return true;
112
+ }
113
+ }
114
+ }
115
+ // Check for primitive types (allowed)
116
+ if (type.flags & ts.TypeFlags.String ||
117
+ type.flags & ts.TypeFlags.Number ||
118
+ type.flags & ts.TypeFlags.Boolean ||
119
+ type.flags & ts.TypeFlags.Null ||
120
+ type.flags & ts.TypeFlags.Undefined ||
121
+ type.flags & ts.TypeFlags.Void) {
122
+ return true;
123
+ }
124
+ // Check for array types (allowed)
125
+ if (checker.isArrayType(type) || checker.isTupleType(type)) {
126
+ return true;
127
+ }
128
+ return false;
129
+ };
130
+ /**
131
+ * Check if a type is a TS dictionary type (Record<K,V> or index signature).
132
+ *
133
+ * TS dictionary types:
134
+ * - Record<string, T> → has aliasSymbol named "Record"
135
+ * - { [k: string]: T } → has string index signature
136
+ */
137
+ const isTsDictionaryType = (type) => {
138
+ // Check for Record<K,V> utility type
139
+ if (type.aliasSymbol?.name === "Record") {
140
+ return true;
141
+ }
142
+ // Check for index signature type like { [k: string]: T }
143
+ const stringIndexType = type.getStringIndexType();
144
+ const numberIndexType = type.getNumberIndexType();
145
+ return !!(stringIndexType || numberIndexType);
146
+ };
147
+ /**
148
+ * Check if a type node represents a string key type.
149
+ * Only `string` keyword is allowed for dictionary keys.
150
+ */
151
+ const isStringKeyType = (typeNode) => {
152
+ // Direct string keyword
153
+ if (typeNode.kind === ts.SyntaxKind.StringKeyword) {
154
+ return true;
155
+ }
156
+ // Type reference to "string"
157
+ if (ts.isTypeReferenceNode(typeNode)) {
158
+ const typeName = typeNode.typeName;
159
+ if (ts.isIdentifier(typeName) && typeName.text === "string") {
160
+ return true;
161
+ }
162
+ }
163
+ return false;
164
+ };
165
+ //# sourceMappingURL=static-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-safety.js","sourceRoot":"","sources":["../../src/validation/static-safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ESM and TypeScript validation rules
3
+ * Main dispatcher - re-exports from validation/ subdirectory
4
+ */
5
+ export { validateProgram, validateSourceFile, validateImports, validateImportDeclaration, validateExports, validateUnsupportedFeatures, validateGenerics, getNodeLocation, } from "./validation/index.js";
6
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ESM and TypeScript validation rules
3
+ * Main dispatcher - re-exports from validation/ subdirectory
4
+ */
5
+ export { validateProgram, validateSourceFile, validateImports, validateImportDeclaration, validateExports, validateUnsupportedFeatures, validateGenerics, getNodeLocation, } from "./validation/index.js";
6
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tests for validator - now only checks truly unsupported features
3
+ *
4
+ * Most generic constructs are now handled via:
5
+ * - Monomorphisation
6
+ * - CRTP pattern
7
+ * - Tuple specialisations
8
+ * - Structural adapters
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.d.ts","sourceRoot":"","sources":["../src/validator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,340 @@
1
+ /**
2
+ * Tests for validator - now only checks truly unsupported features
3
+ *
4
+ * Most generic constructs are now handled via:
5
+ * - Monomorphisation
6
+ * - CRTP pattern
7
+ * - Tuple specialisations
8
+ * - Structural adapters
9
+ */
10
+ import { describe, it } from "mocha";
11
+ import { expect } from "chai";
12
+ import * as ts from "typescript";
13
+ import { validateProgram } from "./validator.js";
14
+ import { DotnetMetadataRegistry } from "./dotnet-metadata.js";
15
+ import { BindingRegistry } from "./program/bindings.js";
16
+ import { createDotNetImportResolver } from "./resolver/dotnet-import-resolver.js";
17
+ /**
18
+ * Helper to create a test program from source code
19
+ */
20
+ const createTestProgram = (source, fileName = "test.ts") => {
21
+ const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
22
+ const compilerOptions = {
23
+ target: ts.ScriptTarget.ES2022,
24
+ module: ts.ModuleKind.NodeNext,
25
+ strict: true,
26
+ noEmit: true,
27
+ };
28
+ const host = ts.createCompilerHost(compilerOptions);
29
+ const originalGetSourceFile = host.getSourceFile;
30
+ host.getSourceFile = (name, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
31
+ if (name === fileName) {
32
+ return sourceFile;
33
+ }
34
+ return originalGetSourceFile.call(host, name, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
35
+ };
36
+ const program = ts.createProgram([fileName], compilerOptions, host);
37
+ return {
38
+ program,
39
+ checker: program.getTypeChecker(),
40
+ options: {
41
+ sourceRoot: "/test",
42
+ rootNamespace: "Test",
43
+ },
44
+ sourceFiles: [sourceFile],
45
+ metadata: new DotnetMetadataRegistry(),
46
+ bindings: new BindingRegistry(),
47
+ dotnetResolver: createDotNetImportResolver("/test"),
48
+ };
49
+ };
50
+ describe("Generic Validation", () => {
51
+ describe("TSN7203 - Symbol Index Signatures (still blocked)", () => {
52
+ it("should detect symbol index signatures", () => {
53
+ const source = `
54
+ export interface WithSymbolIndex {
55
+ [key: symbol]: string;
56
+ }
57
+ `;
58
+ const program = createTestProgram(source);
59
+ const diagnostics = validateProgram(program);
60
+ const symbolDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7203");
61
+ expect(symbolDiag).not.to.equal(undefined);
62
+ expect(symbolDiag?.message).to.include("Symbol keys are not supported in C#");
63
+ });
64
+ it("should not flag string index signatures", () => {
65
+ const source = `
66
+ interface WithStringIndex {
67
+ [key: string]: number;
68
+ }
69
+ `;
70
+ const program = createTestProgram(source);
71
+ const diagnostics = validateProgram(program);
72
+ const symbolDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7203");
73
+ expect(symbolDiag).to.equal(undefined);
74
+ });
75
+ it("should not flag number index signatures", () => {
76
+ const source = `
77
+ interface WithNumberIndex {
78
+ [key: number]: string;
79
+ }
80
+ `;
81
+ const program = createTestProgram(source);
82
+ const diagnostics = validateProgram(program);
83
+ const symbolDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7203");
84
+ expect(symbolDiag).to.equal(undefined);
85
+ });
86
+ });
87
+ describe("Previously-blocked constructs (now ALLOWED)", () => {
88
+ it("should allow recursive mapped types (handled via monomorphisation)", () => {
89
+ const source = `
90
+ type RecursiveMapped<T> = {
91
+ [K in keyof T]: RecursiveMapped<T[K]>
92
+ };
93
+ `;
94
+ const program = createTestProgram(source);
95
+ const diagnostics = validateProgram(program);
96
+ // Should NOT have TSN7101 error anymore
97
+ const recursiveDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7101");
98
+ expect(recursiveDiag).to.equal(undefined);
99
+ });
100
+ it("should allow conditional types with infer (handled via monomorphisation)", () => {
101
+ const source = `
102
+ type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
103
+ `;
104
+ const program = createTestProgram(source);
105
+ const diagnostics = validateProgram(program);
106
+ // Should NOT have TSN7102 error anymore
107
+ const inferDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7102");
108
+ expect(inferDiag).to.equal(undefined);
109
+ });
110
+ it("should allow this typing (handled via CRTP pattern)", () => {
111
+ const source = `
112
+ interface Chainable {
113
+ add(value: number): this;
114
+ }
115
+ `;
116
+ const program = createTestProgram(source);
117
+ const diagnostics = validateProgram(program);
118
+ // Should NOT have TSN7103 error anymore
119
+ const thisDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7103");
120
+ expect(thisDiag).to.equal(undefined);
121
+ });
122
+ it("should allow variadic type parameters (handled via tuple specialisations)", () => {
123
+ const source = `
124
+ type VariadicFunction<T extends unknown[]> = (...args: T) => void;
125
+ `;
126
+ const program = createTestProgram(source);
127
+ const diagnostics = validateProgram(program);
128
+ // Should NOT have TSN7104 error anymore
129
+ const variadicDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7104");
130
+ expect(variadicDiag).to.equal(undefined);
131
+ });
132
+ it("should allow recursive structural aliases (emit as C# classes)", () => {
133
+ const source = `
134
+ type Node = {
135
+ name: string;
136
+ children: Node[];
137
+ };
138
+ `;
139
+ const program = createTestProgram(source);
140
+ const diagnostics = validateProgram(program);
141
+ // Should NOT have TSN7201 error anymore
142
+ const recursiveDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7201");
143
+ expect(recursiveDiag).to.equal(undefined);
144
+ });
145
+ it("should allow complex generic code without errors", () => {
146
+ const source = `
147
+ // Conditional type with infer
148
+ type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
149
+
150
+ // This typing
151
+ interface Builder {
152
+ set(key: string, value: any): this;
153
+ }
154
+
155
+ // Variadic parameters
156
+ function concat<T extends any[]>(...arrays: T): T {
157
+ return arrays;
158
+ }
159
+
160
+ // Recursive structural alias
161
+ type Tree = {
162
+ value: number;
163
+ left?: Tree;
164
+ right?: Tree;
165
+ };
166
+ `;
167
+ const program = createTestProgram(source);
168
+ const diagnostics = validateProgram(program);
169
+ // Should have NO generic-specific diagnostics (TSN71xx, TSN72xx)
170
+ // Note: TSN74xx (static safety) may fire due to 'any' in test code, but that's expected
171
+ const genericDiags = diagnostics.diagnostics.filter((d) => d.code.startsWith("TSN71") || d.code.startsWith("TSN72"));
172
+ expect(genericDiags).to.have.lengthOf(0);
173
+ });
174
+ });
175
+ });
176
+ describe("Static Safety Validation", () => {
177
+ describe("TSN7401 - 'any' type banned", () => {
178
+ it("should reject explicit any type annotation", () => {
179
+ const source = `
180
+ export const x: any = 1;
181
+ `;
182
+ const program = createTestProgram(source);
183
+ const diagnostics = validateProgram(program);
184
+ const anyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7401");
185
+ expect(anyDiag).not.to.equal(undefined);
186
+ expect(anyDiag?.message).to.include("'any' type is not supported");
187
+ });
188
+ it("should reject 'as any' type assertion", () => {
189
+ const source = `
190
+ export const x = (123 as any);
191
+ `;
192
+ const program = createTestProgram(source);
193
+ const diagnostics = validateProgram(program);
194
+ const anyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7401");
195
+ expect(anyDiag).not.to.equal(undefined);
196
+ expect(anyDiag?.message).to.include("'as any'");
197
+ });
198
+ it("should allow unknown type", () => {
199
+ const source = `
200
+ export function process(data: unknown): void {
201
+ console.log(data);
202
+ }
203
+ `;
204
+ const program = createTestProgram(source);
205
+ const diagnostics = validateProgram(program);
206
+ const anyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7401");
207
+ expect(anyDiag).to.equal(undefined);
208
+ });
209
+ });
210
+ describe("TSN7403 - Object literal requires nominal type", () => {
211
+ it("should reject object literal without contextual type", () => {
212
+ const source = `
213
+ const a = { x: 1 };
214
+ `;
215
+ const program = createTestProgram(source);
216
+ const diagnostics = validateProgram(program);
217
+ const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
218
+ expect(objDiag).not.to.equal(undefined);
219
+ expect(objDiag?.message).to.include("contextual nominal type");
220
+ });
221
+ it("should allow object literal with interface type", () => {
222
+ const source = `
223
+ interface Point { x: number; y: number }
224
+ const p: Point = { x: 1, y: 2 };
225
+ `;
226
+ const program = createTestProgram(source);
227
+ const diagnostics = validateProgram(program);
228
+ const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
229
+ expect(objDiag).to.equal(undefined);
230
+ });
231
+ it("should allow object literal with Record type", () => {
232
+ const source = `
233
+ const d: Record<string, number> = { a: 1, b: 2 };
234
+ `;
235
+ const program = createTestProgram(source);
236
+ const diagnostics = validateProgram(program);
237
+ const objDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7403");
238
+ expect(objDiag).to.equal(undefined);
239
+ });
240
+ });
241
+ describe("TSN7405 - Untyped function parameters", () => {
242
+ it("should reject untyped function parameter", () => {
243
+ const source = `
244
+ export function greet(name): void {
245
+ console.log(name);
246
+ }
247
+ `;
248
+ const program = createTestProgram(source);
249
+ const diagnostics = validateProgram(program);
250
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
251
+ expect(paramDiag).not.to.equal(undefined);
252
+ expect(paramDiag?.message).to.include("explicit type annotation");
253
+ });
254
+ it("should reject untyped arrow function parameter", () => {
255
+ const source = `
256
+ const fn = (x) => x + 1;
257
+ `;
258
+ const program = createTestProgram(source);
259
+ const diagnostics = validateProgram(program);
260
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
261
+ expect(paramDiag).not.to.equal(undefined);
262
+ expect(paramDiag?.message).to.include("explicit type annotation");
263
+ });
264
+ it("should reject untyped function expression parameter", () => {
265
+ const source = `
266
+ const fn = function(x) { return x + 1; };
267
+ `;
268
+ const program = createTestProgram(source);
269
+ const diagnostics = validateProgram(program);
270
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
271
+ expect(paramDiag).not.to.equal(undefined);
272
+ expect(paramDiag?.message).to.include("explicit type annotation");
273
+ });
274
+ it("should allow typed function parameter", () => {
275
+ const source = `
276
+ export function greet(name: string): void {
277
+ console.log(name);
278
+ }
279
+ `;
280
+ const program = createTestProgram(source);
281
+ const diagnostics = validateProgram(program);
282
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
283
+ expect(paramDiag).to.equal(undefined);
284
+ });
285
+ it("should allow typed arrow function parameter", () => {
286
+ const source = `
287
+ const fn = (x: number): number => x + 1;
288
+ `;
289
+ const program = createTestProgram(source);
290
+ const diagnostics = validateProgram(program);
291
+ const paramDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7405");
292
+ expect(paramDiag).to.equal(undefined);
293
+ });
294
+ });
295
+ describe("TSN7413 - Dictionary key must be string", () => {
296
+ it("should reject Record with number key", () => {
297
+ const source = `
298
+ const d: Record<number, string> = {};
299
+ `;
300
+ const program = createTestProgram(source);
301
+ const diagnostics = validateProgram(program);
302
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
303
+ expect(keyDiag).not.to.equal(undefined);
304
+ expect(keyDiag?.message).to.include("string");
305
+ });
306
+ it("should reject index signature with number key", () => {
307
+ const source = `
308
+ interface NumIndexed {
309
+ [key: number]: string;
310
+ }
311
+ `;
312
+ const program = createTestProgram(source);
313
+ const diagnostics = validateProgram(program);
314
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
315
+ expect(keyDiag).not.to.equal(undefined);
316
+ expect(keyDiag?.message).to.include("string");
317
+ });
318
+ it("should allow Record with string key", () => {
319
+ const source = `
320
+ const d: Record<string, number> = {};
321
+ `;
322
+ const program = createTestProgram(source);
323
+ const diagnostics = validateProgram(program);
324
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
325
+ expect(keyDiag).to.equal(undefined);
326
+ });
327
+ it("should allow index signature with string key", () => {
328
+ const source = `
329
+ interface StringIndexed {
330
+ [key: string]: number;
331
+ }
332
+ `;
333
+ const program = createTestProgram(source);
334
+ const diagnostics = validateProgram(program);
335
+ const keyDiag = diagnostics.diagnostics.find((d) => d.code === "TSN7413");
336
+ expect(keyDiag).to.equal(undefined);
337
+ });
338
+ });
339
+ });
340
+ //# sourceMappingURL=validator.test.js.map