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 @@
1
+ {"version":3,"file":"variant-manager.js","sourceRoot":"","sources":["../../src/rules/variant-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Change Detector - File modification detection
3
+ *
4
+ * Detects file changes via mtime/hash comparison and tracks
5
+ * file additions and deletions between scans.
6
+ *
7
+ * @requirements 2.2 - WHEN a file changes, THE Scanner SHALL perform incremental analysis only on affected files
8
+ */
9
+ import type { FileInfo } from './types.js';
10
+ /**
11
+ * Types of changes that can be detected
12
+ */
13
+ export type ChangeType = 'added' | 'modified' | 'deleted' | 'unchanged';
14
+ /**
15
+ * Stored state of a file for change detection
16
+ */
17
+ export interface FileSnapshot {
18
+ /** Relative path to the file from workspace root */
19
+ path: string;
20
+ /** Last modification time as ISO string */
21
+ mtime: string;
22
+ /** Content hash (SHA-256) for verification */
23
+ hash: string;
24
+ /** File size in bytes */
25
+ size: number;
26
+ }
27
+ /**
28
+ * Result of change detection between two scans
29
+ */
30
+ export interface ChangeSet {
31
+ /** Files that were added since the last scan */
32
+ added: string[];
33
+ /** Files that were modified since the last scan */
34
+ modified: string[];
35
+ /** Files that were deleted since the last scan */
36
+ deleted: string[];
37
+ /** Files that remain unchanged */
38
+ unchanged: string[];
39
+ /** Timestamp when the change detection was performed */
40
+ timestamp: Date;
41
+ /** Total number of files in the current scan */
42
+ totalFiles: number;
43
+ }
44
+ /**
45
+ * Detailed change information for a single file
46
+ */
47
+ export interface FileChange {
48
+ /** Relative path to the file */
49
+ path: string;
50
+ /** Type of change detected */
51
+ type: ChangeType;
52
+ /** Previous snapshot (if file existed before) */
53
+ previousSnapshot?: FileSnapshot;
54
+ /** Current snapshot (if file exists now) */
55
+ currentSnapshot?: FileSnapshot;
56
+ }
57
+ /**
58
+ * Options for change detection
59
+ */
60
+ export interface ChangeDetectionOptions {
61
+ /**
62
+ * Whether to verify changes using content hash
63
+ * When true, files with same mtime but different hash are marked as modified
64
+ * @default false
65
+ */
66
+ verifyWithHash?: boolean;
67
+ /**
68
+ * Tolerance in milliseconds for mtime comparison
69
+ * Files with mtime difference less than this are considered unchanged
70
+ * Useful for file systems with low mtime precision
71
+ * @default 0
72
+ */
73
+ mtimeTolerance?: number;
74
+ }
75
+ /**
76
+ * Snapshot file format for persistence
77
+ */
78
+ export interface SnapshotFile {
79
+ /** Version of the snapshot format */
80
+ version: string;
81
+ /** Timestamp when the snapshot was created */
82
+ createdAt: string;
83
+ /** Root directory the snapshot was taken from */
84
+ rootDir: string;
85
+ /** Array of file snapshots */
86
+ files: FileSnapshot[];
87
+ }
88
+ /**
89
+ * ChangeDetector class for tracking file changes between scans
90
+ *
91
+ * Provides functionality to:
92
+ * - Detect modified files via mtime comparison and optional hash verification
93
+ * - Track file additions (new files not in previous scan)
94
+ * - Track file deletions (files in previous scan but not current)
95
+ * - Save and load snapshots for persistence
96
+ *
97
+ * @requirements 2.2 - Incremental analysis on affected files
98
+ */
99
+ export declare class ChangeDetector {
100
+ /**
101
+ * Detect changes between current files and a previous snapshot
102
+ *
103
+ * @param currentFiles - Array of FileInfo from the current scan
104
+ * @param previousSnapshot - Array of FileSnapshot from the previous scan
105
+ * @param options - Optional change detection options
106
+ * @returns ChangeSet containing added, modified, deleted, and unchanged files
107
+ */
108
+ detectChanges(currentFiles: FileInfo[], previousSnapshot: FileSnapshot[], options?: ChangeDetectionOptions): ChangeSet;
109
+ /**
110
+ * Get detailed change information for each file
111
+ *
112
+ * @param currentFiles - Array of FileInfo from the current scan
113
+ * @param previousSnapshot - Array of FileSnapshot from the previous scan
114
+ * @param options - Optional change detection options
115
+ * @returns Array of FileChange with detailed information
116
+ */
117
+ getDetailedChanges(currentFiles: FileInfo[], previousSnapshot: FileSnapshot[], options?: ChangeDetectionOptions): FileChange[];
118
+ /**
119
+ * Create a snapshot from an array of FileInfo
120
+ *
121
+ * @param files - Array of FileInfo from a scan
122
+ * @returns Array of FileSnapshot for persistence
123
+ */
124
+ createSnapshot(files: FileInfo[]): FileSnapshot[];
125
+ /**
126
+ * Save a snapshot to a file
127
+ *
128
+ * @param snapshot - Array of FileSnapshot to save
129
+ * @param filePath - Path to save the snapshot file
130
+ * @param rootDir - Root directory the snapshot was taken from
131
+ */
132
+ saveSnapshot(snapshot: FileSnapshot[], filePath: string, rootDir: string): Promise<void>;
133
+ /**
134
+ * Load a snapshot from a file
135
+ *
136
+ * @param filePath - Path to the snapshot file
137
+ * @returns Array of FileSnapshot, or empty array if file doesn't exist
138
+ */
139
+ loadSnapshot(filePath: string): Promise<FileSnapshot[]>;
140
+ /**
141
+ * Compute a content hash for a file
142
+ *
143
+ * @param filePath - Absolute path to the file
144
+ * @returns SHA-256 hash as hex string
145
+ */
146
+ computeFileHash(filePath: string): Promise<string>;
147
+ /**
148
+ * Check if a file has been modified based on mtime and optionally hash
149
+ *
150
+ * @param current - Current FileInfo
151
+ * @param previous - Previous FileSnapshot
152
+ * @param options - Change detection options
153
+ * @returns True if the file has been modified
154
+ */
155
+ private isFileModified;
156
+ /**
157
+ * Convert a FileInfo to a FileSnapshot
158
+ *
159
+ * @param file - FileInfo from a scan
160
+ * @returns FileSnapshot for storage
161
+ */
162
+ private fileInfoToSnapshot;
163
+ }
164
+ //# sourceMappingURL=change-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-detector.d.ts","sourceRoot":"","sources":["../../src/scanner/change-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IAEb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,kCAAkC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,wDAAwD;IACxD,SAAS,EAAE,IAAI,CAAC;IAEhB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,IAAI,EAAE,UAAU,CAAC;IAEjB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAEhC,4CAA4C;IAC5C,eAAe,CAAC,EAAE,YAAY,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAOD;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB;;;;;;;OAOG;IACH,aAAa,CACX,YAAY,EAAE,QAAQ,EAAE,EACxB,gBAAgB,EAAE,YAAY,EAAE,EAChC,OAAO,GAAE,sBAA2B,GACnC,SAAS;IA2DZ;;;;;;;OAOG;IACH,kBAAkB,CAChB,YAAY,EAAE,QAAQ,EAAE,EACxB,gBAAgB,EAAE,YAAY,EAAE,EAChC,OAAO,GAAE,sBAA2B,GACnC,UAAU,EAAE;IAwDf;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE;IAIjD;;;;;;OAMG;IACG,YAAY,CAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0B7D;;;;;OAKG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxD;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAoCtB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAQ3B"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Change Detector - File modification detection
3
+ *
4
+ * Detects file changes via mtime/hash comparison and tracks
5
+ * file additions and deletions between scans.
6
+ *
7
+ * @requirements 2.2 - WHEN a file changes, THE Scanner SHALL perform incremental analysis only on affected files
8
+ */
9
+ import * as fs from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ import { createHash } from 'node:crypto';
12
+ /**
13
+ * Current snapshot file format version
14
+ */
15
+ const SNAPSHOT_VERSION = '1.0.0';
16
+ /**
17
+ * ChangeDetector class for tracking file changes between scans
18
+ *
19
+ * Provides functionality to:
20
+ * - Detect modified files via mtime comparison and optional hash verification
21
+ * - Track file additions (new files not in previous scan)
22
+ * - Track file deletions (files in previous scan but not current)
23
+ * - Save and load snapshots for persistence
24
+ *
25
+ * @requirements 2.2 - Incremental analysis on affected files
26
+ */
27
+ export class ChangeDetector {
28
+ /**
29
+ * Detect changes between current files and a previous snapshot
30
+ *
31
+ * @param currentFiles - Array of FileInfo from the current scan
32
+ * @param previousSnapshot - Array of FileSnapshot from the previous scan
33
+ * @param options - Optional change detection options
34
+ * @returns ChangeSet containing added, modified, deleted, and unchanged files
35
+ */
36
+ detectChanges(currentFiles, previousSnapshot, options = {}) {
37
+ const { verifyWithHash = false, mtimeTolerance = 0 } = options;
38
+ // Create maps for efficient lookup
39
+ const previousMap = new Map();
40
+ for (const snapshot of previousSnapshot) {
41
+ previousMap.set(snapshot.path, snapshot);
42
+ }
43
+ const currentMap = new Map();
44
+ for (const file of currentFiles) {
45
+ currentMap.set(file.relativePath, file);
46
+ }
47
+ const added = [];
48
+ const modified = [];
49
+ const unchanged = [];
50
+ const deleted = [];
51
+ // Check current files against previous snapshot
52
+ for (const file of currentFiles) {
53
+ const relativePath = file.relativePath;
54
+ const previous = previousMap.get(relativePath);
55
+ if (!previous) {
56
+ // File is new
57
+ added.push(relativePath);
58
+ }
59
+ else {
60
+ // File existed before - check if modified
61
+ const isModified = this.isFileModified(file, previous, {
62
+ verifyWithHash,
63
+ mtimeTolerance,
64
+ });
65
+ if (isModified) {
66
+ modified.push(relativePath);
67
+ }
68
+ else {
69
+ unchanged.push(relativePath);
70
+ }
71
+ }
72
+ }
73
+ // Check for deleted files (in previous but not in current)
74
+ for (const snapshot of previousSnapshot) {
75
+ if (!currentMap.has(snapshot.path)) {
76
+ deleted.push(snapshot.path);
77
+ }
78
+ }
79
+ return {
80
+ added,
81
+ modified,
82
+ deleted,
83
+ unchanged,
84
+ timestamp: new Date(),
85
+ totalFiles: currentFiles.length,
86
+ };
87
+ }
88
+ /**
89
+ * Get detailed change information for each file
90
+ *
91
+ * @param currentFiles - Array of FileInfo from the current scan
92
+ * @param previousSnapshot - Array of FileSnapshot from the previous scan
93
+ * @param options - Optional change detection options
94
+ * @returns Array of FileChange with detailed information
95
+ */
96
+ getDetailedChanges(currentFiles, previousSnapshot, options = {}) {
97
+ const { verifyWithHash = false, mtimeTolerance = 0 } = options;
98
+ const changes = [];
99
+ // Create maps for efficient lookup
100
+ const previousMap = new Map();
101
+ for (const snapshot of previousSnapshot) {
102
+ previousMap.set(snapshot.path, snapshot);
103
+ }
104
+ const currentMap = new Map();
105
+ for (const file of currentFiles) {
106
+ currentMap.set(file.relativePath, file);
107
+ }
108
+ // Process current files
109
+ for (const file of currentFiles) {
110
+ const relativePath = file.relativePath;
111
+ const previous = previousMap.get(relativePath);
112
+ const currentSnapshot = this.fileInfoToSnapshot(file);
113
+ if (!previous) {
114
+ changes.push({
115
+ path: relativePath,
116
+ type: 'added',
117
+ currentSnapshot,
118
+ });
119
+ }
120
+ else {
121
+ const isModified = this.isFileModified(file, previous, {
122
+ verifyWithHash,
123
+ mtimeTolerance,
124
+ });
125
+ changes.push({
126
+ path: relativePath,
127
+ type: isModified ? 'modified' : 'unchanged',
128
+ previousSnapshot: previous,
129
+ currentSnapshot,
130
+ });
131
+ }
132
+ }
133
+ // Process deleted files
134
+ for (const snapshot of previousSnapshot) {
135
+ if (!currentMap.has(snapshot.path)) {
136
+ changes.push({
137
+ path: snapshot.path,
138
+ type: 'deleted',
139
+ previousSnapshot: snapshot,
140
+ });
141
+ }
142
+ }
143
+ return changes;
144
+ }
145
+ /**
146
+ * Create a snapshot from an array of FileInfo
147
+ *
148
+ * @param files - Array of FileInfo from a scan
149
+ * @returns Array of FileSnapshot for persistence
150
+ */
151
+ createSnapshot(files) {
152
+ return files.map((file) => this.fileInfoToSnapshot(file));
153
+ }
154
+ /**
155
+ * Save a snapshot to a file
156
+ *
157
+ * @param snapshot - Array of FileSnapshot to save
158
+ * @param filePath - Path to save the snapshot file
159
+ * @param rootDir - Root directory the snapshot was taken from
160
+ */
161
+ async saveSnapshot(snapshot, filePath, rootDir) {
162
+ const snapshotFile = {
163
+ version: SNAPSHOT_VERSION,
164
+ createdAt: new Date().toISOString(),
165
+ rootDir,
166
+ files: snapshot,
167
+ };
168
+ // Ensure directory exists
169
+ const dir = path.dirname(filePath);
170
+ await fs.mkdir(dir, { recursive: true });
171
+ // Write snapshot file
172
+ const content = JSON.stringify(snapshotFile, null, 2);
173
+ await fs.writeFile(filePath, content, 'utf-8');
174
+ }
175
+ /**
176
+ * Load a snapshot from a file
177
+ *
178
+ * @param filePath - Path to the snapshot file
179
+ * @returns Array of FileSnapshot, or empty array if file doesn't exist
180
+ */
181
+ async loadSnapshot(filePath) {
182
+ try {
183
+ const content = await fs.readFile(filePath, 'utf-8');
184
+ const snapshotFile = JSON.parse(content);
185
+ // Validate version
186
+ if (!snapshotFile.version) {
187
+ throw new Error('Invalid snapshot file: missing version');
188
+ }
189
+ // For now, we only support version 1.0.0
190
+ // Future versions may need migration logic
191
+ if (!snapshotFile.version.startsWith('1.')) {
192
+ throw new Error(`Unsupported snapshot version: ${snapshotFile.version}`);
193
+ }
194
+ return snapshotFile.files || [];
195
+ }
196
+ catch (error) {
197
+ // If file doesn't exist, return empty snapshot
198
+ if (error.code === 'ENOENT') {
199
+ return [];
200
+ }
201
+ throw error;
202
+ }
203
+ }
204
+ /**
205
+ * Compute a content hash for a file
206
+ *
207
+ * @param filePath - Absolute path to the file
208
+ * @returns SHA-256 hash as hex string
209
+ */
210
+ async computeFileHash(filePath) {
211
+ const content = await fs.readFile(filePath);
212
+ return createHash('sha256').update(content).digest('hex');
213
+ }
214
+ /**
215
+ * Check if a file has been modified based on mtime and optionally hash
216
+ *
217
+ * @param current - Current FileInfo
218
+ * @param previous - Previous FileSnapshot
219
+ * @param options - Change detection options
220
+ * @returns True if the file has been modified
221
+ */
222
+ isFileModified(current, previous, options) {
223
+ const { verifyWithHash, mtimeTolerance } = options;
224
+ // Check size first (quick check)
225
+ if (current.size !== previous.size) {
226
+ return true;
227
+ }
228
+ // Check mtime
229
+ const currentMtime = current.mtime.getTime();
230
+ const previousMtime = new Date(previous.mtime).getTime();
231
+ const mtimeDiff = Math.abs(currentMtime - previousMtime);
232
+ if (mtimeDiff > mtimeTolerance) {
233
+ // mtime differs - file is likely modified
234
+ // If hash verification is enabled and we have hashes, double-check
235
+ if (verifyWithHash && current.hash && previous.hash) {
236
+ return current.hash !== previous.hash;
237
+ }
238
+ return true;
239
+ }
240
+ // mtime is within tolerance
241
+ // If hash verification is enabled and we have hashes, verify
242
+ if (verifyWithHash && current.hash && previous.hash) {
243
+ return current.hash !== previous.hash;
244
+ }
245
+ // No modification detected
246
+ return false;
247
+ }
248
+ /**
249
+ * Convert a FileInfo to a FileSnapshot
250
+ *
251
+ * @param file - FileInfo from a scan
252
+ * @returns FileSnapshot for storage
253
+ */
254
+ fileInfoToSnapshot(file) {
255
+ return {
256
+ path: file.relativePath,
257
+ mtime: file.mtime.toISOString(),
258
+ hash: file.hash || '',
259
+ size: file.size,
260
+ };
261
+ }
262
+ }
263
+ //# sourceMappingURL=change-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-detector.js","sourceRoot":"","sources":["../../src/scanner/change-detector.ts"],"names":[],"mappings":"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"}