@colbymchenry/codegraph 0.7.10 → 0.9.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 (362) hide show
  1. package/README.md +70 -54
  2. package/npm-shim.js +43 -0
  3. package/package.json +13 -51
  4. package/LICENSE +0 -21
  5. package/dist/bin/codegraph.d.ts +0 -21
  6. package/dist/bin/codegraph.d.ts.map +0 -1
  7. package/dist/bin/codegraph.js +0 -1232
  8. package/dist/bin/codegraph.js.map +0 -1
  9. package/dist/bin/node-version-check.d.ts +0 -20
  10. package/dist/bin/node-version-check.d.ts.map +0 -1
  11. package/dist/bin/node-version-check.js +0 -42
  12. package/dist/bin/node-version-check.js.map +0 -1
  13. package/dist/bin/uninstall.d.ts +0 -14
  14. package/dist/bin/uninstall.d.ts.map +0 -1
  15. package/dist/bin/uninstall.js +0 -36
  16. package/dist/bin/uninstall.js.map +0 -1
  17. package/dist/config.d.ts +0 -51
  18. package/dist/config.d.ts.map +0 -1
  19. package/dist/config.js +0 -321
  20. package/dist/config.js.map +0 -1
  21. package/dist/context/formatter.d.ts +0 -30
  22. package/dist/context/formatter.d.ts.map +0 -1
  23. package/dist/context/formatter.js +0 -244
  24. package/dist/context/formatter.js.map +0 -1
  25. package/dist/context/index.d.ts +0 -97
  26. package/dist/context/index.d.ts.map +0 -1
  27. package/dist/context/index.js +0 -1048
  28. package/dist/context/index.js.map +0 -1
  29. package/dist/db/index.d.ts +0 -72
  30. package/dist/db/index.d.ts.map +0 -1
  31. package/dist/db/index.js +0 -200
  32. package/dist/db/index.js.map +0 -1
  33. package/dist/db/migrations.d.ts +0 -44
  34. package/dist/db/migrations.d.ts.map +0 -1
  35. package/dist/db/migrations.js +0 -131
  36. package/dist/db/migrations.js.map +0 -1
  37. package/dist/db/queries.d.ts +0 -253
  38. package/dist/db/queries.d.ts.map +0 -1
  39. package/dist/db/queries.js +0 -1207
  40. package/dist/db/queries.js.map +0 -1
  41. package/dist/db/schema.sql +0 -151
  42. package/dist/db/sqlite-adapter.d.ts +0 -52
  43. package/dist/db/sqlite-adapter.d.ts.map +0 -1
  44. package/dist/db/sqlite-adapter.js +0 -237
  45. package/dist/db/sqlite-adapter.js.map +0 -1
  46. package/dist/directory.d.ts +0 -57
  47. package/dist/directory.d.ts.map +0 -1
  48. package/dist/directory.js +0 -264
  49. package/dist/directory.js.map +0 -1
  50. package/dist/errors.d.ts +0 -136
  51. package/dist/errors.d.ts.map +0 -1
  52. package/dist/errors.js +0 -219
  53. package/dist/errors.js.map +0 -1
  54. package/dist/extraction/dfm-extractor.d.ts +0 -31
  55. package/dist/extraction/dfm-extractor.d.ts.map +0 -1
  56. package/dist/extraction/dfm-extractor.js +0 -151
  57. package/dist/extraction/dfm-extractor.js.map +0 -1
  58. package/dist/extraction/grammars.d.ts +0 -78
  59. package/dist/extraction/grammars.d.ts.map +0 -1
  60. package/dist/extraction/grammars.js +0 -322
  61. package/dist/extraction/grammars.js.map +0 -1
  62. package/dist/extraction/index.d.ts +0 -130
  63. package/dist/extraction/index.d.ts.map +0 -1
  64. package/dist/extraction/index.js +0 -1279
  65. package/dist/extraction/index.js.map +0 -1
  66. package/dist/extraction/languages/c-cpp.d.ts +0 -4
  67. package/dist/extraction/languages/c-cpp.d.ts.map +0 -1
  68. package/dist/extraction/languages/c-cpp.js +0 -126
  69. package/dist/extraction/languages/c-cpp.js.map +0 -1
  70. package/dist/extraction/languages/csharp.d.ts +0 -3
  71. package/dist/extraction/languages/csharp.d.ts.map +0 -1
  72. package/dist/extraction/languages/csharp.js +0 -72
  73. package/dist/extraction/languages/csharp.js.map +0 -1
  74. package/dist/extraction/languages/dart.d.ts +0 -3
  75. package/dist/extraction/languages/dart.d.ts.map +0 -1
  76. package/dist/extraction/languages/dart.js +0 -192
  77. package/dist/extraction/languages/dart.js.map +0 -1
  78. package/dist/extraction/languages/go.d.ts +0 -3
  79. package/dist/extraction/languages/go.d.ts.map +0 -1
  80. package/dist/extraction/languages/go.js +0 -58
  81. package/dist/extraction/languages/go.js.map +0 -1
  82. package/dist/extraction/languages/index.d.ts +0 -10
  83. package/dist/extraction/languages/index.d.ts.map +0 -1
  84. package/dist/extraction/languages/index.js +0 -45
  85. package/dist/extraction/languages/index.js.map +0 -1
  86. package/dist/extraction/languages/java.d.ts +0 -3
  87. package/dist/extraction/languages/java.d.ts.map +0 -1
  88. package/dist/extraction/languages/java.js +0 -64
  89. package/dist/extraction/languages/java.js.map +0 -1
  90. package/dist/extraction/languages/javascript.d.ts +0 -3
  91. package/dist/extraction/languages/javascript.d.ts.map +0 -1
  92. package/dist/extraction/languages/javascript.js +0 -90
  93. package/dist/extraction/languages/javascript.js.map +0 -1
  94. package/dist/extraction/languages/kotlin.d.ts +0 -3
  95. package/dist/extraction/languages/kotlin.d.ts.map +0 -1
  96. package/dist/extraction/languages/kotlin.js +0 -253
  97. package/dist/extraction/languages/kotlin.js.map +0 -1
  98. package/dist/extraction/languages/pascal.d.ts +0 -3
  99. package/dist/extraction/languages/pascal.d.ts.map +0 -1
  100. package/dist/extraction/languages/pascal.js +0 -66
  101. package/dist/extraction/languages/pascal.js.map +0 -1
  102. package/dist/extraction/languages/php.d.ts +0 -3
  103. package/dist/extraction/languages/php.d.ts.map +0 -1
  104. package/dist/extraction/languages/php.js +0 -107
  105. package/dist/extraction/languages/php.js.map +0 -1
  106. package/dist/extraction/languages/python.d.ts +0 -3
  107. package/dist/extraction/languages/python.d.ts.map +0 -1
  108. package/dist/extraction/languages/python.js +0 -56
  109. package/dist/extraction/languages/python.js.map +0 -1
  110. package/dist/extraction/languages/ruby.d.ts +0 -3
  111. package/dist/extraction/languages/ruby.d.ts.map +0 -1
  112. package/dist/extraction/languages/ruby.js +0 -114
  113. package/dist/extraction/languages/ruby.js.map +0 -1
  114. package/dist/extraction/languages/rust.d.ts +0 -3
  115. package/dist/extraction/languages/rust.d.ts.map +0 -1
  116. package/dist/extraction/languages/rust.js +0 -109
  117. package/dist/extraction/languages/rust.js.map +0 -1
  118. package/dist/extraction/languages/scala.d.ts +0 -3
  119. package/dist/extraction/languages/scala.d.ts.map +0 -1
  120. package/dist/extraction/languages/scala.js +0 -139
  121. package/dist/extraction/languages/scala.js.map +0 -1
  122. package/dist/extraction/languages/swift.d.ts +0 -3
  123. package/dist/extraction/languages/swift.d.ts.map +0 -1
  124. package/dist/extraction/languages/swift.js +0 -91
  125. package/dist/extraction/languages/swift.js.map +0 -1
  126. package/dist/extraction/languages/typescript.d.ts +0 -3
  127. package/dist/extraction/languages/typescript.d.ts.map +0 -1
  128. package/dist/extraction/languages/typescript.js +0 -129
  129. package/dist/extraction/languages/typescript.js.map +0 -1
  130. package/dist/extraction/liquid-extractor.d.ts +0 -52
  131. package/dist/extraction/liquid-extractor.d.ts.map +0 -1
  132. package/dist/extraction/liquid-extractor.js +0 -313
  133. package/dist/extraction/liquid-extractor.js.map +0 -1
  134. package/dist/extraction/parse-worker.d.ts +0 -8
  135. package/dist/extraction/parse-worker.d.ts.map +0 -1
  136. package/dist/extraction/parse-worker.js +0 -94
  137. package/dist/extraction/parse-worker.js.map +0 -1
  138. package/dist/extraction/svelte-extractor.d.ts +0 -56
  139. package/dist/extraction/svelte-extractor.d.ts.map +0 -1
  140. package/dist/extraction/svelte-extractor.js +0 -272
  141. package/dist/extraction/svelte-extractor.js.map +0 -1
  142. package/dist/extraction/tree-sitter-helpers.d.ts +0 -28
  143. package/dist/extraction/tree-sitter-helpers.d.ts.map +0 -1
  144. package/dist/extraction/tree-sitter-helpers.js +0 -103
  145. package/dist/extraction/tree-sitter-helpers.js.map +0 -1
  146. package/dist/extraction/tree-sitter-types.d.ts +0 -179
  147. package/dist/extraction/tree-sitter-types.d.ts.map +0 -1
  148. package/dist/extraction/tree-sitter-types.js +0 -10
  149. package/dist/extraction/tree-sitter-types.js.map +0 -1
  150. package/dist/extraction/tree-sitter.d.ts +0 -233
  151. package/dist/extraction/tree-sitter.d.ts.map +0 -1
  152. package/dist/extraction/tree-sitter.js +0 -2393
  153. package/dist/extraction/tree-sitter.js.map +0 -1
  154. package/dist/extraction/vue-extractor.d.ts +0 -36
  155. package/dist/extraction/vue-extractor.d.ts.map +0 -1
  156. package/dist/extraction/vue-extractor.js +0 -163
  157. package/dist/extraction/vue-extractor.js.map +0 -1
  158. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  159. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  160. package/dist/graph/index.d.ts +0 -8
  161. package/dist/graph/index.d.ts.map +0 -1
  162. package/dist/graph/index.js +0 -13
  163. package/dist/graph/index.js.map +0 -1
  164. package/dist/graph/queries.d.ts +0 -106
  165. package/dist/graph/queries.d.ts.map +0 -1
  166. package/dist/graph/queries.js +0 -366
  167. package/dist/graph/queries.js.map +0 -1
  168. package/dist/graph/traversal.d.ts +0 -127
  169. package/dist/graph/traversal.d.ts.map +0 -1
  170. package/dist/graph/traversal.js +0 -493
  171. package/dist/graph/traversal.js.map +0 -1
  172. package/dist/index.d.ts +0 -447
  173. package/dist/index.d.ts.map +0 -1
  174. package/dist/index.js +0 -825
  175. package/dist/index.js.map +0 -1
  176. package/dist/installer/claude-md-template.d.ts +0 -14
  177. package/dist/installer/claude-md-template.d.ts.map +0 -1
  178. package/dist/installer/claude-md-template.js +0 -21
  179. package/dist/installer/claude-md-template.js.map +0 -1
  180. package/dist/installer/config-writer.d.ts +0 -29
  181. package/dist/installer/config-writer.d.ts.map +0 -1
  182. package/dist/installer/config-writer.js +0 -109
  183. package/dist/installer/config-writer.js.map +0 -1
  184. package/dist/installer/index.d.ts +0 -53
  185. package/dist/installer/index.d.ts.map +0 -1
  186. package/dist/installer/index.js +0 -338
  187. package/dist/installer/index.js.map +0 -1
  188. package/dist/installer/instructions-template.d.ts +0 -28
  189. package/dist/installer/instructions-template.d.ts.map +0 -1
  190. package/dist/installer/instructions-template.js +0 -63
  191. package/dist/installer/instructions-template.js.map +0 -1
  192. package/dist/installer/targets/claude.d.ts +0 -27
  193. package/dist/installer/targets/claude.d.ts.map +0 -1
  194. package/dist/installer/targets/claude.js +0 -246
  195. package/dist/installer/targets/claude.js.map +0 -1
  196. package/dist/installer/targets/codex.d.ts +0 -18
  197. package/dist/installer/targets/codex.d.ts.map +0 -1
  198. package/dist/installer/targets/codex.js +0 -185
  199. package/dist/installer/targets/codex.js.map +0 -1
  200. package/dist/installer/targets/cursor.d.ts +0 -35
  201. package/dist/installer/targets/cursor.d.ts.map +0 -1
  202. package/dist/installer/targets/cursor.js +0 -229
  203. package/dist/installer/targets/cursor.js.map +0 -1
  204. package/dist/installer/targets/opencode.d.ts +0 -30
  205. package/dist/installer/targets/opencode.d.ts.map +0 -1
  206. package/dist/installer/targets/opencode.js +0 -235
  207. package/dist/installer/targets/opencode.js.map +0 -1
  208. package/dist/installer/targets/registry.d.ts +0 -35
  209. package/dist/installer/targets/registry.d.ts.map +0 -1
  210. package/dist/installer/targets/registry.js +0 -83
  211. package/dist/installer/targets/registry.js.map +0 -1
  212. package/dist/installer/targets/shared.d.ts +0 -77
  213. package/dist/installer/targets/shared.d.ts.map +0 -1
  214. package/dist/installer/targets/shared.js +0 -246
  215. package/dist/installer/targets/shared.js.map +0 -1
  216. package/dist/installer/targets/toml.d.ts +0 -52
  217. package/dist/installer/targets/toml.d.ts.map +0 -1
  218. package/dist/installer/targets/toml.js +0 -147
  219. package/dist/installer/targets/toml.js.map +0 -1
  220. package/dist/installer/targets/types.d.ts +0 -116
  221. package/dist/installer/targets/types.d.ts.map +0 -1
  222. package/dist/installer/targets/types.js +0 -16
  223. package/dist/installer/targets/types.js.map +0 -1
  224. package/dist/mcp/index.d.ts +0 -86
  225. package/dist/mcp/index.d.ts.map +0 -1
  226. package/dist/mcp/index.js +0 -355
  227. package/dist/mcp/index.js.map +0 -1
  228. package/dist/mcp/server-instructions.d.ts +0 -19
  229. package/dist/mcp/server-instructions.d.ts.map +0 -1
  230. package/dist/mcp/server-instructions.js +0 -59
  231. package/dist/mcp/server-instructions.js.map +0 -1
  232. package/dist/mcp/tools.d.ts +0 -200
  233. package/dist/mcp/tools.d.ts.map +0 -1
  234. package/dist/mcp/tools.js +0 -1319
  235. package/dist/mcp/tools.js.map +0 -1
  236. package/dist/mcp/transport.d.ts +0 -89
  237. package/dist/mcp/transport.d.ts.map +0 -1
  238. package/dist/mcp/transport.js +0 -170
  239. package/dist/mcp/transport.js.map +0 -1
  240. package/dist/resolution/frameworks/cargo-workspace.d.ts +0 -18
  241. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +0 -1
  242. package/dist/resolution/frameworks/cargo-workspace.js +0 -225
  243. package/dist/resolution/frameworks/cargo-workspace.js.map +0 -1
  244. package/dist/resolution/frameworks/csharp.d.ts +0 -8
  245. package/dist/resolution/frameworks/csharp.d.ts.map +0 -1
  246. package/dist/resolution/frameworks/csharp.js +0 -213
  247. package/dist/resolution/frameworks/csharp.js.map +0 -1
  248. package/dist/resolution/frameworks/express.d.ts +0 -8
  249. package/dist/resolution/frameworks/express.d.ts.map +0 -1
  250. package/dist/resolution/frameworks/express.js +0 -225
  251. package/dist/resolution/frameworks/express.js.map +0 -1
  252. package/dist/resolution/frameworks/go.d.ts +0 -8
  253. package/dist/resolution/frameworks/go.d.ts.map +0 -1
  254. package/dist/resolution/frameworks/go.js +0 -158
  255. package/dist/resolution/frameworks/go.js.map +0 -1
  256. package/dist/resolution/frameworks/index.d.ts +0 -41
  257. package/dist/resolution/frameworks/index.d.ts.map +0 -1
  258. package/dist/resolution/frameworks/index.js +0 -129
  259. package/dist/resolution/frameworks/index.js.map +0 -1
  260. package/dist/resolution/frameworks/java.d.ts +0 -8
  261. package/dist/resolution/frameworks/java.d.ts.map +0 -1
  262. package/dist/resolution/frameworks/java.js +0 -177
  263. package/dist/resolution/frameworks/java.js.map +0 -1
  264. package/dist/resolution/frameworks/laravel.d.ts +0 -13
  265. package/dist/resolution/frameworks/laravel.d.ts.map +0 -1
  266. package/dist/resolution/frameworks/laravel.js +0 -248
  267. package/dist/resolution/frameworks/laravel.js.map +0 -1
  268. package/dist/resolution/frameworks/python.d.ts +0 -10
  269. package/dist/resolution/frameworks/python.d.ts.map +0 -1
  270. package/dist/resolution/frameworks/python.js +0 -278
  271. package/dist/resolution/frameworks/python.js.map +0 -1
  272. package/dist/resolution/frameworks/react.d.ts +0 -8
  273. package/dist/resolution/frameworks/react.d.ts.map +0 -1
  274. package/dist/resolution/frameworks/react.js +0 -272
  275. package/dist/resolution/frameworks/react.js.map +0 -1
  276. package/dist/resolution/frameworks/ruby.d.ts +0 -8
  277. package/dist/resolution/frameworks/ruby.d.ts.map +0 -1
  278. package/dist/resolution/frameworks/ruby.js +0 -198
  279. package/dist/resolution/frameworks/ruby.js.map +0 -1
  280. package/dist/resolution/frameworks/rust.d.ts +0 -8
  281. package/dist/resolution/frameworks/rust.d.ts.map +0 -1
  282. package/dist/resolution/frameworks/rust.js +0 -207
  283. package/dist/resolution/frameworks/rust.js.map +0 -1
  284. package/dist/resolution/frameworks/svelte.d.ts +0 -9
  285. package/dist/resolution/frameworks/svelte.d.ts.map +0 -1
  286. package/dist/resolution/frameworks/svelte.js +0 -249
  287. package/dist/resolution/frameworks/svelte.js.map +0 -1
  288. package/dist/resolution/frameworks/swift.d.ts +0 -10
  289. package/dist/resolution/frameworks/swift.d.ts.map +0 -1
  290. package/dist/resolution/frameworks/swift.js +0 -376
  291. package/dist/resolution/frameworks/swift.js.map +0 -1
  292. package/dist/resolution/frameworks/vue.d.ts +0 -9
  293. package/dist/resolution/frameworks/vue.d.ts.map +0 -1
  294. package/dist/resolution/frameworks/vue.js +0 -306
  295. package/dist/resolution/frameworks/vue.js.map +0 -1
  296. package/dist/resolution/import-resolver.d.ts +0 -40
  297. package/dist/resolution/import-resolver.d.ts.map +0 -1
  298. package/dist/resolution/import-resolver.js +0 -663
  299. package/dist/resolution/import-resolver.js.map +0 -1
  300. package/dist/resolution/index.d.ts +0 -106
  301. package/dist/resolution/index.d.ts.map +0 -1
  302. package/dist/resolution/index.js +0 -709
  303. package/dist/resolution/index.js.map +0 -1
  304. package/dist/resolution/name-matcher.d.ts +0 -32
  305. package/dist/resolution/name-matcher.d.ts.map +0 -1
  306. package/dist/resolution/name-matcher.js +0 -384
  307. package/dist/resolution/name-matcher.js.map +0 -1
  308. package/dist/resolution/path-aliases.d.ts +0 -68
  309. package/dist/resolution/path-aliases.d.ts.map +0 -1
  310. package/dist/resolution/path-aliases.js +0 -238
  311. package/dist/resolution/path-aliases.js.map +0 -1
  312. package/dist/resolution/strip-comments.d.ts +0 -27
  313. package/dist/resolution/strip-comments.d.ts.map +0 -1
  314. package/dist/resolution/strip-comments.js +0 -441
  315. package/dist/resolution/strip-comments.js.map +0 -1
  316. package/dist/resolution/types.d.ts +0 -172
  317. package/dist/resolution/types.d.ts.map +0 -1
  318. package/dist/resolution/types.js +0 -8
  319. package/dist/resolution/types.js.map +0 -1
  320. package/dist/search/query-parser.d.ts +0 -57
  321. package/dist/search/query-parser.d.ts.map +0 -1
  322. package/dist/search/query-parser.js +0 -177
  323. package/dist/search/query-parser.js.map +0 -1
  324. package/dist/search/query-utils.d.ts +0 -53
  325. package/dist/search/query-utils.d.ts.map +0 -1
  326. package/dist/search/query-utils.js +0 -347
  327. package/dist/search/query-utils.js.map +0 -1
  328. package/dist/sync/index.d.ts +0 -13
  329. package/dist/sync/index.d.ts.map +0 -1
  330. package/dist/sync/index.js +0 -17
  331. package/dist/sync/index.js.map +0 -1
  332. package/dist/sync/watcher.d.ts +0 -81
  333. package/dist/sync/watcher.d.ts.map +0 -1
  334. package/dist/sync/watcher.js +0 -184
  335. package/dist/sync/watcher.js.map +0 -1
  336. package/dist/types.d.ts +0 -423
  337. package/dist/types.d.ts.map +0 -1
  338. package/dist/types.js +0 -256
  339. package/dist/types.js.map +0 -1
  340. package/dist/ui/glyphs.d.ts +0 -42
  341. package/dist/ui/glyphs.d.ts.map +0 -1
  342. package/dist/ui/glyphs.js +0 -78
  343. package/dist/ui/glyphs.js.map +0 -1
  344. package/dist/ui/shimmer-progress.d.ts +0 -11
  345. package/dist/ui/shimmer-progress.d.ts.map +0 -1
  346. package/dist/ui/shimmer-progress.js +0 -90
  347. package/dist/ui/shimmer-progress.js.map +0 -1
  348. package/dist/ui/shimmer-worker.d.ts +0 -2
  349. package/dist/ui/shimmer-worker.d.ts.map +0 -1
  350. package/dist/ui/shimmer-worker.js +0 -118
  351. package/dist/ui/shimmer-worker.js.map +0 -1
  352. package/dist/ui/types.d.ts +0 -17
  353. package/dist/ui/types.d.ts.map +0 -1
  354. package/dist/ui/types.js +0 -3
  355. package/dist/ui/types.js.map +0 -1
  356. package/dist/utils.d.ts +0 -205
  357. package/dist/utils.d.ts.map +0 -1
  358. package/dist/utils.js +0 -549
  359. package/dist/utils.js.map +0 -1
  360. package/scripts/local-install.sh +0 -41
  361. package/scripts/patch-tree-sitter-dart.js +0 -112
  362. package/scripts/release.sh +0 -70
@@ -1,249 +0,0 @@
1
- "use strict";
2
- /**
3
- * Svelte / SvelteKit Framework Resolver
4
- *
5
- * Handles Svelte component references, Svelte 5 runes,
6
- * store auto-subscriptions, and SvelteKit route/module patterns.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.svelteResolver = void 0;
10
- /**
11
- * Svelte 5 runes — compiler-provided, not user code
12
- */
13
- const SVELTE_RUNES = new Set([
14
- '$state',
15
- '$state.raw',
16
- '$state.snapshot',
17
- '$derived',
18
- '$derived.by',
19
- '$effect',
20
- '$effect.pre',
21
- '$effect.root',
22
- '$effect.tracking',
23
- '$props',
24
- '$bindable',
25
- '$inspect',
26
- '$host',
27
- ]);
28
- /**
29
- * SvelteKit framework-provided module prefixes
30
- */
31
- const SVELTEKIT_MODULE_PREFIXES = [
32
- '$app/navigation',
33
- '$app/stores',
34
- '$app/environment',
35
- '$app/forms',
36
- '$app/paths',
37
- '$env/static/private',
38
- '$env/static/public',
39
- '$env/dynamic/private',
40
- '$env/dynamic/public',
41
- ];
42
- exports.svelteResolver = {
43
- name: 'svelte',
44
- languages: ['svelte'],
45
- detect(context) {
46
- // Check for svelte or @sveltejs/kit in package.json
47
- const packageJson = context.readFile('package.json');
48
- if (packageJson) {
49
- try {
50
- const pkg = JSON.parse(packageJson);
51
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
52
- if (deps.svelte || deps['@sveltejs/kit']) {
53
- return true;
54
- }
55
- }
56
- catch {
57
- // Invalid JSON
58
- }
59
- }
60
- // Check for .svelte files in project
61
- const allFiles = context.getAllFiles();
62
- return allFiles.some((f) => f.endsWith('.svelte'));
63
- },
64
- resolve(ref, context) {
65
- // Pattern 1: Svelte runes ($state, $derived, $effect, etc.)
66
- if (isRuneReference(ref.referenceName)) {
67
- // Runes are compiler-provided — return a high-confidence "framework" resolution
68
- // so CodeGraph doesn't waste time searching for user-defined symbols.
69
- // We use the fromNodeId as targetNodeId since runes don't have real targets.
70
- return {
71
- original: ref,
72
- targetNodeId: ref.fromNodeId,
73
- confidence: 1.0,
74
- resolvedBy: 'framework',
75
- };
76
- }
77
- // Pattern 2: Store auto-subscriptions ($storeName)
78
- if (ref.referenceName.startsWith('$') && !ref.referenceName.startsWith('$$')) {
79
- const storeName = ref.referenceName.substring(1);
80
- const storeNode = context.getNodesByName(storeName).find((n) => n.kind === 'variable' || n.kind === 'constant');
81
- if (storeNode) {
82
- return {
83
- original: ref,
84
- targetNodeId: storeNode.id,
85
- confidence: 0.85,
86
- resolvedBy: 'framework',
87
- };
88
- }
89
- }
90
- // Pattern 3: SvelteKit module imports ($app/*, $env/*, $lib/*)
91
- if (ref.referenceKind === 'imports' && ref.referenceName.startsWith('$')) {
92
- // $lib/* resolves to src/lib/* — try to find the target file
93
- if (ref.referenceName.startsWith('$lib/')) {
94
- const libPath = ref.referenceName.replace('$lib/', 'src/lib/');
95
- // Try common extensions
96
- for (const ext of ['', '.ts', '.js', '.svelte', '/index.ts', '/index.js']) {
97
- const fullPath = libPath + ext;
98
- if (context.fileExists(fullPath)) {
99
- const nodes = context.getNodesInFile(fullPath);
100
- if (nodes.length > 0) {
101
- return {
102
- original: ref,
103
- targetNodeId: nodes[0].id,
104
- confidence: 0.9,
105
- resolvedBy: 'framework',
106
- };
107
- }
108
- }
109
- }
110
- }
111
- // $app/* and $env/* are framework-provided
112
- if (SVELTEKIT_MODULE_PREFIXES.some((prefix) => ref.referenceName.startsWith(prefix))) {
113
- return {
114
- original: ref,
115
- targetNodeId: ref.fromNodeId,
116
- confidence: 1.0,
117
- resolvedBy: 'framework',
118
- };
119
- }
120
- }
121
- // Pattern 4: Component references (PascalCase) — resolve to .svelte files
122
- if (isPascalCase(ref.referenceName) && ref.referenceKind === 'calls') {
123
- const result = resolveComponent(ref.referenceName, ref.filePath, context);
124
- if (result) {
125
- return {
126
- original: ref,
127
- targetNodeId: result,
128
- confidence: 0.8,
129
- resolvedBy: 'framework',
130
- };
131
- }
132
- }
133
- return null;
134
- },
135
- extract(filePath, _content) {
136
- const nodes = [];
137
- const now = Date.now();
138
- // Detect SvelteKit route files
139
- const fileName = filePath.split(/[/\\]/).pop() || '';
140
- const routeMatch = getSvelteKitRouteInfo(fileName);
141
- if (routeMatch) {
142
- // Extract route path from directory structure
143
- // e.g., src/routes/blog/[slug]/+page.svelte -> /blog/:slug
144
- const routePath = filePathToSvelteKitRoute(filePath);
145
- if (routePath) {
146
- nodes.push({
147
- id: `route:${filePath}:${routePath}:1`,
148
- kind: 'route',
149
- name: routePath,
150
- qualifiedName: `${filePath}::route:${routePath}`,
151
- filePath,
152
- startLine: 1,
153
- endLine: 1,
154
- startColumn: 0,
155
- endColumn: 0,
156
- language: filePath.endsWith('.svelte') ? 'svelte' : 'typescript',
157
- updatedAt: now,
158
- });
159
- }
160
- }
161
- return { nodes, references: [] };
162
- },
163
- };
164
- /**
165
- * Check if a reference name is a Svelte rune
166
- */
167
- function isRuneReference(name) {
168
- // Direct match (e.g. $state, $derived)
169
- if (SVELTE_RUNES.has(name))
170
- return true;
171
- // Rune method calls come through as the base rune name
172
- // e.g. $state.raw -> the call is to "$state" with ".raw" accessed as property
173
- // Check if it's a base rune that has sub-methods
174
- if (name === '$state' || name === '$derived' || name === '$effect')
175
- return true;
176
- return false;
177
- }
178
- /**
179
- * Check if string is PascalCase
180
- */
181
- function isPascalCase(str) {
182
- return /^[A-Z][a-zA-Z0-9]*$/.test(str);
183
- }
184
- /**
185
- * Resolve a Svelte component reference using name-based lookup
186
- */
187
- function resolveComponent(name, fromFile, context) {
188
- // Look for component nodes by name
189
- const candidates = context.getNodesByName(name);
190
- const components = candidates.filter((n) => n.kind === 'component');
191
- if (components.length === 0)
192
- return null;
193
- // Prefer same directory
194
- const fromDir = fromFile.substring(0, fromFile.lastIndexOf('/'));
195
- const sameDir = components.filter((n) => n.filePath.startsWith(fromDir));
196
- if (sameDir.length > 0)
197
- return sameDir[0].id;
198
- return components[0].id;
199
- }
200
- /**
201
- * SvelteKit route file patterns
202
- */
203
- const SVELTEKIT_ROUTE_FILES = {
204
- '+page.svelte': 'page',
205
- '+page.ts': 'page-load',
206
- '+page.js': 'page-load',
207
- '+page.server.ts': 'page-server-load',
208
- '+page.server.js': 'page-server-load',
209
- '+layout.svelte': 'layout',
210
- '+layout.ts': 'layout-load',
211
- '+layout.js': 'layout-load',
212
- '+layout.server.ts': 'layout-server-load',
213
- '+layout.server.js': 'layout-server-load',
214
- '+server.ts': 'api-endpoint',
215
- '+server.js': 'api-endpoint',
216
- '+error.svelte': 'error-page',
217
- };
218
- /**
219
- * Check if filename is a SvelteKit route file
220
- */
221
- function getSvelteKitRouteInfo(fileName) {
222
- return SVELTEKIT_ROUTE_FILES[fileName] || null;
223
- }
224
- /**
225
- * Convert a file path to a SvelteKit route path
226
- */
227
- function filePathToSvelteKitRoute(filePath) {
228
- // Normalize to forward slashes
229
- const normalized = filePath.replace(/\\/g, '/');
230
- // Find the routes directory
231
- const routesIndex = normalized.indexOf('/routes/');
232
- if (routesIndex === -1)
233
- return null;
234
- // Extract the path after routes/
235
- const afterRoutes = normalized.substring(routesIndex + '/routes/'.length);
236
- // Remove the file name
237
- const lastSlash = afterRoutes.lastIndexOf('/');
238
- const dirPath = lastSlash === -1 ? '' : afterRoutes.substring(0, lastSlash);
239
- // Convert SvelteKit param syntax [param] to :param
240
- let route = '/' + dirPath
241
- .replace(/\[\.\.\.([^\]]+)\]/g, '*$1') // [...rest] -> *rest
242
- .replace(/\[{2}([^\]]+)\]{2}/g, ':$1?') // [[optional]] -> :optional?
243
- .replace(/\[([^\]]+)\]/g, ':$1'); // [param] -> :param
244
- if (route === '/')
245
- return '/';
246
- // Remove trailing slash
247
- return route.replace(/\/$/, '');
248
- }
249
- //# sourceMappingURL=svelte.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"svelte.js","sourceRoot":"","sources":["../../../src/resolution/frameworks/svelte.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Swift Framework Resolver
3
- *
4
- * Handles SwiftUI, UIKit, and Vapor (server-side Swift) patterns.
5
- */
6
- import { FrameworkResolver } from '../types';
7
- export declare const swiftUIResolver: FrameworkResolver;
8
- export declare const uikitResolver: FrameworkResolver;
9
- export declare const vaporResolver: FrameworkResolver;
10
- //# sourceMappingURL=swift.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../src/resolution/frameworks/swift.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAiD,MAAM,UAAU,CAAC;AAG5F,eAAO,MAAM,eAAe,EAAE,iBA2H7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAmI3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,iBAoH3B,CAAC"}
@@ -1,376 +0,0 @@
1
- "use strict";
2
- /**
3
- * Swift Framework Resolver
4
- *
5
- * Handles SwiftUI, UIKit, and Vapor (server-side Swift) patterns.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.vaporResolver = exports.uikitResolver = exports.swiftUIResolver = void 0;
9
- const strip_comments_1 = require("../strip-comments");
10
- exports.swiftUIResolver = {
11
- name: 'swiftui',
12
- languages: ['swift'],
13
- detect(context) {
14
- // Check for SwiftUI imports in Swift files
15
- const allFiles = context.getAllFiles();
16
- for (const file of allFiles) {
17
- if (file.endsWith('.swift')) {
18
- const content = context.readFile(file);
19
- if (content && content.includes('import SwiftUI')) {
20
- return true;
21
- }
22
- }
23
- }
24
- // Check for Xcode project with SwiftUI
25
- for (const file of allFiles) {
26
- if (file.endsWith('.xcodeproj') || file.endsWith('.xcworkspace')) {
27
- return true;
28
- }
29
- }
30
- return false;
31
- },
32
- resolve(ref, context) {
33
- // Pattern 1: View references (SwiftUI views are PascalCase ending in View)
34
- if (ref.referenceName.endsWith('View') && /^[A-Z]/.test(ref.referenceName)) {
35
- const result = resolveByNameAndKind(ref.referenceName, VIEW_KINDS, VIEW_DIRS, context);
36
- if (result) {
37
- return {
38
- original: ref,
39
- targetNodeId: result,
40
- confidence: 0.85,
41
- resolvedBy: 'framework',
42
- };
43
- }
44
- }
45
- // Pattern 2: ViewModel/ObservableObject references
46
- if (ref.referenceName.endsWith('ViewModel') || ref.referenceName.endsWith('Store') || ref.referenceName.endsWith('Manager')) {
47
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, VIEWMODEL_DIRS, context);
48
- if (result) {
49
- return {
50
- original: ref,
51
- targetNodeId: result,
52
- confidence: 0.85,
53
- resolvedBy: 'framework',
54
- };
55
- }
56
- }
57
- // Pattern 3: Model references
58
- if (/^[A-Z][a-zA-Z]+$/.test(ref.referenceName)) {
59
- const result = resolveByNameAndKind(ref.referenceName, MODEL_KINDS, MODEL_DIRS, context);
60
- if (result) {
61
- return {
62
- original: ref,
63
- targetNodeId: result,
64
- confidence: 0.7,
65
- resolvedBy: 'framework',
66
- };
67
- }
68
- }
69
- return null;
70
- },
71
- extract(filePath, content) {
72
- if (!filePath.endsWith('.swift'))
73
- return { nodes: [], references: [] };
74
- const nodes = [];
75
- const now = Date.now();
76
- const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'swift');
77
- // Extract SwiftUI View structs
78
- // struct ContentView: View { ... }
79
- const viewPattern = /struct\s+(\w+)\s*:\s*(?:\w+\s*,\s*)*View/g;
80
- let match;
81
- while ((match = viewPattern.exec(safe)) !== null) {
82
- const [, viewName] = match;
83
- const line = safe.slice(0, match.index).split('\n').length;
84
- nodes.push({
85
- id: `view:${filePath}:${viewName}:${line}`,
86
- kind: 'component',
87
- name: viewName,
88
- qualifiedName: `${filePath}::${viewName}`,
89
- filePath,
90
- startLine: line,
91
- endLine: line,
92
- startColumn: 0,
93
- endColumn: match[0].length,
94
- language: 'swift',
95
- updatedAt: now,
96
- });
97
- }
98
- // Extract @main App entry point
99
- const appPattern = /@main\s+struct\s+(\w+)\s*:\s*App/g;
100
- while ((match = appPattern.exec(safe)) !== null) {
101
- const [, appName] = match;
102
- const line = safe.slice(0, match.index).split('\n').length;
103
- nodes.push({
104
- id: `app:${filePath}:${appName}:${line}`,
105
- kind: 'class',
106
- name: appName,
107
- qualifiedName: `${filePath}::${appName}`,
108
- filePath,
109
- startLine: line,
110
- endLine: line,
111
- startColumn: 0,
112
- endColumn: match[0].length,
113
- language: 'swift',
114
- updatedAt: now,
115
- });
116
- }
117
- return { nodes, references: [] };
118
- },
119
- };
120
- exports.uikitResolver = {
121
- name: 'uikit',
122
- languages: ['swift'],
123
- detect(context) {
124
- const allFiles = context.getAllFiles();
125
- for (const file of allFiles) {
126
- if (file.endsWith('.swift')) {
127
- const content = context.readFile(file);
128
- if (content && (content.includes('import UIKit') ||
129
- content.includes('UIViewController') ||
130
- content.includes('UIView'))) {
131
- return true;
132
- }
133
- }
134
- }
135
- return false;
136
- },
137
- resolve(ref, context) {
138
- // Pattern 1: ViewController references
139
- if (ref.referenceName.endsWith('ViewController')) {
140
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, VC_DIRS, context);
141
- if (result) {
142
- return {
143
- original: ref,
144
- targetNodeId: result,
145
- confidence: 0.85,
146
- resolvedBy: 'framework',
147
- };
148
- }
149
- }
150
- // Pattern 2: UIView subclass references
151
- if (ref.referenceName.endsWith('View') && !ref.referenceName.endsWith('ViewController')) {
152
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, UIVIEW_DIRS, context);
153
- if (result) {
154
- return {
155
- original: ref,
156
- targetNodeId: result,
157
- confidence: 0.8,
158
- resolvedBy: 'framework',
159
- };
160
- }
161
- }
162
- // Pattern 3: Cell references
163
- if (ref.referenceName.endsWith('Cell')) {
164
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, CELL_DIRS, context);
165
- if (result) {
166
- return {
167
- original: ref,
168
- targetNodeId: result,
169
- confidence: 0.85,
170
- resolvedBy: 'framework',
171
- };
172
- }
173
- }
174
- // Pattern 4: Delegate/DataSource references
175
- if (ref.referenceName.endsWith('Delegate') || ref.referenceName.endsWith('DataSource')) {
176
- const result = resolveByNameAndKind(ref.referenceName, PROTOCOL_KINDS, [], context);
177
- if (result) {
178
- return {
179
- original: ref,
180
- targetNodeId: result,
181
- confidence: 0.8,
182
- resolvedBy: 'framework',
183
- };
184
- }
185
- }
186
- return null;
187
- },
188
- extract(filePath, content) {
189
- if (!filePath.endsWith('.swift'))
190
- return { nodes: [], references: [] };
191
- const nodes = [];
192
- const now = Date.now();
193
- const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'swift');
194
- // Extract UIViewController subclasses
195
- const vcPattern = /class\s+(\w+)\s*:\s*(?:\w+\s*,\s*)*UIViewController/g;
196
- let match;
197
- while ((match = vcPattern.exec(safe)) !== null) {
198
- const [, vcName] = match;
199
- const line = safe.slice(0, match.index).split('\n').length;
200
- nodes.push({
201
- id: `viewcontroller:${filePath}:${vcName}:${line}`,
202
- kind: 'class',
203
- name: vcName,
204
- qualifiedName: `${filePath}::${vcName}`,
205
- filePath,
206
- startLine: line,
207
- endLine: line,
208
- startColumn: 0,
209
- endColumn: match[0].length,
210
- language: 'swift',
211
- updatedAt: now,
212
- });
213
- }
214
- // Extract UIView subclasses
215
- const viewPattern = /class\s+(\w+)\s*:\s*(?:\w+\s*,\s*)*UIView[^C]/g;
216
- while ((match = viewPattern.exec(safe)) !== null) {
217
- const [, viewName] = match;
218
- const line = safe.slice(0, match.index).split('\n').length;
219
- nodes.push({
220
- id: `uiview:${filePath}:${viewName}:${line}`,
221
- kind: 'class',
222
- name: viewName,
223
- qualifiedName: `${filePath}::${viewName}`,
224
- filePath,
225
- startLine: line,
226
- endLine: line,
227
- startColumn: 0,
228
- endColumn: match[0].length,
229
- language: 'swift',
230
- updatedAt: now,
231
- });
232
- }
233
- return { nodes, references: [] };
234
- },
235
- };
236
- exports.vaporResolver = {
237
- name: 'vapor',
238
- languages: ['swift'],
239
- detect(context) {
240
- // Check for Package.swift with Vapor dependency
241
- const packageSwift = context.readFile('Package.swift');
242
- if (packageSwift && packageSwift.includes('vapor')) {
243
- return true;
244
- }
245
- // Check for Vapor imports
246
- const allFiles = context.getAllFiles();
247
- for (const file of allFiles) {
248
- if (file.endsWith('.swift')) {
249
- const content = context.readFile(file);
250
- if (content && content.includes('import Vapor')) {
251
- return true;
252
- }
253
- }
254
- }
255
- return false;
256
- },
257
- resolve(ref, context) {
258
- // Pattern 1: Controller references
259
- if (ref.referenceName.endsWith('Controller')) {
260
- const result = resolveByNameAndKind(ref.referenceName, VAPOR_CONTROLLER_KINDS, VAPOR_CONTROLLER_DIRS, context);
261
- if (result) {
262
- return {
263
- original: ref,
264
- targetNodeId: result,
265
- confidence: 0.85,
266
- resolvedBy: 'framework',
267
- };
268
- }
269
- }
270
- // Pattern 2: Model references (Fluent)
271
- if (/^[A-Z][a-zA-Z]+$/.test(ref.referenceName)) {
272
- const result = resolveByNameAndKind(ref.referenceName, CLASS_KINDS, FLUENT_MODEL_DIRS, context);
273
- if (result) {
274
- return {
275
- original: ref,
276
- targetNodeId: result,
277
- confidence: 0.75,
278
- resolvedBy: 'framework',
279
- };
280
- }
281
- }
282
- // Pattern 3: Middleware references
283
- if (ref.referenceName.endsWith('Middleware')) {
284
- const result = resolveByNameAndKind(ref.referenceName, VAPOR_CONTROLLER_KINDS, VAPOR_MIDDLEWARE_DIRS, context);
285
- if (result) {
286
- return {
287
- original: ref,
288
- targetNodeId: result,
289
- confidence: 0.8,
290
- resolvedBy: 'framework',
291
- };
292
- }
293
- }
294
- return null;
295
- },
296
- extract(filePath, content) {
297
- if (!filePath.endsWith('.swift'))
298
- return { nodes: [], references: [] };
299
- const nodes = [];
300
- const references = [];
301
- const now = Date.now();
302
- const safe = (0, strip_comments_1.stripCommentsForRegex)(content, 'swift');
303
- // Vapor: (app|router|routes).METHOD("path", use: handler)
304
- const routeRegex = /\b(?:app|router|routes)\.(get|post|put|patch|delete)\s*\(\s*"([^"]+)"\s*,\s*use:\s*([A-Za-z_][A-Za-z0-9_.]*)/g;
305
- let match;
306
- while ((match = routeRegex.exec(safe)) !== null) {
307
- const [, method, routePath, handlerExpr] = match;
308
- const line = safe.slice(0, match.index).split('\n').length;
309
- const upper = method.toUpperCase();
310
- const routeNode = {
311
- id: `route:${filePath}:${line}:${upper}:${routePath}`,
312
- kind: 'route',
313
- name: `${upper} ${routePath}`,
314
- qualifiedName: `${filePath}::route:${routePath}`,
315
- filePath,
316
- startLine: line,
317
- endLine: line,
318
- startColumn: 0,
319
- endColumn: match[0].length,
320
- language: 'swift',
321
- updatedAt: now,
322
- };
323
- nodes.push(routeNode);
324
- // Last segment of dotted path (e.g. UserController.list -> list)
325
- const parts = handlerExpr.split('.');
326
- const handlerName = parts[parts.length - 1];
327
- if (handlerName) {
328
- references.push({
329
- fromNodeId: routeNode.id,
330
- referenceName: handlerName,
331
- referenceKind: 'references',
332
- line,
333
- column: 0,
334
- filePath,
335
- language: 'swift',
336
- });
337
- }
338
- }
339
- return { nodes, references };
340
- },
341
- };
342
- // Directory patterns
343
- const VIEW_DIRS = ['/Views/', '/View/', '/Screens/', '/Components/', '/UI/'];
344
- const VIEWMODEL_DIRS = ['/ViewModels/', '/ViewModel/', '/Stores/', '/Managers/', '/Services/'];
345
- const MODEL_DIRS = ['/Models/', '/Model/', '/Entities/', '/Domain/'];
346
- const VC_DIRS = ['/ViewControllers/', '/ViewController/', '/Controllers/', '/Screens/'];
347
- const UIVIEW_DIRS = ['/Views/', '/View/', '/UI/', '/Components/'];
348
- const CELL_DIRS = ['/Cells/', '/Cell/', '/Views/', '/TableViewCells/', '/CollectionViewCells/'];
349
- const VAPOR_CONTROLLER_DIRS = ['/Controllers/', '/Controller/', '/Routes/'];
350
- const FLUENT_MODEL_DIRS = ['/Models/', '/Model/', '/Entities/', '/Database/'];
351
- const VAPOR_MIDDLEWARE_DIRS = ['/Middleware/', '/Middlewares/'];
352
- const VIEW_KINDS = new Set(['struct', 'component']);
353
- const CLASS_KINDS = new Set(['class']);
354
- const MODEL_KINDS = new Set(['struct', 'class']);
355
- const PROTOCOL_KINDS = new Set(['protocol']);
356
- const VAPOR_CONTROLLER_KINDS = new Set(['class', 'struct']);
357
- /**
358
- * Resolve a symbol by name using indexed queries instead of scanning all files.
359
- */
360
- function resolveByNameAndKind(name, kinds, preferredDirPatterns, context) {
361
- const candidates = context.getNodesByName(name);
362
- if (candidates.length === 0)
363
- return null;
364
- const kindFiltered = candidates.filter((n) => kinds.has(n.kind));
365
- if (kindFiltered.length === 0)
366
- return null;
367
- // Prefer candidates in framework-conventional directories
368
- if (preferredDirPatterns.length > 0) {
369
- const preferred = kindFiltered.filter((n) => preferredDirPatterns.some((d) => n.filePath.includes(d)));
370
- if (preferred.length > 0)
371
- return preferred[0].id;
372
- }
373
- // Fall back to any match
374
- return kindFiltered[0].id;
375
- }
376
- //# sourceMappingURL=swift.js.map