driftdetect 0.1.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.d.ts.map +1 -0
- package/dist/bin/drift.js +83 -0
- package/dist/bin/drift.js.map +1 -0
- package/dist/commands/approve.d.ts +18 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +271 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/check.d.ts +39 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +268 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/export.d.ts +14 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +109 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/files.d.ts +13 -0
- package/dist/commands/files.d.ts.map +1 -0
- package/dist/commands/files.js +88 -0
- package/dist/commands/files.js.map +1 -0
- package/dist/commands/ignore.d.ts +18 -0
- package/dist/commands/ignore.d.ts.map +1 -0
- package/dist/commands/ignore.js +200 -0
- package/dist/commands/ignore.js.map +1 -0
- package/dist/commands/index.d.ts +16 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +16 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +19 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +320 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/report.d.ts +20 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +202 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/scan.d.ts +27 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +444 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/status.d.ts +18 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +199 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/where.d.ts +13 -0
- package/dist/commands/where.d.ts.map +1 -0
- package/dist/commands/where.js +80 -0
- package/dist/commands/where.js.map +1 -0
- package/dist/git/hooks.d.ts +108 -0
- package/dist/git/hooks.d.ts.map +1 -0
- package/dist/git/hooks.js +389 -0
- package/dist/git/hooks.js.map +1 -0
- package/dist/git/index.d.ts +6 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +6 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/staged-files.d.ts +41 -0
- package/dist/git/staged-files.d.ts.map +1 -0
- package/dist/git/staged-files.js +118 -0
- package/dist/git/staged-files.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/reporters/github-reporter.d.ts +13 -0
- package/dist/reporters/github-reporter.d.ts.map +1 -0
- package/dist/reporters/github-reporter.js +59 -0
- package/dist/reporters/github-reporter.js.map +1 -0
- package/dist/reporters/gitlab-reporter.d.ts +16 -0
- package/dist/reporters/gitlab-reporter.d.ts.map +1 -0
- package/dist/reporters/gitlab-reporter.js +62 -0
- package/dist/reporters/gitlab-reporter.js.map +1 -0
- package/dist/reporters/index.d.ts +9 -0
- package/dist/reporters/index.d.ts.map +1 -0
- package/dist/reporters/index.js +9 -0
- package/dist/reporters/index.js.map +1 -0
- package/dist/reporters/json-reporter.d.ts +13 -0
- package/dist/reporters/json-reporter.d.ts.map +1 -0
- package/dist/reporters/json-reporter.js +44 -0
- package/dist/reporters/json-reporter.js.map +1 -0
- package/dist/reporters/text-reporter.d.ts +13 -0
- package/dist/reporters/text-reporter.d.ts.map +1 -0
- package/dist/reporters/text-reporter.js +96 -0
- package/dist/reporters/text-reporter.js.map +1 -0
- package/dist/reporters/types.d.ts +42 -0
- package/dist/reporters/types.d.ts.map +1 -0
- package/dist/reporters/types.js +5 -0
- package/dist/reporters/types.js.map +1 -0
- package/dist/services/scanner-service.d.ts +166 -0
- package/dist/services/scanner-service.d.ts.map +1 -0
- package/dist/services/scanner-service.js +453 -0
- package/dist/services/scanner-service.js.map +1 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +15 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/progress.d.ts +115 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +232 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/prompts.d.ts +91 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +160 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/spinner.d.ts +109 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +179 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/table.d.ts +118 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +235 -0
- package/dist/ui/table.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/ui/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress - Progress bars for scanning
|
|
3
|
+
*
|
|
4
|
+
* Provides progress bars for long-running operations like scanning.
|
|
5
|
+
*
|
|
6
|
+
* @requirements 29.1
|
|
7
|
+
*/
|
|
8
|
+
import { SingleBar, MultiBar, Presets } from 'cli-progress';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
/**
|
|
11
|
+
* Default format string for progress bars
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_FORMAT = `${chalk.cyan('{bar}')} {percentage}% | {value}/{total} | {task}`;
|
|
14
|
+
/**
|
|
15
|
+
* Scanning format string
|
|
16
|
+
*/
|
|
17
|
+
const SCAN_FORMAT = `${chalk.cyan('{bar}')} {percentage}% | {value}/{total} files | ETA: {eta}s | {task}`;
|
|
18
|
+
/**
|
|
19
|
+
* Progress bar wrapper for consistent CLI feedback
|
|
20
|
+
*/
|
|
21
|
+
export class Progress {
|
|
22
|
+
bar;
|
|
23
|
+
enabled;
|
|
24
|
+
currentValue = 0;
|
|
25
|
+
constructor(options) {
|
|
26
|
+
this.enabled = options.enabled ?? !process.env['CI'];
|
|
27
|
+
const format = options.format ?? DEFAULT_FORMAT;
|
|
28
|
+
this.bar = new SingleBar({
|
|
29
|
+
format,
|
|
30
|
+
barCompleteChar: '\u2588',
|
|
31
|
+
barIncompleteChar: '\u2591',
|
|
32
|
+
hideCursor: options.hideCursor ?? true,
|
|
33
|
+
clearOnComplete: options.clearOnComplete ?? false,
|
|
34
|
+
stopOnComplete: true,
|
|
35
|
+
etaBuffer: 50,
|
|
36
|
+
fps: 10,
|
|
37
|
+
}, Presets.shades_classic);
|
|
38
|
+
if (this.enabled) {
|
|
39
|
+
this.bar.start(options.total, 0, { task: '' });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Update progress with current value
|
|
44
|
+
*/
|
|
45
|
+
update(value, payload) {
|
|
46
|
+
this.currentValue = value;
|
|
47
|
+
if (this.enabled) {
|
|
48
|
+
this.bar.update(value, payload);
|
|
49
|
+
}
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Increment progress by amount
|
|
54
|
+
*/
|
|
55
|
+
increment(amount = 1, payload) {
|
|
56
|
+
this.currentValue += amount;
|
|
57
|
+
if (this.enabled) {
|
|
58
|
+
this.bar.increment(amount, payload);
|
|
59
|
+
}
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Set the current task description
|
|
64
|
+
*/
|
|
65
|
+
task(description) {
|
|
66
|
+
if (this.enabled) {
|
|
67
|
+
this.bar.update(this.currentValue, { task: description });
|
|
68
|
+
}
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Set the total value
|
|
73
|
+
*/
|
|
74
|
+
setTotal(total) {
|
|
75
|
+
if (this.enabled) {
|
|
76
|
+
this.bar.setTotal(total);
|
|
77
|
+
}
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Stop the progress bar
|
|
82
|
+
*/
|
|
83
|
+
stop() {
|
|
84
|
+
if (this.enabled) {
|
|
85
|
+
this.bar.stop();
|
|
86
|
+
}
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get current value
|
|
91
|
+
*/
|
|
92
|
+
get value() {
|
|
93
|
+
return this.currentValue;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Multi-progress bar for parallel operations
|
|
98
|
+
*/
|
|
99
|
+
export class MultiProgress {
|
|
100
|
+
multiBar;
|
|
101
|
+
bars = new Map();
|
|
102
|
+
enabled;
|
|
103
|
+
constructor(enabled) {
|
|
104
|
+
this.enabled = enabled ?? !process.env['CI'];
|
|
105
|
+
this.multiBar = new MultiBar({
|
|
106
|
+
format: `${chalk.cyan('{bar}')} {percentage}% | {name}: {task}`,
|
|
107
|
+
barCompleteChar: '\u2588',
|
|
108
|
+
barIncompleteChar: '\u2591',
|
|
109
|
+
hideCursor: true,
|
|
110
|
+
clearOnComplete: false,
|
|
111
|
+
stopOnComplete: false,
|
|
112
|
+
fps: 10,
|
|
113
|
+
}, Presets.shades_classic);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create a new progress bar
|
|
117
|
+
*/
|
|
118
|
+
create(name, total) {
|
|
119
|
+
if (!this.enabled) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const bar = this.multiBar.create(total, 0, { name, task: '' });
|
|
123
|
+
this.bars.set(name, bar);
|
|
124
|
+
return bar;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update a specific bar
|
|
128
|
+
*/
|
|
129
|
+
update(name, value, payload) {
|
|
130
|
+
if (this.enabled) {
|
|
131
|
+
const bar = this.bars.get(name);
|
|
132
|
+
if (bar) {
|
|
133
|
+
bar.update(value, payload);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Increment a specific bar
|
|
140
|
+
*/
|
|
141
|
+
increment(name, amount = 1, payload) {
|
|
142
|
+
if (this.enabled) {
|
|
143
|
+
const bar = this.bars.get(name);
|
|
144
|
+
if (bar) {
|
|
145
|
+
bar.increment(amount, payload);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Remove a specific bar
|
|
152
|
+
*/
|
|
153
|
+
remove(name) {
|
|
154
|
+
if (this.enabled) {
|
|
155
|
+
const bar = this.bars.get(name);
|
|
156
|
+
if (bar) {
|
|
157
|
+
this.multiBar.remove(bar);
|
|
158
|
+
this.bars.delete(name);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Stop all progress bars
|
|
165
|
+
*/
|
|
166
|
+
stop() {
|
|
167
|
+
if (this.enabled) {
|
|
168
|
+
this.multiBar.stop();
|
|
169
|
+
}
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create a progress bar for scanning operations
|
|
175
|
+
*/
|
|
176
|
+
export function createScanProgress(totalFiles) {
|
|
177
|
+
return new Progress({
|
|
178
|
+
total: totalFiles,
|
|
179
|
+
format: SCAN_FORMAT,
|
|
180
|
+
showEta: true,
|
|
181
|
+
clearOnComplete: true,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Create a progress bar for analysis operations
|
|
186
|
+
*/
|
|
187
|
+
export function createAnalysisProgress(totalItems) {
|
|
188
|
+
return new Progress({
|
|
189
|
+
total: totalItems,
|
|
190
|
+
format: `${chalk.blue('{bar}')} {percentage}% | Analyzing: {task}`,
|
|
191
|
+
clearOnComplete: true,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Create a progress bar for pattern detection
|
|
196
|
+
*/
|
|
197
|
+
export function createDetectionProgress(totalDetectors) {
|
|
198
|
+
return new Progress({
|
|
199
|
+
total: totalDetectors,
|
|
200
|
+
format: `${chalk.magenta('{bar}')} {percentage}% | Running: {task}`,
|
|
201
|
+
clearOnComplete: true,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Run an operation with progress tracking
|
|
206
|
+
*/
|
|
207
|
+
export async function withProgress(items, operation, options) {
|
|
208
|
+
const progressOptions = {
|
|
209
|
+
total: items.length,
|
|
210
|
+
};
|
|
211
|
+
if (options?.format) {
|
|
212
|
+
progressOptions.format = options.format;
|
|
213
|
+
}
|
|
214
|
+
const progress = new Progress(progressOptions);
|
|
215
|
+
for (let i = 0; i < items.length; i++) {
|
|
216
|
+
const item = items[i];
|
|
217
|
+
const taskName = options?.getTaskName?.(item) ?? `Item ${i + 1}`;
|
|
218
|
+
progress.task(taskName);
|
|
219
|
+
await operation(item, i);
|
|
220
|
+
progress.increment();
|
|
221
|
+
}
|
|
222
|
+
progress.stop();
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Simple percentage display for CI mode
|
|
226
|
+
*/
|
|
227
|
+
export function logProgress(current, total, message) {
|
|
228
|
+
const percentage = Math.round((current / total) * 100);
|
|
229
|
+
const msg = message ? ` - ${message}` : '';
|
|
230
|
+
console.log(`[${percentage}%] ${current}/${total}${msg}`);
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/ui/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts - Interactive prompts with Inquirer
|
|
3
|
+
*
|
|
4
|
+
* Provides interactive prompts for user input during CLI operations.
|
|
5
|
+
*
|
|
6
|
+
* @requirements 29.8
|
|
7
|
+
*/
|
|
8
|
+
import type { Severity } from 'driftdetect-core';
|
|
9
|
+
/**
|
|
10
|
+
* Pattern approval choice
|
|
11
|
+
*/
|
|
12
|
+
export interface PatternChoice {
|
|
13
|
+
/** Pattern ID */
|
|
14
|
+
id: string;
|
|
15
|
+
/** Pattern name */
|
|
16
|
+
name: string;
|
|
17
|
+
/** Pattern category */
|
|
18
|
+
category: string;
|
|
19
|
+
/** Confidence score */
|
|
20
|
+
confidence: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prompt for confirmation
|
|
24
|
+
*/
|
|
25
|
+
export declare function confirmPrompt(message: string, defaultValue?: boolean): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Prompt for text input
|
|
28
|
+
*/
|
|
29
|
+
export declare function inputPrompt(message: string, defaultValue?: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Prompt to select from a list of options
|
|
32
|
+
*/
|
|
33
|
+
export declare function selectPrompt<T extends string>(message: string, choices: Array<{
|
|
34
|
+
value: T;
|
|
35
|
+
name: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
}>): Promise<T>;
|
|
38
|
+
/**
|
|
39
|
+
* Prompt to select multiple items from a list
|
|
40
|
+
*/
|
|
41
|
+
export declare function multiSelectPrompt<T extends string>(message: string, choices: Array<{
|
|
42
|
+
value: T;
|
|
43
|
+
name: string;
|
|
44
|
+
checked?: boolean;
|
|
45
|
+
}>): Promise<T[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Prompt for pattern approval action
|
|
48
|
+
*/
|
|
49
|
+
export type PatternAction = 'approve' | 'ignore' | 'skip' | 'variant';
|
|
50
|
+
export declare function promptPatternAction(pattern: PatternChoice): Promise<PatternAction>;
|
|
51
|
+
/**
|
|
52
|
+
* Prompt for multiple pattern approvals
|
|
53
|
+
*/
|
|
54
|
+
export declare function promptBatchPatternApproval(patterns: PatternChoice[]): Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Prompt for severity selection
|
|
57
|
+
*/
|
|
58
|
+
export declare function promptSeverity(message?: string): Promise<Severity>;
|
|
59
|
+
/**
|
|
60
|
+
* Prompt for variant reason
|
|
61
|
+
*/
|
|
62
|
+
export declare function promptVariantReason(): Promise<string>;
|
|
63
|
+
/**
|
|
64
|
+
* Prompt for variant scope
|
|
65
|
+
*/
|
|
66
|
+
export type VariantScope = 'global' | 'directory' | 'file';
|
|
67
|
+
export declare function promptVariantScope(): Promise<VariantScope>;
|
|
68
|
+
/**
|
|
69
|
+
* Prompt for initialization options
|
|
70
|
+
*/
|
|
71
|
+
export interface InitPromptResult {
|
|
72
|
+
/** Whether to scan immediately */
|
|
73
|
+
scanNow: boolean;
|
|
74
|
+
/** Whether to auto-approve high confidence patterns */
|
|
75
|
+
autoApprove: boolean;
|
|
76
|
+
}
|
|
77
|
+
export declare function promptInitOptions(): Promise<InitPromptResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Prompt for ignore reason
|
|
80
|
+
*/
|
|
81
|
+
export declare function promptIgnoreReason(): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* Prompt for report format selection
|
|
84
|
+
*/
|
|
85
|
+
export type ReportFormat = 'text' | 'json' | 'github' | 'gitlab';
|
|
86
|
+
export declare function promptReportFormat(): Promise<ReportFormat>;
|
|
87
|
+
/**
|
|
88
|
+
* Prompt for category selection
|
|
89
|
+
*/
|
|
90
|
+
export declare function promptCategorySelection(categories: string[]): Promise<string[]>;
|
|
91
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,OAAO,CAAC,CAAC,CAAC,CAKZ;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACtD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC5D,OAAO,CAAC,CAAC,EAAE,CAAC,CAKd;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtE,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,aAAa,EAAE,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,SAA2B,GACjC,OAAO,CAAC,QAAQ,CAAC,CAUnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAU3D;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3D,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAShE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAYnE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAI1D;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAUhE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts - Interactive prompts with Inquirer
|
|
3
|
+
*
|
|
4
|
+
* Provides interactive prompts for user input during CLI operations.
|
|
5
|
+
*
|
|
6
|
+
* @requirements 29.8
|
|
7
|
+
*/
|
|
8
|
+
import { confirm, select, input, checkbox } from '@inquirer/prompts';
|
|
9
|
+
/**
|
|
10
|
+
* Prompt for confirmation
|
|
11
|
+
*/
|
|
12
|
+
export async function confirmPrompt(message, defaultValue = false) {
|
|
13
|
+
return confirm({
|
|
14
|
+
message,
|
|
15
|
+
default: defaultValue,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Prompt for text input
|
|
20
|
+
*/
|
|
21
|
+
export async function inputPrompt(message, defaultValue) {
|
|
22
|
+
const config = { message };
|
|
23
|
+
if (defaultValue !== undefined) {
|
|
24
|
+
config.default = defaultValue;
|
|
25
|
+
}
|
|
26
|
+
return input(config);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Prompt to select from a list of options
|
|
30
|
+
*/
|
|
31
|
+
export async function selectPrompt(message, choices) {
|
|
32
|
+
return select({
|
|
33
|
+
message,
|
|
34
|
+
choices,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Prompt to select multiple items from a list
|
|
39
|
+
*/
|
|
40
|
+
export async function multiSelectPrompt(message, choices) {
|
|
41
|
+
return checkbox({
|
|
42
|
+
message,
|
|
43
|
+
choices,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export async function promptPatternAction(pattern) {
|
|
47
|
+
const confidenceLabel = pattern.confidence >= 0.85
|
|
48
|
+
? 'high'
|
|
49
|
+
: pattern.confidence >= 0.65
|
|
50
|
+
? 'medium'
|
|
51
|
+
: pattern.confidence >= 0.45
|
|
52
|
+
? 'low'
|
|
53
|
+
: 'uncertain';
|
|
54
|
+
return select({
|
|
55
|
+
message: `Pattern: ${pattern.name} (${pattern.category}) - ${confidenceLabel} confidence (${(pattern.confidence * 100).toFixed(0)}%)`,
|
|
56
|
+
choices: [
|
|
57
|
+
{ value: 'approve', name: 'Approve - Enforce this pattern' },
|
|
58
|
+
{ value: 'ignore', name: 'Ignore - Stop tracking this pattern' },
|
|
59
|
+
{ value: 'variant', name: 'Variant - Mark as intentional deviation' },
|
|
60
|
+
{ value: 'skip', name: 'Skip - Decide later' },
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Prompt for multiple pattern approvals
|
|
66
|
+
*/
|
|
67
|
+
export async function promptBatchPatternApproval(patterns) {
|
|
68
|
+
const choices = patterns.map((p) => ({
|
|
69
|
+
value: p.id,
|
|
70
|
+
name: `${p.name} (${p.category}) - ${(p.confidence * 100).toFixed(0)}%`,
|
|
71
|
+
checked: p.confidence >= 0.85, // Pre-select high confidence patterns
|
|
72
|
+
}));
|
|
73
|
+
return checkbox({
|
|
74
|
+
message: 'Select patterns to approve:',
|
|
75
|
+
choices,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Prompt for severity selection
|
|
80
|
+
*/
|
|
81
|
+
export async function promptSeverity(message = 'Select severity level:') {
|
|
82
|
+
return select({
|
|
83
|
+
message,
|
|
84
|
+
choices: [
|
|
85
|
+
{ value: 'error', name: 'Error - Block commits and merges' },
|
|
86
|
+
{ value: 'warning', name: 'Warning - Display but do not block' },
|
|
87
|
+
{ value: 'info', name: 'Info - Informational only' },
|
|
88
|
+
{ value: 'hint', name: 'Hint - Subtle suggestion' },
|
|
89
|
+
],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Prompt for variant reason
|
|
94
|
+
*/
|
|
95
|
+
export async function promptVariantReason() {
|
|
96
|
+
return input({
|
|
97
|
+
message: 'Enter reason for this variant:',
|
|
98
|
+
validate: (value) => {
|
|
99
|
+
if (!value.trim()) {
|
|
100
|
+
return 'Reason is required';
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
export async function promptVariantScope() {
|
|
107
|
+
return select({
|
|
108
|
+
message: 'Select variant scope:',
|
|
109
|
+
choices: [
|
|
110
|
+
{ value: 'file', name: 'File - Apply to this file only' },
|
|
111
|
+
{ value: 'directory', name: 'Directory - Apply to this directory' },
|
|
112
|
+
{ value: 'global', name: 'Global - Apply everywhere' },
|
|
113
|
+
],
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
export async function promptInitOptions() {
|
|
117
|
+
const scanNow = await confirm({
|
|
118
|
+
message: 'Run initial scan now?',
|
|
119
|
+
default: true,
|
|
120
|
+
});
|
|
121
|
+
const autoApprove = await confirm({
|
|
122
|
+
message: 'Auto-approve high confidence patterns (>85%)?',
|
|
123
|
+
default: false,
|
|
124
|
+
});
|
|
125
|
+
return { scanNow, autoApprove };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Prompt for ignore reason
|
|
129
|
+
*/
|
|
130
|
+
export async function promptIgnoreReason() {
|
|
131
|
+
return input({
|
|
132
|
+
message: 'Enter reason for ignoring (optional):',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
export async function promptReportFormat() {
|
|
136
|
+
return select({
|
|
137
|
+
message: 'Select report format:',
|
|
138
|
+
choices: [
|
|
139
|
+
{ value: 'text', name: 'Text - Human-readable output' },
|
|
140
|
+
{ value: 'json', name: 'JSON - Machine-readable output' },
|
|
141
|
+
{ value: 'github', name: 'GitHub - GitHub Actions annotations' },
|
|
142
|
+
{ value: 'gitlab', name: 'GitLab - GitLab CI code quality format' },
|
|
143
|
+
],
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Prompt for category selection
|
|
148
|
+
*/
|
|
149
|
+
export async function promptCategorySelection(categories) {
|
|
150
|
+
const choices = categories.map((c) => ({
|
|
151
|
+
value: c,
|
|
152
|
+
name: c,
|
|
153
|
+
checked: true,
|
|
154
|
+
}));
|
|
155
|
+
return checkbox({
|
|
156
|
+
message: 'Select categories to include:',
|
|
157
|
+
choices,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spinner - Progress spinners
|
|
3
|
+
*
|
|
4
|
+
* Provides animated spinners for long-running operations.
|
|
5
|
+
*
|
|
6
|
+
* @requirements 29.1
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Spinner configuration options
|
|
10
|
+
*/
|
|
11
|
+
export interface SpinnerOptions {
|
|
12
|
+
/** Spinner text */
|
|
13
|
+
text?: string;
|
|
14
|
+
/** Spinner color */
|
|
15
|
+
color?: 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray';
|
|
16
|
+
/** Whether to show spinner (false in CI mode) */
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Spinner wrapper for consistent CLI feedback
|
|
21
|
+
*/
|
|
22
|
+
export declare class Spinner {
|
|
23
|
+
private spinner;
|
|
24
|
+
private enabled;
|
|
25
|
+
constructor(options?: SpinnerOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Start the spinner with optional text
|
|
28
|
+
*/
|
|
29
|
+
start(text?: string): this;
|
|
30
|
+
/**
|
|
31
|
+
* Stop the spinner with a success message
|
|
32
|
+
*/
|
|
33
|
+
succeed(text?: string): this;
|
|
34
|
+
/**
|
|
35
|
+
* Stop the spinner with a failure message
|
|
36
|
+
*/
|
|
37
|
+
fail(text?: string): this;
|
|
38
|
+
/**
|
|
39
|
+
* Stop the spinner with a warning message
|
|
40
|
+
*/
|
|
41
|
+
warn(text?: string): this;
|
|
42
|
+
/**
|
|
43
|
+
* Stop the spinner with an info message
|
|
44
|
+
*/
|
|
45
|
+
info(text?: string): this;
|
|
46
|
+
/**
|
|
47
|
+
* Stop the spinner without a status symbol
|
|
48
|
+
*/
|
|
49
|
+
stop(): this;
|
|
50
|
+
/**
|
|
51
|
+
* Update the spinner text
|
|
52
|
+
*/
|
|
53
|
+
text(text: string): this;
|
|
54
|
+
/**
|
|
55
|
+
* Update the spinner color
|
|
56
|
+
*/
|
|
57
|
+
color(color: 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray'): this;
|
|
58
|
+
/**
|
|
59
|
+
* Check if spinner is currently spinning
|
|
60
|
+
*/
|
|
61
|
+
get isSpinning(): boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a new spinner instance
|
|
65
|
+
*/
|
|
66
|
+
export declare function createSpinner(textOrOptions?: string | SpinnerOptions): Spinner;
|
|
67
|
+
/**
|
|
68
|
+
* Run an async operation with a spinner
|
|
69
|
+
*/
|
|
70
|
+
export declare function withSpinner<T>(text: string, operation: () => Promise<T>, options?: {
|
|
71
|
+
successText?: string | ((result: T) => string);
|
|
72
|
+
failText?: string | ((error: Error) => string);
|
|
73
|
+
}): Promise<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Pre-configured spinners for common operations
|
|
76
|
+
*/
|
|
77
|
+
export declare const spinners: {
|
|
78
|
+
/**
|
|
79
|
+
* Spinner for scanning operations
|
|
80
|
+
*/
|
|
81
|
+
scanning(text?: string): Spinner;
|
|
82
|
+
/**
|
|
83
|
+
* Spinner for analysis operations
|
|
84
|
+
*/
|
|
85
|
+
analyzing(text?: string): Spinner;
|
|
86
|
+
/**
|
|
87
|
+
* Spinner for loading operations
|
|
88
|
+
*/
|
|
89
|
+
loading(text?: string): Spinner;
|
|
90
|
+
/**
|
|
91
|
+
* Spinner for saving operations
|
|
92
|
+
*/
|
|
93
|
+
saving(text?: string): Spinner;
|
|
94
|
+
/**
|
|
95
|
+
* Spinner for checking operations
|
|
96
|
+
*/
|
|
97
|
+
checking(text?: string): Spinner;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Status indicators for non-spinner output
|
|
101
|
+
*/
|
|
102
|
+
export declare const status: {
|
|
103
|
+
success(message: string): void;
|
|
104
|
+
error(message: string): void;
|
|
105
|
+
warning(message: string): void;
|
|
106
|
+
info(message: string): void;
|
|
107
|
+
pending(message: string): void;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/ui/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9F,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,cAAmB;IAcxC;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ1B;;OAEG;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzB;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,KAAK,CACH,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAC3F,IAAI;IAKP;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,OAAO,CAK9E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;CAChD,GACA,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB;;OAEG;6BACsC,OAAO;IAIhD;;OAEG;8BACwC,OAAO;IAIlD;;OAEG;4BAC2B,OAAO;IAIrC;;OAEG;2BACyB,OAAO;IAInC;;OAEG;6BAC4C,OAAO;CAGvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM;qBACA,MAAM,GAAG,IAAI;mBAIf,MAAM,GAAG,IAAI;qBAIX,MAAM,GAAG,IAAI;kBAIhB,MAAM,GAAG,IAAI;qBAIV,MAAM,GAAG,IAAI;CAG/B,CAAC"}
|