driftdetect 0.1.6 → 0.2.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 (38) hide show
  1. package/dist/bin/drift.js +8 -1
  2. package/dist/bin/drift.js.map +1 -1
  3. package/dist/commands/dashboard.d.ts +16 -0
  4. package/dist/commands/dashboard.d.ts.map +1 -0
  5. package/dist/commands/dashboard.js +99 -0
  6. package/dist/commands/dashboard.js.map +1 -0
  7. package/dist/commands/export.d.ts +2 -0
  8. package/dist/commands/export.d.ts.map +1 -1
  9. package/dist/commands/export.js +114 -5
  10. package/dist/commands/export.js.map +1 -1
  11. package/dist/commands/files.d.ts +2 -0
  12. package/dist/commands/files.d.ts.map +1 -1
  13. package/dist/commands/files.js +103 -20
  14. package/dist/commands/files.js.map +1 -1
  15. package/dist/commands/index.d.ts +2 -0
  16. package/dist/commands/index.d.ts.map +1 -1
  17. package/dist/commands/index.js +2 -0
  18. package/dist/commands/index.js.map +1 -1
  19. package/dist/commands/scan.d.ts +2 -0
  20. package/dist/commands/scan.d.ts.map +1 -1
  21. package/dist/commands/scan.js +98 -14
  22. package/dist/commands/scan.js.map +1 -1
  23. package/dist/commands/watch.d.ts +13 -0
  24. package/dist/commands/watch.d.ts.map +1 -0
  25. package/dist/commands/watch.js +693 -0
  26. package/dist/commands/watch.js.map +1 -0
  27. package/dist/commands/where.d.ts +2 -0
  28. package/dist/commands/where.d.ts.map +1 -1
  29. package/dist/commands/where.js +79 -5
  30. package/dist/commands/where.js.map +1 -1
  31. package/dist/services/contract-scanner.d.ts +35 -0
  32. package/dist/services/contract-scanner.d.ts.map +1 -0
  33. package/dist/services/contract-scanner.js +183 -0
  34. package/dist/services/contract-scanner.js.map +1 -0
  35. package/dist/services/scanner-service.d.ts.map +1 -1
  36. package/dist/services/scanner-service.js +34 -1
  37. package/dist/services/scanner-service.js.map +1 -1
  38. package/package.json +2 -1
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, } from '../commands/index.js';
12
+ import { initCommand, scanCommand, checkCommand, statusCommand, approveCommand, ignoreCommand, reportCommand, exportCommand, whereCommand, filesCommand, watchCommand, dashboardCommand, } from '../commands/index.js';
13
13
  /**
14
14
  * Create and configure the main CLI program
15
15
  */
@@ -32,6 +32,8 @@ function createProgram() {
32
32
  program.addCommand(exportCommand);
33
33
  program.addCommand(whereCommand);
34
34
  program.addCommand(filesCommand);
35
+ program.addCommand(watchCommand);
36
+ program.addCommand(dashboardCommand);
35
37
  // Add help examples
36
38
  program.addHelpText('after', `
37
39
  Examples:
@@ -51,6 +53,11 @@ Examples:
51
53
  $ drift export --format ai-context Export for AI consumption
52
54
  $ drift where <pattern> Find pattern locations
53
55
  $ drift files <path> Show patterns in a file
56
+ $ drift watch Watch for changes in real-time
57
+ $ drift watch --verbose Watch with detailed output
58
+ $ drift watch --context .drift-context.md Auto-update AI context file
59
+ $ drift dashboard Launch the web dashboard
60
+ $ drift dashboard --port 8080 Launch on a custom port
54
61
 
55
62
  Documentation:
56
63
  https://github.com/drift/drift
@@ -1 +1 @@
1
- {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,qEAAqE,CAAC;SAClF,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAElD,wBAAwB;IACxB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEjC,oBAAoB;IACpB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;CAqBH,CACE,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,cAAc;AACd,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/bin/drift.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,qEAAqE,CAAC;SAClF,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAElD,wBAAwB;IACxB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACjC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAErC,oBAAoB;IACpB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BH,CACE,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,cAAc;AACd,IAAI,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Dashboard Command - drift dashboard
3
+ *
4
+ * Launch the local web dashboard for visualizing patterns and violations.
5
+ */
6
+ import { Command } from 'commander';
7
+ export interface DashboardOptions {
8
+ /** Port to run the server on */
9
+ port?: number;
10
+ /** Don't open browser automatically */
11
+ noBrowser?: boolean;
12
+ /** Enable verbose output */
13
+ verbose?: boolean;
14
+ }
15
+ export declare const dashboardCommand: Command;
16
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0FD,eAAO,MAAM,gBAAgB,SAUzB,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Dashboard Command - drift dashboard
3
+ *
4
+ * Launch the local web dashboard for visualizing patterns and violations.
5
+ */
6
+ import { Command } from 'commander';
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import chalk from 'chalk';
10
+ import { createSpinner } from '../ui/spinner.js';
11
+ /** Directory name for drift configuration */
12
+ const DRIFT_DIR = '.drift';
13
+ /**
14
+ * Check if drift is initialized
15
+ */
16
+ async function isDriftInitialized(rootDir) {
17
+ try {
18
+ await fs.access(path.join(rootDir, DRIFT_DIR));
19
+ return true;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ }
25
+ /**
26
+ * Dashboard command implementation
27
+ */
28
+ async function dashboardAction(options) {
29
+ const rootDir = process.cwd();
30
+ const port = options.port ?? 3000;
31
+ const openBrowser = !options.noBrowser;
32
+ console.log();
33
+ console.log(chalk.bold('📊 Drift Dashboard'));
34
+ console.log();
35
+ // Check if initialized
36
+ if (!(await isDriftInitialized(rootDir))) {
37
+ console.log(chalk.red('✖ Drift is not initialized. Run `drift init` first.'));
38
+ process.exit(1);
39
+ }
40
+ const spinner = createSpinner('Starting dashboard server...');
41
+ spinner.start();
42
+ try {
43
+ // Dynamic import to avoid loading dashboard package unless needed
44
+ const { DashboardServer } = await import('driftdetect-dashboard');
45
+ const server = new DashboardServer({
46
+ driftDir: path.join(rootDir, DRIFT_DIR),
47
+ port,
48
+ openBrowser,
49
+ });
50
+ await server.start();
51
+ spinner.succeed(`Dashboard running at ${chalk.cyan(`http://localhost:${port}`)}`);
52
+ console.log();
53
+ console.log(chalk.gray('Press Ctrl+C to stop the server'));
54
+ console.log();
55
+ // Handle graceful shutdown
56
+ const shutdown = async () => {
57
+ console.log();
58
+ console.log(chalk.gray('Shutting down...'));
59
+ await server.stop();
60
+ process.exit(0);
61
+ };
62
+ process.on('SIGINT', shutdown);
63
+ process.on('SIGTERM', shutdown);
64
+ // Keep the process running
65
+ await new Promise(() => { });
66
+ }
67
+ catch (error) {
68
+ spinner.fail('Failed to start dashboard');
69
+ if (error instanceof Error) {
70
+ if (error.message.includes('EADDRINUSE')) {
71
+ console.log(chalk.red(`Port ${port} is already in use.`));
72
+ console.log(chalk.gray(`Try: drift dashboard --port ${port + 1}`));
73
+ }
74
+ else if (error.message.includes('Cannot find module')) {
75
+ console.log(chalk.red('Dashboard package not found.'));
76
+ console.log(chalk.gray('Make sure driftdetect-dashboard is installed.'));
77
+ }
78
+ else {
79
+ console.log(chalk.red(error.message));
80
+ if (options.verbose) {
81
+ console.log(chalk.gray(error.stack || ''));
82
+ }
83
+ }
84
+ }
85
+ process.exit(1);
86
+ }
87
+ }
88
+ export const dashboardCommand = new Command('dashboard')
89
+ .description('Launch the local web dashboard')
90
+ .option('-p, --port <port>', 'Port to run the server on', '3847')
91
+ .option('--no-browser', "Don't open browser automatically")
92
+ .option('--verbose', 'Enable verbose output')
93
+ .action(async (options) => {
94
+ await dashboardAction({
95
+ ...options,
96
+ port: parseInt(options.port, 10),
97
+ });
98
+ });
99
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Export Command - Export manifest in various formats
3
3
  *
4
4
  * Exports the pattern manifest for AI consumption or reporting.
5
+ * Now reads from BOTH ManifestStore and PatternStore to ensure
6
+ * all 15 categories are available.
5
7
  *
6
8
  * Usage:
7
9
  * drift export # Export as JSON to stdout
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,eAAO,MAAM,aAAa,SA8FtB,CAAC"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,aAAa,SA8LtB,CAAC"}
@@ -2,6 +2,8 @@
2
2
  * Export Command - Export manifest in various formats
3
3
  *
4
4
  * Exports the pattern manifest for AI consumption or reporting.
5
+ * Now reads from BOTH ManifestStore and PatternStore to ensure
6
+ * all 15 categories are available.
5
7
  *
6
8
  * Usage:
7
9
  * drift export # Export as JSON to stdout
@@ -13,7 +15,7 @@ import { Command } from 'commander';
13
15
  import * as fs from 'node:fs/promises';
14
16
  import * as path from 'node:path';
15
17
  import chalk from 'chalk';
16
- import { ManifestStore, exportManifest, estimateTokens, } from 'driftdetect-core';
18
+ import { ManifestStore, PatternStore, exportManifest, estimateTokens, } from 'driftdetect-core';
17
19
  const VALID_FORMATS = ['json', 'ai-context', 'summary', 'markdown'];
18
20
  const VALID_CATEGORIES = [
19
21
  'api', 'auth', 'security', 'errors', 'logging', 'testing',
@@ -38,13 +40,100 @@ export const exportCommand = new Command('export')
38
40
  console.error(`Valid formats: ${VALID_FORMATS.join(', ')}`);
39
41
  process.exit(1);
40
42
  }
41
- // Load manifest
43
+ // Load manifest from ManifestStore
42
44
  const manifestStore = new ManifestStore(cwd);
43
- const manifest = await manifestStore.load();
44
- if (!manifest) {
45
- console.error(chalk.red('No manifest found. Run `drift scan` first.'));
45
+ let manifest = await manifestStore.load();
46
+ // Also load from PatternStore to get ALL 15 categories
47
+ // The PatternStore has the complete data, ManifestStore may be incomplete
48
+ const patternStore = new PatternStore({ rootDir: cwd });
49
+ await patternStore.initialize();
50
+ const allPatterns = patternStore.getAll();
51
+ // If no manifest exists but we have patterns, create a synthetic manifest
52
+ if (!manifest && allPatterns.length === 0) {
53
+ console.error(chalk.red('No patterns found. Run `drift scan` first.'));
46
54
  process.exit(1);
47
55
  }
56
+ // Create or enhance manifest with PatternStore data
57
+ if (!manifest) {
58
+ manifest = {
59
+ version: '2.0.0',
60
+ generated: new Date().toISOString(),
61
+ codebaseHash: '',
62
+ projectRoot: cwd,
63
+ summary: {
64
+ totalPatterns: 0,
65
+ patternsByStatus: { discovered: 0, approved: 0, ignored: 0 },
66
+ patternsByCategory: {},
67
+ totalFiles: 0,
68
+ totalLocations: 0,
69
+ totalOutliers: 0,
70
+ },
71
+ patterns: {},
72
+ files: {},
73
+ };
74
+ }
75
+ // Merge PatternStore patterns into manifest
76
+ // This ensures all 15 categories are available for export
77
+ for (const pattern of allPatterns) {
78
+ const manifestKey = `${pattern.category}/${pattern.subcategory}/${pattern.id}`;
79
+ // Skip if already in manifest with same or more data
80
+ if (manifest.patterns[manifestKey]) {
81
+ continue;
82
+ }
83
+ // Convert Pattern to ManifestPattern format
84
+ const manifestPattern = {
85
+ id: manifestKey,
86
+ name: pattern.name,
87
+ category: pattern.category,
88
+ subcategory: pattern.subcategory,
89
+ status: pattern.status,
90
+ confidence: pattern.confidence.score,
91
+ locations: pattern.locations.map(loc => ({
92
+ file: loc.file,
93
+ hash: '',
94
+ range: { start: loc.line, end: loc.endLine || loc.line },
95
+ type: 'block',
96
+ name: `line-${loc.line}`,
97
+ confidence: 0.9,
98
+ snippet: '',
99
+ language: getLanguageFromFile(loc.file),
100
+ })),
101
+ outliers: pattern.outliers.map(outlier => ({
102
+ file: outlier.file,
103
+ hash: '',
104
+ range: { start: outlier.line, end: outlier.endLine || outlier.line },
105
+ type: 'block',
106
+ name: outlier.reason,
107
+ confidence: 0.5,
108
+ snippet: '',
109
+ language: getLanguageFromFile(outlier.file),
110
+ })),
111
+ description: pattern.description,
112
+ firstSeen: pattern.metadata.firstSeen,
113
+ lastSeen: pattern.metadata.lastSeen,
114
+ };
115
+ manifest.patterns[manifestKey] = manifestPattern;
116
+ }
117
+ // Recalculate summary
118
+ const patterns = Object.values(manifest.patterns);
119
+ const patternsByStatus = { discovered: 0, approved: 0, ignored: 0 };
120
+ const patternsByCategory = {};
121
+ let totalLocations = 0;
122
+ let totalOutliers = 0;
123
+ for (const pattern of patterns) {
124
+ patternsByStatus[pattern.status]++;
125
+ patternsByCategory[pattern.category] = (patternsByCategory[pattern.category] || 0) + 1;
126
+ totalLocations += pattern.locations.length;
127
+ totalOutliers += pattern.outliers.length;
128
+ }
129
+ manifest.summary = {
130
+ totalPatterns: patterns.length,
131
+ patternsByStatus,
132
+ patternsByCategory,
133
+ totalFiles: Object.keys(manifest.files).length || new Set(patterns.flatMap(p => p.locations.map(l => l.file))).size,
134
+ totalLocations,
135
+ totalOutliers,
136
+ };
48
137
  // Parse categories
49
138
  let categories;
50
139
  if (options.categories) {
@@ -106,4 +195,24 @@ export const exportCommand = new Command('export')
106
195
  console.log(output);
107
196
  }
108
197
  });
198
+ /**
199
+ * Get language from file extension
200
+ */
201
+ function getLanguageFromFile(file) {
202
+ const ext = path.extname(file).slice(1).toLowerCase();
203
+ const langMap = {
204
+ ts: 'typescript',
205
+ tsx: 'typescript',
206
+ js: 'javascript',
207
+ jsx: 'javascript',
208
+ py: 'python',
209
+ css: 'css',
210
+ scss: 'css',
211
+ json: 'json',
212
+ yaml: 'yaml',
213
+ yml: 'yaml',
214
+ md: 'markdown',
215
+ };
216
+ return langMap[ext] || 'unknown';
217
+ }
109
218
  //# sourceMappingURL=export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Files Command - Show patterns in a file
3
3
  *
4
4
  * Show what patterns are found in a specific file.
5
+ * Now reads from BOTH ManifestStore and PatternStore to ensure
6
+ * all 15 categories are available.
5
7
  *
6
8
  * Usage:
7
9
  * drift files src/auth/middleware.py
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAqFrB,CAAC"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,YAAY,SAwLrB,CAAC"}
@@ -2,6 +2,8 @@
2
2
  * Files Command - Show patterns in a file
3
3
  *
4
4
  * Show what patterns are found in a specific file.
5
+ * Now reads from BOTH ManifestStore and PatternStore to ensure
6
+ * all 15 categories are available.
5
7
  *
6
8
  * Usage:
7
9
  * drift files src/auth/middleware.py
@@ -10,7 +12,7 @@
10
12
  */
11
13
  import { Command } from 'commander';
12
14
  import chalk from 'chalk';
13
- import { ManifestStore, } from 'driftdetect-core';
15
+ import { ManifestStore, PatternStore, } from 'driftdetect-core';
14
16
  export const filesCommand = new Command('files')
15
17
  .description('Show patterns in a file')
16
18
  .argument('<path>', 'File path (supports glob patterns)')
@@ -21,8 +23,12 @@ export const filesCommand = new Command('files')
21
23
  // Load manifest
22
24
  const manifestStore = new ManifestStore(cwd);
23
25
  const manifest = await manifestStore.load();
24
- if (!manifest) {
25
- console.error(chalk.red('No manifest found. Run `drift scan` first.'));
26
+ // Also load from PatternStore to get ALL 15 categories
27
+ const patternStore = new PatternStore({ rootDir: cwd });
28
+ await patternStore.initialize();
29
+ const allPatterns = patternStore.getAll();
30
+ if (!manifest && allPatterns.length === 0) {
31
+ console.error(chalk.red('No patterns found. Run `drift scan` first.'));
26
32
  process.exit(1);
27
33
  }
28
34
  // Build query
@@ -32,39 +38,104 @@ export const filesCommand = new Command('files')
32
38
  if (options.category) {
33
39
  query.category = options.category;
34
40
  }
35
- // Query file
36
- const result = manifestStore.queryFile(query);
37
- if (!result) {
41
+ // Query file from manifest
42
+ let result = manifest ? manifestStore.queryFile(query) : null;
43
+ // Also search in PatternStore for patterns in this file
44
+ // This ensures all 15 categories are searched
45
+ const patternStoreResults = [];
46
+ // Match file path (supports glob-like patterns)
47
+ const normalizedPath = filePath.replace(/\\/g, '/');
48
+ const isGlob = normalizedPath.includes('*');
49
+ for (const pattern of allPatterns) {
50
+ // Filter by category if specified
51
+ if (options.category && pattern.category !== options.category) {
52
+ continue;
53
+ }
54
+ // Find locations in this file
55
+ const matchingLocations = pattern.locations.filter(loc => {
56
+ const locPath = loc.file.replace(/\\/g, '/');
57
+ if (isGlob) {
58
+ return matchGlob(locPath, normalizedPath);
59
+ }
60
+ return locPath === normalizedPath || locPath.endsWith(normalizedPath) || locPath.includes(normalizedPath);
61
+ });
62
+ if (matchingLocations.length > 0) {
63
+ patternStoreResults.push({
64
+ id: pattern.id,
65
+ name: pattern.name,
66
+ category: pattern.category,
67
+ locations: matchingLocations.map(loc => ({
68
+ range: { start: loc.line, end: loc.endLine || loc.line },
69
+ type: 'block',
70
+ name: `line-${loc.line}`,
71
+ })),
72
+ });
73
+ }
74
+ }
75
+ // Merge results
76
+ const mergedPatterns = new Map();
77
+ // Add manifest results
78
+ if (result) {
79
+ for (const p of result.patterns) {
80
+ mergedPatterns.set(p.id, p);
81
+ }
82
+ }
83
+ // Add PatternStore results (may add new categories)
84
+ for (const p of patternStoreResults) {
85
+ if (!mergedPatterns.has(p.id)) {
86
+ mergedPatterns.set(p.id, p);
87
+ }
88
+ }
89
+ const finalPatterns = Array.from(mergedPatterns.values());
90
+ if (finalPatterns.length === 0) {
38
91
  console.log(chalk.yellow(`No patterns found in "${filePath}"`));
39
- // Show available files
40
- const allFiles = Object.keys(manifest.files).slice(0, 10);
41
- if (allFiles.length > 0) {
42
- console.log(chalk.dim('\nAvailable files:'));
43
- for (const f of allFiles) {
92
+ // Show available files from PatternStore
93
+ const allFiles = new Set();
94
+ for (const pattern of allPatterns) {
95
+ for (const loc of pattern.locations) {
96
+ allFiles.add(loc.file);
97
+ }
98
+ }
99
+ const fileList = Array.from(allFiles).slice(0, 10);
100
+ if (fileList.length > 0) {
101
+ console.log(chalk.dim('\nFiles with patterns:'));
102
+ for (const f of fileList) {
44
103
  console.log(chalk.dim(` ${f}`));
45
104
  }
46
- if (Object.keys(manifest.files).length > 10) {
47
- console.log(chalk.dim(` ... and ${Object.keys(manifest.files).length - 10} more`));
105
+ if (allFiles.size > 10) {
106
+ console.log(chalk.dim(` ... and ${allFiles.size - 10} more`));
48
107
  }
49
108
  }
50
109
  process.exit(0);
51
110
  }
111
+ // Build final result
112
+ const finalResult = {
113
+ file: result?.file || filePath,
114
+ patterns: finalPatterns,
115
+ metadata: result?.metadata || {
116
+ hash: '',
117
+ patterns: finalPatterns.map(p => p.id),
118
+ lastScanned: new Date().toISOString(),
119
+ },
120
+ };
52
121
  // Output
53
122
  if (options.json) {
54
- console.log(JSON.stringify(result, null, 2));
123
+ console.log(JSON.stringify(finalResult, null, 2));
55
124
  }
56
125
  else {
57
- console.log(chalk.bold(`\n📄 Patterns in ${result.file}:\n`));
58
- console.log(chalk.dim(` Hash: ${result.metadata.hash}`));
59
- console.log(chalk.dim(` Last scanned: ${result.metadata.lastScanned}`));
126
+ console.log(chalk.bold(`\n📄 Patterns in ${finalResult.file}:\n`));
127
+ if (finalResult.metadata.hash) {
128
+ console.log(chalk.dim(` Hash: ${finalResult.metadata.hash}`));
129
+ }
130
+ console.log(chalk.dim(` Last scanned: ${finalResult.metadata.lastScanned}`));
60
131
  console.log('');
61
- if (result.patterns.length === 0) {
132
+ if (finalResult.patterns.length === 0) {
62
133
  console.log(chalk.yellow(' No patterns found'));
63
134
  }
64
135
  else {
65
136
  // Group by category
66
137
  const byCategory = new Map();
67
- for (const p of result.patterns) {
138
+ for (const p of finalResult.patterns) {
68
139
  if (!byCategory.has(p.category)) {
69
140
  byCategory.set(p.category, []);
70
141
  }
@@ -82,7 +153,19 @@ export const filesCommand = new Command('files')
82
153
  console.log('');
83
154
  }
84
155
  }
85
- console.log(chalk.dim(`Total: ${result.patterns.length} patterns`));
156
+ console.log(chalk.dim(`Total: ${finalResult.patterns.length} patterns`));
86
157
  }
87
158
  });
159
+ /**
160
+ * Simple glob matching
161
+ */
162
+ function matchGlob(filePath, pattern) {
163
+ const regexPattern = pattern
164
+ .replace(/\*\*/g, '{{GLOBSTAR}}')
165
+ .replace(/\*/g, '[^/]*')
166
+ .replace(/{{GLOBSTAR}}/g, '.*')
167
+ .replace(/\?/g, '.');
168
+ const regex = new RegExp(`^${regexPattern}$`);
169
+ return regex.test(filePath);
170
+ }
88
171
  //# sourceMappingURL=files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/commands/files.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,6 @@ export { reportCommand } from './report.js';
13
13
  export { exportCommand } from './export.js';
14
14
  export { whereCommand } from './where.js';
15
15
  export { filesCommand } from './files.js';
16
+ export { watchCommandDef as watchCommand } from './watch.js';
17
+ export { dashboardCommand } from './dashboard.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -13,4 +13,6 @@ export { reportCommand } from './report.js';
13
13
  export { exportCommand } from './export.js';
14
14
  export { whereCommand } from './where.js';
15
15
  export { filesCommand } from './files.js';
16
+ export { watchCommandDef as watchCommand } from './watch.js';
17
+ export { dashboardCommand } from './dashboard.js';
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -22,6 +22,8 @@ export interface ScanCommandOptions {
22
22
  manifest?: boolean;
23
23
  /** Incremental scan (only changed files) */
24
24
  incremental?: boolean;
25
+ /** Skip BE↔FE contract scanning (contracts enabled by default) */
26
+ contracts?: boolean;
25
27
  }
26
28
  export declare const scanCommand: Command;
27
29
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4dD,eAAO,MAAM,WAAW,SASH,CAAC"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAkkBD,eAAO,MAAM,WAAW,SAUH,CAAC"}