scip-query 0.6.0 → 0.6.2
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.
- package/README.md +14 -7
- package/dist/{chunk-FCC3XJTI.js → chunk-26LSAIEP.js} +2 -2
- package/dist/{chunk-SG35Y7J2.js → chunk-2HEJQBMS.js} +2 -2
- package/dist/chunk-3FG3VLK3.js +65 -0
- package/dist/{chunk-DE5ZBHMK.js → chunk-3J463LOK.js} +2 -2
- package/dist/{chunk-XVDASCN7.js → chunk-3QJ2NOYG.js} +2 -2
- package/dist/{chunk-AJ5PWKD4.js → chunk-3T53QAUS.js} +2 -2
- package/dist/chunk-435YC4OF.js +2 -0
- package/dist/chunk-4LBOHXT7.js +6 -0
- package/dist/chunk-5IM4IQ6N.js +2 -0
- package/dist/{chunk-BDBRZPX3.js → chunk-5NRGSXZQ.js} +2 -2
- package/dist/chunk-5V76WMMZ.js +5 -0
- package/dist/{chunk-HMKJTAZD.js → chunk-5VU2RVKI.js} +2 -2
- package/dist/{chunk-NTDA4A2D.js → chunk-5W22HCSF.js} +2 -2
- package/dist/{chunk-IBGBI3VU.js → chunk-67UXTIFZ.js} +2 -2
- package/dist/{chunk-SDX6MDBL.js → chunk-6ALIV5SZ.js} +2 -2
- package/dist/{chunk-K5FQFCSN.js → chunk-6CTMG3IF.js} +2 -2
- package/dist/{chunk-BQ3INTYT.js → chunk-6XP3KWHC.js} +2 -2
- package/dist/chunk-7DKDFRXQ.js +7 -0
- package/dist/{chunk-LX4H4LLG.js → chunk-7NEBSLI3.js} +2 -2
- package/dist/chunk-AEMTUHQ7.js +2 -0
- package/dist/{chunk-Y7LOQSWY.js → chunk-AVLUWGXG.js} +2 -2
- package/dist/chunk-AZQ3ENHU.js +2 -0
- package/dist/{chunk-ZXKURFVB.js → chunk-AZTWY4OT.js} +2 -2
- package/dist/{chunk-BE6EQIWY.js → chunk-CHW7433E.js} +2 -2
- package/dist/chunk-CW5K3KIF.js +12 -0
- package/dist/{chunk-ZSRXMNMK.js → chunk-F6F2QUIH.js} +3 -3
- package/dist/{chunk-D7KLLMPB.js → chunk-FJV7QT4G.js} +2 -2
- package/dist/chunk-FPDWFGBQ.js +19 -0
- package/dist/chunk-G2SX5EHW.js +2 -0
- package/dist/{chunk-RWE6FHG3.js → chunk-GK6VXKLY.js} +2 -2
- package/dist/{chunk-STOGKRJH.js → chunk-HS5LX75F.js} +2 -2
- package/dist/{chunk-D7YBWSON.js → chunk-HS65NNKP.js} +2 -2
- package/dist/{chunk-DHYIJHXZ.js → chunk-LKCPNPHH.js} +2 -2
- package/dist/{chunk-JS2RNIC7.js → chunk-MQ5FKM2F.js} +2 -2
- package/dist/{chunk-WTSTDJZ7.js → chunk-NFOSOUH6.js} +2 -2
- package/dist/{chunk-4QJ7LVW5.js → chunk-NLWXQMKR.js} +2 -2
- package/dist/{chunk-YIPCV7M7.js → chunk-ORD3HEWI.js} +2 -2
- package/dist/{chunk-2RLP74AO.js → chunk-OU2D2T4A.js} +2 -2
- package/dist/{chunk-NXMYYHDO.js → chunk-P6IUCZA3.js} +2 -2
- package/dist/{chunk-2DSS2NGF.js → chunk-PU7P5NPE.js} +2 -2
- package/dist/chunk-QSTMORTI.js +2 -0
- package/dist/{chunk-QXE6EDY2.js → chunk-RC2PKZSS.js} +2 -2
- package/dist/chunk-S65VVU3R.js +2 -0
- package/dist/{chunk-IYFZS4PV.js → chunk-SPMLGXCE.js} +5 -5
- package/dist/{chunk-GXVB36TG.js → chunk-T26XHATT.js} +2 -2
- package/dist/chunk-TWYHFB5K.js +2 -0
- package/dist/{chunk-XAZTIDST.js → chunk-TXADWK4I.js} +2 -2
- package/dist/chunk-YRUHPGC3.js +7 -0
- package/dist/chunk-ZJM2HD2Z.js +2 -0
- package/dist/chunk-ZORIMKQO.js +2 -0
- package/dist/cli.js +218 -169
- package/dist/{db-BSTtBG_H.d.ts → db-DKhNQ75l.d.ts} +15 -1
- package/dist/index.d.ts +36 -3
- package/dist/index.js +60 -12
- package/dist/queries/affected.d.ts +1 -1
- package/dist/queries/affected.js +1 -1
- package/dist/queries/bottlenecks.d.ts +1 -1
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +1 -1
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +1 -1
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +1 -1
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/code.d.ts +1 -1
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +1 -1
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +1 -1
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +1 -1
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +1 -1
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +1 -1
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +1 -1
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +1 -1
- package/dist/queries/dead.js +1 -1
- package/dist/queries/deep-chains.d.ts +1 -1
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +1 -1
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-impact.d.ts +1 -1
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/drift.d.ts +1 -1
- package/dist/queries/drift.js +1 -1
- package/dist/queries/extract-candidates.d.ts +1 -1
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +1 -1
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +1 -1
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +1 -1
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +1 -1
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +1 -1
- package/dist/queries/imports.js +1 -1
- package/dist/queries/index.d.ts +1 -1
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +1 -1
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/members.d.ts +1 -1
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +1 -1
- package/dist/queries/methods.js +1 -1
- package/dist/queries/outline.d.ts +1 -1
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +1 -1
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +1 -1
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +1 -1
- package/dist/queries/refs.js +1 -1
- package/dist/queries/similar-chains.d.ts +1 -1
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +1 -1
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +1 -1
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +1 -1
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +1 -1
- package/dist/queries/slice.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +2 -1
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +1 -1
- package/dist/queries/surface.d.ts +1 -1
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +1 -1
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system.d.ts +1 -1
- package/dist/queries/system.js +1 -1
- package/dist/queries/trace.d.ts +1 -1
- package/dist/queries/trace.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +1 -1
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +63 -5
- package/package.json +15 -16
- package/skills/concrete-plan/SKILL.md +51 -25
- package/skills/scip-debloat/SKILL.md +3 -6
- package/skills/scip-language-playbook/SKILL.md +2 -0
- package/dist/chunk-5IADAU5B.js +0 -7
- package/dist/chunk-7754WFFV.js +0 -18
- package/dist/chunk-7VOF4ZG6.js +0 -2
- package/dist/chunk-7Z4COVMC.js +0 -2
- package/dist/chunk-EEF3YEHW.js +0 -2
- package/dist/chunk-F2LLHRRZ.js +0 -2
- package/dist/chunk-GNXRLK5G.js +0 -2
- package/dist/chunk-JH3A7HTU.js +0 -2
- package/dist/chunk-K6GBKEQE.js +0 -6
- package/dist/chunk-KO7YJRWP.js +0 -12
- package/dist/chunk-PZ6ESKRH.js +0 -7
- package/dist/chunk-RJ7SPBJ5.js +0 -5
- package/dist/chunk-TINPMWJK.js +0 -2
- package/dist/chunk-UJB62HV3.js +0 -2
- package/dist/chunk-VEUMRDHW.js +0 -2
- package/dist/chunk-WCDXJGYT.js +0 -65
- package/dist/chunk-Y7H6D2EV.js +0 -2
|
@@ -689,6 +689,8 @@ interface ScipQueryConfig {
|
|
|
689
689
|
indexPath: string;
|
|
690
690
|
/** Project root directory */
|
|
691
691
|
projectRoot: string;
|
|
692
|
+
/** Project-specific externally-live roots for dead-code filtering */
|
|
693
|
+
entryRoots?: EntryRootsConfig;
|
|
692
694
|
/** Paths to .gitignore files to load for filtering */
|
|
693
695
|
gitignorePaths?: string[];
|
|
694
696
|
}
|
|
@@ -701,6 +703,18 @@ interface ProjectConfig {
|
|
|
701
703
|
indexer?: Partial<Record<SupportedLanguage, IndexerOverrides>>;
|
|
702
704
|
/** Override the database storage path (default: ~/.cache/scip-query/<hash>/) */
|
|
703
705
|
dbPath?: string;
|
|
706
|
+
/** Project-specific externally-live roots for dead-code filtering */
|
|
707
|
+
entryRoots?: EntryRootsConfig;
|
|
708
|
+
}
|
|
709
|
+
interface EntryRootsConfig {
|
|
710
|
+
/** Any symbol defined in these path prefixes is externally live */
|
|
711
|
+
pathPrefixes?: string[];
|
|
712
|
+
/** Any symbol defined in these exact files is externally live */
|
|
713
|
+
files?: string[];
|
|
714
|
+
/** Symbols matching these regular expressions are externally live */
|
|
715
|
+
symbolPatterns?: string[];
|
|
716
|
+
/** Qualified var names like my.ns/my-fn that are externally live */
|
|
717
|
+
qualifiedVars?: string[];
|
|
704
718
|
}
|
|
705
719
|
interface WatchConfig {
|
|
706
720
|
/** Enable file watching (default: false, must opt in) */
|
|
@@ -807,4 +821,4 @@ declare class ScipDatabase {
|
|
|
807
821
|
close(): void;
|
|
808
822
|
}
|
|
809
823
|
|
|
810
|
-
export { type DeadSymbolResult as $, type AffectedResult as A, type BottleneckResult as B, type CallGraphResult as C, type DataflowResult as D, type ExtractCandidate as E, type FanResult as F, type SimilarChainResult as G, type HealthReport as H, type ImportResult as I, type StaleAbstraction as J, type SliceResult as K, type SimilarSignatureGroup as L, type MemberResult as M, type ScipSymbol as N, type OutlineNode as O, type PassthroughCandidate as P, type ScipLocalSymbol as Q, type RedundantReexport as R, ScipDatabase as S, type TraceResult as T, type UnusedImportResult as U, type SupportedLanguage as V, type WrapperCandidate as W, type IndexerConfig as X, type ProjectConfig as Y, type WatcherStatus as Z, type ChangeSurfaceEntry as _, type ByKindResult as a, type DescriptorSuffix as a0, type DocumentPathCandidate as a1, type DriftResult as a2, type
|
|
824
|
+
export { type DeadSymbolResult as $, type AffectedResult as A, type BottleneckResult as B, type CallGraphResult as C, type DataflowResult as D, type ExtractCandidate as E, type FanResult as F, type SimilarChainResult as G, type HealthReport as H, type ImportResult as I, type StaleAbstraction as J, type SliceResult as K, type SimilarSignatureGroup as L, type MemberResult as M, type ScipSymbol as N, type OutlineNode as O, type PassthroughCandidate as P, type ScipLocalSymbol as Q, type RedundantReexport as R, ScipDatabase as S, type TraceResult as T, type UnusedImportResult as U, type SupportedLanguage as V, type WrapperCandidate as W, type IndexerConfig as X, type ProjectConfig as Y, type WatcherStatus as Z, type ChangeSurfaceEntry as _, type ByKindResult as a, type DescriptorSuffix as a0, type DocumentPathCandidate as a1, type DriftResult as a2, type EntryRootsConfig as a3, type HealthAction as a4, type IndexedDefinition as a5, type IndexerOverrides as a6, type InstallMethod as a7, type ParsedReExport as a8, type ParsedSourceExport as a9, type ParsedSourceImport as aa, type ReferenceSite as ab, type ScipDescriptor as ac, type ScipQueryConfig as ad, type SymbolLocation as ae, type SymbolMatch as af, type WatchConfig as ag, createGitignoreFilter as ah, type ChangeSurfaceResult as b, type CodeResult as c, type ComplexityHotspot as d, type ComplexityResult as e, type ConvergenceResult as f, type CouplingResult as g, type CycleResult as h, type DeadOptions as i, type DeadSummary as j, type DeepChainResult as k, type DepResult as l, type DiffImpactResult as m, type DriftSummary as n, type FileResult as o, type HierarchyNode as p, type HotspotResult as q, type IsolatedResult as r, type MethodResult as s, type StatsResult as t, type SymbolResult as u, type RefResult as v, type SystemResult as w, type SurfaceResult as x, type SimilarSymbolResult as y, type SimilarFileResult as z };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { N as ScipSymbol, Q as ScipLocalSymbol, V as SupportedLanguage, X as IndexerConfig, Y as ProjectConfig, Z as WatcherStatus } from './db-
|
|
2
|
-
export { A as AffectedResult, B as BottleneckResult, a as ByKindResult, C as CallGraphResult, _ as ChangeSurfaceEntry, b as ChangeSurfaceResult, c as CodeResult, d as ComplexityHotspot, e as ComplexityResult, f as ConvergenceResult, g as CouplingResult, h as CycleResult, D as DataflowResult, i as DeadOptions, j as DeadSummary, $ as DeadSymbolResult, k as DeepChainResult, l as DepResult, a0 as DescriptorSuffix, m as DiffImpactResult, a1 as DocumentPathCandidate, a2 as DriftResult, n as DriftSummary, E as ExtractCandidate, F as FanResult, o as FileResult,
|
|
1
|
+
import { N as ScipSymbol, Q as ScipLocalSymbol, V as SupportedLanguage, X as IndexerConfig, Y as ProjectConfig, Z as WatcherStatus } from './db-DKhNQ75l.js';
|
|
2
|
+
export { A as AffectedResult, B as BottleneckResult, a as ByKindResult, C as CallGraphResult, _ as ChangeSurfaceEntry, b as ChangeSurfaceResult, c as CodeResult, d as ComplexityHotspot, e as ComplexityResult, f as ConvergenceResult, g as CouplingResult, h as CycleResult, D as DataflowResult, i as DeadOptions, j as DeadSummary, $ as DeadSymbolResult, k as DeepChainResult, l as DepResult, a0 as DescriptorSuffix, m as DiffImpactResult, a1 as DocumentPathCandidate, a2 as DriftResult, n as DriftSummary, a3 as EntryRootsConfig, E as ExtractCandidate, F as FanResult, o as FileResult, a4 as HealthAction, H as HealthReport, p as HierarchyNode, q as HotspotResult, I as ImportResult, a5 as IndexedDefinition, a6 as IndexerOverrides, a7 as InstallMethod, r as IsolatedResult, M as MemberResult, s as MethodResult, O as OutlineNode, a8 as ParsedReExport, a9 as ParsedSourceExport, aa as ParsedSourceImport, P as PassthroughCandidate, R as RedundantReexport, v as RefResult, ab as ReferenceSite, S as ScipDatabase, ac as ScipDescriptor, ad as ScipQueryConfig, G as SimilarChainResult, z as SimilarFileResult, L as SimilarSignatureGroup, y as SimilarSymbolResult, K as SliceResult, J as StaleAbstraction, t as StatsResult, x as SurfaceResult, ae as SymbolLocation, af as SymbolMatch, u as SymbolResult, w as SystemResult, T as TraceResult, U as UnusedImportResult, ag as WatchConfig, W as WrapperCandidate, ah as createGitignoreFilter } from './db-DKhNQ75l.js';
|
|
3
3
|
export { stats } from './queries/stats.js';
|
|
4
4
|
export { files } from './queries/files.js';
|
|
5
5
|
export { symbols } from './queries/symbols.js';
|
|
@@ -78,6 +78,39 @@ declare function leafName(raw: string): string;
|
|
|
78
78
|
*/
|
|
79
79
|
declare function detectLanguages(projectRoot: string): SupportedLanguage[];
|
|
80
80
|
|
|
81
|
+
interface AugmentAuxiliaryDocumentsOptions {
|
|
82
|
+
projectRoot: string;
|
|
83
|
+
dbPath: string;
|
|
84
|
+
extensions?: readonly string[];
|
|
85
|
+
onStatus?: (message: string) => void;
|
|
86
|
+
}
|
|
87
|
+
interface AugmentAuxiliaryDocumentsResult {
|
|
88
|
+
scanned: number;
|
|
89
|
+
inserted: number;
|
|
90
|
+
existing: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Add source files that upstream SCIP indexers skipped to the SQLite
|
|
94
|
+
* documents table. Vue SFCs are the motivating case: scip-typescript can
|
|
95
|
+
* resolve imports to generated TS, but it does not emit `.vue` documents.
|
|
96
|
+
*/
|
|
97
|
+
declare function augmentAuxiliaryDocuments(opts: AugmentAuxiliaryDocumentsOptions): AugmentAuxiliaryDocumentsResult;
|
|
98
|
+
|
|
99
|
+
interface AugmentVueResolvedOptions {
|
|
100
|
+
projectRoot: string;
|
|
101
|
+
dbPath: string;
|
|
102
|
+
tsconfig: string;
|
|
103
|
+
onStatus?: (message: string) => void;
|
|
104
|
+
}
|
|
105
|
+
interface AugmentVueResolvedResult {
|
|
106
|
+
vueFiles: number;
|
|
107
|
+
resolvedReferences: number;
|
|
108
|
+
insertedMentions: number;
|
|
109
|
+
skippedReferences: number;
|
|
110
|
+
syntheticSymbols: number;
|
|
111
|
+
}
|
|
112
|
+
declare function augmentVueResolvedReferences(opts: AugmentVueResolvedOptions): AugmentVueResolvedResult;
|
|
113
|
+
|
|
81
114
|
/**
|
|
82
115
|
* Indexer configurations for each supported language.
|
|
83
116
|
* Each entry describes how to produce a SCIP index for that language.
|
|
@@ -274,4 +307,4 @@ declare function installSkills(opts?: {
|
|
|
274
307
|
quiet?: boolean;
|
|
275
308
|
}): InstallSkillsResult;
|
|
276
309
|
|
|
277
|
-
export { INDEXER_CONFIGS, IndexerConfig, ProjectConfig, ScipLocalSymbol, ScipSymbol, SupportedLanguage, Watcher, WatcherStatus, detectLanguages, getIndexerConfig, getScipVersion, initProjectConfig, installSkills, isBinaryAvailable, isIndexerInstalled, isScipInstalled, leafName, loadProjectConfig, mergeScipFiles, mergeScipIndexes, parseSymbol, printScipInstallInstructions, reindex, resolveCacheDir, resolveIndexPaths, shortenSymbol, tryInstallIndexer, tryInstallScipCli };
|
|
310
|
+
export { INDEXER_CONFIGS, IndexerConfig, ProjectConfig, ScipLocalSymbol, ScipSymbol, SupportedLanguage, Watcher, WatcherStatus, augmentAuxiliaryDocuments, augmentVueResolvedReferences, detectLanguages, getIndexerConfig, getScipVersion, initProjectConfig, installSkills, isBinaryAvailable, isIndexerInstalled, isScipInstalled, leafName, loadProjectConfig, mergeScipFiles, mergeScipIndexes, parseSymbol, printScipInstallInstructions, reindex, resolveCacheDir, resolveIndexPaths, shortenSymbol, tryInstallIndexer, tryInstallScipCli };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-FVH3Y44U.js";import{a as
|
|
1
|
+
import"./chunk-FVH3Y44U.js";import{a as zn}from"./chunk-HS65NNKP.js";import{a as Wn}from"./chunk-ZORIMKQO.js";import{a as qn}from"./chunk-3QJ2NOYG.js";import{a as Un}from"./chunk-HS5LX75F.js";import{a as Vn}from"./chunk-7DKDFRXQ.js";import{a as xr}from"./chunk-AVLUWGXG.js";import{a as yr}from"./chunk-NLWXQMKR.js";import{a as Fr}from"./chunk-TXADWK4I.js";import{a as Dr}from"./chunk-3T53QAUS.js";import{a as Kn,b as Qn,c as Yn}from"./chunk-3J463LOK.js";import{a as er}from"./chunk-CHW7433E.js";import{a as Bn}from"./chunk-MQ5FKM2F.js";import{a as Zn}from"./chunk-OU2D2T4A.js";import{a as Tr}from"./chunk-ORD3HEWI.js";import{a as Ir}from"./chunk-P6IUCZA3.js";import{a as tr,b as nr,c as rr,d as ir}from"./chunk-T26XHATT.js";import{a as Mn}from"./chunk-KYT47WU2.js";import{a as Pr}from"./chunk-ZJM2HD2Z.js";import{a as kr}from"./chunk-YRUHPGC3.js";import{a as fr,b as hr}from"./chunk-4LBOHXT7.js";import"./chunk-LORWXBOO.js";import{a as Er}from"./chunk-5V76WMMZ.js";import{a as $n}from"./chunk-N3Z2SJCR.js";import{a as cr}from"./chunk-AZQ3ENHU.js";import{a as Cr}from"./chunk-TWYHFB5K.js";import{a as wr}from"./chunk-FPDWFGBQ.js";import{a as br}from"./chunk-G2SX5EHW.js";import{a as dr}from"./chunk-GK6VXKLY.js";import{a as Xn}from"./chunk-5W22HCSF.js";import{a as _r}from"./chunk-5NRGSXZQ.js";import{a as Lr}from"./chunk-5VU2RVKI.js";import{a as sr,b as or}from"./chunk-AZTWY4OT.js";import{a as ar}from"./chunk-435YC4OF.js";import{a as Nr}from"./chunk-2HEJQBMS.js";import{a as Jn}from"./chunk-CW5K3KIF.js";import"./chunk-QSTMORTI.js";import{a as pr}from"./chunk-67UXTIFZ.js";import{a as Hn,b as Gn}from"./chunk-LKCPNPHH.js";import{a as Sr}from"./chunk-FJV7QT4G.js";import{a as lr}from"./chunk-6CTMG3IF.js";import{a as ur,b as gr}from"./chunk-6ALIV5SZ.js";import{a as mr}from"./chunk-26LSAIEP.js";import{a as vr}from"./chunk-PU7P5NPE.js";import{a as jr}from"./chunk-RC2PKZSS.js";import"./chunk-NFOSOUH6.js";import{a as Rr}from"./chunk-S65VVU3R.js";import"./chunk-AEMTUHQ7.js";import{a as ae,b as le}from"./chunk-F6F2QUIH.js";import"./chunk-3FG3VLK3.js";import"./chunk-6XP3KWHC.js";import"./chunk-7NEBSLI3.js";import"./chunk-SPMLGXCE.js";import{a as He,b as Ge,c as qe}from"./chunk-5IM4IQ6N.js";import ze from"better-sqlite3";import{statSync as ce}from"fs";var U=class{db;config;pathFilter;constructor(t,r){this.config=t,this.pathFilter=r??null,this.db=new ze(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
|
|
2
2
|
EXISTS (
|
|
3
3
|
SELECT 1
|
|
4
4
|
FROM defn_enclosing_ranges local_der
|
|
@@ -15,8 +15,8 @@ import"./chunk-FVH3Y44U.js";import{a as cn}from"./chunk-D7YBWSON.js";import{a as
|
|
|
15
15
|
AND local_m.role = 1
|
|
16
16
|
${this.pathExclusionsFor("local_d").trimStart()}
|
|
17
17
|
)
|
|
18
|
-
)`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...
|
|
19
|
-
`)}symbolNoiseFor(
|
|
18
|
+
)`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...t){return t.flatMap(r=>[`AND ${r}.relative_path NOT LIKE 'node_modules/%'`,`AND ${r}.relative_path NOT LIKE '.git/%'`]).join(`
|
|
19
|
+
`)}symbolNoiseFor(t){return`AND ${t}.symbol NOT LIKE '%().(%' AND ${t}.symbol NOT LIKE '%typeLiteral%'`}all(t,...r){return this.db.prepare(t).all(...r)}get(t,...r){return this.db.prepare(t).get(...r)}sizeBytes(){try{return ce(this.config.dbPath).size}catch{return 0}}lastModified(){try{return ce(this.config.dbPath).mtime}catch{return null}}close(){this.db.close()}};import Je from"ignore";import{readFileSync as Xe,existsSync as H}from"fs";import{dirname as G,isAbsolute as ue,join as q,relative as Ke,resolve as Qe}from"path";function C(e){let t=Je(),r=!1,n=Ye(e);for(let i of n)try{let s=Xe(i,"utf-8");t.add(s),r=!0}catch{}return r||t.add(Ze),{isIgnored:i=>ge(t,e,i),filter:i=>i.filter(s=>!ge(t,e,s))}}function Ye(e){let t=[],r=q(e,".gitignore");H(r)&&t.push(r);let n=G(e),i=0;for(;n!==G(n)&&i<5;){let s=q(n,".gitignore");if(H(s)&&t.push(s),H(q(n,".git")))break;n=G(n),i++}return t}var Ze=`
|
|
20
20
|
# Dependencies
|
|
21
21
|
node_modules/
|
|
22
22
|
vendor/
|
|
@@ -73,14 +73,62 @@ Thumbs.db
|
|
|
73
73
|
|
|
74
74
|
# Type definitions (often noise in queries)
|
|
75
75
|
*.d.ts
|
|
76
|
-
`;function
|
|
77
|
-
`),console.log("Or download manually:")):console.log("Download from:"),console.log(
|
|
78
|
-
`:` https://github.com/sourcegraph/scip/releases/tag/${
|
|
79
|
-
`),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function w(t){if(k()==="darwin"&&C("brew")){t("Installing scip CLI via Homebrew...");try{if(S("brew",["install","sourcegraph/scip/scip"],{stdio:"inherit",timeout:3e5,env:process.env}),C("scip"))return t("Successfully installed scip CLI via Homebrew"),!0}catch(e){let n=e instanceof Error?e.message:String(e);t(`Homebrew install failed: ${n}`)}}if(C("go")){t("Installing scip CLI via go install...");try{if(S("go",["install","github.com/sourcegraph/scip/cmd/scip@latest"],{stdio:"inherit",timeout:3e5,env:process.env}),C("scip"))return t("Successfully installed scip CLI via go install"),!0}catch(e){let n=e instanceof Error?e.message:String(e);t(`go install failed: ${n}`)}}return t("Could not auto-install scip CLI."),t("Install manually from: https://github.com/sourcegraph/scip/releases"),!1}import{existsSync as Ke,readdirSync as ae}from"fs";import{extname as Qe,join as le}from"path";var Ve=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),Ye=[{language:"typescript",files:["tsconfig.json","tsconfig.base.json"],extensions:[".ts",".tsx",".mts",".cts"]},{language:"rust",files:["Cargo.toml"],extensions:[".rs"]},{language:"go",files:["go.mod"],extensions:[".go"]},{language:"java",files:["pom.xml","build.gradle","build.gradle.kts"],extensions:[".java"]},{language:"kotlin",files:["build.gradle.kts"],extensions:[".kt",".kts"]},{language:"scala",files:["build.sbt"],extensions:[".scala"]},{language:"python",files:["pyproject.toml","setup.py","setup.cfg","Pipfile"],extensions:[".py",".pyi"]},{language:"ruby",files:["Gemfile"],extensions:[".rb"]},{language:"cpp",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"]},{language:"c",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".c",".h"]},{language:"csharp",globs:["*.csproj","*.sln"],extensions:[".cs"]},{language:"vb",globs:["*.vbproj"],extensions:[".vb"]},{language:"dart",files:["pubspec.yaml"],extensions:[".dart"]},{language:"php",files:["composer.json"],extensions:[".php"]},{language:"javascript",files:["package.json"],extensions:[".js",".jsx",".mjs",".cjs"]}];function P(t){let e=[],n=Ze(t),r=rt(t);for(let i of Ye){if(et(t,i.files)){e.push(i.language);continue}if(tt(n,i.globs)){e.push(i.language);continue}it(r,i.extensions)&&e.push(i.language)}return e.includes("typescript")&&oe(e,"javascript"),e.includes("cpp")&&!r.has(".c")&&oe(e,"c"),e}function Ze(t){try{return ae(t)}catch{return[]}}function et(t,e){return e?.length?e.some(n=>Ke(le(t,n))):!1}function tt(t,e){return e?.length?t.some(n=>e.some(r=>nt(n,r))):!1}function nt(t,e){if(e==="*")return!0;if(!e.includes("*"))return t===e;let[n,r]=e.split("*");return t.startsWith(n??"")&&t.endsWith(r??"")}function rt(t){let e=new Set,n=[t];for(;n.length>0;){let r=n.pop();if(!r)continue;let i;try{i=ae(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let a=le(r,s.name);if(s.isDirectory()){Ve.has(s.name)||n.push(a);continue}let m=Qe(s.name).toLowerCase();m&&e.add(m)}}return e}function it(t,e){return e?.length?e.some(n=>t.has(n)):!1}function oe(t,e){let n=t.indexOf(e);n!==-1&&t.splice(n,1)}import{existsSync as ce,readdirSync as st}from"fs";import{join as M}from"path";var W={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,pnpmWorkspaces:e})=>{let n=["scip-typescript","index","--infer-tsconfig","--output",t,"--no-progress-bar"];return e&&n.splice(2,0,"--pnpm-workspaces"),{binary:"npx",args:n}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t})=>({binary:"npx",args:["scip-typescript","index","--infer-tsconfig","--output",t,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:t})=>({binary:"rust-analyzer",args:["scip",".","--output",t]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python",binaryAliases:["scip-python-plus"],checkCommand:"npx scip-python --version",indexArgs:({outputPath:t})=>({binary:"npx",args:["scip-python","index","--output",t,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:t})=>({binary:t,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:t})=>({binary:"scip-go",args:["--output",t]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ue(t,[".sln",".csproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ue(t,[".sln",".vbproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:t,outputPath:e})=>({binary:t,args:["--output",e]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:t,indexerBinary:e})=>{let n=M(t,"vendor","bin","scip-php"),r=M(t,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",ce(r)?r:ce(n)?n:e]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function E(t){return W[t]}function ue(t,e){let n;try{n=st(t)}catch{return null}for(let r of n)if(e.some(i=>r.endsWith(i)))return M(t,r);return null}import{readFileSync as ot,writeFileSync as at}from"fs";import{create as U}from"@bufbuild/protobuf";import{deserializeSCIP as lt,serializeSCIP as ct,DocumentSchema as ut,IndexSchema as pt,SymbolInformationSchema as dt}from"@c4312/scip";function q(t){if(t.length===0)throw new Error("Cannot merge zero SCIP indexes");if(t.length===1)return t[0];let e=gt(t),n=ht(t.flatMap(i=>i.documents??[])),r=pe(t.flatMap(i=>i.externalSymbols??[]));return U(pt,{metadata:e,documents:n,externalSymbols:r})}function j(t,e){if(t.length===0)throw new Error("Cannot merge zero SCIP files");let n=t.map(i=>lt(ot(i))),r=q(n);return at(e,Buffer.from(ct(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:t.length}}function gt(t){let e=t[0]?.metadata;if(!e)return;let n=e.projectRoot;for(let r of t.slice(1)){let i=r.metadata?.projectRoot;if(n&&i&&i!==n)throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${i}`)}return e}function ht(t){let e=new Map;for(let n of t){let r=e.get(n.relativePath);if(!r){e.set(n.relativePath,n);continue}e.set(n.relativePath,U(ut,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:[...r.occurrences,...n.occurrences],symbols:pe([...r.symbols,...n.symbols]),text:ft(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...e.values()]}function pe(t){let e=new Map;for(let n of t){let r=e.get(n.symbol);if(!r){e.set(n.symbol,n);continue}e.set(n.symbol,U(dt,{symbol:r.symbol,documentation:yt([...r.documentation,...n.documentation]),relationships:mt([...r.relationships,...n.relationships]),kind:r.kind||n.kind,displayName:r.displayName||n.displayName,enclosingSymbol:r.enclosingSymbol||n.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??n.signatureDocumentation}))}return[...e.values()]}function mt(t){let e=new Set,n=[];for(let r of t){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");e.has(i)||(e.add(i),n.push(r))}return n}function ft(t,e){return t?e?t.length>=e.length?t:e:t:e}function yt(t){return[...new Set(t)]}import{execFileSync as _}from"child_process";import{existsSync as H}from"fs";import{createRequire as xt}from"module";import{platform as de}from"os";import{join as ge}from"path";var bt=xt(import.meta.url),vt=de()==="win32";function f(t){let e=vt?"where":"which";try{return _(e,[t],{stdio:"pipe"}),!0}catch{return!1}}function he(t){return[t.indexerBinary,...t.binaryAliases??[]]}function R(t){let e=he(t);return e.length===1?e[0]:e.join(" or ")}function I(t){for(let e of he(t))if(f(e))return e;return me(t)?t.indexerBinary:null}function D(t){return I(t)!==null||me(t)}function me(t){if(!t.bundledNpmPackage)return!1;try{return bt.resolve(`${t.bundledNpmPackage}/package.json`),!0}catch{return!1}}function G(t,e){for(let n of t.projectLocalBinaries??[]){let r=ge(e,n);if(H(r))return r}return null}function z(t,e=process.env,n=t.indexerBinary){if(t.indexerBinary!=="scip-dotnet"||fe(n,e))return e;let r=St(n,e);return r?{...e,DOTNET_ROOT:r}:e}function $(t,e){let n=t.installMethods,r=R(t);if(!n?.length)return e(`No auto-install method available for ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1;for(let i of n)if(f(i.prerequisite)){e(`Installing ${r} via ${i.label}...`);try{_(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=I(t);if(s){let a=s===t.indexerBinary?"":` (using ${s})`;return e(`Successfully installed ${r} via ${i.label}${a}`),!0}e(`${i.label} command completed but ${r} was not found on PATH`)}catch(s){let a=s instanceof Error?s.message:String(s);e(`${i.label} install failed: ${a}`)}}return e(`Could not auto-install ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1}function St(t,e){for(let n of It(e))if(fe(t,{...e,DOTNET_ROOT:n}))return n;return null}function It(t){let e=[],n=t.DOTNET_ROOT;if(n&&H(n)&&e.push(n),de()==="darwin"&&f("brew"))try{let r=_("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:t}).toString().trim(),i=ge(r,"libexec");H(i)&&!e.includes(i)&&e.push(i)}catch{}return e}function fe(t,e){try{return _(t,["--version"],{stdio:"pipe",env:e}),!0}catch{return!1}}async function Et(t){let{projectRoot:e,maxHeapMb:n=8192,onStatus:r=console.log,skipAutoInstall:i=!1}=t,s=t.outputScip??T(e,"index.scip"),a=t.outputDb??T(e,"index.db"),m=Date.now(),l=t.languages??P(e);if(l.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");if(r(`Detected languages: ${l.join(", ")}`),!f("scip")){if(i)throw new Error(`The scip CLI is required but not found on PATH.
|
|
80
|
-
Install from: https://github.com/sourcegraph/scip/releases`);if(r("scip CLI not found on PATH. Attempting auto-install..."),!w(r))throw new Error(`The scip CLI is required but could not be installed.
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
`;function ge(e,t,r){let n=et(t,r);if(!n)return!1;try{return e.ignores(n)}catch{return!1}}function et(e,t){if(!t||t===".")return null;if(!ue(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let r=ue(t)?t:Qe(e,t),n=Ke(e,r).replaceAll("\\","/");return!n||n==="."||n.startsWith("..")?null:n}import{execFileSync as je}from"child_process";import{existsSync as _e,renameSync as Ne,rmSync as ln}from"fs";import{basename as cn,dirname as un,extname as gn,join as W}from"path";import{execFileSync as E}from"child_process";import{platform as L,arch as tt}from"os";var pe=L()==="win32",de="v0.7.0";function P(e){let t=pe?"where":"which";try{return E(t,[e],{stdio:"pipe"}),!0}catch{return!1}}function nt(){try{return E(pe?"where":"which",["scip"],{stdio:"pipe"}),!0}catch{return!1}}function rt(){try{return E("scip",["--version"],{stdio:"pipe"}).toString().trim()}catch{return null}}function it(){let e=L(),t=tt(),r,n,i;switch(e){case"darwin":r="darwin",i="tar.gz";break;case"linux":r="linux",i="tar.gz";break;case"win32":r="windows",i="zip";break;default:return null}switch(t){case"arm64":n="arm64";break;case"x64":n="amd64";break;default:return null}let s=`scip-${r}-${n}.${i}`;return{url:`https://github.com/sourcegraph/scip/releases/download/${de}/${s}`,filename:s}}function st(){let e=it();console.log("\nThe `scip` CLI is required but not found on PATH.\n"),L()==="darwin"?(console.log("Install via Homebrew:"),console.log(` brew install sourcegraph/scip/scip
|
|
77
|
+
`),console.log("Or download manually:")):console.log("Download from:"),console.log(e?` ${e.url}
|
|
78
|
+
`:` https://github.com/sourcegraph/scip/releases/tag/${de}
|
|
79
|
+
`),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function j(e){if(L()==="darwin"&&P("brew")){e("Installing scip CLI via Homebrew...");try{if(E("brew",["install","sourcegraph/scip/scip"],{stdio:"inherit",timeout:3e5,env:process.env}),P("scip"))return e("Successfully installed scip CLI via Homebrew"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`Homebrew install failed: ${r}`)}}if(P("go")){e("Installing scip CLI via go install...");try{if(E("go",["install","github.com/sourcegraph/scip/cmd/scip@latest"],{stdio:"inherit",timeout:3e5,env:process.env}),P("scip"))return e("Successfully installed scip CLI via go install"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`go install failed: ${r}`)}}return e("Could not auto-install scip CLI."),e("Install manually from: https://github.com/sourcegraph/scip/releases"),!1}import ot from"better-sqlite3";import{existsSync as at,readdirSync as lt,readFileSync as ct}from"fs";import{extname as z,join as me}from"path";function w(e){let t=new Set((e.extensions??ae).map(s=>s.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!at(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let r=C(e.projectRoot),n=ut(e.projectRoot,t).filter(s=>!r.isIgnored(s)),i=new ot(e.dbPath);try{let s=n.length===0?new Set:new Set(i.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${n.map(()=>"?").join(",")})`).all(...n).map(d=>d.relative_path)),a=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
|
|
80
|
+
VALUES (?, ?, NULL, ?)`),o=i.transaction(d=>{let g=0;for(let p of d){if(s.has(p))continue;let y=ct(me(e.projectRoot,p),"utf-8"),l=a.run(gt(p),p,y);g+=Number(l.changes)}return g})(n),u={scanned:n.length,inserted:o,existing:n.length-o};return e.onStatus?.(`Augmented SQLite documents with ${o} auxiliary source file${o===1?"":"s"} (${u.existing} already present).`),u}finally{i.close()}}function ut(e,t){let r=[],n=i=>{let s=i?me(e,i):e,a=[];try{a=lt(s,{withFileTypes:!0})}catch{return}for(let c of a){if(le.has(c.name))continue;let o=i?`${i}/${c.name}`:c.name;if(c.isDirectory()){n(o);continue}t.has(z(c.name).toLowerCase())&&r.push(o)}};return n(""),r.sort()}function gt(e){return z(e).toLowerCase()===".vue"?"vue":z(e).replace(/^\./,"").toLowerCase()||"source"}import{existsSync as pt,readdirSync as he}from"fs";import{extname as dt,join as ye}from"path";var mt=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),ft=[{language:"typescript",files:["tsconfig.json","tsconfig.base.json"],extensions:[".ts",".tsx",".mts",".cts"]},{language:"rust",files:["Cargo.toml"],extensions:[".rs"]},{language:"go",files:["go.mod"],extensions:[".go"]},{language:"java",files:["pom.xml","build.gradle","build.gradle.kts"],extensions:[".java"]},{language:"kotlin",files:["build.gradle.kts"],extensions:[".kt",".kts"]},{language:"scala",files:["build.sbt"],extensions:[".scala"]},{language:"python",files:["pyproject.toml","setup.py","setup.cfg","Pipfile"],extensions:[".py",".pyi"]},{language:"ruby",files:["Gemfile"],extensions:[".rb"]},{language:"cpp",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"]},{language:"c",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".c",".h"]},{language:"csharp",globs:["*.csproj","*.sln"],extensions:[".cs"]},{language:"vb",globs:["*.vbproj"],extensions:[".vb"]},{language:"dart",files:["pubspec.yaml"],extensions:[".dart"]},{language:"php",files:["composer.json"],extensions:[".php"]},{language:"javascript",files:["package.json"],extensions:[".js",".jsx",".mjs",".cjs"]}];function _(e){let t=[],r=ht(e),n=St(e);for(let i of ft){if(yt(e,i.files)){t.push(i.language);continue}if(xt(r,i.globs)){t.push(i.language);continue}vt(n,i.extensions)&&t.push(i.language)}return t.includes("typescript")&&fe(t,"javascript"),t.includes("cpp")&&!n.has(".c")&&fe(t,"c"),t}function ht(e){try{return he(e)}catch{return[]}}function yt(e,t){return t?.length?t.some(r=>pt(ye(e,r))):!1}function xt(e,t){return t?.length?e.some(r=>t.some(n=>bt(r,n))):!1}function bt(e,t){if(t==="*")return!0;if(!t.includes("*"))return e===t;let[r,n]=t.split("*");return e.startsWith(r??"")&&e.endsWith(n??"")}function St(e){let t=new Set,r=[e];for(;r.length>0;){let n=r.pop();if(!n)continue;let i;try{i=he(n,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let a=ye(n,s.name);if(s.isDirectory()){mt.has(s.name)||r.push(a);continue}let c=dt(s.name).toLowerCase();c&&t.add(c)}}return t}function vt(e,t){return t?.length?t.some(r=>e.has(r)):!1}function fe(e,t){let r=e.indexOf(t);r!==-1&&e.splice(r,1)}import{existsSync as xe,readdirSync as It}from"fs";import{join as J}from"path";var X={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t})=>{let r=["scip-typescript","index","--infer-tsconfig","--output",e,"--no-progress-bar"];return t&&r.splice(2,0,"--pnpm-workspaces"),{binary:"npx",args:r}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e})=>({binary:"npx",args:["scip-typescript","index","--infer-tsconfig","--output",e,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:e})=>({binary:"rust-analyzer",args:["scip",".","--output",e]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python",binaryAliases:["scip-python-plus"],checkCommand:"npx scip-python --version",indexArgs:({outputPath:e})=>({binary:"npx",args:["scip-python","index","--output",e,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",be(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",be(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:t})=>({binary:e,args:["--output",t]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:e,indexerBinary:t})=>{let r=J(e,"vendor","bin","scip-php"),n=J(e,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",xe(n)?n:xe(r)?r:t]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function N(e){return X[e]}function be(e,t){let r;try{r=It(e)}catch{return null}for(let n of r)if(t.some(i=>n.endsWith(i)))return J(e,n);return null}import{readFileSync as wt,writeFileSync as kt}from"fs";import{create as K}from"@bufbuild/protobuf";import{deserializeSCIP as Ct,serializeSCIP as Et,DocumentSchema as Rt,IndexSchema as Pt,SymbolInformationSchema as Lt}from"@c4312/scip";function Q(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=jt(e),r=_t(e.flatMap(i=>i.documents??[])),n=Se(e.flatMap(i=>i.externalSymbols??[]));return K(Pt,{metadata:t,documents:r,externalSymbols:n})}function D(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let r=e.map(i=>Ct(wt(i))),n=Q(r);return kt(t,Buffer.from(Et(n))),{documentCount:n.documents.length,externalSymbolCount:n.externalSymbols.length,inputCount:e.length}}function jt(e){let t=e[0]?.metadata;if(!t)return;let r=t.projectRoot;for(let n of e.slice(1)){let i=n.metadata?.projectRoot;if(r&&i&&i!==r)throw new Error(`Cannot merge SCIP indexes with different project roots: ${r} vs ${i}`)}return t}function _t(e){let t=new Map;for(let r of e){let n=t.get(r.relativePath);if(!n){t.set(r.relativePath,r);continue}t.set(r.relativePath,K(Rt,{language:n.language||r.language,relativePath:n.relativePath||r.relativePath,occurrences:[...n.occurrences,...r.occurrences],symbols:Se([...n.symbols,...r.symbols]),text:Dt(n.text,r.text),positionEncoding:n.positionEncoding||r.positionEncoding}))}return[...t.values()]}function Se(e){let t=new Map;for(let r of e){let n=t.get(r.symbol);if(!n){t.set(r.symbol,r);continue}t.set(r.symbol,K(Lt,{symbol:n.symbol,documentation:Tt([...n.documentation,...r.documentation]),relationships:Nt([...n.relationships,...r.relationships]),kind:n.kind||r.kind,displayName:n.displayName||r.displayName,enclosingSymbol:n.enclosingSymbol||r.enclosingSymbol,signatureDocumentation:n.signatureDocumentation??r.signatureDocumentation}))}return[...t.values()]}function Nt(e){let t=new Set,r=[];for(let n of e){let i=[n.symbol,n.isReference?"1":"0",n.isImplementation?"1":"0",n.isTypeDefinition?"1":"0",n.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),r.push(n))}return r}function Dt(e,t){return e?t?e.length>=t.length?e:t:e:t}function Tt(e){return[...new Set(e)]}import{execFileSync as T}from"child_process";import{existsSync as Y}from"fs";import{createRequire as Ft}from"module";import{platform as ve}from"os";import{join as Ie}from"path";var Ot=Ft(import.meta.url),At=ve()==="win32";function v(e){let t=At?"where":"which";try{return T(t,[e],{stdio:"pipe"}),!0}catch{return!1}}function we(e){return[e.indexerBinary,...e.binaryAliases??[]]}function F(e){let t=we(e);return t.length===1?t[0]:t.join(" or ")}function R(e){for(let t of we(e))if(v(t))return t;return ke(e)?e.indexerBinary:null}function O(e){return R(e)!==null||ke(e)}function ke(e){if(!e.bundledNpmPackage)return!1;try{return Ot.resolve(`${e.bundledNpmPackage}/package.json`),!0}catch{return!1}}function Z(e,t){for(let r of e.projectLocalBinaries??[]){let n=Ie(t,r);if(Y(n))return n}return null}function ee(e,t=process.env,r=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||Ce(r,t))return t;let n=$t(r,t);return n?{...t,DOTNET_ROOT:n}:t}function A(e,t){let r=e.installMethods,n=F(e);if(!r?.length)return t(`No auto-install method available for ${n}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let i of r)if(v(i.prerequisite)){t(`Installing ${n} via ${i.label}...`);try{T(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=R(e);if(s){let a=s===e.indexerBinary?"":` (using ${s})`;return t(`Successfully installed ${n} via ${i.label}${a}`),!0}t(`${i.label} command completed but ${n} was not found on PATH`)}catch(s){let a=s instanceof Error?s.message:String(s);t(`${i.label} install failed: ${a}`)}}return t(`Could not auto-install ${n}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function $t(e,t){for(let r of Mt(t))if(Ce(e,{...t,DOTNET_ROOT:r}))return r;return null}function Mt(e){let t=[],r=e.DOTNET_ROOT;if(r&&Y(r)&&t.push(r),ve()==="darwin"&&v("brew"))try{let n=T("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),i=Ie(n,"libexec");Y(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function Ce(e,t){try{return T(e,["--version"],{stdio:"pipe",env:t}),!0}catch{return!1}}import Wt from"better-sqlite3";import{createRequire as Bt}from"module";import{existsSync as Ee,readFileSync as $}from"fs";import{dirname as Vt,extname as Ut,join as Re,relative as Ht,resolve as Gt}from"path";import{pathToFileURL as qt}from"url";function Pe(e){w({projectRoot:e.projectRoot,dbPath:e.dbPath});let t=Gt(e.projectRoot,e.tsconfig);if(!Ee(t))throw new Error(`Vue tsconfig not found at ${t}`);let r=Jt(e.projectRoot,t),n=r.fileNames.filter(s=>s.endsWith(".vue")),i=new Wt(e.dbPath);try{zt(i);let s=Xt(i,e.projectRoot),a=Kt(i,e.projectRoot,n),c=[],o=0;for(let d of n){let g=r.language.scripts.get(d),p=g?.generated?.languagePlugin.typescript?.getServiceScript(g.generated.root)?.code;if(!g||!p){o++;continue}let y=r.language.maps.get(p,g),l=$(d,"utf-8");for(let m of Zt(l)){let h=en(y,m.start);if(h===null)continue;let S=(r.languageService.getDefinitionAtPosition(d,h+1)??[]).find(V=>!nn(e.projectRoot,V.fileName));if(!S){o++;continue}let b=Qt(S,s,a,r,e.projectRoot);if(b===null){o++;continue}let k=Le(l,m.start);c.push({sourceFile:M(e.projectRoot,d),sourceLine:k.line,sourceStartChar:k.character,sourceEndChar:k.character+m.text.length,symbolId:b})}}let u=Yt(i,c);return e.onStatus?.(`Resolved ${c.length} Vue references with Volar; inserted ${u} mentions.`),{vueFiles:n.length,resolvedReferences:c.length,insertedMentions:u,skippedReferences:o,syntheticSymbols:a.syntheticSymbols}}finally{i.close()}}function zt(e){e.transaction(()=>{e.prepare(`
|
|
81
|
+
DELETE FROM mentions
|
|
82
|
+
WHERE chunk_id IN (
|
|
83
|
+
SELECT c.id
|
|
84
|
+
FROM chunks c
|
|
85
|
+
JOIN documents d ON d.id = c.document_id
|
|
86
|
+
WHERE d.language = 'vue' OR d.relative_path LIKE '%.vue'
|
|
87
|
+
)
|
|
88
|
+
`).run(),e.prepare(`
|
|
89
|
+
DELETE FROM chunks
|
|
90
|
+
WHERE document_id IN (
|
|
91
|
+
SELECT id
|
|
92
|
+
FROM documents
|
|
93
|
+
WHERE language = 'vue' OR relative_path LIKE '%.vue'
|
|
94
|
+
)
|
|
95
|
+
`).run()})()}function Jt(e,t){let r=Bt(qt(Re(e,"package.json")).href),n=r("typescript"),i=r("@vue/language-core"),s=r("@volar/typescript"),a=n.readConfigFile(t,n.sys.readFile);if(a.error||!a.config)throw new Error(`Failed to read ${t}`);let o=i.createParsedCommandLine(n,n.sys,t).vueOptions;typeof i.createGlobalTypesWriter=="function"&&(o.globalTypesPath=i.createGlobalTypesWriter(o,n.sys.writeFile));let u=i.getAllExtensions(o).map(f=>({extension:f.slice(1),isMixedContent:!0,scriptKind:n.ScriptKind.Deferred})),d=Vt(t),g=n.parseJsonConfigFileContent(a.config,n.sys,d,void 0,t,void 0,u),p=i.createVueLanguagePlugin(n,g.options,o,f=>f),y;y=i.createLanguage([p],new Map,f=>{if(!Ee(f))return;let S=$(f,"utf-8");y.scripts.set(f,n.ScriptSnapshot.fromString(S),p.getLanguageId(f)??rn(f))});let l={getCurrentDirectory:()=>d,getCompilationSettings:()=>g.options,getScriptFileNames:()=>g.fileNames,getProjectReferences:()=>g.projectReferences,getProjectVersion:()=>"0"},{languageServiceHost:m}=s.createLanguageServiceHost(n,n.sys,y,f=>f,l),h=n.createLanguageService(m);return{ts:n,language:y,languageService:h,fileNames:g.fileNames,configDir:d}}function Xt(e,t){let r=e.prepare(`
|
|
96
|
+
SELECT der.symbol_id AS symbolId
|
|
97
|
+
FROM defn_enclosing_ranges der
|
|
98
|
+
JOIN documents d ON d.id = der.document_id
|
|
99
|
+
WHERE d.relative_path = ?
|
|
100
|
+
AND der.start_line <= ?
|
|
101
|
+
AND der.end_line >= ?
|
|
102
|
+
ORDER BY (der.end_line - der.start_line) ASC
|
|
103
|
+
LIMIT 1
|
|
104
|
+
`),n=e.prepare(`
|
|
105
|
+
SELECT der.symbol_id AS symbolId
|
|
106
|
+
FROM defn_enclosing_ranges der
|
|
107
|
+
JOIN documents d ON d.id = der.document_id
|
|
108
|
+
WHERE d.relative_path = ?
|
|
109
|
+
AND der.start_line BETWEEN ? AND ?
|
|
110
|
+
ORDER BY ABS(der.start_line - ?) ASC
|
|
111
|
+
LIMIT 1
|
|
112
|
+
`);return i=>{let s=M(t,i.fileName),a=sn(i.fileName);if(!a)return null;let c=Le(a,i.textSpan.start),o=r.get(s,c.line,c.line);return o?o.symbolId:n.get(s,Math.max(0,c.line-2),c.line+2,c.line)?.symbolId??null}}function Kt(e,t,r){let n=on(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),s=e.prepare(`
|
|
113
|
+
INSERT OR IGNORE INTO global_symbols (symbol, display_name, kind, documentation)
|
|
114
|
+
VALUES (?, ?, ?, ?)
|
|
115
|
+
`),a=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),c=e.prepare(`
|
|
116
|
+
INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
|
|
117
|
+
VALUES (?, ?, ?, ?, X'00')
|
|
118
|
+
`),o=e.prepare(`
|
|
119
|
+
INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
|
|
120
|
+
VALUES (?, ?, 1)
|
|
121
|
+
`),u=0,d=new Map;return e.transaction(()=>{for(let p of r){let y=M(t,p),l=an(n.name,n.version,y);s.run(l,"default",7,`Vue component|${y}`);let m=i.get(l);if(!m)continue;u++,d.set(p,m.id);let h=a.get(y);if(!h)continue;let f=c.run(h.id,-1,0,0);o.run(Number(f.lastInsertRowid),m.id)}})(),{get(p){return d.get(p)??null},syntheticSymbols:u}}function Qt(e,t,r,n,i){if(e.fileName.endsWith(".vue")){let s=n.language.scripts.get(e.fileName),a=s?.generated?.languagePlugin.typescript?.getServiceScript(s.generated.root)?.code;if(s&&a){let c=n.language.maps.get(a,s);if(tn(c,e.textSpan.start)!==null)return r.get(e.fileName)}return e.fileName.startsWith(i)?r.get(e.fileName):null}return t(e)}function Yt(e,t){let r=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),n=e.prepare(`
|
|
122
|
+
INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
|
|
123
|
+
VALUES (?, ?, ?, ?, X'00')
|
|
124
|
+
`),i=e.prepare(`
|
|
125
|
+
INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
|
|
126
|
+
VALUES (?, ?, 0)
|
|
127
|
+
`),s=new Set;return e.transaction(()=>{let c=0,o=0;for(let u of t){let d=`${u.sourceFile}:${u.sourceLine}:${u.sourceStartChar}:${u.symbolId}`;if(s.has(d))continue;s.add(d);let g=r.get(u.sourceFile);if(!g)continue;let p=n.run(g.id,o++,u.sourceLine,u.sourceLine),y=i.run(Number(p.lastInsertRowid),u.symbolId);c+=Number(y.changes)}return c})()}function*Zt(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,r=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),n;for(;n=t.exec(e);){let i=n[0];r.has(i)||(yield{text:i,start:n.index,end:n.index+i.length})}}function en(e,t){for(let[r]of e.toGeneratedLocation(t,n=>!!n.navigation))return r;return null}function tn(e,t){let r=e;for(let[n]of r.toSourceLocation(t,i=>!!i.navigation))return n;return null}function Le(e,t){let r=0,n=0;for(let i=0;i<t;i++)e.charCodeAt(i)===10&&(r++,n=i+1);return{line:r,character:t-n}}function nn(e,t){return M(e,t).startsWith("node_modules/")}function M(e,t){return Ht(e,t).replaceAll("\\","/")}function rn(e){switch(Ut(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function sn(e){try{return $(e,"utf-8")}catch{return null}}function on(e){try{let t=JSON.parse($(Re(e,"package.json"),"utf-8"));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function an(e,t,r){let n=r.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${n}/default.`}async function pn(e){let{projectRoot:t,maxHeapMb:r=8192,onStatus:n=console.log,skipAutoInstall:i=!1}=e,s=e.outputScip??W(t,"index.scip"),a=e.outputDb??W(t,"index.db"),c=Date.now(),o=e.languages??_(t);if(o.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");if(n(`Detected languages: ${o.join(", ")}`),!v("scip")){if(i)throw new Error(`The scip CLI is required but not found on PATH.
|
|
128
|
+
Install from: https://github.com/sourcegraph/scip/releases`);if(n("scip CLI not found on PATH. Attempting auto-install..."),!j(n))throw new Error(`The scip CLI is required but could not be installed.
|
|
129
|
+
Install manually from: https://github.com/sourcegraph/scip/releases`)}let u={...process.env,NODE_OPTIONS:`--max-old-space-size=${r}`},d=o.map((l,m)=>({language:l,scipPath:o.length>1?mn(s,l,m):s})),g=[],p=[];for(let{language:l,scipPath:m}of d){let h=N(l),f=F(h),S=Z(h,t);if(!S&&!O(h)){if(i){let x=`${f} not found on PATH (auto-install disabled). ${h.installUrl??""}`.trim();n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}if(n(`${f} not found. Attempting auto-install...`),!A(h,n)){let x=`${f} could not be auto-installed. ${h.installUrl?`Install manually from ${h.installUrl}`:`Install ${f} and put it on PATH.`}`;n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}}let b=S??R(h);if(!b){let x=`${f} was not found after installation checks.`;n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}n(`Indexing ${l} with ${b}...`);let k=ee(h,u,b),{binary:V,args:Ve}=h.indexArgs({projectRoot:t,outputPath:m,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:b});try{je(V,Ve,{cwd:t,env:k,stdio:"pipe",maxBuffer:50*1024*1024})}catch(x){let Ue=x instanceof Error?x.message:String(x),oe=`${b} indexer failed: ${Ue.split(`
|
|
130
|
+
`)[0]}`;n(`Skipping ${l}: ${oe}`),p.push({language:l,reason:oe});continue}dn(h,t,m),g.push({language:l,scipPath:m})}if(g.length===0){let l=p.map(m=>` - ${m.language}: ${m.reason}`).join(`
|
|
83
131
|
`);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
|
|
84
|
-
`+
|
|
85
|
-
`),
|
|
132
|
+
`+l)}if(p.length>0&&n(`Indexed ${g.length} of ${o.length} languages; skipped ${p.map(l=>l.language).join(", ")}.`),o.length>1&&(g.length>1?(n(`Merging ${g.length} language indexes...`),D(g.map(l=>l.scipPath),s)):g[0].scipPath!==s&&Ne(g[0].scipPath,s)),n("Converting to SQLite..."),!_e(s))throw new Error(`SCIP index not found at ${s} after indexing`);try{je("scip",["expt-convert","--output",a,s],{env:u,stdio:"pipe",maxBuffer:50*1024*1024})}catch(l){let m=l instanceof Error?l.message:String(l);throw new Error(`Failed to convert SCIP index to SQLite: ${m}`,{cause:l})}finally{for(let{scipPath:l}of d)l!==s&&ln(l,{force:!0})}w({projectRoot:t,dbPath:a,onStatus:n});let y=Date.now()-c;return n(`Done in ${(y/1e3).toFixed(1)}s`),{languages:g.map(l=>l.language),indexPath:s,dbPath:a,durationMs:y,skipped:p}}function dn(e,t,r){if(!e.defaultOutputPath)return;let n=W(t,e.defaultOutputPath);r!==n&&_e(n)&&Ne(n,r)}function mn(e,t,r){let n=gn(e)||".scip",i=cn(e,n);return W(un(e),`${i}.${r+1}.${t}${n}`)}import{readFileSync as fn,writeFileSync as hn,existsSync as Te,mkdirSync as yn}from"fs";import{join as I,resolve as De}from"path";import{createHash as xn}from"crypto";import{homedir as bn}from"os";var Fe=".scipquery.json",Sn={enabled:!1,debounceMs:3e4,cooldownMs:6e4,ignore:[]};function vn(e){let t=I(e,Fe);if(!Te(t))return{};try{let r=fn(t,"utf-8");return JSON.parse(r)}catch{return{}}}function Oe(e){return{...Sn,...e.watch}}function Ae(e,t){let r=process.env.SCIP_QUERY_CACHE_DIR;if(r)return te(r);if(t?.dbPath)return te(De(e,t.dbPath));let i=process.env.XDG_CACHE_HOME||I(bn(),".cache"),s=xn("sha256").update(De(e)).digest("hex").slice(0,12),a=I(i,"scip-query","projects",s);return te(a)}function ne(e,t){let r=Ae(e,t);return{cacheDir:r,dbPath:I(r,"index.db"),indexPath:I(r,"index.scip"),metaPath:I(r,"meta.json")}}function In(e,t){let r=I(e,Fe);return Te(r)||hn(r,JSON.stringify({languages:t,watch:{enabled:!1,debounceMs:3e4,cooldownMs:6e4}},null,2)+`
|
|
133
|
+
`),r}function te(e){return yn(e,{recursive:!0}),e}import{watch as wn}from"fs";import{existsSync as $e,renameSync as Me}from"fs";import{join as kn,relative as Cn}from"path";import{fork as En}from"child_process";import Rn from"ignore";var re=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=Oe(t.config),this.indexPaths=ne(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??(r=>console.error(r.message)),this.gitignoreFilter=C(t.projectRoot),this.extraIgnore=Rn(),this.watchConfig.ignore.length>0&&this.extraIgnore.add(this.watchConfig.ignore)}start(){this.stopped=!1,this.setStatus({state:"idle"});try{let t=wn(this.projectRoot,{recursive:!0},(r,n)=>{n&&!this.stopped&&this.handleFileChange(n)});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.debounceTimer&&clearTimeout(this.debounceTimer),this.cooldownTimer&&clearTimeout(this.cooldownTimer),this.setStatus({state:"idle"})}handleFileChange(t){let r=Cn(this.projectRoot,kn(this.projectRoot,t));if(this.gitignoreFilter.isIgnored(r)||this.extraIgnore.ignores(r)||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.debounceTimer&&clearTimeout(this.debounceTimer);let n=Date.now()+this.watchConfig.debounceMs;this.setStatus({state:"waiting",changedFiles:this.changedFiles,reindexAt:n}),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 n=this.watchConfig.cooldownMs-t;this.dirty=!0;let i=Date.now()+n;this.setStatus({state:"cooldown",until:i,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped&&(this.dirty=!1,this.triggerReindex())},n);return}this.reindexInFlight=!0,this.dirty=!1,this.changedFiles=0;let r=Date.now();this.setStatus({state:"indexing",startedAt:r}),this.runReindex().then(n=>{if(this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onReindexComplete(n),this.dirty&&!this.stopped){let i=Date.now()+this.watchConfig.cooldownMs;this.setStatus({state:"cooldown",until:i,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(n=>{this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onError(n instanceof Error?n:new Error(String(n))),this.setStatus({state:"idle"})})}runReindex(){return new Promise((t,r)=>{let n=Date.now(),i=this.indexPaths.dbPath+".tmp",s=Pn(this.indexPaths.indexPath),a=En(new URL("./reindex-worker.js",import.meta.url).pathname,[],{env:{...process.env,SCIP_REINDEX_PROJECT_ROOT:this.projectRoot,SCIP_REINDEX_OUTPUT_SCIP:s,SCIP_REINDEX_OUTPUT_DB:i,SCIP_REINDEX_LANGUAGES:this.languages?.join(",")??"",SCIP_REINDEX_PNPM_WORKSPACES:this.pnpmWorkspaces?"1":""},stdio:"pipe"});a.on("exit",c=>{if(c===0)try{$e(i)&&Me(i,this.indexPaths.dbPath),$e(s)&&Me(s,this.indexPaths.indexPath),t(Date.now()-n)}catch(o){r(new Error(`Atomic swap failed: ${o}`))}else r(new Error(`Reindex worker exited with code ${c}`))}),a.on("error",r)})}setStatus(t){this.status=t,this.onStatus(t)}};function Pn(e){return e.endsWith(".scip")?e.slice(0,-5)+".tmp.scip":e+".tmp.scip"}import{existsSync as ie,mkdirSync as Ln,symlinkSync as jn,readlinkSync as _n,unlinkSync as Nn}from"fs";import{join as B,dirname as We,resolve as se}from"path";import{homedir as Be,platform as Dn}from"os";import{fileURLToPath as Tn}from"url";var Fn=Dn()==="win32",On=["concrete-plan","scip-explore","scip-debloat","scip-verify","scip-language-playbook"];function An(e={}){let t=e.quiet?()=>{}:console.log,r=Tn(import.meta.url),n=se(We(r),"..","skills"),i=[B(Be(),".claude","skills"),B(Be(),".codex","skills")],s={installed:[],skipped:[],alreadyLinked:[]};for(let a of i){let c=We(a);if(!ie(c))continue;Ln(a,{recursive:!0});let o=a.includes(".codex")?"Codex":"Claude";for(let u of On){let d=B(n,u),g=B(a,u);if(!ie(d)){s.skipped.push(`${o}/${u}`);continue}if(ie(g)){try{let p=_n(g);if(se(p)===se(d)){s.alreadyLinked.push(`${o}/${u}`),t(` ok: ${u} \u2192 ${o} (already linked)`);continue}}catch{s.skipped.push(`${o}/${u}`),t(` skip: ${u} \u2192 ${o} (exists, not a symlink)`);continue}Nn(g)}jn(d,g,Fn?"junction":"dir"),s.installed.push(`${o}/${u}`),t(` done: ${u} \u2192 ${o}`)}}return s}export{X as INDEXER_CONFIGS,U as ScipDatabase,re as Watcher,Sr as affected,w as augmentAuxiliaryDocuments,Pe as augmentVueResolvedReferences,lr as bottlenecks,ur as byKind,mr as callGraph,vr as changeSurface,jr as code,_r as complexity,Rr as complexityHotspots,Lr as convergence,sr as coupling,C as createGitignoreFilter,ar as cycles,Nr as dataflow,Jn as dead,pr as deepChains,Hn as deps,_ as detectLanguages,Ir as diffImpact,wr as drift,br as extractCandidates,tr as fanIn,nr as fanOut,Mn as files,N as getIndexerConfig,rt as getScipVersion,Pr as health,dr as hierarchy,Xn as hotspots,Qn as importedBy,Kn as imports,In as initProjectConfig,An as installSkills,v as isBinaryAvailable,O as isIndexerInstalled,nt as isScipInstalled,cr as isolated,gr as kindCounts,qe as leafName,vn as loadProjectConfig,er as members,D as mergeScipFiles,Q as mergeScipIndexes,Bn as methods,Zn as outline,He as parseSymbol,Cr as passthroughCandidates,st as printScipInstallInstructions,Gn as rdeps,Tr as redundantReexports,Vn as refs,pn as reindex,Ae as resolveCacheDir,ne as resolveIndexPaths,Ge as shortenSymbol,fr as similar,hr as similarAll,xr as similarChains,yr as similarFiles,Fr as similarSignatures,Dr as slice,Er as staleAbstractions,$n as stats,zn as surface,Wn as symbols,qn as system,or as topCoupling,rr as topFanIn,ir as topFanOut,Un as trace,A as tryInstallIndexer,j as tryInstallScipCli,Yn as unusedImports,kr as wrapperCandidates};
|
|
86
134
|
//# sourceMappingURL=index.js.map
|
package/dist/queries/affected.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-FJV7QT4G.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as affected};
|
|
2
2
|
//# sourceMappingURL=affected.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-6CTMG3IF.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as bottlenecks};
|
|
2
2
|
//# sourceMappingURL=bottlenecks.js.map
|
package/dist/queries/by-kind.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-6ALIV5SZ.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as byKind,b as kindCounts};
|
|
2
2
|
//# sourceMappingURL=by-kind.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-26LSAIEP.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as callGraph};
|
|
2
2
|
//# sourceMappingURL=call-graph.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-PU7P5NPE.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as changeSurface};
|
|
2
2
|
//# sourceMappingURL=change-surface.js.map
|
package/dist/queries/code.d.ts
CHANGED
package/dist/queries/code.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-RC2PKZSS.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as code};
|
|
2
2
|
//# sourceMappingURL=code.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-S65VVU3R.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as complexityHotspots};
|
|
2
2
|
//# sourceMappingURL=complexity-hotspots.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-5NRGSXZQ.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as complexity};
|
|
2
2
|
//# sourceMappingURL=complexity.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-5VU2RVKI.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as convergence};
|
|
2
2
|
//# sourceMappingURL=convergence.js.map
|
package/dist/queries/coupling.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-AZTWY4OT.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as coupling,b as topCoupling};
|
|
2
2
|
//# sourceMappingURL=coupling.js.map
|
package/dist/queries/cycles.d.ts
CHANGED
package/dist/queries/cycles.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-435YC4OF.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as cycles};
|
|
2
2
|
//# sourceMappingURL=cycles.js.map
|
package/dist/queries/dataflow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-2HEJQBMS.js";import"../chunk-QSTMORTI.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as dataflow};
|
|
2
2
|
//# sourceMappingURL=dataflow.js.map
|
package/dist/queries/dead.d.ts
CHANGED
package/dist/queries/dead.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-CW5K3KIF.js";import"../chunk-QSTMORTI.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as dead};
|
|
2
2
|
//# sourceMappingURL=dead.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-67UXTIFZ.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as deepChains};
|
|
2
2
|
//# sourceMappingURL=deep-chains.js.map
|
package/dist/queries/deps.d.ts
CHANGED
package/dist/queries/deps.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-LKCPNPHH.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as deps,b as rdeps};
|
|
2
2
|
//# sourceMappingURL=deps.js.map
|