scip-query 0.6.7 → 0.7.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 (219) hide show
  1. package/README.md +3 -1
  2. package/dist/augment-vue-worker.js +1 -1
  3. package/dist/chunk-23YIGCYF.js +25 -0
  4. package/dist/{chunk-KQWFRAQI.js → chunk-2IYEIFPP.js} +6 -6
  5. package/dist/chunk-2JEFS2YJ.js +2 -0
  6. package/dist/chunk-33SSUPCB.js +7 -0
  7. package/dist/chunk-3GNFUVFA.js +2 -0
  8. package/dist/{chunk-ZNNCDAYX.js → chunk-3OUC276S.js} +2 -2
  9. package/dist/{chunk-PQTGBYXV.js → chunk-4STLJYHI.js} +4 -4
  10. package/dist/chunk-563HLCDW.js +35 -0
  11. package/dist/chunk-5TT47UMX.js +44 -0
  12. package/dist/chunk-6H2XIIPY.js +71 -0
  13. package/dist/{chunk-HTJ5BOYP.js → chunk-72JOIFXL.js} +3 -3
  14. package/dist/chunk-7H4RJ4MC.js +2 -0
  15. package/dist/chunk-7O4MJYIW.js +63 -0
  16. package/dist/chunk-7OX2O53H.js +62 -0
  17. package/dist/chunk-A2AVLALL.js +2 -0
  18. package/dist/chunk-AQYBOORI.js +2 -0
  19. package/dist/chunk-ARBZM2NF.js +34 -0
  20. package/dist/{chunk-2CC7RA6B.js → chunk-BI4F6GXI.js} +2 -2
  21. package/dist/chunk-BOVNTAKQ.js +3 -0
  22. package/dist/chunk-CKIO6SVS.js +2 -0
  23. package/dist/chunk-D6Z67MZL.js +2 -0
  24. package/dist/chunk-DFK54IRN.js +2 -0
  25. package/dist/chunk-FD37DBTD.js +2 -0
  26. package/dist/chunk-FOQQDXE7.js +2 -0
  27. package/dist/chunk-GAQGJ52J.js +11 -0
  28. package/dist/chunk-IODTPF5H.js +20 -0
  29. package/dist/chunk-J6Z5YKGQ.js +4 -0
  30. package/dist/chunk-JB4PUN5S.js +40 -0
  31. package/dist/chunk-JTXKS5GK.js +3 -0
  32. package/dist/chunk-KJ3ZJIE5.js +2 -0
  33. package/dist/chunk-KJ6CW6EK.js +2 -0
  34. package/dist/{chunk-2R7OKZE5.js → chunk-KNA6Z7JB.js} +3 -3
  35. package/dist/{chunk-FYO3FPFH.js → chunk-LDV2B7ET.js} +8 -8
  36. package/dist/chunk-LWYIGRHR.js +5 -0
  37. package/dist/chunk-MDAYGS6T.js +2 -0
  38. package/dist/chunk-MX6F756F.js +2 -0
  39. package/dist/chunk-NHDPYW7O.js +2 -0
  40. package/dist/{chunk-TYRPQE6R.js → chunk-NKJKI6SE.js} +2 -2
  41. package/dist/chunk-NN3O7TPH.js +8 -0
  42. package/dist/chunk-NSTZMBAB.js +18 -0
  43. package/dist/chunk-NYEMZHUC.js +6 -0
  44. package/dist/chunk-OHEIZWIA.js +4 -0
  45. package/dist/chunk-PG3ZI5IH.js +2 -0
  46. package/dist/chunk-QAEDNTY7.js +2 -0
  47. package/dist/chunk-QE6MGGUY.js +2 -0
  48. package/dist/chunk-QPRIYXH4.js +2 -0
  49. package/dist/chunk-QWJBIBE6.js +3 -0
  50. package/dist/chunk-RCJEFQOK.js +4 -0
  51. package/dist/chunk-ROOHENEP.js +61 -0
  52. package/dist/{chunk-2YA36CXK.js → chunk-ROZNBWIF.js} +2 -2
  53. package/dist/chunk-TGK5DFBJ.js +2 -0
  54. package/dist/chunk-TKDJQ2WD.js +59 -0
  55. package/dist/chunk-TRNAQABL.js +7 -0
  56. package/dist/chunk-U75WH4XG.js +2 -0
  57. package/dist/chunk-V53J46BX.js +2 -0
  58. package/dist/chunk-V76FCF5F.js +2 -0
  59. package/dist/chunk-VUBQBW7H.js +16 -0
  60. package/dist/chunk-WJQY2LGT.js +2 -0
  61. package/dist/{chunk-ILQSK2KJ.js → chunk-WODJHE6Z.js} +3 -3
  62. package/dist/{chunk-RRWPHKZA.js → chunk-WPLKHAH7.js} +4 -4
  63. package/dist/chunk-XO6R3X5J.js +2 -0
  64. package/dist/chunk-YSZNAG4G.js +2 -0
  65. package/dist/chunk-ZNUPGRPR.js +3 -0
  66. package/dist/{chunk-OCQN6WF4.js → chunk-ZXFTC5ET.js} +4 -4
  67. package/dist/cli.js +361 -505
  68. package/dist/config-types-CGIeLEpY.d.ts +108 -0
  69. package/dist/db-DdTPetj5.d.ts +69 -0
  70. package/dist/health-x7B4Xu_6.d.ts +119 -0
  71. package/dist/index.d.ts +109 -336
  72. package/dist/index.js +3 -131
  73. package/dist/postinstall.js +1 -1
  74. package/dist/queries/affected.d.ts +9 -2
  75. package/dist/queries/affected.js +1 -1
  76. package/dist/queries/bottlenecks.d.ts +14 -2
  77. package/dist/queries/bottlenecks.js +1 -1
  78. package/dist/queries/by-kind.d.ts +12 -2
  79. package/dist/queries/by-kind.js +1 -1
  80. package/dist/queries/call-graph.d.ts +22 -3
  81. package/dist/queries/call-graph.js +1 -1
  82. package/dist/queries/change-surface.d.ts +19 -3
  83. package/dist/queries/change-surface.js +1 -1
  84. package/dist/queries/code.d.ts +12 -2
  85. package/dist/queries/code.js +1 -1
  86. package/dist/queries/complexity-hotspots.d.ts +16 -2
  87. package/dist/queries/complexity-hotspots.js +1 -1
  88. package/dist/queries/complexity.d.ts +22 -3
  89. package/dist/queries/complexity.js +1 -1
  90. package/dist/queries/convergence.d.ts +25 -3
  91. package/dist/queries/convergence.js +1 -1
  92. package/dist/queries/coupling.d.ts +8 -2
  93. package/dist/queries/coupling.js +1 -1
  94. package/dist/queries/cycles.d.ts +16 -2
  95. package/dist/queries/cycles.js +1 -1
  96. package/dist/queries/dataflow.d.ts +35 -3
  97. package/dist/queries/dataflow.js +1 -1
  98. package/dist/queries/dead.d.ts +34 -2
  99. package/dist/queries/dead.js +1 -1
  100. package/dist/queries/deep-chains.d.ts +8 -2
  101. package/dist/queries/deep-chains.js +1 -1
  102. package/dist/queries/deps.d.ts +6 -2
  103. package/dist/queries/deps.js +1 -1
  104. package/dist/queries/diff-impact.d.ts +22 -2
  105. package/dist/queries/diff-impact.js +1 -1
  106. package/dist/queries/drift.d.ts +19 -2
  107. package/dist/queries/drift.js +1 -1
  108. package/dist/queries/extract-candidates.d.ts +20 -2
  109. package/dist/queries/extract-candidates.js +1 -1
  110. package/dist/queries/fan.d.ts +7 -2
  111. package/dist/queries/fan.js +1 -1
  112. package/dist/queries/files.d.ts +6 -2
  113. package/dist/queries/files.js +1 -1
  114. package/dist/queries/health.d.ts +4 -81
  115. package/dist/queries/health.js +1 -1
  116. package/dist/queries/hierarchy.d.ts +8 -2
  117. package/dist/queries/hierarchy.js +1 -1
  118. package/dist/queries/hotspots.d.ts +10 -2
  119. package/dist/queries/hotspots.js +1 -1
  120. package/dist/queries/imports.d.ts +19 -4
  121. package/dist/queries/imports.js +1 -1
  122. package/dist/queries/index.d.ts +45 -44
  123. package/dist/queries/index.js +1 -1
  124. package/dist/queries/isolated.d.ts +13 -2
  125. package/dist/queries/isolated.js +1 -1
  126. package/dist/queries/members.d.ts +10 -2
  127. package/dist/queries/members.js +1 -1
  128. package/dist/queries/methods.d.ts +8 -2
  129. package/dist/queries/methods.js +1 -1
  130. package/dist/queries/outline.d.ts +10 -2
  131. package/dist/queries/outline.js +1 -1
  132. package/dist/queries/passthrough-candidates.d.ts +15 -2
  133. package/dist/queries/passthrough-candidates.js +1 -1
  134. package/dist/queries/redundant-reexports.d.ts +13 -2
  135. package/dist/queries/redundant-reexports.js +1 -1
  136. package/dist/queries/refs.d.ts +10 -3
  137. package/dist/queries/refs.js +1 -1
  138. package/dist/queries/similar-chains.d.ts +21 -2
  139. package/dist/queries/similar-chains.js +1 -1
  140. package/dist/queries/similar-files.d.ts +12 -2
  141. package/dist/queries/similar-files.js +1 -1
  142. package/dist/queries/similar-signatures.d.ts +18 -2
  143. package/dist/queries/similar-signatures.js +1 -1
  144. package/dist/queries/similar.d.ts +24 -2
  145. package/dist/queries/similar.js +1 -1
  146. package/dist/queries/slice.d.ts +17 -2
  147. package/dist/queries/slice.js +1 -1
  148. package/dist/queries/stale-abstractions.d.ts +37 -3
  149. package/dist/queries/stale-abstractions.js +1 -1
  150. package/dist/queries/stats.d.ts +11 -2
  151. package/dist/queries/stats.js +1 -1
  152. package/dist/queries/surface.d.ts +8 -2
  153. package/dist/queries/surface.js +1 -1
  154. package/dist/queries/symbols.d.ts +10 -2
  155. package/dist/queries/symbols.js +1 -1
  156. package/dist/queries/system.d.ts +10 -2
  157. package/dist/queries/system.js +1 -1
  158. package/dist/queries/trace.d.ts +21 -3
  159. package/dist/queries/trace.js +1 -1
  160. package/dist/queries/wrapper-candidates.d.ts +15 -2
  161. package/dist/queries/wrapper-candidates.js +1 -1
  162. package/dist/reindex-worker.js +10 -10
  163. package/dist/reindex.d.ts +153 -0
  164. package/dist/reindex.js +69 -0
  165. package/dist/runtime.d.ts +108 -0
  166. package/dist/runtime.js +3 -0
  167. package/dist/scip-cli-a-xOztiK.d.ts +20 -0
  168. package/package.json +184 -4
  169. package/dist/chunk-2AUZ3PLO.js +0 -2
  170. package/dist/chunk-3A2M7AF3.js +0 -4
  171. package/dist/chunk-3EJRPTTB.js +0 -2
  172. package/dist/chunk-3SWWYJPB.js +0 -6
  173. package/dist/chunk-4M4FEWBL.js +0 -7
  174. package/dist/chunk-4Y6KUJDO.js +0 -39
  175. package/dist/chunk-55ZJ2FCW.js +0 -6
  176. package/dist/chunk-6FLGPRBR.js +0 -5
  177. package/dist/chunk-6XRB6ATD.js +0 -16
  178. package/dist/chunk-7EQ4J66C.js +0 -2
  179. package/dist/chunk-7TGEXAN5.js +0 -25
  180. package/dist/chunk-ABLXPGAZ.js +0 -2
  181. package/dist/chunk-BG7YU4DJ.js +0 -2
  182. package/dist/chunk-D2R6IIEO.js +0 -2
  183. package/dist/chunk-E47WMJ5F.js +0 -2
  184. package/dist/chunk-EEA3R37V.js +0 -11
  185. package/dist/chunk-FAN2CVZT.js +0 -2
  186. package/dist/chunk-FVH3Y44U.js +0 -1
  187. package/dist/chunk-G47V5V3U.js +0 -90
  188. package/dist/chunk-GS55K4WJ.js +0 -85
  189. package/dist/chunk-H4DXD2FB.js +0 -5
  190. package/dist/chunk-HADDFTMU.js +0 -2
  191. package/dist/chunk-IARIBTCL.js +0 -2
  192. package/dist/chunk-IBWYWAWE.js +0 -70
  193. package/dist/chunk-JVMXNDRU.js +0 -2
  194. package/dist/chunk-K345WFTU.js +0 -2
  195. package/dist/chunk-K6ULLR7M.js +0 -19
  196. package/dist/chunk-KAM4C6ZD.js +0 -4
  197. package/dist/chunk-KCC3GMCX.js +0 -2
  198. package/dist/chunk-KRVRD6KZ.js +0 -5
  199. package/dist/chunk-KYGNCIJ6.js +0 -84
  200. package/dist/chunk-LHLXHH43.js +0 -2
  201. package/dist/chunk-LJ2YWNQF.js +0 -2
  202. package/dist/chunk-M7GBLQG4.js +0 -7
  203. package/dist/chunk-MEVK6R7N.js +0 -2
  204. package/dist/chunk-QRYEOK3M.js +0 -2
  205. package/dist/chunk-QYWGC7JV.js +0 -114
  206. package/dist/chunk-R373SHXM.js +0 -2
  207. package/dist/chunk-RUAJV3TN.js +0 -2
  208. package/dist/chunk-S57GUI2T.js +0 -7
  209. package/dist/chunk-SVUVC5VS.js +0 -2
  210. package/dist/chunk-T426XELO.js +0 -12
  211. package/dist/chunk-TBJDUS4E.js +0 -71
  212. package/dist/chunk-TX7BHRMT.js +0 -2
  213. package/dist/chunk-WPY46NIL.js +0 -5
  214. package/dist/chunk-X3Z4KZNX.js +0 -2
  215. package/dist/db-DdlToIC-.d.ts +0 -835
  216. package/dist/queries/drift-policy.d.ts +0 -6
  217. package/dist/queries/drift-policy.js +0 -2
  218. package/dist/queries/health-cache-control.d.ts +0 -15
  219. package/dist/queries/health-cache-control.js +0 -2
@@ -0,0 +1,108 @@
1
+ import { P as ProjectConfig, a as SupportedLanguage } from './config-types-CGIeLEpY.js';
2
+ export { g as getScipVersion, i as isScipInstalled, p as printScipInstallInstructions } from './scip-cli-a-xOztiK.js';
3
+
4
+ type WatcherStatus = {
5
+ state: 'idle';
6
+ } | {
7
+ state: 'waiting';
8
+ changedFiles: number;
9
+ reindexAt: number;
10
+ } | {
11
+ state: 'indexing';
12
+ startedAt: number;
13
+ } | {
14
+ state: 'cooldown';
15
+ until: number;
16
+ dirty: boolean;
17
+ };
18
+
19
+ /**
20
+ * Load project config from .scipquery.json in the project root.
21
+ * Returns defaults for anything not specified.
22
+ */
23
+ declare function loadProjectConfig(projectRoot: string): ProjectConfig;
24
+ /**
25
+ * Resolve all paths for a project's index files.
26
+ */
27
+ declare function resolveIndexPaths(projectRoot: string, config?: ProjectConfig): {
28
+ cacheDir: string;
29
+ dbPath: string;
30
+ indexPath: string;
31
+ metaPath: string;
32
+ };
33
+ /**
34
+ * Scaffold a default .scipquery.json in the project root.
35
+ * Does not overwrite an existing config.
36
+ */
37
+ declare function initProjectConfig(projectRoot: string, languages: string[]): string;
38
+
39
+ interface WatcherOptions {
40
+ projectRoot: string;
41
+ config: ProjectConfig;
42
+ languages?: SupportedLanguage[];
43
+ onStatus?: (status: WatcherStatus) => void;
44
+ onReindexComplete?: (durationMs: number) => void;
45
+ onError?: (error: Error) => void;
46
+ }
47
+ /**
48
+ * File watcher that triggers single-flight background reindexing.
49
+ *
50
+ * Design:
51
+ * - Debounce: waits 30s (configurable) after the last file change
52
+ * - Single-flight: only one reindex runs at a time, never queued
53
+ * - Dirty flag: changes during reindex schedule ONE follow-up
54
+ * - Cooldown: minimum interval between reindex completions
55
+ * - Atomic swap: writes to index.db.tmp, renames on success
56
+ */
57
+ declare class Watcher {
58
+ private projectRoot;
59
+ private watchConfig;
60
+ private indexPaths;
61
+ private languages?;
62
+ private pnpmWorkspaces;
63
+ private onStatus;
64
+ private onReindexComplete;
65
+ private onError;
66
+ private status;
67
+ private debounceTimer;
68
+ private cooldownTimer;
69
+ private dirty;
70
+ private changedFiles;
71
+ private reindexInFlight;
72
+ private lastReindexEnd;
73
+ private fsWatchers;
74
+ private gitignoreFilter;
75
+ private extraIgnore;
76
+ private stopped;
77
+ constructor(opts: WatcherOptions);
78
+ /** Start watching for file changes */
79
+ start(): void;
80
+ /** Stop watching and clean up */
81
+ stop(): void;
82
+ private handleFileChange;
83
+ private triggerReindex;
84
+ /**
85
+ * Run the reindex in a forked child process.
86
+ * Writes to index.db.tmp, then atomically renames to index.db.
87
+ */
88
+ private runReindex;
89
+ private setStatus;
90
+ private clearDebounceTimer;
91
+ private clearCooldownTimer;
92
+ }
93
+
94
+ interface InstallSkillsResult {
95
+ installed: string[];
96
+ skipped: string[];
97
+ alreadyLinked: string[];
98
+ }
99
+ /**
100
+ * Install scip-query skills into both Claude Code (~/.claude/skills/)
101
+ * and Codex (~/.codex/skills/). Uses symlinks (junctions on Windows)
102
+ * so skills auto-update when the package updates.
103
+ */
104
+ declare function installSkills(opts?: {
105
+ quiet?: boolean;
106
+ }): InstallSkillsResult;
107
+
108
+ export { Watcher, type WatcherOptions, initProjectConfig, installSkills, loadProjectConfig, resolveIndexPaths };
@@ -0,0 +1,3 @@
1
+ import{b as j,c as b,d as W}from"./chunk-LWYIGRHR.js";import{a as y}from"./chunk-TKDJQ2WD.js";import{readFileSync as _,writeFileSync as D,existsSync as C,mkdirSync as F}from"fs";import{join as l,resolve as w}from"path";import{createHash as L}from"crypto";import{homedir as $}from"os";var v=".scipquery.json",A={enabled:!1,debounceMs:3e4,cooldownMs:6e4,ignore:[]};function N(i){let t=l(i,v);if(!C(t))return{};try{let e=_(t,"utf-8");return JSON.parse(e)}catch{return{}}}function P(i){return{...A,...i.watch}}function O(i,t){let e=process.env.SCIP_QUERY_CACHE_DIR;if(e)return g(e);if(t?.dbPath)return g(w(i,t.dbPath));let o=process.env.XDG_CACHE_HOME||l($(),".cache"),n=L("sha256").update(w(i)).digest("hex").slice(0,12),r=l(o,"scip-query","projects",n);return g(r)}function f(i,t){let e=O(i,t);return{cacheDir:e,dbPath:l(e,"index.db"),indexPath:l(e,"index.scip"),metaPath:l(e,"meta.json")}}function M(i,t){let e=l(i,v);return C(e)||D(e,JSON.stringify({languages:t,watch:{enabled:!1,debounceMs:3e4,cooldownMs:6e4}},null,2)+`
2
+ `),e}function g(i){return F(i,{recursive:!0}),i}import{watch as q}from"fs";import{existsSync as R,renameSync as I}from"fs";import{join as U,relative as H}from"path";import{fork as G}from"child_process";import X from"ignore";var m=class{projectRoot;watchConfig;indexPaths;languages;pnpmWorkspaces;onStatus;onReindexComplete;onError;status={state:"idle"};debounceTimer=null;cooldownTimer=null;dirty=!1;changedFiles=0;reindexInFlight=!1;lastReindexEnd=0;fsWatchers=[];gitignoreFilter;extraIgnore;stopped=!1;constructor(t){this.projectRoot=t.projectRoot,this.watchConfig=P(t.config),this.indexPaths=f(t.projectRoot,t.config),this.languages=t.languages,this.pnpmWorkspaces=t.config.indexer?.typescript?.pnpmWorkspaces??!1,this.onStatus=t.onStatus??(()=>{}),this.onReindexComplete=t.onReindexComplete??(()=>{}),this.onError=t.onError??(e=>console.error(e.message)),this.gitignoreFilter=y(t.projectRoot),this.extraIgnore=X(),this.watchConfig.ignore.length>0&&this.extraIgnore.add(this.watchConfig.ignore)}start(){this.stopped=!1,this.setStatus({state:"idle"});try{let t=q(this.projectRoot,{recursive:!0},(e,s)=>{s&&!this.stopped&&this.handleFileChange(s)});this.fsWatchers.push(t)}catch{this.onError(new Error("Failed to start file watcher. On Linux, you may need to increase inotify limits: sysctl -w fs.inotify.max_user_watches=524288"))}}stop(){this.stopped=!0;for(let t of this.fsWatchers)t.close();this.fsWatchers=[],this.clearDebounceTimer(),this.clearCooldownTimer(),this.setStatus({state:"idle"})}handleFileChange(t){let e=H(this.projectRoot,U(this.projectRoot,t));if(this.gitignoreFilter.isIgnored(e)||this.extraIgnore.ignores(e)||t.endsWith("index.db")||t.endsWith("index.scip")||t.endsWith("index.db.tmp")||t.endsWith(".scipquery.json"))return;if(this.changedFiles++,this.reindexInFlight){this.dirty=!0,this.setStatus({state:"indexing",startedAt:this.status.startedAt});return}if(this.status.state==="cooldown"){this.dirty=!0,this.setStatus({state:"cooldown",until:this.status.until,dirty:!0});return}this.clearDebounceTimer();let s=Date.now()+this.watchConfig.debounceMs;this.setStatus({state:"waiting",changedFiles:this.changedFiles,reindexAt:s}),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.triggerReindex()},this.watchConfig.debounceMs)}triggerReindex(){if(this.reindexInFlight||this.stopped)return;let t=Date.now()-this.lastReindexEnd;if(this.lastReindexEnd>0&&t<this.watchConfig.cooldownMs){let s=this.watchConfig.cooldownMs-t;this.dirty=!0;let o=Date.now()+s;this.setStatus({state:"cooldown",until:o,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped&&(this.dirty=!1,this.triggerReindex())},s);return}this.reindexInFlight=!0,this.dirty=!1,this.changedFiles=0;let e=Date.now();this.setStatus({state:"indexing",startedAt:e}),this.runReindex().then(s=>{if(this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onReindexComplete(s),this.dirty&&!this.stopped){let o=Date.now()+this.watchConfig.cooldownMs;this.setStatus({state:"cooldown",until:o,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped?(this.dirty=!1,this.triggerReindex()):this.setStatus({state:"idle"})},this.watchConfig.cooldownMs)}else this.setStatus({state:"idle"})}).catch(s=>{this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onError(s instanceof Error?s:new Error(String(s))),this.setStatus({state:"idle"})})}runReindex(){return new Promise((t,e)=>{let s=Date.now(),o=this.indexPaths.dbPath+".tmp",n=B(this.indexPaths.indexPath),r=G(new URL("./reindex-worker.js",import.meta.url).pathname,[],{env:{...process.env,SCIP_REINDEX_PROJECT_ROOT:this.projectRoot,SCIP_REINDEX_OUTPUT_SCIP:n,SCIP_REINDEX_OUTPUT_DB:o,SCIP_REINDEX_LANGUAGES:this.languages?.join(",")??"",SCIP_REINDEX_PNPM_WORKSPACES:this.pnpmWorkspaces?"1":""},stdio:"pipe"});r.on("exit",d=>{if(d===0)try{R(o)&&I(o,this.indexPaths.dbPath),R(n)&&I(n,this.indexPaths.indexPath),t(Date.now()-s)}catch(a){e(new Error(`Atomic swap failed: ${a}`))}else e(new Error(`Reindex worker exited with code ${d}`))}),r.on("error",e)})}setStatus(t){this.status=t,this.onStatus(t)}clearDebounceTimer(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=null)}clearCooldownTimer(){this.cooldownTimer&&(clearTimeout(this.cooldownTimer),this.cooldownTimer=null)}};function B(i){return i.endsWith(".scip")?i.slice(0,-5)+".tmp.scip":i+".tmp.scip"}import{existsSync as x,mkdirSync as J,symlinkSync as V,readlinkSync as K,unlinkSync as Q}from"fs";import{join as p,dirname as T,resolve as S}from"path";import{homedir as k,platform as Y}from"os";import{fileURLToPath as z}from"url";var Z=Y()==="win32",tt=["concrete-plan","scip-explore","scip-debloat","scip-verify","scip-language-playbook"];function et(i={}){let t=i.quiet?()=>{}:console.log,e=z(import.meta.url),s=S(T(e),"..","skills"),o=[p(k(),".claude","skills"),p(k(),".codex","skills")],n={installed:[],skipped:[],alreadyLinked:[]};for(let r of o){let d=T(r);if(!x(d))continue;J(r,{recursive:!0});let a=r.includes(".codex")?"Codex":"Claude";for(let c of tt){let u=p(s,c),h=p(r,c);if(!x(u)){n.skipped.push(`${a}/${c}`);continue}if(x(h)){try{let E=K(h);if(S(E)===S(u)){n.alreadyLinked.push(`${a}/${c}`),t(` ok: ${c} \u2192 ${a} (already linked)`);continue}}catch{n.skipped.push(`${a}/${c}`),t(` skip: ${c} \u2192 ${a} (exists, not a symlink)`);continue}Q(h)}V(u,h,Z?"junction":"dir"),n.installed.push(`${a}/${c}`),t(` done: ${c} \u2192 ${a}`)}}return n}export{m as Watcher,b as getScipVersion,M as initProjectConfig,et as installSkills,j as isScipInstalled,N as loadProjectConfig,W as printScipInstallInstructions,f as resolveIndexPaths};
3
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Check if the `scip` CLI binary is available on PATH.
3
+ */
4
+ declare function isScipInstalled(): boolean;
5
+ /**
6
+ * Get the scip CLI version if installed.
7
+ */
8
+ declare function getScipVersion(): string | null;
9
+ /**
10
+ * Print instructions for installing the scip CLI binary.
11
+ */
12
+ declare function printScipInstallInstructions(): void;
13
+ /**
14
+ * Attempt to auto-install the `scip` CLI binary.
15
+ * Tries brew (macOS), then go install, then prints manual instructions.
16
+ * Returns true if installation succeeded.
17
+ */
18
+ declare function tryInstallScipCli(onStatus: (msg: string) => void): boolean;
19
+
20
+ export { getScipVersion as g, isScipInstalled as i, printScipInstallInstructions as p, tryInstallScipCli as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scip-query",
3
- "version": "0.6.7",
3
+ "version": "0.7.0",
4
4
  "description": "Language-agnostic code intelligence CLI powered by SCIP indexes",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,9 +23,189 @@
23
23
  "import": "./dist/queries/index.js",
24
24
  "types": "./dist/queries/index.d.ts"
25
25
  },
26
- "./queries/*": {
27
- "import": "./dist/queries/*.js",
28
- "types": "./dist/queries/*.d.ts"
26
+ "./queries/affected": {
27
+ "import": "./dist/queries/affected.js",
28
+ "types": "./dist/queries/affected.d.ts"
29
+ },
30
+ "./queries/bottlenecks": {
31
+ "import": "./dist/queries/bottlenecks.js",
32
+ "types": "./dist/queries/bottlenecks.d.ts"
33
+ },
34
+ "./queries/by-kind": {
35
+ "import": "./dist/queries/by-kind.js",
36
+ "types": "./dist/queries/by-kind.d.ts"
37
+ },
38
+ "./queries/call-graph": {
39
+ "import": "./dist/queries/call-graph.js",
40
+ "types": "./dist/queries/call-graph.d.ts"
41
+ },
42
+ "./queries/change-surface": {
43
+ "import": "./dist/queries/change-surface.js",
44
+ "types": "./dist/queries/change-surface.d.ts"
45
+ },
46
+ "./queries/code": {
47
+ "import": "./dist/queries/code.js",
48
+ "types": "./dist/queries/code.d.ts"
49
+ },
50
+ "./queries/complexity": {
51
+ "import": "./dist/queries/complexity.js",
52
+ "types": "./dist/queries/complexity.d.ts"
53
+ },
54
+ "./queries/complexity-hotspots": {
55
+ "import": "./dist/queries/complexity-hotspots.js",
56
+ "types": "./dist/queries/complexity-hotspots.d.ts"
57
+ },
58
+ "./queries/convergence": {
59
+ "import": "./dist/queries/convergence.js",
60
+ "types": "./dist/queries/convergence.d.ts"
61
+ },
62
+ "./queries/coupling": {
63
+ "import": "./dist/queries/coupling.js",
64
+ "types": "./dist/queries/coupling.d.ts"
65
+ },
66
+ "./queries/cycles": {
67
+ "import": "./dist/queries/cycles.js",
68
+ "types": "./dist/queries/cycles.d.ts"
69
+ },
70
+ "./queries/dataflow": {
71
+ "import": "./dist/queries/dataflow.js",
72
+ "types": "./dist/queries/dataflow.d.ts"
73
+ },
74
+ "./queries/dead": {
75
+ "import": "./dist/queries/dead.js",
76
+ "types": "./dist/queries/dead.d.ts"
77
+ },
78
+ "./queries/deep-chains": {
79
+ "import": "./dist/queries/deep-chains.js",
80
+ "types": "./dist/queries/deep-chains.d.ts"
81
+ },
82
+ "./queries/deps": {
83
+ "import": "./dist/queries/deps.js",
84
+ "types": "./dist/queries/deps.d.ts"
85
+ },
86
+ "./queries/diff-impact": {
87
+ "import": "./dist/queries/diff-impact.js",
88
+ "types": "./dist/queries/diff-impact.d.ts"
89
+ },
90
+ "./queries/drift": {
91
+ "import": "./dist/queries/drift.js",
92
+ "types": "./dist/queries/drift.d.ts"
93
+ },
94
+ "./queries/extract-candidates": {
95
+ "import": "./dist/queries/extract-candidates.js",
96
+ "types": "./dist/queries/extract-candidates.d.ts"
97
+ },
98
+ "./queries/fan": {
99
+ "import": "./dist/queries/fan.js",
100
+ "types": "./dist/queries/fan.d.ts"
101
+ },
102
+ "./queries/files": {
103
+ "import": "./dist/queries/files.js",
104
+ "types": "./dist/queries/files.d.ts"
105
+ },
106
+ "./queries/health": {
107
+ "import": "./dist/queries/health.js",
108
+ "types": "./dist/queries/health.d.ts"
109
+ },
110
+ "./queries/hierarchy": {
111
+ "import": "./dist/queries/hierarchy.js",
112
+ "types": "./dist/queries/hierarchy.d.ts"
113
+ },
114
+ "./queries/hotspots": {
115
+ "import": "./dist/queries/hotspots.js",
116
+ "types": "./dist/queries/hotspots.d.ts"
117
+ },
118
+ "./queries/imports": {
119
+ "import": "./dist/queries/imports.js",
120
+ "types": "./dist/queries/imports.d.ts"
121
+ },
122
+ "./queries/index": {
123
+ "import": "./dist/queries/index.js",
124
+ "types": "./dist/queries/index.d.ts"
125
+ },
126
+ "./queries/isolated": {
127
+ "import": "./dist/queries/isolated.js",
128
+ "types": "./dist/queries/isolated.d.ts"
129
+ },
130
+ "./queries/members": {
131
+ "import": "./dist/queries/members.js",
132
+ "types": "./dist/queries/members.d.ts"
133
+ },
134
+ "./queries/methods": {
135
+ "import": "./dist/queries/methods.js",
136
+ "types": "./dist/queries/methods.d.ts"
137
+ },
138
+ "./queries/outline": {
139
+ "import": "./dist/queries/outline.js",
140
+ "types": "./dist/queries/outline.d.ts"
141
+ },
142
+ "./queries/passthrough-candidates": {
143
+ "import": "./dist/queries/passthrough-candidates.js",
144
+ "types": "./dist/queries/passthrough-candidates.d.ts"
145
+ },
146
+ "./queries/redundant-reexports": {
147
+ "import": "./dist/queries/redundant-reexports.js",
148
+ "types": "./dist/queries/redundant-reexports.d.ts"
149
+ },
150
+ "./queries/refs": {
151
+ "import": "./dist/queries/refs.js",
152
+ "types": "./dist/queries/refs.d.ts"
153
+ },
154
+ "./queries/similar": {
155
+ "import": "./dist/queries/similar.js",
156
+ "types": "./dist/queries/similar.d.ts"
157
+ },
158
+ "./queries/similar-chains": {
159
+ "import": "./dist/queries/similar-chains.js",
160
+ "types": "./dist/queries/similar-chains.d.ts"
161
+ },
162
+ "./queries/similar-files": {
163
+ "import": "./dist/queries/similar-files.js",
164
+ "types": "./dist/queries/similar-files.d.ts"
165
+ },
166
+ "./queries/similar-signatures": {
167
+ "import": "./dist/queries/similar-signatures.js",
168
+ "types": "./dist/queries/similar-signatures.d.ts"
169
+ },
170
+ "./queries/slice": {
171
+ "import": "./dist/queries/slice.js",
172
+ "types": "./dist/queries/slice.d.ts"
173
+ },
174
+ "./queries/stale-abstractions": {
175
+ "import": "./dist/queries/stale-abstractions.js",
176
+ "types": "./dist/queries/stale-abstractions.d.ts"
177
+ },
178
+ "./queries/stats": {
179
+ "import": "./dist/queries/stats.js",
180
+ "types": "./dist/queries/stats.d.ts"
181
+ },
182
+ "./queries/surface": {
183
+ "import": "./dist/queries/surface.js",
184
+ "types": "./dist/queries/surface.d.ts"
185
+ },
186
+ "./queries/symbols": {
187
+ "import": "./dist/queries/symbols.js",
188
+ "types": "./dist/queries/symbols.d.ts"
189
+ },
190
+ "./queries/system": {
191
+ "import": "./dist/queries/system.js",
192
+ "types": "./dist/queries/system.d.ts"
193
+ },
194
+ "./queries/trace": {
195
+ "import": "./dist/queries/trace.js",
196
+ "types": "./dist/queries/trace.d.ts"
197
+ },
198
+ "./queries/wrapper-candidates": {
199
+ "import": "./dist/queries/wrapper-candidates.js",
200
+ "types": "./dist/queries/wrapper-candidates.d.ts"
201
+ },
202
+ "./reindex": {
203
+ "import": "./dist/reindex.js",
204
+ "types": "./dist/reindex.d.ts"
205
+ },
206
+ "./runtime": {
207
+ "import": "./dist/runtime.js",
208
+ "types": "./dist/runtime.d.ts"
29
209
  }
30
210
  },
31
211
  "scripts": {
@@ -1,2 +0,0 @@
1
- import{g as c,h as n}from"./chunk-GS55K4WJ.js";import{c as o,h as m}from"./chunk-6FLGPRBR.js";import{n as r}from"./chunk-G47V5V3U.js";import{e as t,i}from"./chunk-KYGNCIJ6.js";import{getHeapStatistics as s}from"v8";var p=64*1024*1024;function P(e,a={}){n(e),a.semanticProvider===!0&&r(e),c(e),m(e),o(e),i(e),t(e)}function _(){let e=globalThis.gc;if(!e)return;let a=s();a.heap_size_limit-a.used_heap_size<p||e()}export{P as a,_ as b};
2
- //# sourceMappingURL=chunk-2AUZ3PLO.js.map
@@ -1,4 +0,0 @@
1
- import{c as S}from"./chunk-7EQ4J66C.js";import{l as d}from"./chunk-GS55K4WJ.js";import{a as f}from"./chunk-QYWGC7JV.js";import{A as m,B as g,d as a,q as s,u}from"./chunk-KYGNCIJ6.js";function _(n,o){let e=f(n,o);if(!e)return{definitions:[],referencedBy:[]};let i=n.get("SELECT display_name, documentation FROM global_symbols WHERE id = ?",e.symbolId),t=g(i?.documentation??null),c=n.isIgnored(e.relativePath)?[]:[{relativePath:e.relativePath,startLine:e.startLine,endLine:e.endLine,signature:b(t,i?.display_name??null,e.symbol),source:y(n,e.relativePath,e.startLine,e.endLine)}],l=S(n,e),p=(l.length>0?l:d(n,e)).filter(r=>!n.isIgnored(r.file)).map(r=>({relativePath:r.file,line:r.line,enclosingSymbol:r.enclosingSymbol,enclosingShort:r.enclosingSymbol?s(r.enclosingSymbol):"(top-level)"}));return{definitions:c,referencedBy:p}}function y(n,o,e,i){let t=a(n,o);if(!t)return null;let l=t.split(`
2
- `).slice(e,i+1).join(`
3
- `).trimEnd();return l.length>0?l:null}function b(n,o,e){let i=m(n);if(i&&!h(i))return i;let t=(o??"").trim();return t?u(e)&&!t.endsWith("()")?`${t}()`:t:s(e)}function h(n){return n.startsWith("undefined")||n.includes("|")||n.includes("```")}export{_ as a};
4
- //# sourceMappingURL=chunk-3A2M7AF3.js.map
@@ -1,2 +0,0 @@
1
- import{b as e}from"./chunk-55ZJ2FCW.js";import{F as o}from"./chunk-KYGNCIJ6.js";function l(t,r){let s=e(t,r);return o(t,s).map(({relativePath:m,...a})=>a)}export{l as a};
2
- //# sourceMappingURL=chunk-3EJRPTTB.js.map
@@ -1,6 +0,0 @@
1
- import{a as F,b as y,d as A,e as $}from"./chunk-RKTDEIHF.js";import{a as k}from"./chunk-SVUVC5VS.js";import{j as T}from"./chunk-GS55K4WJ.js";import{a as R}from"./chunk-QYWGC7JV.js";import{d as M,q as p,r as q,u as x,x as B}from"./chunk-KYGNCIJ6.js";function se(e,i,t={}){let{minSimilarity:r=.4,limit:l=20}=t,s=Z(e,i);if(!s)return[];if(!x(s.symbol))return[];let n=O(e,s,r);return n.length>0?n.slice(0,l):K(e,i,{minSimilarity:r,limit:l})}function O(e,i,t){let r=E(e,{minCallees:3,excludeSymbol:i.symbol}),l=A([i,...r].map(n=>n.callees)),s=[];for(let n of r){if(n.callees.size<3)continue;let o=v(i,n,l,{minSimilarity:t,requireSignificantShared:1,requireSharedCount:0});o&&s.push(o)}return s.sort((n,o)=>o.similarity-n.similarity),s}function v(e,i,t,r){let{similarity:l,significantShared:s}=$(e.callees,i.callees,t);if(l<r.minSimilarity)return null;let n=F(e.callees,i.callees).size;if(s.length<r.requireSignificantShared&&n<r.requireSharedCount)return null;let o=s.length>0?s:[...F(e.callees,i.callees)];return{symbolA:e.symbol,shortNameA:p(e.symbol),fileA:e.file,symbolB:i.symbol,shortNameB:p(i.symbol),fileB:i.file,similarity:l,similarityBasis:"callees",sharedCallees:o.map(p),uniqueToA:[...y(e.callees,i.callees)].map(p),uniqueToB:[...y(i.callees,e.callees)].map(p)}}function le(e,i={}){let{minSimilarity:t=.5,limit:r=20,scope:l,minCallees:s=4,crossFileOnly:n=!1,scanLimit:o}=i,a=E(e,{minCallees:s,scope:l,scanLimit:o}),c=A(a.map(m=>m.callees)),u=new Map;for(let m of a)for(let f of m.callees)u.set(f,(u.get(f)??0)+1);let h=Math.max(8,Math.ceil(Math.sqrt(a.length))),w=new Map;for(let m=0;m<a.length;m+=1)for(let f of a[m].callees){if((u.get(f)??0)>h)continue;let g=w.get(f);g||(g=[],w.set(f,g)),g.push(m)}let C=[],z=new Set;e:for(let m=0;m<a.length;m+=1){let f=a[m],g=new Set;for(let D of f.callees){let S=w.get(D);if(S)for(let b of S)b>m&&g.add(b)}for(let D of g){let S=`${m}|${D}`;if(z.has(S))continue;z.add(S);let b=a[D];if(n&&f.file===b.file)continue;if(f.paramCount>=0&&b.paramCount>=0){let j=Math.abs(f.paramCount-b.paramCount),_=Math.max(2,Math.ceil(Math.max(f.paramCount,b.paramCount)*.5));if(j>_)continue}let P=v(f,b,c,{minSimilarity:t,requireSignificantShared:2,requireSharedCount:4});if(P&&(C.push(P),C.length>r*5))break e}}return C.sort((m,f)=>f.similarity-m.similarity),C.slice(0,r)}var V=["ScipDatabase#all","ScipDatabase#get","ScipDatabase#prepare","ScipDatabase#pathExclusionsFor","ScipDatabase#isIgnored","ScipDatabase#symbolNoiseFor","PerDbValue#get","PerDbValue#has",":storage:db:ScipDatabase:all",":storage:db:ScipDatabase:get",":storage:db:ScipDatabase:prepare",":storage:db:ScipDatabase:pathExclusionsFor",":storage:db:ScipDatabase:isIgnored",":storage:db:ScipDatabase:symbolNoiseFor",":storage:per-db-cache:PerDbValue:get",":storage:per-db-cache:PerDbValue:has"];function Z(e,i){let t=R(e,i),r=new k(e);if(!t)return null;let l=T(e,t);return{symbol:t.symbol,file:t.relativePath,callees:I(l.map(s=>s.symbol)),paramCount:r.callableSignature(t)?.paramCount??-1}}function E(e,i){let{minCallees:t,scope:r,excludeSymbol:l,scanLimit:s}=i,n=new k(e),o=U(n.productionCallableDefinitions({scope:r,minLoc:5,excludeSymbol:l,sortByLocDesc:typeof s=="number"&&s>0}),s),a=n.calleeMap(o);return o.map(c=>({symbol:c.symbol,file:c.relativePath,callees:I((a.get(c.symbolId)??[]).map(u=>u.symbol)),paramCount:n.callableSignature(c)?.paramCount??-1})).filter(c=>c.callees.size>=t)}function U(e,i){return typeof i!="number"||i<=0||e.length<=i?e:e.slice(0,i)}function I(e){return new Set([...e].filter(i=>!W(i)))}function W(e){return V.some(i=>e.includes(i))}function K(e,i,t){let r=G(e,i);if(!r||r.tokens.size<3)return[];let l=t.minSimilarity>=.5?t.minSimilarity:.3,s=[];for(let n of J(e)){if(n.symbol===r.symbol||n.tokens.size<3)continue;let o=F(r.tokens,n.tokens);if(o.size<2)continue;let a=new Set([...r.tokens,...n.tokens]),c=a.size>0?o.size/a.size:0;c<l||s.push({symbolA:r.symbol,shortNameA:p(r.symbol),fileA:r.file,symbolB:n.symbol,shortNameB:p(n.symbol),fileB:n.file,similarity:c,similarityBasis:"source-tokens",sharedCallees:[...o].sort(),uniqueToA:[...y(r.tokens,n.tokens)].sort(),uniqueToB:[...y(n.tokens,r.tokens)].sort()})}return s.sort((n,o)=>o.similarity-n.similarity||n.shortNameB.localeCompare(o.shortNameB)),s.slice(0,t.limit)}function G(e,i){let t=R(e,i);if(!t||!x(t.symbol))return null;let r=H(e,t);return r?{symbol:t.symbol,file:t.relativePath,tokens:r}:null}function H(e,i){let t=q(i.symbol),r=L(e,i.relativePath,i.startLine,i.endLine,t),l=N(r,t);return l.size>0?l:null}function J(e){let i=new k(e);return i.scopedDefinitions().filter(t=>t.isFunctionLike).filter(t=>i.fileKind(t.relativePath)!=="test").filter(t=>!B(t.symbol)).map(t=>({symbol:t.symbol,file:t.relativePath,tokens:N(L(e,t.relativePath,t.startLine,t.endLine,t.leaf),t.leaf)})).filter(t=>t.tokens.size>0)}function L(e,i,t,r,l){let s=M(e,i);if(!s)return"";let n=s.split(`
2
- `);if(r>=t&&r-t<=12)return n.slice(t,r+1).join(`
3
- `);let o=[new RegExp(`\\bdef\\s+${d(l)}\\b`),new RegExp(`\\bfun\\s+${d(l)}\\b`),new RegExp(`\\bfn\\s+${d(l)}\\b`),new RegExp(`\\bfunction\\s+${d(l)}\\b`),new RegExp(`\\b${d(l)}\\s*\\(`)],a=n.findIndex(c=>o.some(u=>u.test(c)));if(a>=0){let c=a;for(let u=a+1;u<n.length&&u<=a+8;u++){let h=n[u]??"";if(u>a&&X(h)||(c=u,h.trim()===""&&u>a+1))break}return n.slice(a,c+1).join(`
4
- `)}return n.slice(t,Math.min(n.length,t+8)).join(`
5
- `)}function N(e,i){if(!e)return new Set;let t=new Set(["public","private","protected","final","static","class","def","fun","fn","function","return","string","bool","boolean","void","unit","self","this","new","const","let","var","end","pub"]),r=Q(i),s=e.replace(/["'`]/g," ").replace(/\b\d+\b/g," NUM ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^A-Za-z0-9_]+/g," ").replace(/_/g," ").toLowerCase().split(/\s+/).map(n=>n.trim()).filter(n=>n.length>1).filter(n=>!t.has(n)).filter(n=>!r.has(n));return new Set(s)}function Q(e){return new Set(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9_]+|_/).map(i=>i.toLowerCase()).filter(i=>i.length>1))}function X(e){return/^\s*(?:def|fun|fn|function|class|trait|module|object|enum|interface|public|private|protected)\b/.test(e)}function d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}export{se as a,le as b};
6
- //# sourceMappingURL=chunk-3SWWYJPB.js.map
@@ -1,7 +0,0 @@
1
- import{a as F}from"./chunk-SVUVC5VS.js";import{f as g}from"./chunk-GS55K4WJ.js";import{G as M,q as p,r as I,x as C}from"./chunk-KYGNCIJ6.js";import{basename as f,extname as d}from"path";function A(t,e){let{scope:n,maxLoc:o=15,limit:r=30,scanLimit:i}=e??{},a=new F(t),l=_(a.fileDependencyGraph(n)),u=j(x(a,n,o).sort((c,s)=>b(c)-b(s)||c.relativePath.localeCompare(s.relativePath)),i),h=P(a.crossFileCallerMap(u),a.sourceFallbackCallerFiles(u)),m=[];for(let c of u){let s=S(t,a,c,{callerFileMap:h,reverseFanIn:l});s&&m.push(s)}return m.sort((c,s)=>s.callerFanIn-c.callerFanIn||s.loc-c.loc),m.slice(0,r)}function S(t,e,n,o){let r=D(e,n,o.callerFileMap);if(r.length!==1)return null;let i=r[0],a=L(t,n.symbolId,i);if(!a)return null;let l=y(e,t,i,n.symbol,a);if(l&&C(l.symbol))return null;let u=v(o.callerFileMap,o.reverseFanIn,i,l);return u<=3?null:{symbol:n.symbol,shortName:p(n.symbol),file:n.relativePath,startLine:n.startLine,endLine:n.endLine,loc:b(n),singleCaller:l?.symbol??"",singleCallerShort:l?.isFunctionLike?p(l.symbol):f(i),callerFanIn:u}}function b(t){return t.endLine-t.startLine+1}function x(t,e,n){return t.productionCallableDefinitions({scope:e,minLoc:2,maxLoc:n,requireFunctionLikeSymbol:!0})}function D(t,e,n){let o=f(e.relativePath,d(e.relativePath));return[...n.get(e.symbolId)??[]].filter(r=>r!==e.relativePath).filter(r=>f(r,d(r))!==o).filter(r=>{let i=t.fileKind(r);return i!=="barrel"&&i!=="entry"&&i!=="test"})}function L(t,e,n){return t.get(`SELECT c.start_line, c.end_line
2
- FROM mentions m
3
- JOIN chunks c ON m.chunk_id = c.id
4
- JOIN documents d ON c.document_id = d.id
5
- WHERE m.symbol_id = ? AND m.role != 1 AND d.relative_path = ?
6
- LIMIT 1`,e,n)}function y(t,e,n,o,r){let i=t.definitionsForFile(n),a=k(e,n,o,r.start_line,r.end_line);return M(i,a)}function v(t,e,n,o){if(o?.isFunctionLike){let r=[...t.get(o.symbolId)??[]].filter(i=>i!==o.relativePath);if(r.length>0)return r.length}return N(e,n)}function k(t,e,n,o,r){let i=I(n);if(!i)return o;let a=g(t,e).get(i);if(!a||a.length===0)return o;for(let l of a)if(l>=o&&l<=r)return l;return o}function P(...t){let e=new Map;for(let n of t)for(let[o,r]of n){let i=e.get(o);i||(i=new Set,e.set(o,i));for(let a of r)i.add(a)}return e}function _(t){let e=new Map;for(let[n,o]of t){e.has(n)||e.set(n,e.get(n)??0);for(let r of o)e.set(r,(e.get(r)??0)+1)}return e}function N(t,e){let n=t.get(e)??0;if(n>0)return n;let o=f(e,d(e)),r=0;for(let[i,a]of t)i!==e&&f(i,d(i))===o&&a>r&&(r=a);return r}function j(t,e){return typeof e!="number"||e<=0||t.length<=e?t:t.slice(0,e)}export{A as a};
7
- //# sourceMappingURL=chunk-4M4FEWBL.js.map
@@ -1,39 +0,0 @@
1
- import{a as g}from"./chunk-55ZJ2FCW.js";import{f as a}from"./chunk-6FLGPRBR.js";import{o as u}from"./chunk-G47V5V3U.js";import{a as p}from"./chunk-QYWGC7JV.js";import{q as l,r as c,v as f}from"./chunk-KYGNCIJ6.js";function T(t,r){return h(t,r)?.map(e=>({symbol:e.symbol,shortName:e.shortName,fromFile:e.fromFile}))??[]}function M(t,r){let e=E(t,r);return e.length>0?e:N(t,r)}function J(t,r){return h(t,r)?.filter(e=>!e.used).map(e=>({symbol:e.symbol,shortName:e.shortName,importedIn:e.importer}))??[]}function E(t,r){return t.all(`SELECT DISTINCT gs.symbol, d.relative_path AS importer
2
- FROM mentions m
3
- JOIN chunks c ON m.chunk_id = c.id
4
- JOIN documents d ON c.document_id = d.id
5
- JOIN global_symbols gs ON m.symbol_id = gs.id
6
- WHERE gs.symbol LIKE ?
7
- AND m.role = 2
8
- ORDER BY d.relative_path`,`%${r}%`).filter(s=>!t.isIgnored(s.importer)).map(s=>({symbol:s.symbol,shortName:l(s.symbol),fromFile:s.importer}))}function N(t,r){let e=p(t,r),s=e?.relativePath??null,o=e?c(e.symbol):r.replace(/\(\)$/,""),i=e?f(e.symbol):!1,m=t.all(`SELECT relative_path
9
- FROM documents
10
- WHERE 1 = 1
11
- ${t.pathExclusionsFor("documents")}
12
- ORDER BY relative_path`),d=new Set;for(let n of m)if(!t.isIgnored(n.relative_path))for(let b of a(t,n.relative_path))S(b,n.relative_path,{targetFile:s,targetLeaf:o,targetIsModule:i})&&d.add(n.relative_path);return[...d].sort().map(n=>({symbol:e?.symbol??o,shortName:e?l(e.symbol):o,fromFile:n}))}function S(t,r,e){return!t.sourcePath||e.targetFile&&_(t.sourcePath)!==_(e.targetFile)?!1:t.kind==="side-effect"||e.targetFile&&R(r)||e.targetIsModule||t.kind==="named"&&t.importedName===e.targetLeaf?!0:t.kind==="namespace"&&t.usedMembers.includes(e.targetLeaf)}function h(t,r){let e=g(t,r);return e?O(t,e)??F(t,e)??y(t,e):null}function O(t,r){let s=t.all(`SELECT DISTINCT
13
- gs.symbol,
14
- def_d.relative_path AS from_file,
15
- imp_d.relative_path AS importer,
16
- EXISTS (
17
- SELECT 1
18
- FROM mentions ref_m
19
- JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
20
- WHERE ref_m.symbol_id = gs.id
21
- AND ref_m.role != 1
22
- AND ref_c.document_id = imp_d.id
23
- ) AS used
24
- FROM mentions m
25
- JOIN chunks c ON m.chunk_id = c.id
26
- JOIN documents imp_d ON c.document_id = imp_d.id
27
- JOIN global_symbols gs ON m.symbol_id = gs.id
28
- LEFT JOIN (
29
- SELECT m2.symbol_id, c2.document_id
30
- FROM mentions m2
31
- JOIN chunks c2 ON m2.chunk_id = c2.id
32
- WHERE m2.role = 1
33
- GROUP BY m2.symbol_id
34
- ) sym_def ON sym_def.symbol_id = gs.id
35
- LEFT JOIN documents def_d ON sym_def.document_id = def_d.id
36
- WHERE imp_d.relative_path = ?
37
- AND m.role = 2
38
- ORDER BY def_d.relative_path, gs.symbol`,r).filter(o=>!t.isIgnored(o.importer));if(s.length>0){let o=u(t,r);return s.map(i=>({symbol:i.symbol,shortName:l(i.symbol),fromFile:i.from_file??"(external)",importer:i.importer,used:i.used!==0||o.some(m=>m.isUsed&&m.sourcePath===i.from_file)}))}return null}function F(t,r){let e=u(t,r);return e.length>0?e.map(s=>{let o=I(s.importedName,s.localName,s.kind);return{symbol:o,shortName:o,fromFile:s.sourcePath??"(external)",importer:r,used:s.kind==="side-effect"?!0:s.isUsed}}):null}function y(t,r){return a(t,r).map(e=>{let s=I(e.importedName,e.localName,e.kind),o=e.kind==="side-effect"?!0:e.used;return{symbol:s,shortName:s,fromFile:e.sourcePath??"(external)",importer:r,used:o}})}function I(t,r,e){return e==="namespace"&&t==="*"&&r?`* as ${r}`:e==="default"&&r?`default as ${r}`:e==="side-effect"?"(side effect import)":r&&r!==t?`${t} as ${r}`:t}function _(t){return t.replace(/\\/g,"/")}function R(t){return/\.(?:c|h|cc|cpp|cxx|hpp|hh|hxx)$/i.test(t)}export{T as a,M as b,J as c};
39
- //# sourceMappingURL=chunk-4Y6KUJDO.js.map
@@ -1,6 +0,0 @@
1
- import{a as p}from"./chunk-QYWGC7JV.js";import{existsSync as f}from"fs";import{basename as u,isAbsolute as g,join as d}from"path";function S(t,o){let e=h(t,o,{allowMultiple:!1})[0]?.relativePath;return e||v(t,o)}function b(t,o){return h(t,o,{allowMultiple:!0}).map(e=>e.relativePath)}function v(t,o){if(!o)return null;let e=o.replace(/\\/g,"/").replace(/^\.\//,""),i=g(e)&&e.startsWith(t.config.projectRoot)?e.slice(t.config.projectRoot.length).replace(/^\/+/,""):e,n=d(t.config.projectRoot,i);return f(n)?i:null}function h(t,o,e){let i=m(o);if(!i)return[];let a=t.all(`SELECT relative_path
2
- FROM documents
3
- WHERE 1 = 1
4
- ${t.pathExclusionsFor("documents")}
5
- ORDER BY relative_path`).filter(r=>!t.isIgnored(r.relative_path)).map(r=>({relativePath:r.relative_path,score:x(r.relative_path,i)})).filter(r=>r.score>0).sort((r,c)=>c.score-r.score||r.relativePath.localeCompare(c.relativePath));if(a.length===0){let r=p(t,o);return!r||t.isIgnored(r.relativePath)?[]:[{relativePath:r.relativePath,score:700}]}let s=a.filter(r=>r.score>=1100);if(s.length>0)return e.allowMultiple?s:[s[0]];let l=a.filter(r=>r.score>=800);return l.length>0?e.allowMultiple?l:[l[0]]:e.allowMultiple?a:[a[0]]}function x(t,o){let e=m(t),i=u(e),n=u(o),a=0;return e===o&&(a+=1200),e.endsWith(`/${o}`)&&(a+=1100),i===n&&(a+=900),e.startsWith(`${o}/`)&&(a+=850),e.includes(o)&&(a+=250),a}function m(t){return t.trim().replace(/\\/g,"/").replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"")}export{S as a,b};
6
- //# sourceMappingURL=chunk-55ZJ2FCW.js.map
@@ -1,5 +0,0 @@
1
- import{a as b,b as j,c as U,d as Z,e as K,f as T,g as O,h as _,i as B,j as W,k as h,l as J,m as z}from"./chunk-G47V5V3U.js";import{a as $,c as Q,d as k,g as L,h as X,j as g}from"./chunk-KYGNCIJ6.js";function Y(e){return e.replace(/'''[\s\S]*?'''/g,C).replace(/"""[\s\S]*?"""/g,C).replace(/#.*$/gm,C).replace(/\/\/.*$/gm,C).replace(/\/\*[\s\S]*?\*\//g,C).replace(/`(?:\\[\s\S]|[^`])*`/g,C).replace(/'(?:\\.|[^'\\\r\n])*'/g,C).replace(/"(?:\\.|[^"\\\r\n])*"/g,C)}function C(e){return e.replace(/[^\r\n]/g," ")}var G=Q("stripped-lines");function Dt(e,r,t){return G.get(e,r,t,()=>Y(t).split(`
2
- `))}function kt(e){G.invalidateAll(e),F=null,w=""}var F=null,w="";function _e(e){return F===e||(F=e,w=Y(e)),w}function E(e,r,t){let s=_e(e);return`${s.slice(0,r)}${" ".repeat(t-r)}${s.slice(t)}`}function S(e,r){return new RegExp(`\\b${ee(r)}\\b`,"m").test(e)}function A(e,r){let t=new Set,s=new RegExp(`\\b${ee(r)}\\s*\\.\\s*([A-Za-z_$][\\w$]*)`,"g");for(let n of e.matchAll(s)){let i=n[1];i&&t.add(i)}return[...t]}function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var Ce=new Set(["identifier","type_identifier","property_identifier","shorthand_property_identifier","field_identifier"]);function x(e){let r=[],t=0,s=0;for(let n=0;n<e.length;n++){let i=e[n];(i==="{"||i==="["||i==="(")&&t++,(i==="}"||i==="]"||i===")")&&t--,i===","&&t===0&&(r.push(e.slice(s,n)),s=n+1)}return r.push(e.slice(s)),r}function y(e,r){for(let t of e.namedChildren)if(t.type===r)return t;return null}function f(e,r){let t=new Set,s=(n,i)=>{let o=i||r.has(n.type);!o&&Ce.has(n.type)&&t.add(n.text);for(let a of n.children)s(a,o)};return s(e.rootNode,!1),t}function P(e,r,t,s,n,i,o){return{importedName:n,localName:i,sourcePath:o??h(e,s,K(r)),kind:"named",used:S(t,i),usedMembers:[]}}function N(e,r,t){let s=[];for(let n of e.matchAll(r)){let i=n[0];if(!i||typeof n.index!="number")continue;let o=E(e,n.index,n.index+i.length);for(let a of t(n,o))s.push(a)}return s}function re(e,r,t){let s=g(e,r);return s?Ee(e,r,s):we(t).flatMap(n=>qe(e,r,n.clause,n.specifier,n.start,n.end,t))}function Ee(e,r,t){let s=Re(e,r,t),n=[];for(let i of t.rootNode.descendantsOfType("import_statement"))n.push(...Te(e,r,t,i,s));return n}function Re(e,r,t){let s=f(t,new Set(["import_statement"]));if(X(r))for(let n of Ke(e,r))s.add(n);return s}function Te(e,r,t,s,n){let i=Oe(s);if(!i)return[];let o=T(e,r,i),a=y(s,"import_clause");return a?De(t,a,o,n,ve(s.text)):[ke(o)]}function De(e,r,t,s,n){let i=[];for(let o of r.namedChildren)if(o.type==="identifier")i.push(Ae(o.text,t,s,n));else if(o.type==="namespace_import"){let a=Me(e,o,t,s,n);a&&i.push(a)}else o.type==="named_imports"&&i.push(...$e(o,t,s,n));return i}function ke(e){return{importedName:"*",localName:null,sourcePath:e,kind:"side-effect",used:!0,usedMembers:[]}}function Ae(e,r,t,s){return{importedName:"default",localName:e,sourcePath:r,kind:"default",used:t.has(e),usedMembers:[],isTypeOnly:s}}function Me(e,r,t,s,n){let o=y(r,"identifier")?.text??"";if(!o)return null;let a=je(e,o);return{importedName:"*",localName:o,sourcePath:t,kind:"namespace",used:a.length>0||s.has(o),usedMembers:a,isTypeOnly:n}}function $e(e,r,t,s){let n=[];for(let i of e.namedChildren){if(i.type!=="import_specifier")continue;let o=i.namedChild(0),a=i.namedChild(1);if(!o)continue;let c=o.text,p=a?.text??c;n.push({importedName:c,localName:p,sourcePath:r,kind:"named",used:t.has(p),usedMembers:[],isTypeOnly:s||Le(i.text)})}return n}function Oe(e){let r=y(e,"string");if(!r)return null;let t=y(r,"string_fragment");return t?t.text:null}function ve(e){return/^\s*import\s+type\b/.test(e)}function Le(e){return/^\s*type\b/.test(e.trim())}function je(e,r){let t=new Set;for(let s of e.rootNode.descendantsOfType("member_expression")){let n=s.namedChild(0),i=s.namedChild(1);!n||!i||n.type!=="identifier"||n.text!==r||(i.type==="property_identifier"||i.type==="identifier")&&t.add(i.text)}return[...t]}function we(e){let r=[],t=/^[ \t]*import\s+([\s\S]*?)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let n of e.matchAll(t)){let i=n[0],o=n[1],a=n[2];!i||!a||typeof n.index!="number"||r.push({clause:o,specifier:a,start:n.index,end:n.index+i.length})}let s=/^[ \t]*import\s+['"]([^'"]+)['"]\s*;?/gm;for(let n of e.matchAll(s)){let i=n[0],o=n[1];!i||!o||typeof n.index!="number"||r.push({clause:null,specifier:o,start:n.index,end:n.index+i.length})}return r.sort((n,i)=>n.start-i.start)}function qe(e,r,t,s,n,i,o){let a=T(e,r,s),c=E(o,n,i);return t?Ue(t).map(u=>({...u,sourcePath:a})).map(u=>{if(u.kind==="namespace"){let m=A(c,u.localName);return{...u,used:m.length>0||S(c,u.localName),usedMembers:m}}return u.kind==="side-effect"?{...u,used:!0,usedMembers:[]}:{...u,used:u.localName?S(c,u.localName):!1,usedMembers:[]}}):[{importedName:"*",localName:null,sourcePath:a,kind:"side-effect",used:!0,usedMembers:[]}]}function Ue(e){let r=e.trim(),t=/^type\b/.test(r),s=r.replace(/^type\s+/,""),[n,i]=Be(s),o=[];return n&&o.push(...te(n,t)),i&&o.push(...te(i,t)),o}function te(e,r){let t=e.trim();if(!t)return[];if(t.startsWith("{")){let s=t.slice(1,-1).trim();return s?x(s).map(n=>{let i=n.trim(),o=r||/^type\b/.test(i),a=i.replace(/^type\s+/,""),[c,p]=a.split(/\s+as\s+/);return{importedName:c.trim(),localName:(p??c).trim(),kind:"named",isTypeOnly:o}}):[]}return t.startsWith("* as ")?[{importedName:"*",localName:t.slice(5).trim(),kind:"namespace",isTypeOnly:r}]:[{importedName:"default",localName:t,kind:"default",isTypeOnly:r}]}function Be(e){let r=0;for(let t=0;t<e.length;t++){let s=e[t];if(s==="{"&&r++,s==="}"&&r--,s===","&&r===0)return[e.slice(0,t).trim(),e.slice(t+1).trim()]}return[e.trim(),null]}function se(e,r){let t=g(e,r);if(t)return He(e,r,t);let s=k(e,r);return s?We(e,r,s):[]}function We(e,r,t){return[...Je(e,r,t),...ze(e,r,t),...Fe(e,r,t)]}function Je(e,r,t){let s=[],n=/^[ \t]*export\s+(?:type\s+)?\{([\s\S]*?)\}\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let i of t.matchAll(n)){if(typeof i.index!="number")continue;let o=i[1]??"",a=i[2]??"",c=x(o).map(m=>Ve(m.trim())).filter(m=>!!m),p=M(t,i.index),u=M(t,i.index+i[0].length-1);s.push({kind:"named",sourcePath:T(e,r,a),names:c,startLine:p,endLine:u})}return s}function ze(e,r,t){let s=[],n=/^[ \t]*export\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let i of t.matchAll(n)){if(typeof i.index!="number")continue;let o=i[2]??"",a=M(t,i.index),c=M(t,i.index+i[0].length-1);s.push({kind:"star-as",sourcePath:T(e,r,o),names:[],startLine:a,endLine:c})}return s}function Fe(e,r,t){let s=[],n=/^[ \t]*export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let i of t.matchAll(n)){if(typeof i.index!="number")continue;let o=i[1]??"",a=M(t,i.index),c=M(t,i.index+i[0].length-1);s.push({kind:"star",sourcePath:T(e,r,o),names:[],startLine:a,endLine:c})}return s}function Ve(e){if(!e)return null;let r=e.replace(/^type\s+/,"").trim();if(!r)return null;let t=r.match(/^(\w+)\s+as\s+(\w+)$/);if(t)return t[2]??null;let s=r.match(/^(\w+)$/);return s?s[1]??null:null}function M(e,r){let t=0;for(let s=0;s<r&&s<e.length;s++)e.charCodeAt(s)===10&&t++;return t}function He(e,r,t){let s=[];for(let n of t.rootNode.descendantsOfType("export_statement")){let i=Qe(e,r,n);if(i===void 0)continue;let o=n.startPosition.row,a=n.endPosition.row,c=Xe(n,i,o,a);s.push(c)}return s}function Qe(e,r,t){let s=y(t,"string");if(!s)return;let n=y(s,"string_fragment");if(n)return T(e,r,n.text)}function Xe(e,r,t,s){let n=y(e,"export_clause");if(n){let o=[];for(let a of n.namedChildren){if(a.type!=="export_specifier")continue;let c=a.namedChild(0),p=a.namedChild(1);c&&o.push((p??c).text)}return{kind:"named",sourcePath:r,names:o,startLine:t,endLine:s}}return y(e,"namespace_export")?{kind:"star-as",sourcePath:r,names:[],startLine:t,endLine:s}:{kind:"star",sourcePath:r,names:[],startLine:t,endLine:s}}var Ze=$("vue-non-script-identifiers");function Ke(e,r){return Ze.get(e,r,()=>{let t=new Set,s=k(e,r);if(!s)return t;let i=s.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g,o=>o.replace(/[^\r\n]/g," ")).replace(/<!--[\s\S]*?-->/g,o=>o.replace(/[^\r\n]/g," ")).replace(/\/\*[\s\S]*?\*\//g,o=>o.replace(/[^\r\n]/g," "));for(let o of i.matchAll(/[A-Za-z_$][\w$]*/g))t.add(o[0]);return t})}import{basename as ne}from"path";function oe(e,r,t){let s=g(e,r);return s?Ye(e,r,s):N(t,/^[ \t]*#include\s+[<"]([^">]+)[">]\s*$/gm,(n,i)=>{let o=n[1]?.trim();if(!o)return[];let a=ne(o).replace(/\.[^.]+$/,"");return[{importedName:o,localName:a,sourcePath:W(e,r,o),kind:"named",used:S(i,a),usedMembers:[]}]})}function Ye(e,r,t){let s=f(t,new Set(["preproc_include"])),n=[];for(let i of t.rootNode.descendantsOfType("preproc_include")){let o=null;for(let c of i.namedChildren){if(c.type==="system_lib_string"){o=c.text.replace(/^<|>$/g,"");break}if(c.type==="string_literal"){o=c.namedChildren.find(u=>u.type==="string_content")?.text??c.text.replace(/^"|"$/g,"");break}}if(!o)continue;let a=ne(o).replace(/\.[^.]+$/,"");n.push({importedName:o,localName:a,sourcePath:W(e,r,o),kind:"named",used:s.has(a),usedMembers:[]})}return n}function ie(e,r,t){let s=[];for(let n of t.matchAll(/^[ \t]*import\s+['"]([^'"]+)['"](?:\s+as\s+([A-Za-z_]\w*))?[\s\S]*?;$/gm)){let i=n[1]?.trim(),o=n[2]?.trim()??null,a=n[0];if(!i||!a||typeof n.index!="number")continue;let c=E(t,n.index,n.index+a.length);s.push({importedName:i,localName:o,sourcePath:J(e,r,i),kind:o?"namespace":"side-effect",used:o?S(c,o):!0,usedMembers:o?A(c,o):[]})}return s}function ae(e,r,t){let s=[];for(let n of t.matchAll(/^[ \t]*export\s+['"]([^'"]+)['"][\s\S]*?;$/gm)){let i=n[1]?.trim();i&&s.push({specifier:i,sourcePath:J(e,r,i)})}return s}function ce(e,r,t){let s=g(e,r),n=L(r);if(s&&n==="csharp")return et(e,r,s);if(s&&n==="vb")return Ge(e,r,s);let i=Z(r)?/^[ \t]*Imports\s+(.+?)\s*$/gm:/^[ \t]*using\s+(.+?)\s*;$/gm;return N(t,i,(o,a)=>{let c=o[1]?.trim();if(!c)return[];let[p,u]=c.split(/\s*=\s*/),m=!!u,l=(m?u:p)?.trim()??c,d=l.split(".").pop()??l,I=m?p?.trim()??d:d;return[P(e,r,a,l,d,I,h(e,l,j))]})}function Ge(e,r,t){let s=f(t,new Set(["imports_statement"])),n=[];for(let i of t.rootNode.descendantsOfType("imports_statement")){let o=i.namedChildren.filter(l=>l.type==="namespace_name");if(o.length===0)continue;let a=o[o.length-1],c=o.length>1?o[0]:null,p=a.text,u=p.split(".").pop()??p,m=c?.text??u;n.push({importedName:u,localName:m,sourcePath:h(e,p,j),kind:c?"namespace":"named",used:s.has(m),usedMembers:[]})}return n}function et(e,r,t){let s=f(t,new Set(["using_directive"])),n=[];for(let i of t.rootNode.descendantsOfType("using_directive")){let o=i.namedChildren;if(o.length===0)continue;let a=null,c;o.length>=2&&o[0].type==="identifier"&&(o[1].type==="qualified_name"||o[1].type==="identifier")?(a=o[0],c=o[1]):c=o[o.length-1];let p=c.text,u=p.split(".").pop()??p,m=a?.text??u;n.push({importedName:u,localName:m,sourcePath:h(e,p,j),kind:a?"namespace":"named",used:s.has(m),usedMembers:[]})}return n}function pe(e,r,t){let s=g(e,r),n=L(r);return s&&n==="java"?tt(e,r,s):s&&n==="kotlin"?rt(e,r,s):s&&n==="scala"?st(e,r,s):N(t,/^[ \t]*import\s+(?:static\s+)?(.+?)\s*;?$/gm,(i,o)=>{let a=i[1]?.trim();return a?nt(e,r,a,o):[]})}function tt(e,r,t){let s=f(t,new Set(["import_declaration"])),n=[];for(let i of t.rootNode.descendantsOfType("import_declaration")){let o=i.children.some(m=>m.type==="asterisk"),c=i.namedChildren.find(m=>m.type==="scoped_identifier")??i.namedChildren.find(m=>m.type==="identifier");if(!c)continue;let p=c.text;if(o){n.push({importedName:"*",localName:null,sourcePath:h(e,p,b),kind:"namespace",used:!0,usedMembers:[]});continue}let u=p.split(".").pop()??p;n.push({importedName:u,localName:u,sourcePath:h(e,p,b),kind:"named",used:s.has(u),usedMembers:[]})}return n}function rt(e,r,t){let s=f(t,new Set(["import_header","import_list"])),n=[];for(let i of t.rootNode.descendantsOfType("import_header")){let o=i.namedChildren.find(d=>d.type==="identifier");if(!o)continue;let a=i.namedChildren.some(d=>d.type==="wildcard_import"),c=i.namedChildren.find(d=>d.type==="import_alias");if(a){n.push({importedName:"*",localName:null,sourcePath:h(e,o.text,b),kind:"namespace",used:!0,usedMembers:[]});continue}let p=o.text,u=p.split(".").pop()??p,l=c?.namedChild(0)?.text??u;n.push({importedName:u,localName:l,sourcePath:h(e,p,b),kind:"named",used:s.has(l),usedMembers:[]})}return n}function st(e,r,t){let s=f(t,new Set(["import_declaration"])),n=[];for(let i of t.rootNode.descendantsOfType("import_declaration")){let o=i.namedChildren.find(m=>m.type==="namespace_selectors"||m.type==="namespace_wildcard"),a=i.namedChildren.filter(m=>m!==o&&(m.type==="identifier"||m.type==="stable_identifier")),c=a.map(m=>m.text).join(".");if(!c)continue;if(o?.type==="namespace_wildcard"){n.push({importedName:"*",localName:null,sourcePath:h(e,c,b),kind:"namespace",used:!0,usedMembers:[]});continue}if(o?.type==="namespace_selectors"){for(let m of o.namedChildren)if(m.type==="arrow_renamed_identifier"){let[l,d]=m.namedChildren;if(!l)continue;let I=l.text,R=d?.text??I;if(I==="_")continue;n.push({importedName:I,localName:R,sourcePath:h(e,`${c}.${I}`,b),kind:"named",used:s.has(R),usedMembers:[]})}else if(m.type==="identifier"){let l=m.text;n.push({importedName:l,localName:l,sourcePath:h(e,`${c}.${l}`,b),kind:"named",used:s.has(l),usedMembers:[]})}continue}let p=a[a.length-1]?.text??c,u=a.slice(0,-1).map(m=>m.text).join(".")||c;n.push({importedName:p,localName:p,sourcePath:h(e,u&&a.length>1?`${u}.${p}`:c,b),kind:"named",used:s.has(p),usedMembers:[]})}return n}function nt(e,r,t,s){if(t.includes("{")&&t.includes("}")){let n=t.slice(0,t.indexOf("{")).replace(/\.$/,"").trim(),i=t.slice(t.indexOf("{")+1,t.lastIndexOf("}")).trim();return x(i).flatMap(o=>{let a=o.trim();if(!a)return[];let[c,p]=a.includes("=>")?a.split(/\s*=>\s*/):a.split(/\s+as\s+/),u=c?.trim();if(!u||u==="_")return[];let m=(p??u.split(".").pop()??u).trim(),l=u==="_"?n:`${n}.${u}`.replace(/\.\./g,".");return[P(e,r,s,l,u,m)]})}return[P(e,r,s,t,t.split(".").pop()??t,t.split(".").pop()??t)]}function ue(e,r,t){let s=g(e,r);return s?ot(e,r,s):N(t,/^[ \t]*use\s+(.+?)\s*;$/gm,(n,i)=>{let o=n[1]?.trim();return o?x(o).flatMap(a=>{let c=a.trim();if(!c)return[];let[p,u]=c.split(/\s+as\s+/i),m=p?.trim()??c,l=m.split("\\").pop()??m,d=(u??l).trim();return[P(e,r,i,m,l,d,h(e,m.replace(/\\/g,"."),U))]}):[]})}function ot(e,r,t){let s=f(t,new Set(["namespace_use_declaration"])),n=[],i=(o,a,c)=>{n.push({importedName:a,localName:c,sourcePath:h(e,o.replace(/\\/g,"."),U),kind:"named",used:s.has(c),usedMembers:[]})};for(let o of t.rootNode.descendantsOfType("namespace_use_declaration")){let a=o.namedChildren.find(c=>c.type==="namespace_use_group");if(a){let c=o.namedChildren.find(p=>p.type==="namespace_name")?.text??"";for(let p of a.namedChildren){if(p.type!=="namespace_use_clause")continue;let{importedName:u,localName:m,qualified:l}=me(p,c);u&&i(l,u,m)}continue}for(let c of o.namedChildren){if(c.type!=="namespace_use_clause")continue;let{importedName:p,localName:u,qualified:m}=me(c,"");p&&i(m,p,u)}}return n}function me(e,r){let t=e.namedChildren.find(p=>p.type==="qualified_name"),s=e.namedChildren.filter(p=>p.type==="name"),n="";t?n=t.text:s.length>=1&&(n=s[0].text);let i=t&&s.length>0?s[s.length-1]:null,o=n.split("\\").pop()??n,a=i?.text??o,c=r?`${r}\\${n}`:n;return{importedName:o,localName:a,qualified:c}}function fe(e,r,t){let s=g(e,r);return s?it(e,r,s):ct(t).flatMap(n=>mt(e,r,n,t))}function it(e,r,t){let s=f(t,new Set(["import_statement","import_from_statement"])),n=[];for(let i of t.rootNode.descendantsOfType("import_statement"))for(let o of i.namedChildren){let a=le(o);if(!a)continue;let c=O(e,r,a.qualifiedName);n.push({importedName:a.qualifiedName,localName:a.localName,sourcePath:c,kind:"namespace",used:s.has(a.localName),usedMembers:[]})}for(let i of t.rootNode.descendantsOfType("import_from_statement")){let o=i.namedChild(0);if(!o)continue;let a=at(o);if(a===null)continue;let c=O(e,r,a);for(let p=1;p<i.namedChildCount;p+=1){let u=i.namedChild(p);if(u.type==="wildcard_import"){n.push({importedName:"*",localName:null,sourcePath:c,kind:"side-effect",used:!0,usedMembers:[]});continue}let m=le(u);m&&n.push({importedName:m.qualifiedName,localName:m.localName,sourcePath:c,kind:"named",used:s.has(m.localName),usedMembers:[]})}}return n}function le(e){if(e.type==="aliased_import"){let r=e.namedChild(0),t=e.namedChild(1);return!r||!t?null:{qualifiedName:r.text,localName:t.text}}if(e.type==="dotted_name"){let r=e.text;return{qualifiedName:r,localName:r.split(".")[0]??r}}return e.type==="identifier"?{qualifiedName:e.text,localName:e.text}:null}function at(e){if(e.type==="dotted_name")return e.text;if(e.type==="relative_import"){let r=y(e,"import_prefix")?.text??"",t=y(e,"dotted_name")?.text??"";return`${r}${t}`}return null}function ct(e){let r=e.split(`
3
- `),t=[],s=0;for(let n=0;n<r.length;n++){let i=r[n],o=i.trimStart(),a=s;if(s+=i.length+1,!o.startsWith("import ")&&!o.startsWith("from "))continue;let c=i,p=a+i.length,u=de(i);for(;n+1<r.length&&(u>0||c.trimEnd().endsWith("\\"));){n++;let l=r[n];c+=`
4
- ${l}`,p+=1+l.length,u+=de(l),s+=l.length+1}let m=pt(c);m&&t.push({...m,start:a,end:p})}return t}function pt(e){let r=e.replace(/\\\s*\n/g," ").trim();if(r.startsWith("import "))return{kind:"import",module:null,clause:r.slice(7).trim()};let t=r.match(/^from\s+([.\w]+)\s+import\s+([\s\S]+)$/);if(!t)return null;let s=t[2].trim();return s.startsWith("(")&&s.endsWith(")")&&(s=s.slice(1,-1).trim()),{kind:"from",module:t[1],clause:s}}function mt(e,r,t,s){let n=E(s,t.start,t.end),i=t.clause.replace(/\n/g," ").trim();if(t.kind==="import")return x(i).flatMap(c=>{let p=c.trim().replace(/,$/,"");if(!p)return[];let[u,m]=p.split(/\s+as\s+/),l=u.trim(),d=(m??l.split(".")[0]??l).trim(),I=O(e,r,l),R=A(n,d);return[{importedName:l,localName:d,sourcePath:I,kind:"namespace",used:S(n,d)||R.length>0,usedMembers:R}]});let o=t.module?O(e,r,t.module):null,a=[];for(let c of x(i)){let p=c.trim().replace(/,$/,"");if(!p)continue;if(p==="*"){a.push({importedName:"*",localName:null,sourcePath:o,kind:"side-effect",used:!0,usedMembers:[]});continue}let[u,m]=p.split(/\s+as\s+/),l=(m??u).trim();a.push({importedName:u.trim(),localName:l,sourcePath:o,kind:"named",used:S(n,l),usedMembers:[]})}return a}function de(e){let r=0;for(let t of e)t==="("&&r++,t===")"&&r--;return r}import{basename as ut}from"path";function ge(e,r,t){let s=g(e,r);return s?lt(e,r,s):N(t,/^[ \t]*(require_relative|require)\s+["']([^"']+)["']\s*$/gm,(n,i)=>{let o=n[1],a=n[2];if(!o||!a)return[];let c=o==="require_relative"?B(e,r,a):null;if(c){let p=he(a);return[{importedName:p,localName:p,sourcePath:c,kind:"named",used:S(i,p),usedMembers:[]}]}return[{importedName:a,localName:null,sourcePath:c,kind:"side-effect",used:!0,usedMembers:[]}]})}function lt(e,r,t){let s=f(t,new Set([])),n=[],i=new Set(["require","require_relative","load"]);for(let o of t.rootNode.descendantsOfType("call")){let a=o.namedChild(0);if(!a||a.type!=="identifier"||!i.has(a.text))continue;let p=o.namedChildren.find(d=>d.type==="argument_list")?.namedChild(0);if(!p||p.type!=="string")continue;let m=p.namedChildren.find(d=>d.type==="string_content")?.text;if(!m)continue;let l=a.text==="require_relative"?B(e,r,m):null;if(l){let d=he(m);n.push({importedName:d,localName:d,sourcePath:l,kind:"named",used:s.has(d),usedMembers:[]})}else n.push({importedName:m,localName:null,sourcePath:l,kind:"side-effect",used:!0,usedMembers:[]})}return n}function he(e){return ut(e).replace(/\.[^.]+$/,"").split("_").filter(Boolean).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")}function Se(e,r,t){let s=g(e,r);return s?dt(e,r,s):N(t,/^[ \t]*use\s+(.+?)\s*;$/gm,(n,i)=>{let o=n[1]?.trim();return o?ft(e,r,o,i):[]})}function dt(e,r,t){let s=f(t,new Set(["use_declaration"])),n=[];for(let i of t.rootNode.descendantsOfType("use_declaration")){let o=i.namedChild(0);if(o)for(let a of v(o,"")){if(!a.importedName||a.importedName==="*")continue;let c=_(e,r,a.qualifiedName)??_(e,r,a.qualifiedName.split("::").slice(0,-1).join("::"));n.push({importedName:a.importedName,localName:a.localName,sourcePath:c,kind:"named",used:s.has(a.localName),usedMembers:[]})}}return n}function v(e,r){switch(e.type){case"identifier":case"super":case"self":case"crate":{let t=e.text;return[{qualifiedName:q(r,t),importedName:t,localName:t}]}case"scoped_identifier":{let t=e.text,s=t.split("::").pop()??t;return[{qualifiedName:q(r,t),importedName:s,localName:s}]}case"scoped_use_list":{let t=e.namedChild(0),s=e.namedChild(1);if(!t||!s)return[];let n=q(r,t.text),i=[];for(let o of s.namedChildren)i.push(...v(o,n));return i}case"use_list":{let t=[];for(let s of e.namedChildren)t.push(...v(s,r));return t}case"use_as_clause":{let t=e.namedChild(0),s=e.namedChild(1);if(!t||!s)return[];let n=v(t,r),i=s.text;return n.map(o=>({...o,localName:i}))}case"use_wildcard":{let t=e.namedChild(0),s=t?t.text:"";return[{qualifiedName:q(r,`${s}::*`),importedName:"*",localName:"*"}]}default:return[]}}function q(e,r){return e?r?`${e}::${r}`:e:r}function ft(e,r,t,s){let n=t.trim();if(n.includes("{")&&n.includes("}")){let u=n.slice(0,n.indexOf("{")).replace(/::$/,"").trim(),m=n.slice(n.indexOf("{")+1,n.lastIndexOf("}")).trim();return x(m).flatMap(l=>{let d=l.trim();if(!d||d==="self")return[];let[I,R]=d.split(/\s+as\s+/),D=I?.trim();if(!D)return[];let Pe=(R??D.split("::").pop()??D).trim(),be=`${u}::${D}`.replace(/::::/g,"::");return[P(e,r,s,be,D.split("::").pop()??D,Pe,_(e,r,u))]})}let[i,o]=n.split(/\s+as\s+/),a=i?.trim()??n,c=(o??a.split("::").pop()??a).trim(),p=_(e,r,a)??_(e,r,a.split("::").slice(0,-1).join("::"));return[P(e,r,s,a,a.split("::").pop()??a,c,p)]}function xe(e,r,t){let s=g(e,r);if(s)return gt(e,r,s);let n=[];for(let i of t.matchAll(/^[ \t]*pub\s+use\s+(.+?)\s*;$/gm)){let o=i[1]?.trim();o&&n.push(...St(e,r,o))}return n}function gt(e,r,t){let s=[];for(let n of t.rootNode.descendantsOfType("use_declaration")){if(!ht(n))continue;let i=n.namedChildren.find(o=>o.type!=="visibility_modifier");if(i)for(let o of v(i,""))o.importedName&&s.push(V(e,r,o.qualifiedName))}return s}function ht(e){for(let r of e.children)if(r.type==="visibility_modifier"&&r.text.startsWith("pub"))return!0;return!1}function St(e,r,t){let s=t.trim();if(s.includes("{")&&s.includes("}")){let n=s.slice(0,s.indexOf("{")).replace(/::$/,"").trim(),i=s.slice(s.indexOf("{")+1,s.lastIndexOf("}")).trim();return x(i).flatMap(o=>{let a=o.trim();if(!a||a==="self")return[];let[c]=a.split(/\s+as\s+/),p=`${n}::${c?.trim()??a}`.replace(/::::/g,"::");return[V(e,r,p)]})}return[V(e,r,s)]}function V(e,r,t){return{specifier:t,sourcePath:_(e,r,t)??_(e,r,t.split("::").slice(0,-1).join("::"))}}function ye(e,r){let t=r.toLowerCase();for(let s of e)for(let n of s.extensions)if(t.endsWith(n))return s;return null}var xt={language:"javascript",extensions:[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue"],parseImports:re},yt={language:"python",extensions:[".py",".pyi"],parseImports:fe},Nt={language:"jvm",extensions:[".java",".scala",".kt",".kts"],parseImports:pe},It={language:"rust",extensions:[".rs"],parseImports:Se,parseExports:xe},Pt={language:"ruby",extensions:[".rb"],parseImports:ge},bt={language:"c/cpp",extensions:[".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx"],parseImports:oe},_t={language:"dotnet",extensions:[".cs",".vb"],parseImports:ce},Ct={language:"dart",extensions:[".dart"],parseImports:ie,parseExports:ae},Et={language:"php",extensions:[".php"],parseImports:ue},Rt=[xt,yt,Nt,It,Pt,bt,_t,Ct,Et];function H(e){return ye(Rt,e)}function Br(e,r){return se(e,r)}var Ne=$("source-imports"),Ie=$("source-exports");function Wr(e,r){let t=z(r);return Ne.get(e,t,()=>{let s=H(t);if(!s)return[];let n=k(e,t);return n?s.parseImports(e,t,n):[]})}function Jr(e,r){let t=z(r);return Ie.get(e,t,()=>{let s=H(t);if(!s?.parseExports)return[];let n=k(e,t);return n?s.parseExports(e,t,n):[]})}function zr(e){Ne.invalidateAll(e),Ie.invalidateAll(e)}export{Y as a,Dt as b,kt as c,ee as d,Br as e,Wr as f,Jr as g,zr as h};
5
- //# sourceMappingURL=chunk-6FLGPRBR.js.map
@@ -1,16 +0,0 @@
1
- import{a as h}from"./chunk-SVUVC5VS.js";import{q as p}from"./chunk-G47V5V3U.js";import{q as u,t as m,v as g}from"./chunk-KYGNCIJ6.js";import{execFileSync as d}from"child_process";function O(e,n={}){let t=b(e,n);return t.note?C(t.note,t.changedFileLines):t.changedFiles.length===0?D(t.changedFileLines):I(t.changedFiles,[S(e,t.changedFiles,t.changedFiles)])}function b(e,n={}){let{base:t="HEAD"}=n;try{let s=F(e.config.projectRoot,t);return{changedFileLines:s,changedFiles:_(e,s),note:s.length===0?"No changed files found.":void 0}}catch{return{changedFileLines:[],changedFiles:[],note:"Unable to compute git diff."}}}function S(e,n,t){let s=new h(e),r=new Set(t),a=[],l=new Map,o=n.flatMap(i=>s.definitionsForFile(i)).filter(N).sort((i,f)=>i.relativePath.localeCompare(f.relativePath)||i.startLine-f.startLine),c=p(e,o);for(let i of o)R(e,i,t,r,a,l,c.get(i.symbolId)??new Set);return{changedSymbols:a,consumerEntries:[...l.entries()].map(([i,f])=>({file:i,symbols:[...f].sort()}))}}function I(e,n){let t=new Map,s=n.flatMap(a=>a.changedSymbols);for(let a of n)for(let l of a.consumerEntries){let o=t.get(l.file);o||(o=new Set,t.set(l.file,o));for(let c of l.symbols)o.add(c)}let r=E(t);return{changedFiles:[...e],changedSymbols:s,affectedConsumers:r,summary:{totalChangedFiles:e.length,totalChangedSymbols:s.length,totalAffectedFiles:r.length}}}function C(e,n=[]){return{changedFiles:n,changedSymbols:[],affectedConsumers:[],summary:{totalChangedFiles:n.length,totalChangedSymbols:0,totalAffectedFiles:0,note:e}}}function D(e){return{changedFiles:e,changedSymbols:[],affectedConsumers:[],summary:{totalChangedFiles:e.length,totalChangedSymbols:0,totalAffectedFiles:0,note:"Changed files are not present in the current SCIP index."}}}function F(e,n){let t=d("git",["diff","--name-only",n],{encoding:"utf-8",cwd:e,timeout:1e4}),s=d("git",["diff","--name-only","--cached",n],{encoding:"utf-8",cwd:e,timeout:1e4}),r=d("git",["ls-files","--others","--exclude-standard"],{encoding:"utf-8",cwd:e,timeout:1e4});return[...new Set([t,s,r].flatMap(a=>a.split(`
2
- `)).map(a=>a.trim()).filter(a=>a.length>0))]}function _(e,n){let t=[];for(let s of n){let r=e.get(`SELECT relative_path FROM documents
3
- WHERE relative_path LIKE ?
4
- LIMIT 1`,`%${s}`);r&&!e.isIgnored(r.relative_path)&&t.push(r.relative_path)}return t}function R(e,n,t,s,r,a,l){let o=Math.max(x(e,n.symbolId),l.size);if(!v(n,o))return;let c=u(n.symbol);r.push({symbol:n.symbol,shortName:c,file:n.relativePath,fanIn:o});for(let i of M(e,n.symbolId,t))y(e,s,a,i,c);for(let i of l)y(e,s,a,i,c)}function x(e,n){return e.get(`SELECT COUNT(DISTINCT c.document_id) AS fan_in
5
- FROM mentions m
6
- JOIN chunks c ON m.chunk_id = c.id
7
- WHERE m.symbol_id = ?
8
- AND m.role != 1`,n)?.fan_in??0}function M(e,n,t){return t.length===0?[]:e.all(`SELECT DISTINCT ref_d.relative_path
9
- FROM mentions m
10
- JOIN chunks c ON m.chunk_id = c.id
11
- JOIN documents ref_d ON c.document_id = ref_d.id
12
- WHERE m.symbol_id = ?
13
- AND m.role != 1
14
- AND ref_d.relative_path NOT IN (${t.map(()=>"?").join(",")})
15
- ${e.pathExclusionsFor("ref_d")}`,n,...t).map(r=>r.relative_path)}function y(e,n,t,s,r){if(e.isIgnored(s)||n.has(s))return;let a=t.get(s);a||(a=new Set,t.set(s,a)),a.add(r)}function E(e){return[...e.entries()].map(([n,t])=>({file:n,consumedSymbols:t.size})).sort((n,t)=>t.consumedSymbols-n.consumedSymbols)}function N(e){return!(g(e.symbol)||e.parentTypeName!==null&&!m(e.symbol))}function v(e,n){return m(e.symbol)||e.isTypeLike?!0:e.parentTypeName===null&&n>0}export{O as a,b,S as c,I as d};
16
- //# sourceMappingURL=chunk-6XRB6ATD.js.map
@@ -1,2 +0,0 @@
1
- import{c as p}from"./chunk-WPY46NIL.js";import{d as b,e as S,n as u}from"./chunk-GS55K4WJ.js";import{f as y}from"./chunk-6FLGPRBR.js";import{p as L}from"./chunk-G47V5V3U.js";import{c as x}from"./chunk-QYWGC7JV.js";import{C as I,G as R,d,r as h}from"./chunk-KYGNCIJ6.js";function g(n,a,t){let e=u(n).get(t);if(!e||e.length===0)return[];if(e.length===1)return[m(e[0])];let s=e.filter(r=>r.file===a);if(s.length>0)return s.map(m);let i=F(n,a),o=i.get(t);if(o)for(let r of o){let f=e.filter(l=>w(r,l.file));if(f.length>0)return f.map(m)}let c=new Set;for(let r of i.values())for(let f of r)c.add(f);for(let r of c){let f=e.filter(l=>w(r,l.file));if(f.length>0&&f.length===e.length)return f.map(m)}return[]}function C(n,a,t){let e=g(n,a,t);if(e.length>0)return e;let s=u(n).get(t);return!s||s.length===0?[]:s.map(m)}function E(n,a){let t=x(n,a);if(!t)return[];let e=h(t.symbol);if(!e)return[];let s=L(n,{...t,leaf:e,parentTypeName:null,isFunctionLike:!1,isTypeLike:!1,kind:null,documentation:null,enclosingSymbol:null});if(s.length>0){let o=new Map;for(let c of s){let r=o.get(c.file)??[];r.push(c.line),o.set(c.file,r)}return D(n,o)}let i=new Map;for(let o of p(n)){let c=d(n,o);if(!c||c.indexOf(e)===-1||o!==t.relativePath&&!g(n,o,e).some(l=>l.symbolId===t.symbolId))continue;let r=b(n,o,e,o===t.relativePath?{excludeStartLine:t.startLine,excludeEndLine:t.endLine}:{});r.length>0&&i.set(o,r)}return D(n,i)}function A(n,a){let t=new Map;for(let i of a){if(!i.leaf)continue;let o=t.get(i.leaf)??[];o.push(i),t.set(i.leaf,o)}if(t.size===0)return new Map;let e=new Set(a.map(i=>i.symbolId)),s=new Map;for(let i of p(n)){let o=S(n,i);if(o.size!==0){for(let c of o)if(t.has(c))for(let r of g(n,i,c)){if(!e.has(r.symbolId)||i===r.relativePath)continue;let f=s.get(r.symbolId);f||(f=new Set,s.set(r.symbolId,f)),f.add(i)}}}return s}function F(n,a){let t=new Map;for(let e of y(n,a)){if(!e.sourcePath)continue;let s=e.localName??e.importedName;if(s){let i=t.get(s);i||(i=new Set,t.set(s,i)),i.add(e.sourcePath)}if(e.kind==="namespace")for(let i of e.usedMembers){let o=t.get(i);o||(o=new Set,t.set(i,o)),o.add(e.sourcePath)}}return t}function w(n,a){let t=e=>e.replace(/\\/g,"/").replace(/^\.\//,"");return t(n)===t(a)}function m(n){return{symbolId:n.symbolId,symbol:n.symbol,relativePath:n.file}}function D(n,a){let t=[],e=new Set;for(let[s,i]of a){let o=I(n,s);for(let c of i){let r=R(o,c),f=`${s}|${c}|${r?.symbol??""}`;e.has(f)||(e.add(f),t.push({file:s,line:c,enclosingSymbol:r?.symbol??null}))}}return t}export{g as a,C as b,E as c,A as d};
2
- //# sourceMappingURL=chunk-7EQ4J66C.js.map
@@ -1,25 +0,0 @@
1
- import{k as d}from"./chunk-GS55K4WJ.js";import{D as l,q as m}from"./chunk-KYGNCIJ6.js";function y(o,t={}){let{limit:s=30,scope:e}=t,n=e?`AND def_d.relative_path LIKE '%${e}%'`:"",r=o.all(`SELECT
2
- gs.symbol,
3
- COUNT(*) AS ref_count,
4
- COUNT(DISTINCT ref_d.id) AS file_count,
5
- def_d.relative_path AS defined_in
6
- FROM mentions m
7
- JOIN chunks c ON m.chunk_id = c.id
8
- JOIN documents ref_d ON c.document_id = ref_d.id
9
- JOIN global_symbols gs ON m.symbol_id = gs.id
10
- JOIN (
11
- SELECT m2.symbol_id, c2.document_id
12
- FROM mentions m2
13
- JOIN chunks c2 ON m2.chunk_id = c2.id
14
- WHERE m2.role = 1
15
- GROUP BY m2.symbol_id
16
- ) sym_def ON sym_def.symbol_id = gs.id
17
- JOIN documents def_d ON sym_def.document_id = def_d.id
18
- WHERE m.role != 1
19
- ${o.pathExclusionsFor("def_d")}
20
- ${o.symbolNoiseFor("gs")}
21
- ${n}
22
- GROUP BY gs.id
23
- ORDER BY ref_count DESC
24
- LIMIT ?`,s).filter(i=>!o.isIgnored(i.defined_in)).map(i=>({symbol:i.symbol,shortName:m(i.symbol),refCount:i.ref_count,fileCount:i.file_count,definedIn:i.defined_in}));return r.length>0?r:f(o,e,s)}function f(o,t,s){return l(o,{scope:t}).filter(e=>!o.isIgnored(e.relativePath)).map(e=>u(o,e)).filter(e=>e.refCount>0).sort((e,n)=>n.refCount-e.refCount||n.fileCount-e.fileCount).slice(0,s)}function u(o,t){let s=d(o,t,{limit:500});return{symbol:t.symbol,shortName:m(t.symbol),refCount:s.length,fileCount:new Set(s.map(e=>e.file)).size,definedIn:t.relativePath}}export{y as a};
25
- //# sourceMappingURL=chunk-7TGEXAN5.js.map
@@ -1,2 +0,0 @@
1
- import{a as u}from"./chunk-SVUVC5VS.js";import{q as m}from"./chunk-KYGNCIJ6.js";function L(o,t){let{scope:n,minLoc:r=10,limit:a=30,scanLimit:b}=t??{},{definitions:d,callerMap:y,calleeMap:f}=C(o,n,b);return d.map(e=>{let s=e.endLine-e.startLine+1,c=y.get(e.symbolId)?.size??0,p=f.get(e.symbolId)??[],x=p.filter(l=>l.file!==e.relativePath),i=new Set(x.map(l=>`${l.symbol}|${l.file}`)).size,M=new Set(p.map(l=>`${l.symbol}|${l.file}`)).size;return{symbol:e.symbol,shortName:m(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:s,fanIn:c,fanOut:i,calleeCount:M,score:Math.round(s/50*(c/5)*Math.max(i/5,1)*100)/100}}).filter(e=>e.loc>=r).sort((e,s)=>s.score-e.score||s.loc-e.loc).slice(0,a)}function C(o,t,n){let r=new u(o),a=S(r.productionCallableDefinitions({scope:t,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof n=="number"&&n>0}),n);return{definitions:a,callerMap:r.crossFileCallerMap(a),calleeMap:r.calleeMap(a)}}function S(o,t){return typeof t!="number"||t<=0||o.length<=t?o:o.slice(0,t)}export{L as a};
2
- //# sourceMappingURL=chunk-ABLXPGAZ.js.map
@@ -1,2 +0,0 @@
1
- import{a as l}from"./chunk-SVUVC5VS.js";import{a as i}from"./chunk-QYWGC7JV.js";import{q as s,s as m,y as n}from"./chunk-KYGNCIJ6.js";function c(r,a){let t=i(r,a);return t?new l(r).definitionsForFile(t.relativePath).filter(e=>e.symbol!==t.symbol).filter(e=>n(t.symbol,e.symbol)).sort((e,o)=>e.startLine-o.startLine||e.endLine-o.endLine).map(e=>({symbol:e.symbol,shortName:s(e.symbol),startLine:e.startLine,endLine:e.endLine,kind:m(e.symbol)??"unknown"})):[]}export{c as a};
2
- //# sourceMappingURL=chunk-BG7YU4DJ.js.map
@@ -1,2 +0,0 @@
1
- import{a as m}from"./chunk-SVUVC5VS.js";import{q as f}from"./chunk-KYGNCIJ6.js";function E(e,l={}){let{scope:t,minLoc:o=10,minCallees:s=6,limit:n=20,scanLimit:c}=l,r=new m(e),i=r.productionCallableDefinitions({scope:t,minLoc:o,excludeTypesFiles:!0,requireFunctionLikeSymbol:!0,sortByLocDesc:!0}),g=L(i,c),p=r.calleeMap(g),d=[];for(let a of g){let u=b(a,p.get(a.symbolId)??[],s);u&&d.push(u)}return d.sort((a,u)=>u.clusters.length-a.clusters.length||u.loc-a.loc),d.slice(0,n)}function b(e,l,t){let o=new Set(l.map(r=>r.symbol));if(o.size<t)return null;let s=h(o,l),n=S(o,s);if(n.length<2)return null;let c=C(n,s);return c.length===0?null:{symbol:e.symbol,shortName:f(e.symbol),relativePath:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:x(e),totalCallees:o.size,clusters:c}}function h(e,l){let t=new Map;for(let s of e)t.set(s,new Set);let o=new Map;for(let s of l){let n=o.get(s.chunkId);n||(n=new Set,o.set(s.chunkId,n)),n.add(s.symbol)}for(let s of o.values()){let n=[...s];for(let c=0;c<n.length;c++)for(let r=c+1;r<n.length;r++)t.get(n[c]).add(n[r]),t.get(n[r]).add(n[c])}return t}function S(e,l){let t=new Set,o=[];for(let s of e){if(t.has(s))continue;let n=new Set,c=[s];for(;c.length>0;){let r=c.pop();if(!t.has(r)){t.add(r),n.add(r);for(let i of l.get(r)??[])t.has(i)||c.push(i)}}o.push(n)}return o}function C(e,l){return e.filter(t=>t.size>=3).map(t=>y(t,e,l)).filter(t=>t.isolation>.5).sort((t,o)=>o.isolation-t.isolation)}function y(e,l,t){let o=new Set;for(let r of l)if(r!==e)for(let i of r)o.add(i);let s=0;for(let r of e)for(let i of t.get(r)??[])o.has(i)&&s++;let n=e.size*o.size,c=n>0?1-s/n:1;return{callees:[...e].map(f),isolation:c}}function x(e){return e.endLine-e.startLine+1}function L(e,l){return typeof l!="number"||l<=0||e.length<=l?e:e.slice(0,l)}export{E as a};
2
- //# sourceMappingURL=chunk-D2R6IIEO.js.map
@@ -1,2 +0,0 @@
1
- import{j as a,k as n}from"./chunk-GS55K4WJ.js";import{a as m}from"./chunk-QYWGC7JV.js";import{q as i}from"./chunk-KYGNCIJ6.js";function p(e,s){let o=m(e,s);if(!o)return null;let t=n(e,o,{limit:50}),r=y(a(e,o,{limit:50,additive:!0,callableOnly:!0}));return{symbol:o.symbol,shortName:i(o.symbol),callers:t.map(l=>({symbol:l.symbol,shortName:i(l.symbol),file:l.file})),callees:r.map(l=>({symbol:l.symbol,shortName:i(l.symbol),file:l.file}))}}function y(e){let s=new Set,o=[];for(let t of e){let r=`${t.symbol}|${t.file}`;s.has(r)||(s.add(r),o.push(t))}return o}export{p as a};
2
- //# sourceMappingURL=chunk-E47WMJ5F.js.map
@@ -1,11 +0,0 @@
1
- import{a as d}from"./chunk-55ZJ2FCW.js";import{a as c}from"./chunk-SVUVC5VS.js";import{q as m}from"./chunk-G47V5V3U.js";import{q as u}from"./chunk-KYGNCIJ6.js";function I(e,n){let r=d(e,n);if(!r)return null;let t=p(e,r);if(!t||e.isIgnored(t.relative_path))return null;let s=[],i=0,l=h(e,t.relative_path),f=m(e,l);for(let o of l){let a=g(e,t,o,f.get(o.symbolId)??new Set);i+=a,s.push({symbol:o.symbol,shortName:u(o.symbol),startLine:o.startLine,endLine:o.endLine,externalConsumers:a,riskLevel:S(a)})}return{file:t.relative_path,symbols:s,totalExternalConsumers:i}}function p(e,n){return e.get(`SELECT id, relative_path FROM documents
2
- WHERE relative_path = ?
3
- ${e.pathExclusionsFor("documents")}
4
- LIMIT 1`,n)??null}function h(e,n){return new c(e).definitionsForFile(n).sort((r,t)=>r.startLine-t.startLine||r.endLine-t.endLine)}function g(e,n,r,t){let s=e.all(`SELECT DISTINCT consumer_d.relative_path
5
- FROM mentions m
6
- JOIN chunks c ON m.chunk_id = c.id
7
- JOIN documents consumer_d ON consumer_d.id = c.document_id
8
- WHERE m.symbol_id = ?
9
- AND m.role != 1
10
- AND c.document_id != ?`,r.symbolId,n.id);return new Set([...s.map(i=>i.relative_path),...[...t].filter(i=>i!==n.relative_path)]).size}function S(e){return e>10?"high":e>0?"medium":"low"}export{I as a};
11
- //# sourceMappingURL=chunk-EEA3R37V.js.map