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,172 @@
1
+ /**
2
+ * Code-Behind Linker
3
+ *
4
+ * Links XAML x:Class to .xaml.cs files.
5
+ * Extracts event handlers and named element usages.
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ // ============================================================================
10
+ // Regex Patterns
11
+ // ============================================================================
12
+ const CODE_BEHIND_PATTERNS = {
13
+ // Event handler method signature
14
+ eventHandler: /(?:private|protected|public)?\s*(?:async\s+)?void\s+(\w+_\w+)\s*\(\s*object\s+\w+\s*,\s*(\w+EventArgs|RoutedEventArgs|EventArgs)\s+\w+\s*\)/g,
15
+ // x:Name usage in code-behind
16
+ namedElementUsage: /\b(this\.)?(\w+)\.([\w.]+)/g,
17
+ // Class declaration with namespace
18
+ classDeclaration: /namespace\s+([\w.]+)\s*\{[\s\S]*?(?:public\s+)?partial\s+class\s+(\w+)/,
19
+ // InitializeComponent call
20
+ initializeComponent: /InitializeComponent\s*\(\s*\)/,
21
+ };
22
+ const XAML_EVENT_PATTERNS = {
23
+ // Event handler in XAML: Click="Button_Click"
24
+ eventHandler: /(\w+)\s*=\s*["']([A-Z]\w*_\w+)["']/g,
25
+ // x:Name declaration
26
+ xName: /x:Name\s*=\s*["'](\w+)["']/g,
27
+ // Element with x:Name
28
+ namedElement: /<(\w+)[^>]*x:Name\s*=\s*["'](\w+)["'][^>]*>/g,
29
+ };
30
+ // ============================================================================
31
+ // Code-Behind Linker
32
+ // ============================================================================
33
+ export class CodeBehindLinker {
34
+ /**
35
+ * Link XAML to its code-behind file
36
+ */
37
+ async link(xamlPath, xamlContent, rootDir) {
38
+ // Find code-behind file
39
+ const codeBehindPath = xamlPath + '.cs';
40
+ const fullCodeBehindPath = path.join(rootDir, codeBehindPath);
41
+ let codeBehindContent;
42
+ try {
43
+ codeBehindContent = await fs.readFile(fullCodeBehindPath, 'utf-8');
44
+ }
45
+ catch {
46
+ return null; // No code-behind file
47
+ }
48
+ // Extract class info
49
+ const classMatch = codeBehindContent.match(CODE_BEHIND_PATTERNS.classDeclaration);
50
+ if (!classMatch)
51
+ return null;
52
+ const namespace = classMatch[1] ?? '';
53
+ const className = classMatch[2] ?? '';
54
+ // Extract event handlers
55
+ const eventHandlers = this.extractEventHandlers(xamlContent, codeBehindContent, codeBehindPath);
56
+ // Extract named elements
57
+ const namedElements = this.extractNamedElements(xamlContent, codeBehindContent, codeBehindPath);
58
+ return {
59
+ xamlFile: xamlPath,
60
+ codeBehindFile: codeBehindPath,
61
+ className,
62
+ namespace,
63
+ eventHandlers,
64
+ namedElements,
65
+ };
66
+ }
67
+ /**
68
+ * Extract event handlers from XAML and find them in code-behind
69
+ */
70
+ extractEventHandlers(xamlContent, codeBehindContent, codeBehindPath) {
71
+ const handlers = [];
72
+ const xamlHandlers = new Map(); // handlerName -> eventName
73
+ // Find event handlers in XAML
74
+ let match;
75
+ while ((match = XAML_EVENT_PATTERNS.eventHandler.exec(xamlContent)) !== null) {
76
+ const eventName = match[1] ?? '';
77
+ const handlerName = match[2] ?? '';
78
+ // Skip if it's a binding or not an event
79
+ if (handlerName.includes('{') || !this.isEventName(eventName))
80
+ continue;
81
+ xamlHandlers.set(handlerName, eventName);
82
+ }
83
+ // Find handler implementations in code-behind
84
+ CODE_BEHIND_PATTERNS.eventHandler.lastIndex = 0;
85
+ while ((match = CODE_BEHIND_PATTERNS.eventHandler.exec(codeBehindContent)) !== null) {
86
+ const handlerName = match[1] ?? '';
87
+ const eventName = xamlHandlers.get(handlerName);
88
+ if (eventName) {
89
+ const line = this.getLineNumber(codeBehindContent, match.index);
90
+ handlers.push({
91
+ xamlElement: this.extractElementFromHandlerName(handlerName),
92
+ eventName,
93
+ handlerName,
94
+ handlerLocation: { file: codeBehindPath, line },
95
+ });
96
+ }
97
+ }
98
+ return handlers;
99
+ }
100
+ /**
101
+ * Extract named elements and find their usages in code-behind
102
+ */
103
+ extractNamedElements(xamlContent, codeBehindContent, codeBehindPath) {
104
+ const elements = [];
105
+ const namedElements = new Map(); // name -> elementType
106
+ // Find x:Name declarations in XAML
107
+ let match;
108
+ while ((match = XAML_EVENT_PATTERNS.namedElement.exec(xamlContent)) !== null) {
109
+ const elementType = match[1] ?? '';
110
+ const name = match[2] ?? '';
111
+ namedElements.set(name, elementType);
112
+ }
113
+ // Find usages in code-behind
114
+ for (const [name, elementType] of namedElements) {
115
+ const usages = [];
116
+ const usagePattern = new RegExp(`\\b${name}\\b`, 'g');
117
+ while ((match = usagePattern.exec(codeBehindContent)) !== null) {
118
+ // Skip the field declaration itself
119
+ const context = codeBehindContent.slice(Math.max(0, match.index - 50), match.index);
120
+ if (context.includes('private') || context.includes('internal'))
121
+ continue;
122
+ usages.push({
123
+ file: codeBehindPath,
124
+ line: this.getLineNumber(codeBehindContent, match.index),
125
+ });
126
+ }
127
+ if (usages.length > 0) {
128
+ elements.push({
129
+ xamlName: name,
130
+ elementType,
131
+ codeBehindUsages: usages,
132
+ });
133
+ }
134
+ }
135
+ return elements;
136
+ }
137
+ /**
138
+ * Check if a name is likely an event name
139
+ */
140
+ isEventName(name) {
141
+ const eventNames = [
142
+ 'Click', 'DoubleClick', 'MouseDown', 'MouseUp', 'MouseMove', 'MouseEnter', 'MouseLeave',
143
+ 'KeyDown', 'KeyUp', 'KeyPress', 'PreviewKeyDown', 'PreviewKeyUp',
144
+ 'Loaded', 'Unloaded', 'Initialized', 'Closing', 'Closed',
145
+ 'TextChanged', 'SelectionChanged', 'ValueChanged', 'CheckedChanged',
146
+ 'GotFocus', 'LostFocus', 'PreviewGotKeyboardFocus', 'PreviewLostKeyboardFocus',
147
+ 'DragEnter', 'DragLeave', 'DragOver', 'Drop',
148
+ 'SizeChanged', 'LayoutUpdated', 'Scroll',
149
+ ];
150
+ return eventNames.includes(name) || name.endsWith('Changed') || name.startsWith('Preview');
151
+ }
152
+ /**
153
+ * Extract element name from handler name (e.g., "Button_Click" -> "Button")
154
+ */
155
+ extractElementFromHandlerName(handlerName) {
156
+ const parts = handlerName.split('_');
157
+ return parts[0] ?? handlerName;
158
+ }
159
+ /**
160
+ * Get line number from character index
161
+ */
162
+ getLineNumber(content, index) {
163
+ return content.slice(0, index).split('\n').length;
164
+ }
165
+ }
166
+ /**
167
+ * Factory function
168
+ */
169
+ export function createCodeBehindLinker() {
170
+ return new CodeBehindLinker();
171
+ }
172
+ //# sourceMappingURL=code-behind-linker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-behind-linker.js","sourceRoot":"","sources":["../../../src/wpf/extractors/code-behind-linker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Dependency Property Extractor
3
+ *
4
+ * Extracts DependencyProperty definitions from C# code.
5
+ * Supports standard registration, attached properties, and property wrappers.
6
+ */
7
+ import type { DependencyPropertyInfo } from '../types.js';
8
+ export interface DependencyPropertyExtractionResult {
9
+ /** Extracted dependency properties */
10
+ properties: DependencyPropertyInfo[];
11
+ /** Owner class name */
12
+ ownerClass: string;
13
+ /** Extraction confidence */
14
+ confidence: number;
15
+ /** Extraction method */
16
+ method: 'ast' | 'regex';
17
+ }
18
+ export declare const DEPENDENCY_PROPERTY_PATTERNS: {
19
+ register: RegExp;
20
+ registerAttached: RegExp;
21
+ registerReadOnly: RegExp;
22
+ propertyWrapper: RegExp;
23
+ propertyChangedCallback: RegExp;
24
+ coerceCallback: RegExp;
25
+ validateCallback: RegExp;
26
+ defaultValue: RegExp;
27
+ classDeclaration: RegExp;
28
+ staticConstructor: RegExp;
29
+ overrideMetadata: RegExp;
30
+ };
31
+ export declare class DependencyPropertyExtractor {
32
+ /**
33
+ * Extract dependency properties from C# content
34
+ */
35
+ extract(filePath: string, content: string): DependencyPropertyExtractionResult;
36
+ /**
37
+ * Extract callbacks from metadata content
38
+ */
39
+ private extractCallbacks;
40
+ /**
41
+ * Extract default value from metadata
42
+ */
43
+ private extractDefaultValue;
44
+ /**
45
+ * Enrich properties with CLR wrapper information
46
+ */
47
+ private enrichWithWrapperInfo;
48
+ /**
49
+ * Check if a file likely contains dependency properties
50
+ */
51
+ hasDependencyProperties(content: string): boolean;
52
+ /**
53
+ * Get line number from character index
54
+ */
55
+ private getLineNumber;
56
+ }
57
+ /**
58
+ * Factory function
59
+ */
60
+ export declare function createDependencyPropertyExtractor(): DependencyPropertyExtractor;
61
+ //# sourceMappingURL=dependency-property-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-property-extractor.d.ts","sourceRoot":"","sources":["../../../src/wpf/extractors/dependency-property-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAA8B,MAAM,aAAa,CAAC;AAMtF,MAAM,WAAW,kCAAkC;IACjD,sCAAsC;IACtC,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;CACzB;AAMD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;CAiCxC,CAAC;AAMF,qBAAa,2BAA2B;IACtC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kCAAkC;IAuF9E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKjD;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB;AAED;;GAEG;AACH,wBAAgB,iCAAiC,IAAI,2BAA2B,CAE/E"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Dependency Property Extractor
3
+ *
4
+ * Extracts DependencyProperty definitions from C# code.
5
+ * Supports standard registration, attached properties, and property wrappers.
6
+ */
7
+ // ============================================================================
8
+ // Regex Patterns
9
+ // ============================================================================
10
+ export const DEPENDENCY_PROPERTY_PATTERNS = {
11
+ // Standard DependencyProperty.Register
12
+ register: /public\s+static\s+(?:readonly\s+)?DependencyProperty\s+(\w+)Property\s*=\s*DependencyProperty\.Register\s*\(\s*(?:nameof\s*\(\s*(\w+)\s*\)|["'](\w+)["'])\s*,\s*typeof\s*\(\s*([^)]+)\s*\)\s*,\s*typeof\s*\(\s*([^)]+)\s*\)(?:\s*,\s*new\s+(?:Framework)?PropertyMetadata\s*\(([^)]*)\))?/g,
13
+ // Attached property registration
14
+ registerAttached: /public\s+static\s+(?:readonly\s+)?DependencyProperty\s+(\w+)Property\s*=\s*DependencyProperty\.RegisterAttached\s*\(\s*(?:nameof\s*\(\s*(\w+)\s*\)|["'](\w+)["'])\s*,\s*typeof\s*\(\s*([^)]+)\s*\)\s*,\s*typeof\s*\(\s*([^)]+)\s*\)(?:\s*,\s*new\s+(?:Framework)?PropertyMetadata\s*\(([^)]*)\))?/g,
15
+ // Read-only DependencyProperty
16
+ registerReadOnly: /(?:private|internal)\s+static\s+(?:readonly\s+)?DependencyPropertyKey\s+(\w+)PropertyKey\s*=\s*DependencyProperty\.RegisterReadOnly\s*\(\s*(?:nameof\s*\(\s*(\w+)\s*\)|["'](\w+)["'])/g,
17
+ // Property wrapper (CLR wrapper for DP)
18
+ propertyWrapper: /public\s+(\w+(?:<[^>]+>)?)\s+(\w+)\s*\{\s*get\s*\{\s*return\s*\(?(\w+)?\)?\s*GetValue\s*\(\s*(\w+)Property\s*\)/g,
19
+ // PropertyChangedCallback in metadata
20
+ propertyChangedCallback: /new\s+PropertyChangedCallback\s*\(\s*(\w+)\s*\)|OnPropertyChanged\s*:\s*(\w+)/g,
21
+ // CoerceValueCallback
22
+ coerceCallback: /new\s+CoerceValueCallback\s*\(\s*(\w+)\s*\)|CoerceValue\s*:\s*(\w+)/g,
23
+ // ValidateValueCallback
24
+ validateCallback: /new\s+ValidateValueCallback\s*\(\s*(\w+)\s*\)|ValidateValue\s*:\s*(\w+)/g,
25
+ // Default value in metadata
26
+ defaultValue: /new\s+(?:Framework)?PropertyMetadata\s*\(\s*([^,)]+)/,
27
+ // Class declaration
28
+ classDeclaration: /(?:public|internal)\s+(?:partial\s+)?class\s+(\w+)/,
29
+ // Static constructor (often contains DP overrides)
30
+ staticConstructor: /static\s+(\w+)\s*\(\s*\)\s*\{([^}]+)\}/g,
31
+ // OverrideMetadata
32
+ overrideMetadata: /(\w+)Property\.OverrideMetadata\s*\(\s*typeof\s*\(\s*(\w+)\s*\)\s*,\s*new\s+(?:Framework)?PropertyMetadata\s*\(([^)]*)\)/g,
33
+ };
34
+ // ============================================================================
35
+ // Dependency Property Extractor
36
+ // ============================================================================
37
+ export class DependencyPropertyExtractor {
38
+ /**
39
+ * Extract dependency properties from C# content
40
+ */
41
+ extract(filePath, content) {
42
+ const properties = [];
43
+ // Get owner class
44
+ const classMatch = content.match(DEPENDENCY_PROPERTY_PATTERNS.classDeclaration);
45
+ const ownerClass = classMatch?.[1] ?? 'Unknown';
46
+ // Extract standard DependencyProperty.Register
47
+ let match;
48
+ DEPENDENCY_PROPERTY_PATTERNS.register.lastIndex = 0;
49
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.register.exec(content)) !== null) {
50
+ const fieldName = `${match[1]}Property`;
51
+ const propertyName = match[2] ?? match[3] ?? match[1] ?? '';
52
+ const propertyType = match[4]?.trim() ?? 'object';
53
+ const ownerType = match[5]?.trim() ?? ownerClass;
54
+ const metadataContent = match[6] ?? '';
55
+ const callbacks = this.extractCallbacks(metadataContent);
56
+ const defaultValue = this.extractDefaultValue(metadataContent);
57
+ properties.push({
58
+ name: propertyName,
59
+ fieldName,
60
+ propertyType,
61
+ ownerType,
62
+ isAttached: false,
63
+ ...(defaultValue !== undefined && { defaultValue }),
64
+ callbacks,
65
+ location: { file: filePath, line: this.getLineNumber(content, match.index) },
66
+ });
67
+ }
68
+ // Extract attached properties
69
+ DEPENDENCY_PROPERTY_PATTERNS.registerAttached.lastIndex = 0;
70
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.registerAttached.exec(content)) !== null) {
71
+ const fieldName = `${match[1]}Property`;
72
+ const propertyName = match[2] ?? match[3] ?? match[1] ?? '';
73
+ const propertyType = match[4]?.trim() ?? 'object';
74
+ const ownerType = match[5]?.trim() ?? ownerClass;
75
+ const metadataContent = match[6] ?? '';
76
+ const callbacks = this.extractCallbacks(metadataContent);
77
+ const defaultValue = this.extractDefaultValue(metadataContent);
78
+ properties.push({
79
+ name: propertyName,
80
+ fieldName,
81
+ propertyType,
82
+ ownerType,
83
+ isAttached: true,
84
+ ...(defaultValue !== undefined && { defaultValue }),
85
+ callbacks,
86
+ location: { file: filePath, line: this.getLineNumber(content, match.index) },
87
+ });
88
+ }
89
+ // Extract read-only properties
90
+ DEPENDENCY_PROPERTY_PATTERNS.registerReadOnly.lastIndex = 0;
91
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.registerReadOnly.exec(content)) !== null) {
92
+ const fieldName = `${match[1]}Property`;
93
+ const propertyName = match[2] ?? match[3] ?? match[1] ?? '';
94
+ // Check if we already have this property
95
+ if (!properties.some(p => p.name === propertyName)) {
96
+ properties.push({
97
+ name: propertyName,
98
+ fieldName,
99
+ propertyType: 'unknown', // Would need more context
100
+ ownerType: ownerClass,
101
+ isAttached: false,
102
+ callbacks: [],
103
+ location: { file: filePath, line: this.getLineNumber(content, match.index) },
104
+ });
105
+ }
106
+ }
107
+ // Enrich with property wrapper info
108
+ this.enrichWithWrapperInfo(properties, content);
109
+ return {
110
+ properties,
111
+ ownerClass,
112
+ confidence: properties.length > 0 ? 0.8 : 0.5,
113
+ method: 'regex',
114
+ };
115
+ }
116
+ /**
117
+ * Extract callbacks from metadata content
118
+ */
119
+ extractCallbacks(metadataContent) {
120
+ const callbacks = [];
121
+ // PropertyChanged callback
122
+ let match;
123
+ DEPENDENCY_PROPERTY_PATTERNS.propertyChangedCallback.lastIndex = 0;
124
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.propertyChangedCallback.exec(metadataContent)) !== null) {
125
+ const methodName = match[1] ?? match[2] ?? '';
126
+ if (methodName) {
127
+ callbacks.push({ type: 'PropertyChanged', methodName });
128
+ }
129
+ }
130
+ // Coerce callback
131
+ DEPENDENCY_PROPERTY_PATTERNS.coerceCallback.lastIndex = 0;
132
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.coerceCallback.exec(metadataContent)) !== null) {
133
+ const methodName = match[1] ?? match[2] ?? '';
134
+ if (methodName) {
135
+ callbacks.push({ type: 'CoerceValue', methodName });
136
+ }
137
+ }
138
+ // Validate callback
139
+ DEPENDENCY_PROPERTY_PATTERNS.validateCallback.lastIndex = 0;
140
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.validateCallback.exec(metadataContent)) !== null) {
141
+ const methodName = match[1] ?? match[2] ?? '';
142
+ if (methodName) {
143
+ callbacks.push({ type: 'Validate', methodName });
144
+ }
145
+ }
146
+ return callbacks;
147
+ }
148
+ /**
149
+ * Extract default value from metadata
150
+ */
151
+ extractDefaultValue(metadataContent) {
152
+ const match = metadataContent.match(DEPENDENCY_PROPERTY_PATTERNS.defaultValue);
153
+ if (match?.[1]) {
154
+ const value = match[1].trim();
155
+ // Skip if it's a callback reference
156
+ if (!value.includes('Callback') && !value.startsWith('new ')) {
157
+ return value;
158
+ }
159
+ }
160
+ return undefined;
161
+ }
162
+ /**
163
+ * Enrich properties with CLR wrapper information
164
+ */
165
+ enrichWithWrapperInfo(properties, content) {
166
+ let match;
167
+ DEPENDENCY_PROPERTY_PATTERNS.propertyWrapper.lastIndex = 0;
168
+ while ((match = DEPENDENCY_PROPERTY_PATTERNS.propertyWrapper.exec(content)) !== null) {
169
+ const wrapperType = match[1] ?? '';
170
+ const dpFieldName = `${match[4]}Property`;
171
+ // Find matching DP
172
+ const dp = properties.find(p => p.fieldName === dpFieldName);
173
+ if (dp && wrapperType) {
174
+ // Update type if we got a more specific one from wrapper
175
+ if (dp.propertyType === 'object' || dp.propertyType === 'unknown') {
176
+ dp.propertyType = wrapperType;
177
+ }
178
+ }
179
+ }
180
+ }
181
+ /**
182
+ * Check if a file likely contains dependency properties
183
+ */
184
+ hasDependencyProperties(content) {
185
+ return content.includes('DependencyProperty') ||
186
+ content.includes('DependencyPropertyKey');
187
+ }
188
+ /**
189
+ * Get line number from character index
190
+ */
191
+ getLineNumber(content, index) {
192
+ return content.slice(0, index).split('\n').length;
193
+ }
194
+ }
195
+ /**
196
+ * Factory function
197
+ */
198
+ export function createDependencyPropertyExtractor() {
199
+ return new DependencyPropertyExtractor();
200
+ }
201
+ //# sourceMappingURL=dependency-property-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-property-extractor.js","sourceRoot":"","sources":["../../../src/wpf/extractors/dependency-property-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * ViewModel Regex Extractor
3
+ *
4
+ * Regex-based fallback extractor for C# ViewModel classes.
5
+ * Detects INotifyPropertyChanged, commands, and observable properties.
6
+ */
7
+ import type { ViewModelAnalysis } from '../../types.js';
8
+ export declare const VIEWMODEL_REGEX_PATTERNS: {
9
+ inpcImplementation: RegExp;
10
+ viewModelBase: RegExp;
11
+ propertyWithBacking: RegExp;
12
+ autoProperty: RegExp;
13
+ propertyChanged: RegExp;
14
+ setProperty: RegExp;
15
+ setMethod: RegExp;
16
+ commandProperty: RegExp;
17
+ relayCommandInit: RegExp;
18
+ commandLambda: RegExp;
19
+ observableCollection: RegExp;
20
+ observablePropertyAttr: RegExp;
21
+ relayCommandAttr: RegExp;
22
+ classDeclaration: RegExp;
23
+ namespaceDeclaration: RegExp;
24
+ propertyAccessors: RegExp;
25
+ propertyChangedEvent: RegExp;
26
+ canExecuteMethod: RegExp;
27
+ };
28
+ export declare class ViewModelRegexExtractor {
29
+ /**
30
+ * Extract ViewModel information using regex patterns
31
+ */
32
+ extract(content: string, filePath: string): ViewModelAnalysis | null;
33
+ /**
34
+ * Find ViewModel class in content
35
+ */
36
+ private findViewModelClass;
37
+ /**
38
+ * Extract base class from inheritance string
39
+ */
40
+ private extractBaseClass;
41
+ /**
42
+ * Check if class implements INotifyPropertyChanged
43
+ */
44
+ private checkINPCImplementation;
45
+ /**
46
+ * Extract properties from ViewModel
47
+ */
48
+ private extractProperties;
49
+ /**
50
+ * Check if a property raises PropertyChanged
51
+ */
52
+ private checkPropertyRaisesChanged;
53
+ /**
54
+ * Extract commands from ViewModel
55
+ */
56
+ private extractCommands;
57
+ /**
58
+ * Infer command type from content
59
+ */
60
+ private inferCommandType;
61
+ /**
62
+ * Find execute and canExecute methods for a command
63
+ */
64
+ private findCommandMethods;
65
+ /**
66
+ * Find CanExecute method for a [RelayCommand] attributed method
67
+ */
68
+ private findCanExecuteForMethod;
69
+ /**
70
+ * Convert to PascalCase
71
+ */
72
+ private toPascalCase;
73
+ /**
74
+ * Get line number from character index
75
+ */
76
+ private getLineNumber;
77
+ /**
78
+ * Find class end line
79
+ */
80
+ private findClassEndLine;
81
+ }
82
+ //# sourceMappingURL=viewmodel-regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewmodel-regex.d.ts","sourceRoot":"","sources":["../../../../src/wpf/extractors/regex/viewmodel-regex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;CAsDpC,CAAC;AAMF,qBAAa,uBAAuB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAoCpE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgFzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA+BlC;;OAEG;IACH,OAAO,CAAC,eAAe;IAgFvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAmBzB"}