code-auditor-mcp 1.12.0 → 1.13.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 (35) hide show
  1. package/README.md +6 -0
  2. package/dist/analyzers/solidAnalyzer.d.ts.map +1 -1
  3. package/dist/analyzers/solidAnalyzer.js +168 -28
  4. package/dist/analyzers/solidAnalyzer.js.map +1 -1
  5. package/dist/codeIndexDb.d.ts +26 -0
  6. package/dist/codeIndexDb.d.ts.map +1 -1
  7. package/dist/codeIndexDb.js +120 -6
  8. package/dist/codeIndexDb.js.map +1 -1
  9. package/dist/mcp-standalone.js +148 -3
  10. package/dist/mcp-standalone.js.map +1 -1
  11. package/dist/mcp-tools/whitelistTools.d.ts +77 -0
  12. package/dist/mcp-tools/whitelistTools.d.ts.map +1 -0
  13. package/dist/mcp-tools/whitelistTools.js +106 -0
  14. package/dist/mcp-tools/whitelistTools.js.map +1 -0
  15. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
  16. package/dist/mcp-tools/workflowGuide.js +37 -0
  17. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  18. package/dist/mcp.js +1 -1
  19. package/dist/mcp.js.map +1 -1
  20. package/dist/services/whitelistService.d.ts +66 -0
  21. package/dist/services/whitelistService.d.ts.map +1 -0
  22. package/dist/services/whitelistService.js +220 -0
  23. package/dist/services/whitelistService.js.map +1 -0
  24. package/dist/types/whitelist.d.ts +56 -0
  25. package/dist/types/whitelist.d.ts.map +1 -0
  26. package/dist/types/whitelist.js +19 -0
  27. package/dist/types/whitelist.js.map +1 -0
  28. package/dist/types.d.ts +1 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js +2 -0
  31. package/dist/types.js.map +1 -1
  32. package/dist/utils/componentResponsibility.d.ts.map +1 -1
  33. package/dist/utils/componentResponsibility.js +15 -5
  34. package/dist/utils/componentResponsibility.js.map +1 -1
  35. package/package.json +1 -1
package/README.md CHANGED
@@ -414,6 +414,12 @@ If you prefer to configure Claude Desktop manually:
414
414
  - **bulk_cleanup** - Remove index entries for deleted files
415
415
  - **deep_sync** - Deep synchronize all indexed files
416
416
 
417
+ #### Analyzer Configuration Tools
418
+ - **whitelist_get** - View current whitelist entries (platform APIs, dependencies, etc.)
419
+ - **whitelist_add** - Add exceptions for legitimate patterns (framework classes, etc.)
420
+ - **whitelist_update_status** - Enable/disable whitelist entries
421
+ - **whitelist_detect** - Auto-detect and suggest whitelist entries from package.json
422
+
417
423
  ### Advanced Search Functionality
418
424
 
419
425
  The `search_functions` tool (and `search_code` in MCP) supports powerful search operators that enable precise code discovery. You can use natural language queries combined with special operators to find exactly what you need.
@@ -1 +1 @@
1
- {"version":3,"file":"solidAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/solidAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEL,kBAAkB,EAClB,sBAAsB,EAMvB,MAAM,aAAa,CAAC;AAqBrB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IAEjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AA6lBD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC"}
1
+ {"version":3,"file":"solidAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/solidAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAEL,kBAAkB,EAClB,sBAAsB,EAMvB,MAAM,aAAa,CAAC;AAuBrB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IAEjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AA+vBD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC"}
@@ -8,15 +8,26 @@ import { createViolation, getNodePosition, findNodesOfType, getNodeName, travers
8
8
  import { isReactComponent, getComponentName, detectComponentType, extractHooks, extractPropTypes } from '../utils/reactDetection.js';
9
9
  import { detectComponentResponsibilities, areResponsibilitiesRelated } from '../utils/componentResponsibility.js';
10
10
  import { detectComponentPattern, getUnrelatedResponsibilities, DEFAULT_PATTERNS } from '../utils/componentPatterns.js';
11
+ import { CodeIndexDB } from '../codeIndexDB.js';
12
+ import { WhitelistType } from '../types/whitelist.js';
11
13
  /**
12
14
  * Default configuration
13
15
  */
16
+ // Database instance for whitelist checking
17
+ let dbInstance = null;
18
+ async function getDB() {
19
+ if (!dbInstance) {
20
+ dbInstance = CodeIndexDB.getInstance();
21
+ await dbInstance.initialize();
22
+ }
23
+ return dbInstance;
24
+ }
14
25
  const DEFAULT_CONFIG = {
15
- maxMethodsPerClass: 10,
26
+ maxMethodsPerClass: 15, // Increased from 10 - reasonable for service classes
16
27
  maxLinesPerMethod: 50,
17
28
  maxParametersPerMethod: 4,
18
29
  maxClassComplexity: 50,
19
- maxInterfaceMembers: 10,
30
+ maxInterfaceMembers: 20, // Increased from 15 - configuration interfaces need more flexibility
20
31
  checkDependencyInversion: true,
21
32
  checkInterfaceSegregation: true,
22
33
  checkLiskovSubstitution: true,
@@ -27,14 +38,31 @@ const DEFAULT_CONFIG = {
27
38
  customPatterns: undefined,
28
39
  enablePatternDetection: true
29
40
  },
30
- maxUnrelatedResponsibilities: 2,
41
+ maxUnrelatedResponsibilities: 3, // Increased from 2 - allow URL management + UI + state
31
42
  contextAwareThresholds: true
32
43
  };
44
+ /**
45
+ * Helper: Check if file is a test file
46
+ */
47
+ function isTestFile(filePath) {
48
+ const testPatterns = [
49
+ /\.test\.[jt]sx?$/,
50
+ /\.spec\.[jt]sx?$/,
51
+ /\.test-d\.ts$/,
52
+ /__tests__\//,
53
+ /test\//,
54
+ /tests\//,
55
+ /spec\//,
56
+ /\.e2e\.[jt]s$/,
57
+ ];
58
+ return testPatterns.some(pattern => pattern.test(filePath));
59
+ }
33
60
  /**
34
61
  * Analyze a file for SOLID violations
35
62
  */
36
- const analyzeFile = (filePath, sourceFile, config) => {
63
+ const analyzeFile = async (filePath, sourceFile, config) => {
37
64
  const violations = [];
65
+ const isTest = isTestFile(filePath);
38
66
  // Check Single Responsibility Principle for classes
39
67
  const classes = findNodesOfType(sourceFile, ts.isClassDeclaration);
40
68
  classes.forEach(cls => {
@@ -83,9 +111,9 @@ const analyzeFile = (filePath, sourceFile, config) => {
83
111
  violations.push(...checkInterfaceSegregation(iface, sourceFile, filePath, config));
84
112
  });
85
113
  }
86
- // Check Dependency Inversion Principle
87
- if (config.checkDependencyInversion) {
88
- violations.push(...checkDependencyInversion(sourceFile, filePath, config));
114
+ // Check Dependency Inversion Principle (skip for test files)
115
+ if (config.checkDependencyInversion && !isTest) {
116
+ violations.push(...await checkDependencyInversion(sourceFile, filePath, config));
89
117
  }
90
118
  return violations;
91
119
  };
@@ -251,16 +279,16 @@ function checkInterfaceSegregation(node, sourceFile, filePath, config) {
251
279
  /**
252
280
  * Check Dependency Inversion Principle
253
281
  */
254
- function checkDependencyInversion(sourceFile, filePath, config) {
282
+ async function checkDependencyInversion(sourceFile, filePath, config) {
255
283
  const violations = [];
256
284
  // Check for direct imports of concrete implementations
257
285
  const imports = findNodesOfType(sourceFile, ts.isImportDeclaration);
258
- imports.forEach(imp => {
286
+ for (const imp of imports) {
259
287
  const moduleSpecifier = imp.moduleSpecifier;
260
288
  if (ts.isStringLiteral(moduleSpecifier)) {
261
289
  const importPath = moduleSpecifier.text;
262
290
  // Check for concrete implementation imports
263
- if (isConcreteDependency(importPath)) {
291
+ if (await isConcreteDependency(importPath)) {
264
292
  const { line, column } = getNodePosition(sourceFile, imp);
265
293
  violations.push(createViolation({
266
294
  analyzer: 'solid',
@@ -278,13 +306,25 @@ function checkDependencyInversion(sourceFile, filePath, config) {
278
306
  }));
279
307
  }
280
308
  }
281
- });
309
+ }
282
310
  // Check for 'new' expressions (direct instantiation)
283
311
  const newExpressions = findNodesOfType(sourceFile, ts.isNewExpression);
284
- newExpressions.forEach(expr => {
312
+ for (const expr of newExpressions) {
285
313
  if (ts.isIdentifier(expr.expression)) {
286
314
  const className = expr.expression.text;
287
- if (isConcreteClass(className)) {
315
+ // Skip if this is inside a singleton pattern
316
+ if (isInsideSingletonPattern(expr)) {
317
+ continue;
318
+ }
319
+ // Skip if this is inside a factory method
320
+ if (isInsideFactoryMethod(expr)) {
321
+ continue;
322
+ }
323
+ // Skip Error classes - they need to be instantiated
324
+ if (isErrorClass(className)) {
325
+ continue;
326
+ }
327
+ if (await isConcreteClass(className)) {
288
328
  const { line, column } = getNodePosition(sourceFile, expr);
289
329
  violations.push(createViolation({
290
330
  analyzer: 'solid',
@@ -302,7 +342,7 @@ function checkDependencyInversion(sourceFile, filePath, config) {
302
342
  }));
303
343
  }
304
344
  }
305
- });
345
+ }
306
346
  return violations;
307
347
  }
308
348
  /**
@@ -360,25 +400,125 @@ function countIfElseChain(node) {
360
400
  /**
361
401
  * Helper: Check if import is a concrete dependency
362
402
  */
363
- function isConcreteDependency(importPath) {
364
- // Common concrete dependencies
365
- const concretePatterns = [
366
- 'mysql', 'postgres', 'mongodb', 'redis',
367
- 'express', 'axios', 'fs', 'path', 'crypto',
368
- 'aws-sdk', 'stripe', 'twilio'
369
- ];
370
- return concretePatterns.some(pattern => importPath.includes(pattern));
403
+ async function isConcreteDependency(importPath) {
404
+ try {
405
+ const db = await getDB();
406
+ // Skip relative paths (they're project internal) - don't flag these
407
+ if (importPath.startsWith('.') || importPath.startsWith('/')) {
408
+ return false; // Internal modules are fine
409
+ }
410
+ // Check if it's whitelisted directly
411
+ if (db.isWhitelisted(importPath, WhitelistType.NodeBuiltin) ||
412
+ db.isWhitelisted(importPath, WhitelistType.SharedLibrary) ||
413
+ db.isWhitelisted(importPath, WhitelistType.ProjectDependency) ||
414
+ db.isWhitelisted(importPath, WhitelistType.FrameworkClass)) {
415
+ return false;
416
+ }
417
+ // For Node.js built-ins, also check the base module name
418
+ // e.g., "fs/promises" -> check "fs", "node:fs/promises" -> check "fs"
419
+ const baseModule = importPath.replace(/^node:/, '').split('/')[0];
420
+ if (baseModule !== importPath) {
421
+ if (db.isWhitelisted(baseModule, WhitelistType.NodeBuiltin)) {
422
+ return false;
423
+ }
424
+ }
425
+ // If not whitelisted, it's potentially a concrete dependency
426
+ return true;
427
+ }
428
+ catch (error) {
429
+ // If database is not available, be conservative and don't flag
430
+ console.warn('Database not available for dependency check:', error);
431
+ return false;
432
+ }
433
+ }
434
+ /**
435
+ * Helper: Check if class name is an Error class
436
+ */
437
+ function isErrorClass(className) {
438
+ return className.endsWith('Error') ||
439
+ className.endsWith('Exception') ||
440
+ className === 'Error';
441
+ }
442
+ /**
443
+ * Helper: Check if node is inside a singleton pattern
444
+ */
445
+ function isInsideSingletonPattern(node) {
446
+ let parent = node.parent;
447
+ while (parent) {
448
+ // Check if we're inside a method named getInstance, instance, singleton, etc.
449
+ if (ts.isMethodDeclaration(parent) || ts.isFunctionDeclaration(parent)) {
450
+ const methodName = getNodeName(parent)?.toLowerCase();
451
+ if (methodName && (methodName.includes('getinstance') ||
452
+ methodName === 'instance' ||
453
+ methodName === 'singleton' ||
454
+ methodName === 'create' && parent.parent && ts.isClassDeclaration(parent.parent))) {
455
+ return true;
456
+ }
457
+ }
458
+ // Check if we're inside a static property initialization
459
+ if (ts.isPropertyDeclaration(parent) &&
460
+ parent.modifiers?.some(m => m.kind === ts.SyntaxKind.StaticKeyword)) {
461
+ const propName = getNodeName(parent)?.toLowerCase();
462
+ if (propName && (propName === 'instance' || propName === '_instance')) {
463
+ return true;
464
+ }
465
+ }
466
+ parent = parent.parent;
467
+ }
468
+ return false;
469
+ }
470
+ /**
471
+ * Helper: Check if node is inside a factory method
472
+ */
473
+ function isInsideFactoryMethod(node) {
474
+ let parent = node.parent;
475
+ while (parent) {
476
+ // Check if we're inside a method with 'create' or 'factory' in its name
477
+ if (ts.isMethodDeclaration(parent) || ts.isFunctionDeclaration(parent)) {
478
+ const methodName = getNodeName(parent)?.toLowerCase();
479
+ if (methodName && (methodName.includes('create') ||
480
+ methodName.includes('factory') ||
481
+ methodName.includes('make') ||
482
+ methodName.includes('build'))) {
483
+ return true;
484
+ }
485
+ }
486
+ // Check if we're inside a class with Factory in its name
487
+ if (ts.isClassDeclaration(parent)) {
488
+ const className = getNodeName(parent);
489
+ if (className && className.toLowerCase().includes('factory')) {
490
+ return true;
491
+ }
492
+ }
493
+ parent = parent.parent;
494
+ }
495
+ return false;
371
496
  }
372
497
  /**
373
498
  * Helper: Check if class name represents concrete implementation
374
499
  */
375
- function isConcreteClass(className) {
376
- // Skip common allowed instantiations
377
- const allowed = ['Date', 'Error', 'Array', 'Map', 'Set', 'Promise', 'RegExp'];
378
- if (allowed.includes(className))
500
+ async function isConcreteClass(className) {
501
+ try {
502
+ const db = await getDB();
503
+ // Check if it's whitelisted (platform API or framework class)
504
+ if (db.isWhitelisted(className, WhitelistType.PlatformAPI) ||
505
+ db.isWhitelisted(className, WhitelistType.FrameworkClass)) {
506
+ return false;
507
+ }
508
+ // Skip if it looks like a type/interface name
509
+ if (className.startsWith('I') && className.length > 2 && className[1] === className[1].toUpperCase()) {
510
+ return false; // e.g., IUserService
511
+ }
512
+ if (className.endsWith('Interface') || className.endsWith('Type') || className.endsWith('Schema')) {
513
+ return false;
514
+ }
515
+ return true;
516
+ }
517
+ catch (error) {
518
+ // If database is not available, be conservative and don't flag
519
+ console.warn('Database not available for class check:', error);
379
520
  return false;
380
- // Concrete if it doesn't start with 'I' or end with 'Interface'
381
- return !className.startsWith('I') && !className.endsWith('Interface');
521
+ }
382
522
  }
383
523
  /**
384
524
  * Check Component Single Responsibility Principle
@@ -1 +1 @@
1
- {"version":3,"file":"solidAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/solidAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solidAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/solidAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,12 @@
3
3
  * Pure JavaScript implementation with no native dependencies
4
4
  */
5
5
  import { EnhancedFunctionMetadata, FunctionMetadata, SearchResult, SearchOptions } from './types.js';
6
+ import { WhitelistEntry, WhitelistType, WhitelistStatus, WhitelistSuggestion } from './types/whitelist.js';
6
7
  export declare class CodeIndexDB {
7
8
  private static instance;
8
9
  private db;
9
10
  private functionsCollection;
11
+ private whitelistCollection;
10
12
  private searchIndex;
11
13
  private dbPath;
12
14
  private isInitialized;
@@ -193,5 +195,29 @@ export declare class CodeIndexDB {
193
195
  * Execute content search - search within function bodies
194
196
  */
195
197
  private executeContentSearch;
198
+ /**
199
+ * Initialize default whitelist entries
200
+ */
201
+ private initializeDefaultWhitelists;
202
+ /**
203
+ * Get all whitelist entries
204
+ */
205
+ getWhitelist(type?: WhitelistType, status?: WhitelistStatus): Promise<WhitelistEntry[]>;
206
+ /**
207
+ * Add a whitelist entry
208
+ */
209
+ addWhitelistEntry(entry: Omit<WhitelistEntry, 'id' | 'addedAt'>): Promise<WhitelistEntry>;
210
+ /**
211
+ * Update whitelist entry status
212
+ */
213
+ updateWhitelistStatus(name: string, status: WhitelistStatus): Promise<void>;
214
+ /**
215
+ * Check if a class/import is whitelisted
216
+ */
217
+ isWhitelisted(name: string, type: WhitelistType): boolean;
218
+ /**
219
+ * Detect and suggest new whitelist entries based on usage patterns
220
+ */
221
+ detectWhitelistCandidates(): Promise<WhitelistSuggestion[]>;
196
222
  }
197
223
  //# sourceMappingURL=codeIndexDB.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeIndexDB.d.ts","sourceRoot":"","sources":["../src/codeIndexDB.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,13 @@ import * as FlexSearch from 'flexsearch';
7
7
  import { promises as fs } from 'fs';
8
8
  import path from 'path';
9
9
  import { QueryParser } from './search/QueryParser.js';
10
+ import { WhitelistType, WhitelistStatus } from './types/whitelist.js';
10
11
  // Using SearchOptions and SearchResult from types.ts
11
12
  export class CodeIndexDB {
12
13
  static instance;
13
14
  db;
14
15
  functionsCollection = null;
16
+ whitelistCollection = null;
15
17
  searchIndex; // FlexSearch Document instance
16
18
  dbPath;
17
19
  isInitialized = false;
@@ -141,6 +143,15 @@ export class CodeIndexDB {
141
143
  this.db.addCollection('functions', {
142
144
  indices: ['name', 'filePath', 'language']
143
145
  });
146
+ // Get or create whitelist collection
147
+ this.whitelistCollection = this.db.getCollection('whitelist') ||
148
+ this.db.addCollection('whitelist', {
149
+ indices: ['name', 'type', 'status']
150
+ });
151
+ // Initialize default whitelists if empty
152
+ if (this.whitelistCollection.count() === 0) {
153
+ await this.initializeDefaultWhitelists();
154
+ }
144
155
  // Rebuild search index from existing data
145
156
  const existingDocs = this.functionsCollection.find();
146
157
  for (const doc of existingDocs) {
@@ -207,10 +218,11 @@ export class CodeIndexDB {
207
218
  async registerFunction(func) {
208
219
  this.ensureInitialized();
209
220
  try {
210
- // Check if function already exists
221
+ // Check if function already exists (use composite key: name + filePath + lineNumber)
211
222
  const existing = this.functionsCollection.findOne({
212
223
  name: func.name,
213
- filePath: func.filePath
224
+ filePath: func.filePath,
225
+ lineNumber: func.lineNumber
214
226
  });
215
227
  if (existing) {
216
228
  // Update existing
@@ -273,11 +285,14 @@ export class CodeIndexDB {
273
285
  try {
274
286
  // Get all currently indexed functions for this file
275
287
  const indexedFunctions = this.functionsCollection.find({ filePath });
276
- // Create a map of current functions by name for quick lookup
277
- const currentFunctionMap = new Map(currentFunctions.map(f => [f.name, f]));
288
+ // Create a map of current functions by composite key for quick lookup
289
+ const createKey = (f) => `${f.name}:${f.filePath}:${f.lineNumber}`;
290
+ const currentFunctionMap = new Map(currentFunctions.map(f => [createKey(f), f]));
278
291
  // Update or add functions
279
292
  for (const func of currentFunctions) {
280
- const existing = indexedFunctions.find(f => f.name === func.name);
293
+ const existing = indexedFunctions.find(f => f.name === func.name &&
294
+ f.filePath === func.filePath &&
295
+ f.lineNumber === func.lineNumber);
281
296
  if (existing) {
282
297
  // Update existing function
283
298
  Object.assign(existing, func);
@@ -296,7 +311,8 @@ export class CodeIndexDB {
296
311
  }
297
312
  // Remove functions that no longer exist in the file
298
313
  for (const indexed of indexedFunctions) {
299
- if (!currentFunctionMap.has(indexed.name)) {
314
+ const indexedKey = createKey(indexed);
315
+ if (!currentFunctionMap.has(indexedKey)) {
300
316
  // Function no longer exists, remove it
301
317
  this.functionsCollection.remove(indexed);
302
318
  this.searchIndex.remove(indexed.$loki);
@@ -1332,5 +1348,103 @@ export class CodeIndexDB {
1332
1348
  }
1333
1349
  return Array.from(resultsMap.values());
1334
1350
  }
1351
+ /**
1352
+ * Initialize default whitelist entries
1353
+ */
1354
+ async initializeDefaultWhitelists() {
1355
+ const defaultEntries = [
1356
+ // JavaScript built-ins
1357
+ { name: 'Date', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1358
+ { name: 'Error', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1359
+ { name: 'Array', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1360
+ { name: 'Map', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1361
+ { name: 'Set', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1362
+ { name: 'Promise', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1363
+ { name: 'RegExp', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'javascript', addedBy: 'system', addedAt: new Date() },
1364
+ // DOM/Browser APIs
1365
+ { name: 'URL', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'dom', addedBy: 'system', addedAt: new Date() },
1366
+ { name: 'URLSearchParams', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'dom', addedBy: 'system', addedAt: new Date() },
1367
+ { name: 'FormData', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'dom', addedBy: 'system', addedAt: new Date() },
1368
+ { name: 'Headers', type: WhitelistType.PlatformAPI, status: WhitelistStatus.Active, category: 'dom', addedBy: 'system', addedAt: new Date() },
1369
+ // Node.js built-ins
1370
+ { name: 'fs', type: WhitelistType.NodeBuiltin, status: WhitelistStatus.Active, patterns: ['fs', 'node:fs', 'fs/promises'], addedBy: 'system', addedAt: new Date() },
1371
+ { name: 'path', type: WhitelistType.NodeBuiltin, status: WhitelistStatus.Active, patterns: ['path', 'node:path'], addedBy: 'system', addedAt: new Date() },
1372
+ { name: 'crypto', type: WhitelistType.NodeBuiltin, status: WhitelistStatus.Active, patterns: ['crypto', 'node:crypto'], addedBy: 'system', addedAt: new Date() },
1373
+ ];
1374
+ for (const entry of defaultEntries) {
1375
+ this.whitelistCollection.insert(entry);
1376
+ }
1377
+ }
1378
+ /**
1379
+ * Get all whitelist entries
1380
+ */
1381
+ async getWhitelist(type, status) {
1382
+ this.ensureInitialized();
1383
+ const query = {};
1384
+ if (type)
1385
+ query.type = type;
1386
+ if (status)
1387
+ query.status = status;
1388
+ return this.whitelistCollection.find(query);
1389
+ }
1390
+ /**
1391
+ * Add a whitelist entry
1392
+ */
1393
+ async addWhitelistEntry(entry) {
1394
+ this.ensureInitialized();
1395
+ const newEntry = {
1396
+ ...entry,
1397
+ addedAt: new Date()
1398
+ };
1399
+ return this.whitelistCollection.insert(newEntry);
1400
+ }
1401
+ /**
1402
+ * Update whitelist entry status
1403
+ */
1404
+ async updateWhitelistStatus(name, status) {
1405
+ this.ensureInitialized();
1406
+ const entry = this.whitelistCollection.findOne({ name });
1407
+ if (entry) {
1408
+ entry.status = status;
1409
+ entry.updatedAt = new Date();
1410
+ this.whitelistCollection.update(entry);
1411
+ }
1412
+ }
1413
+ /**
1414
+ * Check if a class/import is whitelisted
1415
+ */
1416
+ isWhitelisted(name, type) {
1417
+ if (!this.isInitialized)
1418
+ return false;
1419
+ const entries = this.whitelistCollection.find({
1420
+ type,
1421
+ status: WhitelistStatus.Active
1422
+ });
1423
+ return entries.some(entry => {
1424
+ // Direct name match
1425
+ if (entry.name === name)
1426
+ return true;
1427
+ // Pattern match
1428
+ if (entry.patterns) {
1429
+ return entry.patterns.some(pattern => {
1430
+ if (pattern.includes('*')) {
1431
+ const regex = new RegExp(pattern.replace(/\*/g, '.*'));
1432
+ return regex.test(name);
1433
+ }
1434
+ return pattern === name;
1435
+ });
1436
+ }
1437
+ return false;
1438
+ });
1439
+ }
1440
+ /**
1441
+ * Detect and suggest new whitelist entries based on usage patterns
1442
+ */
1443
+ async detectWhitelistCandidates() {
1444
+ this.ensureInitialized();
1445
+ // This would analyze the codebase for patterns
1446
+ // For now, returning empty array - to be implemented
1447
+ return [];
1448
+ }
1335
1449
  }
1336
1450
  //# sourceMappingURL=codeIndexDB.js.map