@backthread/extractor 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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/cluster/domain-grouping.d.ts +113 -0
  4. package/dist/cluster/domain-grouping.d.ts.map +1 -0
  5. package/dist/cluster/domain-grouping.js +277 -0
  6. package/dist/cluster/domain-grouping.js.map +1 -0
  7. package/dist/cluster/grouping-gate.d.ts +54 -0
  8. package/dist/cluster/grouping-gate.d.ts.map +1 -0
  9. package/dist/cluster/grouping-gate.js +0 -0
  10. package/dist/cluster/grouping-gate.js.map +1 -0
  11. package/dist/cluster/louvain.d.ts +88 -0
  12. package/dist/cluster/louvain.d.ts.map +1 -0
  13. package/dist/cluster/louvain.js +674 -0
  14. package/dist/cluster/louvain.js.map +1 -0
  15. package/dist/cluster/overrides.d.ts +19 -0
  16. package/dist/cluster/overrides.d.ts.map +1 -0
  17. package/dist/cluster/overrides.js +32 -0
  18. package/dist/cluster/overrides.js.map +1 -0
  19. package/dist/cluster/subsystem.d.ts +45 -0
  20. package/dist/cluster/subsystem.d.ts.map +1 -0
  21. package/dist/cluster/subsystem.js +299 -0
  22. package/dist/cluster/subsystem.js.map +1 -0
  23. package/dist/cluster/workspaces.d.ts +64 -0
  24. package/dist/cluster/workspaces.d.ts.map +1 -0
  25. package/dist/cluster/workspaces.js +739 -0
  26. package/dist/cluster/workspaces.js.map +1 -0
  27. package/dist/extract.d.ts +52 -0
  28. package/dist/extract.d.ts.map +1 -0
  29. package/dist/extract.js +48 -0
  30. package/dist/extract.js.map +1 -0
  31. package/dist/framework/celery/celery.d.ts +17 -0
  32. package/dist/framework/celery/celery.d.ts.map +1 -0
  33. package/dist/framework/celery/celery.js +524 -0
  34. package/dist/framework/celery/celery.js.map +1 -0
  35. package/dist/framework/contribute-step.d.ts +38 -0
  36. package/dist/framework/contribute-step.d.ts.map +1 -0
  37. package/dist/framework/contribute-step.js +403 -0
  38. package/dist/framework/contribute-step.js.map +1 -0
  39. package/dist/framework/detect-step.d.ts +8 -0
  40. package/dist/framework/detect-step.d.ts.map +1 -0
  41. package/dist/framework/detect-step.js +54 -0
  42. package/dist/framework/detect-step.js.map +1 -0
  43. package/dist/framework/detect-util.d.ts +24 -0
  44. package/dist/framework/detect-util.d.ts.map +1 -0
  45. package/dist/framework/detect-util.js +59 -0
  46. package/dist/framework/detect-util.js.map +1 -0
  47. package/dist/framework/django/django.d.ts +22 -0
  48. package/dist/framework/django/django.d.ts.map +1 -0
  49. package/dist/framework/django/django.js +940 -0
  50. package/dist/framework/django/django.js.map +1 -0
  51. package/dist/framework/fastapi/fastapi.d.ts +27 -0
  52. package/dist/framework/fastapi/fastapi.d.ts.map +1 -0
  53. package/dist/framework/fastapi/fastapi.js +477 -0
  54. package/dist/framework/fastapi/fastapi.js.map +1 -0
  55. package/dist/framework/faststream/faststream.d.ts +19 -0
  56. package/dist/framework/faststream/faststream.d.ts.map +1 -0
  57. package/dist/framework/faststream/faststream.js +765 -0
  58. package/dist/framework/faststream/faststream.js.map +1 -0
  59. package/dist/framework/flask/flask.d.ts +17 -0
  60. package/dist/framework/flask/flask.d.ts.map +1 -0
  61. package/dist/framework/flask/flask.js +507 -0
  62. package/dist/framework/flask/flask.js.map +1 -0
  63. package/dist/framework/graphql/graphql.d.ts +17 -0
  64. package/dist/framework/graphql/graphql.d.ts.map +1 -0
  65. package/dist/framework/graphql/graphql.js +708 -0
  66. package/dist/framework/graphql/graphql.js.map +1 -0
  67. package/dist/framework/grpc/grpc.d.ts +22 -0
  68. package/dist/framework/grpc/grpc.d.ts.map +1 -0
  69. package/dist/framework/grpc/grpc.js +618 -0
  70. package/dist/framework/grpc/grpc.js.map +1 -0
  71. package/dist/framework/litestar/litestar.d.ts +17 -0
  72. package/dist/framework/litestar/litestar.d.ts.map +1 -0
  73. package/dist/framework/litestar/litestar.js +536 -0
  74. package/dist/framework/litestar/litestar.js.map +1 -0
  75. package/dist/framework/nest/nest.d.ts +19 -0
  76. package/dist/framework/nest/nest.d.ts.map +1 -0
  77. package/dist/framework/nest/nest.js +613 -0
  78. package/dist/framework/nest/nest.js.map +1 -0
  79. package/dist/framework/next/next.d.ts +22 -0
  80. package/dist/framework/next/next.d.ts.map +1 -0
  81. package/dist/framework/next/next.js +449 -0
  82. package/dist/framework/next/next.js.map +1 -0
  83. package/dist/framework/node/node.d.ts +24 -0
  84. package/dist/framework/node/node.d.ts.map +1 -0
  85. package/dist/framework/node/node.js +1009 -0
  86. package/dist/framework/node/node.js.map +1 -0
  87. package/dist/framework/orchestrator/orchestrator.d.ts +34 -0
  88. package/dist/framework/orchestrator/orchestrator.d.ts.map +1 -0
  89. package/dist/framework/orchestrator/orchestrator.js +691 -0
  90. package/dist/framework/orchestrator/orchestrator.js.map +1 -0
  91. package/dist/framework/orm/orm.d.ts +61 -0
  92. package/dist/framework/orm/orm.d.ts.map +1 -0
  93. package/dist/framework/orm/orm.js +620 -0
  94. package/dist/framework/orm/orm.js.map +1 -0
  95. package/dist/framework/python/analyze.d.ts +38 -0
  96. package/dist/framework/python/analyze.d.ts.map +1 -0
  97. package/dist/framework/python/analyze.js +98 -0
  98. package/dist/framework/python/analyze.js.map +1 -0
  99. package/dist/framework/python/py-ast.d.ts +130 -0
  100. package/dist/framework/python/py-ast.d.ts.map +1 -0
  101. package/dist/framework/python/py-ast.js +344 -0
  102. package/dist/framework/python/py-ast.js.map +1 -0
  103. package/dist/framework/python-orm/python-orm.d.ts +19 -0
  104. package/dist/framework/python-orm/python-orm.d.ts.map +1 -0
  105. package/dist/framework/python-orm/python-orm.js +516 -0
  106. package/dist/framework/python-orm/python-orm.js.map +1 -0
  107. package/dist/framework/react-native/react-native.d.ts +35 -0
  108. package/dist/framework/react-native/react-native.d.ts.map +1 -0
  109. package/dist/framework/react-native/react-native.js +1181 -0
  110. package/dist/framework/react-native/react-native.js.map +1 -0
  111. package/dist/framework/register.d.ts +2 -0
  112. package/dist/framework/register.d.ts.map +1 -0
  113. package/dist/framework/register.js +59 -0
  114. package/dist/framework/register.js.map +1 -0
  115. package/dist/framework/registry.d.ts +31 -0
  116. package/dist/framework/registry.d.ts.map +1 -0
  117. package/dist/framework/registry.js +70 -0
  118. package/dist/framework/registry.js.map +1 -0
  119. package/dist/framework/routing/expo-router.d.ts +31 -0
  120. package/dist/framework/routing/expo-router.d.ts.map +1 -0
  121. package/dist/framework/routing/expo-router.js +356 -0
  122. package/dist/framework/routing/expo-router.js.map +1 -0
  123. package/dist/framework/routing/index.d.ts +4 -0
  124. package/dist/framework/routing/index.d.ts.map +1 -0
  125. package/dist/framework/routing/index.js +16 -0
  126. package/dist/framework/routing/index.js.map +1 -0
  127. package/dist/framework/routing/next-router.d.ts +45 -0
  128. package/dist/framework/routing/next-router.d.ts.map +1 -0
  129. package/dist/framework/routing/next-router.js +378 -0
  130. package/dist/framework/routing/next-router.js.map +1 -0
  131. package/dist/framework/routing/route-tree.d.ts +73 -0
  132. package/dist/framework/routing/route-tree.d.ts.map +1 -0
  133. package/dist/framework/routing/route-tree.js +120 -0
  134. package/dist/framework/routing/route-tree.js.map +1 -0
  135. package/dist/framework/types.d.ts +230 -0
  136. package/dist/framework/types.d.ts.map +1 -0
  137. package/dist/framework/types.js +25 -0
  138. package/dist/framework/types.js.map +1 -0
  139. package/dist/graph/cross-language.d.ts +11 -0
  140. package/dist/graph/cross-language.d.ts.map +1 -0
  141. package/dist/graph/cross-language.js +123 -0
  142. package/dist/graph/cross-language.js.map +1 -0
  143. package/dist/graph/extract.d.ts +13 -0
  144. package/dist/graph/extract.d.ts.map +1 -0
  145. package/dist/graph/extract.js +79 -0
  146. package/dist/graph/extract.js.map +1 -0
  147. package/dist/graph/file-graph.d.ts +186 -0
  148. package/dist/graph/file-graph.d.ts.map +1 -0
  149. package/dist/graph/file-graph.js +427 -0
  150. package/dist/graph/file-graph.js.map +1 -0
  151. package/dist/graph/http-callsites.d.ts +14 -0
  152. package/dist/graph/http-callsites.d.ts.map +1 -0
  153. package/dist/graph/http-callsites.js +107 -0
  154. package/dist/graph/http-callsites.js.map +1 -0
  155. package/dist/graph/incremental.d.ts +122 -0
  156. package/dist/graph/incremental.d.ts.map +1 -0
  157. package/dist/graph/incremental.js +448 -0
  158. package/dist/graph/incremental.js.map +1 -0
  159. package/dist/graph/language.d.ts +31 -0
  160. package/dist/graph/language.d.ts.map +1 -0
  161. package/dist/graph/language.js +146 -0
  162. package/dist/graph/language.js.map +1 -0
  163. package/dist/graph/noise-filter.d.ts +46 -0
  164. package/dist/graph/noise-filter.d.ts.map +1 -0
  165. package/dist/graph/noise-filter.js +199 -0
  166. package/dist/graph/noise-filter.js.map +1 -0
  167. package/dist/graph/python-adapter.d.ts +36 -0
  168. package/dist/graph/python-adapter.d.ts.map +1 -0
  169. package/dist/graph/python-adapter.js +402 -0
  170. package/dist/graph/python-adapter.js.map +1 -0
  171. package/dist/graph/python-manifest.d.ts +22 -0
  172. package/dist/graph/python-manifest.d.ts.map +1 -0
  173. package/dist/graph/python-manifest.js +137 -0
  174. package/dist/graph/python-manifest.js.map +1 -0
  175. package/dist/graph/python-stdlib.d.ts +2 -0
  176. package/dist/graph/python-stdlib.d.ts.map +1 -0
  177. package/dist/graph/python-stdlib.js +53 -0
  178. package/dist/graph/python-stdlib.js.map +1 -0
  179. package/dist/graph/ts-morph-adapter.d.ts +65 -0
  180. package/dist/graph/ts-morph-adapter.d.ts.map +1 -0
  181. package/dist/graph/ts-morph-adapter.js +265 -0
  182. package/dist/graph/ts-morph-adapter.js.map +1 -0
  183. package/dist/graph/types.d.ts +37 -0
  184. package/dist/graph/types.d.ts.map +1 -0
  185. package/dist/graph/types.js +50 -0
  186. package/dist/graph/types.js.map +1 -0
  187. package/dist/index.d.ts +45 -0
  188. package/dist/index.d.ts.map +1 -0
  189. package/dist/index.js +51 -0
  190. package/dist/index.js.map +1 -0
  191. package/dist/infra/aws/aws-parse.d.ts +39 -0
  192. package/dist/infra/aws/aws-parse.d.ts.map +1 -0
  193. package/dist/infra/aws/aws-parse.js +149 -0
  194. package/dist/infra/aws/aws-parse.js.map +1 -0
  195. package/dist/infra/aws/aws.d.ts +6 -0
  196. package/dist/infra/aws/aws.d.ts.map +1 -0
  197. package/dist/infra/aws/aws.js +425 -0
  198. package/dist/infra/aws/aws.js.map +1 -0
  199. package/dist/infra/azure/azure-parse.d.ts +73 -0
  200. package/dist/infra/azure/azure-parse.d.ts.map +1 -0
  201. package/dist/infra/azure/azure-parse.js +178 -0
  202. package/dist/infra/azure/azure-parse.js.map +1 -0
  203. package/dist/infra/azure/azure.d.ts +12 -0
  204. package/dist/infra/azure/azure.d.ts.map +1 -0
  205. package/dist/infra/azure/azure.js +673 -0
  206. package/dist/infra/azure/azure.js.map +1 -0
  207. package/dist/infra/cloudflare/cloudflare.d.ts +50 -0
  208. package/dist/infra/cloudflare/cloudflare.d.ts.map +1 -0
  209. package/dist/infra/cloudflare/cloudflare.js +382 -0
  210. package/dist/infra/cloudflare/cloudflare.js.map +1 -0
  211. package/dist/infra/cloudflare/wrangler-parse.d.ts +6 -0
  212. package/dist/infra/cloudflare/wrangler-parse.d.ts.map +1 -0
  213. package/dist/infra/cloudflare/wrangler-parse.js +278 -0
  214. package/dist/infra/cloudflare/wrangler-parse.js.map +1 -0
  215. package/dist/infra/compose/compose-parse.d.ts +24 -0
  216. package/dist/infra/compose/compose-parse.d.ts.map +1 -0
  217. package/dist/infra/compose/compose-parse.js +77 -0
  218. package/dist/infra/compose/compose-parse.js.map +1 -0
  219. package/dist/infra/compose/compose.d.ts +12 -0
  220. package/dist/infra/compose/compose.d.ts.map +1 -0
  221. package/dist/infra/compose/compose.js +201 -0
  222. package/dist/infra/compose/compose.js.map +1 -0
  223. package/dist/infra/convex/convex-parse.d.ts +28 -0
  224. package/dist/infra/convex/convex-parse.d.ts.map +1 -0
  225. package/dist/infra/convex/convex-parse.js +74 -0
  226. package/dist/infra/convex/convex-parse.js.map +1 -0
  227. package/dist/infra/convex/convex.d.ts +18 -0
  228. package/dist/infra/convex/convex.d.ts.map +1 -0
  229. package/dist/infra/convex/convex.js +199 -0
  230. package/dist/infra/convex/convex.js.map +1 -0
  231. package/dist/infra/digitalocean/digitalocean.d.ts +33 -0
  232. package/dist/infra/digitalocean/digitalocean.d.ts.map +1 -0
  233. package/dist/infra/digitalocean/digitalocean.js +204 -0
  234. package/dist/infra/digitalocean/digitalocean.js.map +1 -0
  235. package/dist/infra/firebase/firebase.d.ts +43 -0
  236. package/dist/infra/firebase/firebase.d.ts.map +1 -0
  237. package/dist/infra/firebase/firebase.js +271 -0
  238. package/dist/infra/firebase/firebase.js.map +1 -0
  239. package/dist/infra/fly/fly-parse.d.ts +52 -0
  240. package/dist/infra/fly/fly-parse.d.ts.map +1 -0
  241. package/dist/infra/fly/fly-parse.js +114 -0
  242. package/dist/infra/fly/fly-parse.js.map +1 -0
  243. package/dist/infra/fly/fly.d.ts +15 -0
  244. package/dist/infra/fly/fly.d.ts.map +1 -0
  245. package/dist/infra/fly/fly.js +265 -0
  246. package/dist/infra/fly/fly.js.map +1 -0
  247. package/dist/infra/gcp/gcp-parse.d.ts +24 -0
  248. package/dist/infra/gcp/gcp-parse.d.ts.map +1 -0
  249. package/dist/infra/gcp/gcp-parse.js +123 -0
  250. package/dist/infra/gcp/gcp-parse.js.map +1 -0
  251. package/dist/infra/gcp/gcp.d.ts +10 -0
  252. package/dist/infra/gcp/gcp.d.ts.map +1 -0
  253. package/dist/infra/gcp/gcp.js +502 -0
  254. package/dist/infra/gcp/gcp.js.map +1 -0
  255. package/dist/infra/heroku/heroku-parse.d.ts +33 -0
  256. package/dist/infra/heroku/heroku-parse.d.ts.map +1 -0
  257. package/dist/infra/heroku/heroku-parse.js +63 -0
  258. package/dist/infra/heroku/heroku-parse.js.map +1 -0
  259. package/dist/infra/heroku/heroku.d.ts +24 -0
  260. package/dist/infra/heroku/heroku.d.ts.map +1 -0
  261. package/dist/infra/heroku/heroku.js +253 -0
  262. package/dist/infra/heroku/heroku.js.map +1 -0
  263. package/dist/infra/image-resolve.d.ts +56 -0
  264. package/dist/infra/image-resolve.d.ts.map +1 -0
  265. package/dist/infra/image-resolve.js +229 -0
  266. package/dist/infra/image-resolve.js.map +1 -0
  267. package/dist/infra/infra-step.d.ts +39 -0
  268. package/dist/infra/infra-step.d.ts.map +1 -0
  269. package/dist/infra/infra-step.js +57 -0
  270. package/dist/infra/infra-step.js.map +1 -0
  271. package/dist/infra/k8s/index.d.ts +78 -0
  272. package/dist/infra/k8s/index.d.ts.map +1 -0
  273. package/dist/infra/k8s/index.js +251 -0
  274. package/dist/infra/k8s/index.js.map +1 -0
  275. package/dist/infra/kamal/kamal-parse.d.ts +23 -0
  276. package/dist/infra/kamal/kamal-parse.d.ts.map +1 -0
  277. package/dist/infra/kamal/kamal-parse.js +66 -0
  278. package/dist/infra/kamal/kamal-parse.js.map +1 -0
  279. package/dist/infra/kamal/kamal.d.ts +17 -0
  280. package/dist/infra/kamal/kamal.d.ts.map +1 -0
  281. package/dist/infra/kamal/kamal.js +162 -0
  282. package/dist/infra/kamal/kamal.js.map +1 -0
  283. package/dist/infra/netlify/netlify.d.ts +33 -0
  284. package/dist/infra/netlify/netlify.d.ts.map +1 -0
  285. package/dist/infra/netlify/netlify.js +247 -0
  286. package/dist/infra/netlify/netlify.js.map +1 -0
  287. package/dist/infra/opentofu/opentofu.d.ts +3 -0
  288. package/dist/infra/opentofu/opentofu.d.ts.map +1 -0
  289. package/dist/infra/opentofu/opentofu.js +157 -0
  290. package/dist/infra/opentofu/opentofu.js.map +1 -0
  291. package/dist/infra/pulumi/pulumi-parse.d.ts +60 -0
  292. package/dist/infra/pulumi/pulumi-parse.d.ts.map +1 -0
  293. package/dist/infra/pulumi/pulumi-parse.js +155 -0
  294. package/dist/infra/pulumi/pulumi-parse.js.map +1 -0
  295. package/dist/infra/pulumi/pulumi.d.ts +23 -0
  296. package/dist/infra/pulumi/pulumi.d.ts.map +1 -0
  297. package/dist/infra/pulumi/pulumi.js +260 -0
  298. package/dist/infra/pulumi/pulumi.js.map +1 -0
  299. package/dist/infra/railway/railway-parse.d.ts +54 -0
  300. package/dist/infra/railway/railway-parse.d.ts.map +1 -0
  301. package/dist/infra/railway/railway-parse.js +200 -0
  302. package/dist/infra/railway/railway-parse.js.map +1 -0
  303. package/dist/infra/railway/railway.d.ts +19 -0
  304. package/dist/infra/railway/railway.d.ts.map +1 -0
  305. package/dist/infra/railway/railway.js +397 -0
  306. package/dist/infra/railway/railway.js.map +1 -0
  307. package/dist/infra/register.d.ts +2 -0
  308. package/dist/infra/register.d.ts.map +1 -0
  309. package/dist/infra/register.js +81 -0
  310. package/dist/infra/register.js.map +1 -0
  311. package/dist/infra/registry.d.ts +64 -0
  312. package/dist/infra/registry.d.ts.map +1 -0
  313. package/dist/infra/registry.js +205 -0
  314. package/dist/infra/registry.js.map +1 -0
  315. package/dist/infra/relevance.d.ts +16 -0
  316. package/dist/infra/relevance.d.ts.map +1 -0
  317. package/dist/infra/relevance.js +132 -0
  318. package/dist/infra/relevance.js.map +1 -0
  319. package/dist/infra/render/render-parse.d.ts +76 -0
  320. package/dist/infra/render/render-parse.d.ts.map +1 -0
  321. package/dist/infra/render/render-parse.js +155 -0
  322. package/dist/infra/render/render-parse.js.map +1 -0
  323. package/dist/infra/render/render.d.ts +11 -0
  324. package/dist/infra/render/render.d.ts.map +1 -0
  325. package/dist/infra/render/render.js +303 -0
  326. package/dist/infra/render/render.js.map +1 -0
  327. package/dist/infra/sst/sst-parse.d.ts +25 -0
  328. package/dist/infra/sst/sst-parse.d.ts.map +1 -0
  329. package/dist/infra/sst/sst-parse.js +45 -0
  330. package/dist/infra/sst/sst-parse.js.map +1 -0
  331. package/dist/infra/sst/sst.d.ts +19 -0
  332. package/dist/infra/sst/sst.d.ts.map +1 -0
  333. package/dist/infra/sst/sst.js +236 -0
  334. package/dist/infra/sst/sst.js.map +1 -0
  335. package/dist/infra/supabase/supabase-parse.d.ts +34 -0
  336. package/dist/infra/supabase/supabase-parse.d.ts.map +1 -0
  337. package/dist/infra/supabase/supabase-parse.js +113 -0
  338. package/dist/infra/supabase/supabase-parse.js.map +1 -0
  339. package/dist/infra/supabase/supabase.d.ts +15 -0
  340. package/dist/infra/supabase/supabase.d.ts.map +1 -0
  341. package/dist/infra/supabase/supabase.js +198 -0
  342. package/dist/infra/supabase/supabase.js.map +1 -0
  343. package/dist/infra/terraform/hcl-parse.d.ts +34 -0
  344. package/dist/infra/terraform/hcl-parse.d.ts.map +1 -0
  345. package/dist/infra/terraform/hcl-parse.js +203 -0
  346. package/dist/infra/terraform/hcl-parse.js.map +1 -0
  347. package/dist/infra/terraform/terraform.d.ts +14 -0
  348. package/dist/infra/terraform/terraform.d.ts.map +1 -0
  349. package/dist/infra/terraform/terraform.js +264 -0
  350. package/dist/infra/terraform/terraform.js.map +1 -0
  351. package/dist/infra/types.d.ts +151 -0
  352. package/dist/infra/types.d.ts.map +1 -0
  353. package/dist/infra/types.js +14 -0
  354. package/dist/infra/types.js.map +1 -0
  355. package/dist/infra/vercel/vercel-parse.d.ts +70 -0
  356. package/dist/infra/vercel/vercel-parse.d.ts.map +1 -0
  357. package/dist/infra/vercel/vercel-parse.js +194 -0
  358. package/dist/infra/vercel/vercel-parse.js.map +1 -0
  359. package/dist/infra/vercel/vercel.d.ts +30 -0
  360. package/dist/infra/vercel/vercel.d.ts.map +1 -0
  361. package/dist/infra/vercel/vercel.js +523 -0
  362. package/dist/infra/vercel/vercel.js.map +1 -0
  363. package/dist/infra/walk.d.ts +36 -0
  364. package/dist/infra/walk.d.ts.map +1 -0
  365. package/dist/infra/walk.js +85 -0
  366. package/dist/infra/walk.js.map +1 -0
  367. package/dist/safety.d.ts +13 -0
  368. package/dist/safety.d.ts.map +1 -0
  369. package/dist/safety.js +67 -0
  370. package/dist/safety.js.map +1 -0
  371. package/dist/types.d.ts +47 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +111 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/version.d.ts +2 -0
  376. package/dist/version.d.ts.map +1 -0
  377. package/dist/version.js +35 -0
  378. package/dist/version.js.map +1 -0
  379. package/package.json +65 -0
@@ -0,0 +1,107 @@
1
+ // frontend HTTP call-site extraction (the added-scope prerequisite).
2
+ //
3
+ // Finds the URL string literals a TS/JS frontend uses to call an HTTP API, so the
4
+ // cross-language linker (cross-language.ts) can draw the frontend→backend seam of
5
+ // a unified full-stack diagram. INSTALL-FREE + never-store-source: a static
6
+ // ts-morph parse; only the derived (fileId, url) pairs are kept.
7
+ //
8
+ // Two collection rules, tuned for the real FastAPI-frontend patterns:
9
+ // 1. An `/api…` path or an `http(s)://…/api/…` URL literal ANYWHERE — the
10
+ // dominant shape (a generated OpenAPI SDK — hey-api / openapi-ts — emits
11
+ // `url: '/api/v1/users/'`, and hand-written `fetch('/api/…')` matches too).
12
+ // 2. A `/`-rooted path literal that is the URL ARGUMENT of an HTTP call
13
+ // (`fetch(x)`, `axios.get(x)`, `client.post(x)`, `__request(cfg, {url: x})`)
14
+ // — catches conventions that don't prefix `/api` without matching every
15
+ // stray string.
16
+ // The generated SDK file itself is dropped by the noise filter, so the linker
17
+ // re-attributes these to a surviving sibling module (see cross-language.ts).
18
+ import { Node, SyntaxKind } from 'ts-morph';
19
+ import { addAllSourceFiles, buildExtractionProject, toId } from './ts-morph-adapter.js';
20
+ // HTTP client callee names (bare identifiers) whose first string arg is a URL.
21
+ const HTTP_CALL_IDENTS = new Set(['fetch', '$fetch', 'request', '__request', 'axios', 'ky']);
22
+ // Member-call methods (`x.get(url)`) whose first string arg is a URL.
23
+ const HTTP_CALL_METHODS = new Set(['get', 'post', 'put', 'patch', 'delete', 'request', 'fetch']);
24
+ // Object-literal keys whose string value is a URL (the hey-api `{ url, method }`).
25
+ const URL_KEYS = new Set(['url', 'path', 'endpoint']);
26
+ /** An `/api…` path or an absolute URL that targets an `/api/…` route. */
27
+ function isApiUrl(v) {
28
+ if (/^\/api(\/|$|\?)/i.test(v))
29
+ return true;
30
+ if (/^https?:\/\/[^/]+\/api(\/|$|\?)/i.test(v))
31
+ return true;
32
+ return false;
33
+ }
34
+ /** A `/`-rooted, non-relative path literal (a candidate API path; not `./x`, `//cdn`). */
35
+ function isRootedPath(v) {
36
+ return v.startsWith('/') && !v.startsWith('//') && !v.startsWith('/*');
37
+ }
38
+ function calleeIsHttp(call) {
39
+ const callExpr = call.asKind(SyntaxKind.CallExpression);
40
+ if (!callExpr)
41
+ return false;
42
+ const callee = callExpr.getExpression();
43
+ if (callee.getKind() === SyntaxKind.Identifier)
44
+ return HTTP_CALL_IDENTS.has(callee.getText());
45
+ if (callee.getKind() === SyntaxKind.PropertyAccessExpression) {
46
+ const method = (callee.asKind(SyntaxKind.PropertyAccessExpression)).getName();
47
+ return HTTP_CALL_METHODS.has(method);
48
+ }
49
+ return false;
50
+ }
51
+ // Is this string literal used AS a URL in an HTTP call? Either the first arg of an
52
+ // HTTP-client call, or a `url`/`path`/`endpoint` property in an object literal.
53
+ function isUrlArgument(lit) {
54
+ const parent = lit.getParent();
55
+ if (!parent)
56
+ return false;
57
+ if (parent.getKind() === SyntaxKind.CallExpression && calleeIsHttp(parent)) {
58
+ const args = (parent.asKind(SyntaxKind.CallExpression)).getArguments();
59
+ return args.length > 0 && args[0] === lit;
60
+ }
61
+ if (parent.getKind() === SyntaxKind.PropertyAssignment) {
62
+ const name = (parent.asKind(SyntaxKind.PropertyAssignment)).getName().replace(/['"]/g, '');
63
+ return URL_KEYS.has(name);
64
+ }
65
+ return false;
66
+ }
67
+ function literalUrls(sf) {
68
+ const out = [];
69
+ const lits = [
70
+ ...sf.getDescendantsOfKind(SyntaxKind.StringLiteral),
71
+ ...sf.getDescendantsOfKind(SyntaxKind.NoSubstitutionTemplateLiteral),
72
+ ];
73
+ for (const lit of lits) {
74
+ const v = lit.getLiteralText();
75
+ if (!v)
76
+ continue;
77
+ if (isApiUrl(v) || (isRootedPath(v) && isUrlArgument(lit)))
78
+ out.push(v);
79
+ }
80
+ return out;
81
+ }
82
+ /**
83
+ * Every frontend HTTP call site under `repoDir`. Scans ALL TS/JS source
84
+ * (including generated SDKs — the noise filter drops those from the graph, but
85
+ * they hold the URL literals), so the caller can re-attribute a dropped file to a
86
+ * surviving module. Deterministic (sorted); never throws (a per-file parse error
87
+ * degrades to no calls for that file).
88
+ */
89
+ export function collectFrontendApiCalls(repoDir) {
90
+ const project = buildExtractionProject(repoDir);
91
+ addAllSourceFiles(project, repoDir);
92
+ const out = [];
93
+ for (const sf of project.getSourceFiles()) {
94
+ const fileId = toId(repoDir, sf.getFilePath());
95
+ let urls = [];
96
+ try {
97
+ urls = literalUrls(sf);
98
+ }
99
+ catch {
100
+ urls = [];
101
+ }
102
+ for (const url of urls)
103
+ out.push({ fileId, url });
104
+ }
105
+ return out.sort((a, b) => (a.fileId < b.fileId ? -1 : a.fileId > b.fileId ? 1 : a.url < b.url ? -1 : a.url > b.url ? 1 : 0));
106
+ }
107
+ //# sourceMappingURL=http-callsites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-callsites.js","sourceRoot":"","sources":["../../src/graph/http-callsites.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import type { NormalizedGraph } from './types.js';
2
+ import { type DiffEntry, type FileGraphState, type FileRecord, type SerializedFileGraph } from './file-graph.js';
3
+ export interface PatchMetrics {
4
+ /** How this checkpoint's graph was produced. */
5
+ mode: 'seed-full' | 'seed-cache' | 'seed-blob-cache' | 'patch-refresh' | 'patch-rebuild';
6
+ /** Source files whose content was (re)parsed this checkpoint. */
7
+ parsedFiles: number;
8
+ /** Files whose call edges were re-extracted (the expensive symbol work). */
9
+ callExtracted: number;
10
+ /** Files whose records were carried unchanged from the previous state. */
11
+ carried: number;
12
+ /** Total files in the graph after this checkpoint. */
13
+ filesTotal: number;
14
+ }
15
+ export declare class IncrementalExtractor {
16
+ private project;
17
+ private state;
18
+ /**
19
+ * Stage B — paths whose records were (RE)COMPUTED this boot: exactly
20
+ * the rows worth upserting into the blob parse-cache at boot end. Patch-unit
21
+ * members + full-extract files only — NOT imports-only-refreshed files (their
22
+ * cached record's stale-resolved imports only feed the moved-bindings check
23
+ * on reuse, which re-validates against the live tree anyway; marking them
24
+ * would upsert the whole repo every boot for nothing). Paths that leave the
25
+ * state (deleted files) are dropped — their blobs aren't in the final tree.
26
+ */
27
+ private dirty;
28
+ /**
29
+ * log the noise-filter policy at most ONCE per engine lifetime (=
30
+ * once per boot). The filter runs on every seed/patch return (so the
31
+ * clustering-bound graph is always clean), but a per-checkpoint log line would
32
+ * spam the merge walk with the same drop every checkpoint. Logging once — at
33
+ * the first checkpoint that drops anything, whether that's a seed or a patch —
34
+ * keeps the house rule (never a silent cap) without the noise.
35
+ */
36
+ private noiseLogged;
37
+ /**
38
+ * drop tests/generated/build/config/stories/mocks/types from the
39
+ * clustering-bound graph. Deterministic + pure; the carried FileGraphState is
40
+ * left intact (filtering is an OUTPUT concern only — incremental patching, the
41
+ * blob cache, and the Stage-A/B equivalence contract are unaffected).
42
+ */
43
+ private applyNoiseFilter;
44
+ /** Is there a carried state to patch from? */
45
+ get hasState(): boolean;
46
+ /** The FULL commit sha the carried state corresponds to (diff base). */
47
+ get headSha(): string | null;
48
+ /**
49
+ * Adopt a serialized file graph (the extraction_cache seed) — ZERO parsing.
50
+ * Returns false (and stays unseeded) when the payload isn't usable.
51
+ */
52
+ adoptCache(serialized: unknown): boolean;
53
+ /**
54
+ * Adopt a ground-truth state DIRECTLY (the Stage-B reconciliation heal —
55
+ * container.ts swaps in a fresh full extract's state when drift is found).
56
+ * The caller marks the drifted paths dirty itself (markDirty) so the heal
57
+ * reaches the blob cache; the engine's existing dirty set stays valid (non-
58
+ * drifted records are identical by definition of the diff).
59
+ */
60
+ adoptState(state: FileGraphState): void;
61
+ /** Paths whose records were (re)computed this boot — the blob-cache upserts. */
62
+ dirtyPaths(): string[];
63
+ /** Forget the dirty set (call after a successful blob-cache upsert). */
64
+ clearDirty(): void;
65
+ /** Mark paths dirty (the reconciliation heal's drifted set). */
66
+ markDirty(paths: readonly string[]): void;
67
+ /** The carried record for a path (blob-cache row material), or null. */
68
+ recordFor(path: string): FileRecord | null;
69
+ /** The carried state (reconciliation comparator input). Do not mutate. */
70
+ stateSnapshot(): FileGraphState;
71
+ /**
72
+ * Full extract at the current working tree (the seed, or the config-
73
+ * invalidator fallback). Same work as the batch adapter — kept for the
74
+ * boot's FIRST checkpoint when no usable cache seed exists.
75
+ */
76
+ seedFull(repoDir: string, headSha: string): {
77
+ graph: NormalizedGraph;
78
+ metrics: PatchMetrics;
79
+ };
80
+ /**
81
+ * Stage B — seed from the content-addressed BLOB PARSE-CACHE: the
82
+ * cold-boot path when no carried graph exists (or its head commit is
83
+ * unreachable in the clone) but per-blob records survive in
84
+ * `file_parse_cache`. `cached` is keyed by repo-relative path and contains
85
+ * ONLY records whose blobSha already matched the current tree — the CALLER
86
+ * does the blob matching (container.ts joins lsTreeBlobs against the cache).
87
+ *
88
+ * CORRECTNESS (the patchTo argument with "diff = cache misses"): a cached
89
+ * record's CALLS are reused only when
90
+ * (a) the content is blob-identical (the caller's join),
91
+ * (b) its freshly-resolved import bindings equal the cached ones (the
92
+ * moved-bindings check below — this also heals a blob that matched at
93
+ * a DIFFERENT path, where relative specifiers resolve elsewhere), and
94
+ * (c) no re-export chain connects it to a miss (the closure).
95
+ * Imports/externals/reexports are re-resolved FRESH for every file (cheap;
96
+ * resolution must reflect THIS tree). Same documented residual as Stage A
97
+ * (deep type-dispatch chains), healed by the periodic reconciliation pass.
98
+ */
99
+ seedFromBlobCache(repoDir: string, headSha: string, cached: ReadonlyMap<string, FileRecord>): {
100
+ graph: NormalizedGraph;
101
+ metrics: PatchMetrics;
102
+ };
103
+ /**
104
+ * Patch the carried state to the tree currently checked out at `repoDir`
105
+ * (commit `headSha`), given the name-status diff from the carried head to
106
+ * this commit. The caller is responsible for the config-invalidator check
107
+ * (classifyDiff(...).invalidators → call seedFull instead).
108
+ */
109
+ patchTo(repoDir: string, headSha: string, diff: readonly DiffEntry[]): {
110
+ graph: NormalizedGraph;
111
+ metrics: PatchMetrics;
112
+ };
113
+ /** Serialize the carried state for the extraction_cache fileGraph payload. */
114
+ toCachePayload(blobShaByPath?: ReadonlyMap<string, string>): SerializedFileGraph | null;
115
+ /**
116
+ * The NormalizedGraph view of the carried state (test/diagnostic read).
117
+ * RAW — deliberately NOT noise-filtered: this is the carried-state
118
+ * view the equivalence tests assert against, not a clustering-bound return.
119
+ */
120
+ graphSnapshot(root: string): NormalizedGraph;
121
+ }
122
+ //# sourceMappingURL=incremental.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/graph/incremental.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAWzB,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,GAAG,eAAe,CAAC;IACzF,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAA+B;IAC5C;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,CAAqB;IAElC;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IASxB,8CAA8C;IAC9C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,wEAAwE;IACxE,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO;IASxC;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAQvC,gFAAgF;IAChF,UAAU,IAAI,MAAM,EAAE;IAItB,wEAAwE;IACxE,UAAU,IAAI,IAAI;IAIlB,gEAAgE;IAChE,SAAS,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIzC,wEAAwE;IACxE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI1C,0EAA0E;IAC1E,aAAa,IAAI,cAAc;IAK/B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE;IAmC7F;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GACtC;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE;IA2FpD;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE;IAuJxH,8EAA8E;IAC9E,cAAc,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,mBAAmB,GAAG,IAAI;IAKvF;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;CAI7C"}