logicstamp-context 0.2.5 → 0.2.7
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/LLM_CONTEXT.md +2 -2
- package/README.md +33 -13
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +11 -1
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +84 -9
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/security.d.ts +38 -0
- package/dist/cli/commands/security.d.ts.map +1 -0
- package/dist/cli/commands/security.js +343 -0
- package/dist/cli/commands/security.js.map +1 -0
- package/dist/cli/handlers/securityHandler.d.ts +5 -0
- package/dist/cli/handlers/securityHandler.d.ts.map +1 -0
- package/dist/cli/handlers/securityHandler.js +45 -0
- package/dist/cli/handlers/securityHandler.js.map +1 -0
- package/dist/cli/parser/argumentParser.d.ts.map +1 -1
- package/dist/cli/parser/argumentParser.js +23 -0
- package/dist/cli/parser/argumentParser.js.map +1 -1
- package/dist/cli/parser/helpText.d.ts +2 -0
- package/dist/cli/parser/helpText.d.ts.map +1 -1
- package/dist/cli/parser/helpText.js +453 -348
- package/dist/cli/parser/helpText.js.map +1 -1
- package/dist/cli/stamp.js +55 -1
- package/dist/cli/stamp.js.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.js +16 -4
- package/dist/core/astParser/extractors/propExtractor.js.map +1 -1
- package/dist/core/astParser.d.ts +3 -1
- package/dist/core/astParser.d.ts.map +1 -1
- package/dist/core/astParser.js +109 -0
- package/dist/core/astParser.js.map +1 -1
- package/dist/core/contractBuilder.d.ts.map +1 -1
- package/dist/core/contractBuilder.js +11 -15
- package/dist/core/contractBuilder.js.map +1 -1
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +54 -3
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/pack.d.ts.map +1 -1
- package/dist/core/pack.js +57 -1
- package/dist/core/pack.js.map +1 -1
- package/dist/utils/gitignore.d.ts +30 -2
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +132 -20
- package/dist/utils/gitignore.js.map +1 -1
- package/dist/utils/secretDetector.d.ts +21 -0
- package/dist/utils/secretDetector.d.ts.map +1 -0
- package/dist/utils/secretDetector.js +145 -0
- package/dist/utils/secretDetector.js.map +1 -0
- package/dist/utils/stampignore.d.ts +49 -0
- package/dist/utils/stampignore.d.ts.map +1 -0
- package/dist/utils/stampignore.js +189 -0
- package/dist/utils/stampignore.js.map +1 -0
- package/package.json +1 -1
- package/schema/logicstamp.context.schema.json +26 -1
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security scan command - Scans for secrets and generates report
|
|
3
|
+
*/
|
|
4
|
+
import { resolve, dirname, join, relative } from 'node:path';
|
|
5
|
+
import { writeFile, mkdir, unlink, stat } from 'node:fs/promises';
|
|
6
|
+
import { createInterface } from 'node:readline';
|
|
7
|
+
import { stdin, stdout } from 'node:process';
|
|
8
|
+
import { globFiles, readFileWithText } from '../../utils/fsx.js';
|
|
9
|
+
import { scanFileForSecrets, filterFalsePositives } from '../../utils/secretDetector.js';
|
|
10
|
+
import { addToStampignore, deleteStampignore, STAMPIGNORE_FILENAME } from '../../utils/stampignore.js';
|
|
11
|
+
import { ensureGitignorePatterns, ensurePatternInGitignore } from '../../utils/gitignore.js';
|
|
12
|
+
import { debugError } from '../../utils/debug.js';
|
|
13
|
+
import { displayPath } from './context/fileWriter.js';
|
|
14
|
+
/**
|
|
15
|
+
* Security scan command
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Prompt user for yes/no confirmation
|
|
19
|
+
*/
|
|
20
|
+
async function promptYesNo(question) {
|
|
21
|
+
const rl = createInterface({
|
|
22
|
+
input: stdin,
|
|
23
|
+
output: stdout,
|
|
24
|
+
});
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
rl.question(`${question} (y/N): `, (answer) => {
|
|
27
|
+
rl.close();
|
|
28
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Hard reset command - deletes .stampignore and security report file
|
|
34
|
+
*/
|
|
35
|
+
export async function securityHardResetCommand(options) {
|
|
36
|
+
const projectRoot = resolve(options.entry || '.');
|
|
37
|
+
const outputPath = options.out || 'stamp_security_report.json';
|
|
38
|
+
const outputFile = outputPath.endsWith('.json') ? outputPath : join(outputPath, 'stamp_security_report.json');
|
|
39
|
+
const reportPath = outputFile;
|
|
40
|
+
let shouldReset = options.force;
|
|
41
|
+
if (!shouldReset) {
|
|
42
|
+
// Prompt for confirmation
|
|
43
|
+
shouldReset = await promptYesNo(`⚠️ This will delete ${STAMPIGNORE_FILENAME} and ${displayPath(reportPath)}. Continue?`);
|
|
44
|
+
}
|
|
45
|
+
if (shouldReset) {
|
|
46
|
+
// Delete .stampignore
|
|
47
|
+
const stampignoreDeleted = await deleteStampignore(projectRoot);
|
|
48
|
+
// Delete report file
|
|
49
|
+
let reportDeleted = false;
|
|
50
|
+
try {
|
|
51
|
+
await unlink(reportPath);
|
|
52
|
+
reportDeleted = true;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const err = error;
|
|
56
|
+
if (err.code !== 'ENOENT') {
|
|
57
|
+
// Only error if file exists but couldn't be deleted
|
|
58
|
+
throw new Error(`Failed to delete report file: ${err.message}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!options.quiet) {
|
|
62
|
+
if (stampignoreDeleted || reportDeleted) {
|
|
63
|
+
console.log(`\n✅ Reset complete:`);
|
|
64
|
+
if (stampignoreDeleted) {
|
|
65
|
+
console.log(` Deleted ${STAMPIGNORE_FILENAME}`);
|
|
66
|
+
}
|
|
67
|
+
if (reportDeleted) {
|
|
68
|
+
console.log(` Deleted ${displayPath(reportPath)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(`\nℹ️ No files to reset (both files don't exist)`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (!options.quiet) {
|
|
78
|
+
console.log(`\n❌ Reset cancelled`);
|
|
79
|
+
}
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export async function securityScanCommand(options) {
|
|
84
|
+
const projectRoot = resolve(options.entry || '.');
|
|
85
|
+
const outputPath = options.out || 'stamp_security_report.json';
|
|
86
|
+
const outputDir = outputPath.endsWith('.json') ? dirname(outputPath) : outputPath;
|
|
87
|
+
const outputFile = outputPath.endsWith('.json') ? outputPath : join(outputPath, 'stamp_security_report.json');
|
|
88
|
+
if (!options.quiet) {
|
|
89
|
+
console.log(`🔒 Scanning for secrets in ${displayPath(projectRoot)}...`);
|
|
90
|
+
}
|
|
91
|
+
// Find all files to scan (TypeScript, JavaScript, and JSON files)
|
|
92
|
+
let files = await globFiles(projectRoot, '.ts,.tsx,.js,.jsx,.json');
|
|
93
|
+
// Exclude the report file and .stampignore from scanning (they may contain secrets)
|
|
94
|
+
// Use absolute path comparison to be safe
|
|
95
|
+
const reportFileAbs = resolve(outputFile);
|
|
96
|
+
const stampignoreFileAbs = join(projectRoot, STAMPIGNORE_FILENAME);
|
|
97
|
+
files = files.filter(file => {
|
|
98
|
+
const fileAbs = resolve(file);
|
|
99
|
+
return fileAbs !== reportFileAbs && fileAbs !== stampignoreFileAbs;
|
|
100
|
+
});
|
|
101
|
+
if (files.length === 0) {
|
|
102
|
+
if (!options.quiet) {
|
|
103
|
+
console.log(' No files found to scan');
|
|
104
|
+
}
|
|
105
|
+
// Still create an empty report if noExit is true (called from init)
|
|
106
|
+
if (options.noExit) {
|
|
107
|
+
const emptyReport = {
|
|
108
|
+
type: 'LogicStampSecurityReport',
|
|
109
|
+
schemaVersion: '0.1',
|
|
110
|
+
createdAt: new Date().toISOString(),
|
|
111
|
+
projectRoot,
|
|
112
|
+
filesScanned: 0,
|
|
113
|
+
secretsFound: 0,
|
|
114
|
+
matches: [],
|
|
115
|
+
filesWithSecrets: [],
|
|
116
|
+
};
|
|
117
|
+
// Resolve output file relative to project root if it's a relative path
|
|
118
|
+
const resolvedOutputFile = outputFile.startsWith('/') || outputFile.match(/^[A-Z]:/)
|
|
119
|
+
? outputFile
|
|
120
|
+
: join(projectRoot, outputFile);
|
|
121
|
+
const resolvedOutputDir = dirname(resolvedOutputFile);
|
|
122
|
+
try {
|
|
123
|
+
await mkdir(resolvedOutputDir, { recursive: true });
|
|
124
|
+
await writeFile(resolvedOutputFile, JSON.stringify(emptyReport, null, 2), 'utf8');
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const err = error;
|
|
128
|
+
debugError('security', 'securityScanCommand', {
|
|
129
|
+
outputFile: resolvedOutputFile,
|
|
130
|
+
message: err.message,
|
|
131
|
+
code: err.code,
|
|
132
|
+
});
|
|
133
|
+
throw new Error(`Failed to write security report: ${err.message}`);
|
|
134
|
+
}
|
|
135
|
+
// Automatically ensure report file is in .gitignore to prevent accidental commits
|
|
136
|
+
try {
|
|
137
|
+
const reportPathRelative = relative(projectRoot, resolvedOutputFile).replace(/\\/g, '/');
|
|
138
|
+
const isDefaultPath = outputPath === 'stamp_security_report.json' ||
|
|
139
|
+
(outputPath.endsWith('.json') && resolvedOutputFile.endsWith('stamp_security_report.json'));
|
|
140
|
+
if (isDefaultPath) {
|
|
141
|
+
// Default path - ensure all LogicStamp patterns are in .gitignore
|
|
142
|
+
await ensureGitignorePatterns(projectRoot);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// Custom path - ensure this specific file is in .gitignore
|
|
146
|
+
await ensurePatternInGitignore(projectRoot, reportPathRelative);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
// Non-fatal: log warning but don't fail the scan
|
|
151
|
+
if (!options.quiet) {
|
|
152
|
+
const err = error;
|
|
153
|
+
console.warn(`\n⚠️ Warning: Could not update .gitignore: ${err.message}`);
|
|
154
|
+
console.warn(` Please manually add the report file to .gitignore to prevent accidental commits.`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (!options.quiet) {
|
|
158
|
+
console.log(`\n✅ No secrets detected`);
|
|
159
|
+
console.log(`📝 Report written to: ${displayPath(resolvedOutputFile)}`);
|
|
160
|
+
}
|
|
161
|
+
return { secretsFound: false, report: emptyReport };
|
|
162
|
+
}
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (!options.quiet) {
|
|
166
|
+
console.log(` Scanning ${files.length} files...`);
|
|
167
|
+
}
|
|
168
|
+
// Scan each file for secrets
|
|
169
|
+
const allMatches = [];
|
|
170
|
+
const filesWithSecrets = new Set();
|
|
171
|
+
// Maximum file size to scan (10MB) - prevents DoS on huge files
|
|
172
|
+
const MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
173
|
+
for (const file of files) {
|
|
174
|
+
try {
|
|
175
|
+
// Check file size before reading
|
|
176
|
+
const fileStats = await stat(file);
|
|
177
|
+
if (fileStats.size > MAX_FILE_SIZE) {
|
|
178
|
+
if (!options.quiet) {
|
|
179
|
+
console.warn(` ⚠️ Skipped ${file}: file too large (${Math.round(fileStats.size / 1024 / 1024)}MB > 10MB)`);
|
|
180
|
+
}
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
const { text } = await readFileWithText(file);
|
|
184
|
+
const matches = scanFileForSecrets(file, text);
|
|
185
|
+
const filteredMatches = filterFalsePositives(matches);
|
|
186
|
+
if (filteredMatches.length > 0) {
|
|
187
|
+
allMatches.push(...filteredMatches);
|
|
188
|
+
filesWithSecrets.add(file);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
// Skip files that can't be read (binary, permissions, etc.)
|
|
193
|
+
if (!options.quiet) {
|
|
194
|
+
console.warn(` ⚠️ Skipped ${file}: ${error.message}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Generate report
|
|
199
|
+
const report = {
|
|
200
|
+
type: 'LogicStampSecurityReport',
|
|
201
|
+
schemaVersion: '0.1',
|
|
202
|
+
createdAt: new Date().toISOString(),
|
|
203
|
+
projectRoot,
|
|
204
|
+
filesScanned: files.length,
|
|
205
|
+
secretsFound: allMatches.length,
|
|
206
|
+
matches: allMatches,
|
|
207
|
+
filesWithSecrets: Array.from(filesWithSecrets).sort(),
|
|
208
|
+
};
|
|
209
|
+
// Write report
|
|
210
|
+
try {
|
|
211
|
+
await mkdir(outputDir, { recursive: true });
|
|
212
|
+
await writeFile(outputFile, JSON.stringify(report, null, 2), 'utf8');
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
const err = error;
|
|
216
|
+
debugError('security', 'securityScanCommand', {
|
|
217
|
+
outputFile,
|
|
218
|
+
message: err.message,
|
|
219
|
+
code: err.code,
|
|
220
|
+
});
|
|
221
|
+
throw new Error(`Failed to write security report: ${err.message}`);
|
|
222
|
+
}
|
|
223
|
+
// Automatically ensure report file is in .gitignore to prevent accidental commits
|
|
224
|
+
// The report contains sensitive information (locations of secrets)
|
|
225
|
+
try {
|
|
226
|
+
const reportPathRelative = relative(projectRoot, outputFile).replace(/\\/g, '/');
|
|
227
|
+
const isDefaultPath = outputPath === 'stamp_security_report.json' ||
|
|
228
|
+
(outputPath.endsWith('.json') && outputFile.endsWith('stamp_security_report.json'));
|
|
229
|
+
if (isDefaultPath) {
|
|
230
|
+
// Default path - ensure all LogicStamp patterns are in .gitignore
|
|
231
|
+
await ensureGitignorePatterns(projectRoot);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Custom path - ensure this specific file is in .gitignore
|
|
235
|
+
await ensurePatternInGitignore(projectRoot, reportPathRelative);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
// Non-fatal: log warning but don't fail the scan
|
|
240
|
+
if (!options.quiet) {
|
|
241
|
+
const err = error;
|
|
242
|
+
console.warn(`\n⚠️ Warning: Could not update .gitignore: ${err.message}`);
|
|
243
|
+
console.warn(` Please manually add the report file to .gitignore to prevent accidental commits.`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Display results
|
|
247
|
+
if (!options.quiet) {
|
|
248
|
+
console.log(`\n📊 Security Scan Results:`);
|
|
249
|
+
console.log(` Files scanned: ${files.length}`);
|
|
250
|
+
console.log(` Secrets found: ${allMatches.length}`);
|
|
251
|
+
console.log(` Files with secrets: ${filesWithSecrets.size}`);
|
|
252
|
+
if (allMatches.length > 0) {
|
|
253
|
+
console.log(`\n⚠️ Secrets detected in the following files:`);
|
|
254
|
+
// Group by file
|
|
255
|
+
const matchesByFile = new Map();
|
|
256
|
+
for (const match of allMatches) {
|
|
257
|
+
if (!matchesByFile.has(match.file)) {
|
|
258
|
+
matchesByFile.set(match.file, []);
|
|
259
|
+
}
|
|
260
|
+
matchesByFile.get(match.file).push(match);
|
|
261
|
+
}
|
|
262
|
+
for (const [file, matches] of matchesByFile.entries()) {
|
|
263
|
+
console.log(`\n ${displayPath(file)}`);
|
|
264
|
+
for (const match of matches.slice(0, 5)) { // Show first 5 matches per file
|
|
265
|
+
console.log(` Line ${match.line}: ${match.type} (${match.severity})`);
|
|
266
|
+
console.log(` ${match.snippet}`);
|
|
267
|
+
}
|
|
268
|
+
if (matches.length > 5) {
|
|
269
|
+
console.log(` ... and ${matches.length - 5} more`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
console.log(`\n📝 Report written to: ${displayPath(outputFile)}`);
|
|
273
|
+
// Ask if user wants to add files to .stampignore
|
|
274
|
+
if (options.apply) {
|
|
275
|
+
// Auto-apply: add files to .stampignore
|
|
276
|
+
// Convert absolute paths to relative paths for .stampignore
|
|
277
|
+
// All paths are relative to project root (no user-specific or absolute paths)
|
|
278
|
+
const filesToIgnore = Array.from(filesWithSecrets)
|
|
279
|
+
.map(file => {
|
|
280
|
+
const relPath = relative(projectRoot, file).replace(/\\/g, '/');
|
|
281
|
+
// Validate: ensure path is relative (doesn't start with / or contain .. outside project)
|
|
282
|
+
// relative() can return absolute paths if files are outside project root, but
|
|
283
|
+
// since globFiles is scoped to projectRoot, this shouldn't happen
|
|
284
|
+
if (relPath.startsWith('/') || relPath.match(/^[A-Z]:/)) {
|
|
285
|
+
// Absolute path detected - this shouldn't happen, but skip it to be safe
|
|
286
|
+
console.warn(`⚠️ Skipping absolute path outside project: ${file}`);
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
return relPath;
|
|
290
|
+
})
|
|
291
|
+
.filter((path) => path !== null);
|
|
292
|
+
if (filesToIgnore.length === 0) {
|
|
293
|
+
if (!options.quiet) {
|
|
294
|
+
console.log(`\nℹ️ No valid relative paths to add to .stampignore`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
const result = await addToStampignore(projectRoot, filesToIgnore);
|
|
299
|
+
if (result.added) {
|
|
300
|
+
console.log(`\n✅ Added ${filesToIgnore.length} file(s) to .stampignore`);
|
|
301
|
+
if (result.created) {
|
|
302
|
+
console.log(` Created .stampignore`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
console.log(`\nℹ️ Files already in .stampignore`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
// Interactive prompt
|
|
312
|
+
console.log(`\n💡 To automatically add these files to .stampignore, run:`);
|
|
313
|
+
console.log(` stamp security scan --apply`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
console.log(`\n✅ No secrets detected`);
|
|
318
|
+
console.log(`📝 Report written to: ${displayPath(outputFile)}`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
// Quiet mode: just output JSON stats
|
|
323
|
+
console.log(JSON.stringify({
|
|
324
|
+
filesScanned: files.length,
|
|
325
|
+
secretsFound: allMatches.length,
|
|
326
|
+
filesWithSecrets: filesWithSecrets.size,
|
|
327
|
+
reportPath: outputFile,
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
// Exit with error code if secrets found (unless noExit is true)
|
|
331
|
+
if (allMatches.length > 0) {
|
|
332
|
+
if (options.noExit) {
|
|
333
|
+
return { secretsFound: true, report };
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
process.exit(1);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (options.noExit) {
|
|
340
|
+
return { secretsFound: false, report };
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/cli/commands/security.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAY,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAoB,MAAM,+BAA+B,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAmB,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;GAEG;AACH;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AASD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAiC;IAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,4BAA4B,CAAC;IAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;IAC9G,MAAM,UAAU,GAAG,UAAU,CAAC;IAE9B,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,0BAA0B;QAC1B,WAAW,GAAG,MAAM,WAAW,CAC7B,wBAAwB,oBAAoB,QAAQ,WAAW,CAAC,UAAU,CAAC,aAAa,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,sBAAsB;QACtB,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEhE,qBAAqB;QACrB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAA8B,CAAC;YAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,oDAAoD;gBACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,kBAAkB,IAAI,aAAa,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,cAAc,oBAAoB,EAAE,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,aAAa,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAA4B;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,4BAA4B,CAAC;IAC/D,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAClF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;IAE9G,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,kEAAkE;IAClE,IAAI,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;IAEpE,oFAAoF;IACpF,0CAA0C;IAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAEnE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,kBAAkB,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAmB;gBAClC,IAAI,EAAE,0BAA0B;gBAChC,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,WAAW;gBACX,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,EAAE;aACrB,CAAC;YAEF,uEAAuE;YACvE,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;gBAClF,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAClC,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAEtD,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAA8B,CAAC;gBAC3C,UAAU,CAAC,UAAU,EAAE,qBAAqB,EAAE;oBAC5C,UAAU,EAAE,kBAAkB;oBAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,kFAAkF;YAClF,IAAI,CAAC;gBACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzF,MAAM,aAAa,GAAG,UAAU,KAAK,4BAA4B;oBAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAElH,IAAI,aAAa,EAAE,CAAC;oBAClB,kEAAkE;oBAClE,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,2DAA2D;oBAC3D,MAAM,wBAAwB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iDAAiD;gBACjD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,KAAc,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3E,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACtD,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,gEAAgE;IAChE,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,qBAAqB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAEtD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;gBACpC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4DAA4D;YAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,0BAA0B;QAChC,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW;QACX,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,YAAY,EAAE,UAAU,CAAC,MAAM;QAC/B,OAAO,EAAE,UAAU;QACnB,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;KACtD,CAAC;IAEF,eAAe;IACf,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAA8B,CAAC;QAC3C,UAAU,CAAC,UAAU,EAAE,qBAAqB,EAAE;YAC5C,UAAU;YACV,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,kFAAkF;IAClF,mEAAmE;IACnE,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,UAAU,KAAK,4BAA4B;YAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAE1G,IAAI,aAAa,EAAE,CAAC;YAClB,kEAAkE;YAClE,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,MAAM,wBAAwB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iDAAiD;QACjD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,0BAA0B,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAE9D,gBAAgB;YAChB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpC,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC;oBACzE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;oBAC3E,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAElE,iDAAiD;YACjD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,wCAAwC;gBACxC,4DAA4D;gBAC5D,8EAA8E;gBAC9E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;qBAC/C,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAChE,yFAAyF;oBACzF,8EAA8E;oBAC9E,kEAAkE;oBAClE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;wBACxD,yEAAyE;wBACzE,OAAO,CAAC,IAAI,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;wBACpE,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAEjD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;oBAElE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,CAAC,MAAM,0BAA0B,CAAC,CAAC;wBACzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;4BACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,YAAY,EAAE,UAAU,CAAC,MAAM;YAC/B,gBAAgB,EAAE,gBAAgB,CAAC,IAAI;YACvC,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gEAAgE;IAChE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"securityHandler.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/securityHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for security scan command
|
|
3
|
+
*/
|
|
4
|
+
import { securityScanCommand } from '../commands/security.js';
|
|
5
|
+
import { getSecurityScanHelp } from '../parser/helpText.js';
|
|
6
|
+
import { printFoxIcon } from './initHandler.js';
|
|
7
|
+
export async function handleSecurityScan(args) {
|
|
8
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
9
|
+
printFoxIcon();
|
|
10
|
+
console.log(getSecurityScanHelp());
|
|
11
|
+
process.exit(0);
|
|
12
|
+
}
|
|
13
|
+
const options = {
|
|
14
|
+
entry: undefined,
|
|
15
|
+
out: undefined,
|
|
16
|
+
apply: args.includes('--apply'),
|
|
17
|
+
quiet: args.includes('--quiet') || args.includes('-q'),
|
|
18
|
+
};
|
|
19
|
+
// Parse arguments
|
|
20
|
+
for (let i = 0; i < args.length; i++) {
|
|
21
|
+
const arg = args[i];
|
|
22
|
+
if (arg === '--apply') {
|
|
23
|
+
options.apply = true;
|
|
24
|
+
}
|
|
25
|
+
else if (arg === '--quiet' || arg === '-q') {
|
|
26
|
+
options.quiet = true;
|
|
27
|
+
}
|
|
28
|
+
else if (arg === '--out' || arg === '-o') {
|
|
29
|
+
options.out = args[i + 1];
|
|
30
|
+
i++;
|
|
31
|
+
}
|
|
32
|
+
else if (!arg.startsWith('-') && !options.entry) {
|
|
33
|
+
options.entry = arg;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
await securityScanCommand(options);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('❌ Security scan failed:', error.message);
|
|
41
|
+
console.error(error.stack);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=securityHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"securityHandler.js","sourceRoot":"","sources":["../../../src/cli/handlers/securityHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAA4B,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAc;IACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAwB;QACnC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KACvD,CAAC;IAEF,kBAAkB;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argumentParser.d.ts","sourceRoot":"","sources":["../../../src/cli/parser/argumentParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAoG/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAkB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAQ9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"argumentParser.d.ts","sourceRoot":"","sources":["../../../src/cli/parser/argumentParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAoG/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAkB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAQ9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAmDzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAgB3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAQ3D"}
|
|
@@ -146,6 +146,14 @@ export function parseInitArgs(args) {
|
|
|
146
146
|
case 'skip-gitignore':
|
|
147
147
|
options.skipGitignore = true;
|
|
148
148
|
break;
|
|
149
|
+
case 'yes':
|
|
150
|
+
options.yes = true;
|
|
151
|
+
break;
|
|
152
|
+
case 'secure':
|
|
153
|
+
options.secure = true;
|
|
154
|
+
// --secure implies --yes
|
|
155
|
+
options.yes = true;
|
|
156
|
+
break;
|
|
149
157
|
case 'quiet':
|
|
150
158
|
// Ignore --quiet for init (quiet mode not supported)
|
|
151
159
|
break;
|
|
@@ -154,6 +162,21 @@ export function parseInitArgs(args) {
|
|
|
154
162
|
process.exit(1);
|
|
155
163
|
}
|
|
156
164
|
}
|
|
165
|
+
else if (arg.startsWith('-') && arg.length === 2) {
|
|
166
|
+
// Single-dash flags like -y, -q
|
|
167
|
+
const flag = arg[1];
|
|
168
|
+
switch (flag) {
|
|
169
|
+
case 'y':
|
|
170
|
+
options.yes = true;
|
|
171
|
+
break;
|
|
172
|
+
case 'q':
|
|
173
|
+
// Ignore -q for init (quiet mode not supported)
|
|
174
|
+
break;
|
|
175
|
+
default:
|
|
176
|
+
console.error(`❌ Unknown option: ${arg}`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
157
180
|
else if (arg !== '-q') {
|
|
158
181
|
// First non-option argument is the target directory (ignore -q)
|
|
159
182
|
if (!options.targetDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argumentParser.js","sourceRoot":"","sources":["../../../src/cli/parser/argumentParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"argumentParser.js","sourceRoot":"","sources":["../../../src/cli/parser/argumentParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Help text for CLI commands
|
|
3
3
|
*/
|
|
4
4
|
export declare function getMainHelp(): string;
|
|
5
|
+
export declare function getSecurityHelp(): string;
|
|
5
6
|
export declare function getStyleHelp(): string;
|
|
6
7
|
export declare function getGenerateHelp(): string;
|
|
7
8
|
export declare function getValidateHelp(): string;
|
|
8
9
|
export declare function getCompareHelp(): string;
|
|
9
10
|
export declare function getCleanHelp(): string;
|
|
10
11
|
export declare function getInitHelp(): string;
|
|
12
|
+
export declare function getSecurityScanHelp(): string;
|
|
11
13
|
//# sourceMappingURL=helpText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpText.d.ts","sourceRoot":"","sources":["../../../src/cli/parser/helpText.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,WAAW,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"helpText.d.ts","sourceRoot":"","sources":["../../../src/cli/parser/helpText.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,WAAW,IAAI,MAAM,CAwDpC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAyCxC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAkDrC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAqDxC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAgCxC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAuFvC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAgDrC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAgDpC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAkD5C"}
|