@jterrats/smart-deployment 1.0.3 → 1.0.4

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 (257) 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 +2 -2
  256. package/oclif.manifest.json +1 -1
  257. package/package.json +1 -1
@@ -10,30 +10,8 @@
10
10
  * @ac US-091-AC-6: Suggest auto-fixes
11
11
  * @issue #91
12
12
  */
13
- export type ValidationResult = {
14
- isValid: boolean;
15
- errors: ValidationError[];
16
- warnings: ValidationWarning[];
17
- suggestions: ValidationSuggestion[];
18
- filePath: string;
19
- };
20
- export type ValidationError = {
21
- type: 'syntax' | 'schema' | 'reference' | 'version';
22
- message: string;
23
- line?: number;
24
- column?: number;
25
- severity: 'error' | 'warning';
26
- };
27
- export type ValidationWarning = {
28
- message: string;
29
- line?: number;
30
- suggestion?: string;
31
- };
32
- export type ValidationSuggestion = {
33
- issue: string;
34
- fix: string;
35
- autoFixable: boolean;
36
- };
13
+ export type { ValidationError, ValidationResult, ValidationSuggestion, ValidationWarning, } from './xml/xml-validation-types.js';
14
+ import type { ValidationResult } from './xml/xml-validation-types.js';
37
15
  /**
38
16
  * @ac US-091-AC-1: Validate XML syntax
39
17
  */
@@ -51,50 +29,11 @@ export declare class XmlMetadataValidator {
51
29
  * Validate XML is well-formed
52
30
  */
53
31
  private validateXmlSyntax;
54
- /**
55
- * @ac US-091-AC-2: Validate against Salesforce schema
56
- * Validate metadata structure
57
- */
58
- private validateSchema;
59
32
  /**
60
33
  * @ac US-091-AC-3: Check API version compatibility
61
34
  * Validate API version
62
35
  */
63
36
  private validateApiVersion;
64
- /**
65
- * @ac US-091-AC-4: Validate field references
66
- * Validate field and object references
67
- */
68
- private validateReferences;
69
- /**
70
- * @ac US-091-AC-6: Suggest auto-fixes
71
- * Generate fix suggestions
72
- */
73
- private generateSuggestions;
74
- /**
75
- * Validate Apex metadata
76
- */
77
- private validateApexMetadata;
78
- /**
79
- * Validate Custom Object metadata
80
- */
81
- private validateObjectMetadata;
82
- /**
83
- * Validate security metadata
84
- */
85
- private validateSecurityMetadata;
86
- /**
87
- * Get metadata type from file path
88
- */
89
- private getMetadataType;
90
- /**
91
- * Check if name is reserved keyword
92
- */
93
- private isReservedKeyword;
94
- /**
95
- * Suggest fixed name for invalid reference
96
- */
97
- private suggestFixedName;
98
37
  /**
99
38
  * Format validation report
100
39
  */
@@ -12,6 +12,9 @@
12
12
  */
13
13
  import { promises as fs } from 'node:fs';
14
14
  import { getLogger } from '../utils/logger.js';
15
+ import { generateSuggestions, validateReferences } from './xml/xml-reference-rules.js';
16
+ import { formatValidationReport } from './xml/xml-report-formatter.js';
17
+ import { validateSchema } from './xml/xml-schema-rules.js';
15
18
  const logger = getLogger('XmlMetadataValidator');
16
19
  /**
17
20
  * @ac US-091-AC-1: Validate XML syntax
@@ -38,13 +41,13 @@ export class XmlMetadataValidator {
38
41
  // 1. Validate XML syntax
39
42
  this.validateXmlSyntax(content, result);
40
43
  // 2. Validate against Salesforce schema
41
- this.validateSchema(content, filePath, result);
44
+ validateSchema(content, filePath, result);
42
45
  // 3. Check API version
43
46
  this.validateApiVersion(content, result);
44
47
  // 4. Validate field references
45
- this.validateReferences(content, filePath, result);
48
+ validateReferences(content, result);
46
49
  // 5. Generate suggestions
47
- this.generateSuggestions(result);
50
+ generateSuggestions(result, this.maxApiVersion);
48
51
  result.isValid = result.errors.filter((e) => e.severity === 'error').length === 0;
49
52
  logger.info('Validation complete', {
50
53
  filePath,
@@ -118,24 +121,6 @@ export class XmlMetadataValidator {
118
121
  });
119
122
  }
120
123
  }
121
- /**
122
- * @ac US-091-AC-2: Validate against Salesforce schema
123
- * Validate metadata structure
124
- */
125
- validateSchema(content, filePath, result) {
126
- // Get metadata type from file path
127
- const metadataType = this.getMetadataType(filePath);
128
- // Validate based on metadata type using regex patterns
129
- if (metadataType === 'ApexClass' || metadataType === 'ApexTrigger') {
130
- this.validateApexMetadata(content, result);
131
- }
132
- else if (metadataType === 'CustomObject') {
133
- this.validateObjectMetadata(content, result);
134
- }
135
- else if (metadataType === 'Profile' || metadataType === 'PermissionSet') {
136
- this.validateSecurityMetadata(content, result);
137
- }
138
- }
139
124
  /**
140
125
  * @ac US-091-AC-3: Check API version compatibility
141
126
  * Validate API version
@@ -170,327 +155,11 @@ export class XmlMetadataValidator {
170
155
  });
171
156
  }
172
157
  }
173
- /**
174
- * @ac US-091-AC-4: Validate field references
175
- * Validate field and object references
176
- */
177
- validateReferences(content, filePath, result) {
178
- // Check for common reference patterns
179
- const patterns = [
180
- { regex: /<field>([^<]+)<\/field>/g, type: 'field' },
181
- { regex: /<object>([^<]+)<\/object>/g, type: 'object' },
182
- { regex: /<class>([^<]+)<\/class>/g, type: 'class' },
183
- ];
184
- for (const pattern of patterns) {
185
- const matches = [...content.matchAll(pattern.regex)];
186
- for (const match of matches) {
187
- const reference = match[1];
188
- // Check for invalid characters
189
- if (!/^[a-zA-Z][a-zA-Z0-9_]*(__c)?$/.test(reference)) {
190
- result.errors.push({
191
- type: 'reference',
192
- message: `Invalid ${pattern.type} name: ${reference}`,
193
- severity: 'warning',
194
- });
195
- }
196
- // Check for reserved keywords
197
- if (this.isReservedKeyword(reference)) {
198
- result.errors.push({
199
- type: 'reference',
200
- message: `Reserved keyword used as ${pattern.type} name: ${reference}`,
201
- severity: 'error',
202
- });
203
- }
204
- }
205
- }
206
- }
207
- /**
208
- * @ac US-091-AC-6: Suggest auto-fixes
209
- * Generate fix suggestions
210
- */
211
- generateSuggestions(result) {
212
- for (const error of result.errors) {
213
- if (error.type === 'version' && error.message.includes('too old')) {
214
- result.suggestions.push({
215
- issue: error.message,
216
- fix: `Update API version to ${this.maxApiVersion}`,
217
- autoFixable: true,
218
- });
219
- }
220
- if (error.type === 'reference' && error.message.includes('Invalid')) {
221
- const match = error.message.match(/: (.+)$/);
222
- if (match) {
223
- const invalidName = match[1];
224
- const fixedName = this.suggestFixedName(invalidName);
225
- result.suggestions.push({
226
- issue: error.message,
227
- fix: `Rename to: ${fixedName}`,
228
- autoFixable: false,
229
- });
230
- }
231
- }
232
- }
233
- }
234
- /**
235
- * Validate Apex metadata
236
- */
237
- validateApexMetadata(content, result) {
238
- // Check for root element
239
- if (!content.includes('<ApexClass') && !content.includes('<ApexTrigger')) {
240
- result.errors.push({
241
- type: 'schema',
242
- message: 'Missing ApexClass or ApexTrigger root element',
243
- severity: 'error',
244
- });
245
- return;
246
- }
247
- // Check required fields
248
- if (!content.includes('<status>')) {
249
- result.errors.push({
250
- type: 'schema',
251
- message: 'Missing required field: status',
252
- severity: 'error',
253
- });
254
- }
255
- }
256
- /**
257
- * Validate Custom Object metadata
258
- */
259
- validateObjectMetadata(content, result) {
260
- if (!content.includes('<CustomObject')) {
261
- result.errors.push({
262
- type: 'schema',
263
- message: 'Missing CustomObject root element',
264
- severity: 'error',
265
- });
266
- return;
267
- }
268
- // Check label
269
- if (!content.includes('<label>')) {
270
- result.errors.push({
271
- type: 'schema',
272
- message: 'Missing required field: label',
273
- severity: 'error',
274
- });
275
- }
276
- // Check plural label
277
- if (!content.includes('<pluralLabel>')) {
278
- result.warnings.push({
279
- message: 'Missing pluralLabel field',
280
- suggestion: 'Add pluralLabel for better user experience',
281
- });
282
- }
283
- }
284
- /**
285
- * Validate security metadata
286
- */
287
- validateSecurityMetadata(content, result) {
288
- if (!content.includes('<Profile') && !content.includes('<PermissionSet')) {
289
- result.errors.push({
290
- type: 'schema',
291
- message: 'Missing Profile or PermissionSet root element',
292
- severity: 'error',
293
- });
294
- }
295
- }
296
- /**
297
- * Get metadata type from file path
298
- */
299
- getMetadataType(filePath) {
300
- if (filePath.includes('/classes/'))
301
- return 'ApexClass';
302
- if (filePath.includes('/triggers/'))
303
- return 'ApexTrigger';
304
- if (filePath.includes('/objects/'))
305
- return 'CustomObject';
306
- if (filePath.includes('/profiles/'))
307
- return 'Profile';
308
- if (filePath.includes('/permissionsets/'))
309
- return 'PermissionSet';
310
- return 'Unknown';
311
- }
312
- /**
313
- * Check if name is reserved keyword
314
- */
315
- isReservedKeyword(name) {
316
- const keywords = [
317
- 'abstract',
318
- 'activate',
319
- 'and',
320
- 'any',
321
- 'array',
322
- 'as',
323
- 'asc',
324
- 'autonomous',
325
- 'begin',
326
- 'bigdecimal',
327
- 'blob',
328
- 'break',
329
- 'bulk',
330
- 'by',
331
- 'case',
332
- 'cast',
333
- 'catch',
334
- 'char',
335
- 'class',
336
- 'collect',
337
- 'commit',
338
- 'const',
339
- 'continue',
340
- 'convertcurrency',
341
- 'decimal',
342
- 'default',
343
- 'delete',
344
- 'desc',
345
- 'do',
346
- 'else',
347
- 'end',
348
- 'enum',
349
- 'exception',
350
- 'exit',
351
- 'export',
352
- 'extends',
353
- 'false',
354
- 'final',
355
- 'finally',
356
- 'float',
357
- 'for',
358
- 'from',
359
- 'future',
360
- 'global',
361
- 'goto',
362
- 'group',
363
- 'having',
364
- 'hint',
365
- 'if',
366
- 'implements',
367
- 'import',
368
- 'in',
369
- 'inner',
370
- 'insert',
371
- 'instanceof',
372
- 'int',
373
- 'interface',
374
- 'into',
375
- 'join',
376
- 'like',
377
- 'limit',
378
- 'list',
379
- 'long',
380
- 'loop',
381
- 'map',
382
- 'merge',
383
- 'new',
384
- 'not',
385
- 'null',
386
- 'nulls',
387
- 'number',
388
- 'object',
389
- 'of',
390
- 'on',
391
- 'or',
392
- 'outer',
393
- 'override',
394
- 'package',
395
- 'parallel',
396
- 'pragma',
397
- 'private',
398
- 'protected',
399
- 'public',
400
- 'retrieve',
401
- 'return',
402
- 'rollback',
403
- 'select',
404
- 'set',
405
- 'short',
406
- 'sort',
407
- 'static',
408
- 'super',
409
- 'switch',
410
- 'synchronized',
411
- 'system',
412
- 'testmethod',
413
- 'then',
414
- 'this',
415
- 'throw',
416
- 'transaction',
417
- 'trigger',
418
- 'true',
419
- 'try',
420
- 'type',
421
- 'undelete',
422
- 'update',
423
- 'upsert',
424
- 'using',
425
- 'virtual',
426
- 'void',
427
- 'webservice',
428
- 'when',
429
- 'where',
430
- 'while',
431
- ];
432
- return keywords.includes(name.toLowerCase());
433
- }
434
- /**
435
- * Suggest fixed name for invalid reference
436
- */
437
- suggestFixedName(invalidName) {
438
- // Remove invalid characters
439
- let fixed = invalidName.replace(/[^a-zA-Z0-9_]/g, '_');
440
- // Ensure starts with letter
441
- if (!/^[a-zA-Z]/.test(fixed)) {
442
- fixed = 'Field_' + fixed;
443
- }
444
- return fixed;
445
- }
446
158
  /**
447
159
  * Format validation report
448
160
  */
449
161
  formatReport(result) {
450
- const lines = [];
451
- lines.push('🔍 XML Validation Report');
452
- lines.push('═══════════════════════════════════════');
453
- lines.push(`File: ${result.filePath}`);
454
- lines.push(`Status: ${result.isValid ? '✅ VALID' : '❌ INVALID'}`);
455
- lines.push('');
456
- if (result.errors.length > 0) {
457
- const errors = result.errors.filter((e) => e.severity === 'error');
458
- if (errors.length > 0) {
459
- lines.push(`🔴 Errors (${errors.length}):`);
460
- for (const error of errors) {
461
- const location = error.line ? ` [Line ${error.line}]` : '';
462
- lines.push(` ${error.type.toUpperCase()}${location}: ${error.message}`);
463
- }
464
- lines.push('');
465
- }
466
- const warnings = result.errors.filter((e) => e.severity === 'warning');
467
- if (warnings.length > 0) {
468
- lines.push(`🟡 Warnings (${warnings.length}):`);
469
- for (const warning of warnings) {
470
- lines.push(` ${warning.message}`);
471
- }
472
- lines.push('');
473
- }
474
- }
475
- if (result.warnings.length > 0) {
476
- lines.push(`⚠️ Additional Warnings (${result.warnings.length}):`);
477
- for (const warning of result.warnings) {
478
- lines.push(` ${warning.message}`);
479
- if (warning.suggestion) {
480
- lines.push(` 💡 ${warning.suggestion}`);
481
- }
482
- }
483
- lines.push('');
484
- }
485
- if (result.suggestions.length > 0) {
486
- lines.push(`💡 Suggestions (${result.suggestions.length}):`);
487
- for (const suggestion of result.suggestions) {
488
- const autofix = suggestion.autoFixable ? ' [Auto-fixable]' : '';
489
- lines.push(` ${suggestion.issue}`);
490
- lines.push(` → ${suggestion.fix}${autofix}`);
491
- }
492
- }
493
- return lines.join('\n');
162
+ return formatValidationReport(result);
494
163
  }
495
164
  /**
496
165
  * Validate multiple files
@@ -1 +1 @@
1
- {"version":3,"file":"xml-metadata-validator.js","sourceRoot":"","sources":["../../src/validators/xml-metadata-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xml-metadata-validator.js","sourceRoot":"","sources":["../../src/validators/xml-metadata-validator.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,12 @@ export declare class TestOptimizer {
112
112
  * @ac US-040-AC-3: Sync test classes with production classes
113
113
  */
114
114
  optimizeTests(waves: Wave[]): TestOptimizationResult;
115
+ private getPolicy;
116
+ private createOptimizationPlanningState;
117
+ private analyzeWave;
118
+ private createWaveTestPlan;
119
+ private createOptimizedWave;
120
+ private collectOptimizationDecisions;
115
121
  /**
116
122
  * Collect all test classes from all waves
117
123
  */
@@ -132,18 +138,25 @@ export declare class TestOptimizer {
132
138
  * Sync test classes with production classes
133
139
  */
134
140
  private syncTestClasses;
141
+ private matchTestClasses;
135
142
  /**
136
143
  * @ac US-040-AC-5: Calculate test coverage per wave
137
144
  */
138
145
  private estimateCoverage;
146
+ private scoreEstimatedCoverage;
139
147
  /**
140
148
  * Calculate optimization statistics
141
149
  */
142
150
  private calculateStats;
151
+ private collectWaveTestTotals;
152
+ private calculateTimeSaved;
143
153
  /**
144
154
  * @ac US-040-AC-6: Report test optimization savings
145
155
  */
146
156
  generateReport(result: TestOptimizationResult): string;
157
+ private appendStatisticsSection;
158
+ private appendDecisionsSection;
159
+ private appendWaveDetailsSection;
147
160
  /**
148
161
  * Get waves that need test execution
149
162
  */