scip-query 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/{chunk-OXX3QF24.js → chunk-2MQ5DPY6.js} +2 -2
  2. package/dist/{chunk-RL74LF47.js → chunk-2QTYIOJ5.js} +2 -2
  3. package/dist/{chunk-DUJNJQPO.js → chunk-3VI4YXCL.js} +3 -3
  4. package/dist/{chunk-XUVPQDXW.js → chunk-3VV2G6U7.js} +4 -4
  5. package/dist/{chunk-J47VSL6I.js → chunk-44PFXVXG.js} +3 -3
  6. package/dist/{chunk-SVLUJSY7.js → chunk-6SLFQR36.js} +4 -15
  7. package/dist/{chunk-JHVQB4Y5.js → chunk-7DBPRGMS.js} +12 -12
  8. package/dist/{chunk-A6XLXV6W.js → chunk-DTB724R3.js} +3 -3
  9. package/dist/{chunk-TWVXFKJA.js → chunk-FLOYI6I4.js} +4 -4
  10. package/dist/{chunk-MGNMHKX3.js → chunk-FO2CBB7U.js} +10 -2
  11. package/dist/{chunk-4TYLS5XX.js → chunk-GJT3MO2T.js} +9 -2
  12. package/dist/{chunk-EAGKJFDX.js → chunk-HAP4LJKX.js} +8 -29
  13. package/dist/{chunk-RE7POFGI.js → chunk-JCOJQ4I6.js} +2 -2
  14. package/dist/{chunk-VY2L4TP6.js → chunk-JGQMOS4V.js} +3 -3
  15. package/dist/{chunk-QMXSLHZP.js → chunk-JMD4WJ2Q.js} +2 -2
  16. package/dist/{chunk-43A4UCS7.js → chunk-JSQPZOPO.js} +11 -18
  17. package/dist/{chunk-PCU455MX.js → chunk-JSXGC2EH.js} +2 -2
  18. package/dist/chunk-JZN3DRCT.js +59 -0
  19. package/dist/{chunk-ZVZAIIB5.js → chunk-KMWYB3CX.js} +12 -36
  20. package/dist/{chunk-SYQR4QGK.js → chunk-MRM755FU.js} +8 -9
  21. package/dist/{chunk-R7HPHMRZ.js → chunk-N2XO3Z5F.js} +3 -3
  22. package/dist/{chunk-POLELLNM.js → chunk-OLW5UL36.js} +19 -25
  23. package/dist/{chunk-ALUFWH3U.js → chunk-OMCRXXDX.js} +187 -282
  24. package/dist/{chunk-Z5VSUOEE.js → chunk-OWJOHUZE.js} +2 -2
  25. package/dist/{chunk-RJ5GULL6.js → chunk-PEDH3D4G.js} +2 -2
  26. package/dist/{chunk-6UZU7DFL.js → chunk-POAN4SCR.js} +3 -3
  27. package/dist/{chunk-3NJSJ7TE.js → chunk-PTMGEBU3.js} +4 -15
  28. package/dist/{chunk-NXUIWD6K.js → chunk-PU44HK7P.js} +3 -3
  29. package/dist/{chunk-6CH23IAS.js → chunk-QJI7EECA.js} +22 -34
  30. package/dist/{chunk-KLNKDX6A.js → chunk-R5HICGMB.js} +4 -4
  31. package/dist/{chunk-6ECR2FLR.js → chunk-RJ2D6YWQ.js} +4 -15
  32. package/dist/{chunk-CBIWNZZZ.js → chunk-RZ5GYPBP.js} +3 -3
  33. package/dist/chunk-SRLQNO6O.js +101 -0
  34. package/dist/{chunk-JKXHHV4B.js → chunk-UGS7HJI4.js} +2 -2
  35. package/dist/{chunk-PU2254N2.js → chunk-VKUUXOE7.js} +5 -15
  36. package/dist/{chunk-W46L2BXT.js → chunk-VPUJSJCI.js} +2 -2
  37. package/dist/{chunk-UJWI5CBB.js → chunk-VRWVV3EP.js} +4 -7
  38. package/dist/{chunk-7BS4CPJX.js → chunk-WJWQEU4A.js} +3 -3
  39. package/dist/chunk-WJZHDUSB.js +40 -0
  40. package/dist/{chunk-FVJE4MQL.js → chunk-WWOCQ5W4.js} +5 -8
  41. package/dist/chunk-X3Q2OVRL.js +77 -0
  42. package/dist/chunk-Y3P7QKKN.js +27 -0
  43. package/dist/{chunk-VKBOLNYN.js → chunk-Y6FAHY4N.js} +10 -8
  44. package/dist/{chunk-TO3L4YNK.js → chunk-YMSJCSRG.js} +5 -1
  45. package/dist/{chunk-24LF6IZB.js → chunk-ZDL3U4W2.js} +3 -3
  46. package/dist/{chunk-KG4OFQEN.js → chunk-ZXNX5JRE.js} +3 -3
  47. package/dist/cli.js +368 -721
  48. package/dist/{db-C4rPbKkI.d.ts → db-6F9R9e_t.d.ts} +0 -4
  49. package/dist/index.d.ts +2 -4
  50. package/dist/index.js +46 -58
  51. package/dist/queries/affected.d.ts +1 -1
  52. package/dist/queries/affected.js +3 -3
  53. package/dist/queries/bottlenecks.d.ts +1 -1
  54. package/dist/queries/bottlenecks.js +3 -3
  55. package/dist/queries/by-kind.d.ts +1 -1
  56. package/dist/queries/by-kind.js +3 -3
  57. package/dist/queries/call-graph.d.ts +1 -1
  58. package/dist/queries/call-graph.js +3 -3
  59. package/dist/queries/change-surface.d.ts +4 -1
  60. package/dist/queries/change-surface.js +3 -3
  61. package/dist/queries/clean-signature.d.ts +9 -1
  62. package/dist/queries/clean-signature.js +5 -3
  63. package/dist/queries/code.d.ts +1 -1
  64. package/dist/queries/code.js +3 -3
  65. package/dist/queries/complexity-hotspots.d.ts +8 -1
  66. package/dist/queries/complexity-hotspots.js +3 -3
  67. package/dist/queries/complexity.d.ts +1 -1
  68. package/dist/queries/complexity.js +3 -3
  69. package/dist/queries/convergence.d.ts +1 -1
  70. package/dist/queries/convergence.js +3 -3
  71. package/dist/queries/coupling.d.ts +1 -1
  72. package/dist/queries/coupling.js +3 -3
  73. package/dist/queries/cycles.d.ts +1 -1
  74. package/dist/queries/cycles.js +3 -3
  75. package/dist/queries/dataflow.d.ts +1 -1
  76. package/dist/queries/dataflow.js +3 -3
  77. package/dist/queries/dead.d.ts +1 -1
  78. package/dist/queries/dead.js +4 -4
  79. package/dist/queries/deep-chains.d.ts +1 -1
  80. package/dist/queries/deep-chains.js +3 -3
  81. package/dist/queries/deps.d.ts +1 -1
  82. package/dist/queries/deps.js +3 -3
  83. package/dist/queries/diff-impact.d.ts +1 -1
  84. package/dist/queries/diff-impact.js +2 -2
  85. package/dist/queries/drift.d.ts +1 -1
  86. package/dist/queries/drift.js +3 -3
  87. package/dist/queries/extract-candidates.d.ts +1 -1
  88. package/dist/queries/extract-candidates.js +3 -3
  89. package/dist/queries/fan.d.ts +1 -1
  90. package/dist/queries/fan.js +3 -3
  91. package/dist/queries/files.d.ts +1 -1
  92. package/dist/queries/files.js +1 -1
  93. package/dist/queries/health.d.ts +1 -1
  94. package/dist/queries/health.js +14 -14
  95. package/dist/queries/hierarchy.d.ts +1 -1
  96. package/dist/queries/hierarchy.js +3 -3
  97. package/dist/queries/hotspots.d.ts +1 -1
  98. package/dist/queries/hotspots.js +3 -3
  99. package/dist/queries/imports.d.ts +1 -1
  100. package/dist/queries/imports.js +3 -3
  101. package/dist/queries/index.d.ts +1 -1
  102. package/dist/queries/index.js +46 -46
  103. package/dist/queries/isolated.d.ts +1 -1
  104. package/dist/queries/isolated.js +4 -4
  105. package/dist/queries/members.d.ts +4 -1
  106. package/dist/queries/members.js +3 -3
  107. package/dist/queries/methods.d.ts +1 -1
  108. package/dist/queries/methods.js +3 -3
  109. package/dist/queries/outline.d.ts +4 -1
  110. package/dist/queries/outline.js +3 -3
  111. package/dist/queries/passthrough-candidates.d.ts +1 -1
  112. package/dist/queries/passthrough-candidates.js +3 -3
  113. package/dist/queries/redundant-reexports.d.ts +1 -1
  114. package/dist/queries/redundant-reexports.js +4 -4
  115. package/dist/queries/refs.d.ts +1 -1
  116. package/dist/queries/refs.js +3 -3
  117. package/dist/queries/similar-chains.d.ts +1 -1
  118. package/dist/queries/similar-chains.js +3 -3
  119. package/dist/queries/similar-files.d.ts +1 -1
  120. package/dist/queries/similar-files.js +3 -3
  121. package/dist/queries/similar-signatures.d.ts +1 -1
  122. package/dist/queries/similar-signatures.js +3 -3
  123. package/dist/queries/similar.d.ts +2 -1
  124. package/dist/queries/similar.js +3 -3
  125. package/dist/queries/slice.d.ts +4 -3
  126. package/dist/queries/slice.js +3 -3
  127. package/dist/queries/stale-abstractions.d.ts +1 -1
  128. package/dist/queries/stale-abstractions.js +3 -3
  129. package/dist/queries/stats.d.ts +1 -1
  130. package/dist/queries/surface.d.ts +1 -1
  131. package/dist/queries/surface.js +3 -3
  132. package/dist/queries/symbols.d.ts +1 -1
  133. package/dist/queries/symbols.js +4 -4
  134. package/dist/queries/system.d.ts +6 -2
  135. package/dist/queries/system.js +4 -4
  136. package/dist/queries/trace.d.ts +1 -1
  137. package/dist/queries/trace.js +4 -4
  138. package/dist/queries/wrapper-candidates.d.ts +1 -1
  139. package/dist/queries/wrapper-candidates.js +3 -3
  140. package/package.json +1 -1
  141. package/dist/chunk-5GCORUNV.js +0 -100
  142. package/dist/chunk-ELFGD5EW.js +0 -130
  143. package/dist/chunk-GNAMV3JC.js +0 -37
  144. package/dist/chunk-J6QXMYAQ.js +0 -115
  145. package/dist/chunk-KYPXKV64.js +0 -51
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ALUFWH3U.js";
3
+ } from "./chunk-OMCRXXDX.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-OXX3QF24.js.map
61
+ //# sourceMappingURL=chunk-2MQ5DPY6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ALUFWH3U.js";
3
+ } from "./chunk-OMCRXXDX.js";
4
4
 
5
5
  // src/queries/drift.ts
6
6
  import path from "path";
@@ -162,4 +162,4 @@ function isTestLikePath(filePath) {
162
162
  export {
163
163
  drift
164
164
  };
165
- //# sourceMappingURL=chunk-RL74LF47.js.map
165
+ //# sourceMappingURL=chunk-2QTYIOJ5.js.map
@@ -2,12 +2,12 @@ import {
2
2
  findFirstSymbolMatch,
3
3
  getSourceImports,
4
4
  resolveIndexedFile
5
- } from "./chunk-ALUFWH3U.js";
5
+ } from "./chunk-OMCRXXDX.js";
6
6
  import {
7
7
  isModuleLikeSymbol,
8
8
  leafName,
9
9
  shortenSymbol
10
- } from "./chunk-TO3L4YNK.js";
10
+ } from "./chunk-YMSJCSRG.js";
11
11
 
12
12
  // src/queries/imports.ts
13
13
  function imports(db, filePattern) {
@@ -169,4 +169,4 @@ export {
169
169
  importedBy,
170
170
  unusedImports
171
171
  };
172
- //# sourceMappingURL=chunk-DUJNJQPO.js.map
172
+ //# sourceMappingURL=chunk-3VI4YXCL.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  isEntrySurface
3
- } from "./chunk-JKXHHV4B.js";
3
+ } from "./chunk-UGS7HJI4.js";
4
4
  import {
5
5
  getAllDefinitions,
6
6
  getCalleeRowsForSymbol,
7
7
  getCallerRowsForSymbol
8
- } from "./chunk-ALUFWH3U.js";
8
+ } from "./chunk-OMCRXXDX.js";
9
9
  import {
10
10
  shortenSymbol
11
- } from "./chunk-TO3L4YNK.js";
11
+ } from "./chunk-YMSJCSRG.js";
12
12
 
13
13
  // src/queries/isolated.ts
14
14
  function isolated(db, opts = {}) {
@@ -31,4 +31,4 @@ function isolated(db, opts = {}) {
31
31
  export {
32
32
  isolated
33
33
  };
34
- //# sourceMappingURL=chunk-XUVPQDXW.js.map
34
+ //# sourceMappingURL=chunk-3VV2G6U7.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-ALUFWH3U.js";
4
+ } from "./chunk-OMCRXXDX.js";
5
5
  import {
6
6
  shortenSymbol
7
- } from "./chunk-TO3L4YNK.js";
7
+ } from "./chunk-YMSJCSRG.js";
8
8
 
9
9
  // src/queries/convergence.ts
10
10
  function convergence(db, symbolPatternA, symbolPatternB) {
@@ -73,4 +73,4 @@ function convergence(db, symbolPatternA, symbolPatternB) {
73
73
  export {
74
74
  convergence
75
75
  };
76
- //# sourceMappingURL=chunk-J47VSL6I.js.map
76
+ //# sourceMappingURL=chunk-44PFXVXG.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
- getDefinitionsForFile
3
- } from "./chunk-ALUFWH3U.js";
2
+ getScopedDefinitions
3
+ } from "./chunk-OMCRXXDX.js";
4
4
  import {
5
5
  shortenSymbol
6
- } from "./chunk-TO3L4YNK.js";
6
+ } from "./chunk-YMSJCSRG.js";
7
7
 
8
8
  // src/queries/stale-abstractions.ts
9
9
  function staleAbstractions(db, opts) {
@@ -41,17 +41,6 @@ function isTrueStaleAbstraction(row, filesWithFunctions) {
41
41
  }
42
42
  return true;
43
43
  }
44
- function getScopedDefinitions(db, scope) {
45
- const scopeFilter = scope ? `AND relative_path LIKE '%${scope}%'` : "";
46
- return db.all(
47
- `SELECT relative_path
48
- FROM documents
49
- WHERE 1 = 1
50
- ${db.pathExclusionsFor("documents")}
51
- ${scopeFilter}
52
- ORDER BY relative_path`
53
- ).flatMap((row) => getDefinitionsForFile(db, row.relative_path)).filter((row) => !db.isIgnored(row.relativePath));
54
- }
55
44
  function countCrossFileConsumers(db, definition) {
56
45
  const callers = db.all(
57
46
  `SELECT DISTINCT d.relative_path
@@ -72,4 +61,4 @@ function definitionLoc(definition) {
72
61
  export {
73
62
  staleAbstractions
74
63
  };
75
- //# sourceMappingURL=chunk-SVLUJSY7.js.map
64
+ //# sourceMappingURL=chunk-6SLFQR36.js.map
@@ -3,37 +3,37 @@ import {
3
3
  } from "./chunk-74RFWB5T.js";
4
4
  import {
5
5
  wrapperCandidates
6
- } from "./chunk-PU2254N2.js";
6
+ } from "./chunk-VKUUXOE7.js";
7
7
  import {
8
8
  similarAll
9
- } from "./chunk-6CH23IAS.js";
9
+ } from "./chunk-QJI7EECA.js";
10
10
  import {
11
11
  staleAbstractions
12
- } from "./chunk-SVLUJSY7.js";
12
+ } from "./chunk-6SLFQR36.js";
13
13
  import {
14
14
  isolated
15
- } from "./chunk-XUVPQDXW.js";
15
+ } from "./chunk-3VV2G6U7.js";
16
16
  import {
17
17
  passthroughCandidates
18
- } from "./chunk-6ECR2FLR.js";
18
+ } from "./chunk-RJ2D6YWQ.js";
19
19
  import {
20
20
  drift
21
- } from "./chunk-RL74LF47.js";
21
+ } from "./chunk-2QTYIOJ5.js";
22
22
  import {
23
23
  extractCandidates
24
- } from "./chunk-3NJSJ7TE.js";
24
+ } from "./chunk-PTMGEBU3.js";
25
25
  import {
26
26
  complexityHotspots
27
- } from "./chunk-ELFGD5EW.js";
27
+ } from "./chunk-WJZHDUSB.js";
28
28
  import {
29
29
  cycles
30
- } from "./chunk-OXX3QF24.js";
30
+ } from "./chunk-2MQ5DPY6.js";
31
31
  import {
32
32
  dead
33
- } from "./chunk-KLNKDX6A.js";
33
+ } from "./chunk-R5HICGMB.js";
34
34
  import {
35
35
  isEntrySurface
36
- } from "./chunk-JKXHHV4B.js";
36
+ } from "./chunk-UGS7HJI4.js";
37
37
 
38
38
  // src/queries/health.ts
39
39
  function health(db, opts = {}) {
@@ -218,4 +218,4 @@ function health(db, opts = {}) {
218
218
  export {
219
219
  health
220
220
  };
221
- //# sourceMappingURL=chunk-JHVQB4Y5.js.map
221
+ //# sourceMappingURL=chunk-7DBPRGMS.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol
4
- } from "./chunk-ALUFWH3U.js";
4
+ } from "./chunk-OMCRXXDX.js";
5
5
  import {
6
6
  shortenSymbol
7
- } from "./chunk-TO3L4YNK.js";
7
+ } from "./chunk-YMSJCSRG.js";
8
8
 
9
9
  // src/queries/complexity.ts
10
10
  import { readFileSync } from "fs";
@@ -107,4 +107,4 @@ function stripCommentsAndStrings(source) {
107
107
  export {
108
108
  complexity
109
109
  };
110
- //# sourceMappingURL=chunk-A6XLXV6W.js.map
110
+ //# sourceMappingURL=chunk-DTB724R3.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  isLiveBarrel
3
- } from "./chunk-JKXHHV4B.js";
3
+ } from "./chunk-UGS7HJI4.js";
4
4
  import {
5
5
  getDefinitionsForFile,
6
6
  getSourceExports,
7
7
  getSourceImports
8
- } from "./chunk-ALUFWH3U.js";
8
+ } from "./chunk-OMCRXXDX.js";
9
9
  import {
10
10
  leafSuffix,
11
11
  shortenSymbol
12
- } from "./chunk-TO3L4YNK.js";
12
+ } from "./chunk-YMSJCSRG.js";
13
13
 
14
14
  // src/queries/redundant-reexports.ts
15
15
  function redundantReexports(db, opts = {}) {
@@ -182,4 +182,4 @@ function dedupeReexports(rows) {
182
182
  export {
183
183
  redundantReexports
184
184
  };
185
- //# sourceMappingURL=chunk-TWVXFKJA.js.map
185
+ //# sourceMappingURL=chunk-FLOYI6I4.js.map
@@ -1,10 +1,18 @@
1
1
  // src/queries/files.ts
2
+ function globToLike(pattern) {
3
+ const hasGlobChars = /[*?]/.test(pattern);
4
+ if (!hasGlobChars) {
5
+ return `%${pattern}%`;
6
+ }
7
+ return pattern.replace(/\*\*/g, "%").replace(/\*/g, "%").replace(/\?/g, "_");
8
+ }
2
9
  function files(db, pattern) {
10
+ const likePattern = globToLike(pattern);
3
11
  const rows = db.all(
4
12
  `SELECT relative_path FROM documents
5
13
  WHERE relative_path LIKE ?
6
14
  ORDER BY relative_path`,
7
- `%${pattern}%`
15
+ likePattern
8
16
  );
9
17
  return rows.filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({ relativePath: r.relative_path }));
10
18
  }
@@ -12,4 +20,4 @@ function files(db, pattern) {
12
20
  export {
13
21
  files
14
22
  };
15
- //# sourceMappingURL=chunk-MGNMHKX3.js.map
23
+ //# sourceMappingURL=chunk-FO2CBB7U.js.map
@@ -3,8 +3,15 @@ function cleanSignature(sig) {
3
3
  if (!sig || !sig.trim()) return null;
4
4
  return sig.replace(/^```\w*\s*/, "").replace(/\s*```$/, "").replace(/^\(method\)\s*/, "").replace(/^\(property\)\s*/, "").replace(/^\(function\)\s*/, "").replace(/^\(class\)\s*/, "").replace(/^\(interface\)\s*/, "").replace(/^\(enum\)\s*/, "").replace(/^\(type alias\)\s*/, "").replace(/^\(const\)\s*/, "").replace(/^\(var\)\s*/, "").trim() || null;
5
5
  }
6
+ function extractSignature(doc) {
7
+ if (!doc) return null;
8
+ const pipeIdx = doc.indexOf("|");
9
+ if (pipeIdx === -1) return doc.replace(/\n/g, " ");
10
+ return doc.slice(pipeIdx + 1).replace(/\n/g, " ");
11
+ }
6
12
 
7
13
  export {
8
- cleanSignature
14
+ cleanSignature,
15
+ extractSignature
9
16
  };
10
- //# sourceMappingURL=chunk-4TYLS5XX.js.map
17
+ //# sourceMappingURL=chunk-GJT3MO2T.js.map
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  findFirstSymbolMatch,
3
3
  getCalleeRowsForSymbol,
4
+ getResolvedReferenceSites,
4
5
  getSourceReferenceSites
5
- } from "./chunk-ALUFWH3U.js";
6
+ } from "./chunk-OMCRXXDX.js";
6
7
  import {
7
8
  shortenSymbol
8
- } from "./chunk-TO3L4YNK.js";
9
+ } from "./chunk-YMSJCSRG.js";
9
10
 
10
11
  // src/queries/dataflow.ts
11
12
  function dataflow(db, symbolPattern) {
@@ -16,34 +17,12 @@ function dataflow(db, symbolPattern) {
16
17
  line: match.startLine
17
18
  }];
18
19
  const sourceUsageSites = getSourceReferenceSites(db, match);
19
- const usageSites = sourceUsageSites.length > 0 ? sourceUsageSites.map((site) => ({
20
+ const resolvedSites = sourceUsageSites.length > 0 ? sourceUsageSites : getResolvedReferenceSites(db, match);
21
+ const normalizedUsageSites = resolvedSites.filter((site) => !db.isIgnored(site.file)).map((site) => ({
20
22
  file: site.file,
21
23
  line: site.line,
22
- enclosing_symbol: site.enclosingSymbol
23
- })) : db.all(
24
- `SELECT d.relative_path AS file, c.start_line AS line,
25
- (SELECT enc_gs.symbol
26
- FROM defn_enclosing_ranges enc_der
27
- JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
28
- WHERE enc_der.document_id = d.id
29
- AND enc_der.start_line <= c.start_line
30
- AND enc_der.end_line >= c.end_line
31
- ORDER BY (enc_der.end_line - enc_der.start_line) ASC
32
- LIMIT 1
33
- ) AS enclosing_symbol
34
- FROM mentions m
35
- JOIN chunks c ON m.chunk_id = c.id
36
- JOIN documents d ON c.document_id = d.id
37
- WHERE m.symbol_id = ? AND m.role != 1
38
- ${db.pathExclusionsFor("d")}
39
- ORDER BY d.relative_path, c.start_line`,
40
- match.symbolId
41
- );
42
- const normalizedUsageSites = usageSites.filter((site) => !db.isIgnored(site.file)).map((site) => ({
43
- file: site.file,
44
- line: site.line,
45
- enclosingSymbol: site.enclosing_symbol ?? "(top-level)",
46
- enclosingShort: site.enclosing_symbol ? shortenSymbol(site.enclosing_symbol) : "(top-level)"
24
+ enclosingSymbol: site.enclosingSymbol ?? "(top-level)",
25
+ enclosingShort: site.enclosingSymbol ? shortenSymbol(site.enclosingSymbol) : "(top-level)"
47
26
  }));
48
27
  const producers = uniqueSymbolRows(getCalleeRowsForSymbol(db, match, { limit: 30 }).map((row) => ({
49
28
  symbol: row.symbol,
@@ -84,4 +63,4 @@ function uniqueSymbolRows(rows) {
84
63
  export {
85
64
  dataflow
86
65
  };
87
- //# sourceMappingURL=chunk-EAGKJFDX.js.map
66
+ //# sourceMappingURL=chunk-HAP4LJKX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ALUFWH3U.js";
3
+ } from "./chunk-OMCRXXDX.js";
4
4
 
5
5
  // src/queries/similar-files.ts
6
6
  function similarFiles(db, opts = {}) {
@@ -90,4 +90,4 @@ function compareProfiles(a, b, minSimilarity) {
90
90
  export {
91
91
  similarFiles
92
92
  };
93
- //# sourceMappingURL=chunk-RE7POFGI.js.map
93
+ //# sourceMappingURL=chunk-JCOJQ4I6.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getAllDefinitions,
3
3
  getCallerRowsForSymbol
4
- } from "./chunk-ALUFWH3U.js";
4
+ } from "./chunk-OMCRXXDX.js";
5
5
  import {
6
6
  shortenSymbol
7
- } from "./chunk-TO3L4YNK.js";
7
+ } from "./chunk-YMSJCSRG.js";
8
8
 
9
9
  // src/queries/hotspots.ts
10
10
  function hotspots(db, opts = {}) {
@@ -56,4 +56,4 @@ function hotspots(db, opts = {}) {
56
56
  export {
57
57
  hotspots
58
58
  };
59
- //# sourceMappingURL=chunk-VY2L4TP6.js.map
59
+ //# sourceMappingURL=chunk-JGQMOS4V.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildFileDepGraph
3
- } from "./chunk-ALUFWH3U.js";
3
+ } from "./chunk-OMCRXXDX.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-QMXSLHZP.js.map
213
+ //# sourceMappingURL=chunk-JMD4WJ2Q.js.map
@@ -1,9 +1,10 @@
1
1
  import {
2
+ getDefinitionsForFile,
2
3
  resolveIndexedFile
3
- } from "./chunk-ALUFWH3U.js";
4
+ } from "./chunk-OMCRXXDX.js";
4
5
  import {
5
6
  shortenSymbol
6
- } from "./chunk-TO3L4YNK.js";
7
+ } from "./chunk-YMSJCSRG.js";
7
8
 
8
9
  // src/queries/change-surface.ts
9
10
  function changeSurface(db, filePattern) {
@@ -17,18 +18,10 @@ function changeSurface(db, filePattern) {
17
18
  resolvedFile
18
19
  );
19
20
  if (!doc || db.isIgnored(doc.relative_path)) return null;
20
- const syms = db.all(
21
- `SELECT DISTINCT gs.id AS symbol_id, gs.symbol, der.start_line, der.end_line
22
- FROM defn_enclosing_ranges der
23
- JOIN global_symbols gs ON der.symbol_id = gs.id
24
- WHERE der.document_id = ?
25
- ${db.symbolNoiseFor("gs")}
26
- ORDER BY der.start_line`,
27
- doc.id
28
- );
21
+ const definitions = getDefinitionsForFile(db, doc.relative_path).sort((a, b) => a.startLine - b.startLine || a.endLine - b.endLine);
29
22
  const symbols = [];
30
23
  let totalExternalConsumers = 0;
31
- for (const sym of syms) {
24
+ for (const def of definitions) {
32
25
  const consumerRow = db.get(
33
26
  `SELECT COUNT(DISTINCT c.document_id) AS consumer_count
34
27
  FROM mentions m
@@ -36,7 +29,7 @@ function changeSurface(db, filePattern) {
36
29
  WHERE m.symbol_id = ?
37
30
  AND m.role != 1
38
31
  AND c.document_id != ?`,
39
- sym.symbol_id,
32
+ def.symbolId,
40
33
  doc.id
41
34
  );
42
35
  const externalConsumers = consumerRow?.consumer_count ?? 0;
@@ -50,10 +43,10 @@ function changeSurface(db, filePattern) {
50
43
  }
51
44
  totalExternalConsumers += externalConsumers;
52
45
  symbols.push({
53
- symbol: sym.symbol,
54
- shortName: shortenSymbol(sym.symbol),
55
- startLine: sym.start_line,
56
- endLine: sym.end_line,
46
+ symbol: def.symbol,
47
+ shortName: shortenSymbol(def.symbol),
48
+ startLine: def.startLine,
49
+ endLine: def.endLine,
57
50
  externalConsumers,
58
51
  riskLevel
59
52
  });
@@ -68,4 +61,4 @@ function changeSurface(db, filePattern) {
68
61
  export {
69
62
  changeSurface
70
63
  };
71
- //# sourceMappingURL=chunk-43A4UCS7.js.map
64
+ //# sourceMappingURL=chunk-JSQPZOPO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  shortenSymbol
3
- } from "./chunk-TO3L4YNK.js";
3
+ } from "./chunk-YMSJCSRG.js";
4
4
 
5
5
  // src/queries/diff-impact.ts
6
6
  import { execFileSync } from "child_process";
@@ -148,4 +148,4 @@ function getChangedFiles(projectRoot, base) {
148
148
  export {
149
149
  diffImpact
150
150
  };
151
- //# sourceMappingURL=chunk-PCU455MX.js.map
151
+ //# sourceMappingURL=chunk-JSXGC2EH.js.map
@@ -0,0 +1,59 @@
1
+ import {
2
+ getDefinitionsForFile,
3
+ resolveIndexedPaths
4
+ } from "./chunk-OMCRXXDX.js";
5
+ import {
6
+ shortenSymbol
7
+ } from "./chunk-YMSJCSRG.js";
8
+
9
+ // src/queries/outline.ts
10
+ function outline(db, filePattern) {
11
+ const resolvedPaths = resolveIndexedPaths(db, filePattern);
12
+ if (resolvedPaths.length === 0) {
13
+ return [];
14
+ }
15
+ const definitions = resolvedPaths.flatMap((relativePath) => getDefinitionsForFile(db, relativePath)).filter((d) => !db.isIgnored(d.relativePath)).sort(
16
+ (a, b) => a.relativePath.localeCompare(b.relativePath) || a.startLine - b.startLine || a.endLine - b.endLine
17
+ );
18
+ const nodes = definitions.map((d) => ({
19
+ symbol: d.symbol,
20
+ shortName: shortenSymbol(d.symbol),
21
+ startLine: d.startLine,
22
+ endLine: d.endLine,
23
+ children: []
24
+ }));
25
+ const nodeMap = /* @__PURE__ */ new Map();
26
+ for (const n of nodes) nodeMap.set(n.symbol, n);
27
+ const roots = [];
28
+ for (let i = 0; i < definitions.length; i++) {
29
+ const d = definitions[i];
30
+ const node = nodes[i];
31
+ if (d.enclosingSymbol && nodeMap.has(d.enclosingSymbol)) {
32
+ nodeMap.get(d.enclosingSymbol).children.push(node);
33
+ continue;
34
+ }
35
+ let bestParent = null;
36
+ let bestSize = Infinity;
37
+ for (const candidate of nodes) {
38
+ if (candidate === node) continue;
39
+ if (candidate.startLine <= node.startLine && candidate.endLine >= node.endLine) {
40
+ const size = candidate.endLine - candidate.startLine;
41
+ if (size < bestSize) {
42
+ bestSize = size;
43
+ bestParent = candidate;
44
+ }
45
+ }
46
+ }
47
+ if (bestParent) {
48
+ bestParent.children.push(node);
49
+ } else {
50
+ roots.push(node);
51
+ }
52
+ }
53
+ return roots;
54
+ }
55
+
56
+ export {
57
+ outline
58
+ };
59
+ //# sourceMappingURL=chunk-JZN3DRCT.js.map
@@ -1,15 +1,17 @@
1
1
  import {
2
- cleanSignature
3
- } from "./chunk-4TYLS5XX.js";
2
+ cleanSignature,
3
+ extractSignature
4
+ } from "./chunk-GJT3MO2T.js";
4
5
  import {
5
6
  findFirstSymbolMatch,
7
+ getResolvedReferenceSites,
6
8
  getSourceReferenceSites,
7
9
  getSourceText
8
- } from "./chunk-ALUFWH3U.js";
10
+ } from "./chunk-OMCRXXDX.js";
9
11
  import {
10
12
  isFunctionLikeSymbol,
11
13
  shortenSymbol
12
- } from "./chunk-TO3L4YNK.js";
14
+ } from "./chunk-YMSJCSRG.js";
13
15
 
14
16
  // src/queries/trace.ts
15
17
  function trace(db, symbolPattern) {
@@ -18,50 +20,24 @@ function trace(db, symbolPattern) {
18
20
  return { definitions: [], referencedBy: [] };
19
21
  }
20
22
  const definitionMeta = db.get(
21
- `SELECT
22
- gs.display_name,
23
- REPLACE(SUBSTR(gs.documentation, INSTR(gs.documentation, '|') + 1), char(10), ' ') AS sig
24
- FROM global_symbols gs
25
- WHERE gs.id = ?
26
- LIMIT 10`,
23
+ "SELECT display_name, documentation FROM global_symbols WHERE id = ?",
27
24
  match.symbolId
28
25
  );
26
+ const sig = extractSignature(definitionMeta?.documentation ?? null);
29
27
  const definitions = db.isIgnored(match.relativePath) ? [] : [{
30
28
  relativePath: match.relativePath,
31
29
  startLine: match.startLine,
32
30
  endLine: match.endLine,
33
- signature: buildTraceSignature(definitionMeta?.sig ?? null, definitionMeta?.display_name ?? null, match.symbol),
31
+ signature: buildTraceSignature(sig, definitionMeta?.display_name ?? null, match.symbol),
34
32
  source: definitionSource(db, match.relativePath, match.startLine, match.endLine)
35
33
  }];
36
34
  const sourceSites = getSourceReferenceSites(db, match);
37
- const referencedBy = sourceSites.length > 0 ? sourceSites.filter((site) => !db.isIgnored(site.file)).map((site) => ({
35
+ const resolvedSites = sourceSites.length > 0 ? sourceSites : getResolvedReferenceSites(db, match);
36
+ const referencedBy = resolvedSites.filter((site) => !db.isIgnored(site.file)).map((site) => ({
38
37
  relativePath: site.file,
39
38
  line: site.line,
40
39
  enclosingSymbol: site.enclosingSymbol,
41
40
  enclosingShort: site.enclosingSymbol ? shortenSymbol(site.enclosingSymbol) : "(top-level)"
42
- })) : db.all(
43
- `SELECT DISTINCT d.relative_path, c.start_line AS line,
44
- (SELECT enc_gs.symbol
45
- FROM defn_enclosing_ranges enc_der
46
- JOIN global_symbols enc_gs ON enc_der.symbol_id = enc_gs.id
47
- WHERE enc_der.document_id = d.id
48
- AND enc_der.start_line <= c.start_line
49
- AND enc_der.end_line >= c.end_line
50
- ORDER BY (enc_der.end_line - enc_der.start_line) ASC
51
- LIMIT 1
52
- ) AS enclosing_symbol
53
- FROM mentions m
54
- JOIN chunks c ON m.chunk_id = c.id
55
- JOIN documents d ON c.document_id = d.id
56
- WHERE m.symbol_id = ?
57
- AND m.role != 1
58
- ORDER BY d.relative_path, c.start_line`,
59
- match.symbolId
60
- ).filter((r) => !db.isIgnored(r.relative_path)).map((r) => ({
61
- relativePath: r.relative_path,
62
- line: r.line,
63
- enclosingSymbol: r.enclosing_symbol,
64
- enclosingShort: r.enclosing_symbol ? shortenSymbol(r.enclosing_symbol) : "(top-level)"
65
41
  }));
66
42
  return { definitions, referencedBy };
67
43
  }
@@ -92,4 +68,4 @@ function looksBogusSignature(signature) {
92
68
  export {
93
69
  trace
94
70
  };
95
- //# sourceMappingURL=chunk-ZVZAIIB5.js.map
71
+ //# sourceMappingURL=chunk-KMWYB3CX.js.map
@@ -1,13 +1,14 @@
1
1
  import {
2
- cleanSignature
3
- } from "./chunk-4TYLS5XX.js";
2
+ cleanSignature,
3
+ extractSignature
4
+ } from "./chunk-GJT3MO2T.js";
4
5
  import {
5
6
  getDefinitionsForFile,
6
7
  resolveIndexedPaths
7
- } from "./chunk-ALUFWH3U.js";
8
+ } from "./chunk-OMCRXXDX.js";
8
9
  import {
9
10
  shortenSymbol
10
- } from "./chunk-TO3L4YNK.js";
11
+ } from "./chunk-YMSJCSRG.js";
11
12
 
12
13
  // src/queries/symbols.ts
13
14
  function symbols(db, filePattern) {
@@ -17,9 +18,7 @@ function symbols(db, filePattern) {
17
18
  }
18
19
  return resolvedPaths.flatMap((relativePath) => getDefinitionsForFile(db, relativePath)).filter((row) => !db.isIgnored(row.relativePath)).map((row) => {
19
20
  const docRow = db.get(
20
- `SELECT REPLACE(SUBSTR(documentation, INSTR(documentation, '|') + 1), char(10), ' ') AS sig
21
- FROM global_symbols
22
- WHERE id = ?`,
21
+ "SELECT documentation FROM global_symbols WHERE id = ?",
23
22
  row.symbolId
24
23
  );
25
24
  return {
@@ -27,7 +26,7 @@ function symbols(db, filePattern) {
27
26
  endLine: row.endLine,
28
27
  symbol: row.symbol,
29
28
  shortName: shortenSymbol(row.symbol),
30
- signature: cleanSignature(docRow?.sig ?? null)
29
+ signature: cleanSignature(extractSignature(docRow?.documentation ?? null))
31
30
  };
32
31
  });
33
32
  }
@@ -35,4 +34,4 @@ function symbols(db, filePattern) {
35
34
  export {
36
35
  symbols
37
36
  };
38
- //# sourceMappingURL=chunk-SYQR4QGK.js.map
37
+ //# sourceMappingURL=chunk-MRM755FU.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  findFirstSymbolMatch
3
- } from "./chunk-ALUFWH3U.js";
3
+ } from "./chunk-OMCRXXDX.js";
4
4
  import {
5
5
  parseSymbol,
6
6
  shortenSymbol
7
- } from "./chunk-TO3L4YNK.js";
7
+ } from "./chunk-YMSJCSRG.js";
8
8
 
9
9
  // src/queries/hierarchy.ts
10
10
  function hierarchy(db, symbolPattern) {
@@ -66,4 +66,4 @@ function hierarchy(db, symbolPattern) {
66
66
  export {
67
67
  hierarchy
68
68
  };
69
- //# sourceMappingURL=chunk-R7HPHMRZ.js.map
69
+ //# sourceMappingURL=chunk-N2XO3Z5F.js.map