driftdetect 0.7.0 → 0.8.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.
- package/dist/bin/drift.d.ts +11 -0
- package/dist/bin/drift.js +26 -1
- package/dist/bin/drift.js.map +1 -1
- package/dist/commands/approve.d.ts +2 -0
- package/dist/commands/approve.d.ts.map +1 -1
- package/dist/commands/approve.js +92 -1
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/boundaries.d.ts +20 -0
- package/dist/commands/callgraph.d.ts.map +1 -1
- package/dist/commands/callgraph.js +42 -52
- package/dist/commands/callgraph.js.map +1 -1
- package/dist/commands/constraints.d.ts.map +1 -1
- package/dist/commands/constraints.js +8 -7
- package/dist/commands/constraints.js.map +1 -1
- package/dist/commands/context.d.ts +19 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +301 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/cpp.d.ts +22 -0
- package/dist/commands/cpp.d.ts.map +1 -0
- package/dist/commands/cpp.js +485 -0
- package/dist/commands/cpp.js.map +1 -0
- package/dist/commands/dashboard.d.ts +16 -0
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +3 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/dna/export.d.ts +6 -0
- package/dist/commands/dna/gene.d.ts +6 -0
- package/dist/commands/dna/index.d.ts +8 -0
- package/dist/commands/dna/mutations.d.ts +6 -0
- package/dist/commands/dna/playbook.d.ts +6 -0
- package/dist/commands/dna/scan.d.ts +6 -0
- package/dist/commands/dna/status.d.ts +6 -0
- package/dist/commands/gate.d.ts +33 -0
- package/dist/commands/gate.d.ts.map +1 -0
- package/dist/commands/gate.js +199 -0
- package/dist/commands/gate.js.map +1 -0
- package/dist/commands/ignore.d.ts.map +1 -1
- package/dist/commands/ignore.js +36 -0
- package/dist/commands/ignore.js.map +1 -1
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +12 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +19 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/license.d.ts +12 -0
- package/dist/commands/license.d.ts.map +1 -0
- package/dist/commands/license.js +133 -0
- package/dist/commands/license.js.map +1 -0
- package/dist/commands/parser.d.ts +20 -0
- package/dist/commands/rust.d.ts +21 -0
- package/dist/commands/rust.d.ts.map +1 -0
- package/dist/commands/rust.js +526 -0
- package/dist/commands/rust.js.map +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +69 -1
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/simulate.d.ts.map +1 -1
- package/dist/commands/simulate.js +22 -1
- package/dist/commands/simulate.js.map +1 -1
- package/dist/commands/telemetry.d.ts +9 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +289 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/trends.d.ts +12 -0
- package/dist/commands/watch.d.ts +13 -0
- package/dist/git/hooks.d.ts +108 -0
- package/dist/git/index.d.ts +6 -0
- package/dist/git/staged-files.d.ts +41 -0
- package/dist/reporters/github-reporter.d.ts +13 -0
- package/dist/reporters/gitlab-reporter.d.ts +16 -0
- package/dist/reporters/index.d.ts +9 -0
- package/dist/reporters/json-reporter.d.ts +13 -0
- package/dist/reporters/text-reporter.d.ts +13 -0
- package/dist/reporters/types.d.ts +42 -0
- package/dist/services/boundary-scanner.d.ts +21 -0
- package/dist/services/contract-scanner.d.ts +35 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/progress.d.ts +115 -0
- package/dist/ui/prompts.d.ts +91 -0
- package/dist/ui/spinner.d.ts +109 -0
- package/dist/ui/table.d.ts +118 -0
- package/package.json +17 -17
- package/LICENSE +0 -21
package/dist/bin/drift.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Command } from 'commander';
|
|
11
11
|
import { VERSION } from '../index.js';
|
|
12
|
-
import { initCommand, scanCommand, checkCommand, statusCommand, approveCommand, ignoreCommand, reportCommand, exportCommand, whereCommand, filesCommand, watchCommand, dashboardCommand, trendsCommand, parserCommand, dnaCommand, boundariesCommand, callgraphCommand, projectsCommand, skillsCommand, migrateStorageCommand, wrappersCommand, createTestTopologyCommand, createCouplingCommand, createErrorHandlingCommand, createSimulateCommand, createConstraintsCommand, createWpfCommand, createGoCommand, envCommand, constantsCommand, } from '../commands/index.js';
|
|
12
|
+
import { initCommand, scanCommand, checkCommand, statusCommand, approveCommand, ignoreCommand, reportCommand, exportCommand, whereCommand, filesCommand, watchCommand, dashboardCommand, trendsCommand, parserCommand, dnaCommand, boundariesCommand, callgraphCommand, projectsCommand, skillsCommand, migrateStorageCommand, wrappersCommand, createTestTopologyCommand, createCouplingCommand, createErrorHandlingCommand, createSimulateCommand, createConstraintsCommand, createWpfCommand, createGoCommand, createRustCommand, createCppCommand, envCommand, constantsCommand, licenseCommand, createGateCommand, contextCommand, telemetryCommand, } from '../commands/index.js';
|
|
13
13
|
/**
|
|
14
14
|
* Create and configure the main CLI program
|
|
15
15
|
*/
|
|
@@ -54,10 +54,22 @@ function createProgram() {
|
|
|
54
54
|
program.addCommand(createWpfCommand());
|
|
55
55
|
// Go Language Support
|
|
56
56
|
program.addCommand(createGoCommand());
|
|
57
|
+
// Rust Language Support
|
|
58
|
+
program.addCommand(createRustCommand());
|
|
59
|
+
// C++ Language Support
|
|
60
|
+
program.addCommand(createCppCommand());
|
|
57
61
|
// Environment Variable Detection
|
|
58
62
|
program.addCommand(envCommand);
|
|
59
63
|
// Constants & Enum Analysis
|
|
60
64
|
program.addCommand(constantsCommand);
|
|
65
|
+
// License Management
|
|
66
|
+
program.addCommand(licenseCommand);
|
|
67
|
+
// Quality Gates (Enterprise)
|
|
68
|
+
program.addCommand(createGateCommand());
|
|
69
|
+
// Package Context (Monorepo AI context minimization)
|
|
70
|
+
program.addCommand(contextCommand);
|
|
71
|
+
// Telemetry Management (Privacy-first, opt-in)
|
|
72
|
+
program.addCommand(telemetryCommand);
|
|
61
73
|
// Add help examples
|
|
62
74
|
program.addHelpText('after', `
|
|
63
75
|
Examples:
|
|
@@ -136,6 +148,19 @@ Examples:
|
|
|
136
148
|
$ drift constants inconsistent Show constants with inconsistent values
|
|
137
149
|
$ drift constants dead Show potentially unused constants
|
|
138
150
|
$ drift constants export out.json Export constants to file
|
|
151
|
+
$ drift gate Run quality gates with default policy
|
|
152
|
+
$ drift gate --policy strict Run with strict policy
|
|
153
|
+
$ drift gate --format sarif Output in SARIF format
|
|
154
|
+
$ drift gate --ci Run in CI mode with JSON output
|
|
155
|
+
$ drift gate --gates pattern-compliance,security-boundary Run specific gates
|
|
156
|
+
$ drift context --list List all packages in monorepo
|
|
157
|
+
$ drift context @drift/core Generate context for a package
|
|
158
|
+
$ drift context packages/core --format ai AI-optimized context
|
|
159
|
+
$ drift context @drift/core --snippets Include code snippets
|
|
160
|
+
$ drift telemetry Show telemetry status
|
|
161
|
+
$ drift telemetry enable Enable telemetry (opt-in)
|
|
162
|
+
$ drift telemetry disable Disable telemetry
|
|
163
|
+
$ drift telemetry setup Interactive telemetry configuration
|
|
139
164
|
|
|
140
165
|
Documentation:
|
|
141
166
|
https://github.com/drift/drift
|
package/dist/bin/drift.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuWD,eAAO,MAAM,cAAc,SAOH,CAAC"}
|
package/dist/commands/approve.js
CHANGED
|
@@ -11,12 +11,37 @@ import { Command } from 'commander';
|
|
|
11
11
|
import * as fs from 'node:fs/promises';
|
|
12
12
|
import * as path from 'node:path';
|
|
13
13
|
import chalk from 'chalk';
|
|
14
|
+
import { loadProjectConfig, createTelemetryClient } from 'driftdetect-core';
|
|
14
15
|
import { createCLIPatternService } from '../services/pattern-service-factory.js';
|
|
15
16
|
import { createSpinner, status } from '../ui/spinner.js';
|
|
16
17
|
import { confirmPrompt, promptBatchPatternApproval } from '../ui/prompts.js';
|
|
17
18
|
import { createPatternsTable } from '../ui/table.js';
|
|
18
19
|
/** Directory name for drift configuration */
|
|
19
20
|
const DRIFT_DIR = '.drift';
|
|
21
|
+
/**
|
|
22
|
+
* Record telemetry for approve action (if enabled)
|
|
23
|
+
*/
|
|
24
|
+
async function recordApproveTelemetry(rootDir, pattern, isBulkAction) {
|
|
25
|
+
try {
|
|
26
|
+
const projectConfig = await loadProjectConfig(rootDir);
|
|
27
|
+
if (!projectConfig.telemetry?.enabled)
|
|
28
|
+
return;
|
|
29
|
+
const driftDir = path.join(rootDir, DRIFT_DIR);
|
|
30
|
+
const telemetryClient = createTelemetryClient(driftDir, projectConfig.telemetry);
|
|
31
|
+
await telemetryClient.initialize();
|
|
32
|
+
await telemetryClient.recordUserAction({
|
|
33
|
+
action: 'approve',
|
|
34
|
+
category: pattern.category,
|
|
35
|
+
confidenceAtAction: pattern.confidence,
|
|
36
|
+
discoveredAt: pattern.metadata?.firstSeen ?? new Date().toISOString(),
|
|
37
|
+
isBulkAction,
|
|
38
|
+
});
|
|
39
|
+
await telemetryClient.shutdown();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Telemetry should never block user operations
|
|
43
|
+
}
|
|
44
|
+
}
|
|
20
45
|
/**
|
|
21
46
|
* Check if drift is initialized
|
|
22
47
|
*/
|
|
@@ -29,14 +54,47 @@ async function isDriftInitialized(rootDir) {
|
|
|
29
54
|
return false;
|
|
30
55
|
}
|
|
31
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the project root directory.
|
|
59
|
+
* Priority: --root option > detect .drift folder > cwd
|
|
60
|
+
*/
|
|
61
|
+
async function resolveProjectRoot(rootOption) {
|
|
62
|
+
// If --root is specified, use it
|
|
63
|
+
if (rootOption) {
|
|
64
|
+
const resolved = path.resolve(rootOption);
|
|
65
|
+
try {
|
|
66
|
+
await fs.access(path.join(resolved, DRIFT_DIR));
|
|
67
|
+
return resolved;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// .drift doesn't exist at specified root, but use it anyway
|
|
71
|
+
return resolved;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Try to find .drift folder starting from cwd and going up
|
|
75
|
+
let current = process.cwd();
|
|
76
|
+
const root = path.parse(current).root;
|
|
77
|
+
while (current !== root) {
|
|
78
|
+
try {
|
|
79
|
+
await fs.access(path.join(current, DRIFT_DIR));
|
|
80
|
+
return current;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
current = path.dirname(current);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Fall back to cwd
|
|
87
|
+
return process.cwd();
|
|
88
|
+
}
|
|
32
89
|
/**
|
|
33
90
|
* Approve command implementation
|
|
34
91
|
*/
|
|
35
92
|
async function approveAction(patternId, options) {
|
|
36
|
-
const rootDir =
|
|
93
|
+
const rootDir = await resolveProjectRoot(options.root);
|
|
37
94
|
const verbose = options.verbose ?? false;
|
|
38
95
|
console.log();
|
|
39
96
|
console.log(chalk.bold('🔍 Drift - Approve Pattern'));
|
|
97
|
+
console.log(chalk.dim(`Project: ${rootDir}`));
|
|
40
98
|
console.log();
|
|
41
99
|
// Check if initialized
|
|
42
100
|
if (!(await isDriftInitialized(rootDir))) {
|
|
@@ -88,6 +146,11 @@ async function approveAction(patternId, options) {
|
|
|
88
146
|
try {
|
|
89
147
|
await service.approvePattern(pattern.id);
|
|
90
148
|
approvedCount++;
|
|
149
|
+
// Record telemetry for each approved pattern
|
|
150
|
+
await recordApproveTelemetry(rootDir, {
|
|
151
|
+
category: pattern.category,
|
|
152
|
+
confidence: pattern.confidence,
|
|
153
|
+
}, true);
|
|
91
154
|
if (verbose) {
|
|
92
155
|
console.log(chalk.gray(` Approved: ${pattern.name}`));
|
|
93
156
|
}
|
|
@@ -126,6 +189,14 @@ async function approveAction(patternId, options) {
|
|
|
126
189
|
const approveSpinner = createSpinner('Approving patterns...');
|
|
127
190
|
approveSpinner.start();
|
|
128
191
|
const approved = await service.approveMany(selectedIds);
|
|
192
|
+
// Record telemetry for batch approval
|
|
193
|
+
for (const p of approved) {
|
|
194
|
+
await recordApproveTelemetry(rootDir, {
|
|
195
|
+
category: p.category,
|
|
196
|
+
confidence: p.confidence,
|
|
197
|
+
metadata: { firstSeen: p.metadata?.firstSeen },
|
|
198
|
+
}, true);
|
|
199
|
+
}
|
|
129
200
|
approveSpinner.succeed(`Approved ${approved.length} patterns`);
|
|
130
201
|
console.log();
|
|
131
202
|
return;
|
|
@@ -135,6 +206,14 @@ async function approveAction(patternId, options) {
|
|
|
135
206
|
approveSpinner.start();
|
|
136
207
|
const ids = discovered.map((p) => p.id);
|
|
137
208
|
const approved = await service.approveMany(ids);
|
|
209
|
+
// Record telemetry for batch approval
|
|
210
|
+
for (const p of approved) {
|
|
211
|
+
await recordApproveTelemetry(rootDir, {
|
|
212
|
+
category: p.category,
|
|
213
|
+
confidence: p.confidence,
|
|
214
|
+
metadata: { firstSeen: p.metadata?.firstSeen },
|
|
215
|
+
}, true);
|
|
216
|
+
}
|
|
138
217
|
approveSpinner.succeed(`Approved ${approved.length} patterns`);
|
|
139
218
|
console.log();
|
|
140
219
|
return;
|
|
@@ -164,6 +243,11 @@ async function approveAction(patternId, options) {
|
|
|
164
243
|
}
|
|
165
244
|
try {
|
|
166
245
|
await service.approvePattern(match.id);
|
|
246
|
+
// Record telemetry
|
|
247
|
+
await recordApproveTelemetry(rootDir, {
|
|
248
|
+
category: match.category,
|
|
249
|
+
confidence: match.confidence,
|
|
250
|
+
}, false);
|
|
167
251
|
status.success(`Approved pattern: ${match.name}`);
|
|
168
252
|
}
|
|
169
253
|
catch (error) {
|
|
@@ -220,6 +304,12 @@ async function approveAction(patternId, options) {
|
|
|
220
304
|
// Approve the pattern
|
|
221
305
|
try {
|
|
222
306
|
await service.approvePattern(patternId);
|
|
307
|
+
// Record telemetry
|
|
308
|
+
await recordApproveTelemetry(rootDir, {
|
|
309
|
+
category: pattern.category,
|
|
310
|
+
confidence: pattern.confidence,
|
|
311
|
+
metadata: { firstSeen: pattern.metadata?.firstSeen },
|
|
312
|
+
}, false);
|
|
223
313
|
status.success(`Approved pattern: ${pattern.name}`);
|
|
224
314
|
}
|
|
225
315
|
catch (error) {
|
|
@@ -230,6 +320,7 @@ async function approveAction(patternId, options) {
|
|
|
230
320
|
export const approveCommand = new Command('approve')
|
|
231
321
|
.description('Approve a pattern by ID')
|
|
232
322
|
.argument('<pattern-id>', 'Pattern ID to approve (or "all" for batch approval)')
|
|
323
|
+
.option('-r, --root <path>', 'Project root directory (auto-detects .drift folder if not specified)')
|
|
233
324
|
.option('-c, --category <category>', 'Approve all patterns in category')
|
|
234
325
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
235
326
|
.option('--verbose', 'Enable verbose output')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAwB,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAsB,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAmB,MAAM,gBAAgB,CAAC;AAatE,6CAA6C;AAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,OAAoF,EACpF,YAAqB;IAErB,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO;YAAE,OAAO;QAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,SAA4B,CAAC,CAAC;QACpG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;QAEnC,MAAM,eAAe,CAAC,gBAAgB,CAAC;YACrC,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,kBAAkB,EAAE,OAAO,CAAC,UAAU;YACtC,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrE,YAAY;SACb,CAAC,CAAC;QAEH,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,UAAmB;IACnD,iCAAiC;IACjC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;YAC5D,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEtC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;YAC/C,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,SAAiB,EACjB,OAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAEzC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,uBAAuB;IACvB,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjD,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnC,iCAAiC;IACjC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA2B,CAAC;QACrD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;QAEjF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,IAAI,GAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,aAAa;YAC1B,QAAQ,EAAE,CAAC,CAAC,YAAY;SACzB,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,mBAAmB;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,eAAe,UAAU,CAAC,MAAM,gBAAgB,QAAQ,GAAG,EAC3D,KAAK,CACN,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,cAAc,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAC9D,cAAc,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACzC,aAAa,EAAE,CAAC;gBAChB,6CAA6C;gBAC7C,MAAM,sBAAsB,CAAC,OAAO,EAAE;oBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,EAAE,IAAI,CAAC,CAAC;gBACT,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,cAAc,CAAC,OAAO,CAAC,YAAY,aAAa,WAAW,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,gCAAgC;IAChC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,OAAO,GAAoB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtD,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC,CAAC;YAEJ,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAE9D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,MAAM,cAAc,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;YAC9D,cAAc,CAAC,KAAK,EAAE,CAAC;YAEvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAExD,sCAAsC;YACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,sBAAsB,CAAC,OAAO,EAAE;oBACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE;iBAC/C,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,cAAc,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAC;QAClE,cAAc,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEhD,sCAAsC;QACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,sBAAsB,CAAC,OAAO,EAAE;gBACpC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE;aAC/C,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QAED,cAAc,CAAC,OAAO,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,kCAAkC;QAClC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAEpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,uBAAuB;YACvB,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,oBAAoB,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBAClC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvC,mBAAmB;gBACnB,MAAM,sBAAsB,CAAC,OAAO,EAAE;oBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC7B,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,8BAA8B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,SAAS,IAAI,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,IAAI,GAAiB,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,aAAa;YAC1B,QAAQ,EAAE,CAAC,CAAC,YAAY;SACzB,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvC,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4BAA4B;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,oBAAoB,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,mBAAmB;QACnB,MAAM,sBAAsB,CAAC,OAAO,EAAE;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE;SACrD,EAAE,KAAK,CAAC,CAAC;QACV,MAAM,CAAC,OAAO,CAAC,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,uCAAuC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,cAAc,EAAE,qDAAqD,CAAC;KAC/E,MAAM,CAAC,mBAAmB,EAAE,sEAAsE,CAAC;KACnG,MAAM,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;KACvE,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boundaries Command - drift boundaries
|
|
3
|
+
*
|
|
4
|
+
* Show data access boundaries and check for violations.
|
|
5
|
+
* Tracks which code accesses which database tables/fields.
|
|
6
|
+
*
|
|
7
|
+
* @requirements Data Boundaries Feature
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export interface BoundariesOptions {
|
|
11
|
+
/** Output format */
|
|
12
|
+
format?: 'text' | 'json';
|
|
13
|
+
/** Enable verbose output */
|
|
14
|
+
verbose?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create the boundaries command with subcommands
|
|
18
|
+
*/
|
|
19
|
+
export declare const boundariesCommand: Command;
|
|
20
|
+
//# sourceMappingURL=boundaries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callgraph.d.ts","sourceRoot":"","sources":["../../src/commands/callgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"callgraph.d.ts","sourceRoot":"","sources":["../../src/commands/callgraph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAy5CD;;GAEG;AACH,eAAO,MAAM,gBAAgB,SAGN,CAAC"}
|
|
@@ -10,7 +10,7 @@ import { Command } from 'commander';
|
|
|
10
10
|
import * as fs from 'node:fs/promises';
|
|
11
11
|
import * as path from 'node:path';
|
|
12
12
|
import chalk from 'chalk';
|
|
13
|
-
import { createCallGraphAnalyzer, createBoundaryScanner, createSecurityPrioritizer, createImpactAnalyzer, createDeadCodeDetector, createCoverageAnalyzer, createUnifiedScanner, detectProjectStack, } from 'driftdetect-core';
|
|
13
|
+
import { createCallGraphAnalyzer, createStreamingCallGraphBuilder, createBoundaryScanner, createSecurityPrioritizer, createImpactAnalyzer, createDeadCodeDetector, createCoverageAnalyzer, createUnifiedScanner, detectProjectStack, } from 'driftdetect-core';
|
|
14
14
|
import { createSpinner } from '../ui/spinner.js';
|
|
15
15
|
/** Directory name for drift configuration */
|
|
16
16
|
const DRIFT_DIR = '.drift';
|
|
@@ -159,38 +159,40 @@ async function buildAction(options) {
|
|
|
159
159
|
regexAdditions++;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
// Step 3: Build call graph with
|
|
163
|
-
spinner?.text('📊 Building call graph...');
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
entryPoints: graph.entryPoints,
|
|
179
|
-
dataAccessors: graph.dataAccessors,
|
|
180
|
-
functions: Object.fromEntries(graph.functions),
|
|
181
|
-
}, null, 2));
|
|
162
|
+
// Step 3: Build call graph with streaming/sharded storage (memory optimized)
|
|
163
|
+
spinner?.text('📊 Building call graph (streaming mode)...');
|
|
164
|
+
const streamingBuilder = createStreamingCallGraphBuilder({
|
|
165
|
+
rootDir,
|
|
166
|
+
onProgress: (current, total, _file) => {
|
|
167
|
+
if (isTextFormat && spinner) {
|
|
168
|
+
spinner.text(`📊 Building call graph... ${current}/${total} files`);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
onError: (file, error) => {
|
|
172
|
+
if (options.verbose) {
|
|
173
|
+
console.error(chalk.yellow(` Warning: ${file}: ${error.message}`));
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
const buildResult = await streamingBuilder.build(filePatterns, dataAccessPoints);
|
|
182
178
|
spinner?.stop();
|
|
183
179
|
// JSON output
|
|
184
180
|
if (format === 'json') {
|
|
185
181
|
console.log(JSON.stringify({
|
|
186
182
|
success: true,
|
|
187
183
|
detectedStack,
|
|
188
|
-
stats:
|
|
189
|
-
|
|
190
|
-
|
|
184
|
+
stats: {
|
|
185
|
+
totalFunctions: buildResult.totalFunctions,
|
|
186
|
+
totalCallSites: buildResult.totalCalls,
|
|
187
|
+
entryPoints: buildResult.entryPoints,
|
|
188
|
+
dataAccessors: buildResult.dataAccessors,
|
|
189
|
+
},
|
|
190
|
+
filesProcessed: buildResult.filesProcessed,
|
|
191
191
|
semanticStats: semanticStats,
|
|
192
192
|
boundaryStats: boundaryResult.stats,
|
|
193
193
|
regexAdditions,
|
|
194
|
+
errors: buildResult.errors.length,
|
|
195
|
+
durationMs: buildResult.durationMs,
|
|
194
196
|
}, null, 2));
|
|
195
197
|
return;
|
|
196
198
|
}
|
|
@@ -201,10 +203,12 @@ async function buildAction(options) {
|
|
|
201
203
|
// Main statistics box
|
|
202
204
|
console.log(chalk.bold('📊 Graph Statistics'));
|
|
203
205
|
console.log(chalk.gray('─'.repeat(50)));
|
|
204
|
-
console.log(`
|
|
205
|
-
console.log(`
|
|
206
|
-
console.log(`
|
|
207
|
-
console.log(`
|
|
206
|
+
console.log(` Files: ${chalk.cyan.bold(buildResult.filesProcessed.toLocaleString())}`);
|
|
207
|
+
console.log(` Functions: ${chalk.cyan.bold(buildResult.totalFunctions.toLocaleString())}`);
|
|
208
|
+
console.log(` Call Sites: ${chalk.cyan(buildResult.totalCalls.toLocaleString())}`);
|
|
209
|
+
console.log(` Entry Points: ${chalk.magenta.bold(buildResult.entryPoints.toLocaleString())} ${chalk.gray('(API routes, exports)')}`);
|
|
210
|
+
console.log(` Data Accessors: ${chalk.yellow.bold(buildResult.dataAccessors.toLocaleString())} ${chalk.gray('(functions with DB access)')}`);
|
|
211
|
+
console.log(` Duration: ${chalk.gray((buildResult.durationMs / 1000).toFixed(2) + 's')}`);
|
|
208
212
|
console.log();
|
|
209
213
|
// Data access detection summary
|
|
210
214
|
const totalAccessPoints = semanticStats.accessPointsFound + regexAdditions;
|
|
@@ -228,31 +232,17 @@ async function buildAction(options) {
|
|
|
228
232
|
}
|
|
229
233
|
console.log();
|
|
230
234
|
}
|
|
231
|
-
// Language breakdown
|
|
232
|
-
const languages = Object.entries(graph.stats.byLanguage)
|
|
233
|
-
.filter(([, count]) => count > 0)
|
|
234
|
-
.sort((a, b) => b[1] - a[1]);
|
|
235
|
-
if (languages.length > 0) {
|
|
236
|
-
console.log(chalk.bold('📝 By Language'));
|
|
237
|
-
console.log(chalk.gray('─'.repeat(50)));
|
|
238
|
-
const langIcons = {
|
|
239
|
-
'typescript': '🟦',
|
|
240
|
-
'javascript': '🟨',
|
|
241
|
-
'python': '🐍',
|
|
242
|
-
'csharp': '🟣',
|
|
243
|
-
'java': '☕',
|
|
244
|
-
'php': '🐘',
|
|
245
|
-
};
|
|
246
|
-
for (const [lang, count] of languages) {
|
|
247
|
-
const icon = langIcons[lang] ?? '📄';
|
|
248
|
-
const bar = '█'.repeat(Math.min(20, Math.ceil(count / Math.max(...languages.map(([, c]) => c)) * 20)));
|
|
249
|
-
console.log(` ${icon} ${lang.padEnd(12)} ${chalk.cyan(bar)} ${count.toLocaleString()} functions`);
|
|
250
|
-
}
|
|
251
|
-
console.log();
|
|
252
|
-
}
|
|
253
235
|
// Errors summary
|
|
254
|
-
if (
|
|
255
|
-
console.log(chalk.yellow(`⚠️ ${
|
|
236
|
+
if (buildResult.errors.length > 0) {
|
|
237
|
+
console.log(chalk.yellow(`⚠️ ${buildResult.errors.length} file(s) had errors during extraction`));
|
|
238
|
+
if (options.verbose) {
|
|
239
|
+
for (const errorFile of buildResult.errors.slice(0, 10)) {
|
|
240
|
+
console.log(chalk.gray(` • ${errorFile}`));
|
|
241
|
+
}
|
|
242
|
+
if (buildResult.errors.length > 10) {
|
|
243
|
+
console.log(chalk.gray(` ... and ${buildResult.errors.length - 10} more`));
|
|
244
|
+
}
|
|
245
|
+
}
|
|
256
246
|
console.log();
|
|
257
247
|
}
|
|
258
248
|
// Next steps
|