@opensip-cli/graph-typescript 0.1.0

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 (344) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +31 -0
  4. package/dist/__tests__/_pipeline.d.ts +40 -0
  5. package/dist/__tests__/_pipeline.d.ts.map +1 -0
  6. package/dist/__tests__/_pipeline.js +67 -0
  7. package/dist/__tests__/_pipeline.js.map +1 -0
  8. package/dist/__tests__/acceptance/_fixture-runner.d.ts +13 -0
  9. package/dist/__tests__/acceptance/_fixture-runner.d.ts.map +1 -0
  10. package/dist/__tests__/acceptance/_fixture-runner.js +55 -0
  11. package/dist/__tests__/acceptance/_fixture-runner.js.map +1 -0
  12. package/dist/__tests__/acceptance/alias-resolution.test.d.ts +8 -0
  13. package/dist/__tests__/acceptance/alias-resolution.test.d.ts.map +1 -0
  14. package/dist/__tests__/acceptance/alias-resolution.test.js +39 -0
  15. package/dist/__tests__/acceptance/alias-resolution.test.js.map +1 -0
  16. package/dist/__tests__/acceptance/arrow-callback-resolution.test.d.ts +8 -0
  17. package/dist/__tests__/acceptance/arrow-callback-resolution.test.d.ts.map +1 -0
  18. package/dist/__tests__/acceptance/arrow-callback-resolution.test.js +33 -0
  19. package/dist/__tests__/acceptance/arrow-callback-resolution.test.js.map +1 -0
  20. package/dist/__tests__/acceptance/constructor-calls.test.d.ts +7 -0
  21. package/dist/__tests__/acceptance/constructor-calls.test.d.ts.map +1 -0
  22. package/dist/__tests__/acceptance/constructor-calls.test.js +36 -0
  23. package/dist/__tests__/acceptance/constructor-calls.test.js.map +1 -0
  24. package/dist/__tests__/acceptance/interface-dispatch.test.d.ts +8 -0
  25. package/dist/__tests__/acceptance/interface-dispatch.test.d.ts.map +1 -0
  26. package/dist/__tests__/acceptance/interface-dispatch.test.js +44 -0
  27. package/dist/__tests__/acceptance/interface-dispatch.test.js.map +1 -0
  28. package/dist/__tests__/acceptance/inventory-completeness.test.d.ts +9 -0
  29. package/dist/__tests__/acceptance/inventory-completeness.test.d.ts.map +1 -0
  30. package/dist/__tests__/acceptance/inventory-completeness.test.js +72 -0
  31. package/dist/__tests__/acceptance/inventory-completeness.test.js.map +1 -0
  32. package/dist/__tests__/acceptance/jsx-resolution.test.d.ts +7 -0
  33. package/dist/__tests__/acceptance/jsx-resolution.test.d.ts.map +1 -0
  34. package/dist/__tests__/acceptance/jsx-resolution.test.js +46 -0
  35. package/dist/__tests__/acceptance/jsx-resolution.test.js.map +1 -0
  36. package/dist/__tests__/acceptance/module-init.test.d.ts +10 -0
  37. package/dist/__tests__/acceptance/module-init.test.d.ts.map +1 -0
  38. package/dist/__tests__/acceptance/module-init.test.js +40 -0
  39. package/dist/__tests__/acceptance/module-init.test.js.map +1 -0
  40. package/dist/__tests__/acceptance/projectdir-normalization.test.d.ts +7 -0
  41. package/dist/__tests__/acceptance/projectdir-normalization.test.d.ts.map +1 -0
  42. package/dist/__tests__/acceptance/projectdir-normalization.test.js +51 -0
  43. package/dist/__tests__/acceptance/projectdir-normalization.test.js.map +1 -0
  44. package/dist/__tests__/body-twin-edges.test.d.ts +12 -0
  45. package/dist/__tests__/body-twin-edges.test.d.ts.map +1 -0
  46. package/dist/__tests__/body-twin-edges.test.js +85 -0
  47. package/dist/__tests__/body-twin-edges.test.js.map +1 -0
  48. package/dist/__tests__/cache-key.test.d.ts +8 -0
  49. package/dist/__tests__/cache-key.test.d.ts.map +1 -0
  50. package/dist/__tests__/cache-key.test.js +86 -0
  51. package/dist/__tests__/cache-key.test.js.map +1 -0
  52. package/dist/__tests__/depends-on-emission.test.d.ts +19 -0
  53. package/dist/__tests__/depends-on-emission.test.d.ts.map +1 -0
  54. package/dist/__tests__/depends-on-emission.test.js +165 -0
  55. package/dist/__tests__/depends-on-emission.test.js.map +1 -0
  56. package/dist/__tests__/discover.test.d.ts +9 -0
  57. package/dist/__tests__/discover.test.d.ts.map +1 -0
  58. package/dist/__tests__/discover.test.js +72 -0
  59. package/dist/__tests__/discover.test.js.map +1 -0
  60. package/dist/__tests__/edge-helpers/method-target.test.d.ts +8 -0
  61. package/dist/__tests__/edge-helpers/method-target.test.d.ts.map +1 -0
  62. package/dist/__tests__/edge-helpers/method-target.test.js +96 -0
  63. package/dist/__tests__/edge-helpers/method-target.test.js.map +1 -0
  64. package/dist/__tests__/edge-helpers/resolve-decl.test.d.ts +13 -0
  65. package/dist/__tests__/edge-helpers/resolve-decl.test.d.ts.map +1 -0
  66. package/dist/__tests__/edge-helpers/resolve-decl.test.js +176 -0
  67. package/dist/__tests__/edge-helpers/resolve-decl.test.js.map +1 -0
  68. package/dist/__tests__/edge-resolvers/branches.test.d.ts +11 -0
  69. package/dist/__tests__/edge-resolvers/branches.test.d.ts.map +1 -0
  70. package/dist/__tests__/edge-resolvers/branches.test.js +305 -0
  71. package/dist/__tests__/edge-resolvers/branches.test.js.map +1 -0
  72. package/dist/__tests__/edge-resolvers/contract.test.d.ts +8 -0
  73. package/dist/__tests__/edge-resolvers/contract.test.d.ts.map +1 -0
  74. package/dist/__tests__/edge-resolvers/contract.test.js +30 -0
  75. package/dist/__tests__/edge-resolvers/contract.test.js.map +1 -0
  76. package/dist/__tests__/edge-resolvers/resolver-units.test.d.ts +17 -0
  77. package/dist/__tests__/edge-resolvers/resolver-units.test.d.ts.map +1 -0
  78. package/dist/__tests__/edge-resolvers/resolver-units.test.js +286 -0
  79. package/dist/__tests__/edge-resolvers/resolver-units.test.js.map +1 -0
  80. package/dist/__tests__/fast-vs-exact.test.d.ts +16 -0
  81. package/dist/__tests__/fast-vs-exact.test.d.ts.map +1 -0
  82. package/dist/__tests__/fast-vs-exact.test.js +116 -0
  83. package/dist/__tests__/fast-vs-exact.test.js.map +1 -0
  84. package/dist/__tests__/graph-cli.test.d.ts +9 -0
  85. package/dist/__tests__/graph-cli.test.d.ts.map +1 -0
  86. package/dist/__tests__/graph-cli.test.js +417 -0
  87. package/dist/__tests__/graph-cli.test.js.map +1 -0
  88. package/dist/__tests__/heap-preflight.test.d.ts +10 -0
  89. package/dist/__tests__/heap-preflight.test.d.ts.map +1 -0
  90. package/dist/__tests__/heap-preflight.test.js +166 -0
  91. package/dist/__tests__/heap-preflight.test.js.map +1 -0
  92. package/dist/__tests__/inventory-differential.test.d.ts +15 -0
  93. package/dist/__tests__/inventory-differential.test.d.ts.map +1 -0
  94. package/dist/__tests__/inventory-differential.test.js +319 -0
  95. package/dist/__tests__/inventory-differential.test.js.map +1 -0
  96. package/dist/__tests__/inventory-helpers/hash-body.test.d.ts +11 -0
  97. package/dist/__tests__/inventory-helpers/hash-body.test.d.ts.map +1 -0
  98. package/dist/__tests__/inventory-helpers/hash-body.test.js +34 -0
  99. package/dist/__tests__/inventory-helpers/hash-body.test.js.map +1 -0
  100. package/dist/__tests__/inventory-helpers/synthesize-name.test.d.ts +9 -0
  101. package/dist/__tests__/inventory-helpers/synthesize-name.test.d.ts.map +1 -0
  102. package/dist/__tests__/inventory-helpers/synthesize-name.test.js +30 -0
  103. package/dist/__tests__/inventory-helpers/synthesize-name.test.js.map +1 -0
  104. package/dist/__tests__/inventory-property-tests.test.d.ts +24 -0
  105. package/dist/__tests__/inventory-property-tests.test.d.ts.map +1 -0
  106. package/dist/__tests__/inventory-property-tests.test.js +521 -0
  107. package/dist/__tests__/inventory-property-tests.test.js.map +1 -0
  108. package/dist/__tests__/inventory-shape-coverage.test.d.ts +16 -0
  109. package/dist/__tests__/inventory-shape-coverage.test.d.ts.map +1 -0
  110. package/dist/__tests__/inventory-shape-coverage.test.js +586 -0
  111. package/dist/__tests__/inventory-shape-coverage.test.js.map +1 -0
  112. package/dist/__tests__/inventory-visitors/contract.test.d.ts +9 -0
  113. package/dist/__tests__/inventory-visitors/contract.test.d.ts.map +1 -0
  114. package/dist/__tests__/inventory-visitors/contract.test.js +33 -0
  115. package/dist/__tests__/inventory-visitors/contract.test.js.map +1 -0
  116. package/dist/__tests__/lang-adapter-contract.test.d.ts +19 -0
  117. package/dist/__tests__/lang-adapter-contract.test.d.ts.map +1 -0
  118. package/dist/__tests__/lang-adapter-contract.test.js +880 -0
  119. package/dist/__tests__/lang-adapter-contract.test.js.map +1 -0
  120. package/dist/__tests__/lang-adapter-registry.test.d.ts +10 -0
  121. package/dist/__tests__/lang-adapter-registry.test.d.ts.map +1 -0
  122. package/dist/__tests__/lang-adapter-registry.test.js +151 -0
  123. package/dist/__tests__/lang-adapter-registry.test.js.map +1 -0
  124. package/dist/__tests__/normalize-project-dir.test.d.ts +5 -0
  125. package/dist/__tests__/normalize-project-dir.test.d.ts.map +1 -0
  126. package/dist/__tests__/normalize-project-dir.test.js +47 -0
  127. package/dist/__tests__/normalize-project-dir.test.js.map +1 -0
  128. package/dist/__tests__/orchestrate.test.d.ts +8 -0
  129. package/dist/__tests__/orchestrate.test.d.ts.map +1 -0
  130. package/dist/__tests__/orchestrate.test.js +213 -0
  131. package/dist/__tests__/orchestrate.test.js.map +1 -0
  132. package/dist/__tests__/parse-fast.test.d.ts +9 -0
  133. package/dist/__tests__/parse-fast.test.d.ts.map +1 -0
  134. package/dist/__tests__/parse-fast.test.js +114 -0
  135. package/dist/__tests__/parse-fast.test.js.map +1 -0
  136. package/dist/__tests__/rules/_helpers.d.ts +18 -0
  137. package/dist/__tests__/rules/_helpers.d.ts.map +1 -0
  138. package/dist/__tests__/rules/_helpers.js +62 -0
  139. package/dist/__tests__/rules/_helpers.js.map +1 -0
  140. package/dist/__tests__/rules/duplicated-function-body.test.d.ts +5 -0
  141. package/dist/__tests__/rules/duplicated-function-body.test.d.ts.map +1 -0
  142. package/dist/__tests__/rules/duplicated-function-body.test.js +39 -0
  143. package/dist/__tests__/rules/duplicated-function-body.test.js.map +1 -0
  144. package/dist/__tests__/rules/orphan-subtree.test.d.ts +5 -0
  145. package/dist/__tests__/rules/orphan-subtree.test.d.ts.map +1 -0
  146. package/dist/__tests__/rules/orphan-subtree.test.js +75 -0
  147. package/dist/__tests__/rules/orphan-subtree.test.js.map +1 -0
  148. package/dist/__tests__/rules/rule-hints-integration.test.d.ts +20 -0
  149. package/dist/__tests__/rules/rule-hints-integration.test.d.ts.map +1 -0
  150. package/dist/__tests__/rules/rule-hints-integration.test.js +279 -0
  151. package/dist/__tests__/rules/rule-hints-integration.test.js.map +1 -0
  152. package/dist/__tests__/tool-register.test.d.ts +16 -0
  153. package/dist/__tests__/tool-register.test.d.ts.map +1 -0
  154. package/dist/__tests__/tool-register.test.js +210 -0
  155. package/dist/__tests__/tool-register.test.js.map +1 -0
  156. package/dist/__tests__/value-reference-unit.test.d.ts +13 -0
  157. package/dist/__tests__/value-reference-unit.test.d.ts.map +1 -0
  158. package/dist/__tests__/value-reference-unit.test.js +226 -0
  159. package/dist/__tests__/value-reference-unit.test.js.map +1 -0
  160. package/dist/__tests__/value-reference.test.d.ts +15 -0
  161. package/dist/__tests__/value-reference.test.d.ts.map +1 -0
  162. package/dist/__tests__/value-reference.test.js +115 -0
  163. package/dist/__tests__/value-reference.test.js.map +1 -0
  164. package/dist/__tests__/walk-fast.test.d.ts +8 -0
  165. package/dist/__tests__/walk-fast.test.d.ts.map +1 -0
  166. package/dist/__tests__/walk-fast.test.js +51 -0
  167. package/dist/__tests__/walk-fast.test.js.map +1 -0
  168. package/dist/__tests__/walk-reexports.test.d.ts +7 -0
  169. package/dist/__tests__/walk-reexports.test.d.ts.map +1 -0
  170. package/dist/__tests__/walk-reexports.test.js +79 -0
  171. package/dist/__tests__/walk-reexports.test.js.map +1 -0
  172. package/dist/cache-key.d.ts +41 -0
  173. package/dist/cache-key.d.ts.map +1 -0
  174. package/dist/cache-key.js +94 -0
  175. package/dist/cache-key.js.map +1 -0
  176. package/dist/discover.d.ts +25 -0
  177. package/dist/discover.d.ts.map +1 -0
  178. package/dist/discover.js +124 -0
  179. package/dist/discover.js.map +1 -0
  180. package/dist/edge-helpers/cross-package-context.d.ts +34 -0
  181. package/dist/edge-helpers/cross-package-context.d.ts.map +1 -0
  182. package/dist/edge-helpers/cross-package-context.js +97 -0
  183. package/dist/edge-helpers/cross-package-context.js.map +1 -0
  184. package/dist/edge-helpers/declaration-to-node.d.ts +58 -0
  185. package/dist/edge-helpers/declaration-to-node.d.ts.map +1 -0
  186. package/dist/edge-helpers/declaration-to-node.js +93 -0
  187. package/dist/edge-helpers/declaration-to-node.js.map +1 -0
  188. package/dist/edge-helpers/find-catalog-entry.d.ts +24 -0
  189. package/dist/edge-helpers/find-catalog-entry.d.ts.map +1 -0
  190. package/dist/edge-helpers/find-catalog-entry.js +45 -0
  191. package/dist/edge-helpers/find-catalog-entry.js.map +1 -0
  192. package/dist/edge-helpers/method-target.d.ts +22 -0
  193. package/dist/edge-helpers/method-target.d.ts.map +1 -0
  194. package/dist/edge-helpers/method-target.js +46 -0
  195. package/dist/edge-helpers/method-target.js.map +1 -0
  196. package/dist/edge-helpers/resolution-trace.d.ts +24 -0
  197. package/dist/edge-helpers/resolution-trace.d.ts.map +1 -0
  198. package/dist/edge-helpers/resolution-trace.js +38 -0
  199. package/dist/edge-helpers/resolution-trace.js.map +1 -0
  200. package/dist/edge-helpers/resolve-decl.d.ts +44 -0
  201. package/dist/edge-helpers/resolve-decl.d.ts.map +1 -0
  202. package/dist/edge-helpers/resolve-decl.js +170 -0
  203. package/dist/edge-helpers/resolve-decl.js.map +1 -0
  204. package/dist/edge-helpers/unalias-symbol.d.ts +10 -0
  205. package/dist/edge-helpers/unalias-symbol.d.ts.map +1 -0
  206. package/dist/edge-helpers/unalias-symbol.js +29 -0
  207. package/dist/edge-helpers/unalias-symbol.js.map +1 -0
  208. package/dist/edge-resolvers/__tests__/boundary.test.d.ts +15 -0
  209. package/dist/edge-resolvers/__tests__/boundary.test.d.ts.map +1 -0
  210. package/dist/edge-resolvers/__tests__/boundary.test.js +227 -0
  211. package/dist/edge-resolvers/__tests__/boundary.test.js.map +1 -0
  212. package/dist/edge-resolvers/__tests__/callee-anchor.test.d.ts +10 -0
  213. package/dist/edge-resolvers/__tests__/callee-anchor.test.d.ts.map +1 -0
  214. package/dist/edge-resolvers/__tests__/callee-anchor.test.js +63 -0
  215. package/dist/edge-resolvers/__tests__/callee-anchor.test.js.map +1 -0
  216. package/dist/edge-resolvers/__tests__/syntactic.test.d.ts +12 -0
  217. package/dist/edge-resolvers/__tests__/syntactic.test.d.ts.map +1 -0
  218. package/dist/edge-resolvers/__tests__/syntactic.test.js +215 -0
  219. package/dist/edge-resolvers/__tests__/syntactic.test.js.map +1 -0
  220. package/dist/edge-resolvers/boundary.d.ts +41 -0
  221. package/dist/edge-resolvers/boundary.d.ts.map +1 -0
  222. package/dist/edge-resolvers/boundary.js +130 -0
  223. package/dist/edge-resolvers/boundary.js.map +1 -0
  224. package/dist/edge-resolvers/catalog-fallback.d.ts +13 -0
  225. package/dist/edge-resolvers/catalog-fallback.d.ts.map +1 -0
  226. package/dist/edge-resolvers/catalog-fallback.js +30 -0
  227. package/dist/edge-resolvers/catalog-fallback.js.map +1 -0
  228. package/dist/edge-resolvers/direct-call.d.ts +10 -0
  229. package/dist/edge-resolvers/direct-call.d.ts.map +1 -0
  230. package/dist/edge-resolvers/direct-call.js +45 -0
  231. package/dist/edge-resolvers/direct-call.js.map +1 -0
  232. package/dist/edge-resolvers/jsx-element.d.ts +16 -0
  233. package/dist/edge-resolvers/jsx-element.d.ts.map +1 -0
  234. package/dist/edge-resolvers/jsx-element.js +67 -0
  235. package/dist/edge-resolvers/jsx-element.js.map +1 -0
  236. package/dist/edge-resolvers/new-expression.d.ts +11 -0
  237. package/dist/edge-resolvers/new-expression.d.ts.map +1 -0
  238. package/dist/edge-resolvers/new-expression.js +56 -0
  239. package/dist/edge-resolvers/new-expression.js.map +1 -0
  240. package/dist/edge-resolvers/polymorphic.d.ts +8 -0
  241. package/dist/edge-resolvers/polymorphic.d.ts.map +1 -0
  242. package/dist/edge-resolvers/polymorphic.js +57 -0
  243. package/dist/edge-resolvers/polymorphic.js.map +1 -0
  244. package/dist/edge-resolvers/property-access.d.ts +10 -0
  245. package/dist/edge-resolvers/property-access.d.ts.map +1 -0
  246. package/dist/edge-resolvers/property-access.js +56 -0
  247. package/dist/edge-resolvers/property-access.js.map +1 -0
  248. package/dist/edge-resolvers/syntactic.d.ts +105 -0
  249. package/dist/edge-resolvers/syntactic.d.ts.map +1 -0
  250. package/dist/edge-resolvers/syntactic.js +294 -0
  251. package/dist/edge-resolvers/syntactic.js.map +1 -0
  252. package/dist/edge-resolvers/types.d.ts +37 -0
  253. package/dist/edge-resolvers/types.d.ts.map +1 -0
  254. package/dist/edge-resolvers/types.js +10 -0
  255. package/dist/edge-resolvers/types.js.map +1 -0
  256. package/dist/edges-value-reference.d.ts +26 -0
  257. package/dist/edges-value-reference.d.ts.map +1 -0
  258. package/dist/edges-value-reference.js +138 -0
  259. package/dist/edges-value-reference.js.map +1 -0
  260. package/dist/edges.d.ts +65 -0
  261. package/dist/edges.d.ts.map +1 -0
  262. package/dist/edges.js +392 -0
  263. package/dist/edges.js.map +1 -0
  264. package/dist/index.d.ts +47 -0
  265. package/dist/index.d.ts.map +1 -0
  266. package/dist/index.js +346 -0
  267. package/dist/index.js.map +1 -0
  268. package/dist/inventory-helpers/classify-visibility.d.ts +13 -0
  269. package/dist/inventory-helpers/classify-visibility.d.ts.map +1 -0
  270. package/dist/inventory-helpers/classify-visibility.js +56 -0
  271. package/dist/inventory-helpers/classify-visibility.js.map +1 -0
  272. package/dist/inventory-helpers/extract-decorators.d.ts +6 -0
  273. package/dist/inventory-helpers/extract-decorators.d.ts.map +1 -0
  274. package/dist/inventory-helpers/extract-decorators.js +33 -0
  275. package/dist/inventory-helpers/extract-decorators.js.map +1 -0
  276. package/dist/inventory-helpers/extract-params.d.ts +7 -0
  277. package/dist/inventory-helpers/extract-params.d.ts.map +1 -0
  278. package/dist/inventory-helpers/extract-params.js +28 -0
  279. package/dist/inventory-helpers/extract-params.js.map +1 -0
  280. package/dist/inventory-helpers/hash-body.d.ts +43 -0
  281. package/dist/inventory-helpers/hash-body.d.ts.map +1 -0
  282. package/dist/inventory-helpers/hash-body.js +52 -0
  283. package/dist/inventory-helpers/hash-body.js.map +1 -0
  284. package/dist/inventory-helpers/synthesize-name.d.ts +16 -0
  285. package/dist/inventory-helpers/synthesize-name.d.ts.map +1 -0
  286. package/dist/inventory-helpers/synthesize-name.js +17 -0
  287. package/dist/inventory-helpers/synthesize-name.js.map +1 -0
  288. package/dist/inventory-visitors/arrow-function.d.ts +8 -0
  289. package/dist/inventory-visitors/arrow-function.d.ts.map +1 -0
  290. package/dist/inventory-visitors/arrow-function.js +55 -0
  291. package/dist/inventory-visitors/arrow-function.js.map +1 -0
  292. package/dist/inventory-visitors/class-static-init.d.ts +17 -0
  293. package/dist/inventory-visitors/class-static-init.d.ts.map +1 -0
  294. package/dist/inventory-visitors/class-static-init.js +45 -0
  295. package/dist/inventory-visitors/class-static-init.js.map +1 -0
  296. package/dist/inventory-visitors/constructor-declaration.d.ts +7 -0
  297. package/dist/inventory-visitors/constructor-declaration.d.ts.map +1 -0
  298. package/dist/inventory-visitors/constructor-declaration.js +47 -0
  299. package/dist/inventory-visitors/constructor-declaration.js.map +1 -0
  300. package/dist/inventory-visitors/function-declaration.d.ts +7 -0
  301. package/dist/inventory-visitors/function-declaration.d.ts.map +1 -0
  302. package/dist/inventory-visitors/function-declaration.js +59 -0
  303. package/dist/inventory-visitors/function-declaration.js.map +1 -0
  304. package/dist/inventory-visitors/function-expression.d.ts +7 -0
  305. package/dist/inventory-visitors/function-expression.d.ts.map +1 -0
  306. package/dist/inventory-visitors/function-expression.js +56 -0
  307. package/dist/inventory-visitors/function-expression.js.map +1 -0
  308. package/dist/inventory-visitors/getter-setter.d.ts +7 -0
  309. package/dist/inventory-visitors/getter-setter.d.ts.map +1 -0
  310. package/dist/inventory-visitors/getter-setter.js +63 -0
  311. package/dist/inventory-visitors/getter-setter.js.map +1 -0
  312. package/dist/inventory-visitors/method-declaration.d.ts +7 -0
  313. package/dist/inventory-visitors/method-declaration.d.ts.map +1 -0
  314. package/dist/inventory-visitors/method-declaration.js +75 -0
  315. package/dist/inventory-visitors/method-declaration.js.map +1 -0
  316. package/dist/inventory-visitors/module-init.d.ts +15 -0
  317. package/dist/inventory-visitors/module-init.d.ts.map +1 -0
  318. package/dist/inventory-visitors/module-init.js +40 -0
  319. package/dist/inventory-visitors/module-init.js.map +1 -0
  320. package/dist/inventory-visitors/types.d.ts +26 -0
  321. package/dist/inventory-visitors/types.d.ts.map +1 -0
  322. package/dist/inventory-visitors/types.js +14 -0
  323. package/dist/inventory-visitors/types.js.map +1 -0
  324. package/dist/normalize-project-dir.d.ts +14 -0
  325. package/dist/normalize-project-dir.d.ts.map +1 -0
  326. package/dist/normalize-project-dir.js +36 -0
  327. package/dist/normalize-project-dir.js.map +1 -0
  328. package/dist/parse-fast.d.ts +41 -0
  329. package/dist/parse-fast.d.ts.map +1 -0
  330. package/dist/parse-fast.js +91 -0
  331. package/dist/parse-fast.js.map +1 -0
  332. package/dist/parse.d.ts +42 -0
  333. package/dist/parse.d.ts.map +1 -0
  334. package/dist/parse.js +75 -0
  335. package/dist/parse.js.map +1 -0
  336. package/dist/test-file.d.ts +7 -0
  337. package/dist/test-file.d.ts.map +1 -0
  338. package/dist/test-file.js +42 -0
  339. package/dist/test-file.js.map +1 -0
  340. package/dist/walk.d.ts +125 -0
  341. package/dist/walk.d.ts.map +1 -0
  342. package/dist/walk.js +393 -0
  343. package/dist/walk.js.map +1 -0
  344. package/package.json +57 -0
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Branch-coverage tests for edge resolvers.
3
+ *
4
+ * Exercises the many `if (!narrowingX) return UNRESOLVED;` short-
5
+ * circuit branches in each resolver by running the full pipeline
6
+ * over targeted source-code fixtures. The acceptance tests cover the
7
+ * happy paths; this file covers the unresolvable / fallback paths
8
+ * that the contract test alone can't hit.
9
+ */
10
+ import { mkdtempSync, rmSync } from 'node:fs';
11
+ import { tmpdir } from 'node:os';
12
+ import { join } from 'node:path';
13
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
14
+ import { resolveByCatalogFallback } from '../../edge-resolvers/catalog-fallback.js';
15
+ import { findOccurrence, runFixture, writeFixture } from '../acceptance/_fixture-runner.js';
16
+ describe('edge-resolvers — defensive / unresolved branches', () => {
17
+ const fixtureDir = mkdtempSync(join(tmpdir(), 'graph-resolver-branches-'));
18
+ afterAll(() => {
19
+ rmSync(fixtureDir, { recursive: true, force: true });
20
+ });
21
+ writeFixture(fixtureDir, {
22
+ // Direct call where the LHS is a parenthesized expression — not an
23
+ // identifier, so resolveDirectCall returns UNRESOLVED and the
24
+ // catalog-fallback takes over (or nothing resolves).
25
+ 'paren-call.ts': `
26
+ function inner(): number { return 1; }
27
+ export function paren(): number {
28
+ return (inner)();
29
+ }
30
+ `,
31
+ // Direct call to a method on a class instance via property access.
32
+ // This exercises resolvePropertyAccessCall's positive path with a
33
+ // method declaration (covers the ts.isMethodDeclaration branch in
34
+ // functionLikeFromDeclaration).
35
+ 'method-call.ts': `
36
+ export class C {
37
+ m(): number { return 1; }
38
+ }
39
+ export function callMethod(c: C): number {
40
+ return c.m();
41
+ }
42
+ `,
43
+ // Direct call to a function assigned to a variable as an arrow.
44
+ // Exercises the VariableDeclaration + initializer = ArrowFunction
45
+ // branch in direct-call.ts's functionLikeFromDeclaration.
46
+ 'arrow-decl.ts': `
47
+ const fn = (): number => 7;
48
+ export function arrowDecl(): number {
49
+ return fn();
50
+ }
51
+ `,
52
+ // Direct call to a function-expression assigned to a const.
53
+ 'fn-expr-decl.ts': `
54
+ const fnExpr = function (): number { return 8; };
55
+ export function fnExprDecl(): number {
56
+ return fnExpr();
57
+ }
58
+ `,
59
+ // Calling a non-function value (a number) — symbol-less call expression
60
+ // that hits the !symbol short-circuit.
61
+ 'no-symbol.ts': `
62
+ export function noSymbol(): number {
63
+ // Non-callable parenthesized non-identifier
64
+ return ((): number => 1)();
65
+ }
66
+ `,
67
+ // Property-access call against an unknown receiver. Covers the
68
+ // negative branch in resolvePropertyAccessCall when the receiver
69
+ // type has no matching method.
70
+ 'prop-no-method.ts': `
71
+ export function propNoMethod(x: { a: number }): number {
72
+ // x.a is not a function — call expression below is invalid TS,
73
+ // so we use a type assertion to coax it past the typechecker.
74
+ return (x as unknown as { a: () => number }).a();
75
+ }
76
+ `,
77
+ // new-expression on a non-class symbol — covers the
78
+ // !isClassDeclaration && !isClassExpression continue.
79
+ 'new-on-fn.ts': `
80
+ function Factory(): { x: number } { return { x: 1 }; }
81
+ export function newOnFn(): unknown {
82
+ // Calling new on a function — TS treats Factory as a constructor
83
+ // signature. The resolver looks up the symbol's declarations;
84
+ // since it's a FunctionDeclaration (not a ClassDeclaration),
85
+ // the inner loop's continue branch fires.
86
+ return new (Factory as unknown as new () => { x: number })();
87
+ }
88
+ `,
89
+ // jsx intrinsic element <div /> — covers the lower-case identifier
90
+ // short-circuit.
91
+ 'jsx-intrinsic.tsx': `
92
+ export function intrinsic(): JSX.Element {
93
+ return (<div className="x" />);
94
+ }
95
+ `,
96
+ // jsx component without a matching catalog entry (defined inline as
97
+ // a constant returning a JSX expression). Covers the symbol-found
98
+ // path with no findCatalogEntry hit when the body hash mismatches.
99
+ 'jsx-self-closing.tsx': `
100
+ const Wrapper = (): JSX.Element => (<span />);
101
+ export function jsxConsumer(): JSX.Element {
102
+ return (<Wrapper />);
103
+ }
104
+ `,
105
+ // polymorphic dispatch with multiple implementations — covers the
106
+ // confidence='medium' branch when more than one hash candidate is
107
+ // returned from collectMethodHashes.
108
+ 'polymorphic-multi.ts': `
109
+ interface Pingable {
110
+ ping(): void;
111
+ }
112
+ class A implements Pingable {
113
+ ping(): void { return; }
114
+ }
115
+ class B implements Pingable {
116
+ ping(): void { return; }
117
+ }
118
+ export function pingAll(targets: readonly Pingable[]): void {
119
+ for (const t of targets) t.ping();
120
+ }
121
+ // keep references so the classes aren't pruned
122
+ const _refs: Pingable[] = [new A(), new B()];
123
+ void _refs;
124
+ `,
125
+ });
126
+ let catalog;
127
+ beforeAll(async () => {
128
+ catalog = await runFixture(fixtureDir);
129
+ });
130
+ it('produces a catalog (sanity)', () => {
131
+ expect(Object.keys(catalog.functions).length).toBeGreaterThan(0);
132
+ });
133
+ it('parenthesized direct-call: still resolves the inner identifier where possible', () => {
134
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'paren');
135
+ expect(occ).toBeDefined();
136
+ // The resolver may return UNRESOLVED for the parenthesized call,
137
+ // but the call site is still recorded. Just assert the catalog
138
+ // entry exists with at least one call edge.
139
+ expect(occ.calls.length).toBeGreaterThanOrEqual(0);
140
+ });
141
+ it('arrow-function variable declaration is resolved via direct-call', () => {
142
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'arrowDecl');
143
+ expect(occ).toBeDefined();
144
+ expect(occ.calls.length).toBeGreaterThan(0);
145
+ });
146
+ it('function-expression variable declaration is resolved via direct-call', () => {
147
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'fnExprDecl');
148
+ expect(occ).toBeDefined();
149
+ expect(occ.calls.length).toBeGreaterThan(0);
150
+ });
151
+ it('property-access call to a class method resolves via the method declaration', () => {
152
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'callMethod');
153
+ expect(occ).toBeDefined();
154
+ const methodEdge = occ.calls.find((e) => e.text.includes('m'));
155
+ expect(methodEdge).toBeDefined();
156
+ });
157
+ it('intrinsic JSX <div /> is silently ignored — no edge', () => {
158
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'intrinsic');
159
+ expect(occ).toBeDefined();
160
+ // Lower-cased identifier short-circuits jsx-element.ts to UNRESOLVED.
161
+ // The component call never reaches the catalog.
162
+ for (const edge of occ.calls) {
163
+ expect(edge.text).not.toBe('div');
164
+ }
165
+ });
166
+ it('jsx component with matching catalog entry resolves', () => {
167
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'jsxConsumer');
168
+ expect(occ).toBeDefined();
169
+ const wrapperEdge = occ.calls.find((e) => e.text.includes('Wrapper'));
170
+ expect(wrapperEdge).toBeDefined();
171
+ });
172
+ it('polymorphic dispatch with multiple implementations returns multi-hash edges', () => {
173
+ const occ = findOccurrence(catalog, (o) => o.simpleName === 'pingAll');
174
+ expect(occ).toBeDefined();
175
+ // The .ping() call should resolve to both A.ping and B.ping.
176
+ const edge = occ.calls.find((e) => e.text.includes('ping'));
177
+ if (edge) {
178
+ // confidence is 'medium' when there are 2+ candidates per the
179
+ // resolver's logic.
180
+ if (edge.to.length > 1) {
181
+ expect(edge.confidence).toBe('medium');
182
+ }
183
+ else if (edge.to.length === 1) {
184
+ expect(['high', 'medium']).toContain(edge.confidence);
185
+ }
186
+ }
187
+ });
188
+ });
189
+ describe('catalog-fallback resolver — direct unit tests', () => {
190
+ it('returns UNRESOLVED when the simpleName is not present in the catalog', () => {
191
+ const empty = {
192
+ version: '3.0',
193
+ tool: 'graph',
194
+ language: 'typescript',
195
+ builtAt: new Date().toISOString(),
196
+ cacheKey: 'test',
197
+ functions: {},
198
+ };
199
+ const out = resolveByCatalogFallback('not-a-name', empty);
200
+ expect(out.to).toEqual([]);
201
+ expect(out.resolution).toBe('unknown');
202
+ expect(out.confidence).toBe('low');
203
+ });
204
+ it('returns UNRESOLVED when the candidate list is empty', () => {
205
+ const empty = {
206
+ version: '3.0',
207
+ tool: 'graph',
208
+ language: 'typescript',
209
+ builtAt: new Date().toISOString(),
210
+ cacheKey: 'test',
211
+ functions: { foo: [] },
212
+ };
213
+ const out = resolveByCatalogFallback('foo', empty);
214
+ expect(out.to).toEqual([]);
215
+ expect(out.confidence).toBe('low');
216
+ });
217
+ it('returns the unique hash with medium confidence on a single-candidate match', () => {
218
+ const cat = {
219
+ version: '3.0',
220
+ tool: 'graph',
221
+ language: 'typescript',
222
+ builtAt: new Date().toISOString(),
223
+ cacheKey: 'test',
224
+ functions: {
225
+ foo: [
226
+ {
227
+ simpleName: 'foo',
228
+ qualifiedName: 'foo',
229
+ bodyHash: 'h1',
230
+ filePath: 'a.ts',
231
+ line: 1,
232
+ column: 0,
233
+ kind: 'function-declaration',
234
+ params: [],
235
+ visibility: 'exported',
236
+ inTestFile: false,
237
+ decorators: [],
238
+ endLine: 1,
239
+ returnType: null,
240
+ enclosingClass: null,
241
+ definedInGenerated: false,
242
+ calls: [],
243
+ },
244
+ ],
245
+ },
246
+ };
247
+ const out = resolveByCatalogFallback('foo', cat);
248
+ expect(out.to).toEqual(['h1']);
249
+ expect(out.confidence).toBe('medium');
250
+ expect(out.resolution).toBe('unknown');
251
+ });
252
+ it('returns UNRESOLVED on multiple-candidate (ambiguous) match', () => {
253
+ const cat = {
254
+ version: '3.0',
255
+ tool: 'graph',
256
+ language: 'typescript',
257
+ builtAt: new Date().toISOString(),
258
+ cacheKey: 'test',
259
+ functions: {
260
+ foo: [
261
+ {
262
+ simpleName: 'foo',
263
+ qualifiedName: 'a.foo',
264
+ bodyHash: 'h1',
265
+ filePath: 'a.ts',
266
+ line: 1,
267
+ column: 0,
268
+ kind: 'function-declaration',
269
+ params: [],
270
+ visibility: 'exported',
271
+ inTestFile: false,
272
+ decorators: [],
273
+ endLine: 1,
274
+ returnType: null,
275
+ enclosingClass: null,
276
+ definedInGenerated: false,
277
+ calls: [],
278
+ },
279
+ {
280
+ simpleName: 'foo',
281
+ qualifiedName: 'b.foo',
282
+ bodyHash: 'h2',
283
+ filePath: 'b.ts',
284
+ line: 1,
285
+ column: 0,
286
+ kind: 'function-declaration',
287
+ params: [],
288
+ visibility: 'exported',
289
+ inTestFile: false,
290
+ decorators: [],
291
+ endLine: 1,
292
+ returnType: null,
293
+ enclosingClass: null,
294
+ definedInGenerated: false,
295
+ calls: [],
296
+ },
297
+ ],
298
+ },
299
+ };
300
+ const out = resolveByCatalogFallback('foo', cat);
301
+ expect(out.to).toEqual([]);
302
+ expect(out.confidence).toBe('low');
303
+ });
304
+ });
305
+ //# sourceMappingURL=branches.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branches.test.js","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/branches.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAI5F,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,UAAU,EAAE;QACvB,mEAAmE;QACnE,8DAA8D;QAC9D,qDAAqD;QACrD,eAAe,EAAE;;;;;KAKhB;QAED,mEAAmE;QACnE,kEAAkE;QAClE,kEAAkE;QAClE,gCAAgC;QAChC,gBAAgB,EAAE;;;;;;;KAOjB;QAED,gEAAgE;QAChE,kEAAkE;QAClE,0DAA0D;QAC1D,eAAe,EAAE;;;;;KAKhB;QAED,4DAA4D;QAC5D,iBAAiB,EAAE;;;;;KAKlB;QAED,wEAAwE;QACxE,uCAAuC;QACvC,cAAc,EAAE;;;;;KAKf;QAED,+DAA+D;QAC/D,iEAAiE;QACjE,+BAA+B;QAC/B,mBAAmB,EAAE;;;;;;KAMpB;QAED,oDAAoD;QACpD,sDAAsD;QACtD,cAAc,EAAE;;;;;;;;;KASf;QAED,mEAAmE;QACnE,iBAAiB;QACjB,mBAAmB,EAAE;;;;KAIpB;QAED,oEAAoE;QACpE,kEAAkE;QAClE,mEAAmE;QACnE,sBAAsB,EAAE;;;;;KAKvB;QAED,kEAAkE;QAClE,kEAAkE;QAClE,qCAAqC;QACrC,sBAAsB,EAAE;;;;;;;;;;;;;;;;KAgBvB;KACF,CAAC,CAAC;IACH,IAAI,OAAiB,CAAC;IACtB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,iEAAiE;QACjE,+DAA+D;QAC/D,4CAA4C;QAC5C,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,GAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,sEAAsE;QACtE,gDAAgD;QAChD,KAAK,MAAM,IAAI,IAAI,GAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,GAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,6DAA6D;QAC7D,MAAM,IAAI,GAAG,GAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,EAAE,CAAC;YACT,8DAA8D;YAC9D,oBAAoB;YACpB,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,KAAK,GAAY;YACrB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE;SACd,CAAC;QACF,MAAM,GAAG,GAAG,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAY;YACrB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;SACvB,CAAC;QACF,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,GAAG,GAAY;YACnB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE;gBACT,GAAG,EAAE;oBACH;wBACE,UAAU,EAAE,KAAK;wBACjB,aAAa,EAAE,KAAK;wBACpB,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,sBAAsB;wBAC5B,MAAM,EAAE,EAAE;wBACV,UAAU,EAAE,UAAU;wBACtB,UAAU,EAAE,KAAK;wBACjB,UAAU,EAAE,EAAE;wBACd,OAAO,EAAE,CAAC;wBACV,UAAU,EAAE,IAAI;wBAChB,cAAc,EAAE,IAAI;wBACpB,kBAAkB,EAAE,KAAK;wBACzB,KAAK,EAAE,EAAE;qBACV;iBACF;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,GAAG,GAAY;YACnB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE;gBACT,GAAG,EAAE;oBACH;wBACE,UAAU,EAAE,KAAK;wBACjB,aAAa,EAAE,OAAO;wBACtB,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,sBAAsB;wBAC5B,MAAM,EAAE,EAAE;wBACV,UAAU,EAAE,UAAU;wBACtB,UAAU,EAAE,KAAK;wBACjB,UAAU,EAAE,EAAE;wBACd,OAAO,EAAE,CAAC;wBACV,UAAU,EAAE,IAAI;wBAChB,cAAc,EAAE,IAAI;wBACpB,kBAAkB,EAAE,KAAK;wBACzB,KAAK,EAAE,EAAE;qBACV;oBACD;wBACE,UAAU,EAAE,KAAK;wBACjB,aAAa,EAAE,OAAO;wBACtB,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,sBAAsB;wBAC5B,MAAM,EAAE,EAAE;wBACV,UAAU,EAAE,UAAU;wBACtB,UAAU,EAAE,KAAK;wBACjB,UAAU,EAAE,EAAE;wBACd,OAAO,EAAE,CAAC;wBACV,UAAU,EAAE,IAAI;wBAChB,cAAc,EAAE,IAAI;wBACpB,kBAAkB,EAAE,KAAK;wBACzB,KAAK,EAAE,EAAE;qBACV;iBACF;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAG,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * EdgeResolver contract conformance (PR-4).
3
+ *
4
+ * Compile-time test seam: if any edge resolver drifts from the
5
+ * EdgeResolver signature alias, this file fails to typecheck.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/contract.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * EdgeResolver contract conformance (PR-4).
3
+ *
4
+ * Compile-time test seam: if any edge resolver drifts from the
5
+ * EdgeResolver signature alias, this file fails to typecheck.
6
+ */
7
+ import { describe, expect, it } from 'vitest';
8
+ import { resolveDirectCall } from '../../edge-resolvers/direct-call.js';
9
+ import { resolveJsxElement } from '../../edge-resolvers/jsx-element.js';
10
+ import { resolveNewExpression } from '../../edge-resolvers/new-expression.js';
11
+ import { resolvePolymorphicCall } from '../../edge-resolvers/polymorphic.js';
12
+ import { resolvePropertyAccessCall } from '../../edge-resolvers/property-access.js';
13
+ const _direct = resolveDirectCall;
14
+ const _propAccess = resolvePropertyAccessCall;
15
+ const _polymorphic = resolvePolymorphicCall;
16
+ const _new = resolveNewExpression;
17
+ const _jsx = resolveJsxElement;
18
+ // catalog-fallback intentionally has a different shape (works on
19
+ // (simpleName, catalog) → ResolverVerdict) and therefore does not
20
+ // conform to EdgeResolver.
21
+ describe('EdgeResolver contract conformance (PR-4)', () => {
22
+ it('all resolvers implement the EdgeResolver alias at compile time', () => {
23
+ expect(typeof _direct).toBe('function');
24
+ expect(typeof _propAccess).toBe('function');
25
+ expect(typeof _polymorphic).toBe('function');
26
+ expect(typeof _new).toBe('function');
27
+ expect(typeof _jsx).toBe('function');
28
+ });
29
+ });
30
+ //# sourceMappingURL=contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/contract.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAKpF,MAAM,OAAO,GAAoC,iBAAiB,CAAC;AACnE,MAAM,WAAW,GAAoC,yBAAyB,CAAC;AAC/E,MAAM,YAAY,GAAoC,sBAAsB,CAAC;AAC7E,MAAM,IAAI,GAAmC,oBAAoB,CAAC;AAClE,MAAM,IAAI,GAAkE,iBAAiB,CAAC;AAE9F,iEAAiE;AACjE,kEAAkE;AAClE,2BAA2B;AAE3B,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Direct unit tests for the individual edge resolvers, driven against a
3
+ * real `ts.Program` built from in-memory fixtures.
4
+ *
5
+ * The acceptance + branches fixtures exercise the happy paths via the
6
+ * full pipeline; this file targets the per-resolver SHORT-CIRCUIT
7
+ * branches that are hard to hit end-to-end: the `!isIdentifier`,
8
+ * `!symbol`, `!declNode`, and `hash === null` returns, plus the
9
+ * single-vs-multi confidence split in the polymorphic resolver and the
10
+ * `findCatalogEntry`-miss fall-through.
11
+ *
12
+ * Each test parses a tiny program, walks it to build the SAME catalog
13
+ * the production pipeline would, finds the target node, assembles a
14
+ * ResolverContext, and asserts the resolver's verdict.
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=resolver-units.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-units.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/edge-resolvers/resolver-units.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}