driftdetect-core 0.5.0 → 0.6.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 (350) hide show
  1. package/dist/boundaries/types.d.ts +1 -1
  2. package/dist/boundaries/types.d.ts.map +1 -1
  3. package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -1
  4. package/dist/call-graph/analysis/graph-builder.js +1 -0
  5. package/dist/call-graph/analysis/graph-builder.js.map +1 -1
  6. package/dist/call-graph/extractors/go-data-access-extractor.d.ts +80 -0
  7. package/dist/call-graph/extractors/go-data-access-extractor.d.ts.map +1 -0
  8. package/dist/call-graph/extractors/go-data-access-extractor.js +457 -0
  9. package/dist/call-graph/extractors/go-data-access-extractor.js.map +1 -0
  10. package/dist/call-graph/extractors/go-extractor.d.ts +103 -0
  11. package/dist/call-graph/extractors/go-extractor.d.ts.map +1 -0
  12. package/dist/call-graph/extractors/go-extractor.js +509 -0
  13. package/dist/call-graph/extractors/go-extractor.js.map +1 -0
  14. package/dist/call-graph/extractors/go-hybrid-extractor.d.ts +97 -0
  15. package/dist/call-graph/extractors/go-hybrid-extractor.d.ts.map +1 -0
  16. package/dist/call-graph/extractors/go-hybrid-extractor.js +496 -0
  17. package/dist/call-graph/extractors/go-hybrid-extractor.js.map +1 -0
  18. package/dist/call-graph/extractors/regex/go-regex.d.ts +51 -0
  19. package/dist/call-graph/extractors/regex/go-regex.d.ts.map +1 -0
  20. package/dist/call-graph/extractors/regex/go-regex.js +435 -0
  21. package/dist/call-graph/extractors/regex/go-regex.js.map +1 -0
  22. package/dist/call-graph/extractors/regex/index.d.ts +1 -0
  23. package/dist/call-graph/extractors/regex/index.d.ts.map +1 -1
  24. package/dist/call-graph/extractors/regex/index.js +8 -0
  25. package/dist/call-graph/extractors/regex/index.js.map +1 -1
  26. package/dist/call-graph/index.d.ts +3 -0
  27. package/dist/call-graph/index.d.ts.map +1 -1
  28. package/dist/call-graph/index.js +5 -0
  29. package/dist/call-graph/index.js.map +1 -1
  30. package/dist/call-graph/types.d.ts +1 -1
  31. package/dist/call-graph/types.d.ts.map +1 -1
  32. package/dist/constraints/extraction/constraint-synthesizer.d.ts +72 -0
  33. package/dist/constraints/extraction/constraint-synthesizer.d.ts.map +1 -0
  34. package/dist/constraints/extraction/constraint-synthesizer.js +336 -0
  35. package/dist/constraints/extraction/constraint-synthesizer.js.map +1 -0
  36. package/dist/constraints/extraction/index.d.ts +10 -0
  37. package/dist/constraints/extraction/index.d.ts.map +1 -0
  38. package/dist/constraints/extraction/index.js +10 -0
  39. package/dist/constraints/extraction/index.js.map +1 -0
  40. package/dist/constraints/extraction/invariant-detector.d.ts +109 -0
  41. package/dist/constraints/extraction/invariant-detector.d.ts.map +1 -0
  42. package/dist/constraints/extraction/invariant-detector.js +979 -0
  43. package/dist/constraints/extraction/invariant-detector.js.map +1 -0
  44. package/dist/constraints/index.d.ts +15 -0
  45. package/dist/constraints/index.d.ts.map +1 -0
  46. package/dist/constraints/index.js +16 -0
  47. package/dist/constraints/index.js.map +1 -0
  48. package/dist/constraints/store/constraint-store.d.ts +110 -0
  49. package/dist/constraints/store/constraint-store.d.ts.map +1 -0
  50. package/dist/constraints/store/constraint-store.js +584 -0
  51. package/dist/constraints/store/constraint-store.js.map +1 -0
  52. package/dist/constraints/types.d.ts +605 -0
  53. package/dist/constraints/types.d.ts.map +1 -0
  54. package/dist/constraints/types.js +57 -0
  55. package/dist/constraints/types.js.map +1 -0
  56. package/dist/constraints/verification/constraint-verifier.d.ts +100 -0
  57. package/dist/constraints/verification/constraint-verifier.d.ts.map +1 -0
  58. package/dist/constraints/verification/constraint-verifier.js +638 -0
  59. package/dist/constraints/verification/constraint-verifier.js.map +1 -0
  60. package/dist/constraints/verification/index.d.ts +8 -0
  61. package/dist/constraints/verification/index.d.ts.map +1 -0
  62. package/dist/constraints/verification/index.js +8 -0
  63. package/dist/constraints/verification/index.js.map +1 -0
  64. package/dist/decisions/analyzer/decision-mining-analyzer.d.ts +121 -0
  65. package/dist/decisions/analyzer/decision-mining-analyzer.d.ts.map +1 -0
  66. package/dist/decisions/analyzer/decision-mining-analyzer.js +904 -0
  67. package/dist/decisions/analyzer/decision-mining-analyzer.js.map +1 -0
  68. package/dist/decisions/analyzer/index.d.ts +5 -0
  69. package/dist/decisions/analyzer/index.d.ts.map +1 -0
  70. package/dist/decisions/analyzer/index.js +5 -0
  71. package/dist/decisions/analyzer/index.js.map +1 -0
  72. package/dist/decisions/extractors/base-commit-extractor.d.ts +104 -0
  73. package/dist/decisions/extractors/base-commit-extractor.d.ts.map +1 -0
  74. package/dist/decisions/extractors/base-commit-extractor.js +305 -0
  75. package/dist/decisions/extractors/base-commit-extractor.js.map +1 -0
  76. package/dist/decisions/extractors/csharp-commit-extractor.d.ts +18 -0
  77. package/dist/decisions/extractors/csharp-commit-extractor.d.ts.map +1 -0
  78. package/dist/decisions/extractors/csharp-commit-extractor.js +281 -0
  79. package/dist/decisions/extractors/csharp-commit-extractor.js.map +1 -0
  80. package/dist/decisions/extractors/index.d.ts +31 -0
  81. package/dist/decisions/extractors/index.d.ts.map +1 -0
  82. package/dist/decisions/extractors/index.js +63 -0
  83. package/dist/decisions/extractors/index.js.map +1 -0
  84. package/dist/decisions/extractors/java-commit-extractor.d.ts +18 -0
  85. package/dist/decisions/extractors/java-commit-extractor.d.ts.map +1 -0
  86. package/dist/decisions/extractors/java-commit-extractor.js +248 -0
  87. package/dist/decisions/extractors/java-commit-extractor.js.map +1 -0
  88. package/dist/decisions/extractors/php-commit-extractor.d.ts +18 -0
  89. package/dist/decisions/extractors/php-commit-extractor.d.ts.map +1 -0
  90. package/dist/decisions/extractors/php-commit-extractor.js +280 -0
  91. package/dist/decisions/extractors/php-commit-extractor.js.map +1 -0
  92. package/dist/decisions/extractors/python-commit-extractor.d.ts +18 -0
  93. package/dist/decisions/extractors/python-commit-extractor.d.ts.map +1 -0
  94. package/dist/decisions/extractors/python-commit-extractor.js +248 -0
  95. package/dist/decisions/extractors/python-commit-extractor.js.map +1 -0
  96. package/dist/decisions/extractors/typescript-commit-extractor.d.ts +37 -0
  97. package/dist/decisions/extractors/typescript-commit-extractor.d.ts.map +1 -0
  98. package/dist/decisions/extractors/typescript-commit-extractor.js +229 -0
  99. package/dist/decisions/extractors/typescript-commit-extractor.js.map +1 -0
  100. package/dist/decisions/git/commit-parser.d.ts +58 -0
  101. package/dist/decisions/git/commit-parser.d.ts.map +1 -0
  102. package/dist/decisions/git/commit-parser.js +344 -0
  103. package/dist/decisions/git/commit-parser.js.map +1 -0
  104. package/dist/decisions/git/diff-analyzer.d.ts +30 -0
  105. package/dist/decisions/git/diff-analyzer.d.ts.map +1 -0
  106. package/dist/decisions/git/diff-analyzer.js +492 -0
  107. package/dist/decisions/git/diff-analyzer.js.map +1 -0
  108. package/dist/decisions/git/git-walker.d.ts +64 -0
  109. package/dist/decisions/git/git-walker.d.ts.map +1 -0
  110. package/dist/decisions/git/git-walker.js +441 -0
  111. package/dist/decisions/git/git-walker.js.map +1 -0
  112. package/dist/decisions/git/index.d.ts +11 -0
  113. package/dist/decisions/git/index.d.ts.map +1 -0
  114. package/dist/decisions/git/index.js +13 -0
  115. package/dist/decisions/git/index.js.map +1 -0
  116. package/dist/decisions/git/types.d.ts +223 -0
  117. package/dist/decisions/git/types.d.ts.map +1 -0
  118. package/dist/decisions/git/types.js +7 -0
  119. package/dist/decisions/git/types.js.map +1 -0
  120. package/dist/decisions/index.d.ts +27 -0
  121. package/dist/decisions/index.d.ts.map +1 -0
  122. package/dist/decisions/index.js +45 -0
  123. package/dist/decisions/index.js.map +1 -0
  124. package/dist/decisions/types.d.ts +530 -0
  125. package/dist/decisions/types.d.ts.map +1 -0
  126. package/dist/decisions/types.js +8 -0
  127. package/dist/decisions/types.js.map +1 -0
  128. package/dist/go/go-analyzer.d.ts +203 -0
  129. package/dist/go/go-analyzer.d.ts.map +1 -0
  130. package/dist/go/go-analyzer.js +509 -0
  131. package/dist/go/go-analyzer.js.map +1 -0
  132. package/dist/go/index.d.ts +7 -0
  133. package/dist/go/index.d.ts.map +1 -0
  134. package/dist/go/index.js +8 -0
  135. package/dist/go/index.js.map +1 -0
  136. package/dist/index.d.ts +11 -0
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +56 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/parsers/tree-sitter/go-loader.d.ts +50 -0
  141. package/dist/parsers/tree-sitter/go-loader.d.ts.map +1 -0
  142. package/dist/parsers/tree-sitter/go-loader.js +161 -0
  143. package/dist/parsers/tree-sitter/go-loader.js.map +1 -0
  144. package/dist/parsers/tree-sitter/tree-sitter-go-parser.d.ts +250 -0
  145. package/dist/parsers/tree-sitter/tree-sitter-go-parser.d.ts.map +1 -0
  146. package/dist/parsers/tree-sitter/tree-sitter-go-parser.js +707 -0
  147. package/dist/parsers/tree-sitter/tree-sitter-go-parser.js.map +1 -0
  148. package/dist/parsers/types.d.ts +1 -1
  149. package/dist/parsers/types.d.ts.map +1 -1
  150. package/dist/simulation/approach-generator.d.ts +73 -0
  151. package/dist/simulation/approach-generator.d.ts.map +1 -0
  152. package/dist/simulation/approach-generator.js +371 -0
  153. package/dist/simulation/approach-generator.js.map +1 -0
  154. package/dist/simulation/index.d.ts +14 -0
  155. package/dist/simulation/index.d.ts.map +1 -0
  156. package/dist/simulation/index.js +19 -0
  157. package/dist/simulation/index.js.map +1 -0
  158. package/dist/simulation/language-strategies/csharp-strategies.d.ts +17 -0
  159. package/dist/simulation/language-strategies/csharp-strategies.d.ts.map +1 -0
  160. package/dist/simulation/language-strategies/csharp-strategies.js +118 -0
  161. package/dist/simulation/language-strategies/csharp-strategies.js.map +1 -0
  162. package/dist/simulation/language-strategies/index.d.ts +41 -0
  163. package/dist/simulation/language-strategies/index.d.ts.map +1 -0
  164. package/dist/simulation/language-strategies/index.js +92 -0
  165. package/dist/simulation/language-strategies/index.js.map +1 -0
  166. package/dist/simulation/language-strategies/java-strategies.d.ts +17 -0
  167. package/dist/simulation/language-strategies/java-strategies.d.ts.map +1 -0
  168. package/dist/simulation/language-strategies/java-strategies.js +119 -0
  169. package/dist/simulation/language-strategies/java-strategies.js.map +1 -0
  170. package/dist/simulation/language-strategies/php-strategies.d.ts +17 -0
  171. package/dist/simulation/language-strategies/php-strategies.d.ts.map +1 -0
  172. package/dist/simulation/language-strategies/php-strategies.js +129 -0
  173. package/dist/simulation/language-strategies/php-strategies.js.map +1 -0
  174. package/dist/simulation/language-strategies/python-strategies.d.ts +17 -0
  175. package/dist/simulation/language-strategies/python-strategies.d.ts.map +1 -0
  176. package/dist/simulation/language-strategies/python-strategies.js +208 -0
  177. package/dist/simulation/language-strategies/python-strategies.js.map +1 -0
  178. package/dist/simulation/language-strategies/types.d.ts +67 -0
  179. package/dist/simulation/language-strategies/types.d.ts.map +1 -0
  180. package/dist/simulation/language-strategies/types.js +23 -0
  181. package/dist/simulation/language-strategies/types.js.map +1 -0
  182. package/dist/simulation/language-strategies/typescript-strategies.d.ts +17 -0
  183. package/dist/simulation/language-strategies/typescript-strategies.d.ts.map +1 -0
  184. package/dist/simulation/language-strategies/typescript-strategies.js +251 -0
  185. package/dist/simulation/language-strategies/typescript-strategies.js.map +1 -0
  186. package/dist/simulation/scorers/friction-scorer.d.ts +45 -0
  187. package/dist/simulation/scorers/friction-scorer.d.ts.map +1 -0
  188. package/dist/simulation/scorers/friction-scorer.js +336 -0
  189. package/dist/simulation/scorers/friction-scorer.js.map +1 -0
  190. package/dist/simulation/scorers/impact-scorer.d.ts +56 -0
  191. package/dist/simulation/scorers/impact-scorer.d.ts.map +1 -0
  192. package/dist/simulation/scorers/impact-scorer.js +273 -0
  193. package/dist/simulation/scorers/impact-scorer.js.map +1 -0
  194. package/dist/simulation/scorers/index.d.ts +12 -0
  195. package/dist/simulation/scorers/index.d.ts.map +1 -0
  196. package/dist/simulation/scorers/index.js +12 -0
  197. package/dist/simulation/scorers/index.js.map +1 -0
  198. package/dist/simulation/scorers/pattern-alignment-scorer.d.ts +83 -0
  199. package/dist/simulation/scorers/pattern-alignment-scorer.d.ts.map +1 -0
  200. package/dist/simulation/scorers/pattern-alignment-scorer.js +367 -0
  201. package/dist/simulation/scorers/pattern-alignment-scorer.js.map +1 -0
  202. package/dist/simulation/scorers/security-scorer.d.ts +63 -0
  203. package/dist/simulation/scorers/security-scorer.d.ts.map +1 -0
  204. package/dist/simulation/scorers/security-scorer.js +346 -0
  205. package/dist/simulation/scorers/security-scorer.js.map +1 -0
  206. package/dist/simulation/simulation-engine.d.ts +89 -0
  207. package/dist/simulation/simulation-engine.d.ts.map +1 -0
  208. package/dist/simulation/simulation-engine.js +480 -0
  209. package/dist/simulation/simulation-engine.js.map +1 -0
  210. package/dist/simulation/types.d.ts +200 -0
  211. package/dist/simulation/types.d.ts.map +1 -0
  212. package/dist/simulation/types.js +23 -0
  213. package/dist/simulation/types.js.map +1 -0
  214. package/dist/speculative/approach-generator.d.ts +2 -0
  215. package/dist/speculative/approach-generator.d.ts.map +1 -0
  216. package/dist/speculative/approach-generator.js +2 -0
  217. package/dist/speculative/approach-generator.js.map +1 -0
  218. package/dist/speculative/templates/types.d.ts +133 -0
  219. package/dist/speculative/templates/types.d.ts.map +1 -0
  220. package/dist/speculative/templates/types.js +208 -0
  221. package/dist/speculative/templates/types.js.map +1 -0
  222. package/dist/speculative/types.d.ts +523 -0
  223. package/dist/speculative/types.d.ts.map +1 -0
  224. package/dist/speculative/types.js +71 -0
  225. package/dist/speculative/types.js.map +1 -0
  226. package/dist/test-topology/extractors/base-test-extractor.d.ts +1 -1
  227. package/dist/test-topology/extractors/base-test-extractor.d.ts.map +1 -1
  228. package/dist/test-topology/extractors/base-test-extractor.js.map +1 -1
  229. package/dist/test-topology/extractors/go-test-extractor.d.ts +33 -0
  230. package/dist/test-topology/extractors/go-test-extractor.d.ts.map +1 -0
  231. package/dist/test-topology/extractors/go-test-extractor.js +436 -0
  232. package/dist/test-topology/extractors/go-test-extractor.js.map +1 -0
  233. package/dist/test-topology/extractors/index.d.ts +1 -0
  234. package/dist/test-topology/extractors/index.d.ts.map +1 -1
  235. package/dist/test-topology/extractors/index.js +1 -0
  236. package/dist/test-topology/extractors/index.js.map +1 -1
  237. package/dist/test-topology/extractors/regex/go-test-regex.d.ts +62 -0
  238. package/dist/test-topology/extractors/regex/go-test-regex.d.ts.map +1 -0
  239. package/dist/test-topology/extractors/regex/go-test-regex.js +528 -0
  240. package/dist/test-topology/extractors/regex/go-test-regex.js.map +1 -0
  241. package/dist/test-topology/extractors/regex/index.d.ts +1 -0
  242. package/dist/test-topology/extractors/regex/index.d.ts.map +1 -1
  243. package/dist/test-topology/extractors/regex/index.js +4 -0
  244. package/dist/test-topology/extractors/regex/index.js.map +1 -1
  245. package/dist/test-topology/hybrid-test-topology-analyzer.d.ts.map +1 -1
  246. package/dist/test-topology/hybrid-test-topology-analyzer.js +1 -0
  247. package/dist/test-topology/hybrid-test-topology-analyzer.js.map +1 -1
  248. package/dist/test-topology/test-topology-analyzer.d.ts.map +1 -1
  249. package/dist/test-topology/test-topology-analyzer.js +1 -0
  250. package/dist/test-topology/test-topology-analyzer.js.map +1 -1
  251. package/dist/test-topology/types.d.ts +2 -2
  252. package/dist/test-topology/types.d.ts.map +1 -1
  253. package/dist/unified-provider/matching/database-sql-matcher.d.ts +42 -0
  254. package/dist/unified-provider/matching/database-sql-matcher.d.ts.map +1 -0
  255. package/dist/unified-provider/matching/database-sql-matcher.js +282 -0
  256. package/dist/unified-provider/matching/database-sql-matcher.js.map +1 -0
  257. package/dist/unified-provider/matching/gorm-matcher.d.ts +41 -0
  258. package/dist/unified-provider/matching/gorm-matcher.d.ts.map +1 -0
  259. package/dist/unified-provider/matching/gorm-matcher.js +222 -0
  260. package/dist/unified-provider/matching/gorm-matcher.js.map +1 -0
  261. package/dist/unified-provider/matching/index.d.ts +3 -0
  262. package/dist/unified-provider/matching/index.d.ts.map +1 -1
  263. package/dist/unified-provider/matching/index.js +4 -0
  264. package/dist/unified-provider/matching/index.js.map +1 -1
  265. package/dist/unified-provider/matching/matcher-registry.d.ts.map +1 -1
  266. package/dist/unified-provider/matching/matcher-registry.js +7 -0
  267. package/dist/unified-provider/matching/matcher-registry.js.map +1 -1
  268. package/dist/unified-provider/matching/sqlx-matcher.d.ts +40 -0
  269. package/dist/unified-provider/matching/sqlx-matcher.d.ts.map +1 -0
  270. package/dist/unified-provider/matching/sqlx-matcher.js +214 -0
  271. package/dist/unified-provider/matching/sqlx-matcher.js.map +1 -0
  272. package/dist/unified-provider/normalization/go-normalizer.d.ts +62 -0
  273. package/dist/unified-provider/normalization/go-normalizer.d.ts.map +1 -0
  274. package/dist/unified-provider/normalization/go-normalizer.js +608 -0
  275. package/dist/unified-provider/normalization/go-normalizer.js.map +1 -0
  276. package/dist/unified-provider/normalization/index.d.ts +1 -0
  277. package/dist/unified-provider/normalization/index.d.ts.map +1 -1
  278. package/dist/unified-provider/normalization/index.js +6 -1
  279. package/dist/unified-provider/normalization/index.js.map +1 -1
  280. package/dist/unified-provider/types.d.ts +1 -1
  281. package/dist/unified-provider/types.d.ts.map +1 -1
  282. package/dist/wpf/extractors/binding-error-detector.d.ts +75 -0
  283. package/dist/wpf/extractors/binding-error-detector.d.ts.map +1 -0
  284. package/dist/wpf/extractors/binding-error-detector.js +290 -0
  285. package/dist/wpf/extractors/binding-error-detector.js.map +1 -0
  286. package/dist/wpf/extractors/code-behind-linker.d.ts +70 -0
  287. package/dist/wpf/extractors/code-behind-linker.d.ts.map +1 -0
  288. package/dist/wpf/extractors/code-behind-linker.js +172 -0
  289. package/dist/wpf/extractors/code-behind-linker.js.map +1 -0
  290. package/dist/wpf/extractors/dependency-property-extractor.d.ts +61 -0
  291. package/dist/wpf/extractors/dependency-property-extractor.d.ts.map +1 -0
  292. package/dist/wpf/extractors/dependency-property-extractor.js +201 -0
  293. package/dist/wpf/extractors/dependency-property-extractor.js.map +1 -0
  294. package/dist/wpf/extractors/regex/viewmodel-regex.d.ts +82 -0
  295. package/dist/wpf/extractors/regex/viewmodel-regex.d.ts.map +1 -0
  296. package/dist/wpf/extractors/regex/viewmodel-regex.js +412 -0
  297. package/dist/wpf/extractors/regex/viewmodel-regex.js.map +1 -0
  298. package/dist/wpf/extractors/regex/xaml-regex.d.ts +77 -0
  299. package/dist/wpf/extractors/regex/xaml-regex.d.ts.map +1 -0
  300. package/dist/wpf/extractors/regex/xaml-regex.js +353 -0
  301. package/dist/wpf/extractors/regex/xaml-regex.js.map +1 -0
  302. package/dist/wpf/extractors/resource-dictionary-parser.d.ts +103 -0
  303. package/dist/wpf/extractors/resource-dictionary-parser.d.ts.map +1 -0
  304. package/dist/wpf/extractors/resource-dictionary-parser.js +296 -0
  305. package/dist/wpf/extractors/resource-dictionary-parser.js.map +1 -0
  306. package/dist/wpf/extractors/value-converter-extractor.d.ts +128 -0
  307. package/dist/wpf/extractors/value-converter-extractor.d.ts.map +1 -0
  308. package/dist/wpf/extractors/value-converter-extractor.js +312 -0
  309. package/dist/wpf/extractors/value-converter-extractor.js.map +1 -0
  310. package/dist/wpf/extractors/viewmodel-hybrid-extractor.d.ts +104 -0
  311. package/dist/wpf/extractors/viewmodel-hybrid-extractor.d.ts.map +1 -0
  312. package/dist/wpf/extractors/viewmodel-hybrid-extractor.js +513 -0
  313. package/dist/wpf/extractors/viewmodel-hybrid-extractor.js.map +1 -0
  314. package/dist/wpf/extractors/xaml-hybrid-extractor.d.ts +98 -0
  315. package/dist/wpf/extractors/xaml-hybrid-extractor.d.ts.map +1 -0
  316. package/dist/wpf/extractors/xaml-hybrid-extractor.js +444 -0
  317. package/dist/wpf/extractors/xaml-hybrid-extractor.js.map +1 -0
  318. package/dist/wpf/index.d.ts +25 -0
  319. package/dist/wpf/index.d.ts.map +1 -0
  320. package/dist/wpf/index.js +31 -0
  321. package/dist/wpf/index.js.map +1 -0
  322. package/dist/wpf/integration/wpf-callgraph-adapter.d.ts +82 -0
  323. package/dist/wpf/integration/wpf-callgraph-adapter.d.ts.map +1 -0
  324. package/dist/wpf/integration/wpf-callgraph-adapter.js +311 -0
  325. package/dist/wpf/integration/wpf-callgraph-adapter.js.map +1 -0
  326. package/dist/wpf/integration/wpf-data-flow-tracer.d.ts +129 -0
  327. package/dist/wpf/integration/wpf-data-flow-tracer.d.ts.map +1 -0
  328. package/dist/wpf/integration/wpf-data-flow-tracer.js +367 -0
  329. package/dist/wpf/integration/wpf-data-flow-tracer.js.map +1 -0
  330. package/dist/wpf/linkers/datacontext-resolver.d.ts +66 -0
  331. package/dist/wpf/linkers/datacontext-resolver.d.ts.map +1 -0
  332. package/dist/wpf/linkers/datacontext-resolver.js +240 -0
  333. package/dist/wpf/linkers/datacontext-resolver.js.map +1 -0
  334. package/dist/wpf/linkers/viewmodel-linker.d.ts +71 -0
  335. package/dist/wpf/linkers/viewmodel-linker.d.ts.map +1 -0
  336. package/dist/wpf/linkers/viewmodel-linker.js +268 -0
  337. package/dist/wpf/linkers/viewmodel-linker.js.map +1 -0
  338. package/dist/wpf/types.d.ts +451 -0
  339. package/dist/wpf/types.d.ts.map +1 -0
  340. package/dist/wpf/types.js +8 -0
  341. package/dist/wpf/types.js.map +1 -0
  342. package/dist/wpf/wpf-analyzer.d.ts +114 -0
  343. package/dist/wpf/wpf-analyzer.d.ts.map +1 -0
  344. package/dist/wpf/wpf-analyzer.js +332 -0
  345. package/dist/wpf/wpf-analyzer.js.map +1 -0
  346. package/dist/wrappers/integration/adapter.d.ts.map +1 -1
  347. package/dist/wrappers/integration/adapter.js +1 -0
  348. package/dist/wrappers/integration/adapter.js.map +1 -1
  349. package/package.json +29 -18
  350. package/LICENSE +0 -21
@@ -0,0 +1,584 @@
1
+ /**
2
+ * Constraint Store
3
+ *
4
+ * Manages storage and retrieval of architectural constraints.
5
+ * Constraints are stored in .drift/constraints/ with category-based sharding.
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import { EventEmitter } from 'node:events';
10
+ import { CONSTRAINT_CATEGORIES, CONSTRAINT_STATUSES, CONSTRAINT_LANGUAGES, } from '../types.js';
11
+ // =============================================================================
12
+ // Constants
13
+ // =============================================================================
14
+ const CONSTRAINTS_DIR = '.drift/constraints';
15
+ const INDEX_FILE = 'index.json';
16
+ const SCHEMA_VERSION = '1.0.0';
17
+ // =============================================================================
18
+ // Constraint Store
19
+ // =============================================================================
20
+ export class ConstraintStore extends EventEmitter {
21
+ constraintsDir;
22
+ /** In-memory cache of all constraints */
23
+ constraints = new Map();
24
+ /** Index for fast lookups */
25
+ index = null;
26
+ /** Whether the store has been initialized */
27
+ initialized = false;
28
+ constructor(config) {
29
+ super();
30
+ this.constraintsDir = path.join(config.rootDir, CONSTRAINTS_DIR);
31
+ }
32
+ // ===========================================================================
33
+ // Initialization
34
+ // ===========================================================================
35
+ /**
36
+ * Initialize the store, loading all constraints from disk
37
+ */
38
+ async initialize() {
39
+ if (this.initialized)
40
+ return;
41
+ await this.ensureDirectories();
42
+ await this.loadAll();
43
+ this.initialized = true;
44
+ this.emit('initialized', { constraintCount: this.constraints.size });
45
+ }
46
+ /**
47
+ * Ensure all required directories exist
48
+ */
49
+ async ensureDirectories() {
50
+ const dirs = [
51
+ this.constraintsDir,
52
+ path.join(this.constraintsDir, 'discovered'),
53
+ path.join(this.constraintsDir, 'approved'),
54
+ path.join(this.constraintsDir, 'ignored'),
55
+ path.join(this.constraintsDir, 'custom'),
56
+ path.join(this.constraintsDir, 'history'),
57
+ ];
58
+ for (const dir of dirs) {
59
+ await fs.mkdir(dir, { recursive: true });
60
+ }
61
+ }
62
+ /**
63
+ * Load all constraints from disk
64
+ */
65
+ async loadAll() {
66
+ this.constraints.clear();
67
+ for (const status of CONSTRAINT_STATUSES) {
68
+ const statusDir = path.join(this.constraintsDir, status);
69
+ try {
70
+ const files = await fs.readdir(statusDir);
71
+ for (const file of files) {
72
+ if (!file.endsWith('.json'))
73
+ continue;
74
+ const filePath = path.join(statusDir, file);
75
+ const content = await fs.readFile(filePath, 'utf-8');
76
+ const data = JSON.parse(content);
77
+ for (const constraint of data.constraints) {
78
+ this.constraints.set(constraint.id, constraint);
79
+ }
80
+ }
81
+ }
82
+ catch (error) {
83
+ // Directory might not exist yet, that's fine
84
+ if (error.code !== 'ENOENT') {
85
+ throw error;
86
+ }
87
+ }
88
+ }
89
+ // Load or rebuild index
90
+ await this.loadOrRebuildIndex();
91
+ }
92
+ // ===========================================================================
93
+ // CRUD Operations
94
+ // ===========================================================================
95
+ /**
96
+ * Add a new constraint
97
+ */
98
+ async add(constraint) {
99
+ this.ensureInitialized();
100
+ // Validate constraint
101
+ this.validateConstraint(constraint);
102
+ // Add to memory
103
+ this.constraints.set(constraint.id, constraint);
104
+ // Persist to disk
105
+ await this.saveConstraint(constraint);
106
+ // Update index
107
+ await this.rebuildIndex();
108
+ this.emit('constraint:added', constraint);
109
+ }
110
+ /**
111
+ * Add multiple constraints
112
+ */
113
+ async addMany(constraints) {
114
+ this.ensureInitialized();
115
+ for (const constraint of constraints) {
116
+ this.validateConstraint(constraint);
117
+ this.constraints.set(constraint.id, constraint);
118
+ }
119
+ // Batch save by category and status
120
+ await this.saveAll();
121
+ // Update index
122
+ await this.rebuildIndex();
123
+ this.emit('constraints:added', { count: constraints.length });
124
+ }
125
+ /**
126
+ * Get a constraint by ID
127
+ */
128
+ get(id) {
129
+ this.ensureInitialized();
130
+ return this.constraints.get(id);
131
+ }
132
+ /**
133
+ * Get all constraints
134
+ */
135
+ getAll() {
136
+ this.ensureInitialized();
137
+ return Array.from(this.constraints.values());
138
+ }
139
+ /**
140
+ * Update a constraint
141
+ */
142
+ async update(id, updates) {
143
+ this.ensureInitialized();
144
+ const existing = this.constraints.get(id);
145
+ if (!existing)
146
+ return null;
147
+ const updated = {
148
+ ...existing,
149
+ ...updates,
150
+ id: existing.id, // ID cannot be changed
151
+ metadata: {
152
+ ...existing.metadata,
153
+ ...updates.metadata,
154
+ updatedAt: new Date().toISOString(),
155
+ },
156
+ };
157
+ // If status changed, need to move file
158
+ const statusChanged = updates.status && updates.status !== existing.status;
159
+ this.constraints.set(id, updated);
160
+ if (statusChanged) {
161
+ // Remove from old location
162
+ await this.removeConstraintFile(existing);
163
+ }
164
+ // Save to new/current location
165
+ await this.saveConstraint(updated);
166
+ // Update index
167
+ await this.rebuildIndex();
168
+ this.emit('constraint:updated', updated);
169
+ return updated;
170
+ }
171
+ /**
172
+ * Delete a constraint
173
+ */
174
+ async delete(id) {
175
+ this.ensureInitialized();
176
+ const constraint = this.constraints.get(id);
177
+ if (!constraint)
178
+ return false;
179
+ this.constraints.delete(id);
180
+ await this.removeConstraintFile(constraint);
181
+ await this.rebuildIndex();
182
+ this.emit('constraint:deleted', { id });
183
+ return true;
184
+ }
185
+ /**
186
+ * Approve a discovered constraint
187
+ */
188
+ async approve(id, approvedBy) {
189
+ const existing = this.get(id);
190
+ if (!existing)
191
+ return null;
192
+ const updates = {
193
+ status: 'approved',
194
+ metadata: {
195
+ ...existing.metadata,
196
+ schemaVersion: SCHEMA_VERSION,
197
+ createdAt: existing.metadata.createdAt ?? new Date().toISOString(),
198
+ updatedAt: new Date().toISOString(),
199
+ approvedAt: new Date().toISOString(),
200
+ },
201
+ };
202
+ if (approvedBy) {
203
+ updates.metadata.approvedBy = approvedBy;
204
+ }
205
+ return this.update(id, updates);
206
+ }
207
+ /**
208
+ * Ignore a discovered constraint
209
+ */
210
+ async ignore(id, reason) {
211
+ const existing = this.get(id);
212
+ if (!existing)
213
+ return null;
214
+ const updates = {
215
+ status: 'ignored',
216
+ metadata: {
217
+ ...existing.metadata,
218
+ schemaVersion: SCHEMA_VERSION,
219
+ createdAt: existing.metadata.createdAt ?? new Date().toISOString(),
220
+ updatedAt: new Date().toISOString(),
221
+ },
222
+ };
223
+ if (reason) {
224
+ updates.metadata.notes = reason;
225
+ }
226
+ return this.update(id, updates);
227
+ }
228
+ // ===========================================================================
229
+ // Query Operations
230
+ // ===========================================================================
231
+ /**
232
+ * Query constraints with filters
233
+ */
234
+ query(options = {}) {
235
+ this.ensureInitialized();
236
+ let results = Array.from(this.constraints.values());
237
+ // Apply filters
238
+ if (options.category) {
239
+ results = results.filter(c => c.category === options.category);
240
+ }
241
+ if (options.categories?.length) {
242
+ results = results.filter(c => options.categories.includes(c.category));
243
+ }
244
+ if (options.status) {
245
+ results = results.filter(c => c.status === options.status);
246
+ }
247
+ if (options.statuses?.length) {
248
+ results = results.filter(c => options.statuses.includes(c.status));
249
+ }
250
+ if (options.language) {
251
+ results = results.filter(c => c.language === options.language || c.language === 'all');
252
+ }
253
+ if (options.minConfidence !== undefined) {
254
+ results = results.filter(c => c.confidence.score >= options.minConfidence);
255
+ }
256
+ if (options.enforcement) {
257
+ results = results.filter(c => c.enforcement.level === options.enforcement);
258
+ }
259
+ if (options.tags?.length) {
260
+ results = results.filter(c => options.tags.some(tag => c.metadata.tags?.includes(tag)));
261
+ }
262
+ if (options.search) {
263
+ const searchLower = options.search.toLowerCase();
264
+ results = results.filter(c => c.name.toLowerCase().includes(searchLower) ||
265
+ c.description.toLowerCase().includes(searchLower));
266
+ }
267
+ if (options.file) {
268
+ results = results.filter(c => this.constraintAppliesToFile(c, options.file));
269
+ }
270
+ // Sort by confidence (highest first)
271
+ results.sort((a, b) => b.confidence.score - a.confidence.score);
272
+ // Pagination
273
+ const total = results.length;
274
+ const offset = options.offset ?? 0;
275
+ const limit = options.limit ?? 50;
276
+ const paged = results.slice(offset, offset + limit);
277
+ return {
278
+ constraints: paged,
279
+ total,
280
+ hasMore: offset + limit < total,
281
+ offset,
282
+ limit,
283
+ };
284
+ }
285
+ /**
286
+ * Get constraints applicable to a specific file
287
+ */
288
+ getForFile(filePath) {
289
+ this.ensureInitialized();
290
+ return Array.from(this.constraints.values()).filter(c => this.constraintAppliesToFile(c, filePath));
291
+ }
292
+ /**
293
+ * Get constraints by category
294
+ */
295
+ getByCategory(category) {
296
+ this.ensureInitialized();
297
+ return Array.from(this.constraints.values()).filter(c => c.category === category);
298
+ }
299
+ /**
300
+ * Get constraints by status
301
+ */
302
+ getByStatus(status) {
303
+ this.ensureInitialized();
304
+ return Array.from(this.constraints.values()).filter(c => c.status === status);
305
+ }
306
+ /**
307
+ * Get active constraints (approved + discovered with high confidence)
308
+ */
309
+ getActive(minConfidence = 0.9) {
310
+ this.ensureInitialized();
311
+ return Array.from(this.constraints.values()).filter(c => c.status === 'approved' ||
312
+ (c.status === 'discovered' && c.confidence.score >= minConfidence));
313
+ }
314
+ // ===========================================================================
315
+ // Index Operations
316
+ // ===========================================================================
317
+ /**
318
+ * Get the constraint index
319
+ */
320
+ getIndex() {
321
+ return this.index;
322
+ }
323
+ /**
324
+ * Get constraint counts
325
+ */
326
+ getCounts() {
327
+ this.ensureInitialized();
328
+ const counts = {
329
+ total: this.constraints.size,
330
+ byStatus: {},
331
+ byCategory: {},
332
+ byLanguage: {},
333
+ byEnforcement: { error: 0, warning: 0, info: 0 },
334
+ };
335
+ // Initialize all counts to 0
336
+ for (const status of CONSTRAINT_STATUSES) {
337
+ counts.byStatus[status] = 0;
338
+ }
339
+ for (const category of CONSTRAINT_CATEGORIES) {
340
+ counts.byCategory[category] = 0;
341
+ }
342
+ for (const language of CONSTRAINT_LANGUAGES) {
343
+ counts.byLanguage[language] = 0;
344
+ }
345
+ // Count
346
+ for (const constraint of this.constraints.values()) {
347
+ counts.byStatus[constraint.status]++;
348
+ counts.byCategory[constraint.category]++;
349
+ counts.byLanguage[constraint.language]++;
350
+ counts.byEnforcement[constraint.enforcement.level]++;
351
+ }
352
+ return counts;
353
+ }
354
+ /**
355
+ * Get constraint summaries for listing
356
+ */
357
+ getSummaries() {
358
+ this.ensureInitialized();
359
+ return Array.from(this.constraints.values()).map(c => ({
360
+ id: c.id,
361
+ name: c.name,
362
+ description: c.description,
363
+ category: c.category,
364
+ language: c.language,
365
+ status: c.status,
366
+ confidence: c.confidence.score,
367
+ enforcement: c.enforcement.level,
368
+ evidence: c.confidence.evidence,
369
+ violations: c.confidence.violations,
370
+ type: c.invariant.type,
371
+ }));
372
+ }
373
+ // ===========================================================================
374
+ // Private Helpers
375
+ // ===========================================================================
376
+ ensureInitialized() {
377
+ if (!this.initialized) {
378
+ throw new Error('ConstraintStore not initialized. Call initialize() first.');
379
+ }
380
+ }
381
+ validateConstraint(constraint) {
382
+ if (!constraint.id) {
383
+ throw new Error('Constraint must have an id');
384
+ }
385
+ if (!constraint.name) {
386
+ throw new Error('Constraint must have a name');
387
+ }
388
+ if (!CONSTRAINT_CATEGORIES.includes(constraint.category)) {
389
+ throw new Error(`Invalid constraint category: ${constraint.category}`);
390
+ }
391
+ if (!CONSTRAINT_STATUSES.includes(constraint.status)) {
392
+ throw new Error(`Invalid constraint status: ${constraint.status}`);
393
+ }
394
+ if (!CONSTRAINT_LANGUAGES.includes(constraint.language)) {
395
+ throw new Error(`Invalid constraint language: ${constraint.language}`);
396
+ }
397
+ }
398
+ constraintAppliesToFile(constraint, filePath) {
399
+ const scope = constraint.scope;
400
+ // Check exclusions first
401
+ if (scope.exclude?.files?.length) {
402
+ for (const pattern of scope.exclude.files) {
403
+ if (this.matchGlob(filePath, pattern)) {
404
+ return false;
405
+ }
406
+ }
407
+ }
408
+ if (scope.exclude?.directories?.length) {
409
+ for (const dir of scope.exclude.directories) {
410
+ if (filePath.includes(dir)) {
411
+ return false;
412
+ }
413
+ }
414
+ }
415
+ // Check inclusions
416
+ if (scope.files?.length) {
417
+ return scope.files.some(pattern => this.matchGlob(filePath, pattern));
418
+ }
419
+ // Check language match
420
+ if (constraint.language !== 'all') {
421
+ const ext = path.extname(filePath).toLowerCase();
422
+ const langExtensions = {
423
+ typescript: ['.ts', '.tsx'],
424
+ javascript: ['.js', '.jsx', '.mjs', '.cjs'],
425
+ python: ['.py'],
426
+ java: ['.java'],
427
+ csharp: ['.cs'],
428
+ php: ['.php'],
429
+ all: [],
430
+ };
431
+ if (!langExtensions[constraint.language].includes(ext)) {
432
+ return false;
433
+ }
434
+ }
435
+ // If no specific file scope, constraint applies to all matching language files
436
+ return true;
437
+ }
438
+ matchGlob(filePath, pattern) {
439
+ // Simple glob matching (supports * and **)
440
+ const regexPattern = pattern
441
+ .replace(/\*\*/g, '{{GLOBSTAR}}')
442
+ .replace(/\*/g, '[^/]*')
443
+ .replace(/{{GLOBSTAR}}/g, '.*')
444
+ .replace(/\//g, '\\/');
445
+ const regex = new RegExp(`^${regexPattern}$`);
446
+ return regex.test(filePath);
447
+ }
448
+ async saveConstraint(constraint) {
449
+ const filePath = this.getConstraintFilePath(constraint);
450
+ const dir = path.dirname(filePath);
451
+ // Load existing file or create new
452
+ let fileData;
453
+ try {
454
+ const content = await fs.readFile(filePath, 'utf-8');
455
+ fileData = JSON.parse(content);
456
+ }
457
+ catch {
458
+ fileData = {
459
+ version: SCHEMA_VERSION,
460
+ generatedAt: new Date().toISOString(),
461
+ category: constraint.category,
462
+ status: constraint.status,
463
+ constraints: [],
464
+ };
465
+ }
466
+ // Update or add constraint
467
+ const existingIndex = fileData.constraints.findIndex(c => c.id === constraint.id);
468
+ if (existingIndex >= 0) {
469
+ fileData.constraints[existingIndex] = constraint;
470
+ }
471
+ else {
472
+ fileData.constraints.push(constraint);
473
+ }
474
+ fileData.generatedAt = new Date().toISOString();
475
+ await fs.mkdir(dir, { recursive: true });
476
+ await fs.writeFile(filePath, JSON.stringify(fileData, null, 2));
477
+ }
478
+ async removeConstraintFile(constraint) {
479
+ const filePath = this.getConstraintFilePath(constraint);
480
+ try {
481
+ const content = await fs.readFile(filePath, 'utf-8');
482
+ const fileData = JSON.parse(content);
483
+ fileData.constraints = fileData.constraints.filter(c => c.id !== constraint.id);
484
+ if (fileData.constraints.length === 0) {
485
+ await fs.unlink(filePath);
486
+ }
487
+ else {
488
+ fileData.generatedAt = new Date().toISOString();
489
+ await fs.writeFile(filePath, JSON.stringify(fileData, null, 2));
490
+ }
491
+ }
492
+ catch {
493
+ // File doesn't exist, nothing to remove
494
+ }
495
+ }
496
+ getConstraintFilePath(constraint) {
497
+ return path.join(this.constraintsDir, constraint.status, `${constraint.category}.json`);
498
+ }
499
+ async saveAll() {
500
+ // Group constraints by status and category
501
+ const grouped = new Map();
502
+ for (const constraint of this.constraints.values()) {
503
+ const key = `${constraint.status}/${constraint.category}`;
504
+ const list = grouped.get(key) ?? [];
505
+ list.push(constraint);
506
+ grouped.set(key, list);
507
+ }
508
+ // Save each group
509
+ for (const [key, constraints] of grouped) {
510
+ const [status, category] = key.split('/');
511
+ const filePath = path.join(this.constraintsDir, status, `${category}.json`);
512
+ const fileData = {
513
+ version: SCHEMA_VERSION,
514
+ generatedAt: new Date().toISOString(),
515
+ category: category,
516
+ status: status,
517
+ constraints,
518
+ };
519
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
520
+ await fs.writeFile(filePath, JSON.stringify(fileData, null, 2));
521
+ }
522
+ }
523
+ async loadOrRebuildIndex() {
524
+ const indexPath = path.join(this.constraintsDir, INDEX_FILE);
525
+ try {
526
+ const content = await fs.readFile(indexPath, 'utf-8');
527
+ this.index = JSON.parse(content);
528
+ }
529
+ catch {
530
+ await this.rebuildIndex();
531
+ }
532
+ }
533
+ async rebuildIndex() {
534
+ const summaries = this.getSummaries();
535
+ const counts = this.getCounts();
536
+ // Build lookup maps
537
+ const byFile = {};
538
+ const byCategory = {};
539
+ const byLanguage = {};
540
+ const byStatus = {};
541
+ for (const constraint of this.constraints.values()) {
542
+ // By category
543
+ const categoryList = byCategory[constraint.category] ?? [];
544
+ categoryList.push(constraint.id);
545
+ byCategory[constraint.category] = categoryList;
546
+ // By language
547
+ const languageList = byLanguage[constraint.language] ?? [];
548
+ languageList.push(constraint.id);
549
+ byLanguage[constraint.language] = languageList;
550
+ // By status
551
+ const statusList = byStatus[constraint.status] ?? [];
552
+ statusList.push(constraint.id);
553
+ byStatus[constraint.status] = statusList;
554
+ // By file patterns
555
+ if (constraint.scope.files) {
556
+ for (const pattern of constraint.scope.files) {
557
+ const fileList = byFile[pattern] ?? [];
558
+ fileList.push(constraint.id);
559
+ byFile[pattern] = fileList;
560
+ }
561
+ }
562
+ }
563
+ this.index = {
564
+ version: SCHEMA_VERSION,
565
+ generatedAt: new Date().toISOString(),
566
+ counts,
567
+ byFile,
568
+ byCategory,
569
+ byLanguage,
570
+ byStatus,
571
+ summaries,
572
+ };
573
+ // Save index
574
+ const indexPath = path.join(this.constraintsDir, INDEX_FILE);
575
+ await fs.writeFile(indexPath, JSON.stringify(this.index, null, 2));
576
+ }
577
+ }
578
+ // =============================================================================
579
+ // Factory
580
+ // =============================================================================
581
+ export function createConstraintStore(config) {
582
+ return new ConstraintStore(config);
583
+ }
584
+ //# sourceMappingURL=constraint-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-store.js","sourceRoot":"","sources":["../../../src/constraints/store/constraint-store.ts"],"names":[],"mappings":"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"}