code-auditor-mcp 1.12.1 → 1.13.1

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 +167 -51
  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 +109 -0
  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;AAsuBD;;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,40 +279,28 @@ 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
- // Check for direct imports of concrete implementations
257
- const imports = findNodesOfType(sourceFile, ts.isImportDeclaration);
258
- imports.forEach(imp => {
259
- const moduleSpecifier = imp.moduleSpecifier;
260
- if (ts.isStringLiteral(moduleSpecifier)) {
261
- const importPath = moduleSpecifier.text;
262
- // Check for concrete implementation imports
263
- if (isConcreteDependency(importPath)) {
264
- const { line, column } = getNodePosition(sourceFile, imp);
265
- violations.push(createViolation({
266
- analyzer: 'solid',
267
- file: filePath,
268
- line,
269
- column,
270
- severity: 'warning',
271
- message: `Direct import of concrete implementation: "${importPath}"`,
272
- type: 'solid',
273
- principle: 'dependency-inversion',
274
- recommendation: 'Depend on abstractions (interfaces) rather than concrete implementations',
275
- details: {
276
- importPath
277
- }
278
- }));
279
- }
280
- }
281
- });
284
+ // Skip import checking - DI principle should focus on instantiation, not imports
285
+ // Imports are necessary and checking them creates too many false positives
282
286
  // Check for 'new' expressions (direct instantiation)
283
287
  const newExpressions = findNodesOfType(sourceFile, ts.isNewExpression);
284
- newExpressions.forEach(expr => {
288
+ for (const expr of newExpressions) {
285
289
  if (ts.isIdentifier(expr.expression)) {
286
290
  const className = expr.expression.text;
287
- if (isConcreteClass(className)) {
291
+ // Skip if this is inside a singleton pattern
292
+ if (isInsideSingletonPattern(expr)) {
293
+ continue;
294
+ }
295
+ // Skip if this is inside a factory method
296
+ if (isInsideFactoryMethod(expr)) {
297
+ continue;
298
+ }
299
+ // Skip Error classes - they need to be instantiated
300
+ if (isErrorClass(className)) {
301
+ continue;
302
+ }
303
+ if (await isConcreteClass(className)) {
288
304
  const { line, column } = getNodePosition(sourceFile, expr);
289
305
  violations.push(createViolation({
290
306
  analyzer: 'solid',
@@ -302,7 +318,7 @@ function checkDependencyInversion(sourceFile, filePath, config) {
302
318
  }));
303
319
  }
304
320
  }
305
- });
321
+ }
306
322
  return violations;
307
323
  }
308
324
  /**
@@ -360,25 +376,125 @@ function countIfElseChain(node) {
360
376
  /**
361
377
  * Helper: Check if import is a concrete dependency
362
378
  */
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));
379
+ async function isConcreteDependency(importPath) {
380
+ try {
381
+ const db = await getDB();
382
+ // Skip relative paths (they're project internal) - don't flag these
383
+ if (importPath.startsWith('.') || importPath.startsWith('/')) {
384
+ return false; // Internal modules are fine
385
+ }
386
+ // Check if it's whitelisted directly
387
+ if (db.isWhitelisted(importPath, WhitelistType.NodeBuiltin) ||
388
+ db.isWhitelisted(importPath, WhitelistType.SharedLibrary) ||
389
+ db.isWhitelisted(importPath, WhitelistType.ProjectDependency) ||
390
+ db.isWhitelisted(importPath, WhitelistType.FrameworkClass)) {
391
+ return false;
392
+ }
393
+ // For Node.js built-ins, also check the base module name
394
+ // e.g., "fs/promises" -> check "fs", "node:fs/promises" -> check "fs"
395
+ const baseModule = importPath.replace(/^node:/, '').split('/')[0];
396
+ if (baseModule !== importPath) {
397
+ if (db.isWhitelisted(baseModule, WhitelistType.NodeBuiltin)) {
398
+ return false;
399
+ }
400
+ }
401
+ // If not whitelisted, it's potentially a concrete dependency
402
+ return true;
403
+ }
404
+ catch (error) {
405
+ // If database is not available, be conservative and don't flag
406
+ console.warn('Database not available for dependency check:', error);
407
+ return false;
408
+ }
409
+ }
410
+ /**
411
+ * Helper: Check if class name is an Error class
412
+ */
413
+ function isErrorClass(className) {
414
+ return className.endsWith('Error') ||
415
+ className.endsWith('Exception') ||
416
+ className === 'Error';
417
+ }
418
+ /**
419
+ * Helper: Check if node is inside a singleton pattern
420
+ */
421
+ function isInsideSingletonPattern(node) {
422
+ let parent = node.parent;
423
+ while (parent) {
424
+ // Check if we're inside a method named getInstance, instance, singleton, etc.
425
+ if (ts.isMethodDeclaration(parent) || ts.isFunctionDeclaration(parent)) {
426
+ const methodName = getNodeName(parent)?.toLowerCase();
427
+ if (methodName && (methodName.includes('getinstance') ||
428
+ methodName === 'instance' ||
429
+ methodName === 'singleton' ||
430
+ methodName === 'create' && parent.parent && ts.isClassDeclaration(parent.parent))) {
431
+ return true;
432
+ }
433
+ }
434
+ // Check if we're inside a static property initialization
435
+ if (ts.isPropertyDeclaration(parent) &&
436
+ parent.modifiers?.some(m => m.kind === ts.SyntaxKind.StaticKeyword)) {
437
+ const propName = getNodeName(parent)?.toLowerCase();
438
+ if (propName && (propName === 'instance' || propName === '_instance')) {
439
+ return true;
440
+ }
441
+ }
442
+ parent = parent.parent;
443
+ }
444
+ return false;
445
+ }
446
+ /**
447
+ * Helper: Check if node is inside a factory method
448
+ */
449
+ function isInsideFactoryMethod(node) {
450
+ let parent = node.parent;
451
+ while (parent) {
452
+ // Check if we're inside a method with 'create' or 'factory' in its name
453
+ if (ts.isMethodDeclaration(parent) || ts.isFunctionDeclaration(parent)) {
454
+ const methodName = getNodeName(parent)?.toLowerCase();
455
+ if (methodName && (methodName.includes('create') ||
456
+ methodName.includes('factory') ||
457
+ methodName.includes('make') ||
458
+ methodName.includes('build'))) {
459
+ return true;
460
+ }
461
+ }
462
+ // Check if we're inside a class with Factory in its name
463
+ if (ts.isClassDeclaration(parent)) {
464
+ const className = getNodeName(parent);
465
+ if (className && className.toLowerCase().includes('factory')) {
466
+ return true;
467
+ }
468
+ }
469
+ parent = parent.parent;
470
+ }
471
+ return false;
371
472
  }
372
473
  /**
373
474
  * Helper: Check if class name represents concrete implementation
374
475
  */
375
- function isConcreteClass(className) {
376
- // Skip common allowed instantiations
377
- const allowed = ['Date', 'Error', 'Array', 'Map', 'Set', 'Promise', 'RegExp'];
378
- if (allowed.includes(className))
476
+ async function isConcreteClass(className) {
477
+ try {
478
+ const db = await getDB();
479
+ // Check if it's whitelisted (platform API or framework class)
480
+ if (db.isWhitelisted(className, WhitelistType.PlatformAPI) ||
481
+ db.isWhitelisted(className, WhitelistType.FrameworkClass)) {
482
+ return false;
483
+ }
484
+ // Skip if it looks like a type/interface name
485
+ if (className.startsWith('I') && className.length > 2 && className[1] === className[1].toUpperCase()) {
486
+ return false; // e.g., IUserService
487
+ }
488
+ if (className.endsWith('Interface') || className.endsWith('Type') || className.endsWith('Schema')) {
489
+ return false;
490
+ }
491
+ return true;
492
+ }
493
+ catch (error) {
494
+ // If database is not available, be conservative and don't flag
495
+ console.warn('Database not available for class check:', error);
379
496
  return false;
380
- // Concrete if it doesn't start with 'I' or end with 'Interface'
381
- return !className.startsWith('I') && !className.endsWith('Interface');
497
+ }
382
498
  }
383
499
  /**
384
500
  * 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) {
@@ -1337,5 +1348,103 @@ export class CodeIndexDB {
1337
1348
  }
1338
1349
  return Array.from(resultsMap.values());
1339
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
+ }
1340
1449
  }
1341
1450
  //# sourceMappingURL=codeIndexDB.js.map