driftdetect-core 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,638 @@
1
+ /**
2
+ * Constraint Verifier
3
+ *
4
+ * Verifies code against architectural constraints.
5
+ * Supports all 6 Drift languages with language-specific evaluators.
6
+ */
7
+ import * as path from 'node:path';
8
+ // =============================================================================
9
+ // Constraint Verifier
10
+ // =============================================================================
11
+ export class ConstraintVerifier {
12
+ store;
13
+ constructor(config) {
14
+ this.store = config.store;
15
+ }
16
+ /**
17
+ * Verify a file against all applicable constraints
18
+ */
19
+ async verifyFile(filePath, content, options = {}) {
20
+ const startTime = Date.now();
21
+ const language = this.detectLanguage(filePath);
22
+ // Get applicable constraints
23
+ const constraints = this.getApplicableConstraints(filePath, language, options);
24
+ const satisfied = [];
25
+ const violations = [];
26
+ const skipped = [];
27
+ // Create file context
28
+ const context = {
29
+ filePath,
30
+ content,
31
+ language,
32
+ };
33
+ // Verify each constraint
34
+ for (const constraint of constraints) {
35
+ try {
36
+ const result = await this.verifyConstraint(constraint, context, options);
37
+ if (result.satisfied) {
38
+ satisfied.push({
39
+ constraintId: constraint.id,
40
+ constraintName: constraint.name,
41
+ category: constraint.category,
42
+ });
43
+ }
44
+ else if (result.violations) {
45
+ violations.push(...result.violations);
46
+ }
47
+ }
48
+ catch (error) {
49
+ skipped.push({
50
+ constraintId: constraint.id,
51
+ constraintName: constraint.name,
52
+ reason: `Verification error: ${error.message}`,
53
+ });
54
+ }
55
+ }
56
+ const metadata = {
57
+ file: filePath,
58
+ language,
59
+ constraintsChecked: constraints.length,
60
+ executionTimeMs: Date.now() - startTime,
61
+ timestamp: new Date().toISOString(),
62
+ };
63
+ return {
64
+ passed: violations.length === 0,
65
+ summary: this.buildSummary(satisfied, violations, skipped),
66
+ satisfied,
67
+ violations,
68
+ skipped,
69
+ metadata,
70
+ };
71
+ }
72
+ /**
73
+ * Verify a diff/change against constraints
74
+ */
75
+ async verifyChange(filePath, oldContent, newContent, options = {}) {
76
+ // Verify the new content
77
+ const result = await this.verifyFile(filePath, newContent, options);
78
+ // Filter to only violations in changed lines
79
+ const changedLines = this.getChangedLines(oldContent, newContent);
80
+ result.violations = result.violations.filter(v => changedLines.has(v.location.line));
81
+ // Update summary
82
+ result.passed = result.violations.length === 0;
83
+ result.summary = this.buildSummary(result.satisfied, result.violations, result.skipped);
84
+ return result;
85
+ }
86
+ /**
87
+ * Get constraints applicable to a file
88
+ */
89
+ getApplicableConstraints(filePath, language, options) {
90
+ let constraints = this.store.getForFile(filePath);
91
+ // Filter by language
92
+ constraints = constraints.filter(c => c.language === 'all' || c.language === language);
93
+ // Filter by status
94
+ const statuses = options.statuses ?? ['approved'];
95
+ constraints = constraints.filter(c => statuses.includes(c.status));
96
+ // Filter by category
97
+ if (options.categories?.length) {
98
+ constraints = constraints.filter(c => options.categories.includes(c.category));
99
+ }
100
+ // Filter by confidence
101
+ if (options.minConfidence !== undefined) {
102
+ constraints = constraints.filter(c => c.confidence.score >= options.minConfidence);
103
+ }
104
+ return constraints;
105
+ }
106
+ /**
107
+ * Verify a single constraint against file context
108
+ */
109
+ async verifyConstraint(constraint, context, options) {
110
+ const predicate = constraint.invariant.predicate;
111
+ const violations = [];
112
+ // Check function predicates
113
+ if (predicate.functionMustHave) {
114
+ const funcViolations = this.verifyFunctionPredicate(constraint, context, predicate.functionMustHave, options);
115
+ violations.push(...funcViolations);
116
+ }
117
+ // Check class predicates
118
+ if (predicate.classMustHave) {
119
+ const classViolations = this.verifyClassPredicate(constraint, context, predicate.classMustHave, options);
120
+ violations.push(...classViolations);
121
+ }
122
+ // Check entry point predicates
123
+ if (predicate.entryPointMustHave) {
124
+ const entryViolations = this.verifyEntryPointPredicate(constraint, context, predicate.entryPointMustHave, options);
125
+ violations.push(...entryViolations);
126
+ }
127
+ // Check naming predicates
128
+ if (predicate.naming) {
129
+ const namingViolations = this.verifyNamingPredicate(constraint, context, predicate.naming, options);
130
+ violations.push(...namingViolations);
131
+ }
132
+ // Check file structure predicates
133
+ if (predicate.fileStructure) {
134
+ const structureViolations = this.verifyFileStructurePredicate(constraint, context, predicate.fileStructure, options);
135
+ violations.push(...structureViolations);
136
+ }
137
+ return {
138
+ satisfied: violations.length === 0,
139
+ violations: violations.length > 0 ? violations : [],
140
+ };
141
+ }
142
+ /**
143
+ * Verify function predicate
144
+ */
145
+ verifyFunctionPredicate(constraint, context, predicate, options) {
146
+ const violations = [];
147
+ const functions = this.extractFunctions(context);
148
+ for (const func of functions) {
149
+ const funcViolations = [];
150
+ // Check decorators
151
+ if (predicate.decorator?.length) {
152
+ const hasDecorator = predicate.decorator.some(d => func.decorators?.some(fd => fd.includes(d)));
153
+ if (!hasDecorator) {
154
+ funcViolations.push(`Missing required decorator: ${predicate.decorator.join(' or ')}`);
155
+ }
156
+ }
157
+ // Check error handling
158
+ if (predicate.errorHandling && !func.hasErrorHandling) {
159
+ funcViolations.push('Missing error handling (try-catch)');
160
+ }
161
+ // Check async requirement
162
+ if (predicate.isAsync !== undefined && func.isAsync !== predicate.isAsync) {
163
+ funcViolations.push(predicate.isAsync ? 'Function must be async' : 'Function must not be async');
164
+ }
165
+ // Check body contains
166
+ if (predicate.bodyContains?.length) {
167
+ for (const required of predicate.bodyContains) {
168
+ if (!func.body?.includes(required)) {
169
+ funcViolations.push(`Function body must contain: ${required}`);
170
+ }
171
+ }
172
+ }
173
+ // Check body must not contain
174
+ if (predicate.bodyMustNotContain?.length) {
175
+ for (const forbidden of predicate.bodyMustNotContain) {
176
+ if (func.body?.includes(forbidden)) {
177
+ funcViolations.push(`Function body must not contain: ${forbidden}`);
178
+ }
179
+ }
180
+ }
181
+ // Create violations
182
+ for (const message of funcViolations) {
183
+ violations.push(this.createViolation(constraint, message, { file: context.filePath, line: func.line, column: 0 }, options));
184
+ }
185
+ }
186
+ return violations;
187
+ }
188
+ /**
189
+ * Verify class predicate
190
+ */
191
+ verifyClassPredicate(constraint, context, predicate, options) {
192
+ const violations = [];
193
+ const classes = this.extractClasses(context);
194
+ for (const cls of classes) {
195
+ const classViolations = [];
196
+ // Check decorators/annotations/attributes
197
+ if (predicate.decorator?.length) {
198
+ const hasDecorator = predicate.decorator.some(d => cls.decorators?.some(cd => cd.includes(d)));
199
+ if (!hasDecorator) {
200
+ classViolations.push(`Missing required decorator: ${predicate.decorator.join(' or ')}`);
201
+ }
202
+ }
203
+ // Check implements
204
+ if (predicate.implements?.length) {
205
+ const hasInterface = predicate.implements.some(i => cls.implements?.includes(i));
206
+ if (!hasInterface) {
207
+ classViolations.push(`Must implement: ${predicate.implements.join(' or ')}`);
208
+ }
209
+ }
210
+ // Check extends
211
+ if (predicate.extends?.length) {
212
+ const hasExtends = predicate.extends.some(e => cls.extends === e);
213
+ if (!hasExtends) {
214
+ classViolations.push(`Must extend: ${predicate.extends.join(' or ')}`);
215
+ }
216
+ }
217
+ // Create violations
218
+ for (const message of classViolations) {
219
+ violations.push(this.createViolation(constraint, message, { file: context.filePath, line: cls.line, column: 0 }, options));
220
+ }
221
+ }
222
+ return violations;
223
+ }
224
+ /**
225
+ * Verify entry point predicate
226
+ */
227
+ verifyEntryPointPredicate(constraint, context, predicate, options) {
228
+ const violations = [];
229
+ const entryPoints = this.extractEntryPoints(context);
230
+ for (const entry of entryPoints) {
231
+ const entryViolations = [];
232
+ // Check middleware
233
+ if (predicate.middleware?.length) {
234
+ const hasMiddleware = predicate.middleware.some(m => entry.middleware?.some(em => em.includes(m)));
235
+ if (!hasMiddleware) {
236
+ entryViolations.push(`Missing required middleware: ${predicate.middleware.join(' or ')}`);
237
+ }
238
+ }
239
+ // Check decorators
240
+ if (predicate.decorator?.length) {
241
+ const hasDecorator = predicate.decorator.some(d => entry.decorators?.some(ed => ed.includes(d)));
242
+ if (!hasDecorator) {
243
+ entryViolations.push(`Missing required decorator: ${predicate.decorator.join(' or ')}`);
244
+ }
245
+ }
246
+ // Create violations
247
+ for (const message of entryViolations) {
248
+ violations.push(this.createViolation(constraint, message, { file: context.filePath, line: entry.line, column: 0 }, options));
249
+ }
250
+ }
251
+ return violations;
252
+ }
253
+ /**
254
+ * Verify naming predicate
255
+ */
256
+ verifyNamingPredicate(constraint, context, predicate, options) {
257
+ const violations = [];
258
+ const regex = new RegExp(predicate.pattern);
259
+ // Get items to check based on scope
260
+ let items = [];
261
+ switch (predicate.scope) {
262
+ case 'file':
263
+ items = [{ name: path.basename(context.filePath), line: 1 }];
264
+ break;
265
+ case 'function':
266
+ items = this.extractFunctions(context).map(f => ({ name: f.name, line: f.line }));
267
+ break;
268
+ case 'class':
269
+ items = this.extractClasses(context).map(c => ({ name: c.name, line: c.line }));
270
+ break;
271
+ }
272
+ for (const item of items) {
273
+ let valid = regex.test(item.name);
274
+ // Check prefix
275
+ if (valid && predicate.prefix && !item.name.startsWith(predicate.prefix)) {
276
+ valid = false;
277
+ }
278
+ // Check suffix
279
+ if (valid && predicate.suffix && !item.name.endsWith(predicate.suffix)) {
280
+ valid = false;
281
+ }
282
+ if (!valid) {
283
+ violations.push(this.createViolation(constraint, `Name "${item.name}" does not match pattern: ${predicate.pattern}`, { file: context.filePath, line: item.line, column: 0 }, options));
284
+ }
285
+ }
286
+ return violations;
287
+ }
288
+ /**
289
+ * Verify file structure predicate
290
+ */
291
+ verifyFileStructurePredicate(constraint, context, predicate, options) {
292
+ const violations = [];
293
+ // Check must import
294
+ if (predicate.mustImport?.length) {
295
+ const imports = this.extractImports(context);
296
+ for (const required of predicate.mustImport) {
297
+ if (!imports.some(i => i.includes(required))) {
298
+ violations.push(this.createViolation(constraint, `Missing required import: ${required}`, { file: context.filePath, line: 1, column: 0 }, options));
299
+ }
300
+ }
301
+ }
302
+ // Check must not import
303
+ if (predicate.mustNotImport?.length) {
304
+ const imports = this.extractImports(context);
305
+ for (const forbidden of predicate.mustNotImport) {
306
+ const found = imports.find(i => i.includes(forbidden));
307
+ if (found) {
308
+ violations.push(this.createViolation(constraint, `Forbidden import found: ${forbidden}`, { file: context.filePath, line: 1, column: 0 }, options));
309
+ }
310
+ }
311
+ }
312
+ // Check max lines
313
+ if (predicate.maxLines) {
314
+ const lineCount = context.content.split('\n').length;
315
+ if (lineCount > predicate.maxLines) {
316
+ violations.push(this.createViolation(constraint, `File exceeds maximum lines (${lineCount} > ${predicate.maxLines})`, { file: context.filePath, line: 1, column: 0 }, options));
317
+ }
318
+ }
319
+ return violations;
320
+ }
321
+ // ===========================================================================
322
+ // Helper Methods
323
+ // ===========================================================================
324
+ /**
325
+ * Create a violation object
326
+ */
327
+ createViolation(constraint, message, location, options) {
328
+ const violation = {
329
+ constraintId: constraint.id,
330
+ constraintName: constraint.name,
331
+ category: constraint.category,
332
+ severity: constraint.enforcement.level,
333
+ message,
334
+ location: {
335
+ ...location,
336
+ snippet: this.getSnippet(location.file, location.line),
337
+ },
338
+ guidance: constraint.enforcement.guidance,
339
+ };
340
+ // Add fix if available and requested
341
+ if (options.includeFixes && constraint.enforcement.autoFix) {
342
+ violation.fix = {
343
+ type: constraint.enforcement.autoFix.type,
344
+ suggestion: constraint.enforcement.autoFix.template,
345
+ confidence: constraint.enforcement.autoFix.confidence,
346
+ };
347
+ }
348
+ // Add example if available and requested
349
+ if (options.includeExamples && constraint.enforcement.example) {
350
+ violation.example = constraint.enforcement.example;
351
+ }
352
+ return violation;
353
+ }
354
+ /**
355
+ * Detect language from file path
356
+ */
357
+ detectLanguage(filePath) {
358
+ const ext = path.extname(filePath).toLowerCase();
359
+ switch (ext) {
360
+ case '.ts':
361
+ case '.tsx':
362
+ return 'typescript';
363
+ case '.js':
364
+ case '.jsx':
365
+ case '.mjs':
366
+ case '.cjs':
367
+ return 'javascript';
368
+ case '.py':
369
+ return 'python';
370
+ case '.java':
371
+ return 'java';
372
+ case '.cs':
373
+ return 'csharp';
374
+ case '.php':
375
+ return 'php';
376
+ default:
377
+ return 'all';
378
+ }
379
+ }
380
+ /**
381
+ * Get changed lines between old and new content
382
+ */
383
+ getChangedLines(oldContent, newContent) {
384
+ const oldLines = oldContent.split('\n');
385
+ const newLines = newContent.split('\n');
386
+ const changed = new Set();
387
+ // Simple line-by-line comparison
388
+ const maxLines = Math.max(oldLines.length, newLines.length);
389
+ for (let i = 0; i < maxLines; i++) {
390
+ if (oldLines[i] !== newLines[i]) {
391
+ changed.add(i + 1); // 1-indexed
392
+ }
393
+ }
394
+ return changed;
395
+ }
396
+ /**
397
+ * Build summary message
398
+ */
399
+ buildSummary(satisfied, violations, skipped) {
400
+ const parts = [];
401
+ if (violations.length === 0) {
402
+ parts.push('All constraints satisfied');
403
+ }
404
+ else {
405
+ const errors = violations.filter(v => v.severity === 'error').length;
406
+ const warnings = violations.filter(v => v.severity === 'warning').length;
407
+ if (errors > 0)
408
+ parts.push(`${errors} error(s)`);
409
+ if (warnings > 0)
410
+ parts.push(`${warnings} warning(s)`);
411
+ }
412
+ parts.push(`${satisfied.length} passed`);
413
+ if (skipped.length > 0) {
414
+ parts.push(`${skipped.length} skipped`);
415
+ }
416
+ return parts.join(', ');
417
+ }
418
+ /**
419
+ * Get code snippet around a line
420
+ */
421
+ getSnippet(_filePath, _line) {
422
+ // This would need file content - simplified for now
423
+ return '';
424
+ }
425
+ // ===========================================================================
426
+ // Language-Specific Extraction (Simplified regex-based)
427
+ // ===========================================================================
428
+ extractFunctions(context) {
429
+ const functions = [];
430
+ const lines = context.content.split('\n');
431
+ // Language-specific patterns
432
+ const patterns = this.getFunctionPatterns(context.language);
433
+ for (let i = 0; i < lines.length; i++) {
434
+ const currentLine = lines[i];
435
+ if (!currentLine)
436
+ continue;
437
+ for (const pattern of patterns) {
438
+ const match = currentLine.match(pattern.regex);
439
+ if (match && match[1]) {
440
+ // Look for decorators above
441
+ const decorators = [];
442
+ for (let j = i - 1; j >= 0 && j >= i - 5; j--) {
443
+ const prevLine = lines[j];
444
+ if (!prevLine)
445
+ continue;
446
+ const decoratorMatch = prevLine.match(pattern.decoratorRegex);
447
+ if (decoratorMatch && decoratorMatch[1]) {
448
+ decorators.push(decoratorMatch[1]);
449
+ }
450
+ else if (prevLine.trim() && !prevLine.trim().startsWith('//')) {
451
+ break;
452
+ }
453
+ }
454
+ const funcEntry = {
455
+ name: match[1],
456
+ line: i + 1,
457
+ isAsync: currentLine.includes('async '),
458
+ hasErrorHandling: this.hasErrorHandling(lines, i, context.language),
459
+ };
460
+ if (decorators.length > 0) {
461
+ funcEntry.decorators = decorators;
462
+ }
463
+ functions.push(funcEntry);
464
+ }
465
+ }
466
+ }
467
+ return functions;
468
+ }
469
+ extractClasses(context) {
470
+ const classes = [];
471
+ const lines = context.content.split('\n');
472
+ const patterns = this.getClassPatterns(context.language);
473
+ for (let i = 0; i < lines.length; i++) {
474
+ const currentLine = lines[i];
475
+ if (!currentLine)
476
+ continue;
477
+ for (const pattern of patterns) {
478
+ const match = currentLine.match(pattern.regex);
479
+ if (match && match[1]) {
480
+ const classEntry = {
481
+ name: match[1],
482
+ line: i + 1,
483
+ };
484
+ if (match[2]) {
485
+ classEntry.extends = match[2];
486
+ }
487
+ if (match[3]) {
488
+ classEntry.implements = match[3].split(',').map(s => s.trim());
489
+ }
490
+ classes.push(classEntry);
491
+ }
492
+ }
493
+ }
494
+ return classes;
495
+ }
496
+ extractEntryPoints(context) {
497
+ // Entry points are functions with route decorators/annotations
498
+ const functions = this.extractFunctions(context);
499
+ return functions.filter(f => f.decorators?.some(d => /Get|Post|Put|Delete|Patch|Route|RequestMapping|app\.(get|post|put|delete)/i.test(d))).map(f => {
500
+ const entry = {
501
+ name: f.name,
502
+ line: f.line,
503
+ };
504
+ if (f.decorators) {
505
+ entry.decorators = f.decorators;
506
+ }
507
+ return entry;
508
+ });
509
+ }
510
+ extractImports(context) {
511
+ const imports = [];
512
+ const lines = context.content.split('\n');
513
+ for (const line of lines) {
514
+ if (!line)
515
+ continue;
516
+ // TypeScript/JavaScript
517
+ const tsMatch = line.match(/import\s+.*from\s+['"]([^'"]+)['"]/);
518
+ if (tsMatch?.[1])
519
+ imports.push(tsMatch[1]);
520
+ // Python
521
+ const pyMatch = line.match(/(?:from\s+(\S+)\s+)?import\s+(\S+)/);
522
+ if (pyMatch) {
523
+ const importPath = pyMatch[1] ?? pyMatch[2];
524
+ if (importPath)
525
+ imports.push(importPath);
526
+ }
527
+ // Java
528
+ const javaMatch = line.match(/import\s+(?:static\s+)?([^;]+);/);
529
+ if (javaMatch?.[1])
530
+ imports.push(javaMatch[1]);
531
+ // C#
532
+ const csMatch = line.match(/using\s+(?:static\s+)?([^;]+);/);
533
+ if (csMatch?.[1])
534
+ imports.push(csMatch[1]);
535
+ // PHP
536
+ const phpMatch = line.match(/use\s+([^;]+);/);
537
+ if (phpMatch?.[1])
538
+ imports.push(phpMatch[1]);
539
+ }
540
+ return imports;
541
+ }
542
+ getFunctionPatterns(language) {
543
+ switch (language) {
544
+ case 'typescript':
545
+ case 'javascript':
546
+ return [{
547
+ regex: /(?:async\s+)?(?:function\s+)?(\w+)\s*\([^)]*\)\s*[:{]/,
548
+ decoratorRegex: /@(\w+)/,
549
+ }];
550
+ case 'python':
551
+ return [{
552
+ regex: /def\s+(\w+)\s*\(/,
553
+ decoratorRegex: /@(\w+)/,
554
+ }];
555
+ case 'java':
556
+ return [{
557
+ regex: /(?:public|private|protected)?\s*(?:static\s+)?(?:\w+\s+)?(\w+)\s*\([^)]*\)\s*(?:throws\s+\w+)?\s*\{/,
558
+ decoratorRegex: /@(\w+)/,
559
+ }];
560
+ case 'csharp':
561
+ return [{
562
+ regex: /(?:public|private|protected|internal)?\s*(?:static\s+)?(?:async\s+)?(?:\w+\s+)?(\w+)\s*\([^)]*\)\s*\{/,
563
+ decoratorRegex: /\[(\w+)/,
564
+ }];
565
+ case 'php':
566
+ return [{
567
+ regex: /(?:public|private|protected)?\s*(?:static\s+)?function\s+(\w+)\s*\(/,
568
+ decoratorRegex: /#\[(\w+)/,
569
+ }];
570
+ default:
571
+ return [];
572
+ }
573
+ }
574
+ getClassPatterns(language) {
575
+ switch (language) {
576
+ case 'typescript':
577
+ case 'javascript':
578
+ return [{
579
+ regex: /class\s+(\w+)(?:\s+extends\s+(\w+))?(?:\s+implements\s+([^{]+))?\s*\{/,
580
+ }];
581
+ case 'python':
582
+ return [{
583
+ regex: /class\s+(\w+)(?:\(([^)]+)\))?\s*:/,
584
+ }];
585
+ case 'java':
586
+ case 'csharp':
587
+ return [{
588
+ regex: /class\s+(\w+)(?:\s+extends\s+(\w+))?(?:\s+implements\s+([^{]+))?\s*\{/,
589
+ }];
590
+ case 'php':
591
+ return [{
592
+ regex: /class\s+(\w+)(?:\s+extends\s+(\w+))?(?:\s+implements\s+([^{]+))?\s*\{/,
593
+ }];
594
+ default:
595
+ return [];
596
+ }
597
+ }
598
+ hasErrorHandling(lines, startLine, language) {
599
+ // Look for try-catch in the function body
600
+ let braceCount = 0;
601
+ let started = false;
602
+ for (let i = startLine; i < lines.length; i++) {
603
+ const currentLine = lines[i];
604
+ if (!currentLine)
605
+ continue;
606
+ // Count braces
607
+ for (const char of currentLine) {
608
+ if (char === '{') {
609
+ braceCount++;
610
+ started = true;
611
+ }
612
+ else if (char === '}') {
613
+ braceCount--;
614
+ }
615
+ }
616
+ // Check for error handling
617
+ if (language === 'python') {
618
+ if (/\btry\s*:/.test(currentLine))
619
+ return true;
620
+ }
621
+ else {
622
+ if (/\btry\s*\{/.test(currentLine))
623
+ return true;
624
+ }
625
+ // End of function
626
+ if (started && braceCount === 0)
627
+ break;
628
+ }
629
+ return false;
630
+ }
631
+ }
632
+ // =============================================================================
633
+ // Factory
634
+ // =============================================================================
635
+ export function createConstraintVerifier(config) {
636
+ return new ConstraintVerifier(config);
637
+ }
638
+ //# sourceMappingURL=constraint-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-verifier.js","sourceRoot":"","sources":["../../../src/constraints/verification/constraint-verifier.ts"],"names":[],"mappings":"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"}