@jterrats/smart-deployment 1.0.3 → 1.0.5

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 (258) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +6 -0
  3. package/lib/ai/wave-validation-service.d.ts +21 -0
  4. package/lib/ai/wave-validation-service.js +189 -114
  5. package/lib/ai/wave-validation-service.js.map +1 -1
  6. package/lib/analysis/analysis-reporter.d.ts +12 -0
  7. package/lib/analysis/analysis-reporter.js +61 -0
  8. package/lib/analysis/analysis-reporter.js.map +1 -1
  9. package/lib/analysis/analyze-artifact-service.d.ts +25 -0
  10. package/lib/analysis/analyze-artifact-service.js +50 -0
  11. package/lib/analysis/analyze-artifact-service.js.map +1 -0
  12. package/lib/analysis/analyze-context-service.d.ts +25 -0
  13. package/lib/analysis/analyze-context-service.js +28 -0
  14. package/lib/analysis/analyze-context-service.js.map +1 -0
  15. package/lib/analysis/project-analysis-service.d.ts +48 -0
  16. package/lib/analysis/project-analysis-service.js +134 -0
  17. package/lib/analysis/project-analysis-service.js.map +1 -0
  18. package/lib/commands/analyze.d.ts +0 -2
  19. package/lib/commands/analyze.js +31 -162
  20. package/lib/commands/analyze.js.map +1 -1
  21. package/lib/commands/config.d.ts +0 -4
  22. package/lib/commands/config.js +25 -95
  23. package/lib/commands/config.js.map +1 -1
  24. package/lib/commands/resume.js +6 -16
  25. package/lib/commands/resume.js.map +1 -1
  26. package/lib/commands/start.d.ts +0 -11
  27. package/lib/commands/start.js +38 -550
  28. package/lib/commands/start.js.map +1 -1
  29. package/lib/commands/status.js +36 -12
  30. package/lib/commands/status.js.map +1 -1
  31. package/lib/commands/validate.d.ts +3 -0
  32. package/lib/commands/validate.js +5 -7
  33. package/lib/commands/validate.js.map +1 -1
  34. package/lib/config/config-mutation-service.d.ts +21 -0
  35. package/lib/config/config-mutation-service.js +61 -0
  36. package/lib/config/config-mutation-service.js.map +1 -0
  37. package/lib/dependencies/circular-dependency-detector.d.ts +5 -0
  38. package/lib/dependencies/circular-dependency-detector.js +67 -72
  39. package/lib/dependencies/circular-dependency-detector.js.map +1 -1
  40. package/lib/dependencies/dependency-depth-calculator.d.ts +28 -0
  41. package/lib/dependencies/dependency-depth-calculator.js +86 -39
  42. package/lib/dependencies/dependency-depth-calculator.js.map +1 -1
  43. package/lib/dependencies/dependency-graph-builder.d.ts +45 -13
  44. package/lib/dependencies/dependency-graph-builder.js +228 -123
  45. package/lib/dependencies/dependency-graph-builder.js.map +1 -1
  46. package/lib/dependencies/dependency-impact-analyzer.d.ts +13 -0
  47. package/lib/dependencies/dependency-impact-analyzer.js +146 -102
  48. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -1
  49. package/lib/dependencies/dependency-merger.d.ts +10 -0
  50. package/lib/dependencies/dependency-merger.js +123 -61
  51. package/lib/dependencies/dependency-merger.js.map +1 -1
  52. package/lib/dependencies/dependency-resolver.d.ts +34 -9
  53. package/lib/dependencies/dependency-resolver.js +181 -112
  54. package/lib/dependencies/dependency-resolver.js.map +1 -1
  55. package/lib/dependencies/dependency-semantics.d.ts +20 -0
  56. package/lib/dependencies/dependency-semantics.js +55 -0
  57. package/lib/dependencies/dependency-semantics.js.map +1 -0
  58. package/lib/dependencies/graph-visualizer.d.ts +6 -1
  59. package/lib/dependencies/graph-visualizer.js +38 -4
  60. package/lib/dependencies/graph-visualizer.js.map +1 -1
  61. package/lib/dependencies/heuristic-inference.d.ts +2 -53
  62. package/lib/dependencies/heuristic-inference.js +8 -317
  63. package/lib/dependencies/heuristic-inference.js.map +1 -1
  64. package/lib/dependencies/heuristic-patterns.d.ts +14 -0
  65. package/lib/dependencies/heuristic-patterns.js +247 -0
  66. package/lib/dependencies/heuristic-patterns.js.map +1 -0
  67. package/lib/deployment/cycle-remediation-runner.d.ts +36 -0
  68. package/lib/deployment/cycle-remediation-runner.js +262 -0
  69. package/lib/deployment/cycle-remediation-runner.js.map +1 -0
  70. package/lib/deployment/deployment-context-service.d.ts +24 -0
  71. package/lib/deployment/deployment-context-service.js +17 -0
  72. package/lib/deployment/deployment-context-service.js.map +1 -0
  73. package/lib/deployment/deployment-runner.d.ts +37 -0
  74. package/lib/deployment/deployment-runner.js +94 -0
  75. package/lib/deployment/deployment-runner.js.map +1 -0
  76. package/lib/deployment/deployment-status-service.d.ts +5 -0
  77. package/lib/deployment/deployment-status-service.js +39 -18
  78. package/lib/deployment/deployment-status-service.js.map +1 -1
  79. package/lib/deployment/deployment-validation-service.d.ts +5 -2
  80. package/lib/deployment/deployment-validation-service.js +48 -45
  81. package/lib/deployment/deployment-validation-service.js.map +1 -1
  82. package/lib/deployment/resume-deployment-service.d.ts +14 -0
  83. package/lib/deployment/resume-deployment-service.js +25 -0
  84. package/lib/deployment/resume-deployment-service.js.map +1 -0
  85. package/lib/deployment/start-execution-service.d.ts +44 -0
  86. package/lib/deployment/start-execution-service.js +94 -0
  87. package/lib/deployment/start-execution-service.js.map +1 -0
  88. package/lib/deployment/test-executor.d.ts +60 -1
  89. package/lib/deployment/test-executor.js +180 -12
  90. package/lib/deployment/test-executor.js.map +1 -1
  91. package/lib/deployment/test-plan-service.d.ts +8 -0
  92. package/lib/deployment/test-plan-service.js +26 -0
  93. package/lib/deployment/test-plan-service.js.map +1 -0
  94. package/lib/deployment/wave-manifest-service.d.ts +11 -0
  95. package/lib/deployment/wave-manifest-service.js +41 -0
  96. package/lib/deployment/wave-manifest-service.js.map +1 -0
  97. package/lib/parsers/apex-class-parser.js +180 -98
  98. package/lib/parsers/apex-class-parser.js.map +1 -1
  99. package/lib/parsers/apex-trigger-parser.js +56 -7
  100. package/lib/parsers/apex-trigger-parser.js.map +1 -1
  101. package/lib/parsers/aura-parser.js +2 -2
  102. package/lib/parsers/aura-parser.js.map +1 -1
  103. package/lib/parsers/bot-parser.js +31 -4
  104. package/lib/parsers/bot-parser.js.map +1 -1
  105. package/lib/parsers/custom-metadata-parser.js +37 -3
  106. package/lib/parsers/custom-metadata-parser.js.map +1 -1
  107. package/lib/parsers/custom-object-parser.js +284 -150
  108. package/lib/parsers/custom-object-parser.js.map +1 -1
  109. package/lib/parsers/email-template-parser.js +115 -58
  110. package/lib/parsers/email-template-parser.js.map +1 -1
  111. package/lib/parsers/flexipage-parser.js +41 -16
  112. package/lib/parsers/flexipage-parser.js.map +1 -1
  113. package/lib/parsers/flow-parser.js +73 -63
  114. package/lib/parsers/flow-parser.js.map +1 -1
  115. package/lib/parsers/genai-prompt-parser.js +16 -4
  116. package/lib/parsers/genai-prompt-parser.js.map +1 -1
  117. package/lib/parsers/layout-parser.d.ts +11 -0
  118. package/lib/parsers/layout-parser.js +143 -68
  119. package/lib/parsers/layout-parser.js.map +1 -1
  120. package/lib/parsers/lwc-parser.d.ts +0 -9
  121. package/lib/parsers/lwc-parser.js +245 -100
  122. package/lib/parsers/lwc-parser.js.map +1 -1
  123. package/lib/parsers/parser-utils.d.ts +3 -0
  124. package/lib/parsers/parser-utils.js +16 -0
  125. package/lib/parsers/parser-utils.js.map +1 -0
  126. package/lib/parsers/permission-set-parser.d.ts +6 -0
  127. package/lib/parsers/permission-set-parser.js +31 -40
  128. package/lib/parsers/permission-set-parser.js.map +1 -1
  129. package/lib/parsers/profile-parser.d.ts +13 -0
  130. package/lib/parsers/profile-parser.js +39 -34
  131. package/lib/parsers/profile-parser.js.map +1 -1
  132. package/lib/parsers/visualforce-parser.js +2 -1
  133. package/lib/parsers/visualforce-parser.js.map +1 -1
  134. package/lib/presentation/analyze-command-presenter.d.ts +10 -0
  135. package/lib/presentation/analyze-command-presenter.js +30 -0
  136. package/lib/presentation/analyze-command-presenter.js.map +1 -0
  137. package/lib/presentation/config-command-presenter.d.ts +15 -0
  138. package/lib/presentation/config-command-presenter.js +50 -0
  139. package/lib/presentation/config-command-presenter.js.map +1 -0
  140. package/lib/presentation/project-analysis-presenter.d.ts +9 -0
  141. package/lib/presentation/project-analysis-presenter.js +9 -0
  142. package/lib/presentation/project-analysis-presenter.js.map +1 -0
  143. package/lib/presentation/resume-command-presenter.d.ts +7 -0
  144. package/lib/presentation/resume-command-presenter.js +12 -0
  145. package/lib/presentation/resume-command-presenter.js.map +1 -0
  146. package/lib/presentation/start-command-presenter.d.ts +15 -0
  147. package/lib/presentation/start-command-presenter.js +29 -0
  148. package/lib/presentation/start-command-presenter.js.map +1 -0
  149. package/lib/presentation/status-command-presenter.d.ts +7 -0
  150. package/lib/presentation/status-command-presenter.js +16 -0
  151. package/lib/presentation/status-command-presenter.js.map +1 -0
  152. package/lib/presentation/validate-command-presenter.d.ts +9 -0
  153. package/lib/presentation/validate-command-presenter.js +50 -0
  154. package/lib/presentation/validate-command-presenter.js.map +1 -0
  155. package/lib/services/metadata-scanner-service.d.ts +8 -12
  156. package/lib/services/metadata-scanner-service.js +55 -533
  157. package/lib/services/metadata-scanner-service.js.map +1 -1
  158. package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +4 -0
  159. package/lib/services/scanners/automation-ai-metadata-scanner.js +61 -0
  160. package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -0
  161. package/lib/services/scanners/code-metadata-scanner.d.ts +23 -0
  162. package/lib/services/scanners/code-metadata-scanner.js +149 -0
  163. package/lib/services/scanners/code-metadata-scanner.js.map +1 -0
  164. package/lib/services/scanners/data-metadata-scanner.d.ts +3 -0
  165. package/lib/services/scanners/data-metadata-scanner.js +82 -0
  166. package/lib/services/scanners/data-metadata-scanner.js.map +1 -0
  167. package/lib/services/scanners/experience-metadata-scanner.d.ts +5 -0
  168. package/lib/services/scanners/experience-metadata-scanner.js +123 -0
  169. package/lib/services/scanners/experience-metadata-scanner.js.map +1 -0
  170. package/lib/services/scanners/scanner-runtime.d.ts +11 -0
  171. package/lib/services/scanners/scanner-runtime.js +115 -0
  172. package/lib/services/scanners/scanner-runtime.js.map +1 -0
  173. package/lib/services/scanners/security-metadata-scanner.d.ts +3 -0
  174. package/lib/services/scanners/security-metadata-scanner.js +71 -0
  175. package/lib/services/scanners/security-metadata-scanner.js.map +1 -0
  176. package/lib/types/dependency.d.ts +11 -1
  177. package/lib/types/metadata.d.ts +17 -0
  178. package/lib/types/salesforce/flow/actions.d.ts +108 -0
  179. package/lib/types/salesforce/flow/actions.js +2 -0
  180. package/lib/types/salesforce/flow/actions.js.map +1 -0
  181. package/lib/types/salesforce/flow/common.d.ts +36 -0
  182. package/lib/types/salesforce/flow/common.js +5 -0
  183. package/lib/types/salesforce/flow/common.js.map +1 -0
  184. package/lib/types/salesforce/flow/metadata.d.ts +37 -0
  185. package/lib/types/salesforce/flow/metadata.js +2 -0
  186. package/lib/types/salesforce/flow/metadata.js.map +1 -0
  187. package/lib/types/salesforce/flow/records.d.ts +38 -0
  188. package/lib/types/salesforce/flow/records.js +2 -0
  189. package/lib/types/salesforce/flow/records.js.map +1 -0
  190. package/lib/types/salesforce/flow/resources.d.ts +44 -0
  191. package/lib/types/salesforce/flow/resources.js +2 -0
  192. package/lib/types/salesforce/flow/resources.js.map +1 -0
  193. package/lib/types/salesforce/flow/screens.d.ts +56 -0
  194. package/lib/types/salesforce/flow/screens.js +2 -0
  195. package/lib/types/salesforce/flow/screens.js.map +1 -0
  196. package/lib/types/salesforce/flow/start.d.ts +24 -0
  197. package/lib/types/salesforce/flow/start.js +2 -0
  198. package/lib/types/salesforce/flow/start.js.map +1 -0
  199. package/lib/types/salesforce/flow.d.ts +9 -514
  200. package/lib/types/salesforce/flow.js +1 -1
  201. package/lib/types/salesforce/object/core.d.ts +68 -0
  202. package/lib/types/salesforce/object/core.js +5 -0
  203. package/lib/types/salesforce/object/core.js.map +1 -0
  204. package/lib/types/salesforce/object/field.d.ts +155 -0
  205. package/lib/types/salesforce/object/field.js +5 -0
  206. package/lib/types/salesforce/object/field.js.map +1 -0
  207. package/lib/types/salesforce/object/filter.d.ts +16 -0
  208. package/lib/types/salesforce/object/filter.js +5 -0
  209. package/lib/types/salesforce/object/filter.js.map +1 -0
  210. package/lib/types/salesforce/object/policy.d.ts +27 -0
  211. package/lib/types/salesforce/object/policy.js +5 -0
  212. package/lib/types/salesforce/object/policy.js.map +1 -0
  213. package/lib/types/salesforce/object/record.d.ts +44 -0
  214. package/lib/types/salesforce/object/record.js +5 -0
  215. package/lib/types/salesforce/object/record.js.map +1 -0
  216. package/lib/types/salesforce/object/view.d.ts +71 -0
  217. package/lib/types/salesforce/object/view.js +5 -0
  218. package/lib/types/salesforce/object/view.js.map +1 -0
  219. package/lib/types/salesforce/object/weblink.d.ts +70 -0
  220. package/lib/types/salesforce/object/weblink.js +5 -0
  221. package/lib/types/salesforce/object/weblink.js.map +1 -0
  222. package/lib/types/salesforce/object.d.ts +7 -423
  223. package/lib/types/salesforce/object.js +7 -1
  224. package/lib/types/salesforce/object.js.map +1 -1
  225. package/lib/utils/cache-manager.d.ts +16 -15
  226. package/lib/utils/cache-manager.js +290 -188
  227. package/lib/utils/cache-manager.js.map +1 -1
  228. package/lib/utils/logger.d.ts +8 -0
  229. package/lib/utils/logger.js +82 -69
  230. package/lib/utils/logger.js.map +1 -1
  231. package/lib/validators/xml/xml-reference-rules.d.ts +3 -0
  232. package/lib/validators/xml/xml-reference-rules.js +173 -0
  233. package/lib/validators/xml/xml-reference-rules.js.map +1 -0
  234. package/lib/validators/xml/xml-report-formatter.d.ts +2 -0
  235. package/lib/validators/xml/xml-report-formatter.js +47 -0
  236. package/lib/validators/xml/xml-report-formatter.js.map +1 -0
  237. package/lib/validators/xml/xml-schema-rules.d.ts +3 -0
  238. package/lib/validators/xml/xml-schema-rules.js +75 -0
  239. package/lib/validators/xml/xml-schema-rules.js.map +1 -0
  240. package/lib/validators/xml/xml-validation-types.d.ts +25 -0
  241. package/lib/validators/xml/xml-validation-types.js +2 -0
  242. package/lib/validators/xml/xml-validation-types.js.map +1 -0
  243. package/lib/validators/xml-metadata-validator.d.ts +2 -63
  244. package/lib/validators/xml-metadata-validator.js +7 -338
  245. package/lib/validators/xml-metadata-validator.js.map +1 -1
  246. package/lib/waves/test-optimizer.d.ts +13 -0
  247. package/lib/waves/test-optimizer.js +124 -63
  248. package/lib/waves/test-optimizer.js.map +1 -1
  249. package/lib/waves/wave-builder.d.ts +17 -21
  250. package/lib/waves/wave-builder.js +199 -135
  251. package/lib/waves/wave-builder.js.map +1 -1
  252. package/lib/waves/wave-splitter.d.ts +12 -8
  253. package/lib/waves/wave-splitter.js +156 -115
  254. package/lib/waves/wave-splitter.js.map +1 -1
  255. package/npm-shrinkwrap.json +959 -422
  256. package/oclif.lock +294 -57
  257. package/oclif.manifest.json +1 -1
  258. package/package.json +21 -9
@@ -11,6 +11,7 @@
11
11
  * @issue #32
12
12
  */
13
13
  import { getLogger } from '../utils/logger.js';
14
+ import { DEFAULT_GRAPH_DEPENDENCY_KIND, shouldTraverseDependencyKind } from './dependency-semantics.js';
14
15
  const logger = getLogger('DependencyImpactAnalyzer');
15
16
  /**
16
17
  * Dependency Impact Analyzer
@@ -56,37 +57,22 @@ export class DependencyImpactAnalyzer {
56
57
  */
57
58
  analyze(changedComponents) {
58
59
  const startTime = Date.now();
59
- // Calculate impact for each changed component
60
- const impacts = new Map();
61
- const allAffected = new Set();
62
- for (const nodeId of changedComponents) {
63
- const impact = this.calculateImpact(nodeId);
64
- impacts.set(nodeId, impact);
65
- // Collect all affected components (including transitive)
66
- allAffected.add(nodeId);
67
- const transitiveAffected = this.findAllDependents(nodeId);
68
- for (const affected of transitiveAffected) {
69
- allAffected.add(affected);
70
- }
71
- }
72
- // Find critical components
60
+ const aggregate = this.collectImpactAggregate(changedComponents);
73
61
  const criticalComponents = this.identifyCriticalComponents();
74
- // Calculate overall impact level
75
- const overallImpactLevel = this.calculateOverallImpactLevel(impacts);
76
- // Generate test scope recommendations
77
- const testScope = this.generateTestScope(Array.from(allAffected), impacts);
62
+ const overallImpactLevel = this.calculateOverallImpactLevel(aggregate.impacts);
63
+ const testScope = this.generateTestScope(Array.from(aggregate.allAffected), aggregate.impacts);
78
64
  const duration = Date.now() - startTime;
79
65
  logger.info('Impact analysis completed', {
80
66
  changedComponents: changedComponents.length,
81
- totalAffected: allAffected.size,
67
+ totalAffected: aggregate.allAffected.size,
82
68
  impactLevel: overallImpactLevel,
83
69
  criticalComponents: criticalComponents.length,
84
70
  durationMs: duration,
85
71
  });
86
72
  return {
87
73
  changedComponents,
88
- impacts,
89
- totalAffected: allAffected.size,
74
+ impacts: aggregate.impacts,
75
+ totalAffected: aggregate.allAffected.size,
90
76
  overallImpactLevel,
91
77
  criticalComponents,
92
78
  testScope,
@@ -97,20 +83,26 @@ export class DependencyImpactAnalyzer {
97
83
  */
98
84
  calculateImpact(nodeId) {
99
85
  const directDependents = Array.from(this.reverseGraph.get(nodeId) ?? []);
100
- const allAffected = this.findAllDependents(nodeId);
101
- const impactRadius = this.calculateImpactRadius(nodeId, allAffected);
102
- const riskScore = this.calculateRiskScore(directDependents.length, allAffected.size);
86
+ const traversal = this.analyzeDependentTraversal(nodeId);
87
+ const riskScore = this.calculateRiskScore(directDependents.length, traversal.affected.size);
103
88
  const impactLevel = DependencyImpactAnalyzer.getImpactLevel(riskScore);
104
89
  return {
105
90
  nodeId,
106
91
  directDependents,
107
- totalAffected: allAffected.size,
108
- impactRadius,
92
+ totalAffected: traversal.affected.size,
93
+ impactRadius: traversal.impactRadius,
109
94
  impactLevel,
110
95
  riskScore,
111
96
  isCritical: directDependents.length >= this.options.criticalThreshold,
112
97
  };
113
98
  }
99
+ analyzeDependentTraversal(nodeId) {
100
+ const affected = this.findAllDependents(nodeId);
101
+ return {
102
+ affected,
103
+ impactRadius: this.calculateImpactRadius(nodeId, affected),
104
+ };
105
+ }
114
106
  /**
115
107
  * Find all dependents (transitive closure) of a component using BFS
116
108
  */
@@ -125,12 +117,8 @@ export class DependencyImpactAnalyzer {
125
117
  }
126
118
  visited.add(current);
127
119
  affected.add(current);
128
- const dependents = this.reverseGraph.get(current) ?? new Set();
120
+ const dependents = this.collectTraversableDependents(current);
129
121
  for (const dependent of dependents) {
130
- // Filter out test classes if configured
131
- if (!this.options.includeTests && this.isTestClass(dependent)) {
132
- continue;
133
- }
134
122
  if (!visited.has(dependent)) {
135
123
  queue.push({ nodeId: dependent, depth: depth + 1 });
136
124
  }
@@ -194,18 +182,8 @@ export class DependencyImpactAnalyzer {
194
182
  * Find components with many dependents
195
183
  */
196
184
  identifyCriticalComponents() {
197
- const critical = [];
198
- for (const [nodeId, dependents] of this.reverseGraph.entries()) {
199
- if (dependents.size >= this.options.criticalThreshold) {
200
- critical.push(nodeId);
201
- }
202
- }
203
- // Sort by number of dependents (descending)
204
- critical.sort((a, b) => {
205
- const aCount = this.reverseGraph.get(a)?.size ?? 0;
206
- const bCount = this.reverseGraph.get(b)?.size ?? 0;
207
- return bCount - aCount;
208
- });
185
+ const critical = this.collectCriticalComponentCandidates();
186
+ critical.sort((a, b) => this.getDependentCount(b) - this.getDependentCount(a));
209
187
  logger.info('Critical components identified', {
210
188
  count: critical.length,
211
189
  threshold: this.options.criticalThreshold,
@@ -228,60 +206,14 @@ export class DependencyImpactAnalyzer {
228
206
  * Generate test scope recommendations
229
207
  */
230
208
  generateTestScope(affectedComponents, impacts) {
231
- const requiredTests = [];
232
- const recommendedTests = [];
233
- const optionalTests = [];
234
- for (const nodeId of affectedComponents) {
235
- // Check if it's a test class
236
- if (this.isTestClass(nodeId)) {
237
- // Direct changes to test classes are required
238
- if (impacts.has(nodeId)) {
239
- requiredTests.push(nodeId);
240
- }
241
- else {
242
- recommendedTests.push(nodeId);
243
- }
244
- continue;
245
- }
246
- // Find associated test class
247
- const testClass = this.findTestClass(nodeId);
248
- if (testClass) {
249
- const impact = impacts.get(nodeId);
250
- if (impact) {
251
- // High/critical impact = required
252
- if (impact.impactLevel === 'high' || impact.impactLevel === 'critical') {
253
- requiredTests.push(testClass);
254
- }
255
- else if (impact.impactLevel === 'medium') {
256
- recommendedTests.push(testClass);
257
- }
258
- else {
259
- optionalTests.push(testClass);
260
- }
261
- }
262
- else {
263
- // Affected but not directly changed
264
- recommendedTests.push(testClass);
265
- }
266
- }
267
- }
268
- // Determine priority
269
- let priority = 'low';
270
- const totalTests = requiredTests.length + recommendedTests.length;
271
- if (requiredTests.length >= 1 && affectedComponents.length > 15) {
272
- priority = 'high';
273
- }
274
- else if (requiredTests.length > 10 || impacts.size > 5) {
275
- priority = 'high';
276
- }
277
- else if (requiredTests.length > 3 || totalTests > 10) {
278
- priority = 'medium';
279
- }
209
+ const buckets = this.collectTestBuckets(affectedComponents, impacts);
210
+ const estimatedTestCount = buckets.requiredTests.length + buckets.recommendedTests.length;
211
+ const priority = this.determineTestPriority(buckets.requiredTests.length, estimatedTestCount, affectedComponents.length, impacts.size);
280
212
  return {
281
- requiredTests: Array.from(new Set(requiredTests)),
282
- recommendedTests: Array.from(new Set(recommendedTests)),
283
- optionalTests: Array.from(new Set(optionalTests)),
284
- estimatedTestCount: requiredTests.length + recommendedTests.length,
213
+ requiredTests: this.deduplicateNodeIds(buckets.requiredTests),
214
+ recommendedTests: this.deduplicateNodeIds(buckets.recommendedTests),
215
+ optionalTests: this.deduplicateNodeIds(buckets.optionalTests),
216
+ estimatedTestCount,
285
217
  priority,
286
218
  };
287
219
  }
@@ -301,12 +233,7 @@ export class DependencyImpactAnalyzer {
301
233
  return undefined;
302
234
  const [type, name] = parts;
303
235
  // Common test naming patterns
304
- const testPatterns = [
305
- `${type}:${name}Test`,
306
- `${type}:Test${name}`,
307
- `${type}:${name}_Test`,
308
- `${type}:${name}Tests`,
309
- ];
236
+ const testPatterns = [`${type}:${name}Test`, `${type}:Test${name}`, `${type}:${name}_Test`, `${type}:${name}Tests`];
310
237
  for (const pattern of testPatterns) {
311
238
  if (this.graph.has(pattern)) {
312
239
  return pattern;
@@ -314,6 +241,123 @@ export class DependencyImpactAnalyzer {
314
241
  }
315
242
  return undefined;
316
243
  }
244
+ collectImpactAggregate(changedComponents) {
245
+ const impacts = new Map();
246
+ const allAffected = new Set();
247
+ for (const nodeId of changedComponents) {
248
+ this.mergeComponentImpact(nodeId, impacts, allAffected);
249
+ }
250
+ return { impacts, allAffected };
251
+ }
252
+ mergeComponentImpact(nodeId, impacts, allAffected) {
253
+ const impact = this.calculateImpact(nodeId);
254
+ impacts.set(nodeId, impact);
255
+ allAffected.add(nodeId);
256
+ const transitiveAffected = this.findAllDependents(nodeId);
257
+ for (const affectedNode of transitiveAffected) {
258
+ allAffected.add(affectedNode);
259
+ }
260
+ }
261
+ collectTraversableDependents(nodeId) {
262
+ const dependents = this.reverseGraph.get(nodeId) ?? new Set();
263
+ const traversable = [];
264
+ for (const dependent of dependents) {
265
+ if (!shouldTraverseDependencyKind(DEFAULT_GRAPH_DEPENDENCY_KIND)) {
266
+ continue;
267
+ }
268
+ if (!this.options.includeTests && this.isTestClass(dependent)) {
269
+ continue;
270
+ }
271
+ traversable.push(dependent);
272
+ }
273
+ return traversable;
274
+ }
275
+ collectCriticalComponentCandidates() {
276
+ const critical = [];
277
+ for (const [nodeId, dependents] of this.reverseGraph.entries()) {
278
+ if (dependents.size >= this.options.criticalThreshold) {
279
+ critical.push(nodeId);
280
+ }
281
+ }
282
+ return critical;
283
+ }
284
+ getDependentCount(nodeId) {
285
+ return this.reverseGraph.get(nodeId)?.size ?? 0;
286
+ }
287
+ collectTestBuckets(affectedComponents, impacts) {
288
+ const requiredTests = [];
289
+ const recommendedTests = [];
290
+ const optionalTests = [];
291
+ for (const nodeId of affectedComponents) {
292
+ this.assignTestBucketsForNode(nodeId, impacts, requiredTests, recommendedTests, optionalTests);
293
+ }
294
+ return {
295
+ requiredTests,
296
+ recommendedTests,
297
+ optionalTests,
298
+ };
299
+ }
300
+ assignTestBucketsForNode(nodeId, impacts, requiredTests, recommendedTests, optionalTests) {
301
+ const association = this.resolveTestAssociation(nodeId);
302
+ if (association.directTest) {
303
+ this.assignDirectTest(nodeId, impacts, requiredTests, recommendedTests);
304
+ return;
305
+ }
306
+ if (!association.associatedTest) {
307
+ return;
308
+ }
309
+ this.assignAssociatedTest(association.associatedTest, impacts.get(nodeId), requiredTests, recommendedTests, optionalTests);
310
+ }
311
+ resolveTestAssociation(nodeId) {
312
+ if (this.isTestClass(nodeId)) {
313
+ return {
314
+ nodeId,
315
+ directTest: true,
316
+ };
317
+ }
318
+ return {
319
+ nodeId,
320
+ associatedTest: this.findTestClass(nodeId),
321
+ directTest: false,
322
+ };
323
+ }
324
+ assignDirectTest(nodeId, impacts, requiredTests, recommendedTests) {
325
+ if (impacts.has(nodeId)) {
326
+ requiredTests.push(nodeId);
327
+ return;
328
+ }
329
+ recommendedTests.push(nodeId);
330
+ }
331
+ assignAssociatedTest(testClass, impact, requiredTests, recommendedTests, optionalTests) {
332
+ if (!impact) {
333
+ recommendedTests.push(testClass);
334
+ return;
335
+ }
336
+ if (impact.impactLevel === 'high' || impact.impactLevel === 'critical') {
337
+ requiredTests.push(testClass);
338
+ }
339
+ else if (impact.impactLevel === 'medium') {
340
+ recommendedTests.push(testClass);
341
+ }
342
+ else {
343
+ optionalTests.push(testClass);
344
+ }
345
+ }
346
+ determineTestPriority(requiredTestCount, estimatedTestCount, affectedComponentCount, changedImpactCount) {
347
+ if (requiredTestCount >= 1 && affectedComponentCount > 15) {
348
+ return 'high';
349
+ }
350
+ if (requiredTestCount > 10 || changedImpactCount > 5) {
351
+ return 'high';
352
+ }
353
+ if (requiredTestCount > 3 || estimatedTestCount > 10) {
354
+ return 'medium';
355
+ }
356
+ return 'low';
357
+ }
358
+ deduplicateNodeIds(nodeIds) {
359
+ return Array.from(new Set(nodeIds));
360
+ }
317
361
  /**
318
362
  * Get impact for a specific component
319
363
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-impact-analyzer.js","sourceRoot":"","sources":["../../src/dependencies/dependency-impact-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-impact-analyzer.js","sourceRoot":"","sources":["../../src/dependencies/dependency-impact-analyzer.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export type MergedDependency = {
32
32
  */
33
33
  export type MergeResult = {
34
34
  graph: DependencyGraph;
35
+ components: Map<NodeId, MetadataComponent>;
35
36
  dependencies: MergedDependency[];
36
37
  stats: MergeStats;
37
38
  };
@@ -91,6 +92,15 @@ export declare class DependencyMerger {
91
92
  * @ac US-037-AC-5: Report merged dependencies
92
93
  */
93
94
  merge(components: Map<NodeId, MetadataComponent>, inferences: InferredDependency[]): MergeResult;
95
+ private cloneComponents;
96
+ private applyStaticDependencies;
97
+ private getStaticDependencyDetails;
98
+ private applyInferredDependencies;
99
+ private shouldIncludeInference;
100
+ private mergeConflictReason;
101
+ private addInferredDependency;
102
+ private updateComponentInferenceDetails;
103
+ private buildStats;
94
104
  /**
95
105
  * Filter dependencies by confidence
96
106
  */
@@ -58,92 +58,154 @@ export class DependencyMerger {
58
58
  */
59
59
  merge(components, inferences) {
60
60
  const startTime = Date.now();
61
- // Build graph from static dependencies
61
+ const mergedComponents = this.cloneComponents(components);
62
62
  const graph = new Map();
63
63
  const dependencies = [];
64
64
  const staticEdges = new Set();
65
- // Add static dependencies first
66
- for (const [nodeId, component] of components.entries()) {
67
- if (!graph.has(nodeId)) {
68
- graph.set(nodeId, new Set());
69
- }
70
- for (const dep of component.dependencies) {
71
- graph.get(nodeId).add(dep);
72
- staticEdges.add(`${nodeId}→${dep}`);
65
+ this.applyStaticDependencies(mergedComponents, graph, dependencies, staticEdges);
66
+ const inferredStats = this.applyInferredDependencies(mergedComponents, inferences, graph, dependencies, staticEdges);
67
+ const stats = this.buildStats(dependencies, staticEdges.size, inferredStats);
68
+ const duration = Date.now() - startTime;
69
+ logger.info('Dependency merge completed', {
70
+ total: stats.totalDependencies,
71
+ static: stats.staticDependencies,
72
+ inferred: stats.inferredDependencies,
73
+ conflicts: stats.conflicts,
74
+ durationMs: duration,
75
+ });
76
+ return { graph, components: mergedComponents, dependencies, stats };
77
+ }
78
+ cloneComponents(components) {
79
+ return new Map([...components.entries()].map(([nodeId, component]) => [
80
+ nodeId,
81
+ {
82
+ ...component,
83
+ dependencies: new Set(component.dependencies),
84
+ dependencyDetails: [...(component.dependencyDetails ?? [])],
85
+ dependents: new Set(component.dependents),
86
+ },
87
+ ]));
88
+ }
89
+ applyStaticDependencies(mergedComponents, graph, dependencies, staticEdges) {
90
+ for (const [nodeId, component] of mergedComponents.entries()) {
91
+ graph.set(nodeId, new Set());
92
+ const staticDependencyDetails = this.getStaticDependencyDetails(component);
93
+ component.dependencyDetails = [...staticDependencyDetails];
94
+ for (const dep of staticDependencyDetails) {
95
+ graph.get(nodeId).add(dep.nodeId);
96
+ staticEdges.add(`${nodeId}→${dep.nodeId}`);
73
97
  dependencies.push({
74
98
  from: nodeId,
75
- to: dep,
99
+ to: dep.nodeId,
76
100
  source: 'static',
77
101
  confidence: 1.0,
78
- reasons: ['Explicit reference in metadata'],
102
+ reasons: [dep.reason ?? 'Explicit reference in metadata'],
79
103
  });
80
104
  }
81
105
  }
106
+ }
107
+ getStaticDependencyDetails(component) {
108
+ if (component.dependencyDetails && component.dependencyDetails.length > 0) {
109
+ return component.dependencyDetails.filter((dependency) => dependency.kind !== 'inferred');
110
+ }
111
+ return [...component.dependencies].map((dep) => ({
112
+ nodeId: dep,
113
+ kind: component.optionalDependencies?.has(dep) ? 'soft' : 'hard',
114
+ source: 'parser',
115
+ reason: 'Explicit reference in metadata',
116
+ }));
117
+ }
118
+ applyInferredDependencies(mergedComponents, inferences, graph, dependencies, staticEdges) {
82
119
  let conflicts = 0;
83
120
  let inferredCount = 0;
84
121
  let totalConfidence = 0;
85
- // Add inferred dependencies
86
122
  for (const inference of inferences) {
87
- const edgeKey = `${inference.from}→${inference.to}`;
88
- // Check confidence threshold
89
- if (inference.confidence < this.options.minConfidence && !this.options.includeLowConfidence) {
90
- logger.debug('Skipping low confidence inference', {
91
- from: inference.from,
92
- to: inference.to,
93
- confidence: inference.confidence,
94
- });
123
+ if (!this.shouldIncludeInference(inference)) {
95
124
  continue;
96
125
  }
97
- // Check if static dependency exists
126
+ const edgeKey = `${inference.from}→${inference.to}`;
98
127
  if (staticEdges.has(edgeKey)) {
99
128
  conflicts++;
100
- logger.debug('Conflict: static dependency exists', {
101
- from: inference.from,
102
- to: inference.to,
103
- });
104
- if (!this.options.preferStatic) {
105
- // Update source to merged
106
- const existing = dependencies.find((d) => d.from === inference.from && d.to === inference.to);
107
- if (existing) {
108
- existing.source = 'merged';
109
- existing.reasons.push(inference.reason);
110
- }
111
- }
129
+ this.mergeConflictReason(dependencies, inference);
112
130
  continue;
113
131
  }
114
- // Add inferred dependency
115
- if (!graph.has(inference.from)) {
116
- graph.set(inference.from, new Set());
117
- }
118
- graph.get(inference.from).add(inference.to);
132
+ this.addInferredDependency(mergedComponents, graph, dependencies, inference);
119
133
  inferredCount++;
120
134
  totalConfidence += inference.confidence;
121
- dependencies.push({
122
- from: inference.from,
123
- to: inference.to,
124
- source: 'inferred',
125
- confidence: inference.confidence,
126
- reasons: [inference.reason],
127
- });
128
135
  }
129
- // Calculate statistics
130
- const stats = {
136
+ return { conflicts, inferredCount, totalConfidence };
137
+ }
138
+ shouldIncludeInference(inference) {
139
+ if (inference.confidence >= this.options.minConfidence || this.options.includeLowConfidence) {
140
+ return true;
141
+ }
142
+ logger.debug('Skipping low confidence inference', {
143
+ from: inference.from,
144
+ to: inference.to,
145
+ confidence: inference.confidence,
146
+ });
147
+ return false;
148
+ }
149
+ mergeConflictReason(dependencies, inference) {
150
+ logger.debug('Conflict: static dependency exists', {
151
+ from: inference.from,
152
+ to: inference.to,
153
+ });
154
+ if (this.options.preferStatic) {
155
+ return;
156
+ }
157
+ const existing = dependencies.find((dependency) => dependency.from === inference.from && dependency.to === inference.to);
158
+ if (existing) {
159
+ existing.source = 'merged';
160
+ existing.reasons.push(inference.reason);
161
+ }
162
+ }
163
+ addInferredDependency(mergedComponents, graph, dependencies, inference) {
164
+ if (!graph.has(inference.from)) {
165
+ graph.set(inference.from, new Set());
166
+ }
167
+ graph.get(inference.from).add(inference.to);
168
+ this.updateComponentInferenceDetails(mergedComponents.get(inference.from), inference);
169
+ dependencies.push({
170
+ from: inference.from,
171
+ to: inference.to,
172
+ source: 'inferred',
173
+ confidence: inference.confidence,
174
+ reasons: [inference.reason],
175
+ });
176
+ }
177
+ updateComponentInferenceDetails(sourceComponent, inference) {
178
+ if (!sourceComponent) {
179
+ return;
180
+ }
181
+ const component = sourceComponent;
182
+ component.dependencies.add(inference.to);
183
+ component.dependencyDetails ??= [];
184
+ const existing = component.dependencyDetails.find((dependency) => dependency.nodeId === inference.to);
185
+ if (existing) {
186
+ existing.kind = existing.kind === 'hard' ? 'hard' : 'inferred';
187
+ existing.source = existing.source === 'parser' ? 'merged' : 'ai';
188
+ existing.reason = existing.reason ? `${existing.reason}; ${inference.reason}` : inference.reason;
189
+ existing.confidence = inference.confidence;
190
+ return;
191
+ }
192
+ component.dependencyDetails.push({
193
+ nodeId: inference.to,
194
+ kind: 'inferred',
195
+ source: 'ai',
196
+ reason: inference.reason,
197
+ confidence: inference.confidence,
198
+ });
199
+ }
200
+ buildStats(dependencies, staticDependencyCount, inferredStats) {
201
+ return {
131
202
  totalDependencies: dependencies.length,
132
- staticDependencies: staticEdges.size,
133
- inferredDependencies: inferredCount,
134
- mergedDependencies: dependencies.filter((d) => d.source === 'merged').length,
135
- conflicts,
136
- avgConfidence: inferredCount > 0 ? totalConfidence / inferredCount : 1.0,
203
+ staticDependencies: staticDependencyCount,
204
+ inferredDependencies: inferredStats.inferredCount,
205
+ mergedDependencies: dependencies.filter((dependency) => dependency.source === 'merged').length,
206
+ conflicts: inferredStats.conflicts,
207
+ avgConfidence: inferredStats.inferredCount > 0 ? inferredStats.totalConfidence / inferredStats.inferredCount : 1.0,
137
208
  };
138
- const duration = Date.now() - startTime;
139
- logger.info('Dependency merge completed', {
140
- total: stats.totalDependencies,
141
- static: stats.staticDependencies,
142
- inferred: stats.inferredDependencies,
143
- conflicts: stats.conflicts,
144
- durationMs: duration,
145
- });
146
- return { graph, dependencies, stats };
147
209
  }
148
210
  /**
149
211
  * Filter dependencies by confidence
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-merger.js","sourceRoot":"","sources":["../../src/dependencies/dependency-merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-merger.js","sourceRoot":"","sources":["../../src/dependencies/dependency-merger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAoD7C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAA0B;IAEzC,YAAmB,UAAyB,EAAE;QAC5C,IAAI,CAAC,OAAO,GAAG;YACb,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,GAAG;YAC3C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,KAAK;SAC5D,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAC3C,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,UAA0C,EAAE,UAAgC;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAoB,IAAI,GAAG,EAAE,CAAC;QACzC,MAAM,YAAY,GAAuB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAClD,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,YAAY,EACZ,WAAW,CACZ,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACxC,KAAK,EAAE,KAAK,CAAC,iBAAiB;YAC9B,MAAM,EAAE,KAAK,CAAC,kBAAkB;YAChC,QAAQ,EAAE,KAAK,CAAC,oBAAoB;YACpC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IAEO,eAAe,CAAC,UAA0C;QAChE,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM;YACN;gBACE,GAAG,SAAS;gBACZ,YAAY,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC7C,iBAAiB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC3D,UAAU,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;aAC1C;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAC7B,gBAAgD,EAChD,KAAsB,EACtB,YAAgC,EAChC,WAAwB;QAExB,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7B,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;YAC3E,SAAS,CAAC,iBAAiB,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC;YAE3D,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3C,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,GAAG,CAAC,MAAM;oBACd,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,gCAAgC,CAAC;iBAC1D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,SAA4B;QAC7D,IAAI,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,GAAG,CACpC,CAAC,GAAG,EAA+B,EAAE,CAAC,CAAC;YACrC,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAChE,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,gCAAgC;SACzC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAC/B,gBAAgD,EAChD,UAAgC,EAChC,KAAsB,EACtB,YAAgC,EAChC,WAAwB;QAExB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,SAAS,EAAE,CAAC;gBACZ,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBAClD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,aAAa,EAAE,CAAC;YAChB,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;IACvD,CAAC;IAEO,sBAAsB,CAAC,SAA6B;QAC1D,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;YAChD,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,YAAgC,EAAE,SAA6B;QACzF,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;YACjD,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,EAAE,EAAE,SAAS,CAAC,EAAE;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAChC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CACrF,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC3B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC3B,gBAAgD,EAChD,KAAsB,EACtB,YAAgC,EAChC,SAA6B;QAE7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAEtF,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,+BAA+B,CACrC,eAA8C,EAC9C,SAA6B;QAE7B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC;QAClC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzC,SAAS,CAAC,iBAAiB,KAAK,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;QACtG,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/D,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YACjE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YACjG,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,SAAS,CAAC,EAAE;YACpB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAC,CAAC;IACL,CAAC;IAEO,UAAU,CAChB,YAAgC,EAChC,qBAA6B,EAC7B,aAAoF;QAEpF,OAAO;YACL,iBAAiB,EAAE,YAAY,CAAC,MAAM;YACtC,kBAAkB,EAAE,qBAAqB;YACzC,oBAAoB,EAAE,aAAa,CAAC,aAAa;YACjD,kBAAkB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;YAC9F,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,aAAa,EACX,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;SACtG,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,YAAgC,EAAE,aAAqB;QAC/E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,uBAAuB,CAAC,YAAgC,EAAE,MAAwB;QACvF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,4BAA4B,CAAC,YAAgC,EAAE,YAAoB,GAAG;QAC3F,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC/F,CAAC;IAED;;OAEG;IACI,0BAA0B,CAAC,YAAgC;QAChE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,YAAY,CACjB,UAAuB,EACvB,UAAgC;QAEhC,MAAM,SAAS,GAA4D,EAAE,CAAC;QAE9E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,UAAU,EAAE,SAAS,CAAC,UAAU;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,MAAmB;QACvC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,kBAAkB;QAClB,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;YACnE,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;YACvE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC;SACpE,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChF,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,qCAAqC,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}