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.
Files changed (100) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +21 -0
  3. package/README.md +584 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +153 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/install.d.ts +6 -0
  9. package/dist/commands/install.d.ts.map +1 -0
  10. package/dist/commands/install.js +101 -0
  11. package/dist/commands/install.js.map +1 -0
  12. package/dist/commands/scan.d.ts +19 -0
  13. package/dist/commands/scan.d.ts.map +1 -0
  14. package/dist/commands/scan.js +383 -0
  15. package/dist/commands/scan.js.map +1 -0
  16. package/dist/commands/uninstall.d.ts +6 -0
  17. package/dist/commands/uninstall.d.ts.map +1 -0
  18. package/dist/commands/uninstall.js +80 -0
  19. package/dist/commands/uninstall.js.map +1 -0
  20. package/dist/index.d.ts +97 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +475 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/rules/additional-patterns.d.ts +12 -0
  25. package/dist/rules/additional-patterns.d.ts.map +1 -0
  26. package/dist/rules/additional-patterns.js +170 -0
  27. package/dist/rules/additional-patterns.js.map +1 -0
  28. package/dist/rules/code-patterns.d.ts +26 -0
  29. package/dist/rules/code-patterns.d.ts.map +1 -0
  30. package/dist/rules/code-patterns.js +220 -0
  31. package/dist/rules/code-patterns.js.map +1 -0
  32. package/dist/rules/secret-patterns.d.ts +28 -0
  33. package/dist/rules/secret-patterns.d.ts.map +1 -0
  34. package/dist/rules/secret-patterns.js +1729 -0
  35. package/dist/rules/secret-patterns.js.map +1 -0
  36. package/dist/scanners/secret-scanner.d.ts +34 -0
  37. package/dist/scanners/secret-scanner.d.ts.map +1 -0
  38. package/dist/scanners/secret-scanner.js +281 -0
  39. package/dist/scanners/secret-scanner.js.map +1 -0
  40. package/dist/types/index.d.ts +116 -0
  41. package/dist/types/index.d.ts.map +1 -0
  42. package/dist/types/index.js +7 -0
  43. package/dist/types/index.js.map +1 -0
  44. package/dist/utils/error-handler.d.ts +126 -0
  45. package/dist/utils/error-handler.d.ts.map +1 -0
  46. package/dist/utils/error-handler.js +222 -0
  47. package/dist/utils/error-handler.js.map +1 -0
  48. package/dist/utils/exit-codes.d.ts +52 -0
  49. package/dist/utils/exit-codes.d.ts.map +1 -0
  50. package/dist/utils/exit-codes.js +89 -0
  51. package/dist/utils/exit-codes.js.map +1 -0
  52. package/dist/utils/file-stream-scanner.d.ts +31 -0
  53. package/dist/utils/file-stream-scanner.d.ts.map +1 -0
  54. package/dist/utils/file-stream-scanner.js +159 -0
  55. package/dist/utils/file-stream-scanner.js.map +1 -0
  56. package/dist/utils/file-type-detector.d.ts +45 -0
  57. package/dist/utils/file-type-detector.d.ts.map +1 -0
  58. package/dist/utils/file-type-detector.js +237 -0
  59. package/dist/utils/file-type-detector.js.map +1 -0
  60. package/dist/utils/ignore-pattern-manager.d.ts +61 -0
  61. package/dist/utils/ignore-pattern-manager.d.ts.map +1 -0
  62. package/dist/utils/ignore-pattern-manager.js +204 -0
  63. package/dist/utils/ignore-pattern-manager.js.map +1 -0
  64. package/dist/utils/json-output-formatter.d.ts +232 -0
  65. package/dist/utils/json-output-formatter.d.ts.map +1 -0
  66. package/dist/utils/json-output-formatter.js +367 -0
  67. package/dist/utils/json-output-formatter.js.map +1 -0
  68. package/dist/utils/logger.d.ts +181 -0
  69. package/dist/utils/logger.d.ts.map +1 -0
  70. package/dist/utils/logger.js +414 -0
  71. package/dist/utils/logger.js.map +1 -0
  72. package/dist/utils/markdown-output-formatter.d.ts +65 -0
  73. package/dist/utils/markdown-output-formatter.d.ts.map +1 -0
  74. package/dist/utils/markdown-output-formatter.js +316 -0
  75. package/dist/utils/markdown-output-formatter.js.map +1 -0
  76. package/dist/utils/memory-manager.d.ts +77 -0
  77. package/dist/utils/memory-manager.d.ts.map +1 -0
  78. package/dist/utils/memory-manager.js +157 -0
  79. package/dist/utils/memory-manager.js.map +1 -0
  80. package/dist/utils/parallel-scanner-worker.d.ts +19 -0
  81. package/dist/utils/parallel-scanner-worker.d.ts.map +1 -0
  82. package/dist/utils/parallel-scanner-worker.js +51 -0
  83. package/dist/utils/parallel-scanner-worker.js.map +1 -0
  84. package/dist/utils/parallel-scanner.d.ts +82 -0
  85. package/dist/utils/parallel-scanner.d.ts.map +1 -0
  86. package/dist/utils/parallel-scanner.js +229 -0
  87. package/dist/utils/parallel-scanner.js.map +1 -0
  88. package/dist/utils/pattern-validator.d.ts +108 -0
  89. package/dist/utils/pattern-validator.d.ts.map +1 -0
  90. package/dist/utils/pattern-validator.js +315 -0
  91. package/dist/utils/pattern-validator.js.map +1 -0
  92. package/dist/utils/progress-reporter.d.ts +68 -0
  93. package/dist/utils/progress-reporter.d.ts.map +1 -0
  94. package/dist/utils/progress-reporter.js +194 -0
  95. package/dist/utils/progress-reporter.js.map +1 -0
  96. package/dist/utils/result-cache.d.ts +99 -0
  97. package/dist/utils/result-cache.d.ts.map +1 -0
  98. package/dist/utils/result-cache.js +335 -0
  99. package/dist/utils/result-cache.js.map +1 -0
  100. package/package.json +80 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Result Cache
3
+ * Caches scan results to skip unchanged files for faster subsequent scans
4
+ */
5
+ export interface CacheEntry {
6
+ hash: string;
7
+ timestamp: number;
8
+ results: any[];
9
+ fileSize: number;
10
+ modifiedTime: number;
11
+ }
12
+ export interface CacheStats {
13
+ totalEntries: number;
14
+ hitCount: number;
15
+ missCount: number;
16
+ hitRate: number;
17
+ cacheSize: number;
18
+ expiredEntries: number;
19
+ }
20
+ export declare class ResultCache {
21
+ private readonly cacheDir;
22
+ private readonly cacheFile;
23
+ private cache;
24
+ private hitCount;
25
+ private missCount;
26
+ private readonly maxAge;
27
+ private isDirty;
28
+ constructor(cacheDir?: string, maxAgeHours?: number);
29
+ /**
30
+ * Get cached results for a file
31
+ */
32
+ get(filePath: string): any[] | null;
33
+ /**
34
+ * Set cached results for a file
35
+ */
36
+ set(filePath: string, results: any[]): void;
37
+ /**
38
+ * Clear all cached results
39
+ */
40
+ clear(): void;
41
+ /**
42
+ * Remove expired entries from cache
43
+ */
44
+ cleanup(): number;
45
+ /**
46
+ * Get cache statistics
47
+ */
48
+ getStats(): CacheStats;
49
+ /**
50
+ * Save cache to disk
51
+ */
52
+ save(): void;
53
+ /**
54
+ * Load cache from disk
55
+ */
56
+ private loadCache;
57
+ /**
58
+ * Ensure cache directory exists
59
+ */
60
+ private ensureCacheDirectory;
61
+ /**
62
+ * Generate cache key for a file path
63
+ */
64
+ private getCacheKey;
65
+ /**
66
+ * Calculate hash for file based on size and modification time
67
+ */
68
+ private calculateFileHash;
69
+ /**
70
+ * Get file statistics
71
+ */
72
+ private getFileStats;
73
+ /**
74
+ * Check if cache entry is expired
75
+ */
76
+ private isExpired;
77
+ /**
78
+ * Get cache directory path
79
+ */
80
+ getCacheDir(): string;
81
+ /**
82
+ * Check if cache is enabled (directory is writable)
83
+ */
84
+ isEnabled(): boolean;
85
+ /**
86
+ * Get cache file size in bytes
87
+ */
88
+ getCacheFileSize(): number;
89
+ }
90
+ export declare let resultCache: ResultCache | null;
91
+ /**
92
+ * Initialize global result cache
93
+ */
94
+ export declare function initializeResultCache(cacheDir?: string, maxAgeHours?: number): ResultCache;
95
+ /**
96
+ * Get the global result cache instance
97
+ */
98
+ export declare function getResultCache(): ResultCache | null;
99
+ //# sourceMappingURL=result-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.d.ts","sourceRoot":"","sources":["../../src/utils/result-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,OAAO,CAAkB;gBAErB,QAAQ,GAAE,MAAuB,EAAE,WAAW,GAAE,MAAW;IASvE;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI;IAgD1C;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI;IA4BlD;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB;;OAEG;IACI,OAAO,IAAI,MAAM;IAkBxB;;OAEG;IACI,QAAQ,IAAI,UAAU;IA6B7B;;OAEG;IACI,IAAI,IAAI,IAAI;IAuBnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACI,WAAW,IAAI,MAAM;IAI5B;;OAEG;IACI,SAAS,IAAI,OAAO;IAY3B;;OAEG;IACI,gBAAgB,IAAI,MAAM;CAUlC;AAGD,eAAO,IAAI,WAAW,EAAE,WAAW,GAAG,IAAW,CAAC;AAElD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAG1F;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD"}
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ /**
3
+ * Result Cache
4
+ * Caches scan results to skip unchanged files for faster subsequent scans
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.resultCache = exports.ResultCache = void 0;
41
+ exports.initializeResultCache = initializeResultCache;
42
+ exports.getResultCache = getResultCache;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const crypto = __importStar(require("crypto"));
46
+ class ResultCache {
47
+ cacheDir;
48
+ cacheFile;
49
+ cache = new Map();
50
+ hitCount = 0;
51
+ missCount = 0;
52
+ maxAge; // in milliseconds
53
+ isDirty = false;
54
+ constructor(cacheDir = '.avana-cache', maxAgeHours = 24) {
55
+ this.cacheDir = path.resolve(cacheDir);
56
+ this.cacheFile = path.join(this.cacheDir, 'scan-results.json');
57
+ this.maxAge = maxAgeHours * 60 * 60 * 1000; // Convert hours to milliseconds
58
+ this.ensureCacheDirectory();
59
+ this.loadCache();
60
+ }
61
+ /**
62
+ * Get cached results for a file
63
+ */
64
+ get(filePath) {
65
+ try {
66
+ const absolutePath = path.resolve(filePath);
67
+ const cacheKey = this.getCacheKey(absolutePath);
68
+ const entry = this.cache.get(cacheKey);
69
+ if (!entry) {
70
+ this.missCount++;
71
+ return null;
72
+ }
73
+ // Check if entry is expired
74
+ if (this.isExpired(entry)) {
75
+ this.cache.delete(cacheKey);
76
+ this.isDirty = true;
77
+ this.missCount++;
78
+ return null;
79
+ }
80
+ // Check if file has been modified
81
+ const fileStats = this.getFileStats(absolutePath);
82
+ if (!fileStats) {
83
+ // File doesn't exist anymore, remove from cache
84
+ this.cache.delete(cacheKey);
85
+ this.isDirty = true;
86
+ this.missCount++;
87
+ return null;
88
+ }
89
+ const currentHash = this.calculateFileHash(fileStats.size, fileStats.mtime);
90
+ if (entry.hash !== currentHash) {
91
+ // File has been modified, remove from cache
92
+ this.cache.delete(cacheKey);
93
+ this.isDirty = true;
94
+ this.missCount++;
95
+ return null;
96
+ }
97
+ // Cache hit!
98
+ this.hitCount++;
99
+ return entry.results;
100
+ }
101
+ catch (error) {
102
+ // On any error, treat as cache miss
103
+ this.missCount++;
104
+ return null;
105
+ }
106
+ }
107
+ /**
108
+ * Set cached results for a file
109
+ */
110
+ set(filePath, results) {
111
+ try {
112
+ const absolutePath = path.resolve(filePath);
113
+ const fileStats = this.getFileStats(absolutePath);
114
+ if (!fileStats) {
115
+ return; // Can't cache if file doesn't exist
116
+ }
117
+ const cacheKey = this.getCacheKey(absolutePath);
118
+ const hash = this.calculateFileHash(fileStats.size, fileStats.mtime);
119
+ const entry = {
120
+ hash,
121
+ timestamp: Date.now(),
122
+ results: results,
123
+ fileSize: fileStats.size,
124
+ modifiedTime: fileStats.mtime
125
+ };
126
+ this.cache.set(cacheKey, entry);
127
+ this.isDirty = true;
128
+ }
129
+ catch (error) {
130
+ // Silently fail on cache set errors
131
+ // Caching is optional and shouldn't break the main functionality
132
+ }
133
+ }
134
+ /**
135
+ * Clear all cached results
136
+ */
137
+ clear() {
138
+ this.cache.clear();
139
+ this.hitCount = 0;
140
+ this.missCount = 0;
141
+ this.isDirty = true;
142
+ }
143
+ /**
144
+ * Remove expired entries from cache
145
+ */
146
+ cleanup() {
147
+ let removedCount = 0;
148
+ const now = Date.now();
149
+ for (const [key, entry] of this.cache.entries()) {
150
+ if (this.isExpired(entry, now)) {
151
+ this.cache.delete(key);
152
+ removedCount++;
153
+ }
154
+ }
155
+ if (removedCount > 0) {
156
+ this.isDirty = true;
157
+ }
158
+ return removedCount;
159
+ }
160
+ /**
161
+ * Get cache statistics
162
+ */
163
+ getStats() {
164
+ const totalRequests = this.hitCount + this.missCount;
165
+ const hitRate = totalRequests > 0 ? (this.hitCount / totalRequests) * 100 : 0;
166
+ // Calculate cache size in bytes (approximate)
167
+ let cacheSize = 0;
168
+ for (const entry of this.cache.values()) {
169
+ cacheSize += JSON.stringify(entry).length * 2; // Rough estimate (UTF-16)
170
+ }
171
+ // Count expired entries
172
+ const now = Date.now();
173
+ let expiredEntries = 0;
174
+ for (const entry of this.cache.values()) {
175
+ if (this.isExpired(entry, now)) {
176
+ expiredEntries++;
177
+ }
178
+ }
179
+ return {
180
+ totalEntries: this.cache.size,
181
+ hitCount: this.hitCount,
182
+ missCount: this.missCount,
183
+ hitRate: Math.round(hitRate * 100) / 100, // Round to 2 decimal places
184
+ cacheSize,
185
+ expiredEntries
186
+ };
187
+ }
188
+ /**
189
+ * Save cache to disk
190
+ */
191
+ save() {
192
+ if (!this.isDirty) {
193
+ return; // No changes to save
194
+ }
195
+ try {
196
+ // Clean up expired entries before saving
197
+ this.cleanup();
198
+ const cacheData = {
199
+ version: '1.0',
200
+ timestamp: Date.now(),
201
+ entries: Array.from(this.cache.entries())
202
+ };
203
+ fs.writeFileSync(this.cacheFile, JSON.stringify(cacheData, null, 2), 'utf8');
204
+ this.isDirty = false;
205
+ }
206
+ catch (error) {
207
+ // Silently fail on save errors
208
+ // Caching is optional and shouldn't break the main functionality
209
+ }
210
+ }
211
+ /**
212
+ * Load cache from disk
213
+ */
214
+ loadCache() {
215
+ try {
216
+ if (!fs.existsSync(this.cacheFile)) {
217
+ return; // No cache file exists yet
218
+ }
219
+ const cacheData = JSON.parse(fs.readFileSync(this.cacheFile, 'utf8'));
220
+ if (cacheData.version === '1.0' && Array.isArray(cacheData.entries)) {
221
+ this.cache = new Map(cacheData.entries);
222
+ // Clean up expired entries on load
223
+ this.cleanup();
224
+ }
225
+ }
226
+ catch (error) {
227
+ // If cache file is corrupted, start with empty cache
228
+ this.cache.clear();
229
+ }
230
+ }
231
+ /**
232
+ * Ensure cache directory exists
233
+ */
234
+ ensureCacheDirectory() {
235
+ try {
236
+ if (!fs.existsSync(this.cacheDir)) {
237
+ fs.mkdirSync(this.cacheDir, { recursive: true });
238
+ }
239
+ }
240
+ catch (error) {
241
+ // If we can't create cache directory, caching will be disabled
242
+ // This is acceptable as caching is optional
243
+ }
244
+ }
245
+ /**
246
+ * Generate cache key for a file path
247
+ */
248
+ getCacheKey(absolutePath) {
249
+ // Use the absolute path as the cache key
250
+ // Normalize path separators for cross-platform compatibility
251
+ return absolutePath.replace(/\\/g, '/');
252
+ }
253
+ /**
254
+ * Calculate hash for file based on size and modification time
255
+ */
256
+ calculateFileHash(size, mtime) {
257
+ // Use file size and modification time to create a hash
258
+ // This is much faster than reading the entire file content
259
+ const data = `${size}-${mtime}`;
260
+ return crypto.createHash('md5').update(data).digest('hex');
261
+ }
262
+ /**
263
+ * Get file statistics
264
+ */
265
+ getFileStats(filePath) {
266
+ try {
267
+ const stats = fs.statSync(filePath);
268
+ return {
269
+ size: stats.size,
270
+ mtime: stats.mtime.getTime()
271
+ };
272
+ }
273
+ catch (error) {
274
+ return null;
275
+ }
276
+ }
277
+ /**
278
+ * Check if cache entry is expired
279
+ */
280
+ isExpired(entry, now = Date.now()) {
281
+ return (now - entry.timestamp) > this.maxAge;
282
+ }
283
+ /**
284
+ * Get cache directory path
285
+ */
286
+ getCacheDir() {
287
+ return this.cacheDir;
288
+ }
289
+ /**
290
+ * Check if cache is enabled (directory is writable)
291
+ */
292
+ isEnabled() {
293
+ try {
294
+ // Try to write a test file to check if directory is writable
295
+ const testFile = path.join(this.cacheDir, '.test');
296
+ fs.writeFileSync(testFile, 'test');
297
+ fs.unlinkSync(testFile);
298
+ return true;
299
+ }
300
+ catch (error) {
301
+ return false;
302
+ }
303
+ }
304
+ /**
305
+ * Get cache file size in bytes
306
+ */
307
+ getCacheFileSize() {
308
+ try {
309
+ if (fs.existsSync(this.cacheFile)) {
310
+ return fs.statSync(this.cacheFile).size;
311
+ }
312
+ return 0;
313
+ }
314
+ catch (error) {
315
+ return 0;
316
+ }
317
+ }
318
+ }
319
+ exports.ResultCache = ResultCache;
320
+ // Global result cache instance
321
+ exports.resultCache = null;
322
+ /**
323
+ * Initialize global result cache
324
+ */
325
+ function initializeResultCache(cacheDir, maxAgeHours) {
326
+ exports.resultCache = new ResultCache(cacheDir, maxAgeHours);
327
+ return exports.resultCache;
328
+ }
329
+ /**
330
+ * Get the global result cache instance
331
+ */
332
+ function getResultCache() {
333
+ return exports.resultCache;
334
+ }
335
+ //# sourceMappingURL=result-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.js","sourceRoot":"","sources":["../../src/utils/result-cache.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "avana-cli",
3
+ "version": "2.11.0",
4
+ "description": "A robust, production-ready CLI tool for detecting secrets and credentials in your codebase",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "avana-cli": "./dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "scan": "node dist/cli.js scan",
14
+ "scan:verbose": "node dist/cli.js scan --verbose",
15
+ "prepare": "husky || true",
16
+ "test": "vitest run",
17
+ "test:unit-only": "vitest run tests/unit",
18
+ "test:property": "vitest run tests/property",
19
+ "test:integration": "vitest run tests/integration",
20
+ "test:watch": "vitest",
21
+ "test:coverage": "vitest run --coverage",
22
+ "lint": "eslint src --ext .ts",
23
+ "format": "prettier --write \"src/**/*.ts\"",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "security",
28
+ "secrets",
29
+ "scanner",
30
+ "cli",
31
+ "credentials",
32
+ "api-keys",
33
+ "git-hooks",
34
+ "devops",
35
+ "security-tools",
36
+ "secret-detection",
37
+ "credential-scanning",
38
+ "pre-commit",
39
+ "security-scanner"
40
+ ],
41
+ "author": "Innocent",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/innookeke/avana-cli.git"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/innookeke/avana-cli/issues"
49
+ },
50
+ "homepage": "https://github.com/innookeke/avana-cli#readme",
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ },
54
+ "dependencies": {
55
+ "husky": "^9.0.0",
56
+ "minimatch": "^10.1.1"
57
+ },
58
+ "devDependencies": {
59
+ "@types/cli-progress": "^3.11.6",
60
+ "@types/minimatch": "^5.1.2",
61
+ "@types/node": "^20.14.0",
62
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
63
+ "@typescript-eslint/parser": "^7.0.0",
64
+ "@vitest/coverage-v8": "^2.0.0",
65
+ "chardet": "^2.1.1",
66
+ "cli-progress": "^3.12.0",
67
+ "eslint": "^8.57.0",
68
+ "fast-check": "^3.23.2",
69
+ "iconv-lite": "^0.7.2",
70
+ "prettier": "^3.2.0",
71
+ "typescript": "^5.5.0",
72
+ "vitest": "^2.1.9"
73
+ },
74
+ "files": [
75
+ "dist",
76
+ "README.md",
77
+ "LICENSE",
78
+ "CHANGELOG.md"
79
+ ]
80
+ }