scip-query 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/chunk-26DOJ63W.js +161 -0
  2. package/dist/{chunk-PMJKOXOT.js → chunk-4JCSOF2O.js} +2 -2
  3. package/dist/{chunk-AKMBBKWV.js → chunk-5OMVSV6E.js} +12 -4
  4. package/dist/{chunk-R56FJU3E.js → chunk-7KIMF5PV.js} +2 -2
  5. package/dist/chunk-AXQKUYKF.js +1442 -0
  6. package/dist/chunk-C7H5WBTJ.js +46 -0
  7. package/dist/{chunk-AMNISGYR.js → chunk-CHDJXYBG.js} +2 -27
  8. package/dist/{chunk-GPJVPT3U.js → chunk-CPVAQJEC.js} +12 -4
  9. package/dist/{chunk-75RQSBTK.js → chunk-DH7G3DDV.js} +2 -2
  10. package/dist/{chunk-LTJC5ZQL.js → chunk-EOROMIFO.js} +13 -5
  11. package/dist/{chunk-BFLULBEU.js → chunk-EPWLXXBL.js} +2 -2
  12. package/dist/{chunk-MVH45PYK.js → chunk-FYYOWQXK.js} +12 -12
  13. package/dist/chunk-GEXE2T6I.js +87 -0
  14. package/dist/{chunk-IXPHLF6K.js → chunk-GJDHTTR2.js} +10 -3
  15. package/dist/chunk-GSH2FPKV.js +87 -0
  16. package/dist/{chunk-4ACRRQC4.js → chunk-HJZUSUPU.js} +2 -2
  17. package/dist/{chunk-M3NPW3FC.js → chunk-HLKAFWWJ.js} +81 -2
  18. package/dist/{chunk-CU62ZDHI.js → chunk-HLUS2HEB.js} +2 -2
  19. package/dist/{chunk-RFMT7UAZ.js → chunk-J3JSOSUO.js} +8 -5
  20. package/dist/{chunk-HDSRORNV.js → chunk-KKCHYLVI.js} +17 -11
  21. package/dist/{chunk-Y3M323OX.js → chunk-LFJQVJYJ.js} +2 -2
  22. package/dist/{chunk-6WVR5K46.js → chunk-LQJUPXQY.js} +3 -3
  23. package/dist/{chunk-ITZ3DDOG.js → chunk-MPGIHELS.js} +18 -3
  24. package/dist/{chunk-N4C3H7LH.js → chunk-NFS5W3PP.js} +2 -2
  25. package/dist/{chunk-Y4JFVQ7C.js → chunk-O7Q7FDUJ.js} +21 -13
  26. package/dist/{chunk-H6WCPKCX.js → chunk-OIDHN6GD.js} +2 -2
  27. package/dist/{chunk-4BQFSNFI.js → chunk-P3E6L7KW.js} +2 -2
  28. package/dist/{chunk-ORINICIZ.js → chunk-P4WO3BBW.js} +2 -2
  29. package/dist/{chunk-M4QGEKKD.js → chunk-SMDCNPMK.js} +8 -3
  30. package/dist/{chunk-6QSHLFSL.js → chunk-UGQKAVCD.js} +2 -2
  31. package/dist/{chunk-HMYJJ3HY.js → chunk-UQEQ6AHX.js} +3 -3
  32. package/dist/{chunk-WVK7AASK.js → chunk-VIYSWZCO.js} +2 -2
  33. package/dist/chunk-VJJKSGIX.js +121 -0
  34. package/dist/{chunk-N5KEREIA.js → chunk-VT4JBH6L.js} +19 -7
  35. package/dist/{chunk-R2I3M5B4.js → chunk-WGAD3GNR.js} +2 -2
  36. package/dist/{chunk-IJKLB2JW.js → chunk-YDBXNPYU.js} +2 -2
  37. package/dist/{chunk-VO4QI3LS.js → chunk-YY4QGUQ5.js} +2 -2
  38. package/dist/{chunk-3566TKJ5.js → chunk-ZEUCXQBN.js} +2 -2
  39. package/dist/cli.js +2310 -1351
  40. package/dist/{db-BHYam4BK.d.ts → db-ShvwGDKf.d.ts} +6 -1
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.js +38 -38
  43. package/dist/queries/affected.d.ts +1 -1
  44. package/dist/queries/affected.js +2 -2
  45. package/dist/queries/bottlenecks.d.ts +1 -1
  46. package/dist/queries/by-kind.d.ts +1 -1
  47. package/dist/queries/by-kind.js +1 -1
  48. package/dist/queries/call-graph.d.ts +1 -1
  49. package/dist/queries/call-graph.js +2 -2
  50. package/dist/queries/change-surface.d.ts +1 -1
  51. package/dist/queries/change-surface.js +2 -1
  52. package/dist/queries/code.d.ts +1 -1
  53. package/dist/queries/code.js +2 -2
  54. package/dist/queries/complexity-hotspots.d.ts +1 -1
  55. package/dist/queries/complexity-hotspots.js +2 -2
  56. package/dist/queries/complexity.d.ts +1 -1
  57. package/dist/queries/complexity.js +2 -2
  58. package/dist/queries/convergence.d.ts +1 -1
  59. package/dist/queries/convergence.js +2 -2
  60. package/dist/queries/coupling.d.ts +1 -1
  61. package/dist/queries/coupling.js +3 -1
  62. package/dist/queries/cycles.d.ts +1 -1
  63. package/dist/queries/cycles.js +2 -2
  64. package/dist/queries/dataflow.d.ts +1 -1
  65. package/dist/queries/dataflow.js +2 -2
  66. package/dist/queries/dead.d.ts +1 -1
  67. package/dist/queries/dead.js +3 -3
  68. package/dist/queries/deep-chains.d.ts +1 -1
  69. package/dist/queries/deep-chains.js +2 -2
  70. package/dist/queries/deps.d.ts +1 -1
  71. package/dist/queries/deps.js +3 -1
  72. package/dist/queries/diff-impact.d.ts +1 -1
  73. package/dist/queries/doc-coverage.d.ts +1 -1
  74. package/dist/queries/drift.d.ts +1 -1
  75. package/dist/queries/drift.js +2 -2
  76. package/dist/queries/extract-candidates.d.ts +1 -1
  77. package/dist/queries/extract-candidates.js +2 -2
  78. package/dist/queries/fan.d.ts +1 -1
  79. package/dist/queries/fan.js +2 -1
  80. package/dist/queries/files.d.ts +1 -1
  81. package/dist/queries/health.d.ts +1 -1
  82. package/dist/queries/health.js +13 -13
  83. package/dist/queries/hierarchy.d.ts +1 -1
  84. package/dist/queries/hierarchy.js +2 -2
  85. package/dist/queries/hotspots.d.ts +1 -1
  86. package/dist/queries/imports.d.ts +1 -1
  87. package/dist/queries/imports.js +2 -2
  88. package/dist/queries/index.d.ts +1 -1
  89. package/dist/queries/index.js +38 -38
  90. package/dist/queries/isolated.d.ts +1 -1
  91. package/dist/queries/isolated.js +3 -3
  92. package/dist/queries/members.d.ts +1 -1
  93. package/dist/queries/members.js +2 -2
  94. package/dist/queries/methods.d.ts +1 -1
  95. package/dist/queries/outline.d.ts +1 -1
  96. package/dist/queries/outline.js +2 -1
  97. package/dist/queries/passthrough-candidates.d.ts +1 -1
  98. package/dist/queries/passthrough-candidates.js +2 -2
  99. package/dist/queries/redundant-reexports.d.ts +1 -1
  100. package/dist/queries/redundant-reexports.js +3 -3
  101. package/dist/queries/refs.d.ts +1 -1
  102. package/dist/queries/refs.js +3 -1
  103. package/dist/queries/similar-chains.d.ts +1 -1
  104. package/dist/queries/similar-chains.js +2 -2
  105. package/dist/queries/similar-files.d.ts +1 -1
  106. package/dist/queries/similar-files.js +2 -2
  107. package/dist/queries/similar-signatures.d.ts +1 -1
  108. package/dist/queries/similar.d.ts +1 -1
  109. package/dist/queries/similar.js +2 -2
  110. package/dist/queries/slice.d.ts +2 -2
  111. package/dist/queries/slice.js +2 -2
  112. package/dist/queries/stale-abstractions.d.ts +1 -1
  113. package/dist/queries/stale-abstractions.js +2 -2
  114. package/dist/queries/stats.d.ts +1 -1
  115. package/dist/queries/surface.d.ts +1 -1
  116. package/dist/queries/surface.js +2 -1
  117. package/dist/queries/symbols.d.ts +1 -1
  118. package/dist/queries/symbols.js +2 -1
  119. package/dist/queries/system.d.ts +1 -1
  120. package/dist/queries/system.js +2 -1
  121. package/dist/queries/trace.d.ts +1 -1
  122. package/dist/queries/trace.js +2 -2
  123. package/dist/queries/wrapper-candidates.d.ts +1 -1
  124. package/dist/queries/wrapper-candidates.js +2 -2
  125. package/package.json +1 -1
  126. package/dist/chunk-34JPTNRN.js +0 -601
  127. package/dist/chunk-7JFZSOJ7.js +0 -103
  128. package/dist/chunk-DY4AFG2W.js +0 -48
  129. package/dist/chunk-LLMPAG56.js +0 -221
  130. package/dist/chunk-NVIIM34O.js +0 -65
  131. package/dist/chunk-YAFWL3RA.js +0 -55
@@ -1,5 +1,11 @@
1
+ import {
2
+ resolveIndexedFile
3
+ } from "./chunk-AXQKUYKF.js";
4
+
1
5
  // src/queries/coupling.ts
2
6
  function coupling(db, file1, file2) {
7
+ const resolvedFile1 = resolveIndexedFile(db, file1) ?? file1;
8
+ const resolvedFile2 = resolveIndexedFile(db, file2) ?? file2;
3
9
  const row = db.get(
4
10
  `SELECT COUNT(DISTINCT gs.id) AS shared
5
11
  FROM global_symbols gs
@@ -8,36 +14,36 @@ function coupling(db, file1, file2) {
8
14
  EXISTS (
9
15
  SELECT 1 FROM defn_enclosing_ranges der
10
16
  JOIN documents d ON der.document_id = d.id
11
- WHERE der.symbol_id = gs.id AND d.relative_path LIKE ?
17
+ WHERE der.symbol_id = gs.id AND d.relative_path = ?
12
18
  )
13
19
  AND EXISTS (
14
20
  SELECT 1 FROM mentions m
15
21
  JOIN chunks c ON m.chunk_id = c.id
16
22
  JOIN documents d ON c.document_id = d.id
17
- WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path LIKE ?
23
+ WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
18
24
  )
19
25
  ) OR (
20
26
  -- Defined in file2, referenced in file1
21
27
  EXISTS (
22
28
  SELECT 1 FROM defn_enclosing_ranges der
23
29
  JOIN documents d ON der.document_id = d.id
24
- WHERE der.symbol_id = gs.id AND d.relative_path LIKE ?
30
+ WHERE der.symbol_id = gs.id AND d.relative_path = ?
25
31
  )
26
32
  AND EXISTS (
27
33
  SELECT 1 FROM mentions m
28
34
  JOIN chunks c ON m.chunk_id = c.id
29
35
  JOIN documents d ON c.document_id = d.id
30
- WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path LIKE ?
36
+ WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
31
37
  )
32
38
  )`,
33
- `%${file1}%`,
34
- `%${file2}%`,
35
- `%${file2}%`,
36
- `%${file1}%`
39
+ resolvedFile1,
40
+ resolvedFile2,
41
+ resolvedFile2,
42
+ resolvedFile1
37
43
  );
38
44
  return {
39
- file1,
40
- file2,
45
+ file1: resolvedFile1,
46
+ file2: resolvedFile2,
41
47
  sharedSymbols: row?.shared ?? 0
42
48
  };
43
49
  }
@@ -75,4 +81,4 @@ export {
75
81
  coupling,
76
82
  topCoupling
77
83
  };
78
- //# sourceMappingURL=chunk-HDSRORNV.js.map
84
+ //# sourceMappingURL=chunk-KKCHYLVI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
 
5
5
  // src/queries/cycles.ts
6
6
  function cycles(db, opts = {}) {
@@ -58,4 +58,4 @@ function cycles(db, opts = {}) {
58
58
  export {
59
59
  cycles
60
60
  };
61
- //# sourceMappingURL=chunk-Y3M323OX.js.map
61
+ //# sourceMappingURL=chunk-LFJQVJYJ.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getInactiveBarrelPaths,
3
3
  isEntrySurface
4
- } from "./chunk-VO4QI3LS.js";
4
+ } from "./chunk-YY4QGUQ5.js";
5
5
  import {
6
6
  TEST_SUPPORT_PATH_PATTERNS,
7
7
  testFileExclusionSql
8
- } from "./chunk-LLMPAG56.js";
8
+ } from "./chunk-AXQKUYKF.js";
9
9
  import {
10
10
  shortenSymbol
11
11
  } from "./chunk-QIXNAB5K.js";
@@ -106,4 +106,4 @@ function dead(db, opts = {}) {
106
106
  export {
107
107
  dead
108
108
  };
109
- //# sourceMappingURL=chunk-6WVR5K46.js.map
109
+ //# sourceMappingURL=chunk-LQJUPXQY.js.map
@@ -1,16 +1,31 @@
1
+ import {
2
+ findFirstSymbolMatch,
3
+ getSourceReferenceSites
4
+ } from "./chunk-AXQKUYKF.js";
5
+
1
6
  // src/queries/refs.ts
2
7
  function refs(db, symbolPattern) {
8
+ const match = findFirstSymbolMatch(db, symbolPattern);
9
+ if (match) {
10
+ const sourceSites = getSourceReferenceSites(db, match).filter((site) => !db.isIgnored(site.file)).map((site) => ({
11
+ relativePath: site.file,
12
+ line: site.line
13
+ }));
14
+ if (sourceSites.length > 0) {
15
+ return sourceSites;
16
+ }
17
+ }
3
18
  const rows = db.all(
4
19
  `SELECT DISTINCT d.relative_path, c.start_line
5
20
  FROM mentions m
6
21
  JOIN chunks c ON m.chunk_id = c.id
7
22
  JOIN documents d ON c.document_id = d.id
8
23
  JOIN global_symbols gs ON m.symbol_id = gs.id
9
- WHERE gs.symbol LIKE ?
24
+ WHERE m.symbol_id = ?
10
25
  AND ${db.localSymbolPredicate}
11
26
  AND m.role != 1
12
27
  ORDER BY d.relative_path, c.start_line`,
13
- `%${symbolPattern}%`
28
+ match?.symbolId ?? -1
14
29
  );
15
30
  return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
16
31
  relativePath: r.relative_path,
@@ -21,4 +36,4 @@ function refs(db, symbolPattern) {
21
36
  export {
22
37
  refs
23
38
  };
24
- //# sourceMappingURL=chunk-ITZ3DDOG.js.map
39
+ //# sourceMappingURL=chunk-MPGIHELS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
  import {
5
5
  isDirectChildSymbol,
6
6
  leafSuffix,
@@ -34,4 +34,4 @@ function members(db, symbolPattern) {
34
34
  export {
35
35
  members
36
36
  };
37
- //# sourceMappingURL=chunk-N4C3H7LH.js.map
37
+ //# sourceMappingURL=chunk-NFS5W3PP.js.map
@@ -1,17 +1,25 @@
1
1
  import {
2
2
  cleanSignature
3
3
  } from "./chunk-4TYLS5XX.js";
4
+ import {
5
+ resolveIndexedPaths
6
+ } from "./chunk-AXQKUYKF.js";
4
7
  import {
5
8
  shortenSymbol
6
9
  } from "./chunk-QIXNAB5K.js";
7
10
 
8
11
  // src/queries/system.ts
9
12
  function system(db, modulePattern) {
13
+ const matchedPaths = resolveIndexedPaths(db, modulePattern);
14
+ if (matchedPaths.length === 0) {
15
+ return { files: [], symbols: [], dependsOn: [], dependedOnBy: [] };
16
+ }
17
+ const placeholders = matchedPaths.map(() => "?").join(", ");
10
18
  const fileRows = db.all(
11
19
  `SELECT relative_path FROM documents
12
- WHERE relative_path LIKE ?
20
+ WHERE relative_path IN (${placeholders})
13
21
  ORDER BY relative_path`,
14
- `%${modulePattern}%`
22
+ ...matchedPaths
15
23
  );
16
24
  const files = fileRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
17
25
  const symbolRows = db.all(
@@ -20,12 +28,12 @@ function system(db, modulePattern) {
20
28
  FROM defn_enclosing_ranges der
21
29
  JOIN global_symbols gs ON der.symbol_id = gs.id
22
30
  JOIN documents d ON der.document_id = d.id
23
- WHERE d.relative_path LIKE ?
31
+ WHERE d.relative_path IN (${placeholders})
24
32
  AND ${db.localSymbolPredicate}
25
33
  ${db.symbolNoise}
26
34
  AND gs.documentation IS NOT NULL
27
35
  ORDER BY d.relative_path, der.start_line`,
28
- `%${modulePattern}%`
36
+ ...matchedPaths
29
37
  );
30
38
  const symbols = symbolRows.map((r) => ({
31
39
  startLine: r.start_line,
@@ -42,12 +50,12 @@ function system(db, modulePattern) {
42
50
  JOIN global_symbols gs ON m.symbol_id = gs.id
43
51
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
44
52
  JOIN documents d2 ON der.document_id = d2.id
45
- WHERE d1.relative_path LIKE ?
46
- AND d2.relative_path NOT LIKE ?
53
+ WHERE d1.relative_path IN (${placeholders})
54
+ AND d2.relative_path NOT IN (${placeholders})
47
55
  AND ${db.localSymbolPredicate}
48
56
  ORDER BY d2.relative_path`,
49
- `%${modulePattern}%`,
50
- `%${modulePattern}%`
57
+ ...matchedPaths,
58
+ ...matchedPaths
51
59
  );
52
60
  const dependsOn = depRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
53
61
  const rdepRows = db.all(
@@ -58,11 +66,11 @@ function system(db, modulePattern) {
58
66
  JOIN global_symbols gs ON m.symbol_id = gs.id
59
67
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
60
68
  JOIN documents d2 ON der.document_id = d2.id
61
- WHERE d2.relative_path LIKE ?
62
- AND d1.relative_path NOT LIKE ?
69
+ WHERE d2.relative_path IN (${placeholders})
70
+ AND d1.relative_path NOT IN (${placeholders})
63
71
  ORDER BY d1.relative_path`,
64
- `%${modulePattern}%`,
65
- `%${modulePattern}%`
72
+ ...matchedPaths,
73
+ ...matchedPaths
66
74
  );
67
75
  const dependedOnBy = rdepRows.map((r) => r.relative_path).filter((p) => !db.isIgnored(p));
68
76
  return { files, symbols, dependsOn, dependedOnBy };
@@ -71,4 +79,4 @@ function system(db, modulePattern) {
71
79
  export {
72
80
  system
73
81
  };
74
- //# sourceMappingURL=chunk-Y4JFVQ7C.js.map
82
+ //# sourceMappingURL=chunk-O7Q7FDUJ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-LLMPAG56.js";
4
+ } from "./chunk-AXQKUYKF.js";
5
5
  import {
6
6
  isFunctionLikeSymbol,
7
7
  shortenSymbol
@@ -195,4 +195,4 @@ export {
195
195
  similar,
196
196
  similarAll
197
197
  };
198
- //# sourceMappingURL=chunk-H6WCPKCX.js.map
198
+ //# sourceMappingURL=chunk-OIDHN6GD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isLiveBarrel
3
- } from "./chunk-VO4QI3LS.js";
3
+ } from "./chunk-YY4QGUQ5.js";
4
4
  import {
5
5
  shortenSymbol
6
6
  } from "./chunk-QIXNAB5K.js";
@@ -102,4 +102,4 @@ function redundantReexports(db, opts = {}) {
102
102
  export {
103
103
  redundantReexports
104
104
  };
105
- //# sourceMappingURL=chunk-4BQFSNFI.js.map
105
+ //# sourceMappingURL=chunk-P3E6L7KW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
  import {
5
5
  shortenSymbol
6
6
  } from "./chunk-QIXNAB5K.js";
@@ -61,4 +61,4 @@ function staleAbstractions(db, opts) {
61
61
  export {
62
62
  staleAbstractions
63
63
  };
64
- //# sourceMappingURL=chunk-ORINICIZ.js.map
64
+ //# sourceMappingURL=chunk-P4WO3BBW.js.map
@@ -1,15 +1,20 @@
1
+ import {
2
+ resolveIndexedFile
3
+ } from "./chunk-AXQKUYKF.js";
1
4
  import {
2
5
  shortenSymbol
3
6
  } from "./chunk-QIXNAB5K.js";
4
7
 
5
8
  // src/queries/change-surface.ts
6
9
  function changeSurface(db, filePattern) {
10
+ const resolvedFile = resolveIndexedFile(db, filePattern);
11
+ if (!resolvedFile) return null;
7
12
  const doc = db.get(
8
13
  `SELECT id, relative_path FROM documents
9
- WHERE relative_path LIKE ?
14
+ WHERE relative_path = ?
10
15
  ${db.pathExclusionsFor("documents")}
11
16
  LIMIT 1`,
12
- `%${filePattern}%`
17
+ resolvedFile
13
18
  );
14
19
  if (!doc || db.isIgnored(doc.relative_path)) return null;
15
20
  const syms = db.all(
@@ -63,4 +68,4 @@ function changeSurface(db, filePattern) {
63
68
  export {
64
69
  changeSurface
65
70
  };
66
- //# sourceMappingURL=chunk-M4QGEKKD.js.map
71
+ //# sourceMappingURL=chunk-SMDCNPMK.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-LLMPAG56.js";
4
+ } from "./chunk-AXQKUYKF.js";
5
5
  import {
6
6
  shortenSymbol
7
7
  } from "./chunk-QIXNAB5K.js";
@@ -107,4 +107,4 @@ function stripCommentsAndStrings(source) {
107
107
  export {
108
108
  complexity
109
109
  };
110
- //# sourceMappingURL=chunk-6QSHLFSL.js.map
110
+ //# sourceMappingURL=chunk-UGQKAVCD.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  isEntrySurface
3
- } from "./chunk-VO4QI3LS.js";
3
+ } from "./chunk-YY4QGUQ5.js";
4
4
  import {
5
5
  testFileExclusionSql
6
- } from "./chunk-LLMPAG56.js";
6
+ } from "./chunk-AXQKUYKF.js";
7
7
  import {
8
8
  shortenSymbol
9
9
  } from "./chunk-QIXNAB5K.js";
@@ -57,4 +57,4 @@ function isolated(db, opts = {}) {
57
57
  export {
58
58
  isolated
59
59
  };
60
- //# sourceMappingURL=chunk-HMYJJ3HY.js.map
60
+ //# sourceMappingURL=chunk-UQEQ6AHX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  testFileExclusionSql
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
  import {
5
5
  shortenSymbol
6
6
  } from "./chunk-QIXNAB5K.js";
@@ -99,4 +99,4 @@ function complexityHotspots(db, opts) {
99
99
  export {
100
100
  complexityHotspots
101
101
  };
102
- //# sourceMappingURL=chunk-WVK7AASK.js.map
102
+ //# sourceMappingURL=chunk-VIYSWZCO.js.map
@@ -0,0 +1,121 @@
1
+ import {
2
+ findExactSymbolMatch,
3
+ findFirstSymbolMatch,
4
+ getSourceReferenceSites
5
+ } from "./chunk-AXQKUYKF.js";
6
+ import {
7
+ shortenSymbol
8
+ } from "./chunk-QIXNAB5K.js";
9
+
10
+ // src/queries/affected.ts
11
+ function affected(db, symbolPattern, opts = {}) {
12
+ const { maxDepth = 5, scope } = opts;
13
+ const target = findFirstSymbolMatch(db, symbolPattern);
14
+ if (!target) return [];
15
+ const results = [];
16
+ const visited = /* @__PURE__ */ new Set([target.symbolId]);
17
+ const seenResults = /* @__PURE__ */ new Set();
18
+ let frontier = [target];
19
+ for (let depth = 1; depth <= maxDepth; depth++) {
20
+ if (frontier.length === 0) break;
21
+ const nextFrontier = [];
22
+ for (const current of frontier) {
23
+ for (const row of getDirectAffectedRows(db, current, scope)) {
24
+ const resultKey = `${row.file}|${row.shortName}`;
25
+ if (row.symbolId !== null) {
26
+ if (visited.has(row.symbolId)) continue;
27
+ visited.add(row.symbolId);
28
+ } else if (seenResults.has(resultKey)) {
29
+ continue;
30
+ }
31
+ seenResults.add(resultKey);
32
+ results.push({
33
+ symbol: row.symbol,
34
+ shortName: row.shortName,
35
+ file: row.file,
36
+ depth
37
+ });
38
+ if (row.symbolId !== null && row.symbolMatch) {
39
+ nextFrontier.push(row.symbolMatch);
40
+ }
41
+ }
42
+ }
43
+ frontier = nextFrontier;
44
+ }
45
+ results.sort((a, b) => a.depth - b.depth || a.file.localeCompare(b.file));
46
+ return results;
47
+ }
48
+ function getDirectAffectedRows(db, target, scope) {
49
+ const sourceSites = getSourceReferenceSites(db, target).filter((site) => !db.isIgnored(site.file)).filter((site) => !scope || site.file.includes(scope));
50
+ if (sourceSites.length > 0) {
51
+ const rows2 = [];
52
+ const seen = /* @__PURE__ */ new Set();
53
+ for (const site of sourceSites) {
54
+ if (!site.enclosingSymbol || site.enclosingSymbol === target.symbol) {
55
+ const key2 = `${site.file}|(top-level)`;
56
+ if (seen.has(key2)) continue;
57
+ seen.add(key2);
58
+ rows2.push({
59
+ symbolId: null,
60
+ symbol: site.file,
61
+ shortName: "(top-level)",
62
+ file: site.file,
63
+ symbolMatch: null
64
+ });
65
+ continue;
66
+ }
67
+ const enclosing = findExactSymbolMatch(db, site.enclosingSymbol);
68
+ if (!enclosing || enclosing.symbolId === target.symbolId || db.isIgnored(enclosing.relativePath)) {
69
+ continue;
70
+ }
71
+ const key = `${enclosing.symbolId}|${enclosing.relativePath}`;
72
+ if (seen.has(key)) continue;
73
+ seen.add(key);
74
+ rows2.push({
75
+ symbolId: enclosing.symbolId,
76
+ symbol: enclosing.symbol,
77
+ shortName: shortenSymbol(enclosing.symbol),
78
+ file: enclosing.relativePath,
79
+ symbolMatch: enclosing
80
+ });
81
+ }
82
+ return rows2;
83
+ }
84
+ const rows = db.all(
85
+ `SELECT DISTINCT
86
+ enc_gs.id AS symbol_id,
87
+ enc_gs.symbol AS symbol,
88
+ enc_d.relative_path AS relative_path
89
+ FROM mentions m
90
+ JOIN chunks c ON m.chunk_id = c.id
91
+ JOIN documents ref_d ON c.document_id = ref_d.id
92
+ JOIN defn_enclosing_ranges enc_der
93
+ ON enc_der.document_id = ref_d.id
94
+ AND c.start_line >= enc_der.start_line
95
+ AND c.end_line <= enc_der.end_line
96
+ JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
97
+ JOIN documents enc_d ON enc_der.document_id = enc_d.id
98
+ WHERE m.symbol_id = ?
99
+ AND m.role != 1
100
+ AND enc_gs.id != ?
101
+ ${db.symbolNoiseFor("enc_gs")}
102
+ ${db.pathExclusionsFor("enc_d")}
103
+ ${scope ? `AND enc_d.relative_path LIKE '%${scope}%'` : ""}
104
+ ORDER BY enc_d.relative_path
105
+ LIMIT 1`,
106
+ target.symbolId,
107
+ target.symbolId
108
+ );
109
+ return rows.filter((row) => !db.isIgnored(row.relative_path)).map((row) => ({
110
+ symbolId: row.symbol_id,
111
+ symbol: row.symbol,
112
+ shortName: shortenSymbol(row.symbol),
113
+ file: row.relative_path,
114
+ symbolMatch: findExactSymbolMatch(db, row.symbol)
115
+ }));
116
+ }
117
+
118
+ export {
119
+ affected
120
+ };
121
+ //# sourceMappingURL=chunk-VJJKSGIX.js.map
@@ -1,5 +1,13 @@
1
+ import {
2
+ resolveIndexedFile
3
+ } from "./chunk-AXQKUYKF.js";
4
+
1
5
  // src/queries/deps.ts
2
6
  function deps(db, filePattern) {
7
+ const resolvedFile = resolveIndexedFile(db, filePattern);
8
+ if (!resolvedFile) {
9
+ return [];
10
+ }
3
11
  const rows = db.all(
4
12
  `SELECT DISTINCT d2.relative_path
5
13
  FROM mentions m
@@ -8,15 +16,19 @@ function deps(db, filePattern) {
8
16
  JOIN global_symbols gs ON m.symbol_id = gs.id
9
17
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
10
18
  JOIN documents d2 ON der.document_id = d2.id
11
- WHERE d1.relative_path LIKE ?
19
+ WHERE d1.relative_path = ?
12
20
  AND d2.relative_path <> d1.relative_path
13
21
  AND ${db.localSymbolPredicate}
14
22
  ORDER BY d2.relative_path`,
15
- `%${filePattern}%`
23
+ resolvedFile
16
24
  );
17
25
  return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({ relativePath: r.relative_path }));
18
26
  }
19
27
  function rdeps(db, filePattern) {
28
+ const resolvedFile = resolveIndexedFile(db, filePattern);
29
+ if (!resolvedFile) {
30
+ return [];
31
+ }
20
32
  const rows = db.all(
21
33
  `SELECT DISTINCT d1.relative_path
22
34
  FROM mentions m
@@ -25,11 +37,11 @@ function rdeps(db, filePattern) {
25
37
  JOIN global_symbols gs ON m.symbol_id = gs.id
26
38
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
27
39
  JOIN documents d2 ON der.document_id = d2.id
28
- WHERE d2.relative_path LIKE ?
29
- AND d1.relative_path NOT LIKE ?
40
+ WHERE d2.relative_path = ?
41
+ AND d1.relative_path != ?
30
42
  ORDER BY d1.relative_path`,
31
- `%${filePattern}%`,
32
- `%${filePattern}%`
43
+ resolvedFile,
44
+ resolvedFile
33
45
  );
34
46
  return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({ relativePath: r.relative_path }));
35
47
  }
@@ -38,4 +50,4 @@ export {
38
50
  deps,
39
51
  rdeps
40
52
  };
41
- //# sourceMappingURL=chunk-N5KEREIA.js.map
53
+ //# sourceMappingURL=chunk-VT4JBH6L.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
 
5
5
  // src/queries/similar-chains.ts
6
6
  function similarChains(db, opts = {}) {
@@ -210,4 +210,4 @@ function isSubChain(sub, full) {
210
210
  export {
211
211
  similarChains
212
212
  };
213
- //# sourceMappingURL=chunk-R2I3M5B4.js.map
213
+ //# sourceMappingURL=chunk-WGAD3GNR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
  import {
5
5
  parseSymbol,
6
6
  shortenSymbol
@@ -66,4 +66,4 @@ function hierarchy(db, symbolPattern) {
66
66
  export {
67
67
  hierarchy
68
68
  };
69
- //# sourceMappingURL=chunk-IJKLB2JW.js.map
69
+ //# sourceMappingURL=chunk-YDBXNPYU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-LLMPAG56.js";
3
+ } from "./chunk-AXQKUYKF.js";
4
4
 
5
5
  // src/entry-surfaces.ts
6
6
  var liveBarrelCache = /* @__PURE__ */ new WeakMap();
@@ -81,4 +81,4 @@ export {
81
81
  isEntrySurface,
82
82
  getInactiveBarrelPaths
83
83
  };
84
- //# sourceMappingURL=chunk-VO4QI3LS.js.map
84
+ //# sourceMappingURL=chunk-YY4QGUQ5.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCalleeRowsForSymbol,
3
3
  testFileExclusionSql
4
- } from "./chunk-LLMPAG56.js";
4
+ } from "./chunk-AXQKUYKF.js";
5
5
  import {
6
6
  shortenSymbol
7
7
  } from "./chunk-QIXNAB5K.js";
@@ -68,4 +68,4 @@ function passthroughCandidates(db, opts) {
68
68
  export {
69
69
  passthroughCandidates
70
70
  };
71
- //# sourceMappingURL=chunk-3566TKJ5.js.map
71
+ //# sourceMappingURL=chunk-ZEUCXQBN.js.map