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,513 @@
1
+ /**
2
+ * ViewModel Hybrid Extractor
3
+ *
4
+ * Extends C# hybrid extractor with WPF-specific ViewModel patterns.
5
+ * Detects INotifyPropertyChanged, commands, and observable properties.
6
+ */
7
+ import { ViewModelRegexExtractor } from './regex/viewmodel-regex.js';
8
+ import { isCSharpTreeSitterAvailable, createCSharpParser, } from '../../parsers/tree-sitter/csharp-loader.js';
9
+ const DEFAULT_CONFIG = {
10
+ enableTreeSitter: true,
11
+ enableRegexFallback: true,
12
+ };
13
+ // ============================================================================
14
+ // ViewModel Hybrid Extractor
15
+ // ============================================================================
16
+ export class ViewModelHybridExtractor {
17
+ config;
18
+ regexExtractor;
19
+ parser = null;
20
+ constructor(config) {
21
+ this.config = { ...DEFAULT_CONFIG, ...config };
22
+ this.regexExtractor = new ViewModelRegexExtractor();
23
+ }
24
+ /**
25
+ * Check if this extractor can handle a file
26
+ */
27
+ canHandle(filePath) {
28
+ return filePath.endsWith('.cs');
29
+ }
30
+ /**
31
+ * Check if file is likely a ViewModel
32
+ */
33
+ isLikelyViewModel(filePath, content) {
34
+ // Check filename
35
+ if (filePath.includes('ViewModel') || filePath.includes('VM.cs')) {
36
+ return true;
37
+ }
38
+ // Check content for ViewModel indicators
39
+ const indicators = [
40
+ /class\s+\w+ViewModel/,
41
+ /:\s*(?:ViewModelBase|BindableBase|ObservableObject|INotifyPropertyChanged)/,
42
+ /\[ObservableProperty\]/,
43
+ /\[RelayCommand\]/,
44
+ /public\s+ICommand\s+\w+/,
45
+ /OnPropertyChanged\s*\(/,
46
+ ];
47
+ return indicators.some(pattern => pattern.test(content));
48
+ }
49
+ /**
50
+ * Extract ViewModel information with hybrid approach
51
+ */
52
+ async extract(filePath, content) {
53
+ // Quick check if this is a ViewModel
54
+ if (!this.isLikelyViewModel(filePath, content)) {
55
+ return null;
56
+ }
57
+ // Try tree-sitter first
58
+ if (this.config.enableTreeSitter && isCSharpTreeSitterAvailable()) {
59
+ try {
60
+ const treeSitterResult = this.extractWithTreeSitter(content, filePath);
61
+ if (treeSitterResult) {
62
+ return treeSitterResult;
63
+ }
64
+ }
65
+ catch (error) {
66
+ // Fall through to regex
67
+ }
68
+ }
69
+ // Regex fallback
70
+ if (this.config.enableRegexFallback) {
71
+ return this.regexExtractor.extract(content, filePath);
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Extract using tree-sitter
77
+ */
78
+ extractWithTreeSitter(content, filePath) {
79
+ if (!this.parser) {
80
+ this.parser = createCSharpParser();
81
+ }
82
+ const tree = this.parser.parse(content);
83
+ const rootNode = tree.rootNode;
84
+ // Find namespace
85
+ let namespace = '';
86
+ const namespaceNode = this.findNode(rootNode, 'namespace_declaration') ||
87
+ this.findNode(rootNode, 'file_scoped_namespace_declaration');
88
+ if (namespaceNode) {
89
+ const nameNode = namespaceNode.childForFieldName('name');
90
+ namespace = nameNode?.text ?? '';
91
+ }
92
+ // Find ViewModel class
93
+ const classNode = this.findViewModelClass(rootNode);
94
+ if (!classNode) {
95
+ return null;
96
+ }
97
+ const nameNode = classNode.childForFieldName('name');
98
+ const className = nameNode?.text ?? '';
99
+ const qualifiedName = namespace ? `${namespace}.${className}` : className;
100
+ // Extract base class
101
+ const baseClass = this.extractBaseClass(classNode);
102
+ // Check INPC implementation
103
+ const implementsINPC = this.checkINPCImplementation(classNode, content);
104
+ // Extract properties
105
+ const properties = this.extractProperties(classNode, filePath, content);
106
+ // Extract commands
107
+ const commands = this.extractCommands(classNode, filePath, content);
108
+ return {
109
+ className,
110
+ qualifiedName,
111
+ filePath,
112
+ properties,
113
+ commands,
114
+ implementsINPC,
115
+ baseClass,
116
+ startLine: classNode.startPosition.row + 1,
117
+ endLine: classNode.endPosition.row + 1,
118
+ };
119
+ }
120
+ /**
121
+ * Find ViewModel class in AST
122
+ */
123
+ findViewModelClass(rootNode) {
124
+ const classes = this.findAllNodes(rootNode, 'class_declaration');
125
+ for (const classNode of classes) {
126
+ const nameNode = classNode.childForFieldName('name');
127
+ const className = nameNode?.text ?? '';
128
+ // Check if name suggests ViewModel
129
+ if (className.includes('ViewModel') || className.endsWith('VM')) {
130
+ return classNode;
131
+ }
132
+ // Check base classes
133
+ const basesNode = classNode.childForFieldName('bases');
134
+ if (basesNode) {
135
+ const baseText = basesNode.text;
136
+ if (baseText.includes('ViewModel') ||
137
+ baseText.includes('BindableBase') ||
138
+ baseText.includes('ObservableObject') ||
139
+ baseText.includes('INotifyPropertyChanged')) {
140
+ return classNode;
141
+ }
142
+ }
143
+ }
144
+ return null;
145
+ }
146
+ /**
147
+ * Extract base class from class declaration
148
+ */
149
+ extractBaseClass(classNode) {
150
+ const basesNode = classNode.childForFieldName('bases');
151
+ if (!basesNode)
152
+ return undefined;
153
+ // Find first non-interface base
154
+ for (const child of basesNode.children) {
155
+ if (child.type === 'identifier' || child.type === 'qualified_name' || child.type === 'generic_name') {
156
+ const name = child.text;
157
+ // Skip interfaces (start with I and have capital second letter)
158
+ if (!/^I[A-Z]/.test(name)) {
159
+ return name;
160
+ }
161
+ }
162
+ }
163
+ return undefined;
164
+ }
165
+ /**
166
+ * Check if class implements INotifyPropertyChanged
167
+ */
168
+ checkINPCImplementation(classNode, _content) {
169
+ const basesNode = classNode.childForFieldName('bases');
170
+ if (basesNode) {
171
+ const baseText = basesNode.text;
172
+ if (baseText.includes('INotifyPropertyChanged')) {
173
+ return true;
174
+ }
175
+ // Known INPC base classes
176
+ const inpcBases = [
177
+ 'ViewModelBase', 'BindableBase', 'ObservableObject',
178
+ 'BaseViewModel', 'NotifyPropertyChanged', 'ObservableRecipient',
179
+ 'Screen', 'PropertyChangedBase',
180
+ ];
181
+ if (inpcBases.some(b => baseText.includes(b))) {
182
+ return true;
183
+ }
184
+ }
185
+ // Check for PropertyChanged event
186
+ const bodyNode = classNode.children.find(c => c.type === 'declaration_list');
187
+ if (bodyNode) {
188
+ for (const member of bodyNode.children) {
189
+ if (member.type === 'event_declaration' || member.type === 'event_field_declaration') {
190
+ if (member.text.includes('PropertyChangedEventHandler')) {
191
+ return true;
192
+ }
193
+ }
194
+ }
195
+ }
196
+ return false;
197
+ }
198
+ /**
199
+ * Extract properties from class
200
+ */
201
+ extractProperties(classNode, filePath, content) {
202
+ const properties = [];
203
+ const bodyNode = classNode.children.find(c => c.type === 'declaration_list');
204
+ if (!bodyNode)
205
+ return properties;
206
+ for (const member of bodyNode.children) {
207
+ if (member.type === 'property_declaration') {
208
+ const property = this.extractProperty(member, filePath, content);
209
+ if (property) {
210
+ properties.push(property);
211
+ }
212
+ }
213
+ else if (member.type === 'field_declaration') {
214
+ // Check for [ObservableProperty] attribute
215
+ const property = this.extractObservableProperty(member, filePath);
216
+ if (property) {
217
+ properties.push(property);
218
+ }
219
+ }
220
+ }
221
+ return properties;
222
+ }
223
+ /**
224
+ * Extract a single property
225
+ */
226
+ extractProperty(node, filePath, content) {
227
+ const nameNode = node.childForFieldName('name');
228
+ const typeNode = node.childForFieldName('type');
229
+ if (!nameNode || !typeNode)
230
+ return null;
231
+ const name = nameNode.text;
232
+ const type = typeNode.text;
233
+ // Check for getter/setter
234
+ let hasGetter = false;
235
+ let hasSetter = false;
236
+ const accessorList = node.children.find(c => c.type === 'accessor_list');
237
+ if (accessorList) {
238
+ for (const accessor of accessorList.children) {
239
+ if (accessor.type === 'accessor_declaration') {
240
+ const accessorName = accessor.children[0]?.text;
241
+ if (accessorName === 'get')
242
+ hasGetter = true;
243
+ if (accessorName === 'set')
244
+ hasSetter = true;
245
+ }
246
+ }
247
+ }
248
+ // Check if property raises PropertyChanged
249
+ const raisesPropertyChanged = this.checkPropertyRaisesChanged(content, name);
250
+ // Try to find backing field
251
+ const backingField = this.findBackingField(content, name);
252
+ return {
253
+ name,
254
+ type,
255
+ hasGetter,
256
+ hasSetter,
257
+ raisesPropertyChanged,
258
+ backingField,
259
+ location: {
260
+ file: filePath,
261
+ line: node.startPosition.row + 1,
262
+ },
263
+ };
264
+ }
265
+ /**
266
+ * Extract [ObservableProperty] attributed field
267
+ */
268
+ extractObservableProperty(node, filePath) {
269
+ // Check for [ObservableProperty] attribute
270
+ let hasObservableAttr = false;
271
+ let sibling = node.previousNamedSibling;
272
+ while (sibling && sibling.type === 'attribute_list') {
273
+ if (sibling.text.includes('ObservableProperty')) {
274
+ hasObservableAttr = true;
275
+ break;
276
+ }
277
+ sibling = sibling.previousNamedSibling;
278
+ }
279
+ if (!hasObservableAttr)
280
+ return null;
281
+ // Extract field info
282
+ const declarator = node.children.find(c => c.type === 'variable_declaration');
283
+ if (!declarator)
284
+ return null;
285
+ const typeNode = declarator.childForFieldName('type');
286
+ const varDeclarator = declarator.children.find(c => c.type === 'variable_declarator');
287
+ const nameNode = varDeclarator?.childForFieldName('name');
288
+ if (!typeNode || !nameNode)
289
+ return null;
290
+ const fieldName = nameNode.text;
291
+ const type = typeNode.text;
292
+ // Convert field name to property name (PascalCase)
293
+ const propertyName = this.toPascalCase(fieldName);
294
+ return {
295
+ name: propertyName,
296
+ type,
297
+ hasGetter: true,
298
+ hasSetter: true,
299
+ raisesPropertyChanged: true, // Source generator handles this
300
+ backingField: fieldName,
301
+ isSourceGenerated: true,
302
+ location: {
303
+ file: filePath,
304
+ line: node.startPosition.row + 1,
305
+ },
306
+ };
307
+ }
308
+ /**
309
+ * Extract commands from class
310
+ */
311
+ extractCommands(classNode, filePath, content) {
312
+ const commands = [];
313
+ const bodyNode = classNode.children.find(c => c.type === 'declaration_list');
314
+ if (!bodyNode)
315
+ return commands;
316
+ for (const member of bodyNode.children) {
317
+ if (member.type === 'property_declaration') {
318
+ const command = this.extractCommandProperty(member, filePath, content);
319
+ if (command) {
320
+ commands.push(command);
321
+ }
322
+ }
323
+ else if (member.type === 'method_declaration') {
324
+ // Check for [RelayCommand] attribute
325
+ const command = this.extractRelayCommandMethod(member, filePath, content);
326
+ if (command) {
327
+ commands.push(command);
328
+ }
329
+ }
330
+ }
331
+ return commands;
332
+ }
333
+ /**
334
+ * Extract ICommand property
335
+ */
336
+ extractCommandProperty(node, filePath, content) {
337
+ const typeNode = node.childForFieldName('type');
338
+ const nameNode = node.childForFieldName('name');
339
+ if (!typeNode || !nameNode)
340
+ return null;
341
+ const type = typeNode.text;
342
+ const name = nameNode.text;
343
+ // Check if this is a command type
344
+ const commandTypes = ['ICommand', 'IRelayCommand', 'IAsyncRelayCommand', 'RelayCommand', 'DelegateCommand', 'AsyncRelayCommand'];
345
+ const isCommand = commandTypes.some(ct => type.includes(ct));
346
+ if (!isCommand)
347
+ return null;
348
+ // Find execute and canExecute methods
349
+ const { executeMethod, canExecuteMethod } = this.findCommandMethods(content, name);
350
+ return {
351
+ name,
352
+ commandType: type,
353
+ executeMethod,
354
+ canExecuteMethod,
355
+ isAsync: type.includes('Async'),
356
+ location: {
357
+ file: filePath,
358
+ line: node.startPosition.row + 1,
359
+ },
360
+ };
361
+ }
362
+ /**
363
+ * Extract [RelayCommand] attributed method
364
+ */
365
+ extractRelayCommandMethod(node, filePath, content) {
366
+ // Check for [RelayCommand] attribute
367
+ let hasRelayCommandAttr = false;
368
+ let sibling = node.previousNamedSibling;
369
+ while (sibling && sibling.type === 'attribute_list') {
370
+ if (sibling.text.includes('RelayCommand')) {
371
+ hasRelayCommandAttr = true;
372
+ break;
373
+ }
374
+ sibling = sibling.previousNamedSibling;
375
+ }
376
+ if (!hasRelayCommandAttr)
377
+ return null;
378
+ const nameNode = node.childForFieldName('name');
379
+ const returnTypeNode = node.childForFieldName('type');
380
+ if (!nameNode)
381
+ return null;
382
+ const methodName = nameNode.text;
383
+ const returnType = returnTypeNode?.text ?? 'void';
384
+ const isAsync = returnType.includes('Task') || node.text.includes('async');
385
+ // Command name is method name + "Command"
386
+ const commandName = `${methodName}Command`;
387
+ // Look for CanExecute method
388
+ const canExecuteMethod = this.findCanExecuteForMethod(content, methodName);
389
+ return {
390
+ name: commandName,
391
+ commandType: isAsync ? 'AsyncRelayCommand' : 'RelayCommand',
392
+ executeMethod: methodName,
393
+ canExecuteMethod,
394
+ isAsync,
395
+ location: {
396
+ file: filePath,
397
+ line: node.startPosition.row + 1,
398
+ },
399
+ };
400
+ }
401
+ /**
402
+ * Check if property raises PropertyChanged
403
+ */
404
+ checkPropertyRaisesChanged(content, propertyName) {
405
+ const patterns = [
406
+ new RegExp(`OnPropertyChanged\\s*\\(\\s*nameof\\s*\\(\\s*${propertyName}\\s*\\)`, 'i'),
407
+ new RegExp(`RaisePropertyChanged\\s*\\(\\s*nameof\\s*\\(\\s*${propertyName}\\s*\\)`, 'i'),
408
+ new RegExp(`OnPropertyChanged\\s*\\(\\s*["']${propertyName}["']`, 'i'),
409
+ new RegExp(`SetProperty\\s*\\([^)]*nameof\\s*\\(\\s*${propertyName}\\s*\\)`, 'i'),
410
+ ];
411
+ return patterns.some(p => p.test(content));
412
+ }
413
+ /**
414
+ * Find backing field for a property
415
+ */
416
+ findBackingField(content, propertyName) {
417
+ // Common patterns: _propertyName, m_propertyName, propertyName (lowercase)
418
+ const patterns = [
419
+ new RegExp(`private\\s+\\w+\\s+(_${propertyName.charAt(0).toLowerCase()}${propertyName.slice(1)})\\s*[;=]`, 'i'),
420
+ new RegExp(`private\\s+\\w+\\s+(m_${propertyName})\\s*[;=]`, 'i'),
421
+ new RegExp(`private\\s+\\w+\\s+(${propertyName.charAt(0).toLowerCase()}${propertyName.slice(1)})\\s*[;=]`),
422
+ ];
423
+ for (const pattern of patterns) {
424
+ const match = content.match(pattern);
425
+ if (match?.[1]) {
426
+ return match[1];
427
+ }
428
+ }
429
+ return undefined;
430
+ }
431
+ /**
432
+ * Find execute and canExecute methods for a command
433
+ */
434
+ findCommandMethods(content, commandName) {
435
+ const baseName = commandName.replace(/Command$/, '');
436
+ // Execute method patterns
437
+ const executePatterns = [
438
+ new RegExp(`(?:private|public)?\\s*(?:async\\s+)?(?:Task|void)\\s+(${baseName})\\s*\\(`),
439
+ new RegExp(`(?:private|public)?\\s*(?:async\\s+)?(?:Task|void)\\s+(Execute${baseName})\\s*\\(`),
440
+ new RegExp(`(?:private|public)?\\s*(?:async\\s+)?(?:Task|void)\\s+(On${baseName})\\s*\\(`),
441
+ ];
442
+ let executeMethod;
443
+ for (const pattern of executePatterns) {
444
+ const match = content.match(pattern);
445
+ if (match?.[1]) {
446
+ executeMethod = match[1];
447
+ break;
448
+ }
449
+ }
450
+ // CanExecute method patterns
451
+ const canExecutePatterns = [
452
+ new RegExp(`(?:private|public)?\\s*bool\\s+(Can${baseName})\\s*\\(`),
453
+ new RegExp(`(?:private|public)?\\s*bool\\s+(${baseName}CanExecute)\\s*\\(`),
454
+ ];
455
+ let canExecuteMethod;
456
+ for (const pattern of canExecutePatterns) {
457
+ const match = content.match(pattern);
458
+ if (match?.[1]) {
459
+ canExecuteMethod = match[1];
460
+ break;
461
+ }
462
+ }
463
+ return { executeMethod, canExecuteMethod };
464
+ }
465
+ /**
466
+ * Find CanExecute method for a [RelayCommand] method
467
+ */
468
+ findCanExecuteForMethod(content, methodName) {
469
+ const pattern = new RegExp(`(?:private|public)?\\s*bool\\s+(Can${methodName})\\s*\\(`);
470
+ const match = content.match(pattern);
471
+ return match?.[1];
472
+ }
473
+ /**
474
+ * Convert to PascalCase
475
+ */
476
+ toPascalCase(str) {
477
+ const clean = str.startsWith('_') ? str.slice(1) : str;
478
+ return clean.charAt(0).toUpperCase() + clean.slice(1);
479
+ }
480
+ /**
481
+ * Find a node of specific type
482
+ */
483
+ findNode(node, type) {
484
+ if (node.type === type)
485
+ return node;
486
+ for (const child of node.children) {
487
+ const found = this.findNode(child, type);
488
+ if (found)
489
+ return found;
490
+ }
491
+ return null;
492
+ }
493
+ /**
494
+ * Find all nodes of specific type
495
+ */
496
+ findAllNodes(node, type) {
497
+ const results = [];
498
+ if (node.type === type) {
499
+ results.push(node);
500
+ }
501
+ for (const child of node.children) {
502
+ results.push(...this.findAllNodes(child, type));
503
+ }
504
+ return results;
505
+ }
506
+ }
507
+ /**
508
+ * Factory function
509
+ */
510
+ export function createViewModelHybridExtractor(config) {
511
+ return new ViewModelHybridExtractor(config);
512
+ }
513
+ //# sourceMappingURL=viewmodel-hybrid-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewmodel-hybrid-extractor.js","sourceRoot":"","sources":["../../../src/wpf/extractors/viewmodel-hybrid-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * XAML Hybrid Extractor
3
+ *
4
+ * Combines XML DOM parsing (primary) with regex fallback for enterprise-grade
5
+ * XAML extraction. Follows Drift's hybrid extraction pattern.
6
+ */
7
+ import type { XamlExtractionResult } from '../types.js';
8
+ export interface XamlExtractorConfig {
9
+ /** Enable XML DOM parsing */
10
+ enableDomParsing?: boolean;
11
+ /** Enable regex fallback */
12
+ enableRegexFallback?: boolean;
13
+ /** Minimum confidence to skip fallback */
14
+ minConfidenceThreshold?: number;
15
+ }
16
+ export declare class XamlHybridExtractor {
17
+ private config;
18
+ private regexExtractor;
19
+ constructor(config?: XamlExtractorConfig);
20
+ /**
21
+ * Check if this extractor can handle a file
22
+ */
23
+ canHandle(filePath: string): boolean;
24
+ /**
25
+ * Extract XAML information with hybrid approach
26
+ */
27
+ extract(filePath: string, content: string): Promise<XamlExtractionResult>;
28
+ /**
29
+ * Extract using XML DOM parsing
30
+ */
31
+ private extractWithDom;
32
+ /**
33
+ * Simple XAML parser using regex-based XML parsing
34
+ * This is a lightweight alternative to full XML DOM parsing
35
+ */
36
+ private parseXamlSimple;
37
+ /**
38
+ * Parse XAML elements and extract bindings/commands
39
+ */
40
+ private parseElements;
41
+ /**
42
+ * Extract bindings from a single element
43
+ */
44
+ private extractBindingsFromElement;
45
+ /**
46
+ * Extract commands from a single element
47
+ */
48
+ private extractCommandsFromElement;
49
+ /**
50
+ * Parse a Binding expression
51
+ */
52
+ private parseBinding;
53
+ /**
54
+ * Parse an x:Bind expression
55
+ */
56
+ private parseXBind;
57
+ /**
58
+ * Extract binding source type and value
59
+ */
60
+ private extractSource;
61
+ /**
62
+ * Extract resources from XAML
63
+ */
64
+ private extractResources;
65
+ /**
66
+ * Parse binding mode
67
+ */
68
+ private parseMode;
69
+ /**
70
+ * Parse update source trigger
71
+ */
72
+ private parseTrigger;
73
+ /**
74
+ * Calculate extraction confidence
75
+ */
76
+ private calculateConfidence;
77
+ /**
78
+ * Merge DOM and regex results
79
+ */
80
+ private mergeResults;
81
+ /**
82
+ * Create error result
83
+ */
84
+ private createErrorResult;
85
+ /**
86
+ * Create empty result
87
+ */
88
+ private createEmptyResult;
89
+ /**
90
+ * Get line number from character index
91
+ */
92
+ private getLineNumber;
93
+ }
94
+ /**
95
+ * Factory function
96
+ */
97
+ export declare function createXamlHybridExtractor(config?: XamlExtractorConfig): XamlHybridExtractor;
98
+ //# sourceMappingURL=xaml-hybrid-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xaml-hybrid-extractor.d.ts","sourceRoot":"","sources":["../../../src/wpf/extractors/xaml-hybrid-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,oBAAoB,EAQrB,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,0CAA0C;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAYD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,cAAc,CAAqB;gBAE/B,MAAM,CAAC,EAAE,mBAAmB;IAKxC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2C/E;;OAEG;YACW,cAAc;IAiB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoDlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgClC;;OAEG;IACH,OAAO,CAAC,YAAY;IAkDpB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0CxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,YAAY;IA0CpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAE3F"}