avana-cli 2.11.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/CHANGELOG.md +32 -0
- package/LICENSE +21 -0
- package/README.md +584 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +153 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/install.d.ts +6 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +101 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/scan.d.ts +19 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +383 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/uninstall.d.ts +6 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +80 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +475 -0
- package/dist/index.js.map +1 -0
- package/dist/rules/additional-patterns.d.ts +12 -0
- package/dist/rules/additional-patterns.d.ts.map +1 -0
- package/dist/rules/additional-patterns.js +170 -0
- package/dist/rules/additional-patterns.js.map +1 -0
- package/dist/rules/code-patterns.d.ts +26 -0
- package/dist/rules/code-patterns.d.ts.map +1 -0
- package/dist/rules/code-patterns.js +220 -0
- package/dist/rules/code-patterns.js.map +1 -0
- package/dist/rules/secret-patterns.d.ts +28 -0
- package/dist/rules/secret-patterns.d.ts.map +1 -0
- package/dist/rules/secret-patterns.js +1729 -0
- package/dist/rules/secret-patterns.js.map +1 -0
- package/dist/scanners/secret-scanner.d.ts +34 -0
- package/dist/scanners/secret-scanner.d.ts.map +1 -0
- package/dist/scanners/secret-scanner.js +281 -0
- package/dist/scanners/secret-scanner.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/error-handler.d.ts +126 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +222 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/exit-codes.d.ts +52 -0
- package/dist/utils/exit-codes.d.ts.map +1 -0
- package/dist/utils/exit-codes.js +89 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/file-stream-scanner.d.ts +31 -0
- package/dist/utils/file-stream-scanner.d.ts.map +1 -0
- package/dist/utils/file-stream-scanner.js +159 -0
- package/dist/utils/file-stream-scanner.js.map +1 -0
- package/dist/utils/file-type-detector.d.ts +45 -0
- package/dist/utils/file-type-detector.d.ts.map +1 -0
- package/dist/utils/file-type-detector.js +237 -0
- package/dist/utils/file-type-detector.js.map +1 -0
- package/dist/utils/ignore-pattern-manager.d.ts +61 -0
- package/dist/utils/ignore-pattern-manager.d.ts.map +1 -0
- package/dist/utils/ignore-pattern-manager.js +204 -0
- package/dist/utils/ignore-pattern-manager.js.map +1 -0
- package/dist/utils/json-output-formatter.d.ts +232 -0
- package/dist/utils/json-output-formatter.d.ts.map +1 -0
- package/dist/utils/json-output-formatter.js +367 -0
- package/dist/utils/json-output-formatter.js.map +1 -0
- package/dist/utils/logger.d.ts +181 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +414 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/markdown-output-formatter.d.ts +65 -0
- package/dist/utils/markdown-output-formatter.d.ts.map +1 -0
- package/dist/utils/markdown-output-formatter.js +316 -0
- package/dist/utils/markdown-output-formatter.js.map +1 -0
- package/dist/utils/memory-manager.d.ts +77 -0
- package/dist/utils/memory-manager.d.ts.map +1 -0
- package/dist/utils/memory-manager.js +157 -0
- package/dist/utils/memory-manager.js.map +1 -0
- package/dist/utils/parallel-scanner-worker.d.ts +19 -0
- package/dist/utils/parallel-scanner-worker.d.ts.map +1 -0
- package/dist/utils/parallel-scanner-worker.js +51 -0
- package/dist/utils/parallel-scanner-worker.js.map +1 -0
- package/dist/utils/parallel-scanner.d.ts +82 -0
- package/dist/utils/parallel-scanner.d.ts.map +1 -0
- package/dist/utils/parallel-scanner.js +229 -0
- package/dist/utils/parallel-scanner.js.map +1 -0
- package/dist/utils/pattern-validator.d.ts +108 -0
- package/dist/utils/pattern-validator.d.ts.map +1 -0
- package/dist/utils/pattern-validator.js +315 -0
- package/dist/utils/pattern-validator.js.map +1 -0
- package/dist/utils/progress-reporter.d.ts +68 -0
- package/dist/utils/progress-reporter.d.ts.map +1 -0
- package/dist/utils/progress-reporter.js +194 -0
- package/dist/utils/progress-reporter.js.map +1 -0
- package/dist/utils/result-cache.d.ts +99 -0
- package/dist/utils/result-cache.d.ts.map +1 -0
- package/dist/utils/result-cache.js +335 -0
- package/dist/utils/result-cache.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* File Type Detector
|
|
4
|
+
* Detects file types, encodings, and determines scanning strategy
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.FileTypeDetector = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const chardet = __importStar(require("chardet"));
|
|
44
|
+
/**
|
|
45
|
+
* Size threshold for streaming (10MB)
|
|
46
|
+
*/
|
|
47
|
+
const STREAM_THRESHOLD = 10 * 1024 * 1024;
|
|
48
|
+
/**
|
|
49
|
+
* Size of buffer to read for binary detection (8KB)
|
|
50
|
+
*/
|
|
51
|
+
const DETECTION_BUFFER_SIZE = 8 * 1024;
|
|
52
|
+
/**
|
|
53
|
+
* Binary file extensions
|
|
54
|
+
*/
|
|
55
|
+
const BINARY_EXTENSIONS = new Set([
|
|
56
|
+
// Images
|
|
57
|
+
'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ico', '.svg', '.webp', '.tiff', '.tif',
|
|
58
|
+
// Videos
|
|
59
|
+
'.mp4', '.avi', '.mov', '.wmv', '.flv', '.mkv', '.webm', '.m4v',
|
|
60
|
+
// Audio
|
|
61
|
+
'.mp3', '.wav', '.flac', '.aac', '.ogg', '.wma', '.m4a',
|
|
62
|
+
// Archives
|
|
63
|
+
'.zip', '.tar', '.gz', '.bz2', '.7z', '.rar', '.xz', '.tgz',
|
|
64
|
+
// Executables
|
|
65
|
+
'.exe', '.dll', '.so', '.dylib', '.bin', '.app', '.deb', '.rpm',
|
|
66
|
+
// Documents (binary formats)
|
|
67
|
+
'.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx',
|
|
68
|
+
// Databases
|
|
69
|
+
'.db', '.sqlite', '.sqlite3', '.mdb',
|
|
70
|
+
// Fonts
|
|
71
|
+
'.ttf', '.otf', '.woff', '.woff2', '.eot',
|
|
72
|
+
// Other
|
|
73
|
+
'.pyc', '.class', '.o', '.a', '.lib', '.jar', '.war',
|
|
74
|
+
]);
|
|
75
|
+
/**
|
|
76
|
+
* FileTypeDetector class
|
|
77
|
+
* Detects file types and encodings before scanning
|
|
78
|
+
*/
|
|
79
|
+
class FileTypeDetector {
|
|
80
|
+
/**
|
|
81
|
+
* Check if a file is binary based on extension and content
|
|
82
|
+
*/
|
|
83
|
+
isBinary(filePath) {
|
|
84
|
+
// Check extension first (fast path)
|
|
85
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
86
|
+
if (BINARY_EXTENSIONS.has(ext)) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
// Check content for binary markers
|
|
90
|
+
try {
|
|
91
|
+
const buffer = this.readFileBuffer(filePath, DETECTION_BUFFER_SIZE);
|
|
92
|
+
return this.isBinaryContent(buffer);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// If we can't read the file, assume it's not binary
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Detect file encoding
|
|
101
|
+
*/
|
|
102
|
+
detectEncoding(filePath) {
|
|
103
|
+
try {
|
|
104
|
+
const buffer = this.readFileBuffer(filePath, DETECTION_BUFFER_SIZE);
|
|
105
|
+
// Check for BOM (Byte Order Mark)
|
|
106
|
+
const bom = this.detectBOM(buffer);
|
|
107
|
+
if (bom) {
|
|
108
|
+
return bom;
|
|
109
|
+
}
|
|
110
|
+
// Use chardet for encoding detection
|
|
111
|
+
const detected = chardet.detect(buffer);
|
|
112
|
+
if (detected) {
|
|
113
|
+
return this.normalizeEncoding(detected);
|
|
114
|
+
}
|
|
115
|
+
// Default to UTF-8
|
|
116
|
+
return 'utf-8';
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
// If detection fails, assume UTF-8
|
|
120
|
+
return 'utf-8';
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Check if file should be streamed (> 10MB)
|
|
125
|
+
*/
|
|
126
|
+
shouldStream(filePath) {
|
|
127
|
+
try {
|
|
128
|
+
const stats = fs.statSync(filePath);
|
|
129
|
+
return stats.size > STREAM_THRESHOLD;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// If we can't get file stats, don't stream
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get complete file information
|
|
138
|
+
*/
|
|
139
|
+
getFileInfo(filePath) {
|
|
140
|
+
const isBinary = this.isBinary(filePath);
|
|
141
|
+
const encoding = isBinary ? 'unknown' : this.detectEncoding(filePath);
|
|
142
|
+
const shouldStream = this.shouldStream(filePath);
|
|
143
|
+
let size = 0;
|
|
144
|
+
try {
|
|
145
|
+
const stats = fs.statSync(filePath);
|
|
146
|
+
size = stats.size;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
// Size remains 0 if we can't read stats
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
path: filePath,
|
|
153
|
+
isBinary,
|
|
154
|
+
encoding,
|
|
155
|
+
size,
|
|
156
|
+
shouldStream,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Read file buffer for detection
|
|
161
|
+
*/
|
|
162
|
+
readFileBuffer(filePath, maxSize) {
|
|
163
|
+
const fd = fs.openSync(filePath, 'r');
|
|
164
|
+
try {
|
|
165
|
+
const stats = fs.fstatSync(fd);
|
|
166
|
+
const bufferSize = Math.min(stats.size, maxSize);
|
|
167
|
+
const buffer = Buffer.alloc(bufferSize);
|
|
168
|
+
fs.readSync(fd, buffer, 0, bufferSize, 0);
|
|
169
|
+
return buffer;
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
fs.closeSync(fd);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Check if buffer contains binary content
|
|
177
|
+
* Binary files typically have null bytes or high-bit characters
|
|
178
|
+
*/
|
|
179
|
+
isBinaryContent(buffer) {
|
|
180
|
+
// Check for null bytes (strong indicator of binary)
|
|
181
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
182
|
+
if (buffer[i] === 0) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Check for high percentage of non-ASCII characters
|
|
187
|
+
let nonAsciiCount = 0;
|
|
188
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
189
|
+
if (buffer[i] > 127) {
|
|
190
|
+
nonAsciiCount++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// If more than 30% non-ASCII, likely binary
|
|
194
|
+
const nonAsciiRatio = nonAsciiCount / buffer.length;
|
|
195
|
+
return nonAsciiRatio > 0.3;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Detect BOM (Byte Order Mark)
|
|
199
|
+
*/
|
|
200
|
+
detectBOM(buffer) {
|
|
201
|
+
// UTF-16 LE BOM: FF FE
|
|
202
|
+
if (buffer.length >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) {
|
|
203
|
+
return 'utf-16';
|
|
204
|
+
}
|
|
205
|
+
// UTF-16 BE BOM: FE FF
|
|
206
|
+
if (buffer.length >= 2 && buffer[0] === 0xFE && buffer[1] === 0xFF) {
|
|
207
|
+
return 'utf-16';
|
|
208
|
+
}
|
|
209
|
+
// UTF-8 BOM: EF BB BF
|
|
210
|
+
if (buffer.length >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {
|
|
211
|
+
return 'utf-8';
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Normalize encoding name from chardet to our FileEncoding type
|
|
217
|
+
*/
|
|
218
|
+
normalizeEncoding(detected) {
|
|
219
|
+
const lower = detected.toLowerCase();
|
|
220
|
+
if (lower.includes('utf-8') || lower.includes('utf8')) {
|
|
221
|
+
return 'utf-8';
|
|
222
|
+
}
|
|
223
|
+
if (lower.includes('utf-16') || lower.includes('utf16') || lower.includes('ucs-2')) {
|
|
224
|
+
return 'utf-16';
|
|
225
|
+
}
|
|
226
|
+
if (lower.includes('iso-8859') || lower.includes('latin')) {
|
|
227
|
+
return 'latin-1';
|
|
228
|
+
}
|
|
229
|
+
if (lower.includes('ascii')) {
|
|
230
|
+
return 'ascii';
|
|
231
|
+
}
|
|
232
|
+
// Default to UTF-8 for unknown encodings
|
|
233
|
+
return 'utf-8';
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.FileTypeDetector = FileTypeDetector;
|
|
237
|
+
//# sourceMappingURL=file-type-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-type-detector.js","sourceRoot":"","sources":["../../src/utils/file-type-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ignore Pattern Manager
|
|
3
|
+
* Manages file and directory ignore patterns from .avanaignore and CLI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for ignore patterns
|
|
7
|
+
*/
|
|
8
|
+
export interface IgnoreConfig {
|
|
9
|
+
defaultPatterns: string[];
|
|
10
|
+
avanaIgnorePatterns: string[];
|
|
11
|
+
cliPatterns: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Ignore Pattern Manager class
|
|
15
|
+
* Manages file and directory ignore patterns
|
|
16
|
+
*/
|
|
17
|
+
export declare class IgnorePatternManager {
|
|
18
|
+
private patterns;
|
|
19
|
+
private ignoredCount;
|
|
20
|
+
private verbose;
|
|
21
|
+
constructor(verbose?: boolean);
|
|
22
|
+
/**
|
|
23
|
+
* Load patterns from .avanaignore file if it exists
|
|
24
|
+
*/
|
|
25
|
+
loadPatterns(projectPath: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Add a pattern from CLI
|
|
28
|
+
*/
|
|
29
|
+
addPattern(pattern: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Add multiple patterns from CLI
|
|
32
|
+
*/
|
|
33
|
+
addPatterns(patterns: string[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* Check if a file path should be ignored
|
|
36
|
+
* @param relativePath - Path relative to project root
|
|
37
|
+
* @returns true if file should be ignored
|
|
38
|
+
*/
|
|
39
|
+
shouldIgnore(relativePath: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Get the count of ignored files
|
|
42
|
+
*/
|
|
43
|
+
getIgnoredCount(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Reset the ignored count
|
|
46
|
+
*/
|
|
47
|
+
resetIgnoredCount(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get all active patterns
|
|
50
|
+
*/
|
|
51
|
+
getPatterns(): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Get configuration breakdown
|
|
54
|
+
*/
|
|
55
|
+
getConfig(): IgnoreConfig;
|
|
56
|
+
/**
|
|
57
|
+
* Clear all non-default patterns
|
|
58
|
+
*/
|
|
59
|
+
clearCustomPatterns(): void;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ignore-pattern-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore-pattern-manager.d.ts","sourceRoot":"","sources":["../../src/utils/ignore-pattern-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAiED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,OAAO,CAAkB;gBAErB,OAAO,GAAE,OAAe;IAMpC;;OAEG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAwB9C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMxC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI5C;;;;OAIG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAmBlD;;OAEG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAIhC;;OAEG;IACI,WAAW,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACI,SAAS,IAAI,YAAY;IAQhC;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAGnC"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ignore Pattern Manager
|
|
4
|
+
* Manages file and directory ignore patterns from .avanaignore and CLI
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.IgnorePatternManager = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const minimatch_1 = require("minimatch");
|
|
44
|
+
/**
|
|
45
|
+
* Default patterns that should always be ignored
|
|
46
|
+
*/
|
|
47
|
+
const DEFAULT_IGNORE_PATTERNS = [
|
|
48
|
+
// Dependencies
|
|
49
|
+
'node_modules/**',
|
|
50
|
+
'vendor/**',
|
|
51
|
+
'bower_components/**',
|
|
52
|
+
// Build outputs
|
|
53
|
+
'dist/**',
|
|
54
|
+
'build/**',
|
|
55
|
+
'out/**',
|
|
56
|
+
'.next/**',
|
|
57
|
+
'target/**',
|
|
58
|
+
// Version control
|
|
59
|
+
'.git/**',
|
|
60
|
+
'.svn/**',
|
|
61
|
+
'.hg/**',
|
|
62
|
+
// IDE and editor files
|
|
63
|
+
'.vscode/**',
|
|
64
|
+
'.idea/**',
|
|
65
|
+
'*.swp',
|
|
66
|
+
'*.swo',
|
|
67
|
+
'*~',
|
|
68
|
+
// Test coverage
|
|
69
|
+
'coverage/**',
|
|
70
|
+
'.nyc_output/**',
|
|
71
|
+
// Lock files
|
|
72
|
+
'package-lock.json',
|
|
73
|
+
'yarn.lock',
|
|
74
|
+
'pnpm-lock.yaml',
|
|
75
|
+
'Gemfile.lock',
|
|
76
|
+
'Cargo.lock',
|
|
77
|
+
// Binary and media files
|
|
78
|
+
'*.png',
|
|
79
|
+
'*.jpg',
|
|
80
|
+
'*.jpeg',
|
|
81
|
+
'*.gif',
|
|
82
|
+
'*.ico',
|
|
83
|
+
'*.pdf',
|
|
84
|
+
'*.zip',
|
|
85
|
+
'*.tar',
|
|
86
|
+
'*.gz',
|
|
87
|
+
'*.exe',
|
|
88
|
+
'*.dll',
|
|
89
|
+
'*.so',
|
|
90
|
+
'*.dylib',
|
|
91
|
+
// Cache directories
|
|
92
|
+
'.cache/**',
|
|
93
|
+
'tmp/**',
|
|
94
|
+
'temp/**',
|
|
95
|
+
// Avana scan reports (avoid scanning own output)
|
|
96
|
+
'scan-reports/**',
|
|
97
|
+
];
|
|
98
|
+
/**
|
|
99
|
+
* Ignore Pattern Manager class
|
|
100
|
+
* Manages file and directory ignore patterns
|
|
101
|
+
*/
|
|
102
|
+
class IgnorePatternManager {
|
|
103
|
+
patterns = [];
|
|
104
|
+
ignoredCount = 0;
|
|
105
|
+
verbose = false;
|
|
106
|
+
constructor(verbose = false) {
|
|
107
|
+
this.verbose = verbose;
|
|
108
|
+
// Always include default patterns
|
|
109
|
+
this.patterns = [...DEFAULT_IGNORE_PATTERNS];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Load patterns from .avanaignore file if it exists
|
|
113
|
+
*/
|
|
114
|
+
loadPatterns(projectPath) {
|
|
115
|
+
const avanaIgnorePath = path.join(projectPath, '.avanaignore');
|
|
116
|
+
if (fs.existsSync(avanaIgnorePath)) {
|
|
117
|
+
try {
|
|
118
|
+
const content = fs.readFileSync(avanaIgnorePath, 'utf-8');
|
|
119
|
+
const filePatterns = content
|
|
120
|
+
.split('\n')
|
|
121
|
+
.map(line => line.trim())
|
|
122
|
+
.filter(line => line && !line.startsWith('#')); // Remove empty lines and comments
|
|
123
|
+
this.patterns.push(...filePatterns);
|
|
124
|
+
if (this.verbose) {
|
|
125
|
+
console.log(`Loaded ${filePatterns.length} patterns from .avanaignore`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (this.verbose) {
|
|
130
|
+
console.warn(`Warning: Could not read .avanaignore: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Add a pattern from CLI
|
|
137
|
+
*/
|
|
138
|
+
addPattern(pattern) {
|
|
139
|
+
if (pattern && pattern.trim()) {
|
|
140
|
+
this.patterns.push(pattern.trim());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Add multiple patterns from CLI
|
|
145
|
+
*/
|
|
146
|
+
addPatterns(patterns) {
|
|
147
|
+
patterns.forEach(pattern => this.addPattern(pattern));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if a file path should be ignored
|
|
151
|
+
* @param relativePath - Path relative to project root
|
|
152
|
+
* @returns true if file should be ignored
|
|
153
|
+
*/
|
|
154
|
+
shouldIgnore(relativePath) {
|
|
155
|
+
// Normalize path separators to forward slashes for consistent matching
|
|
156
|
+
const normalizedPath = relativePath.replace(/\\/g, '/');
|
|
157
|
+
for (const pattern of this.patterns) {
|
|
158
|
+
if ((0, minimatch_1.minimatch)(normalizedPath, pattern, { dot: true })) {
|
|
159
|
+
this.ignoredCount++;
|
|
160
|
+
if (this.verbose) {
|
|
161
|
+
console.log(`Ignoring ${relativePath} (matched pattern: ${pattern})`);
|
|
162
|
+
}
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get the count of ignored files
|
|
170
|
+
*/
|
|
171
|
+
getIgnoredCount() {
|
|
172
|
+
return this.ignoredCount;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Reset the ignored count
|
|
176
|
+
*/
|
|
177
|
+
resetIgnoredCount() {
|
|
178
|
+
this.ignoredCount = 0;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get all active patterns
|
|
182
|
+
*/
|
|
183
|
+
getPatterns() {
|
|
184
|
+
return [...this.patterns];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get configuration breakdown
|
|
188
|
+
*/
|
|
189
|
+
getConfig() {
|
|
190
|
+
return {
|
|
191
|
+
defaultPatterns: DEFAULT_IGNORE_PATTERNS,
|
|
192
|
+
avanaIgnorePatterns: this.patterns.filter(p => !DEFAULT_IGNORE_PATTERNS.includes(p)),
|
|
193
|
+
cliPatterns: [], // Would need to track separately if needed
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Clear all non-default patterns
|
|
198
|
+
*/
|
|
199
|
+
clearCustomPatterns() {
|
|
200
|
+
this.patterns = [...DEFAULT_IGNORE_PATTERNS];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
exports.IgnorePatternManager = IgnorePatternManager;
|
|
204
|
+
//# sourceMappingURL=ignore-pattern-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore-pattern-manager.js","sourceRoot":"","sources":["../../src/utils/ignore-pattern-manager.ts"],"names":[],"mappings":"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"}
|