@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,523 @@
1
+ // the Vercel InfraAdapter (v0).
2
+ //
3
+ // Surfaces the Vercel deployment topology from declared config: a `static-site`
4
+ // node for the app/deployment, a `worker` node per serverless/edge function
5
+ // (API routes + middleware), an optional `cdn` node for the Vercel Edge Network,
6
+ // and `calls` edges from cron schedules to their target function nodes.
7
+ //
8
+ // Everything here is `declared` provenance: vercel.json names functions, crons,
9
+ // and regions; the file-walk finds route handlers by path convention; package.json
10
+ // declares the framework; next.config.* reveals the output mode. No LLM is needed
11
+ // (tight static model → `classificationsNeeded: []`).
12
+ //
13
+ // Kind mapping (frozen 8-kind InfraModuleKind enum — we map onto it, never
14
+ // weaken it):
15
+ // Vercel app / deployment → static-site (the CDN-fronted build artefact;
16
+ // even for SSR apps the *deployment unit* as a whole is static-site because
17
+ // the individual function shards are represented separately as `worker` nodes)
18
+ // Serverless / edge function (API route, middleware) → worker
19
+ // Vercel Edge Network (CDN front-door) → cdn
20
+ //
21
+ // Edge verbs used:
22
+ // app → cdn : deploys-to (the app is deployed behind the Edge Network)
23
+ // cdn → function : calls (the CDN routes requests to the function)
24
+ // app → function : calls (cron scheduler invokes the function directly,
25
+ // no CDN indirection — modelled as app→fn)
26
+ //
27
+ // v0 scope notes:
28
+ // * Environment / preview deployments are NOT split; we capture the production
29
+ // topology only.
30
+ // * `next.config.*` is parsed by regex heuristic — we do NOT execute it.
31
+ // * Rewrites / headers are captured as metadata on the app node, not topology.
32
+ // * Monorepo layouts (multiple vercel.json files) are supported by the
33
+ // bounded file-walk; each produces separate app nodes keyed by dir.
34
+ // * `vercel.json` `builds` (legacy Vercel v1/v2) are ignored in v0.
35
+ import { readFileSync, existsSync } from 'node:fs';
36
+ import { join, relative, dirname } from 'node:path';
37
+ import { walkRepo } from '../walk.js';
38
+ import { parseVercelJson, parsePackageJson, parseNextConfigOutputMode, routeFileToPath, routePathToLabel, } from './vercel-parse.js';
39
+ // ---------------------------------------------------------------------------
40
+ // File-walk configuration.
41
+ const VERCEL_SKIP_DIRS = [
42
+ 'node_modules',
43
+ '.git',
44
+ 'dist',
45
+ '.vercel',
46
+ '.next',
47
+ 'build',
48
+ 'coverage',
49
+ '.wrangler',
50
+ 'out',
51
+ ];
52
+ // Files we look for at each directory level.
53
+ const VERCEL_CONFIG_NAME = 'vercel.json';
54
+ const NEXT_CONFIG_NAMES = ['next.config.js', 'next.config.ts', 'next.config.mjs', 'next.config.cjs'];
55
+ const PACKAGE_JSON_NAME = 'package.json';
56
+ // Route files we collect during the fs walk.
57
+ const ROUTE_RE = /^route\.[jt]sx?$/;
58
+ const API_FILE_RE = /\.[jt]sx?$/;
59
+ const MAX_DEPTH = 6;
60
+ // ---------------------------------------------------------------------------
61
+ // Fs helpers.
62
+ function readText(path) {
63
+ try {
64
+ return readFileSync(path, 'utf8');
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // Config-file discovery.
72
+ /**
73
+ * Locate every directory that contains a vercel.json (signals a deployment
74
+ * root), plus the repo root itself if it has a package.json with a Vercel-
75
+ * deployable framework (so a bare Next.js project with no vercel.json still
76
+ * gets picked up — the deploy-to-Vercel convention doesn't require the file).
77
+ *
78
+ * Returns an array of absolute directory paths deduplicated and sorted.
79
+ */
80
+ function findProjectRoots(repoDir) {
81
+ const roots = new Set();
82
+ // A directory is a project root if it directly contains a vercel.json or a
83
+ // next.config.* — equivalently, for each such file we found, its parent dir
84
+ // is a root. (The legacy walk added `dir`; dirname(file) is the same dir.)
85
+ walkRepo(repoDir, {
86
+ skipDirs: VERCEL_SKIP_DIRS,
87
+ maxDepth: MAX_DEPTH,
88
+ onFile: (abs, e) => {
89
+ if (!e.isFile())
90
+ return;
91
+ if (e.name === VERCEL_CONFIG_NAME || NEXT_CONFIG_NAMES.includes(e.name)) {
92
+ roots.add(dirname(abs));
93
+ }
94
+ },
95
+ });
96
+ // Always include the repo root if it carries a package.json with a Vercel
97
+ // framework dep — catches "no vercel.json, no next.config.*" setups.
98
+ if (existsSync(join(repoDir, PACKAGE_JSON_NAME))) {
99
+ const text = readText(join(repoDir, PACKAGE_JSON_NAME));
100
+ if (text) {
101
+ try {
102
+ const info = parsePackageJson(text);
103
+ if (info.detectedFramework || info.hasVercelDep)
104
+ roots.add(repoDir);
105
+ }
106
+ catch {
107
+ // ignore malformed package.json at root for detection
108
+ }
109
+ }
110
+ }
111
+ return [...roots].sort();
112
+ }
113
+ // ---------------------------------------------------------------------------
114
+ // API route collector.
115
+ //
116
+ // Walks the `pages/api/` and `app/` directories under the project root looking
117
+ // for route handler files. Returns repo-relative paths.
118
+ function collectRouteFiles(projectDir, repoDir) {
119
+ const files = [];
120
+ // pages/api/** — any .ts/.js/.tsx/.jsx file
121
+ const pagesApi = join(projectDir, 'pages', 'api');
122
+ const srcPagesApi = join(projectDir, 'src', 'pages', 'api');
123
+ for (const apiDir of [pagesApi, srcPagesApi]) {
124
+ if (!existsSync(apiDir))
125
+ continue;
126
+ walkRepo(apiDir, {
127
+ skipDirs: VERCEL_SKIP_DIRS,
128
+ maxDepth: 4,
129
+ onFile: (abs, e) => {
130
+ if (e.isFile() && API_FILE_RE.test(e.name)) {
131
+ files.push(relative(repoDir, abs).replace(/\\/g, '/'));
132
+ }
133
+ },
134
+ });
135
+ }
136
+ // app/**/route.ts — App Router convention
137
+ const appDir = join(projectDir, 'app');
138
+ const srcAppDir = join(projectDir, 'src', 'app');
139
+ for (const aDir of [appDir, srcAppDir]) {
140
+ if (!existsSync(aDir))
141
+ continue;
142
+ walkRepo(aDir, {
143
+ skipDirs: VERCEL_SKIP_DIRS,
144
+ maxDepth: 8,
145
+ onFile: (abs, e) => {
146
+ if (e.isFile() && ROUTE_RE.test(e.name)) {
147
+ files.push(relative(repoDir, abs).replace(/\\/g, '/'));
148
+ }
149
+ },
150
+ });
151
+ }
152
+ // middleware.ts at project root (and src/ variant)
153
+ for (const middlewarePath of [
154
+ join(projectDir, 'middleware.ts'),
155
+ join(projectDir, 'middleware.js'),
156
+ join(projectDir, 'src', 'middleware.ts'),
157
+ join(projectDir, 'src', 'middleware.js'),
158
+ ]) {
159
+ if (existsSync(middlewarePath)) {
160
+ files.push(relative(repoDir, middlewarePath).replace(/\\/g, '/'));
161
+ }
162
+ }
163
+ return [...new Set(files)].sort();
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Node-id helpers. Ids are adapter-local (registry prefixes `vercel:`).
167
+ function appId(projectDir, repoDir) {
168
+ const rel = relative(repoDir, projectDir) || '.';
169
+ return `app:${rel}`;
170
+ }
171
+ function fnId(routePath, projectDir, repoDir) {
172
+ // Namespace by project dir so two monorepo projects exposing the same route
173
+ // path produce distinct nodes rather than collapsing into one (which would
174
+ // dangle/misattribute edges). Format: fn:<projectRel>:<routeSegment>
175
+ const projectRel = relative(repoDir, projectDir) || '.';
176
+ const segment = routePath === '/' ? 'middleware' : routePath;
177
+ return `fn:${projectRel}:${segment}`;
178
+ }
179
+ const EDGE_NETWORK_ID = 'edge-network';
180
+ // ---------------------------------------------------------------------------
181
+ // Source-root helpers. Repo-relative, normalized — same idiom as
182
+ // netlify.ts / compose.ts.
183
+ /** Normalize a repo-relative path: backslashes→/, collapse `.`/`./`, strip trailing `/`. */
184
+ function normalizeRoot(p) {
185
+ return p.replace(/\\/g, '/').replace(/^\.(?:\/|$)/, '').replace(/\/+$/, '');
186
+ }
187
+ /** The repo-relative directory of a repo-relative file path ('' = repo root). */
188
+ function dirOf(relPath) {
189
+ const i = relPath.lastIndexOf('/');
190
+ return i === -1 ? '' : relPath.slice(0, i);
191
+ }
192
+ // ---------------------------------------------------------------------------
193
+ // Glob matching for vercel.json `functions` keys.
194
+ //
195
+ // Keys in vercel.json `functions` are glob patterns (e.g. "app/api/**",
196
+ // "api/*.js"). We need to match a concrete file path against these patterns.
197
+ // Supported glob syntax (covering the Vercel docs examples):
198
+ // ** — matches any number of path segments (including zero)
199
+ // * — matches any characters within a single path segment (not /)
200
+ // No external dep: implemented as a small regex transpiler.
201
+ function globToRegex(pattern) {
202
+ // Escape regex metacharacters except * which we handle specially.
203
+ let re = '';
204
+ let i = 0;
205
+ while (i < pattern.length) {
206
+ if (pattern[i] === '*' && pattern[i + 1] === '*') {
207
+ // `**` matches zero or more path segments.
208
+ re += '.*';
209
+ i += 2;
210
+ // Consume a trailing slash after ** if present so "app/api/**" matches
211
+ // "app/api/foo" (no double-slash in the regex).
212
+ if (pattern[i] === '/')
213
+ i++;
214
+ }
215
+ else if (pattern[i] === '*') {
216
+ // `*` matches anything except a slash.
217
+ re += '[^/]*';
218
+ i++;
219
+ }
220
+ else {
221
+ // Escape regex special chars.
222
+ re += pattern[i].replace(/[.+^${}()|[\]\\]/g, '\\$&');
223
+ i++;
224
+ }
225
+ }
226
+ return new RegExp(`^${re}$`);
227
+ }
228
+ /**
229
+ * Find the first vercel.json `functions` entry whose key (a glob) matches
230
+ * the given repo-relative file path. Returns the config or undefined.
231
+ */
232
+ function matchFunctionConfig(functions, filePath) {
233
+ for (const [pattern, cfg] of Object.entries(functions)) {
234
+ if (globToRegex(pattern).test(filePath))
235
+ return cfg;
236
+ }
237
+ return undefined;
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // Pure builder.
241
+ /**
242
+ * Build an InfraGraph from already-collected Vercel project inputs.
243
+ * Separated from fs IO so it can be unit-tested with synthetic inputs.
244
+ */
245
+ export function buildVercelGraph(inputs, root) {
246
+ const nodes = new Map();
247
+ const edges = [];
248
+ const addNode = (n) => {
249
+ if (!nodes.has(n.id))
250
+ nodes.set(n.id, n);
251
+ };
252
+ const addEdge = (e) => edges.push(e);
253
+ // Emit the shared CDN node once — only if any project root has a Vercel
254
+ // deployment (not a purely static export, which bypasses the CDN layer).
255
+ let needCdn = false;
256
+ for (const p of inputs) {
257
+ if (p.nextOutputMode !== 'export')
258
+ needCdn = true;
259
+ }
260
+ if (needCdn) {
261
+ addNode({
262
+ id: EDGE_NETWORK_ID,
263
+ label: 'Vercel Edge Network',
264
+ kind: 'cdn',
265
+ provenance: 'declared',
266
+ metadata: { provider: 'vercel' },
267
+ });
268
+ }
269
+ for (const project of inputs) {
270
+ const aId = appId(project.projectDir, root);
271
+ const cfg = project.vercelConfig ?? {};
272
+ const pkg = project.packageInfo ?? { hasVercelDep: false };
273
+ // Determine a readable label for the app node.
274
+ const appLabel = pkg.name ??
275
+ (relative(root, project.projectDir) || 'app');
276
+ // Build metadata for the app node — keep under ~500 bytes.
277
+ const appMeta = {
278
+ provider: 'vercel',
279
+ ...(project.vercelJsonPath ? { config: project.vercelJsonPath } : {}),
280
+ ...(cfg.framework ? { framework: cfg.framework } : {}),
281
+ ...(pkg.detectedFramework ? { detectedFramework: pkg.detectedFramework } : {}),
282
+ ...(project.nextOutputMode ? { outputMode: project.nextOutputMode } : {}),
283
+ ...(cfg.regions?.length ? { regions: cfg.regions } : {}),
284
+ };
285
+ // the app's source root: its deployment-root dir (repo-relative).
286
+ // For a monorepo app (apps/web) that's the project dir; for a root project
287
+ // it would be '' (a catch-all that swallows the function units + any sibling
288
+ // provider's code) — so we mirror the netlify base→root guard: fall back to
289
+ // `src/` if it exists, else emit no source root (loose code honestly stays
290
+ // "Other"). Per-function dirs are deeper, so they out-rank this by the
291
+ // longest-prefix rule.
292
+ const projectRel = normalizeRoot(relative(root, project.projectDir));
293
+ let appRoots = [];
294
+ if (projectRel)
295
+ appRoots = [projectRel];
296
+ else if (project.srcExists)
297
+ appRoots = ['src'];
298
+ addNode({
299
+ id: aId,
300
+ label: appLabel,
301
+ kind: 'static-site',
302
+ provenance: 'declared',
303
+ metadata: appMeta,
304
+ ...(appRoots.length ? { sourceRoots: appRoots } : {}),
305
+ });
306
+ // The app deploys-to the Edge Network (unless it's a pure static export).
307
+ if (project.nextOutputMode !== 'export' && needCdn) {
308
+ addEdge({
309
+ source: aId,
310
+ target: EDGE_NETWORK_ID,
311
+ kind: 'deploys-to',
312
+ metadata: { provider: 'vercel' },
313
+ });
314
+ }
315
+ // --- Serverless / edge function nodes from route files ---
316
+ for (const relPath of project.routeFiles) {
317
+ const routePath = routeFileToPath(relPath);
318
+ const isMiddleware = routePath === '/';
319
+ const label = routePathToLabel(routePath, isMiddleware);
320
+ const id = fnId(routePath, project.projectDir, root);
321
+ // Function-level metadata from vercel.json `functions` block (if present).
322
+ // Keys in vercel.json `functions` can be glob patterns — match with the
323
+ // glob helper rather than exact-key lookup.
324
+ const fnCfg = cfg.functions ? matchFunctionConfig(cfg.functions, relPath) : undefined;
325
+ // the function's source root: its route file's dir, for clean
326
+ // per-function attribution (app/api/users/route.ts → app/api/users). A
327
+ // route file at the repo root (dir '') yields none (no catch-all) — e.g.
328
+ // a root middleware.ts must not claim the whole repo.
329
+ const fnDir = normalizeRoot(dirOf(relPath));
330
+ const fnNode = {
331
+ id,
332
+ label,
333
+ kind: 'worker',
334
+ provenance: 'declared',
335
+ metadata: {
336
+ file: relPath,
337
+ routePath,
338
+ ...(isMiddleware ? { isMiddleware: true } : {}),
339
+ // Use explicit `!== undefined` guards so that legitimate 0 values
340
+ // (e.g. memory: 0, maxDuration: 0) are not silently dropped.
341
+ ...(fnCfg?.runtime !== undefined ? { runtime: fnCfg.runtime } : {}),
342
+ ...(fnCfg?.memory !== undefined ? { memory: fnCfg.memory } : {}),
343
+ ...(fnCfg?.maxDuration !== undefined ? { maxDuration: fnCfg.maxDuration } : {}),
344
+ ...(fnCfg?.regions !== undefined ? { regions: fnCfg.regions } : {}),
345
+ },
346
+ ...(fnDir ? { sourceRoots: [fnDir] } : {}),
347
+ };
348
+ addNode(fnNode);
349
+ // CDN routes requests to the function.
350
+ if (needCdn && !isMiddleware) {
351
+ addEdge({
352
+ source: EDGE_NETWORK_ID,
353
+ target: id,
354
+ kind: 'calls',
355
+ metadata: { via: 'vercel-routing', routePath },
356
+ });
357
+ }
358
+ }
359
+ // --- Cron edges: scheduler calls the target function ---
360
+ // vercel.json `crons` entries name a `path`; the scheduler invokes that
361
+ // function on a schedule. Model as: app --calls--> fn (the cron is a
362
+ // Vercel platform mechanism, not a separate node in v0).
363
+ for (const cron of cfg.crons ?? []) {
364
+ const cronRoutePath = cron.path.startsWith('/') ? cron.path : `/${cron.path}`;
365
+ const targetId = fnId(cronRoutePath, project.projectDir, root);
366
+ // Ensure the target function node exists even if not found in the
367
+ // file-walk (e.g., a cron targeting a route not present in the repo
368
+ // snapshot — still emit the node so the edge endpoint resolves).
369
+ if (!nodes.has(targetId)) {
370
+ addNode({
371
+ id: targetId,
372
+ label: routePathToLabel(cronRoutePath),
373
+ kind: 'worker',
374
+ provenance: 'declared',
375
+ metadata: { routePath: cronRoutePath, source: 'vercel.json-cron' },
376
+ });
377
+ }
378
+ addEdge({
379
+ source: aId,
380
+ target: targetId,
381
+ kind: 'calls',
382
+ metadata: { via: 'vercel-cron', schedule: cron.schedule, path: cron.path },
383
+ });
384
+ }
385
+ }
386
+ return {
387
+ root,
388
+ adapter: 'vercel',
389
+ nodes: [...nodes.values()],
390
+ edges,
391
+ classificationsNeeded: [], // Vercel's model maps statically — no LLM needed
392
+ };
393
+ }
394
+ // ---------------------------------------------------------------------------
395
+ // Detect + extract helpers.
396
+ function isVercelProject(dir) {
397
+ if (existsSync(join(dir, VERCEL_CONFIG_NAME)))
398
+ return true;
399
+ if (NEXT_CONFIG_NAMES.some((n) => existsSync(join(dir, n))))
400
+ return true;
401
+ return false;
402
+ }
403
+ function loadProjectInputs(projectDir, repoDir) {
404
+ const result = { projectDir, routeFiles: [] };
405
+ // vercel.json
406
+ const vercelJsonAbs = join(projectDir, VERCEL_CONFIG_NAME);
407
+ if (existsSync(vercelJsonAbs)) {
408
+ result.vercelJsonPath = relative(repoDir, vercelJsonAbs).replace(/\\/g, '/');
409
+ const text = readText(vercelJsonAbs);
410
+ if (text) {
411
+ try {
412
+ result.vercelConfig = parseVercelJson(text);
413
+ }
414
+ catch (err) {
415
+ console.warn(` [vercel] skipping unparseable ${result.vercelJsonPath}: ${err.message}`);
416
+ }
417
+ }
418
+ }
419
+ // package.json
420
+ const pkgAbs = join(projectDir, PACKAGE_JSON_NAME);
421
+ if (existsSync(pkgAbs)) {
422
+ const text = readText(pkgAbs);
423
+ if (text) {
424
+ try {
425
+ result.packageInfo = parsePackageJson(text);
426
+ }
427
+ catch (err) {
428
+ console.warn(` [vercel] skipping unparseable ${relative(repoDir, pkgAbs)}: ${err.message}`);
429
+ }
430
+ }
431
+ }
432
+ // next.config.* — check each candidate, parse the first found
433
+ for (const cfgName of NEXT_CONFIG_NAMES) {
434
+ const abs = join(projectDir, cfgName);
435
+ if (!existsSync(abs))
436
+ continue;
437
+ const text = readText(abs);
438
+ if (text) {
439
+ result.nextOutputMode = parseNextConfigOutputMode(text);
440
+ }
441
+ break; // only read one
442
+ }
443
+ // API route files
444
+ result.routeFiles = collectRouteFiles(projectDir, repoDir);
445
+ // the src/ fallback signal for the app source root (root projects).
446
+ result.srcExists = existsSync(join(projectDir, 'src'));
447
+ return result;
448
+ }
449
+ // ---------------------------------------------------------------------------
450
+ // source-path predicate for the diff-driven hosted walk.
451
+ //
452
+ // This adapter reads ordinary application source — the route-handler files
453
+ // collected by collectRouteFiles (app-router `**/route.[jt]sx?`, `pages/api/**`
454
+ // JS/TS files, and `middleware.[jt]s`, each optionally under a `src/` root and
455
+ // at any monorepo project depth). A change to any of those CAN change the
456
+ // worker-node set / edges, so the carried infra graph would go stale unless we
457
+ // force a re-extract. This predicate mirrors collectRouteFiles' file matchers
458
+ // (kept adjacent so the two don't drift). The framework-detection inputs
459
+ // (package.json / next.config.* / vercel.json) are config — already covered by
460
+ // relevance.ts' diffTouchesInfra + the container's config-invalidator gate — so
461
+ // they're intentionally NOT included here.
462
+ //
463
+ // Matched against a repo-relative POSIX path at any segment depth:
464
+ // - `**/route.{js,jsx,ts,tsx}` (App Router handlers)
465
+ // - `**/pages/api/**/*.{js,jsx,ts,tsx}` (Pages API routes)
466
+ // - `**/middleware.{js,jsx,ts,tsx}` (edge middleware)
467
+ const VERCEL_ROUTE_FILE_RE = /(?:^|\/)route\.[jt]sx?$/;
468
+ const VERCEL_PAGES_API_RE = /(?:^|\/)pages\/api\/.*\.[jt]sx?$/;
469
+ const VERCEL_MIDDLEWARE_RE = /(?:^|\/)middleware\.[jt]sx?$/;
470
+ export function vercelScansSourcePath(path) {
471
+ return (VERCEL_ROUTE_FILE_RE.test(path) ||
472
+ VERCEL_PAGES_API_RE.test(path) ||
473
+ VERCEL_MIDDLEWARE_RE.test(path));
474
+ }
475
+ // ---------------------------------------------------------------------------
476
+ // Exported adapter.
477
+ export const vercelAdapter = {
478
+ name: 'vercel',
479
+ scansSourcePath: vercelScansSourcePath,
480
+ async detect(repoDir) {
481
+ // A real Vercel signal is required: vercel.json, next.config.*, OR a
482
+ // package.json whose parsed deps indicate a Vercel-deployable framework
483
+ // (next/nuxt/sveltekit/astro/remix) or an explicit `vercel`/`@vercel/*`
484
+ // dep. A bare package.json with no framework/Vercel dep must NOT match —
485
+ // this mirrors the CF adapter's gating logic to avoid false-positive fires
486
+ // on plain Express / CLI / library repos.
487
+ const roots = findProjectRoots(repoDir);
488
+ if (roots.some((r) => isVercelProject(r)))
489
+ return true;
490
+ // findProjectRoots already vetted the package.json at repoDir for
491
+ // framework/vercelDep before adding it — so if repoDir is in roots AND
492
+ // is not an isVercelProject hit, it was added because the package.json
493
+ // carried a real Vercel/framework signal.
494
+ if (roots.includes(repoDir)) {
495
+ const text = readText(join(repoDir, PACKAGE_JSON_NAME));
496
+ if (text) {
497
+ try {
498
+ const info = parsePackageJson(text);
499
+ if (info.detectedFramework || info.hasVercelDep)
500
+ return true;
501
+ }
502
+ catch {
503
+ // ignore
504
+ }
505
+ }
506
+ }
507
+ return false;
508
+ },
509
+ async extract(repoDir) {
510
+ const roots = findProjectRoots(repoDir);
511
+ const inputs = [];
512
+ for (const dir of roots) {
513
+ try {
514
+ inputs.push(loadProjectInputs(dir, repoDir));
515
+ }
516
+ catch (err) {
517
+ console.warn(` [vercel] skipping project at ${relative(repoDir, dir)}: ${err.message}`);
518
+ }
519
+ }
520
+ return buildVercelGraph(inputs, repoDir);
521
+ },
522
+ };
523
+ //# sourceMappingURL=vercel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../src/infra/vercel/vercel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type Dirent } from 'node:fs';
2
+ /**
3
+ * The skip-set shared by the majority of adapters (cloudflare, supabase, fly,
4
+ * render). Adapters needing provider-specific extras (terraform → `.terraform`,
5
+ * vercel → `.vercel`/`out`, pulumi → `.pulumi`, railway → `.nixpacks`, the
6
+ * cloud adapters → `__pycache__`/`.venv`/`vendor`) pass their own `skipDirs`.
7
+ */
8
+ export declare const DEFAULT_SKIP_DIRS: readonly string[];
9
+ export interface WalkRepoOptions {
10
+ /** Directory names pruned from the walk (matched on basename). Defaults to {@link DEFAULT_SKIP_DIRS}. */
11
+ skipDirs?: Iterable<string>;
12
+ /** Maximum recursion depth (root is depth 0). Defaults to 8. */
13
+ maxDepth?: number;
14
+ /** Invoked for every file reached. `dirent` is the file's Dirent (carries `.name`). */
15
+ onFile: (absPath: string, dirent: Dirent) => void;
16
+ }
17
+ /**
18
+ * Walk `repoDir` depth-first, pruning `skipDirs` and stopping past `maxDepth`,
19
+ * invoking `onFile(absPath, dirent)` for each file. Unreadable directories are
20
+ * skipped silently (a permission error on one subtree never aborts the walk).
21
+ */
22
+ export declare function walkRepo(repoDir: string, opts: WalkRepoOptions): void;
23
+ /**
24
+ * Convenience over {@link walkRepo} for the common "collect every file matching
25
+ * a predicate" case. Returns absolute paths sorted lexicographically (the same
26
+ * `found.sort()` every adapter applied for deterministic output).
27
+ *
28
+ * `match` takes `(absPath, dirent)` — the SAME argument order as
29
+ * {@link WalkRepoOptions.onFile} — so a predicate can move between the two
30
+ * helpers without silently rebinding its parameters.
31
+ */
32
+ export declare function findFiles(repoDir: string, match: (absPath: string, dirent: Dirent) => boolean, opts?: {
33
+ skipDirs?: Iterable<string>;
34
+ maxDepth?: number;
35
+ }): string[];
36
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/infra/walk.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAGnD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAQ9C,CAAC;AAKF,MAAM,WAAW,eAAe;IAC9B,yGAAyG;IACzG,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAqBrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,EACnD,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,EAAE,CAUV"}