@colbymchenry/codegraph 0.8.0 → 0.9.1

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 (381) hide show
  1. package/README.md +23 -7
  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 -1257
  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 -1050
  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 -1305
  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 -111
  183. package/dist/installer/config-writer.js.map +0 -1
  184. package/dist/installer/index.d.ts +0 -65
  185. package/dist/installer/index.d.ts.map +0 -1
  186. package/dist/installer/index.js +0 -406
  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 -64
  191. package/dist/installer/instructions-template.js.map +0 -1
  192. package/dist/installer/targets/claude.d.ts +0 -31
  193. package/dist/installer/targets/claude.d.ts.map +0 -1
  194. package/dist/installer/targets/claude.js +0 -308
  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 -94
  225. package/dist/mcp/index.d.ts.map +0 -1
  226. package/dist/mcp/index.js +0 -453
  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 -71
  231. package/dist/mcp/server-instructions.js.map +0 -1
  232. package/dist/mcp/tools.d.ts +0 -257
  233. package/dist/mcp/tools.d.ts.map +0 -1
  234. package/dist/mcp/tools.js +0 -1633
  235. package/dist/mcp/tools.js.map +0 -1
  236. package/dist/mcp/transport.d.ts +0 -106
  237. package/dist/mcp/transport.d.ts.map +0 -1
  238. package/dist/mcp/transport.js +0 -233
  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 -42
  257. package/dist/resolution/frameworks/index.d.ts.map +0 -1
  258. package/dist/resolution/frameworks/index.js +0 -133
  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/nestjs.d.ts +0 -26
  269. package/dist/resolution/frameworks/nestjs.d.ts.map +0 -1
  270. package/dist/resolution/frameworks/nestjs.js +0 -374
  271. package/dist/resolution/frameworks/nestjs.js.map +0 -1
  272. package/dist/resolution/frameworks/python.d.ts +0 -10
  273. package/dist/resolution/frameworks/python.d.ts.map +0 -1
  274. package/dist/resolution/frameworks/python.js +0 -278
  275. package/dist/resolution/frameworks/python.js.map +0 -1
  276. package/dist/resolution/frameworks/react.d.ts +0 -8
  277. package/dist/resolution/frameworks/react.d.ts.map +0 -1
  278. package/dist/resolution/frameworks/react.js +0 -272
  279. package/dist/resolution/frameworks/react.js.map +0 -1
  280. package/dist/resolution/frameworks/ruby.d.ts +0 -8
  281. package/dist/resolution/frameworks/ruby.d.ts.map +0 -1
  282. package/dist/resolution/frameworks/ruby.js +0 -198
  283. package/dist/resolution/frameworks/ruby.js.map +0 -1
  284. package/dist/resolution/frameworks/rust.d.ts +0 -8
  285. package/dist/resolution/frameworks/rust.d.ts.map +0 -1
  286. package/dist/resolution/frameworks/rust.js +0 -207
  287. package/dist/resolution/frameworks/rust.js.map +0 -1
  288. package/dist/resolution/frameworks/svelte.d.ts +0 -9
  289. package/dist/resolution/frameworks/svelte.d.ts.map +0 -1
  290. package/dist/resolution/frameworks/svelte.js +0 -249
  291. package/dist/resolution/frameworks/svelte.js.map +0 -1
  292. package/dist/resolution/frameworks/swift.d.ts +0 -10
  293. package/dist/resolution/frameworks/swift.d.ts.map +0 -1
  294. package/dist/resolution/frameworks/swift.js +0 -376
  295. package/dist/resolution/frameworks/swift.js.map +0 -1
  296. package/dist/resolution/frameworks/vue.d.ts +0 -9
  297. package/dist/resolution/frameworks/vue.d.ts.map +0 -1
  298. package/dist/resolution/frameworks/vue.js +0 -306
  299. package/dist/resolution/frameworks/vue.js.map +0 -1
  300. package/dist/resolution/import-resolver.d.ts +0 -40
  301. package/dist/resolution/import-resolver.d.ts.map +0 -1
  302. package/dist/resolution/import-resolver.js +0 -663
  303. package/dist/resolution/import-resolver.js.map +0 -1
  304. package/dist/resolution/index.d.ts +0 -106
  305. package/dist/resolution/index.d.ts.map +0 -1
  306. package/dist/resolution/index.js +0 -709
  307. package/dist/resolution/index.js.map +0 -1
  308. package/dist/resolution/name-matcher.d.ts +0 -32
  309. package/dist/resolution/name-matcher.d.ts.map +0 -1
  310. package/dist/resolution/name-matcher.js +0 -384
  311. package/dist/resolution/name-matcher.js.map +0 -1
  312. package/dist/resolution/path-aliases.d.ts +0 -68
  313. package/dist/resolution/path-aliases.d.ts.map +0 -1
  314. package/dist/resolution/path-aliases.js +0 -238
  315. package/dist/resolution/path-aliases.js.map +0 -1
  316. package/dist/resolution/strip-comments.d.ts +0 -27
  317. package/dist/resolution/strip-comments.d.ts.map +0 -1
  318. package/dist/resolution/strip-comments.js +0 -441
  319. package/dist/resolution/strip-comments.js.map +0 -1
  320. package/dist/resolution/types.d.ts +0 -172
  321. package/dist/resolution/types.d.ts.map +0 -1
  322. package/dist/resolution/types.js +0 -8
  323. package/dist/resolution/types.js.map +0 -1
  324. package/dist/search/query-parser.d.ts +0 -57
  325. package/dist/search/query-parser.d.ts.map +0 -1
  326. package/dist/search/query-parser.js +0 -177
  327. package/dist/search/query-parser.js.map +0 -1
  328. package/dist/search/query-utils.d.ts +0 -53
  329. package/dist/search/query-utils.d.ts.map +0 -1
  330. package/dist/search/query-utils.js +0 -350
  331. package/dist/search/query-utils.js.map +0 -1
  332. package/dist/sync/git-hooks.d.ts +0 -45
  333. package/dist/sync/git-hooks.d.ts.map +0 -1
  334. package/dist/sync/git-hooks.js +0 -223
  335. package/dist/sync/git-hooks.js.map +0 -1
  336. package/dist/sync/index.d.ts +0 -17
  337. package/dist/sync/index.d.ts.map +0 -1
  338. package/dist/sync/index.js +0 -28
  339. package/dist/sync/index.js.map +0 -1
  340. package/dist/sync/watch-policy.d.ts +0 -48
  341. package/dist/sync/watch-policy.d.ts.map +0 -1
  342. package/dist/sync/watch-policy.js +0 -124
  343. package/dist/sync/watch-policy.js.map +0 -1
  344. package/dist/sync/watcher.d.ts +0 -81
  345. package/dist/sync/watcher.d.ts.map +0 -1
  346. package/dist/sync/watcher.js +0 -194
  347. package/dist/sync/watcher.js.map +0 -1
  348. package/dist/types.d.ts +0 -423
  349. package/dist/types.d.ts.map +0 -1
  350. package/dist/types.js +0 -256
  351. package/dist/types.js.map +0 -1
  352. package/dist/ui/glyphs.d.ts +0 -42
  353. package/dist/ui/glyphs.d.ts.map +0 -1
  354. package/dist/ui/glyphs.js +0 -78
  355. package/dist/ui/glyphs.js.map +0 -1
  356. package/dist/ui/shimmer-progress.d.ts +0 -11
  357. package/dist/ui/shimmer-progress.d.ts.map +0 -1
  358. package/dist/ui/shimmer-progress.js +0 -90
  359. package/dist/ui/shimmer-progress.js.map +0 -1
  360. package/dist/ui/shimmer-worker.d.ts +0 -2
  361. package/dist/ui/shimmer-worker.d.ts.map +0 -1
  362. package/dist/ui/shimmer-worker.js +0 -118
  363. package/dist/ui/shimmer-worker.js.map +0 -1
  364. package/dist/ui/types.d.ts +0 -17
  365. package/dist/ui/types.d.ts.map +0 -1
  366. package/dist/ui/types.js +0 -3
  367. package/dist/ui/types.js.map +0 -1
  368. package/dist/utils.d.ts +0 -205
  369. package/dist/utils.d.ts.map +0 -1
  370. package/dist/utils.js +0 -549
  371. package/dist/utils.js.map +0 -1
  372. package/scripts/agent-eval/audit.sh +0 -68
  373. package/scripts/agent-eval/itrun.sh +0 -107
  374. package/scripts/agent-eval/parse-run.mjs +0 -45
  375. package/scripts/agent-eval/parse-session.mjs +0 -93
  376. package/scripts/agent-eval/run-agent.sh +0 -34
  377. package/scripts/agent-eval/run-all.sh +0 -67
  378. package/scripts/extract-release-notes.mjs +0 -130
  379. package/scripts/local-install.sh +0 -41
  380. package/scripts/patch-tree-sitter-dart.js +0 -112
  381. package/scripts/release.sh +0 -68
@@ -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