@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,586 @@
1
+ // @fitness-ignore-file file-length-limit -- behavior fixture suite; related scenarios stay together while covered domains are split into focused tests.
2
+ /**
3
+ * Inventory shape coverage tests (Tier 1).
4
+ *
5
+ * One focused test per syntactic TypeScript shape that stage 1
6
+ * (buildCatalog) must catch — and one per shape that it must NOT.
7
+ *
8
+ * Each test builds a tiny in-memory source string in a temp directory,
9
+ * runs stage 0 + stage 1 (no edge resolution required for inventory),
10
+ * and asserts exact catalog membership: function name(s) present,
11
+ * function name(s) absent, kind, count.
12
+ *
13
+ * If a test fails because a visitor genuinely doesn't handle the shape,
14
+ * that's a real bug — surface it rather than silently weakening the test.
15
+ */
16
+ import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from 'node:fs';
17
+ import { tmpdir } from 'node:os';
18
+ import { dirname, join } from 'node:path';
19
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
20
+ import { discoverFiles } from '../discover.js';
21
+ import { buildCatalog } from './_pipeline.js';
22
+ const FIXTURE_TSCONFIG = JSON.stringify({
23
+ compilerOptions: {
24
+ target: 'ES2022',
25
+ module: 'Node16',
26
+ moduleResolution: 'Node16',
27
+ lib: ['ES2022', 'DOM'],
28
+ strict: true,
29
+ esModuleInterop: true,
30
+ skipLibCheck: true,
31
+ jsx: 'preserve',
32
+ rootDir: '.',
33
+ experimentalDecorators: true,
34
+ },
35
+ include: ['**/*.ts', '**/*.tsx'],
36
+ });
37
+ function buildCatalogFor(rootDir, files) {
38
+ rmSync(rootDir, { recursive: true, force: true });
39
+ mkdirSync(rootDir, { recursive: true });
40
+ writeFileSync(join(rootDir, 'tsconfig.json'), FIXTURE_TSCONFIG, 'utf8');
41
+ for (const [rel, content] of Object.entries(files)) {
42
+ const filePath = join(rootDir, rel);
43
+ mkdirSync(dirname(filePath), { recursive: true });
44
+ writeFileSync(filePath, content, 'utf8');
45
+ }
46
+ const discovery = discoverFiles({ projectDir: rootDir });
47
+ const inv = buildCatalog({
48
+ projectDirAbs: discovery.projectDirAbs,
49
+ files: discovery.files,
50
+ compilerOptions: discovery.compilerOptions,
51
+ tsConfigPathAbs: discovery.tsConfigPathAbs,
52
+ });
53
+ return inv.catalog;
54
+ }
55
+ function allOccurrences(catalog) {
56
+ const out = [];
57
+ for (const occs of Object.values(catalog.functions)) {
58
+ for (const o of occs)
59
+ out.push(o);
60
+ }
61
+ return out;
62
+ }
63
+ function findByName(catalog, predicate) {
64
+ for (const [name, occs] of Object.entries(catalog.functions)) {
65
+ for (const o of occs) {
66
+ if (predicate(name, o))
67
+ return o;
68
+ }
69
+ }
70
+ return undefined;
71
+ }
72
+ /**
73
+ * Cache fixtures across describe blocks: per-shape directories let
74
+ * tests stay independent without hammering the filesystem on every
75
+ * `it()`.
76
+ */
77
+ function makeFixture(label, files) {
78
+ const rootDir = mkdtempSync(join(tmpdir(), `graph-shape-${label}-`));
79
+ const catalog = buildCatalogFor(rootDir, files);
80
+ return {
81
+ catalog,
82
+ rootDir,
83
+ cleanup: () => rmSync(rootDir, { recursive: true, force: true }),
84
+ };
85
+ }
86
+ // --------------------------------------------------------------------------
87
+ // Tier 1 — Positive shape coverage (these MUST be detected)
88
+ // --------------------------------------------------------------------------
89
+ describe('Tier 1 — function-declaration shapes', () => {
90
+ let f;
91
+ beforeAll(() => {
92
+ f = makeFixture('fndecl', {
93
+ 'plain.ts': `function foo() { return 1; }\n`,
94
+ 'asyncfn.ts': `async function asyncFoo() { return 1; }\n`,
95
+ 'gen.ts': `function* genFoo() { yield 1; }\n`,
96
+ 'asyncgen.ts': `async function* asyncGen() { yield 1; }\n`,
97
+ });
98
+ });
99
+ afterAll(() => f.cleanup());
100
+ it('1. plain function declaration', () => {
101
+ const occ = findByName(f.catalog, (n) => n === 'foo');
102
+ expect(occ).toBeDefined();
103
+ expect(occ.kind).toBe('function-declaration');
104
+ expect(occ.filePath).toBe('plain.ts');
105
+ });
106
+ it('2. async function declaration', () => {
107
+ const occ = findByName(f.catalog, (n) => n === 'asyncFoo');
108
+ expect(occ).toBeDefined();
109
+ expect(occ.kind).toBe('function-declaration');
110
+ });
111
+ it('3. generator function declaration', () => {
112
+ const occ = findByName(f.catalog, (n) => n === 'genFoo');
113
+ expect(occ).toBeDefined();
114
+ expect(occ.kind).toBe('function-declaration');
115
+ });
116
+ it('4. async generator function declaration', () => {
117
+ const occ = findByName(f.catalog, (n) => n === 'asyncGen');
118
+ expect(occ).toBeDefined();
119
+ expect(occ.kind).toBe('function-declaration');
120
+ });
121
+ });
122
+ describe('Tier 1 — function-expression shapes', () => {
123
+ let f;
124
+ beforeAll(() => {
125
+ f = makeFixture('fnexpr', {
126
+ 'named.ts': `const x = function named() { return 1; };\n`,
127
+ 'anon.ts': `const x = function() { return 1; };\n`,
128
+ 'iife.ts': `(function() { return 1; })();\n`,
129
+ });
130
+ });
131
+ afterAll(() => f.cleanup());
132
+ it('5. named function expression', () => {
133
+ // The visitor uses node.name first, then falls back to the parent
134
+ // VariableDeclaration name. Either name is acceptable evidence the
135
+ // shape was detected; the kind must be 'function-expression'.
136
+ const named = findByName(f.catalog, (n, o) => o.filePath === 'named.ts' &&
137
+ o.kind === 'function-expression' &&
138
+ (n === 'named' || n === 'x'));
139
+ expect(named).toBeDefined();
140
+ expect(named.kind).toBe('function-expression');
141
+ expect(named.filePath).toBe('named.ts');
142
+ });
143
+ it('6. anonymous function expression assigned to const', () => {
144
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'anon.ts' && o.kind === 'function-expression');
145
+ expect(occ).toBeDefined();
146
+ // Visitor falls back to parent var name 'x' when the function has no name.
147
+ expect(occ.simpleName).toBe('x');
148
+ });
149
+ it('7. IIFE — inner function-expression is captured', () => {
150
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'iife.ts' && o.kind === 'function-expression');
151
+ expect(occ).toBeDefined();
152
+ // No parent VariableDeclaration → synthesized <fn-expr:...> name.
153
+ expect(occ.simpleName).toMatch(/^<fn-expr:iife\.ts:\d+:\d+>$/);
154
+ });
155
+ });
156
+ describe('Tier 1 — arrow function shapes', () => {
157
+ let f;
158
+ beforeAll(() => {
159
+ f = makeFixture('arrow', {
160
+ 'zero.ts': `const z = () => 1;\n`,
161
+ 'one.ts': `const o = (x: number) => x;\n`,
162
+ 'many.ts': `const m = (a: number, b: number, c: number) => a + b + c;\n`,
163
+ 'rest.ts': `const r = (...args: number[]) => args.length;\n`,
164
+ 'asynced.ts': `const ay = async () => 1;\n`,
165
+ 'callback.ts': `const arr = [1, 2, 3];\nexport const doubled = arr.map(x => x * 2);\n`,
166
+ 'default.ts': `export default () => 1;\n`,
167
+ 'objprop.ts': `export const obj = { method: () => 1 };\n`,
168
+ });
169
+ });
170
+ afterAll(() => f.cleanup());
171
+ it('8. zero-param arrow', () => {
172
+ const occ = findByName(f.catalog, (n) => n === 'z');
173
+ expect(occ).toBeDefined();
174
+ expect(occ.kind).toBe('arrow');
175
+ expect(occ.params).toHaveLength(0);
176
+ });
177
+ it('9. one-param arrow', () => {
178
+ const occ = findByName(f.catalog, (n) => n === 'o');
179
+ expect(occ).toBeDefined();
180
+ expect(occ.kind).toBe('arrow');
181
+ expect(occ.params).toHaveLength(1);
182
+ expect(occ.params[0]).toMatchObject({ name: 'x', rest: false });
183
+ });
184
+ it('10. many-params arrow', () => {
185
+ const occ = findByName(f.catalog, (n) => n === 'm');
186
+ expect(occ).toBeDefined();
187
+ expect(occ.kind).toBe('arrow');
188
+ expect(occ.params.map((p) => p.name)).toEqual(['a', 'b', 'c']);
189
+ });
190
+ it('11. rest-param arrow', () => {
191
+ const occ = findByName(f.catalog, (n) => n === 'r');
192
+ expect(occ).toBeDefined();
193
+ expect(occ.kind).toBe('arrow');
194
+ expect(occ.params[0]).toMatchObject({ name: 'args', rest: true });
195
+ });
196
+ it('12. async arrow', () => {
197
+ const occ = findByName(f.catalog, (n) => n === 'ay');
198
+ expect(occ).toBeDefined();
199
+ expect(occ.kind).toBe('arrow');
200
+ });
201
+ it('13. arrow as map() callback gets a synthesized <arrow:...> name', () => {
202
+ const occ = findByName(f.catalog, (n, o) => o.filePath === 'callback.ts' && o.kind === 'arrow' && n.startsWith('<arrow:'));
203
+ expect(occ).toBeDefined();
204
+ expect(occ.simpleName).toMatch(/^<arrow:callback\.ts:\d+:\d+>$/);
205
+ });
206
+ it('14. anonymous arrow as default export — captured as arrow', () => {
207
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'default.ts' && o.kind === 'arrow');
208
+ expect(occ).toBeDefined();
209
+ // No parent VariableDeclaration/PropertyAssignment → synthesized name.
210
+ expect(occ.simpleName).toMatch(/^<arrow:default\.ts:\d+:\d+>$/);
211
+ });
212
+ it('15. arrow as property initializer takes the property name', () => {
213
+ const occ = findByName(f.catalog, (n, o) => o.filePath === 'objprop.ts' && o.kind === 'arrow' && n === 'method');
214
+ expect(occ).toBeDefined();
215
+ });
216
+ });
217
+ describe('Tier 1 — class member shapes', () => {
218
+ let f;
219
+ beforeAll(() => {
220
+ f = makeFixture('class-member', {
221
+ 'plain.ts': `export class C { method() { return 1; } }\n`,
222
+ 'static.ts': `export class C { static method() { return 1; } }\n`,
223
+ 'asyncm.ts': `export class C { async method() { return 1; } }\n`,
224
+ 'genm.ts': `export class C { *method() { yield 1; } }\n`,
225
+ 'priv.ts': `export class C { #priv() { return 1; } }\n`,
226
+ 'computed.ts': `export class C { ['computed']() { return 1; } }\n`,
227
+ 'getter.ts': `export class C { get x() { return 1; } }\n`,
228
+ 'setter.ts': `export class C { set x(v: number) { this._v = v; } private _v = 0; }\n`,
229
+ 'ctor.ts': `export class C { constructor() {} }\n`,
230
+ 'noctor.ts': `export class C { method() {} }\n`,
231
+ 'cexpr.ts': `export const cls = class { method() { return 1; } };\n`,
232
+ });
233
+ });
234
+ afterAll(() => f.cleanup());
235
+ it('16. regular method', () => {
236
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'plain.ts');
237
+ expect(occ).toBeDefined();
238
+ expect(occ.kind).toBe('method');
239
+ expect(occ.enclosingClass).toBe('C');
240
+ });
241
+ it('17. static method', () => {
242
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'static.ts');
243
+ expect(occ).toBeDefined();
244
+ expect(occ.kind).toBe('method');
245
+ });
246
+ it('18. async method', () => {
247
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'asyncm.ts');
248
+ expect(occ).toBeDefined();
249
+ expect(occ.kind).toBe('method');
250
+ });
251
+ it('19. generator method', () => {
252
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'genm.ts');
253
+ expect(occ).toBeDefined();
254
+ expect(occ.kind).toBe('method');
255
+ });
256
+ it('20. private method (#priv)', () => {
257
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'priv.ts' && o.kind === 'method');
258
+ expect(occ).toBeDefined();
259
+ expect(occ.simpleName).toBe('#priv');
260
+ });
261
+ it('21. computed method name — kind is method even when name is computed', () => {
262
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'computed.ts' && o.kind === 'method');
263
+ expect(occ).toBeDefined();
264
+ // The visitor returns expression.getText() for ComputedPropertyName.
265
+ expect(occ.simpleName).toContain('computed');
266
+ });
267
+ it('22. getter — kind: getter', () => {
268
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'getter.ts' && o.kind === 'getter');
269
+ expect(occ).toBeDefined();
270
+ expect(occ.simpleName).toBe('x');
271
+ });
272
+ it('23. setter — kind: setter', () => {
273
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'setter.ts' && o.kind === 'setter');
274
+ expect(occ).toBeDefined();
275
+ expect(occ.simpleName).toBe('x');
276
+ });
277
+ it('24. explicit constructor — kind: constructor', () => {
278
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'ctor.ts' && o.kind === 'constructor');
279
+ expect(occ).toBeDefined();
280
+ expect(occ.simpleName).toBe('C');
281
+ expect(occ.enclosingClass).toBe('C');
282
+ });
283
+ it('25. class with no explicit constructor — no synthetic constructor', () => {
284
+ const ctors = allOccurrences(f.catalog).filter((o) => o.filePath === 'noctor.ts' && o.kind === 'constructor');
285
+ expect(ctors).toHaveLength(0);
286
+ });
287
+ it('26. class expression with method', () => {
288
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'cexpr.ts');
289
+ expect(occ).toBeDefined();
290
+ expect(occ.kind).toBe('method');
291
+ });
292
+ });
293
+ describe('Tier 1 — decorators and overloads', () => {
294
+ let f;
295
+ beforeAll(() => {
296
+ f = makeFixture('deco-over', {
297
+ 'deco.ts': `function decorator(_t: object, _k: string, _d: PropertyDescriptor) {}\n` +
298
+ `export class C {\n` +
299
+ ` @decorator\n` +
300
+ ` method() { return 1; }\n` +
301
+ `}\n`,
302
+ 'overloads.ts': `export function foo(): void;\n` +
303
+ `export function foo(x: number): number;\n` +
304
+ `export function foo(x?: number): number | void {\n` +
305
+ ` return x;\n` +
306
+ `}\n`,
307
+ });
308
+ });
309
+ afterAll(() => f.cleanup());
310
+ it('27. decorated method captures decorators', () => {
311
+ const occ = findByName(f.catalog, (n, o) => n === 'method' && o.filePath === 'deco.ts');
312
+ expect(occ).toBeDefined();
313
+ expect(occ.kind).toBe('method');
314
+ expect(occ.decorators).toContain('decorator');
315
+ });
316
+ it('28. function overloads — only one entry per implementation', () => {
317
+ const fooOccs = allOccurrences(f.catalog).filter((o) => o.simpleName === 'foo' && o.filePath === 'overloads.ts');
318
+ expect(fooOccs).toHaveLength(1);
319
+ expect(fooOccs[0].params.map((p) => p.name)).toEqual(['x']);
320
+ });
321
+ });
322
+ describe('Tier 1 — namespaced and default-export functions', () => {
323
+ let f;
324
+ beforeAll(() => {
325
+ f = makeFixture('namespace-default', {
326
+ 'ns.ts': `export namespace Ns {\n` + ` export function foo() { return 1; }\n` + `}\n`,
327
+ 'def.ts': `export default function() { return 1; }\n`,
328
+ });
329
+ });
330
+ afterAll(() => f.cleanup());
331
+ it('29. namespaced function captured', () => {
332
+ const occ = findByName(f.catalog, (n, o) => n === 'foo' && o.filePath === 'ns.ts');
333
+ expect(occ).toBeDefined();
334
+ expect(occ.kind).toBe('function-declaration');
335
+ });
336
+ it('30. anonymous default-export function — recorded as function-declaration with synthesized name', () => {
337
+ const nonModInit = allOccurrences(f.catalog).filter((o) => o.filePath === 'def.ts' && o.kind !== 'module-init');
338
+ expect(nonModInit.length).toBeGreaterThan(0);
339
+ const def = nonModInit.find((o) => o.simpleName === '<default>');
340
+ expect(def).toBeDefined();
341
+ expect(def.kind).toBe('function-declaration');
342
+ });
343
+ });
344
+ describe('Tier 1 — module-init synthesis', () => {
345
+ let f;
346
+ beforeAll(() => {
347
+ f = makeFixture('modinit', {
348
+ 'top.ts': `console.log('top level');\n`,
349
+ 'empty.ts': `\n`,
350
+ });
351
+ });
352
+ afterAll(() => f.cleanup());
353
+ it('31. top-level statement file has a <module-init> occurrence', () => {
354
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'top.ts' && o.kind === 'module-init');
355
+ expect(occ).toBeDefined();
356
+ expect(occ.simpleName).toBe('<module-init:top.ts>');
357
+ expect(occ.line).toBe(1);
358
+ expect(occ.column).toBe(0);
359
+ });
360
+ it('32. empty file still produces a <module-init> occurrence', () => {
361
+ // Per the inventory implementation, every file gets exactly one
362
+ // module-init synthesized. Empty files get one too — its body hash
363
+ // covers the (empty) statement list.
364
+ const modInits = allOccurrences(f.catalog).filter((o) => o.filePath === 'empty.ts' && o.kind === 'module-init');
365
+ expect(modInits).toHaveLength(1);
366
+ });
367
+ });
368
+ // --------------------------------------------------------------------------
369
+ // Tier 1 — Negative tests (these MUST NOT be in the catalog)
370
+ // --------------------------------------------------------------------------
371
+ describe('Tier 1 — negative shapes (must NOT be in catalog)', () => {
372
+ let f;
373
+ beforeAll(() => {
374
+ f = makeFixture('negatives', {
375
+ 'typealias.ts': `export type X = () => void;\n`,
376
+ 'iface-method.ts': `export interface I { foo(): void; }\n`,
377
+ 'iface-prop.ts': `export interface I { foo: () => void; }\n`,
378
+ 'abstract.ts': `export abstract class A { abstract method(): void; }\n`,
379
+ 'ambient.ts': `declare function foo(): void;\nexport {};\n`,
380
+ 'jsx.tsx': `export const C = () => <div>hello</div>;\n`,
381
+ 'typelit.ts': `export type X = { foo(): void };\n`,
382
+ });
383
+ });
384
+ afterAll(() => f.cleanup());
385
+ it('33. function type alias is not a callable in the catalog', () => {
386
+ // `() => void` here is a TypeNode, not an ArrowFunction. The arrow
387
+ // visitor must not pick it up.
388
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'typealias.ts' && o.kind === 'arrow');
389
+ expect(arrows).toHaveLength(0);
390
+ });
391
+ it('34. interface method declaration (signature-only) is not in catalog', () => {
392
+ // No body → not a callable.
393
+ const methods = allOccurrences(f.catalog).filter((o) => o.filePath === 'iface-method.ts' && o.kind === 'method');
394
+ expect(methods).toHaveLength(0);
395
+ });
396
+ it('35. interface property with function type is not in catalog', () => {
397
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'iface-prop.ts' && o.kind === 'arrow');
398
+ expect(arrows).toHaveLength(0);
399
+ });
400
+ it('36. abstract method (no body) is not in catalog', () => {
401
+ const methods = allOccurrences(f.catalog).filter((o) => o.filePath === 'abstract.ts' && o.kind === 'method');
402
+ expect(methods).toHaveLength(0);
403
+ });
404
+ it('37. ambient declare function is not in catalog', () => {
405
+ const fns = allOccurrences(f.catalog).filter((o) => o.filePath === 'ambient.ts' && o.kind === 'function-declaration');
406
+ expect(fns).toHaveLength(0);
407
+ });
408
+ it('38. JSX intrinsic element (<div>) is not a function in the catalog', () => {
409
+ // The arrow `() => <div>hello</div>` IS a real callable (the C
410
+ // const). But `div` itself must not appear as a function.
411
+ const divEntry = allOccurrences(f.catalog).filter((o) => o.simpleName === 'div');
412
+ expect(divEntry).toHaveLength(0);
413
+ });
414
+ it('39. type literal with method shorthand is not in catalog', () => {
415
+ // A method declared inside a TypeLiteralNode is a MethodSignature,
416
+ // not a MethodDeclaration. The visitor only handles MethodDeclaration.
417
+ const methods = allOccurrences(f.catalog).filter((o) => o.filePath === 'typelit.ts' && o.kind === 'method');
418
+ expect(methods).toHaveLength(0);
419
+ });
420
+ });
421
+ describe('Tier 1 — overload signatures without implementation', () => {
422
+ let f;
423
+ beforeAll(() => {
424
+ f = makeFixture('overload-sig-only', {
425
+ // An overload signature (no body) followed by no implementation
426
+ // would be a TS error in production code; this fixture uses an
427
+ // ambient declaration to make the case explicit. The point is
428
+ // that signature-only declarations don't make it into the catalog.
429
+ 'sig.ts': `declare function foo(): void;\nexport {};\n`,
430
+ });
431
+ });
432
+ afterAll(() => f.cleanup());
433
+ it('40. ambient/signature-only function declaration is not in catalog', () => {
434
+ const fns = allOccurrences(f.catalog).filter((o) => o.filePath === 'sig.ts' && o.kind === 'function-declaration');
435
+ expect(fns).toHaveLength(0);
436
+ });
437
+ });
438
+ // --------------------------------------------------------------------------
439
+ // Tier 1 — Additional class-related shapes (per research report)
440
+ // --------------------------------------------------------------------------
441
+ describe('Tier 1 — additional class-member shapes', () => {
442
+ let f;
443
+ beforeAll(() => {
444
+ f = makeFixture('class-extra', {
445
+ 'static-init.ts': `export class C { static x = 0; static { C.x = 1; } }\n`,
446
+ 'field-arrow.ts': `export class C { handler = () => 1; }\n`,
447
+ 'static-field-fn.ts': `export class C { static h = function() { return 1; }; }\n`,
448
+ 'priv-field-arrow.ts': `export class C { #h = () => 1; }\n`,
449
+ 'priv-static-method.ts': `export class C { static #foo() { return 1; } }\n`,
450
+ 'static-accessors.ts': `export class C {\n` +
451
+ ` private static _v = 0;\n` +
452
+ ` static get x() { return C._v; }\n` +
453
+ ` static set x(v: number) { C._v = v; }\n` +
454
+ `}\n`,
455
+ });
456
+ });
457
+ afterAll(() => f.cleanup());
458
+ it('41. class static-init block is captured', () => {
459
+ // Static initialization blocks (`static { ... }`) carry executable
460
+ // code at class-evaluation time. They are real callables in any
461
+ // call-graph; emit one per block, named '<static-init>'.
462
+ const blocks = allOccurrences(f.catalog).filter((o) => o.filePath === 'static-init.ts' && o.simpleName === '<static-init>');
463
+ expect(blocks.length).toBeGreaterThanOrEqual(1);
464
+ expect(blocks[0].enclosingClass).toBe('C');
465
+ });
466
+ it('42. class field with arrow initializer takes the field name', () => {
467
+ const occ = findByName(f.catalog, (n, o) => o.filePath === 'field-arrow.ts' && o.kind === 'arrow' && n === 'handler');
468
+ expect(occ).toBeDefined();
469
+ expect(occ.enclosingClass).toBe('C');
470
+ });
471
+ it('43. static class field with function-expression initializer takes the field name', () => {
472
+ const occ = findByName(f.catalog, (n, o) => o.filePath === 'static-field-fn.ts' && o.kind === 'function-expression' && n === 'h');
473
+ expect(occ).toBeDefined();
474
+ expect(occ.enclosingClass).toBe('C');
475
+ });
476
+ it('44. private class field with arrow initializer takes the (#-prefixed) field name', () => {
477
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'priv-field-arrow.ts' && o.kind === 'arrow' && o.enclosingClass === 'C');
478
+ expect(occ).toBeDefined();
479
+ expect(occ.simpleName).toBe('#h');
480
+ });
481
+ it('45. private static method (#foo)', () => {
482
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'priv-static-method.ts' && o.kind === 'method');
483
+ expect(occ).toBeDefined();
484
+ expect(occ.simpleName).toBe('#foo');
485
+ expect(occ.enclosingClass).toBe('C');
486
+ });
487
+ it('46. static getter and setter both captured as separate accessors', () => {
488
+ const getters = allOccurrences(f.catalog).filter((o) => o.filePath === 'static-accessors.ts' && o.kind === 'getter' && o.simpleName === 'x');
489
+ const setters = allOccurrences(f.catalog).filter((o) => o.filePath === 'static-accessors.ts' && o.kind === 'setter' && o.simpleName === 'x');
490
+ expect(getters).toHaveLength(1);
491
+ expect(setters).toHaveLength(1);
492
+ });
493
+ });
494
+ // --------------------------------------------------------------------------
495
+ // Tier 1 — Object-literal accessors and method shorthand
496
+ // --------------------------------------------------------------------------
497
+ describe('Tier 1 — object-literal accessors and method shorthand', () => {
498
+ let f;
499
+ beforeAll(() => {
500
+ f = makeFixture('obj-literal', {
501
+ 'obj-getter.ts': `export const o = { get x() { return 1; } };\n`,
502
+ 'obj-setter.ts': `export const o = { set x(v: number) { /* noop */ void v; } };\n`,
503
+ 'obj-async.ts': `export const o = { async foo() { return 1; } };\n`,
504
+ 'obj-gen.ts': `export const o = { *foo() { yield 1; } };\n`,
505
+ });
506
+ });
507
+ afterAll(() => f.cleanup());
508
+ it('47. object-literal getter is captured as a getter', () => {
509
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'obj-getter.ts' && o.kind === 'getter' && o.simpleName === 'x');
510
+ expect(occ).toBeDefined();
511
+ });
512
+ it('48. object-literal setter is captured as a setter', () => {
513
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'obj-setter.ts' && o.kind === 'setter' && o.simpleName === 'x');
514
+ expect(occ).toBeDefined();
515
+ });
516
+ it('49. object-literal async method shorthand is captured as a method', () => {
517
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'obj-async.ts' && o.kind === 'method' && o.simpleName === 'foo');
518
+ expect(occ).toBeDefined();
519
+ });
520
+ it('50. object-literal generator method shorthand is captured as a method', () => {
521
+ const occ = findByName(f.catalog, (_n, o) => o.filePath === 'obj-gen.ts' && o.kind === 'method' && o.simpleName === 'foo');
522
+ expect(occ).toBeDefined();
523
+ });
524
+ });
525
+ // --------------------------------------------------------------------------
526
+ // Tier 1 — Traversal gaps: inner callables in odd parent positions
527
+ // --------------------------------------------------------------------------
528
+ describe('Tier 1 — traversal gaps', () => {
529
+ let f;
530
+ beforeAll(() => {
531
+ f = makeFixture('traversal', {
532
+ 'jsx-attr.tsx': `function Btn(props: { onClick: () => void }) { return null; }\n` +
533
+ `function save() { /* noop */ }\n` +
534
+ `export const App = () => <Btn onClick={() => save()} />;\n`,
535
+ 'tagged-tpl.ts': `function tag(strings: TemplateStringsArray, ...vals: unknown[]): string {\n` +
536
+ ` void strings; void vals; return '';\n` +
537
+ `}\n` +
538
+ `export const t = tag\`\${ () => 1 }\`;\n`,
539
+ 'computed-key.ts': `export const o = { [(() => 'k')()]: 1 };\n`,
540
+ 'decorator-arg.ts': `function retry(_get: () => number) { return (_t: object, _k: string, _d: PropertyDescriptor) => {}; }\n` +
541
+ `export class C { @retry(() => 3) method() { return 1; } }\n`,
542
+ });
543
+ });
544
+ afterAll(() => f.cleanup());
545
+ it('51. arrow inside JSX attribute value is captured', () => {
546
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'jsx-attr.tsx' && o.kind === 'arrow');
547
+ // App itself is an arrow + the inner onClick arrow → at least 2.
548
+ expect(arrows.length).toBeGreaterThanOrEqual(2);
549
+ const inner = arrows.find((o) => o.simpleName.startsWith('<arrow:'));
550
+ expect(inner).toBeDefined();
551
+ });
552
+ it('52. arrow inside tagged-template substitution is captured', () => {
553
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'tagged-tpl.ts' && o.kind === 'arrow');
554
+ expect(arrows.length).toBeGreaterThanOrEqual(1);
555
+ });
556
+ it('53. arrow in computed property key is captured', () => {
557
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'computed-key.ts' && o.kind === 'arrow');
558
+ expect(arrows.length).toBeGreaterThanOrEqual(1);
559
+ });
560
+ it('54. arrow as decorator argument is captured', () => {
561
+ const arrows = allOccurrences(f.catalog).filter((o) => o.filePath === 'decorator-arg.ts' && o.kind === 'arrow');
562
+ expect(arrows.length).toBeGreaterThanOrEqual(1);
563
+ });
564
+ });
565
+ // --------------------------------------------------------------------------
566
+ // Tier 1 — Auto-accessor (TS 5.x stage-3 decorators): must not crash
567
+ // --------------------------------------------------------------------------
568
+ describe('Tier 1 — auto-accessor (must not crash)', () => {
569
+ it('55. class with `accessor` field runs cleanly', () => {
570
+ const f = makeFixture('auto-accessor', {
571
+ 'auto.ts': `export class C { accessor field = 1; }\n`,
572
+ });
573
+ try {
574
+ // Stage 1 must not throw. If it did, makeFixture would throw
575
+ // synchronously and we'd never get here.
576
+ const accessors = allOccurrences(f.catalog).filter((o) => o.filePath === 'auto.ts' &&
577
+ (o.kind === 'getter' || o.kind === 'setter' || o.kind === 'method'));
578
+ // No spurious entry should be emitted for a stored accessor field.
579
+ expect(accessors).toHaveLength(0);
580
+ }
581
+ finally {
582
+ f.cleanup();
583
+ }
584
+ });
585
+ });
586
+ //# sourceMappingURL=inventory-shape-coverage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-shape-coverage.test.js","sourceRoot":"","sources":["../../src/__tests__/inventory-shape-coverage.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * InventoryVisitor contract conformance (PR-5).
3
+ *
4
+ * Compile-time test seam: six of the seven visitors implement the
5
+ * InventoryVisitor signature alias. module-init.ts is the deliberate
6
+ * exception (one-per-file synthesis, not per-node visit).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/inventory-visitors/contract.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}