projscan 4.6.0 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +24 -11
  2. package/dist/cli/_shared.js +12 -44
  3. package/dist/cli/_shared.js.map +1 -1
  4. package/dist/cli/changedOnly.d.ts +16 -0
  5. package/dist/cli/changedOnly.js +28 -0
  6. package/dist/cli/changedOnly.js.map +1 -0
  7. package/dist/cli/formatOptions.d.ts +4 -0
  8. package/dist/cli/formatOptions.js +30 -0
  9. package/dist/cli/formatOptions.js.map +1 -0
  10. package/dist/core/agentBrief.js +6 -1
  11. package/dist/core/agentBrief.js.map +1 -1
  12. package/dist/core/astBodySignals.js +2 -3
  13. package/dist/core/astBodySignals.js.map +1 -1
  14. package/dist/core/astMembers.d.ts +1 -0
  15. package/dist/core/astMembers.js +38 -9
  16. package/dist/core/astMembers.js.map +1 -1
  17. package/dist/core/bugHunt.js +2 -142
  18. package/dist/core/bugHunt.js.map +1 -1
  19. package/dist/core/bugHuntHotspotFindings.d.ts +2 -0
  20. package/dist/core/bugHuntHotspotFindings.js +68 -0
  21. package/dist/core/bugHuntHotspotFindings.js.map +1 -0
  22. package/dist/core/bugHuntPreflightFindings.d.ts +3 -0
  23. package/dist/core/bugHuntPreflightFindings.js +115 -0
  24. package/dist/core/bugHuntPreflightFindings.js.map +1 -0
  25. package/dist/core/codeGraph.d.ts +1 -8
  26. package/dist/core/codeGraph.js +4 -30
  27. package/dist/core/codeGraph.js.map +1 -1
  28. package/dist/core/codeGraphFileSelection.d.ts +7 -0
  29. package/dist/core/codeGraphFileSelection.js +19 -0
  30. package/dist/core/codeGraphFileSelection.js.map +1 -0
  31. package/dist/core/codeGraphQueries.d.ts +9 -0
  32. package/dist/core/codeGraphQueries.js +25 -0
  33. package/dist/core/codeGraphQueries.js.map +1 -0
  34. package/dist/core/dataflow.js +3 -338
  35. package/dist/core/dataflow.js.map +1 -1
  36. package/dist/core/dataflowDatabaseSinks.d.ts +8 -0
  37. package/dist/core/dataflowDatabaseSinks.js +78 -0
  38. package/dist/core/dataflowDatabaseSinks.js.map +1 -0
  39. package/dist/core/dataflowRiskAssembly.d.ts +11 -0
  40. package/dist/core/dataflowRiskAssembly.js +117 -0
  41. package/dist/core/dataflowRiskAssembly.js.map +1 -0
  42. package/dist/core/dataflowTraversal.d.ts +25 -0
  43. package/dist/core/dataflowTraversal.js +200 -0
  44. package/dist/core/dataflowTraversal.js.map +1 -0
  45. package/dist/core/fileInspectionReport.d.ts +13 -0
  46. package/dist/core/fileInspectionReport.js +49 -0
  47. package/dist/core/fileInspectionReport.js.map +1 -0
  48. package/dist/core/fileInspector.d.ts +3 -11
  49. package/dist/core/fileInspector.js +2 -46
  50. package/dist/core/fileInspector.js.map +1 -1
  51. package/dist/core/fixSuggest.d.ts +1 -9
  52. package/dist/core/fixSuggest.js +2 -58
  53. package/dist/core/fixSuggest.js.map +1 -1
  54. package/dist/core/fixSuggestDependencyNames.d.ts +1 -0
  55. package/dist/core/fixSuggestDependencyNames.js +9 -0
  56. package/dist/core/fixSuggestDependencyNames.js.map +1 -0
  57. package/dist/core/fixSuggestPreview.d.ts +10 -0
  58. package/dist/core/fixSuggestPreview.js +87 -0
  59. package/dist/core/fixSuggestPreview.js.map +1 -0
  60. package/dist/core/frameworkHonoSources.js +7 -0
  61. package/dist/core/frameworkHonoSources.js.map +1 -1
  62. package/dist/core/frameworkNextRouteSources.d.ts +6 -1
  63. package/dist/core/frameworkNextRouteSources.js +31 -1
  64. package/dist/core/frameworkNextRouteSources.js.map +1 -1
  65. package/dist/core/frameworkRemixSources.d.ts +2 -0
  66. package/dist/core/frameworkRemixSources.js +63 -0
  67. package/dist/core/frameworkRemixSources.js.map +1 -0
  68. package/dist/core/frameworkSources.d.ts +15 -3
  69. package/dist/core/frameworkSources.js +41 -10
  70. package/dist/core/frameworkSources.js.map +1 -1
  71. package/dist/core/intentRouter.d.ts +4 -14
  72. package/dist/core/intentRouter.js +4 -29
  73. package/dist/core/intentRouter.js.map +1 -1
  74. package/dist/core/intentRouterCatalog.js +17 -0
  75. package/dist/core/intentRouterCatalog.js.map +1 -1
  76. package/dist/core/intentRouterKeywordWeights.js +13 -0
  77. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  78. package/dist/core/intentRouterReleaseSignals.js +119 -39
  79. package/dist/core/intentRouterReleaseSignals.js.map +1 -1
  80. package/dist/core/intentRouterResult.d.ts +16 -0
  81. package/dist/core/intentRouterResult.js +34 -0
  82. package/dist/core/intentRouterResult.js.map +1 -0
  83. package/dist/core/intentRouterWorkSignals.js +18 -0
  84. package/dist/core/intentRouterWorkSignals.js.map +1 -1
  85. package/dist/core/languages/pythonLockfiles.d.ts +4 -0
  86. package/dist/core/languages/pythonLockfiles.js +6 -2
  87. package/dist/core/languages/pythonLockfiles.js.map +1 -1
  88. package/dist/core/languages/pythonManifests.js +5 -5
  89. package/dist/core/languages/pythonManifests.js.map +1 -1
  90. package/dist/core/languages/pythonProjectEvidence.js +1 -1
  91. package/dist/core/languages/pythonProjectEvidence.js.map +1 -1
  92. package/dist/core/languages/pythonRequirements.js +144 -18
  93. package/dist/core/languages/pythonRequirements.js.map +1 -1
  94. package/dist/core/pluginManifestValidation.d.ts +41 -0
  95. package/dist/core/pluginManifestValidation.js +179 -0
  96. package/dist/core/pluginManifestValidation.js.map +1 -0
  97. package/dist/core/plugins.d.ts +3 -41
  98. package/dist/core/plugins.js +2 -129
  99. package/dist/core/plugins.js.map +1 -1
  100. package/dist/core/regressionPlan.d.ts +2 -1
  101. package/dist/core/regressionPlan.js +7 -1
  102. package/dist/core/regressionPlan.js.map +1 -1
  103. package/dist/core/releaseEvidence.js +6 -120
  104. package/dist/core/releaseEvidence.js.map +1 -1
  105. package/dist/core/releaseEvidenceArtifacts.d.ts +3 -0
  106. package/dist/core/releaseEvidenceArtifacts.js +65 -0
  107. package/dist/core/releaseEvidenceArtifacts.js.map +1 -0
  108. package/dist/core/releaseEvidenceVerdict.d.ts +6 -0
  109. package/dist/core/releaseEvidenceVerdict.js +54 -0
  110. package/dist/core/releaseEvidenceVerdict.js.map +1 -0
  111. package/dist/core/reportPathRedaction.d.ts +4 -0
  112. package/dist/core/reportPathRedaction.js +64 -0
  113. package/dist/core/reportPathRedaction.js.map +1 -0
  114. package/dist/core/reportScope.js +2 -163
  115. package/dist/core/reportScope.js.map +1 -1
  116. package/dist/core/reportScopeFiltering.d.ts +9 -0
  117. package/dist/core/reportScopeFiltering.js +102 -0
  118. package/dist/core/reportScopeFiltering.js.map +1 -0
  119. package/dist/core/searchIndex.d.ts +2 -14
  120. package/dist/core/searchIndex.js +4 -227
  121. package/dist/core/searchIndex.js.map +1 -1
  122. package/dist/core/searchIndexFiles.d.ts +1 -0
  123. package/dist/core/searchIndexFiles.js +26 -0
  124. package/dist/core/searchIndexFiles.js.map +1 -0
  125. package/dist/core/searchIndexText.d.ts +15 -0
  126. package/dist/core/searchIndexText.js +204 -0
  127. package/dist/core/searchIndexText.js.map +1 -0
  128. package/dist/core/start.js +5 -46
  129. package/dist/core/start.js.map +1 -1
  130. package/dist/core/startEvidence.d.ts +1 -1
  131. package/dist/core/startEvidence.js +16 -1
  132. package/dist/core/startEvidence.js.map +1 -1
  133. package/dist/core/startInputs.d.ts +1 -0
  134. package/dist/core/startInputs.js +4 -1
  135. package/dist/core/startInputs.js.map +1 -1
  136. package/dist/core/startMissionPolicy.js +10 -0
  137. package/dist/core/startMissionPolicy.js.map +1 -1
  138. package/dist/core/startReportBuilder.d.ts +1 -0
  139. package/dist/core/startReportBuilder.js +1 -0
  140. package/dist/core/startReportBuilder.js.map +1 -1
  141. package/dist/core/startReportContext.d.ts +23 -0
  142. package/dist/core/startReportContext.js +51 -0
  143. package/dist/core/startReportContext.js.map +1 -0
  144. package/dist/core/startRoadmapPreview.d.ts +2 -0
  145. package/dist/core/startRoadmapPreview.js +31 -0
  146. package/dist/core/startRoadmapPreview.js.map +1 -0
  147. package/dist/core/taint.d.ts +2 -67
  148. package/dist/core/taint.js +41 -164
  149. package/dist/core/taint.js.map +1 -1
  150. package/dist/core/taintIndex.d.ts +20 -0
  151. package/dist/core/taintIndex.js +81 -0
  152. package/dist/core/taintIndex.js.map +1 -0
  153. package/dist/core/taintTraversal.d.ts +8 -0
  154. package/dist/core/taintTraversal.js +113 -0
  155. package/dist/core/taintTraversal.js.map +1 -0
  156. package/dist/core/taintTypes.d.ts +67 -0
  157. package/dist/core/taintTypes.js +2 -0
  158. package/dist/core/taintTypes.js.map +1 -0
  159. package/dist/core/telemetry.js +36 -30
  160. package/dist/core/telemetry.js.map +1 -1
  161. package/dist/core/upgradePreviewPython.js +1 -1
  162. package/dist/core/upgradePreviewPython.js.map +1 -1
  163. package/dist/mcp/tools.js +11 -12
  164. package/dist/mcp/tools.js.map +1 -1
  165. package/dist/projscan-sbom.cdx.json +6 -6
  166. package/dist/reporters/consoleFixReporter.d.ts +3 -0
  167. package/dist/reporters/consoleFixReporter.js +41 -0
  168. package/dist/reporters/consoleFixReporter.js.map +1 -0
  169. package/dist/reporters/consoleReporter.d.ts +1 -3
  170. package/dist/reporters/consoleReporter.js +1 -42
  171. package/dist/reporters/consoleReporter.js.map +1 -1
  172. package/dist/tool-manifest.json +2 -2
  173. package/dist/types/start.d.ts +14 -0
  174. package/docs/GUIDE.md +1 -1
  175. package/docs/ROADMAP.md +16 -5
  176. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ export type PathRedactor = (filePath: string) => string;
2
+ export declare function normalizeReportPath(value: string): string | null;
3
+ export declare function createPathRedactor(): PathRedactor;
4
+ export declare function redactText(text: string, replacements: ReadonlyArray<readonly [string, string]>, redactor: PathRedactor | null): string;
@@ -0,0 +1,64 @@
1
+ export function normalizeReportPath(value) {
2
+ let normalized = value.trim().replace(/\\/g, '/');
3
+ normalized = normalized.replace(/\/+/g, '/');
4
+ normalized = normalized.replace(/^\.\//, '');
5
+ normalized = normalized.replace(/\/$/, '');
6
+ if (!normalized || normalized === '.')
7
+ return null;
8
+ return normalized;
9
+ }
10
+ export function createPathRedactor() {
11
+ const seen = new Map();
12
+ return (filePath) => {
13
+ const normalized = normalizeReportPath(filePath) ?? filePath;
14
+ const existing = seen.get(normalized);
15
+ if (existing)
16
+ return existing;
17
+ const next = `redacted-path-${seen.size + 1}`;
18
+ seen.set(normalized, next);
19
+ return next;
20
+ };
21
+ }
22
+ export function redactText(text, replacements, redactor) {
23
+ let out = text;
24
+ const ordered = [...replacements].sort((a, b) => b[0].length - a[0].length);
25
+ for (const [filePath, label] of ordered) {
26
+ out = out.replace(pathReferenceRegExp(filePath), label);
27
+ }
28
+ if (redactor)
29
+ out = redactUnmappedPathTokens(out, redactor);
30
+ return out;
31
+ }
32
+ const TEXT_PATH_TOKEN_PATTERN = /(?:[A-Za-z]:[\\/]|\/|\.{1,2}[\\/])?(?:[A-Za-z0-9._@-]+[\\/])+[A-Za-z0-9._@-]+\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|py|go|java|rb|rs|php|cs|json|ya?ml|toml|md)(?=$|[\s'"()[\]{}<>.,;:!?#])/gi;
33
+ function redactUnmappedPathTokens(text, redactor) {
34
+ return text.replace(TEXT_PATH_TOKEN_PATTERN, (match, ...args) => {
35
+ const offset = args[args.length - 2];
36
+ if (isHttpUrlPathToken(text, offset))
37
+ return match;
38
+ return redactor(match);
39
+ });
40
+ }
41
+ function isHttpUrlPathToken(text, offset) {
42
+ const tokenStart = previousTokenStart(text, offset);
43
+ const prefix = text.slice(tokenStart, Math.min(text.length, offset + 2)).toLowerCase();
44
+ return prefix.startsWith('http://') || prefix.startsWith('https://');
45
+ }
46
+ function previousTokenStart(text, offset) {
47
+ let index = offset;
48
+ while (index > 0 && !isPathTokenBoundary(text[index - 1]))
49
+ index -= 1;
50
+ return index;
51
+ }
52
+ function isPathTokenBoundary(char) {
53
+ return char === undefined || /[\s'"()[\]{}<>]/.test(char);
54
+ }
55
+ function pathReferenceRegExp(filePath) {
56
+ const normalized = filePath.replace(/\\/g, '/');
57
+ const pathPattern = normalized.split('/').map(escapeRegExp).join(String.raw `[\\/]`);
58
+ const tokenEnd = String.raw `(?=$|[\s'"()[\]{}<>.,;:!?#])`;
59
+ return new RegExp(String.raw `(?:\S+[\\/])*` + pathPattern + tokenEnd, 'g');
60
+ }
61
+ function escapeRegExp(value) {
62
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
63
+ }
64
+ //# sourceMappingURL=reportPathRedaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportPathRedaction.js","sourceRoot":"","sources":["../../src/core/reportPathRedaction.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { applyReportControlsToDependencies, applyReportControlsToIssuesWithRedactor, buildDirectoryTree, countDirectories, filterFilesByScope, normalizeScopes, redactFileEntry, } from './reportScopeFiltering.js';
2
+ import { createPathRedactor, normalizeReportPath, } from './reportPathRedaction.js';
1
3
  export function parseReportScopes(input) {
2
4
  if (typeof input !== 'string')
3
5
  return [];
@@ -68,167 +70,4 @@ export function applyReportControlsToAnalysis(report, options = {}) {
68
70
  issues,
69
71
  };
70
72
  }
71
- function applyReportControlsToDependencies(dependencies, scopes, redactor) {
72
- if (!dependencies?.byWorkspace)
73
- return dependencies;
74
- return {
75
- ...dependencies,
76
- byWorkspace: dependencies.byWorkspace
77
- .filter((workspace) => dependencyWorkspaceInScope(workspace.relativePath, scopes))
78
- .map((workspace) => ({
79
- ...workspace,
80
- relativePath: redactor && workspace.relativePath ? redactor(workspace.relativePath) : workspace.relativePath,
81
- })),
82
- };
83
- }
84
- function dependencyWorkspaceInScope(relativePath, scopes) {
85
- if (scopes.length === 0)
86
- return true;
87
- return isInScope(relativePath, scopes);
88
- }
89
- function applyReportControlsToIssuesWithRedactor(issues, scopes, redactor) {
90
- const out = [];
91
- for (const issue of issues) {
92
- const scopedLocations = filterLocationsByScope(issue.locations, scopes);
93
- if (scopes.length > 0 && scopedLocations.length === 0)
94
- continue;
95
- out.push(redactIssue(issue, scopedLocations, redactor));
96
- }
97
- return out;
98
- }
99
- function normalizeScopes(scopes) {
100
- return [...new Set((scopes ?? []).map(normalizeReportPath).filter(Boolean))];
101
- }
102
- function normalizeReportPath(value) {
103
- let normalized = value.trim().replace(/\\/g, '/');
104
- normalized = normalized.replace(/\/+/g, '/');
105
- normalized = normalized.replace(/^\.\//, '');
106
- normalized = normalized.replace(/\/$/, '');
107
- if (!normalized || normalized === '.')
108
- return null;
109
- return normalized;
110
- }
111
- function isInScope(filePath, scopes) {
112
- if (scopes.length === 0)
113
- return true;
114
- const normalized = normalizeReportPath(filePath);
115
- if (!normalized)
116
- return false;
117
- return scopes.some((scope) => normalized === scope || normalized.startsWith(`${scope}/`));
118
- }
119
- function filterLocationsByScope(locations, scopes) {
120
- if (!locations || locations.length === 0)
121
- return [];
122
- return locations.filter((loc) => loc.file && isInScope(loc.file, scopes));
123
- }
124
- function filterFilesByScope(files, scopes) {
125
- if (scopes.length === 0)
126
- return [...files];
127
- return files.filter((file) => isInScope(file.relativePath, scopes));
128
- }
129
- function createPathRedactor() {
130
- const seen = new Map();
131
- return (filePath) => {
132
- const normalized = normalizeReportPath(filePath) ?? filePath;
133
- const existing = seen.get(normalized);
134
- if (existing)
135
- return existing;
136
- const next = `redacted-path-${seen.size + 1}`;
137
- seen.set(normalized, next);
138
- return next;
139
- };
140
- }
141
- function redactLocations(locations, redactor) {
142
- if (!redactor)
143
- return locations.map((loc) => ({ ...loc }));
144
- return locations.map((loc) => ({ ...loc, file: redactor(loc.file) }));
145
- }
146
- function redactIssue(issue, scopedLocations, redactor) {
147
- const redactedLocations = redactLocations(scopedLocations, redactor);
148
- const redactedIssue = {
149
- ...issue,
150
- ...(scopedLocations.length > 0 || issue.locations ? { locations: redactedLocations } : {}),
151
- };
152
- if (!redactor)
153
- return redactedIssue;
154
- const textLocations = issue.locations ?? scopedLocations;
155
- const replacements = textLocations
156
- .filter((loc) => loc.file)
157
- .map((loc) => [loc.file, redactor(loc.file)]);
158
- redactedIssue.title = redactText(redactedIssue.title, replacements, redactor);
159
- redactedIssue.description = redactText(redactedIssue.description, replacements, redactor);
160
- if (redactedIssue.suggestedAction) {
161
- redactedIssue.suggestedAction = {
162
- ...redactedIssue.suggestedAction,
163
- summary: redactText(redactedIssue.suggestedAction.summary, replacements, redactor),
164
- };
165
- }
166
- return redactedIssue;
167
- }
168
- function redactText(text, replacements, redactor) {
169
- let out = text;
170
- const ordered = [...replacements].sort((a, b) => b[0].length - a[0].length);
171
- for (const [filePath, label] of ordered) {
172
- out = out.replace(pathReferenceRegExp(filePath), label);
173
- }
174
- if (redactor)
175
- out = redactUnmappedPathTokens(out, redactor);
176
- return out;
177
- }
178
- const TEXT_PATH_TOKEN_PATTERN = /(?:[A-Za-z]:[\\/]|\/|\.{1,2}[\\/])?(?:[A-Za-z0-9._@-]+[\\/])+[A-Za-z0-9._@-]+\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|py|go|java|rb|rs|php|cs|json|ya?ml|toml|md)(?=$|[\s'"()[\]{}<>.,;:!?#])/gi;
179
- function redactUnmappedPathTokens(text, redactor) {
180
- return text.replace(TEXT_PATH_TOKEN_PATTERN, (match, ...args) => {
181
- const offset = args[args.length - 2];
182
- if (isHttpUrlPathToken(text, offset))
183
- return match;
184
- return redactor(match);
185
- });
186
- }
187
- function isHttpUrlPathToken(text, offset) {
188
- const tokenStart = previousTokenStart(text, offset);
189
- const prefix = text.slice(tokenStart, Math.min(text.length, offset + 2)).toLowerCase();
190
- return prefix.startsWith('http://') || prefix.startsWith('https://');
191
- }
192
- function previousTokenStart(text, offset) {
193
- let index = offset;
194
- while (index > 0 && !isPathTokenBoundary(text[index - 1]))
195
- index -= 1;
196
- return index;
197
- }
198
- function isPathTokenBoundary(char) {
199
- return char === undefined || /[\s'"()[\]{}<>]/.test(char);
200
- }
201
- function pathReferenceRegExp(filePath) {
202
- const normalized = filePath.replace(/\\/g, '/');
203
- const pathPattern = normalized.split('/').map(escapeRegExp).join(String.raw `[\\/]`);
204
- const tokenEnd = String.raw `(?=$|[\s'"()[\]{}<>.,;:!?#])`;
205
- return new RegExp(String.raw `(?:\S+[\\/])*` + pathPattern + tokenEnd, 'g');
206
- }
207
- function escapeRegExp(value) {
208
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
209
- }
210
- function redactFileEntry(file, redactor) {
211
- if (!redactor)
212
- return { ...file };
213
- const relativePath = redactor(file.relativePath);
214
- return {
215
- ...file,
216
- relativePath,
217
- absolutePath: relativePath,
218
- directory: '.',
219
- };
220
- }
221
- function countDirectories(files) {
222
- const dirs = new Set(files.map((file) => file.directory || '.'));
223
- return dirs.size;
224
- }
225
- function buildDirectoryTree(name, files) {
226
- return {
227
- name,
228
- path: '.',
229
- fileCount: files.length,
230
- totalFileCount: files.length,
231
- children: [],
232
- };
233
- }
234
73
  //# sourceMappingURL=reportScope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reportScope.js","sourceRoot":"","sources":["../../src/core/reportScope.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,mBAAmB,CAAC;SACxB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,IAAI,QAAQ,GAAyB,EAAE,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,0BAA0B,UAAU,4BAA4B,UAAU,iDAAiD,CAC5H,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG;YACT,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3C,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;IAC5D,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;QAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAE5D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,UAAgC,EAAE;IAElC,OAAO,uCAAuC,CAC5C,MAAM,EACN,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAC1D,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,WAAW;QACX,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAsB,EACtB,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvE,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAChC,CAAC;IACF,MAAM,MAAM,GAAG,uCAAuC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxF,MAAM,YAAY,GAAG,iCAAiC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEpE,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE;YACJ,GAAG,MAAM,CAAC,IAAI;YACd,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACzC,KAAK;YACL,aAAa,EACX,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ;gBAC3B,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC1F,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa;SAChC;QACD,YAAY;QACZ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,YAA4C,EAC5C,MAAgB,EAChB,QAA6B;IAE7B,IAAI,CAAC,YAAY,EAAE,WAAW;QAAE,OAAO,YAAY,CAAC;IACpD,OAAO;QACL,GAAG,YAAY;QACf,WAAW,EAAE,YAAY,CAAC,WAAW;aAClC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,0BAA0B,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;aACjF,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,SAAS;YACZ,YAAY,EACV,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY;SACjG,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,YAAoB,EAAE,MAAgB;IACxE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,uCAAuC,CAC9C,MAAe,EACf,MAAgB,EAChB,QAA6B;IAE7B,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,MAA4B;IACnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7C,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,MAAgB;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,sBAAsB,CAC7B,SAAsC,EACtC,MAAgB;IAEhB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB,EAAE,MAAgB;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAID,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,OAAO,CAAC,QAAgB,EAAU,EAAE;QAClC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,IAAI,GAAG,iBAAiB,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,SAA0B,EAC1B,QAA6B;IAE7B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,WAAW,CAClB,KAAY,EACZ,eAAgC,EAChC,QAA6B;IAE7B,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,aAAa,GAAU;QAC3B,GAAG,KAAK;QACR,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAC;IACF,IAAI,CAAC,QAAQ;QAAE,OAAO,aAAa,CAAC;IAEpC,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,IAAI,eAAe,CAAC;IACzD,MAAM,YAAY,GAAG,aAAa;SAC/B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;SACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;IACzD,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9E,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1F,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC;QAClC,aAAa,CAAC,eAAe,GAAG;YAC9B,GAAG,aAAa,CAAC,eAAe;YAChC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SACnF,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CACjB,IAAY,EACZ,YAAsD,EACtD,QAA6B;IAE7B,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5E,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACxC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ;QAAE,GAAG,GAAG,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,uBAAuB,GAC3B,2LAA2L,CAAC;AAE9L,SAAS,wBAAwB,CAAC,IAAY,EAAE,QAAsB;IACpE,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAW,CAAC;QAC/C,IAAI,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvF,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAc;IACtD,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACnD,OAAO,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA,OAAO,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,8BAA8B,CAAC;IAC1D,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,eAAe,GAAG,WAAW,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,IAAe,EAAE,QAA6B;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,OAAO;QACL,GAAG,IAAI;QACP,YAAY;QACZ,YAAY,EAAE,YAAY;QAC1B,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAkB;IAC1D,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,KAAK,CAAC,MAAM;QACvB,cAAc,EAAE,KAAK,CAAC,MAAM;QAC5B,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reportScope.js","sourceRoot":"","sources":["../../src/core/reportScope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AnalysisReport, DirectoryNode, FileEntry, Issue } from '../types.js';
2
+ import { type PathRedactor } from './reportPathRedaction.js';
3
+ export declare function applyReportControlsToDependencies(dependencies: AnalysisReport['dependencies'], scopes: string[], redactor: PathRedactor | null): AnalysisReport['dependencies'];
4
+ export declare function applyReportControlsToIssuesWithRedactor(issues: Issue[], scopes: string[], redactor: PathRedactor | null): Issue[];
5
+ export declare function normalizeScopes(scopes: string[] | undefined): string[];
6
+ export declare function filterFilesByScope(files: FileEntry[], scopes: string[]): FileEntry[];
7
+ export declare function redactFileEntry(file: FileEntry, redactor: PathRedactor | null): FileEntry;
8
+ export declare function countDirectories(files: FileEntry[]): number;
9
+ export declare function buildDirectoryTree(name: string, files: FileEntry[]): DirectoryNode;
@@ -0,0 +1,102 @@
1
+ import { normalizeReportPath, redactText } from './reportPathRedaction.js';
2
+ export function applyReportControlsToDependencies(dependencies, scopes, redactor) {
3
+ if (!dependencies?.byWorkspace)
4
+ return dependencies;
5
+ return {
6
+ ...dependencies,
7
+ byWorkspace: dependencies.byWorkspace
8
+ .filter((workspace) => dependencyWorkspaceInScope(workspace.relativePath, scopes))
9
+ .map((workspace) => ({
10
+ ...workspace,
11
+ relativePath: redactor && workspace.relativePath ? redactor(workspace.relativePath) : workspace.relativePath,
12
+ })),
13
+ };
14
+ }
15
+ export function applyReportControlsToIssuesWithRedactor(issues, scopes, redactor) {
16
+ const out = [];
17
+ for (const issue of issues) {
18
+ const scopedLocations = filterLocationsByScope(issue.locations, scopes);
19
+ if (scopes.length > 0 && scopedLocations.length === 0)
20
+ continue;
21
+ out.push(redactIssue(issue, scopedLocations, redactor));
22
+ }
23
+ return out;
24
+ }
25
+ export function normalizeScopes(scopes) {
26
+ return [...new Set((scopes ?? []).map(normalizeReportPath).filter(Boolean))];
27
+ }
28
+ export function filterFilesByScope(files, scopes) {
29
+ if (scopes.length === 0)
30
+ return [...files];
31
+ return files.filter((file) => isInScope(file.relativePath, scopes));
32
+ }
33
+ export function redactFileEntry(file, redactor) {
34
+ if (!redactor)
35
+ return { ...file };
36
+ const relativePath = redactor(file.relativePath);
37
+ return {
38
+ ...file,
39
+ relativePath,
40
+ absolutePath: relativePath,
41
+ directory: '.',
42
+ };
43
+ }
44
+ export function countDirectories(files) {
45
+ const dirs = new Set(files.map((file) => file.directory || '.'));
46
+ return dirs.size;
47
+ }
48
+ export function buildDirectoryTree(name, files) {
49
+ return {
50
+ name,
51
+ path: '.',
52
+ fileCount: files.length,
53
+ totalFileCount: files.length,
54
+ children: [],
55
+ };
56
+ }
57
+ function dependencyWorkspaceInScope(relativePath, scopes) {
58
+ if (scopes.length === 0)
59
+ return true;
60
+ return isInScope(relativePath, scopes);
61
+ }
62
+ function isInScope(filePath, scopes) {
63
+ if (scopes.length === 0)
64
+ return true;
65
+ const normalized = normalizeReportPath(filePath);
66
+ if (!normalized)
67
+ return false;
68
+ return scopes.some((scope) => normalized === scope || normalized.startsWith(`${scope}/`));
69
+ }
70
+ function filterLocationsByScope(locations, scopes) {
71
+ if (!locations || locations.length === 0)
72
+ return [];
73
+ return locations.filter((loc) => loc.file && isInScope(loc.file, scopes));
74
+ }
75
+ function redactLocations(locations, redactor) {
76
+ if (!redactor)
77
+ return locations.map((loc) => ({ ...loc }));
78
+ return locations.map((loc) => ({ ...loc, file: redactor(loc.file) }));
79
+ }
80
+ function redactIssue(issue, scopedLocations, redactor) {
81
+ const redactedLocations = redactLocations(scopedLocations, redactor);
82
+ const redactedIssue = {
83
+ ...issue,
84
+ ...(scopedLocations.length > 0 || issue.locations ? { locations: redactedLocations } : {}),
85
+ };
86
+ if (!redactor)
87
+ return redactedIssue;
88
+ const textLocations = issue.locations ?? scopedLocations;
89
+ const replacements = textLocations
90
+ .filter((loc) => loc.file)
91
+ .map((loc) => [loc.file, redactor(loc.file)]);
92
+ redactedIssue.title = redactText(redactedIssue.title, replacements, redactor);
93
+ redactedIssue.description = redactText(redactedIssue.description, replacements, redactor);
94
+ if (redactedIssue.suggestedAction) {
95
+ redactedIssue.suggestedAction = {
96
+ ...redactedIssue.suggestedAction,
97
+ summary: redactText(redactedIssue.suggestedAction.summary, replacements, redactor),
98
+ };
99
+ }
100
+ return redactedIssue;
101
+ }
102
+ //# sourceMappingURL=reportScopeFiltering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportScopeFiltering.js","sourceRoot":"","sources":["../../src/core/reportScopeFiltering.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { FileEntry } from '../types.js';
2
2
  import type { CodeGraph } from './codeGraph.js';
3
+ import { expandQuery, tokenize } from './searchIndexText.js';
4
+ export { expandQuery, tokenize };
3
5
  export interface IndexedFile {
4
6
  relativePath: string;
5
7
  content: string[];
@@ -47,17 +49,3 @@ export declare function search(index: SearchIndex, query: string, options?: Sear
47
49
  * the caller only wants paths (e.g., an agent filtering before fetching).
48
50
  */
49
51
  export declare function attachExcerpts(rootPath: string, hits: SearchHit[], queryTokens: string[]): Promise<SearchHit[]>;
50
- /**
51
- * Tokenize a string for indexing/querying:
52
- * - lowercase
53
- * - split on non-identifier chars
54
- * - split camelCase and snake_case
55
- * - drop tokens shorter than 2 chars, stopwords, TS keywords
56
- * - apply basic stem (drop trailing s / ing / ed)
57
- */
58
- export declare function tokenize(input: string): string[];
59
- /**
60
- * Expand a user query into a set of candidate tokens. Same rules as tokenize
61
- * plus: if the raw query has no hits, try progressively looser tokenization.
62
- */
63
- export declare function expandQuery(query: string): string[];