driftdetect-core 0.1.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 (221) hide show
  1. package/dist/analyzers/ast-analyzer.d.ts +251 -0
  2. package/dist/analyzers/ast-analyzer.d.ts.map +1 -0
  3. package/dist/analyzers/ast-analyzer.js +548 -0
  4. package/dist/analyzers/ast-analyzer.js.map +1 -0
  5. package/dist/analyzers/flow-analyzer.d.ts +241 -0
  6. package/dist/analyzers/flow-analyzer.d.ts.map +1 -0
  7. package/dist/analyzers/flow-analyzer.js +1219 -0
  8. package/dist/analyzers/flow-analyzer.js.map +1 -0
  9. package/dist/analyzers/index.d.ts +18 -0
  10. package/dist/analyzers/index.d.ts.map +1 -0
  11. package/dist/analyzers/index.js +19 -0
  12. package/dist/analyzers/index.js.map +1 -0
  13. package/dist/analyzers/semantic-analyzer.d.ts +252 -0
  14. package/dist/analyzers/semantic-analyzer.d.ts.map +1 -0
  15. package/dist/analyzers/semantic-analyzer.js +1182 -0
  16. package/dist/analyzers/semantic-analyzer.js.map +1 -0
  17. package/dist/analyzers/type-analyzer.d.ts +289 -0
  18. package/dist/analyzers/type-analyzer.d.ts.map +1 -0
  19. package/dist/analyzers/type-analyzer.js +1269 -0
  20. package/dist/analyzers/type-analyzer.js.map +1 -0
  21. package/dist/analyzers/types.d.ts +537 -0
  22. package/dist/analyzers/types.d.ts.map +1 -0
  23. package/dist/analyzers/types.js +11 -0
  24. package/dist/analyzers/types.js.map +1 -0
  25. package/dist/config/config-loader.d.ts +166 -0
  26. package/dist/config/config-loader.d.ts.map +1 -0
  27. package/dist/config/config-loader.js +429 -0
  28. package/dist/config/config-loader.js.map +1 -0
  29. package/dist/config/config-validator.d.ts +204 -0
  30. package/dist/config/config-validator.d.ts.map +1 -0
  31. package/dist/config/config-validator.js +632 -0
  32. package/dist/config/config-validator.js.map +1 -0
  33. package/dist/config/defaults.d.ts +8 -0
  34. package/dist/config/defaults.d.ts.map +1 -0
  35. package/dist/config/defaults.js +26 -0
  36. package/dist/config/defaults.js.map +1 -0
  37. package/dist/config/index.d.ts +10 -0
  38. package/dist/config/index.d.ts.map +1 -0
  39. package/dist/config/index.js +10 -0
  40. package/dist/config/index.js.map +1 -0
  41. package/dist/config/types.d.ts +47 -0
  42. package/dist/config/types.d.ts.map +1 -0
  43. package/dist/config/types.js +7 -0
  44. package/dist/config/types.js.map +1 -0
  45. package/dist/index.d.ts +37 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +39 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/manifest/exporter.d.ts +21 -0
  50. package/dist/manifest/exporter.d.ts.map +1 -0
  51. package/dist/manifest/exporter.js +339 -0
  52. package/dist/manifest/exporter.js.map +1 -0
  53. package/dist/manifest/index.d.ts +14 -0
  54. package/dist/manifest/index.d.ts.map +1 -0
  55. package/dist/manifest/index.js +15 -0
  56. package/dist/manifest/index.js.map +1 -0
  57. package/dist/manifest/manifest-store.d.ts +111 -0
  58. package/dist/manifest/manifest-store.d.ts.map +1 -0
  59. package/dist/manifest/manifest-store.js +418 -0
  60. package/dist/manifest/manifest-store.js.map +1 -0
  61. package/dist/manifest/types.d.ts +238 -0
  62. package/dist/manifest/types.d.ts.map +1 -0
  63. package/dist/manifest/types.js +11 -0
  64. package/dist/manifest/types.js.map +1 -0
  65. package/dist/matcher/confidence-scorer.d.ts +188 -0
  66. package/dist/matcher/confidence-scorer.d.ts.map +1 -0
  67. package/dist/matcher/confidence-scorer.js +302 -0
  68. package/dist/matcher/confidence-scorer.js.map +1 -0
  69. package/dist/matcher/index.d.ts +24 -0
  70. package/dist/matcher/index.d.ts.map +1 -0
  71. package/dist/matcher/index.js +26 -0
  72. package/dist/matcher/index.js.map +1 -0
  73. package/dist/matcher/outlier-detector.d.ts +252 -0
  74. package/dist/matcher/outlier-detector.d.ts.map +1 -0
  75. package/dist/matcher/outlier-detector.js +544 -0
  76. package/dist/matcher/outlier-detector.js.map +1 -0
  77. package/dist/matcher/pattern-matcher.d.ts +169 -0
  78. package/dist/matcher/pattern-matcher.d.ts.map +1 -0
  79. package/dist/matcher/pattern-matcher.js +692 -0
  80. package/dist/matcher/pattern-matcher.js.map +1 -0
  81. package/dist/matcher/types.d.ts +476 -0
  82. package/dist/matcher/types.d.ts.map +1 -0
  83. package/dist/matcher/types.js +36 -0
  84. package/dist/matcher/types.js.map +1 -0
  85. package/dist/parsers/base-parser.d.ts +282 -0
  86. package/dist/parsers/base-parser.d.ts.map +1 -0
  87. package/dist/parsers/base-parser.js +421 -0
  88. package/dist/parsers/base-parser.js.map +1 -0
  89. package/dist/parsers/css-parser.d.ts +225 -0
  90. package/dist/parsers/css-parser.d.ts.map +1 -0
  91. package/dist/parsers/css-parser.js +477 -0
  92. package/dist/parsers/css-parser.js.map +1 -0
  93. package/dist/parsers/index.d.ts +15 -0
  94. package/dist/parsers/index.d.ts.map +1 -0
  95. package/dist/parsers/index.js +15 -0
  96. package/dist/parsers/index.js.map +1 -0
  97. package/dist/parsers/json-parser.d.ts +219 -0
  98. package/dist/parsers/json-parser.d.ts.map +1 -0
  99. package/dist/parsers/json-parser.js +602 -0
  100. package/dist/parsers/json-parser.js.map +1 -0
  101. package/dist/parsers/markdown-parser.d.ts +276 -0
  102. package/dist/parsers/markdown-parser.d.ts.map +1 -0
  103. package/dist/parsers/markdown-parser.js +731 -0
  104. package/dist/parsers/markdown-parser.js.map +1 -0
  105. package/dist/parsers/parser-manager.d.ts +294 -0
  106. package/dist/parsers/parser-manager.d.ts.map +1 -0
  107. package/dist/parsers/parser-manager.js +738 -0
  108. package/dist/parsers/parser-manager.js.map +1 -0
  109. package/dist/parsers/python-parser.d.ts +204 -0
  110. package/dist/parsers/python-parser.d.ts.map +1 -0
  111. package/dist/parsers/python-parser.js +517 -0
  112. package/dist/parsers/python-parser.js.map +1 -0
  113. package/dist/parsers/types.d.ts +43 -0
  114. package/dist/parsers/types.d.ts.map +1 -0
  115. package/dist/parsers/types.js +7 -0
  116. package/dist/parsers/types.js.map +1 -0
  117. package/dist/parsers/typescript-parser.d.ts +264 -0
  118. package/dist/parsers/typescript-parser.d.ts.map +1 -0
  119. package/dist/parsers/typescript-parser.js +658 -0
  120. package/dist/parsers/typescript-parser.js.map +1 -0
  121. package/dist/rules/evaluator.d.ts +305 -0
  122. package/dist/rules/evaluator.d.ts.map +1 -0
  123. package/dist/rules/evaluator.js +579 -0
  124. package/dist/rules/evaluator.js.map +1 -0
  125. package/dist/rules/index.d.ts +13 -0
  126. package/dist/rules/index.d.ts.map +1 -0
  127. package/dist/rules/index.js +13 -0
  128. package/dist/rules/index.js.map +1 -0
  129. package/dist/rules/quick-fix-generator.d.ts +334 -0
  130. package/dist/rules/quick-fix-generator.d.ts.map +1 -0
  131. package/dist/rules/quick-fix-generator.js +1075 -0
  132. package/dist/rules/quick-fix-generator.js.map +1 -0
  133. package/dist/rules/rule-engine.d.ts +241 -0
  134. package/dist/rules/rule-engine.d.ts.map +1 -0
  135. package/dist/rules/rule-engine.js +585 -0
  136. package/dist/rules/rule-engine.js.map +1 -0
  137. package/dist/rules/severity-manager.d.ts +394 -0
  138. package/dist/rules/severity-manager.d.ts.map +1 -0
  139. package/dist/rules/severity-manager.js +619 -0
  140. package/dist/rules/severity-manager.js.map +1 -0
  141. package/dist/rules/types.d.ts +370 -0
  142. package/dist/rules/types.d.ts.map +1 -0
  143. package/dist/rules/types.js +133 -0
  144. package/dist/rules/types.js.map +1 -0
  145. package/dist/rules/variant-manager.d.ts +388 -0
  146. package/dist/rules/variant-manager.d.ts.map +1 -0
  147. package/dist/rules/variant-manager.js +777 -0
  148. package/dist/rules/variant-manager.js.map +1 -0
  149. package/dist/scanner/change-detector.d.ts +164 -0
  150. package/dist/scanner/change-detector.d.ts.map +1 -0
  151. package/dist/scanner/change-detector.js +263 -0
  152. package/dist/scanner/change-detector.js.map +1 -0
  153. package/dist/scanner/dependency-graph.d.ts +270 -0
  154. package/dist/scanner/dependency-graph.d.ts.map +1 -0
  155. package/dist/scanner/dependency-graph.js +436 -0
  156. package/dist/scanner/dependency-graph.js.map +1 -0
  157. package/dist/scanner/file-walker.d.ts +127 -0
  158. package/dist/scanner/file-walker.d.ts.map +1 -0
  159. package/dist/scanner/file-walker.js +526 -0
  160. package/dist/scanner/file-walker.js.map +1 -0
  161. package/dist/scanner/index.d.ts +12 -0
  162. package/dist/scanner/index.d.ts.map +1 -0
  163. package/dist/scanner/index.js +12 -0
  164. package/dist/scanner/index.js.map +1 -0
  165. package/dist/scanner/types.d.ts +218 -0
  166. package/dist/scanner/types.d.ts.map +1 -0
  167. package/dist/scanner/types.js +10 -0
  168. package/dist/scanner/types.js.map +1 -0
  169. package/dist/scanner/worker-pool.d.ts +317 -0
  170. package/dist/scanner/worker-pool.d.ts.map +1 -0
  171. package/dist/scanner/worker-pool.js +571 -0
  172. package/dist/scanner/worker-pool.js.map +1 -0
  173. package/dist/store/cache-manager.d.ts +179 -0
  174. package/dist/store/cache-manager.d.ts.map +1 -0
  175. package/dist/store/cache-manager.js +391 -0
  176. package/dist/store/cache-manager.js.map +1 -0
  177. package/dist/store/history-store.d.ts +314 -0
  178. package/dist/store/history-store.d.ts.map +1 -0
  179. package/dist/store/history-store.js +707 -0
  180. package/dist/store/history-store.js.map +1 -0
  181. package/dist/store/index.d.ts +20 -0
  182. package/dist/store/index.d.ts.map +1 -0
  183. package/dist/store/index.js +26 -0
  184. package/dist/store/index.js.map +1 -0
  185. package/dist/store/lock-file-manager.d.ts +202 -0
  186. package/dist/store/lock-file-manager.d.ts.map +1 -0
  187. package/dist/store/lock-file-manager.js +475 -0
  188. package/dist/store/lock-file-manager.js.map +1 -0
  189. package/dist/store/pattern-store.d.ts +289 -0
  190. package/dist/store/pattern-store.d.ts.map +1 -0
  191. package/dist/store/pattern-store.js +936 -0
  192. package/dist/store/pattern-store.js.map +1 -0
  193. package/dist/store/schema-validator.d.ts +159 -0
  194. package/dist/store/schema-validator.d.ts.map +1 -0
  195. package/dist/store/schema-validator.js +1096 -0
  196. package/dist/store/schema-validator.js.map +1 -0
  197. package/dist/store/types.d.ts +585 -0
  198. package/dist/store/types.d.ts.map +1 -0
  199. package/dist/store/types.js +82 -0
  200. package/dist/store/types.js.map +1 -0
  201. package/dist/types/analysis.d.ts +19 -0
  202. package/dist/types/analysis.d.ts.map +1 -0
  203. package/dist/types/analysis.js +5 -0
  204. package/dist/types/analysis.js.map +1 -0
  205. package/dist/types/common.d.ts +7 -0
  206. package/dist/types/common.d.ts.map +1 -0
  207. package/dist/types/common.js +5 -0
  208. package/dist/types/common.js.map +1 -0
  209. package/dist/types/index.d.ts +12 -0
  210. package/dist/types/index.d.ts.map +1 -0
  211. package/dist/types/index.js +10 -0
  212. package/dist/types/index.js.map +1 -0
  213. package/dist/types/patterns.d.ts +40 -0
  214. package/dist/types/patterns.d.ts.map +1 -0
  215. package/dist/types/patterns.js +7 -0
  216. package/dist/types/patterns.js.map +1 -0
  217. package/dist/types/violations.d.ts +7 -0
  218. package/dist/types/violations.d.ts.map +1 -0
  219. package/dist/types/violations.js +7 -0
  220. package/dist/types/violations.js.map +1 -0
  221. package/package.json +46 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Config Validator - Configuration validation against JSON schema
3
+ *
4
+ * Provides comprehensive validation for DriftConfig objects with
5
+ * helpful, actionable error messages for invalid configurations.
6
+ *
7
+ * @requirements 36.6 - Configuration validation SHALL reject invalid values with helpful error messages
8
+ * @requirements 36.7 - Configuration SHALL support JSON schema validation
9
+ */
10
+ import type { DriftConfig } from './types.js';
11
+ /**
12
+ * Represents a single configuration validation error
13
+ */
14
+ export interface ConfigValidationError {
15
+ /** Path to the invalid field (e.g., 'ai.provider', 'learning.autoApproveThreshold') */
16
+ path: string;
17
+ /** Human-readable error message */
18
+ message: string;
19
+ /** Expected value or type */
20
+ expected?: string;
21
+ /** Actual value received */
22
+ actual?: unknown;
23
+ /** Suggestion for how to fix the error */
24
+ suggestion?: string;
25
+ }
26
+ /**
27
+ * Result of a configuration validation operation
28
+ */
29
+ export interface ConfigValidationResult {
30
+ /** Whether validation passed */
31
+ valid: boolean;
32
+ /** Validated and typed data (only present if valid) */
33
+ data?: DriftConfig;
34
+ /** List of validation errors (only present if invalid) */
35
+ errors?: ConfigValidationError[];
36
+ }
37
+ /**
38
+ * Custom error class for configuration validation failures
39
+ *
40
+ * @requirements 36.6 - Provide helpful error messages
41
+ */
42
+ export declare class ConfigValidationException extends Error {
43
+ readonly errors: ConfigValidationError[];
44
+ constructor(message: string, errors: ConfigValidationError[]);
45
+ /**
46
+ * Format errors as a human-readable string with suggestions
47
+ */
48
+ formatErrors(): string;
49
+ /**
50
+ * Get a summary of all errors
51
+ */
52
+ getSummary(): string;
53
+ }
54
+ /**
55
+ * Validate a DriftConfig object against the JSON schema
56
+ *
57
+ * @requirements 36.6 - Configuration validation SHALL reject invalid values with helpful error messages
58
+ * @requirements 36.7 - Configuration SHALL support JSON schema validation
59
+ *
60
+ * @param data - The data to validate
61
+ * @returns Validation result with typed data or errors
62
+ */
63
+ export declare function validateConfig(data: unknown): ConfigValidationResult;
64
+ /**
65
+ * Validate a DriftConfig and throw if invalid
66
+ *
67
+ * @requirements 36.6 - Configuration validation SHALL reject invalid values with helpful error messages
68
+ * @requirements 36.7 - Configuration SHALL support JSON schema validation
69
+ *
70
+ * @param data - The data to validate
71
+ * @returns The validated DriftConfig
72
+ * @throws ConfigValidationException if validation fails
73
+ */
74
+ export declare function assertValidConfig(data: unknown): DriftConfig;
75
+ /**
76
+ * Validate a partial DriftConfig (for merging with defaults)
77
+ *
78
+ * This is more lenient than full validation - it allows missing required fields
79
+ * since they will be filled in from defaults.
80
+ *
81
+ * @requirements 36.6 - Configuration validation SHALL reject invalid values with helpful error messages
82
+ * @requirements 36.7 - Configuration SHALL support JSON schema validation
83
+ *
84
+ * @param data - The partial data to validate
85
+ * @returns Validation result with typed data or errors
86
+ */
87
+ export declare function validatePartialConfig(data: unknown): ConfigValidationResult;
88
+ /**
89
+ * Format validation errors as a human-readable string
90
+ *
91
+ * @requirements 36.6 - Provide helpful error messages
92
+ *
93
+ * @param errors - Array of validation errors
94
+ * @returns Formatted error string
95
+ */
96
+ export declare function formatConfigErrors(errors: ConfigValidationError[]): string;
97
+ /**
98
+ * Get a quick summary of validation errors
99
+ *
100
+ * @param errors - Array of validation errors
101
+ * @returns Short summary string
102
+ */
103
+ export declare function getErrorSummary(errors: ConfigValidationError[]): string;
104
+ /**
105
+ * JSON Schema definition for DriftConfig
106
+ *
107
+ * This can be used by external tools for validation or IDE support.
108
+ *
109
+ * @requirements 36.7 - Configuration SHALL support JSON schema validation
110
+ */
111
+ export declare const DRIFT_CONFIG_SCHEMA: {
112
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
113
+ readonly title: "DriftConfig";
114
+ readonly description: "Configuration schema for Drift architectural drift detection";
115
+ readonly type: "object";
116
+ readonly properties: {
117
+ readonly severity: {
118
+ readonly type: "object";
119
+ readonly description: "Severity overrides per pattern ID";
120
+ readonly additionalProperties: {
121
+ readonly type: "string";
122
+ readonly enum: readonly ["error", "warning", "info", "hint"];
123
+ };
124
+ };
125
+ readonly ignore: {
126
+ readonly type: "array";
127
+ readonly description: "File/folder patterns to ignore";
128
+ readonly items: {
129
+ readonly type: "string";
130
+ readonly minLength: 1;
131
+ };
132
+ };
133
+ readonly ai: {
134
+ readonly type: "object";
135
+ readonly description: "AI provider configuration (BYOK)";
136
+ readonly properties: {
137
+ readonly provider: {
138
+ readonly type: "string";
139
+ readonly enum: readonly ["openai", "anthropic", "ollama"];
140
+ readonly description: "AI provider to use";
141
+ };
142
+ readonly model: {
143
+ readonly type: "string";
144
+ readonly description: "Model name to use";
145
+ };
146
+ };
147
+ readonly required: readonly ["provider"];
148
+ };
149
+ readonly ci: {
150
+ readonly type: "object";
151
+ readonly description: "CI/CD mode settings";
152
+ readonly properties: {
153
+ readonly failOn: {
154
+ readonly type: "string";
155
+ readonly enum: readonly ["error", "warning", "none"];
156
+ readonly description: "Severity level that causes CI failure";
157
+ };
158
+ readonly reportFormat: {
159
+ readonly type: "string";
160
+ readonly enum: readonly ["json", "text", "github", "gitlab"];
161
+ readonly description: "Output format for CI reports";
162
+ };
163
+ };
164
+ };
165
+ readonly learning: {
166
+ readonly type: "object";
167
+ readonly description: "Pattern learning settings";
168
+ readonly properties: {
169
+ readonly autoApproveThreshold: {
170
+ readonly type: "number";
171
+ readonly minimum: 0;
172
+ readonly maximum: 1;
173
+ readonly description: "Confidence threshold for auto-approving patterns";
174
+ };
175
+ readonly minOccurrences: {
176
+ readonly type: "integer";
177
+ readonly minimum: 1;
178
+ readonly description: "Minimum occurrences to detect a pattern";
179
+ };
180
+ };
181
+ };
182
+ readonly performance: {
183
+ readonly type: "object";
184
+ readonly description: "Performance tuning settings";
185
+ readonly properties: {
186
+ readonly maxWorkers: {
187
+ readonly type: "integer";
188
+ readonly minimum: 1;
189
+ readonly description: "Maximum worker threads for parallel processing";
190
+ };
191
+ readonly cacheEnabled: {
192
+ readonly type: "boolean";
193
+ readonly description: "Enable analysis caching";
194
+ };
195
+ readonly incrementalAnalysis: {
196
+ readonly type: "boolean";
197
+ readonly description: "Enable incremental analysis for changed files";
198
+ };
199
+ };
200
+ };
201
+ };
202
+ readonly additionalProperties: false;
203
+ };
204
+ //# sourceMappingURL=config-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-validator.d.ts","sourceRoot":"","sources":["../../src/config/config-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;AAuBpB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aAGhC,MAAM,EAAE,qBAAqB,EAAE;gBAD/C,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,qBAAqB,EAAE;IAMjD;;OAEG;IACH,YAAY,IAAI,MAAM;IActB;;OAEG;IACH,UAAU,IAAI,MAAM;CAKrB;AA6YD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CA0CpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAW5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CAI3E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAe1E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAOvE;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FtB,CAAC"}