driftdetect 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,497 @@
1
+ /**
2
+ * Environment Command - drift env
3
+ *
4
+ * Show environment variable access patterns across the codebase.
5
+ * Tracks which code accesses which environment variables/config.
6
+ *
7
+ * @requirements Environment Variable Detection Feature
8
+ */
9
+ import { Command } from 'commander';
10
+ import * as fs from 'node:fs/promises';
11
+ import * as path from 'node:path';
12
+ import chalk from 'chalk';
13
+ import { createEnvScanner, createEnvStore, } from 'driftdetect-core';
14
+ /** Directory name for drift configuration */
15
+ const DRIFT_DIR = '.drift';
16
+ /** Directory name for environment data */
17
+ const ENV_DIR = 'environment';
18
+ /**
19
+ * Check if environment data exists
20
+ */
21
+ async function envDataExists(rootDir) {
22
+ try {
23
+ await fs.access(path.join(rootDir, DRIFT_DIR, ENV_DIR));
24
+ return true;
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ }
30
+ /**
31
+ * Show helpful message when env data not initialized
32
+ */
33
+ function showNotInitializedMessage() {
34
+ console.log();
35
+ console.log(chalk.yellow('⚠️ No environment variable data discovered yet.'));
36
+ console.log();
37
+ console.log(chalk.gray('Environment tracking detects which code accesses which env vars.'));
38
+ console.log(chalk.gray('Run a scan to discover environment access patterns:'));
39
+ console.log();
40
+ console.log(chalk.cyan(' drift env scan'));
41
+ console.log();
42
+ }
43
+ /**
44
+ * Scan subcommand - scan for environment variable access
45
+ */
46
+ async function scanAction(options) {
47
+ const rootDir = process.cwd();
48
+ const format = options.format ?? 'text';
49
+ const verbose = options.verbose ?? false;
50
+ if (format !== 'json') {
51
+ console.log();
52
+ console.log(chalk.bold('🔍 Scanning for environment variable access...'));
53
+ console.log();
54
+ }
55
+ const scanner = createEnvScanner({ rootDir, verbose });
56
+ const result = await scanner.scanDirectory();
57
+ // Save results
58
+ const store = createEnvStore({ rootDir });
59
+ await store.initialize();
60
+ await store.updateAccessMap(result.accessMap);
61
+ // JSON output
62
+ if (format === 'json') {
63
+ console.log(JSON.stringify({
64
+ stats: result.stats,
65
+ variables: Object.keys(result.accessMap.variables).length,
66
+ secrets: result.accessMap.stats.secretVariables,
67
+ credentials: result.accessMap.stats.credentialVariables,
68
+ }, null, 2));
69
+ return;
70
+ }
71
+ // Text output
72
+ console.log(chalk.green('✓ Scan complete'));
73
+ console.log();
74
+ console.log(`Files scanned: ${chalk.cyan(result.stats.filesScanned)}`);
75
+ console.log(`Variables found: ${chalk.cyan(result.stats.variablesFound)}`);
76
+ console.log(`Access points: ${chalk.cyan(result.stats.accessPointsFound)}`);
77
+ console.log(`Secrets detected: ${chalk.yellow(result.stats.secretsFound)}`);
78
+ console.log(`Duration: ${chalk.gray(`${result.stats.scanDurationMs}ms`)}`);
79
+ console.log();
80
+ if (result.accessMap.stats.secretVariables > 0) {
81
+ console.log(chalk.yellow(`⚠️ ${result.accessMap.stats.secretVariables} secret variables detected`));
82
+ console.log(chalk.gray("Run 'drift env secrets' to see details"));
83
+ console.log();
84
+ }
85
+ }
86
+ /**
87
+ * Overview subcommand - default view
88
+ */
89
+ async function overviewAction(options) {
90
+ const rootDir = process.cwd();
91
+ const format = options.format ?? 'text';
92
+ if (!(await envDataExists(rootDir))) {
93
+ if (format === 'json') {
94
+ console.log(JSON.stringify({ error: 'No environment data found' }));
95
+ }
96
+ else {
97
+ showNotInitializedMessage();
98
+ }
99
+ return;
100
+ }
101
+ const store = createEnvStore({ rootDir });
102
+ await store.initialize();
103
+ const accessMap = store.getAccessMap();
104
+ // JSON output
105
+ if (format === 'json') {
106
+ console.log(JSON.stringify({
107
+ variables: accessMap.stats.totalVariables,
108
+ accessPoints: accessMap.stats.totalAccessPoints,
109
+ secrets: accessMap.stats.secretVariables,
110
+ credentials: accessMap.stats.credentialVariables,
111
+ config: accessMap.stats.configVariables,
112
+ byLanguage: accessMap.stats.byLanguage,
113
+ byMethod: accessMap.stats.byMethod,
114
+ }, null, 2));
115
+ return;
116
+ }
117
+ // Text output
118
+ console.log();
119
+ console.log(chalk.bold('🔐 Environment Variable Access'));
120
+ console.log();
121
+ // Summary stats
122
+ console.log(`Variables Discovered: ${chalk.cyan(accessMap.stats.totalVariables)}`);
123
+ console.log(`Access Points: ${chalk.cyan(accessMap.stats.totalAccessPoints)}`);
124
+ console.log();
125
+ // Sensitivity breakdown
126
+ console.log(chalk.bold('By Sensitivity:'));
127
+ console.log(` ${chalk.red('●')} Secrets: ${chalk.red(accessMap.stats.secretVariables)}`);
128
+ console.log(` ${chalk.yellow('●')} Credentials: ${chalk.yellow(accessMap.stats.credentialVariables)}`);
129
+ console.log(` ${chalk.blue('●')} Config: ${chalk.blue(accessMap.stats.configVariables)}`);
130
+ console.log();
131
+ // Top accessed variables
132
+ const varEntries = Object.values(accessMap.variables)
133
+ .sort((a, b) => b.accessedBy.length - a.accessedBy.length)
134
+ .slice(0, 5);
135
+ if (varEntries.length > 0) {
136
+ console.log(chalk.bold('Most Accessed Variables:'));
137
+ for (const varInfo of varEntries) {
138
+ const name = varInfo.name.padEnd(24);
139
+ const sensitivityColor = getSensitivityColor(varInfo.sensitivity);
140
+ console.log(` ${sensitivityColor(name)} ${chalk.gray(`${varInfo.accessedBy.length} access points (${varInfo.files.length} files)`)}`);
141
+ }
142
+ console.log();
143
+ }
144
+ // Quick actions
145
+ console.log(chalk.gray("Run 'drift env secrets' to see secret variables"));
146
+ console.log(chalk.gray("Run 'drift env var <name>' for variable details"));
147
+ console.log();
148
+ }
149
+ /**
150
+ * List subcommand - list all discovered variables
151
+ */
152
+ async function listAction(options) {
153
+ const rootDir = process.cwd();
154
+ const format = options.format ?? 'text';
155
+ const sensitivity = options.sensitivity;
156
+ if (!(await envDataExists(rootDir))) {
157
+ if (format === 'json') {
158
+ console.log(JSON.stringify({ error: 'No environment data found', variables: [] }));
159
+ }
160
+ else {
161
+ showNotInitializedMessage();
162
+ }
163
+ return;
164
+ }
165
+ const store = createEnvStore({ rootDir });
166
+ await store.initialize();
167
+ const accessMap = store.getAccessMap();
168
+ let variables = Object.values(accessMap.variables);
169
+ // Filter by sensitivity if specified
170
+ if (sensitivity) {
171
+ variables = variables.filter(v => v.sensitivity === sensitivity);
172
+ }
173
+ // Sort by access count
174
+ variables.sort((a, b) => b.accessedBy.length - a.accessedBy.length);
175
+ // JSON output
176
+ if (format === 'json') {
177
+ const output = variables.map(v => ({
178
+ name: v.name,
179
+ sensitivity: v.sensitivity,
180
+ accessCount: v.accessedBy.length,
181
+ fileCount: v.files.length,
182
+ hasDefault: v.hasDefault,
183
+ isRequired: v.isRequired,
184
+ }));
185
+ console.log(JSON.stringify({ variables: output }, null, 2));
186
+ return;
187
+ }
188
+ // Text output
189
+ console.log();
190
+ console.log(chalk.bold('🔐 Environment Variables'));
191
+ console.log(chalk.gray('─'.repeat(60)));
192
+ console.log();
193
+ if (variables.length === 0) {
194
+ console.log(chalk.gray(' No variables found.'));
195
+ console.log();
196
+ return;
197
+ }
198
+ for (const varInfo of variables) {
199
+ const sensitivityColor = getSensitivityColor(varInfo.sensitivity);
200
+ const name = sensitivityColor(varInfo.name);
201
+ const required = varInfo.isRequired && !varInfo.hasDefault ? chalk.red(' (required)') : '';
202
+ console.log(` ${name}${required}`);
203
+ console.log(chalk.gray(` ${varInfo.accessedBy.length} access points in ${varInfo.files.length} files`));
204
+ console.log();
205
+ }
206
+ }
207
+ /**
208
+ * Var subcommand - show details for a specific variable
209
+ */
210
+ async function varAction(varName, options) {
211
+ const rootDir = process.cwd();
212
+ const format = options.format ?? 'text';
213
+ if (!(await envDataExists(rootDir))) {
214
+ if (format === 'json') {
215
+ console.log(JSON.stringify({ error: 'No environment data found' }));
216
+ }
217
+ else {
218
+ showNotInitializedMessage();
219
+ }
220
+ return;
221
+ }
222
+ const store = createEnvStore({ rootDir });
223
+ await store.initialize();
224
+ const varInfo = store.getVariable(varName);
225
+ if (!varInfo) {
226
+ if (format === 'json') {
227
+ console.log(JSON.stringify({ error: `Variable '${varName}' not found` }));
228
+ }
229
+ else {
230
+ console.log();
231
+ console.log(chalk.red(`Variable '${varName}' not found.`));
232
+ console.log(chalk.gray("Run 'drift env list' to see all discovered variables."));
233
+ console.log();
234
+ }
235
+ return;
236
+ }
237
+ // JSON output
238
+ if (format === 'json') {
239
+ console.log(JSON.stringify({
240
+ name: varInfo.name,
241
+ sensitivity: varInfo.sensitivity,
242
+ hasDefault: varInfo.hasDefault,
243
+ isRequired: varInfo.isRequired,
244
+ files: varInfo.files,
245
+ accessPoints: varInfo.accessedBy,
246
+ }, null, 2));
247
+ return;
248
+ }
249
+ // Text output
250
+ console.log();
251
+ console.log(chalk.bold(`🔐 Variable: ${varName}`));
252
+ console.log(chalk.gray('─'.repeat(60)));
253
+ console.log();
254
+ const sensitivityColor = getSensitivityColor(varInfo.sensitivity);
255
+ console.log(`Sensitivity: ${sensitivityColor(varInfo.sensitivity)}`);
256
+ console.log(`Has Default: ${varInfo.hasDefault ? chalk.green('yes') : chalk.yellow('no')}`);
257
+ console.log(`Required: ${varInfo.isRequired ? chalk.red('yes') : chalk.green('no')}`);
258
+ console.log(`Access Points: ${chalk.cyan(varInfo.accessedBy.length)}`);
259
+ console.log();
260
+ // Access points grouped by file
261
+ const byFile = new Map();
262
+ for (const ap of varInfo.accessedBy) {
263
+ if (!byFile.has(ap.file)) {
264
+ byFile.set(ap.file, []);
265
+ }
266
+ byFile.get(ap.file).push(ap);
267
+ }
268
+ console.log(chalk.bold('Access Points:'));
269
+ for (const [file, accessPoints] of byFile) {
270
+ console.log(` ${chalk.cyan(file)}`);
271
+ for (const ap of accessPoints) {
272
+ const methodColor = chalk.gray;
273
+ console.log(` Line ${ap.line}: ${methodColor(ap.method)} ${ap.hasDefault ? chalk.green('(has default)') : ''}`);
274
+ }
275
+ }
276
+ console.log();
277
+ }
278
+ /**
279
+ * Secrets subcommand - show all secret variables
280
+ */
281
+ async function secretsAction(options) {
282
+ const rootDir = process.cwd();
283
+ const format = options.format ?? 'text';
284
+ if (!(await envDataExists(rootDir))) {
285
+ if (format === 'json') {
286
+ console.log(JSON.stringify({ error: 'No environment data found', secrets: [] }));
287
+ }
288
+ else {
289
+ showNotInitializedMessage();
290
+ }
291
+ return;
292
+ }
293
+ const store = createEnvStore({ rootDir });
294
+ await store.initialize();
295
+ const secrets = store.getSecrets();
296
+ const credentials = store.getCredentials();
297
+ // JSON output
298
+ if (format === 'json') {
299
+ console.log(JSON.stringify({
300
+ secrets: secrets.map(s => ({
301
+ name: s.name,
302
+ accessCount: s.accessedBy.length,
303
+ files: s.files,
304
+ hasDefault: s.hasDefault,
305
+ })),
306
+ credentials: credentials.map(c => ({
307
+ name: c.name,
308
+ accessCount: c.accessedBy.length,
309
+ files: c.files,
310
+ hasDefault: c.hasDefault,
311
+ })),
312
+ }, null, 2));
313
+ return;
314
+ }
315
+ // Text output
316
+ console.log();
317
+ console.log(chalk.bold('🔒 Sensitive Environment Variables'));
318
+ console.log(chalk.gray('─'.repeat(60)));
319
+ console.log();
320
+ if (secrets.length === 0 && credentials.length === 0) {
321
+ console.log(chalk.green(' ✓ No sensitive variables detected.'));
322
+ console.log();
323
+ return;
324
+ }
325
+ if (secrets.length > 0) {
326
+ console.log(chalk.red.bold(`Secrets (${secrets.length}):`));
327
+ for (const secret of secrets) {
328
+ const name = secret.name.padEnd(32);
329
+ const required = secret.isRequired && !secret.hasDefault ? chalk.red(' ⚠ required') : '';
330
+ console.log(` ${chalk.red('●')} ${chalk.white(name)}${required}`);
331
+ console.log(chalk.gray(` ${secret.accessedBy.length} access points in ${secret.files.length} files`));
332
+ }
333
+ console.log();
334
+ }
335
+ if (credentials.length > 0) {
336
+ console.log(chalk.yellow.bold(`Credentials (${credentials.length}):`));
337
+ for (const cred of credentials) {
338
+ const name = cred.name.padEnd(32);
339
+ const required = cred.isRequired && !cred.hasDefault ? chalk.red(' ⚠ required') : '';
340
+ console.log(` ${chalk.yellow('●')} ${chalk.white(name)}${required}`);
341
+ console.log(chalk.gray(` ${cred.accessedBy.length} access points in ${cred.files.length} files`));
342
+ }
343
+ console.log();
344
+ }
345
+ }
346
+ /**
347
+ * Required subcommand - show required variables without defaults
348
+ */
349
+ async function requiredAction(options) {
350
+ const rootDir = process.cwd();
351
+ const format = options.format ?? 'text';
352
+ if (!(await envDataExists(rootDir))) {
353
+ if (format === 'json') {
354
+ console.log(JSON.stringify({ error: 'No environment data found', required: [] }));
355
+ }
356
+ else {
357
+ showNotInitializedMessage();
358
+ }
359
+ return;
360
+ }
361
+ const store = createEnvStore({ rootDir });
362
+ await store.initialize();
363
+ const required = store.getRequiredVariables();
364
+ // JSON output
365
+ if (format === 'json') {
366
+ console.log(JSON.stringify({
367
+ required: required.map(r => ({
368
+ name: r.name,
369
+ sensitivity: r.sensitivity,
370
+ accessCount: r.accessedBy.length,
371
+ files: r.files,
372
+ })),
373
+ }, null, 2));
374
+ return;
375
+ }
376
+ // Text output
377
+ console.log();
378
+ console.log(chalk.bold('⚠️ Required Environment Variables'));
379
+ console.log(chalk.gray('─'.repeat(60)));
380
+ console.log();
381
+ if (required.length === 0) {
382
+ console.log(chalk.green(' ✓ All variables have defaults or are optional.'));
383
+ console.log();
384
+ return;
385
+ }
386
+ console.log(chalk.gray('These variables must be set for the application to work:'));
387
+ console.log();
388
+ for (const varInfo of required) {
389
+ const sensitivityColor = getSensitivityColor(varInfo.sensitivity);
390
+ const name = varInfo.name.padEnd(32);
391
+ console.log(` ${sensitivityColor('●')} ${chalk.white(name)} ${chalk.gray(`(${varInfo.sensitivity})`)}`);
392
+ }
393
+ console.log();
394
+ }
395
+ /**
396
+ * File subcommand - show what env vars a file accesses
397
+ */
398
+ async function fileAction(pattern, options) {
399
+ const rootDir = process.cwd();
400
+ const format = options.format ?? 'text';
401
+ if (!(await envDataExists(rootDir))) {
402
+ if (format === 'json') {
403
+ console.log(JSON.stringify({ error: 'No environment data found', files: [] }));
404
+ }
405
+ else {
406
+ showNotInitializedMessage();
407
+ }
408
+ return;
409
+ }
410
+ const store = createEnvStore({ rootDir });
411
+ await store.initialize();
412
+ const fileAccess = store.getFileAccess(pattern);
413
+ // JSON output
414
+ if (format === 'json') {
415
+ console.log(JSON.stringify({ files: fileAccess }, null, 2));
416
+ return;
417
+ }
418
+ // Text output
419
+ console.log();
420
+ console.log(chalk.bold(`📁 Environment Access: ${pattern}`));
421
+ console.log(chalk.gray('─'.repeat(60)));
422
+ console.log();
423
+ if (fileAccess.length === 0) {
424
+ console.log(chalk.gray(` No environment access found for pattern '${pattern}'.`));
425
+ console.log();
426
+ return;
427
+ }
428
+ for (const fileInfo of fileAccess) {
429
+ console.log(chalk.cyan(fileInfo.file));
430
+ console.log(` Variables: ${chalk.white(fileInfo.variables.join(', '))}`);
431
+ if (fileInfo.sensitiveVars.length > 0) {
432
+ console.log(` ${chalk.yellow('⚠ Sensitive:')} ${chalk.yellow(fileInfo.sensitiveVars.join(', '))}`);
433
+ }
434
+ for (const ap of fileInfo.accessPoints) {
435
+ const sensitivityColor = getSensitivityColor(ap.sensitivity);
436
+ console.log(` Line ${ap.line}: ${sensitivityColor(ap.varName)} ${chalk.gray(`via ${ap.method}`)}`);
437
+ }
438
+ console.log();
439
+ }
440
+ }
441
+ /**
442
+ * Get color function for sensitivity level
443
+ */
444
+ function getSensitivityColor(sensitivity) {
445
+ switch (sensitivity) {
446
+ case 'secret':
447
+ return chalk.red;
448
+ case 'credential':
449
+ return chalk.yellow;
450
+ case 'config':
451
+ return chalk.blue;
452
+ default:
453
+ return chalk.gray;
454
+ }
455
+ }
456
+ /**
457
+ * Create the env command with subcommands
458
+ */
459
+ export const envCommand = new Command('env')
460
+ .description('Show environment variable access patterns')
461
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
462
+ .option('--verbose', 'Enable verbose output')
463
+ .action(overviewAction);
464
+ // Subcommands
465
+ envCommand
466
+ .command('scan')
467
+ .description('Scan codebase for environment variable access')
468
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
469
+ .option('--verbose', 'Enable verbose output')
470
+ .action(scanAction);
471
+ envCommand
472
+ .command('list')
473
+ .description('List all discovered environment variables')
474
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
475
+ .option('-s, --sensitivity <type>', 'Filter by sensitivity (secret, credential, config)')
476
+ .action(listAction);
477
+ envCommand
478
+ .command('var <name>')
479
+ .description('Show details for a specific variable')
480
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
481
+ .action(varAction);
482
+ envCommand
483
+ .command('secrets')
484
+ .description('Show all secret and credential variables')
485
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
486
+ .action(secretsAction);
487
+ envCommand
488
+ .command('required')
489
+ .description('Show required variables without defaults')
490
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
491
+ .action(requiredAction);
492
+ envCommand
493
+ .command('file <pattern>')
494
+ .description('Show what env vars a file or pattern accesses')
495
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
496
+ .action(fileAction);
497
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
@@ -32,4 +32,6 @@ export { createConstraintsCommand } from './constraints.js';
32
32
  export { createSimulateCommand } from './simulate.js';
33
33
  export { createWpfCommand } from './wpf.js';
34
34
  export { createGoCommand } from './go.js';
35
+ export { envCommand } from './env.js';
36
+ export { constantsCommand } from './constants.js';
35
37
  //# 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;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,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;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -36,4 +36,8 @@ export { createSimulateCommand } from './simulate.js';
36
36
  export { createWpfCommand } from './wpf.js';
37
37
  // Go Language Support
38
38
  export { createGoCommand } from './go.js';
39
+ // Environment Variable Detection
40
+ export { envCommand } from './env.js';
41
+ // Constants & Enum Analysis
42
+ export { constantsCommand } from './constants.js';
39
43
  //# 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;AAC1C,OAAO,EAAE,eAAe,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,mCAAmC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,+BAA+B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,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;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,mCAAmC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,+BAA+B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driftdetect",
3
- "version": "0.6.1",
3
+ "version": "0.7.1",
4
4
  "description": "Codebase pattern detection for AI agents - scans your code, learns conventions, feeds context to Claude/Cursor/Copilot via MCP. Static analysis for TypeScript, Python, C#, Java, PHP.",
5
5
  "license": "MIT",
6
6
  "author": "Geoffrey Fernald",
@@ -49,26 +49,15 @@
49
49
  "files": [
50
50
  "dist"
51
51
  ],
52
- "scripts": {
53
- "build": "tsc",
54
- "clean": "rm -rf dist",
55
- "dev": "tsc --watch",
56
- "lint": "eslint src --ext .ts",
57
- "lint:fix": "eslint src --ext .ts --fix",
58
- "test": "vitest run",
59
- "test:watch": "vitest",
60
- "test:coverage": "vitest run --coverage",
61
- "typecheck": "tsc --noEmit"
62
- },
63
52
  "dependencies": {
64
53
  "@inquirer/prompts": "^7.0.0",
65
54
  "chalk": "^5.3.0",
66
55
  "cli-progress": "^3.12.0",
67
56
  "cli-table3": "^0.6.5",
68
57
  "commander": "^12.1.0",
69
- "driftdetect-core": "^0.6.0",
70
- "driftdetect-dashboard": "^0.6.0",
71
- "driftdetect-detectors": "^0.6.0",
58
+ "driftdetect-core": "^0.7.1",
59
+ "driftdetect-dashboard": "^0.7.1",
60
+ "driftdetect-detectors": "^0.7.1",
72
61
  "ora": "^8.1.0",
73
62
  "piscina": "^5.1.4"
74
63
  },
@@ -79,5 +68,16 @@
79
68
  "fast-check": "^3.15.0",
80
69
  "typescript": "^5.3.0",
81
70
  "vitest": "^1.0.0"
71
+ },
72
+ "scripts": {
73
+ "build": "tsc",
74
+ "clean": "rm -rf dist",
75
+ "dev": "tsc --watch",
76
+ "lint": "eslint src --ext .ts",
77
+ "lint:fix": "eslint src --ext .ts --fix",
78
+ "test": "vitest run",
79
+ "test:watch": "vitest",
80
+ "test:coverage": "vitest run --coverage",
81
+ "typecheck": "tsc --noEmit"
82
82
  }
83
- }
83
+ }