code-auditor-mcp 3.4.12 → 3.4.13

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 (245) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/dist/analyzers/__verify_self_probe.d.ts +2 -0
  3. package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
  4. package/dist/analyzers/__verify_self_probe.js +5 -0
  5. package/dist/analyzers/__verify_self_probe.js.map +1 -0
  6. package/dist/analyzers/analyzerUtils.d.ts +34 -1
  7. package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
  8. package/dist/analyzers/analyzerUtils.js +61 -22
  9. package/dist/analyzers/analyzerUtils.js.map +1 -1
  10. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
  11. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  12. package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
  13. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  14. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
  15. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  16. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
  17. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  18. package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
  19. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  20. package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
  21. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  22. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
  23. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
  25. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  26. package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
  27. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/documentationAnalyzer.js +259 -198
  29. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  30. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  31. package/dist/analyzers/invariantsAnalyzer.js +57 -50
  32. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  33. package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
  34. package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
  35. package/dist/analyzers/orm/adapterRegistry.js +10 -0
  36. package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
  37. package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
  38. package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
  39. package/dist/analyzers/orm/drizzleAdapter.js +42 -44
  40. package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
  41. package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
  42. package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
  43. package/dist/analyzers/orm/prismaAdapter.js +30 -0
  44. package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
  45. package/dist/analyzers/provenance.d.ts +62 -2
  46. package/dist/analyzers/provenance.d.ts.map +1 -1
  47. package/dist/analyzers/provenance.js +443 -349
  48. package/dist/analyzers/provenance.js.map +1 -1
  49. package/dist/analyzers/reactAnalyzer.d.ts +11 -0
  50. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  51. package/dist/analyzers/reactAnalyzer.js +188 -125
  52. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  53. package/dist/analyzers/ruleRegistry.d.ts +110 -1
  54. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  55. package/dist/analyzers/ruleRegistry.js +1714 -124
  56. package/dist/analyzers/ruleRegistry.js.map +1 -1
  57. package/dist/analyzers/ruleTiming.d.ts +54 -0
  58. package/dist/analyzers/ruleTiming.d.ts.map +1 -0
  59. package/dist/analyzers/ruleTiming.js +71 -0
  60. package/dist/analyzers/ruleTiming.js.map +1 -0
  61. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
  62. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  63. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
  64. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  65. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
  66. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  67. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
  68. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  69. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +17 -202
  70. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  71. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1073 -1121
  72. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  73. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
  74. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  75. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
  76. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  77. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
  78. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  79. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
  80. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  81. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -214
  82. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  83. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1521
  84. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  85. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
  86. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  87. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -480
  88. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  89. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
  90. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
  91. package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
  92. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
  93. package/dist/analyzers/universal/schema/config.d.ts +31 -0
  94. package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
  95. package/dist/analyzers/universal/schema/config.js +57 -0
  96. package/dist/analyzers/universal/schema/config.js.map +1 -0
  97. package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
  98. package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
  99. package/dist/analyzers/universal/schema/discovery.js +616 -0
  100. package/dist/analyzers/universal/schema/discovery.js.map +1 -0
  101. package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
  102. package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
  103. package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
  104. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
  105. package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
  106. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
  107. package/dist/analyzers/universal/schema/migrations.js +238 -0
  108. package/dist/analyzers/universal/schema/migrations.js.map +1 -0
  109. package/dist/analyzers/universal/schema/types.d.ts +131 -0
  110. package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
  111. package/dist/analyzers/universal/schema/types.js +10 -0
  112. package/dist/analyzers/universal/schema/types.js.map +1 -0
  113. package/dist/analyzers/universal/schema/violations.d.ts +44 -0
  114. package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
  115. package/dist/analyzers/universal/schema/violations.js +54 -0
  116. package/dist/analyzers/universal/schema/violations.js.map +1 -0
  117. package/dist/auditRunner.d.ts.map +1 -1
  118. package/dist/auditRunner.js +89 -13
  119. package/dist/auditRunner.js.map +1 -1
  120. package/dist/cli.js +315 -40
  121. package/dist/cli.js.map +1 -1
  122. package/dist/config/configLoader.d.ts.map +1 -1
  123. package/dist/config/configLoader.js +9 -7
  124. package/dist/config/configLoader.js.map +1 -1
  125. package/dist/config/defaults.d.ts +12 -3
  126. package/dist/config/defaults.d.ts.map +1 -1
  127. package/dist/config/defaults.js +15 -5
  128. package/dist/config/defaults.js.map +1 -1
  129. package/dist/config/effectiveConfig.d.ts +75 -0
  130. package/dist/config/effectiveConfig.d.ts.map +1 -0
  131. package/dist/config/effectiveConfig.js +213 -0
  132. package/dist/config/effectiveConfig.js.map +1 -0
  133. package/dist/config/pathProfiles.d.ts +7 -4
  134. package/dist/config/pathProfiles.d.ts.map +1 -1
  135. package/dist/config/pathProfiles.js +8 -10
  136. package/dist/config/pathProfiles.js.map +1 -1
  137. package/dist/config/thresholdRationales.d.ts +45 -0
  138. package/dist/config/thresholdRationales.d.ts.map +1 -0
  139. package/dist/config/thresholdRationales.js +67 -0
  140. package/dist/config/thresholdRationales.js.map +1 -0
  141. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  142. package/dist/conventions/conventionMiner.js +6 -2
  143. package/dist/conventions/conventionMiner.js.map +1 -1
  144. package/dist/enforcement/diffGate.d.ts +55 -0
  145. package/dist/enforcement/diffGate.d.ts.map +1 -0
  146. package/dist/enforcement/diffGate.js +136 -0
  147. package/dist/enforcement/diffGate.js.map +1 -0
  148. package/dist/enforcement/gate.d.ts +36 -0
  149. package/dist/enforcement/gate.d.ts.map +1 -0
  150. package/dist/enforcement/gate.js +72 -0
  151. package/dist/enforcement/gate.js.map +1 -0
  152. package/dist/enforcement/suppressions.d.ts +41 -0
  153. package/dist/enforcement/suppressions.d.ts.map +1 -0
  154. package/dist/enforcement/suppressions.js +170 -0
  155. package/dist/enforcement/suppressions.js.map +1 -0
  156. package/dist/fingerprint.d.ts.map +1 -1
  157. package/dist/fingerprint.js +4 -1
  158. package/dist/fingerprint.js.map +1 -1
  159. package/dist/invariants/ruleEngine.d.ts +3 -4
  160. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  161. package/dist/invariants/ruleEngine.js +2 -2
  162. package/dist/invariants/ruleEngine.js.map +1 -1
  163. package/dist/languages/LanguageOrchestrator.d.ts +14 -0
  164. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  165. package/dist/languages/LanguageOrchestrator.js +93 -55
  166. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  167. package/dist/languages/LanguageRegistry.d.ts +8 -0
  168. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  169. package/dist/languages/LanguageRegistry.js +8 -0
  170. package/dist/languages/LanguageRegistry.js.map +1 -1
  171. package/dist/languages/RuntimeManager.d.ts +82 -60
  172. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  173. package/dist/languages/RuntimeManager.js +404 -349
  174. package/dist/languages/RuntimeManager.js.map +1 -1
  175. package/dist/languages/UniversalAnalyzer.d.ts +51 -6
  176. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  177. package/dist/languages/UniversalAnalyzer.js +127 -88
  178. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  179. package/dist/languages/adapterBridge.d.ts +36 -0
  180. package/dist/languages/adapterBridge.d.ts.map +1 -1
  181. package/dist/languages/adapterBridge.js +89 -35
  182. package/dist/languages/adapterBridge.js.map +1 -1
  183. package/dist/languages/go/GoAdapter.d.ts +66 -23
  184. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  185. package/dist/languages/go/GoAdapter.js +553 -474
  186. package/dist/languages/go/GoAdapter.js.map +1 -1
  187. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +33 -4
  188. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
  189. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +101 -66
  190. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  191. package/dist/languages/tree-sitter/converter.d.ts +18 -0
  192. package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
  193. package/dist/languages/tree-sitter/converter.js +18 -0
  194. package/dist/languages/tree-sitter/converter.js.map +1 -1
  195. package/dist/languages/tree-sitter/parser.d.ts +39 -2
  196. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  197. package/dist/languages/tree-sitter/parser.js +93 -12
  198. package/dist/languages/tree-sitter/parser.js.map +1 -1
  199. package/dist/languages/types.d.ts +67 -2
  200. package/dist/languages/types.d.ts.map +1 -1
  201. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -72
  202. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  203. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1419 -923
  204. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  205. package/dist/mcp-tools-shared.d.ts.map +1 -1
  206. package/dist/mcp-tools-shared.js.map +1 -1
  207. package/dist/pipeline.d.ts +13 -5
  208. package/dist/pipeline.d.ts.map +1 -1
  209. package/dist/pipeline.js +381 -200
  210. package/dist/pipeline.js.map +1 -1
  211. package/dist/pipelineAdapters.d.ts +3 -8
  212. package/dist/pipelineAdapters.d.ts.map +1 -1
  213. package/dist/pipelineAdapters.js +149 -94
  214. package/dist/pipelineAdapters.js.map +1 -1
  215. package/dist/presets/presets.d.ts +54 -0
  216. package/dist/presets/presets.d.ts.map +1 -0
  217. package/dist/presets/presets.js +181 -0
  218. package/dist/presets/presets.js.map +1 -0
  219. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  220. package/dist/reporting/sarifReportGenerator.js +0 -2
  221. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  222. package/dist/ruleAliases.d.ts +67 -0
  223. package/dist/ruleAliases.d.ts.map +1 -0
  224. package/dist/ruleAliases.js +79 -0
  225. package/dist/ruleAliases.js.map +1 -0
  226. package/dist/styles/cssAstExtractor.d.ts.map +1 -1
  227. package/dist/styles/cssAstExtractor.js +78 -18
  228. package/dist/styles/cssAstExtractor.js.map +1 -1
  229. package/dist/styles/styleIndexer.js +10 -1
  230. package/dist/styles/styleIndexer.js.map +1 -1
  231. package/dist/styles/tailwindConfigLoader.d.ts +8 -6
  232. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
  233. package/dist/styles/tailwindConfigLoader.js +61 -15
  234. package/dist/styles/tailwindConfigLoader.js.map +1 -1
  235. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  236. package/dist/styles/tailwindUtilityExpander.js +13 -1
  237. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  238. package/dist/types.d.ts +181 -1
  239. package/dist/types.d.ts.map +1 -1
  240. package/dist/types.js +8 -0
  241. package/dist/types.js.map +1 -1
  242. package/package.json +5 -3
  243. package/plugin/hooks/hooks.json +1 -1
  244. package/plugin/scripts/hook-audit.sh +25 -7
  245. package/plugin/skills/code-auditor/SKILL.md +5 -5
@@ -9,122 +9,32 @@
9
9
  * R7: schema/unknown-table severity is "suggestion".
10
10
  */
11
11
  import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
12
- import type { Violation } from '../../types.js';
13
- import type { AST, LanguageAdapter, ASTNode } from '../../languages/types.js';
14
- import { type ProvenanceContext } from '../provenance.js';
12
+ import type { Violation, AnalyzerResult, SchemaUsage } from '../../types.js';
13
+ import type { AST, LanguageAdapter } from '../../languages/types.js';
14
+ import { parseMigrationOps, extractReExports, sqlFileHasDdl, extractMigrationOpsFromFile } from './schema/migrations.js';
15
+ import { DB_RECEIVER_NAMES, DB_CALL_METHOD_NAMES, DB_BINDING_NAMES, DB_WRAPPER_NAMES, SQL_TAG_NAMES, DEFAULT_SCHEMA_CONFIG } from './schema/config.js';
16
+ import type { SchemaAnalyzerConfig, TableReference, TableSourceEntry, TableProvenance, TableCatalogEntry, RegistryExtractionContext, MigrationOp, ReExport } from './schema/types.js';
17
+ export { parseMigrationOps, extractReExports, sqlFileHasDdl, extractMigrationOpsFromFile, DB_RECEIVER_NAMES, DB_CALL_METHOD_NAMES, DB_BINDING_NAMES, DB_WRAPPER_NAMES, SQL_TAG_NAMES, DEFAULT_SCHEMA_CONFIG, };
18
+ export type { SchemaAnalyzerConfig, TableReference, TableSourceEntry, TableProvenance, TableCatalogEntry, RegistryExtractionContext, MigrationOp, ReExport, };
15
19
  /**
16
- * Configuration for Schema analyzer
20
+ * Universal schema analyzer.
17
21
  */
18
- export interface SchemaAnalyzerConfig {
19
- enableTableUsageTracking?: boolean;
20
- checkMissingReferences?: boolean;
21
- checkNamingConventions?: boolean;
22
- detectUnusedTables?: boolean;
23
- validateQueryPatterns?: boolean;
24
- maxQueriesPerFunction?: number;
25
- requiredSchemas?: string[];
26
- schemas?: Array<{
27
- name: string;
28
- tables: Array<{
29
- name: string;
30
- columns: Array<{
31
- name: string;
32
- type: string;
33
- }>;
34
- }>;
35
- }>;
36
- validateJsonSchemas?: boolean;
37
- jsonSchemaVersion?: 'draft-04' | 'draft-06' | 'draft-07' | '2019-09' | '2020-12';
38
- allowedJsonTypes?: string[];
39
- schemaFilePatterns?: string[];
40
- dataFilePatterns?: string[];
41
- schemaDataPairs?: Array<{
42
- schema: string;
43
- data: string | string[];
44
- }>;
45
- strictMode?: boolean;
46
- allowAdditionalProperties?: boolean;
47
- sqlTagNames?: string[];
48
- dbReceiverNames?: string[];
49
- dbCallMethods?: string[];
50
- dbBindingNames?: string[];
51
- dbWrapperNames?: string[];
52
- fileGateGlobs?: string[];
53
- schemaFiles?: string[];
54
- }
55
- /**
56
- * Single-source constants for SQL context detection.
57
- *
58
- * These are the ground-truth defaults. DEFAULT_SCHEMA_CONFIG references them,
59
- * and every inline fallback dereferences them directly — so ?? narrowing works
60
- * (TypeScript infers `string[]`, not `string[] | undefined` from the optional
61
- * SchemaAnalyzerConfig fields).
62
- *
63
- * Trimmed to D1/Workers DB patterns only (4 receivers, 6 methods).
64
- * Broader entries like 'connection'/'client'/'query'/'get'/'each' matched
65
- * non-DB code (WebSocket, Map, jQuery, vector stores), causing phantom
66
- * cross-domain lifecycle violations. See CHANGELOG 3.4.9 accuracy fix.
67
- */
68
- export declare const DB_RECEIVER_NAMES: readonly ['db', 'database', 'sql', 'stmt'];
69
- export declare const DB_CALL_METHOD_NAMES: readonly ['exec', 'prepare', 'batch', 'run', 'all', 'first'];
70
- export declare const DB_BINDING_NAMES: readonly ['env.DB'];
71
- export declare const DB_WRAPPER_NAMES: readonly ['d1Query', 'd1Exec'];
72
- export declare const SQL_TAG_NAMES: readonly ['sql', 'db'];
73
- export declare const DEFAULT_SCHEMA_CONFIG: SchemaAnalyzerConfig;
74
- export interface TableReference {
75
- table: string;
76
- type: 'select' | 'insert' | 'update' | 'delete' | 'create' | 'reference';
77
- location: {
78
- line: number;
79
- column: number;
80
- };
81
- context: string;
82
- }
83
- import type { AnalyzerResult, SchemaUsage } from '../../types.js';
84
22
  export declare class UniversalSchemaAnalyzer extends UniversalAnalyzer {
85
23
  readonly name = "schema";
86
24
  readonly description = "Analyzes code against database schemas and validates JSON schemas";
87
25
  readonly category = "database";
88
- private tableReferences;
89
26
  private _pendingSchemaRecords;
90
- private projectRoot?;
91
- /**
92
- * Strip SQL identifier delimiters: backticks or double-quotes.
93
- */
94
- stripIdentifier(name: string): string;
95
- /**
96
- * Parse a migration SQL source and apply stateful CREATE/DROP/RENAME
97
- * operations to the given table set in migration order.
98
- */
99
- processMigrationSource(source: string, tables: Set<string>): void;
100
27
  /**
101
28
  * Standalone analyze() override for backward compatibility with direct analyzer
102
29
  * calls (e.g., tests and non-pipeline audit paths). All production analysis now
103
30
  * flows through the pipeline visitors, but this method is preserved so tests
104
31
  * that call analyzer.analyze([file], config) continue to work.
32
+ * @param config
33
+ * @param files
34
+ * @returns
105
35
  */
106
36
  analyze(files: string[], config: any): Promise<AnalyzerResult>;
107
37
  protected analyzeAST(ast: AST, adapter: LanguageAdapter, config: SchemaAnalyzerConfig, sourceCode: string): Promise<Violation[]>;
108
- /**
109
- * Walk project root recursively, returning files matching any of the given
110
- * picomatch globs. Skips node_modules and dot-directories.
111
- */
112
- private _walkFiles;
113
- private _discoverTablesFromMigrations;
114
- private _discoverTablesFromWrangler;
115
- private _discoverTablesFromSchemaFiles;
116
- private _discoverTablesFromOrmSchemas;
117
- /**
118
- * Pre-filter: only analyze files that show DB usage.
119
- * Checks: .sql/migration glob, D1/SQL imports, env-binding patterns, DB calls.
120
- */
121
- passesFileGate(filePath: string, sourceCode: string, config: SchemaAnalyzerConfig, provenanceContext?: ProvenanceContext): boolean;
122
- /**
123
- * Extract table references exclusively from SQL contexts in the AST.
124
- * R2.1: Only tagged template SQL and DB-call patterns produce candidates.
125
- * R2.3: Template expressions (${var}) resolved to wildcards.
126
- */
127
- findTableReferences(ast: AST, adapter: LanguageAdapter, sourceCode: string, config: SchemaAnalyzerConfig, provenanceContext?: ProvenanceContext, allTables?: Set<string>): TableReference[];
128
38
  /**
129
39
  * Spec 15 R1 — Record extracted table references to schema_usage for
130
40
  * cross-domain lifecycle analysis (written-never-read, read-never-written,
@@ -133,124 +43,23 @@ export declare class UniversalSchemaAnalyzer extends UniversalAnalyzer {
133
43
  * Idempotent per-file: stale entries are cleared before fresh references
134
44
  * are inserted. For .sql/migration files, uses "schema-file" as the
135
45
  * function name since there's no AST function context.
46
+ * @returns
47
+ * @param adapter
48
+ * @param ast
49
+ * @param filePath
50
+ * @param references
51
+ * @returns
136
52
  */
137
53
  recordTableUsage(ast: AST, adapter: LanguageAdapter, filePath: string, references: TableReference[]): void;
138
- /** Spec 25 B4 — Drain pending schema records for the pipeline to write. */
54
+ /**
55
+ * Spec 25 B4 — Drain pending schema records for the pipeline to write.
56
+ * @returns
57
+ */
139
58
  getPendingSchemaRecords(): {
140
59
  clearFiles: string[];
141
60
  usages: SchemaUsage[];
142
61
  };
143
- /**
144
- * Parse SQL table names from a SQL text string.
145
- * R2.3: Template expressions (${...}) resolve portions to wildcards.
146
- */
147
- parseSqlTables(sqlText: string, baseLocation: {
148
- line: number;
149
- column: number;
150
- }, sourceCode: string, allTables?: Set<string>): TableReference[];
151
- /**
152
- * Spec 22 R4.3: Extract alias identifiers from SQL text.
153
- *
154
- * Detects both explicit (`FROM x AS t`) and bare (`FROM x t`) aliases
155
- * so they can be filtered from table-references in parseSqlTables().
156
- * Without this, "JOIN t.posts" captures t via the JOIN regex when t is
157
- * an alias for the real table x.
158
- */
159
- private extractAliasIdentifiers;
160
- /**
161
- * R2.3: Resolve template expressions in SQL text.
162
- *
163
- * Uses the sentinel `__TMPL__` instead of an empty string. An empty
164
- * replacement produces whitespace artifacts (e.g. `FROM t WHERE`
165
- * when `${tableName}` is stripped), which causes the bare-alias regex
166
- * in extractAliasIdentifiers() to misalign: `t` lands in the table-name
167
- * capture group instead of the alias group, and is never denylisted.
168
- *
169
- * `__TMPL__` keeps the token boundaries intact so alias extraction
170
- * correctly identifies `t` as the alias. `__TMPL__` table references
171
- * are filtered in parseSqlTables().
172
- */
173
- private resolveTemplateExpressions;
174
- /**
175
- * Return known table names within edit distance ≤ maxDist.
176
- */
177
- getNearestTableSuggestions(name: string, knownTables: Set<string>, maxDist: number): string[];
178
- levenshteinDistance(a: string, b: string): number;
179
- checkNamingConventions(references: TableReference[], filePath: string): Violation[];
180
- checkQueryPatterns(ast: AST, adapter: LanguageAdapter, sourceCode: string, config: SchemaAnalyzerConfig): Violation[];
181
- checkSQLInjection(ast: AST, adapter: LanguageAdapter, sourceCode: string): Violation[];
182
- /**
183
- * Extract the callee text from a call_expression node.
184
- */
185
- private getCallee;
186
- /**
187
- * Check if call_expression has a template string argument.
188
- */
189
- private hasTemplateArgument;
190
- /**
191
- * Get the text of the first template string argument.
192
- */
193
- private getTemplateText;
194
- /**
195
- * Get the first string/template argument from a call expression.
196
- */
197
- private getFirstStringArgument;
198
- /**
199
- * Check if a callee is a DB member call like db.exec, database.query, etc.
200
- */
201
- private isDbMemberCall;
202
- /**
203
- * Get the line/column location of the call expression.
204
- */
205
- private getCallLocation;
206
- /**
207
- * Convert a character offset to a line/column location.
208
- */
209
- private offsetToLocation;
210
- private isSystemTable;
211
- /**
212
- * Common SQL keywords and identifiers that are not real table names.
213
- */
214
- private isSqlKeyword;
215
- private getQueryType;
216
- private countQueries;
217
- private findNodeByLocation;
218
- /**
219
- * Find the nearest AST node at a source location — walks the tree looking
220
- * for the deepest node that contains the given line/column.
221
- */
222
- findClosestNodeAt(root: ASTNode, location: {
223
- line: number;
224
- column: number;
225
- }, adapter: LanguageAdapter): ASTNode | null;
226
- /**
227
- * Walk up the AST from a node to find the enclosing function or method name.
228
- * Matches the same scheme as UniversalDataAccessAnalyzer.findEnclosingFunctionName.
229
- */
230
- findEnclosingFunctionName(node: ASTNode, adapter: LanguageAdapter): string;
231
- /**
232
- * Extract a human-readable name from an AST node.
233
- * Matches the same scheme as UniversalDataAccessAnalyzer.getNodeName.
234
- */
235
- private getNodeName;
236
- /**
237
- * Analyze JSON schemas and validate data files against them.
238
- *
239
- * Pipeline-refactored: accepts a Map of pre-loaded JSON contents instead of
240
- * reading from the filesystem, so this can run inside a Stage 3 reducer.
241
- *
242
- * @param jsonContents Map from filePath → { parsed: pre-parsed object or null, raw: string }
243
- * @param config Schema analyzer configuration
244
- */
245
- analyzeJsonSchemas(jsonContents: Map<string, {
246
- parsed: object | null;
247
- raw: string;
248
- }>, config: SchemaAnalyzerConfig): AnalyzerResult;
249
- private validateJsonSchema;
250
- private validateSchemaTypes;
251
- private identifySchemaFiles;
252
- private identifyDataFiles;
253
- private findMatchingSchema;
254
- private validateAgainstSchema;
255
62
  }
63
+ import { analyzeJsonSchemas } from './schema/jsonSchema.js';
64
+ export { analyzeJsonSchemas };
256
65
  //# sourceMappingURL=UniversalSchemaAnalyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalSchemaAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSchemaAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalSchemaAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSchemaAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAA8B,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAW,MAAM,0BAA0B,CAAC;AAa9E,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,2BAA2B,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAmB3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,GACtB,CAAC;AACF,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,QAAQ,GACT,CAAC;AAEF;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,uEAAuE;IAC3F,QAAQ,CAAC,QAAQ,cAAc;IAI/B,OAAO,CAAC,qBAAqB,CAAmF;IAEhH;;;;;;;;OAQG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBnE;IAKD,UAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;IAED;;;;;;;;;;;;;;OAcG;IACI,gBAAgB,CACrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,cAAc,EAAE,GAC3B,IAAI,CA0BN;IAED;;;OAGG;IACH,uBAAuB,IAAI;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,WAAW,EAAE,CAAA;KAAE,CAIzE;CAEF;AA6HD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}