@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,22 @@
1
+ /**
2
+ * Type-attested cross-package METHOD target resolution (ADR-0033 follow-up).
3
+ *
4
+ * For a method call `recv.m()` the boundary extractor needs the TYPE-resolved
5
+ * target file (not a syntactic name) to emit a cross-package boundary call. This
6
+ * mirrors the symbol resolution `resolvePropertyAccessCall` does, but returns the
7
+ * `m` decl's SOURCE file (the package's `dist/*.d.ts` mapped to source) rather
8
+ * than a catalog hash — so the cross-shard linker can pin it post-merge against
9
+ * the merged catalog, identically in both engines.
10
+ */
11
+ import ts from 'typescript';
12
+ /**
13
+ * The project-relative SOURCE file a method call's callee resolves to, when that
14
+ * callee's declaration is a workspace package's built `dist/*.d.ts` — `null`
15
+ * otherwise. `null` when: not a property-access call; the checker has no symbol;
16
+ * the decl is SOURCE (the in-shard/inline pass handles it) or a non-workspace
17
+ * `.d.ts` (`node_modules`, `lib.dom`, a non-`dist` ambient). The dist→src mapping
18
+ * follows the tsc `outDir:dist` / `rootDir:src` convention; a wrong mapping just
19
+ * fails to match an occurrence at the linker and declines (never fabricates).
20
+ */
21
+ export declare function methodTargetFile(node: ts.Node, checker: ts.TypeChecker, projectDirAbs: string): string | null;
22
+ //# sourceMappingURL=method-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method-target.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/method-target.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAkBf"}
@@ -0,0 +1,46 @@
1
+ // @fitness-ignore-file batch-operation-limits -- iterates a bounded collection (one symbol's declarations for a single method-call resolution), mirroring the property-access resolver.
2
+ /**
3
+ * Type-attested cross-package METHOD target resolution (ADR-0033 follow-up).
4
+ *
5
+ * For a method call `recv.m()` the boundary extractor needs the TYPE-resolved
6
+ * target file (not a syntactic name) to emit a cross-package boundary call. This
7
+ * mirrors the symbol resolution `resolvePropertyAccessCall` does, but returns the
8
+ * `m` decl's SOURCE file (the package's `dist/*.d.ts` mapped to source) rather
9
+ * than a catalog hash — so the cross-shard linker can pin it post-merge against
10
+ * the merged catalog, identically in both engines.
11
+ */
12
+ import { relative, sep } from 'node:path';
13
+ import ts from 'typescript';
14
+ import { unaliasSymbol } from './unalias-symbol.js';
15
+ /**
16
+ * The project-relative SOURCE file a method call's callee resolves to, when that
17
+ * callee's declaration is a workspace package's built `dist/*.d.ts` — `null`
18
+ * otherwise. `null` when: not a property-access call; the checker has no symbol;
19
+ * the decl is SOURCE (the in-shard/inline pass handles it) or a non-workspace
20
+ * `.d.ts` (`node_modules`, `lib.dom`, a non-`dist` ambient). The dist→src mapping
21
+ * follows the tsc `outDir:dist` / `rootDir:src` convention; a wrong mapping just
22
+ * fails to match an occurrence at the linker and declines (never fabricates).
23
+ */
24
+ export function methodTargetFile(node, checker, projectDirAbs) {
25
+ if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression))
26
+ return null;
27
+ const symbol = checker.getSymbolAtLocation(node.expression);
28
+ if (!symbol)
29
+ return null;
30
+ const real = unaliasSymbol(symbol, checker);
31
+ for (const d of real.getDeclarations() ?? []) {
32
+ const sf = d.getSourceFile();
33
+ // A SOURCE decl means the method lives in a file the in-shard/inline pass can
34
+ // hash directly — not a cross-package boundary. Stop (don't keep scanning
35
+ // other decls): the first declaration is the canonical one.
36
+ if (!sf.isDeclarationFile)
37
+ return null;
38
+ const rel = relative(projectDirAbs, sf.fileName).split(sep).join('/');
39
+ if (rel.includes('/node_modules/') || !rel.endsWith('.d.ts') || !rel.includes('/dist/')) {
40
+ return null;
41
+ }
42
+ return rel.replace('/dist/', '/src/').replace(/\.d\.ts$/, '.ts');
43
+ }
44
+ return null;
45
+ }
46
+ //# sourceMappingURL=method-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method-target.js","sourceRoot":"","sources":["../../src/edge-helpers/method-target.ts"],"names":[],"mappings":"AAAA,wLAAwL;AACxL;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,OAAuB,EACvB,aAAqB;IAErB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7B,8EAA8E;QAC9E,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,CAAC,EAAE,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Per-site resolution trace (debug-only). When `GRAPH_SITE_LOG` points at a
3
+ * file, every `resolveDeclToHash` decision appends one TSV row:
4
+ * engine \t ownerFile \t callee \t decl=<file> \t dts=<bool> \t spec=<...> \t out=<hash|DECLINE-*>
5
+ *
6
+ * This is the harness that root-caused the exact↔sharded divergence classes
7
+ * (the decl-file discriminator + the matching-strictness asymmetry). It is OFF
8
+ * with zero production cost when the env var is unset; kept so the next
9
+ * divergence investigation starts from measurement, not a rebuilt harness.
10
+ */
11
+ import type { ResolverContext } from '../edge-resolvers/types.js';
12
+ import type ts from 'typescript';
13
+ /** The inputs of one `resolveDeclToHash` decision, as traced by {@link traceResolveDecl}. */
14
+ export interface ResolveDeclDecision {
15
+ readonly ctx: ResolverContext;
16
+ readonly candidateNames: readonly string[];
17
+ readonly bindingNames: readonly string[];
18
+ readonly declSourceFile: ts.SourceFile;
19
+ readonly dts: boolean;
20
+ readonly out: string | null;
21
+ }
22
+ /** Append one resolveDeclToHash decision row when GRAPH_SITE_LOG is set; else a no-op. */
23
+ export declare function traceResolveDecl(decision: ResolveDeclDecision): void;
24
+ //# sourceMappingURL=resolution-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution-trace.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/resolution-trace.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAoBpE"}
@@ -0,0 +1,38 @@
1
+ // @fitness-ignore-file env-via-registry -- debug-only diagnostic harness, opt-in via the GRAPH_SITE_LOG / GRAPH_ENGINE env vars; NOT production configuration. Reading process.env directly is intentional and isolated to this one module so the production resolvers stay registry-clean. See docs/internal/graph-resolution-trace.md.
2
+ /**
3
+ * Per-site resolution trace (debug-only). When `GRAPH_SITE_LOG` points at a
4
+ * file, every `resolveDeclToHash` decision appends one TSV row:
5
+ * engine \t ownerFile \t callee \t decl=<file> \t dts=<bool> \t spec=<...> \t out=<hash|DECLINE-*>
6
+ *
7
+ * This is the harness that root-caused the exact↔sharded divergence classes
8
+ * (the decl-file discriminator + the matching-strictness asymmetry). It is OFF
9
+ * with zero production cost when the env var is unset; kept so the next
10
+ * divergence investigation starts from measurement, not a rebuilt harness.
11
+ */
12
+ /* v8 ignore start -- debug-only; exercised manually via GRAPH_SITE_LOG, never in the test suite */
13
+ import { appendFileSync } from 'node:fs';
14
+ import { relative, sep } from 'node:path';
15
+ /** Append one resolveDeclToHash decision row when GRAPH_SITE_LOG is set; else a no-op. */
16
+ export function traceResolveDecl(decision) {
17
+ const logPath = process.env.GRAPH_SITE_LOG;
18
+ if (logPath === undefined)
19
+ return;
20
+ const { ctx, candidateNames, bindingNames, declSourceFile, dts, out } = decision;
21
+ const owner = relative(ctx.projectDirAbs, ctx.sourceFile.fileName).split(sep).join('/');
22
+ const declRel = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
23
+ const specifiers = bindingNames.map((b) => ctx.importSpecifiers.get(b) ?? '-').join(',');
24
+ const declineStr = dts ? 'DECLINE-dts-hop' : 'DECLINE-source';
25
+ const outStr = out === null ? declineStr : out.slice(0, 10);
26
+ const line = [
27
+ process.env.GRAPH_ENGINE ?? '?',
28
+ owner,
29
+ candidateNames.join('|'),
30
+ `decl=${declRel}`,
31
+ `dts=${String(dts)}`,
32
+ `spec=${specifiers}`,
33
+ `out=${outStr}`,
34
+ ].join('\t') + '\n';
35
+ appendFileSync(logPath, line);
36
+ }
37
+ /* v8 ignore stop */
38
+ //# sourceMappingURL=resolution-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution-trace.js","sourceRoot":"","sources":["../../src/edge-helpers/resolution-trace.ts"],"names":[],"mappings":"AAAA,yUAAyU;AACzU;;;;;;;;;GASG;AAEH,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAe1C,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC9D,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GACR;QACE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG;QAC/B,KAAK;QACL,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,QAAQ,OAAO,EAAE;QACjB,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE;QACpB,QAAQ,UAAU,EAAE;QACpB,OAAO,MAAM,EAAE;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AACD,oBAAoB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * resolveDeclToHash — map a type-checker-resolved declaration to the catalog
3
+ * bodyHash of its SOURCE occurrence.
4
+ *
5
+ * The single seam every exact-engine resolver (direct-call, property-access,
6
+ * jsx-element, new-expression, polymorphic) routes a resolved declaration
7
+ * through. It unifies the two ways a declaration's source body is reached:
8
+ *
9
+ * 1. IN-PROJECT SOURCE — the declaration lives in a `.ts(x)` file the program
10
+ * compiled from source. Hash the declaration body and match it in the
11
+ * catalog (the original {@link findCatalogEntry} behavior).
12
+ *
13
+ * 2. WORKSPACE-PACKAGE BOUNDARY — Node16 resolves a `@scope/pkg` import to the
14
+ * package's BUILT `dist/*.d.ts`, so the type checker hands back a BODILESS
15
+ * declaration. Hashing it never matches the SOURCE body the catalog holds
16
+ * → the real cross-package edge was dropped. Instead, re-resolve through
17
+ * the SAME export-index model the sharded linker uses: (the call site's
18
+ * import specifier for this name) + (callee name) → the UNIQUE exported
19
+ * source occurrence. Binding-required, so a bare name with no import never
20
+ * resolves (no phantom). Decline-beats-guess on ambiguity.
21
+ *
22
+ * A declaration in a `.d.ts` that is NOT a workspace package the importer bound
23
+ * to (e.g. a `@types/*` ambient global like Vitest's `describe`, or `lib.dom`)
24
+ * resolves to nothing — exactly right: those are not project functions.
25
+ */
26
+ import type { ResolverContext } from '../edge-resolvers/types.js';
27
+ import type ts from 'typescript';
28
+ /**
29
+ * Resolve `declNode` (a function-shaped node returned by
30
+ * `functionLikeFromDeclaration`) to a catalog bodyHash, or `null` to decline.
31
+ *
32
+ * `candidateNames` is the simple name(s) the call site addressed — the EXPORTED
33
+ * callee name (e.g. `getSharedSourceFile`, `walkNodes`). Used both for the
34
+ * in-project hash lookup and the cross-package export lookup.
35
+ *
36
+ * `bindingNames` is the local binding name(s) that were IMPORTED in the call
37
+ * site's file (the namespace receiver for `ns.fn()`, or the callee name itself
38
+ * for a direct `fn()` / `<Fn/>` / `new Fn()`). The cross-package path requires
39
+ * one of these to carry a workspace import specifier — a binding-required check
40
+ * that rules out phantom same-name matches. When `bindingNames` is omitted it
41
+ * defaults to `candidateNames` (direct calls bind by the callee name).
42
+ */
43
+ export declare function resolveDeclToHash(declNode: ts.Node, declSourceFile: ts.SourceFile, candidateNames: readonly string[], ctx: ResolverContext, bindingNames?: readonly string[]): string | null;
44
+ //# sourceMappingURL=resolve-decl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-decl.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/resolve-decl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,EAAE,CAAC,IAAI,EACjB,cAAc,EAAE,EAAE,CAAC,UAAU,EAC7B,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,GAAG,EAAE,eAAe,EACpB,YAAY,GAAE,SAAS,MAAM,EAAmB,GAC/C,MAAM,GAAG,IAAI,CA0Bf"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * resolveDeclToHash — map a type-checker-resolved declaration to the catalog
3
+ * bodyHash of its SOURCE occurrence.
4
+ *
5
+ * The single seam every exact-engine resolver (direct-call, property-access,
6
+ * jsx-element, new-expression, polymorphic) routes a resolved declaration
7
+ * through. It unifies the two ways a declaration's source body is reached:
8
+ *
9
+ * 1. IN-PROJECT SOURCE — the declaration lives in a `.ts(x)` file the program
10
+ * compiled from source. Hash the declaration body and match it in the
11
+ * catalog (the original {@link findCatalogEntry} behavior).
12
+ *
13
+ * 2. WORKSPACE-PACKAGE BOUNDARY — Node16 resolves a `@scope/pkg` import to the
14
+ * package's BUILT `dist/*.d.ts`, so the type checker hands back a BODILESS
15
+ * declaration. Hashing it never matches the SOURCE body the catalog holds
16
+ * → the real cross-package edge was dropped. Instead, re-resolve through
17
+ * the SAME export-index model the sharded linker uses: (the call site's
18
+ * import specifier for this name) + (callee name) → the UNIQUE exported
19
+ * source occurrence. Binding-required, so a bare name with no import never
20
+ * resolves (no phantom). Decline-beats-guess on ambiguity.
21
+ *
22
+ * A declaration in a `.d.ts` that is NOT a workspace package the importer bound
23
+ * to (e.g. a `@types/*` ambient global like Vitest's `describe`, or `lib.dom`)
24
+ * resolves to nothing — exactly right: those are not project functions.
25
+ */
26
+ import { relative, sep } from 'node:path';
27
+ import { resolveCrossPackageCall } from '@opensip-cli/graph';
28
+ import { findCatalogEntry } from './find-catalog-entry.js';
29
+ import { traceResolveDecl } from './resolution-trace.js';
30
+ /**
31
+ * Resolve `declNode` (a function-shaped node returned by
32
+ * `functionLikeFromDeclaration`) to a catalog bodyHash, or `null` to decline.
33
+ *
34
+ * `candidateNames` is the simple name(s) the call site addressed — the EXPORTED
35
+ * callee name (e.g. `getSharedSourceFile`, `walkNodes`). Used both for the
36
+ * in-project hash lookup and the cross-package export lookup.
37
+ *
38
+ * `bindingNames` is the local binding name(s) that were IMPORTED in the call
39
+ * site's file (the namespace receiver for `ns.fn()`, or the callee name itself
40
+ * for a direct `fn()` / `<Fn/>` / `new Fn()`). The cross-package path requires
41
+ * one of these to carry a workspace import specifier — a binding-required check
42
+ * that rules out phantom same-name matches. When `bindingNames` is omitted it
43
+ * defaults to `candidateNames` (direct calls bind by the callee name).
44
+ */
45
+ export function resolveDeclToHash(declNode, declSourceFile, candidateNames, ctx, bindingNames = candidateNames) {
46
+ const dts = declSourceFile.isDeclarationFile;
47
+ const out = dts
48
+ ? // Boundary case: the alias led into a built `.d.ts`. Don't hash the bodiless
49
+ // signature. First try the export index (binding-required — for imported
50
+ // FUNCTIONS). If that declines (e.g. a METHOD call `recv.m()` carries no
51
+ // import binding for `m`), fall back to mapping the checker-attested
52
+ // `dist/*.d.ts` decl to its SOURCE file and pinning by (source file +
53
+ // name). The checker already disambiguated WHICH declaration (this class's
54
+ // method in this file), so the pin is type-anchored, not a name guess — and
55
+ // catalog-SCOPE-independent, so the exact (whole-repo) and sharded (per-
56
+ // shard) passes resolve it identically instead of one declining while the
57
+ // other resolves by an unsound unique-name-in-shard catalog fallback.
58
+ (resolveAcrossPackageBoundary(candidateNames, bindingNames, ctx) ??
59
+ pinByDtsDeclSource(declSourceFile, candidateNames, ctx))
60
+ : // In-project source: hash the body and match it in the catalog; if the
61
+ // body-hash match misses (e.g. arrow-property methods whose cataloged
62
+ // occurrence the hasher can't reproduce from this decl node), fall back to
63
+ // a file+name pin — the SAME unique-or-decline semantics sharded's
64
+ // pinBySpecifier uses, so the two engines converge (Phase 3, Option A).
65
+ (findCatalogEntry(declNode, declSourceFile, ctx.catalog, candidateNames) ??
66
+ pinByFileAndName(declSourceFile, candidateNames, ctx));
67
+ // Per-site decl-file discriminator trace — no-op unless GRAPH_SITE_LOG is set
68
+ // (debug-only; isolated in resolution-trace.ts so this resolver stays env-clean).
69
+ traceResolveDecl({ ctx, candidateNames, bindingNames, declSourceFile, dts, out });
70
+ return out;
71
+ }
72
+ /**
73
+ * File+name pin: the catalog occurrence in `declSourceFile` (the file the type
74
+ * checker attested the declaration lives in) whose simpleName matches one of
75
+ * `candidateNames`. UNIQUE match → its bodyHash; zero or >1 DISTINCT → null
76
+ * (decline). The lenient match sharded's `pinBySpecifier` uses, applied to the
77
+ * checker-attested file: it never guesses the file (only the matching step) and
78
+ * declines on same-name ambiguity — decline-beats-guess, identical semantics to
79
+ * the sharded engine.
80
+ */
81
+ function pinByFileAndName(declSourceFile, candidateNames, ctx) {
82
+ const relPath = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
83
+ return pinBySourceRel(relPath, candidateNames, ctx);
84
+ }
85
+ /**
86
+ * The catalog occurrence in `relPath` (a project-relative SOURCE path) whose
87
+ * simpleName matches one of `candidateNames`. UNIQUE match → its bodyHash; zero
88
+ * or >1 DISTINCT → null (decline). The shared unique-or-decline core of the
89
+ * file+name pins.
90
+ */
91
+ function pinBySourceRel(relPath, candidateNames, ctx) {
92
+ let found = null;
93
+ for (const name of candidateNames) {
94
+ const occs = ctx.catalog.functions[name];
95
+ if (!occs)
96
+ continue;
97
+ for (const o of occs) {
98
+ if (o.filePath !== relPath)
99
+ continue;
100
+ if (found !== null && found !== o.bodyHash)
101
+ return null; // >1 distinct → ambiguous → decline
102
+ found = o.bodyHash;
103
+ }
104
+ }
105
+ return found;
106
+ }
107
+ /**
108
+ * `.d.ts`→source pin: map the checker-attested `dist/*.d.ts` declaration file to
109
+ * its SOURCE counterpart (tsc `outDir:dist` / `rootDir:src` convention) and pin
110
+ * by (source file + name). Returns null when the path is not a `dist/*.d.ts`, or
111
+ * when the mapped source has no unique matching occurrence (decline). Guarded by
112
+ * the catalog match: a wrong mapping simply finds nothing and declines, so the
113
+ * heuristic never fabricates an edge.
114
+ *
115
+ * RESTRICTED TO INTRA-PACKAGE targets (owner's package === target's package). A
116
+ * method call whose receiver type flows through the OWNER package's OWN published
117
+ * `.d.ts` (e.g. `scope.graph?.rules.getAll()` where `scope`'s type references the
118
+ * graph package) resolves to a SOURCE occurrence in the same package — which is
119
+ * in-shard for the sharded engine too, so BOTH engines resolve it identically. A
120
+ * CROSS-package method target lives in another SHARD, which the sharded in-shard
121
+ * pass cannot reach (method calls carry no import binding, so they don't ride the
122
+ * cross-shard boundary linker); resolving those in exact alone would diverge.
123
+ * Cross-package method resolution is the separate, larger completeness item
124
+ * (guarded by the resolution-completeness floor), deliberately left declined in
125
+ * BOTH engines here.
126
+ */
127
+ function pinByDtsDeclSource(declSourceFile, candidateNames, ctx) {
128
+ const rel = relative(ctx.projectDirAbs, declSourceFile.fileName).split(sep).join('/');
129
+ if (!rel.endsWith('.d.ts') || !rel.includes('/dist/'))
130
+ return null;
131
+ const srcRel = rel.replace('/dist/', '/src/').replace(/\.d\.ts$/, '.ts');
132
+ const ownerRel = relative(ctx.projectDirAbs, ctx.sourceFile.fileName).split(sep).join('/');
133
+ if (packageOf(srcRel) !== packageOf(ownerRel))
134
+ return null; // cross-package → decline (symmetry)
135
+ return pinBySourceRel(srcRel, candidateNames, ctx);
136
+ }
137
+ /** The package-root prefix of a project-relative source path — everything before
138
+ * `/src/` (e.g. `packages/graph/engine/src/rules/registry.ts` → `packages/graph/engine`).
139
+ * Used to gate the `.d.ts`→source pin to intra-package targets. */
140
+ function packageOf(rel) {
141
+ const i = rel.indexOf('/src/');
142
+ return i === -1 ? rel : rel.slice(0, i);
143
+ }
144
+ /**
145
+ * Cross-package boundary resolution: find the workspace import specifier one of
146
+ * `bindingNames` was bound to IN THE CALL SITE'S FILE, then link (specifier +
147
+ * exported callee name) to the unique exported source occurrence via the shared
148
+ * resolver. Returns the first combination that resolves, or `null` (decline).
149
+ * An import binding is REQUIRED — a name with no import in this file is not a
150
+ * cross-package call (this is what eliminates the name-collision phantoms).
151
+ */
152
+ function resolveAcrossPackageBoundary(candidateNames, bindingNames, ctx) {
153
+ for (const bindingName of bindingNames) {
154
+ const importSpecifier = ctx.importSpecifiers.get(bindingName);
155
+ if (importSpecifier === undefined)
156
+ continue; // not imported here → no binding
157
+ for (const calleeName of candidateNames) {
158
+ const linked = resolveCrossPackageCall({
159
+ importSpecifier,
160
+ calleeName,
161
+ exportIndex: ctx.crossPackage.exportIndex,
162
+ manifestIndex: ctx.crossPackage.manifestIndex,
163
+ });
164
+ if (linked !== undefined)
165
+ return linked.bodyHash;
166
+ }
167
+ }
168
+ return null;
169
+ }
170
+ //# sourceMappingURL=resolve-decl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-decl.js","sourceRoot":"","sources":["../../src/edge-helpers/resolve-decl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Walk the alias chain to the original ts.Symbol.
3
+ *
4
+ * `import { foo } from './x'` produces an alias symbol whose
5
+ * declarations are the import specifier itself; getAliasedSymbol
6
+ * follows the chain to the actual declaration.
7
+ */
8
+ import ts from 'typescript';
9
+ export declare function unaliasSymbol(symbol: ts.Symbol, checker: ts.TypeChecker): ts.Symbol;
10
+ //# sourceMappingURL=unalias-symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unalias-symbol.d.ts","sourceRoot":"","sources":["../../src/edge-helpers/unalias-symbol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,wBAAgB,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,MAAM,CAgBnF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Walk the alias chain to the original ts.Symbol.
3
+ *
4
+ * `import { foo } from './x'` produces an alias symbol whose
5
+ * declarations are the import specifier itself; getAliasedSymbol
6
+ * follows the chain to the actual declaration.
7
+ */
8
+ import ts from 'typescript';
9
+ export function unaliasSymbol(symbol, checker) {
10
+ let current = symbol;
11
+ // Cap iterations defensively; realistic chains are 1–2 hops.
12
+ /* v8 ignore start */
13
+ for (let i = 0; i < 8; i++) {
14
+ if ((current.flags & ts.SymbolFlags.Alias) === 0)
15
+ return current;
16
+ try {
17
+ const next = checker.getAliasedSymbol(current);
18
+ if (next === current)
19
+ return current;
20
+ current = next;
21
+ }
22
+ catch {
23
+ return current;
24
+ }
25
+ }
26
+ return current;
27
+ /* v8 ignore stop */
28
+ }
29
+ //# sourceMappingURL=unalias-symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unalias-symbol.js","sourceRoot":"","sources":["../../src/edge-helpers/unalias-symbol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAuB;IACtE,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,6DAA6D;IAC7D,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,OAAO,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;IACf,oBAAoB;AACtB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Cross-shard boundary-call extraction (boundary.ts).
3
+ *
4
+ * A boundary call is a call site whose callee name is IMPORTED but the in-shard
5
+ * resolver did NOT resolve THIS site to a target — by construction the target
6
+ * lives in another shard. Detection is keyed on the per-site RESOLUTION OUTCOME
7
+ * (`resolvedEdgesByOwner`), NOT on whether the callee name exists among the
8
+ * shard's occurrences — so a different local function sharing the name does not
9
+ * suppress an imported call (the name-collision fix), and a site already
10
+ * resolved in-shard is skipped (no double edge). These tests drive
11
+ * `extractBoundaryCalls` over real `CallSiteRecord`s and assert the emitted
12
+ * `CrossBoundaryCall` descriptors (and the cases it skips).
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=boundary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary.test.d.ts","sourceRoot":"","sources":["../../../src/edge-resolvers/__tests__/boundary.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}