@jterrats/smart-deployment 1.0.3

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 (395) hide show
  1. package/README.md +193 -0
  2. package/lib/ai/agentforce-error-handler.d.ts +81 -0
  3. package/lib/ai/agentforce-error-handler.js +196 -0
  4. package/lib/ai/agentforce-error-handler.js.map +1 -0
  5. package/lib/ai/agentforce-priority-service.d.ts +82 -0
  6. package/lib/ai/agentforce-priority-service.js +257 -0
  7. package/lib/ai/agentforce-priority-service.js.map +1 -0
  8. package/lib/ai/agentforce-service.d.ts +99 -0
  9. package/lib/ai/agentforce-service.js +300 -0
  10. package/lib/ai/agentforce-service.js.map +1 -0
  11. package/lib/ai/circuit-breaker.d.ts +115 -0
  12. package/lib/ai/circuit-breaker.js +277 -0
  13. package/lib/ai/circuit-breaker.js.map +1 -0
  14. package/lib/ai/dependency-inference-service.d.ts +76 -0
  15. package/lib/ai/dependency-inference-service.js +220 -0
  16. package/lib/ai/dependency-inference-service.js.map +1 -0
  17. package/lib/ai/llm-provider-factory.d.ts +15 -0
  18. package/lib/ai/llm-provider-factory.js +36 -0
  19. package/lib/ai/llm-provider-factory.js.map +1 -0
  20. package/lib/ai/llm-provider.d.ts +27 -0
  21. package/lib/ai/llm-provider.js +2 -0
  22. package/lib/ai/llm-provider.js.map +1 -0
  23. package/lib/ai/openai-service.d.ts +20 -0
  24. package/lib/ai/openai-service.js +89 -0
  25. package/lib/ai/openai-service.js.map +1 -0
  26. package/lib/ai/prompt-builder.d.ts +79 -0
  27. package/lib/ai/prompt-builder.js +180 -0
  28. package/lib/ai/prompt-builder.js.map +1 -0
  29. package/lib/ai/response-parser.d.ts +67 -0
  30. package/lib/ai/response-parser.js +234 -0
  31. package/lib/ai/response-parser.js.map +1 -0
  32. package/lib/ai/wave-validation-service.d.ts +111 -0
  33. package/lib/ai/wave-validation-service.js +381 -0
  34. package/lib/ai/wave-validation-service.js.map +1 -0
  35. package/lib/analysis/analysis-reporter.d.ts +56 -0
  36. package/lib/analysis/analysis-reporter.js +170 -0
  37. package/lib/analysis/analysis-reporter.js.map +1 -0
  38. package/lib/analytics/error-analytics.d.ts +80 -0
  39. package/lib/analytics/error-analytics.js +162 -0
  40. package/lib/analytics/error-analytics.js.map +1 -0
  41. package/lib/commands/analyze.d.ts +49 -0
  42. package/lib/commands/analyze.js +232 -0
  43. package/lib/commands/analyze.js.map +1 -0
  44. package/lib/commands/config.d.ts +42 -0
  45. package/lib/commands/config.js +219 -0
  46. package/lib/commands/config.js.map +1 -0
  47. package/lib/commands/resume.d.ts +26 -0
  48. package/lib/commands/resume.js +69 -0
  49. package/lib/commands/resume.js.map +1 -0
  50. package/lib/commands/start.d.ts +70 -0
  51. package/lib/commands/start.js +659 -0
  52. package/lib/commands/start.js.map +1 -0
  53. package/lib/commands/status.d.ts +37 -0
  54. package/lib/commands/status.js +69 -0
  55. package/lib/commands/status.js.map +1 -0
  56. package/lib/commands/validate.d.ts +33 -0
  57. package/lib/commands/validate.js +66 -0
  58. package/lib/commands/validate.js.map +1 -0
  59. package/lib/config/repo-config.d.ts +22 -0
  60. package/lib/config/repo-config.js +31 -0
  61. package/lib/config/repo-config.js.map +1 -0
  62. package/lib/constants/agentforce-limits.d.ts +174 -0
  63. package/lib/constants/agentforce-limits.js +262 -0
  64. package/lib/constants/agentforce-limits.js.map +1 -0
  65. package/lib/constants/api-version.d.ts +70 -0
  66. package/lib/constants/api-version.js +122 -0
  67. package/lib/constants/api-version.js.map +1 -0
  68. package/lib/constants/deployment-order.d.ts +68 -0
  69. package/lib/constants/deployment-order.js +162 -0
  70. package/lib/constants/deployment-order.js.map +1 -0
  71. package/lib/constants/salesforce-limits.d.ts +107 -0
  72. package/lib/constants/salesforce-limits.js +104 -0
  73. package/lib/constants/salesforce-limits.js.map +1 -0
  74. package/lib/dependencies/circular-dependency-detector.d.ts +137 -0
  75. package/lib/dependencies/circular-dependency-detector.js +329 -0
  76. package/lib/dependencies/circular-dependency-detector.js.map +1 -0
  77. package/lib/dependencies/cycle-remediation-planner.d.ts +50 -0
  78. package/lib/dependencies/cycle-remediation-planner.js +192 -0
  79. package/lib/dependencies/cycle-remediation-planner.js.map +1 -0
  80. package/lib/dependencies/dependency-cache.d.ts +134 -0
  81. package/lib/dependencies/dependency-cache.js +303 -0
  82. package/lib/dependencies/dependency-cache.js.map +1 -0
  83. package/lib/dependencies/dependency-depth-calculator.d.ts +145 -0
  84. package/lib/dependencies/dependency-depth-calculator.js +368 -0
  85. package/lib/dependencies/dependency-depth-calculator.js.map +1 -0
  86. package/lib/dependencies/dependency-graph-builder.d.ts +151 -0
  87. package/lib/dependencies/dependency-graph-builder.js +411 -0
  88. package/lib/dependencies/dependency-graph-builder.js.map +1 -0
  89. package/lib/dependencies/dependency-impact-analyzer.d.ts +145 -0
  90. package/lib/dependencies/dependency-impact-analyzer.js +330 -0
  91. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -0
  92. package/lib/dependencies/dependency-merger.d.ts +122 -0
  93. package/lib/dependencies/dependency-merger.js +245 -0
  94. package/lib/dependencies/dependency-merger.js.map +1 -0
  95. package/lib/dependencies/dependency-resolver.d.ts +157 -0
  96. package/lib/dependencies/dependency-resolver.js +298 -0
  97. package/lib/dependencies/dependency-resolver.js.map +1 -0
  98. package/lib/dependencies/dependency-validator.d.ts +123 -0
  99. package/lib/dependencies/dependency-validator.js +291 -0
  100. package/lib/dependencies/dependency-validator.js.map +1 -0
  101. package/lib/dependencies/graph-visualizer.d.ts +110 -0
  102. package/lib/dependencies/graph-visualizer.js +262 -0
  103. package/lib/dependencies/graph-visualizer.js.map +1 -0
  104. package/lib/dependencies/heuristic-inference.d.ts +136 -0
  105. package/lib/dependencies/heuristic-inference.js +430 -0
  106. package/lib/dependencies/heuristic-inference.js.map +1 -0
  107. package/lib/deployment/cycle-source-editor.d.ts +34 -0
  108. package/lib/deployment/cycle-source-editor.js +121 -0
  109. package/lib/deployment/cycle-source-editor.js.map +1 -0
  110. package/lib/deployment/deployment-error-handler.d.ts +38 -0
  111. package/lib/deployment/deployment-error-handler.js +79 -0
  112. package/lib/deployment/deployment-error-handler.js.map +1 -0
  113. package/lib/deployment/deployment-reporter.d.ts +63 -0
  114. package/lib/deployment/deployment-reporter.js +150 -0
  115. package/lib/deployment/deployment-reporter.js.map +1 -0
  116. package/lib/deployment/deployment-state-summary.d.ts +38 -0
  117. package/lib/deployment/deployment-state-summary.js +209 -0
  118. package/lib/deployment/deployment-state-summary.js.map +1 -0
  119. package/lib/deployment/deployment-status-service.d.ts +36 -0
  120. package/lib/deployment/deployment-status-service.js +128 -0
  121. package/lib/deployment/deployment-status-service.js.map +1 -0
  122. package/lib/deployment/deployment-tracker.d.ts +42 -0
  123. package/lib/deployment/deployment-tracker.js +79 -0
  124. package/lib/deployment/deployment-tracker.js.map +1 -0
  125. package/lib/deployment/deployment-validation-service.d.ts +28 -0
  126. package/lib/deployment/deployment-validation-service.js +161 -0
  127. package/lib/deployment/deployment-validation-service.js.map +1 -0
  128. package/lib/deployment/retry-handler.d.ts +37 -0
  129. package/lib/deployment/retry-handler.js +86 -0
  130. package/lib/deployment/retry-handler.js.map +1 -0
  131. package/lib/deployment/sf-cli-integration.d.ts +42 -0
  132. package/lib/deployment/sf-cli-integration.js +105 -0
  133. package/lib/deployment/sf-cli-integration.js.map +1 -0
  134. package/lib/deployment/state-manager.d.ts +61 -0
  135. package/lib/deployment/state-manager.js +83 -0
  136. package/lib/deployment/state-manager.js.map +1 -0
  137. package/lib/deployment/test-executor.d.ts +41 -0
  138. package/lib/deployment/test-executor.js +87 -0
  139. package/lib/deployment/test-executor.js.map +1 -0
  140. package/lib/errors/base-error.d.ts +24 -0
  141. package/lib/errors/base-error.js +66 -0
  142. package/lib/errors/base-error.js.map +1 -0
  143. package/lib/errors/dependency-error.d.ts +37 -0
  144. package/lib/errors/dependency-error.js +76 -0
  145. package/lib/errors/dependency-error.js.map +1 -0
  146. package/lib/errors/deployment-error.d.ts +55 -0
  147. package/lib/errors/deployment-error.js +132 -0
  148. package/lib/errors/deployment-error.js.map +1 -0
  149. package/lib/errors/index.d.ts +45 -0
  150. package/lib/errors/index.js +71 -0
  151. package/lib/errors/index.js.map +1 -0
  152. package/lib/errors/network-error.d.ts +53 -0
  153. package/lib/errors/network-error.js +111 -0
  154. package/lib/errors/network-error.js.map +1 -0
  155. package/lib/errors/parsing-error.d.ts +41 -0
  156. package/lib/errors/parsing-error.js +69 -0
  157. package/lib/errors/parsing-error.js.map +1 -0
  158. package/lib/errors/validation-error-reporter.d.ts +34 -0
  159. package/lib/errors/validation-error-reporter.js +99 -0
  160. package/lib/errors/validation-error-reporter.js.map +1 -0
  161. package/lib/errors/validation-error.d.ts +58 -0
  162. package/lib/errors/validation-error.js +131 -0
  163. package/lib/errors/validation-error.js.map +1 -0
  164. package/lib/index.d.ts +2 -0
  165. package/lib/index.js +2 -0
  166. package/lib/index.js.map +1 -0
  167. package/lib/monitoring/performance-monitor.d.ts +98 -0
  168. package/lib/monitoring/performance-monitor.js +260 -0
  169. package/lib/monitoring/performance-monitor.js.map +1 -0
  170. package/lib/parsers/apex-class-parser.d.ts +47 -0
  171. package/lib/parsers/apex-class-parser.js +368 -0
  172. package/lib/parsers/apex-class-parser.js.map +1 -0
  173. package/lib/parsers/apex-trigger-parser.d.ts +48 -0
  174. package/lib/parsers/apex-trigger-parser.js +229 -0
  175. package/lib/parsers/apex-trigger-parser.js.map +1 -0
  176. package/lib/parsers/aura-parser.d.ts +55 -0
  177. package/lib/parsers/aura-parser.js +229 -0
  178. package/lib/parsers/aura-parser.js.map +1 -0
  179. package/lib/parsers/bot-parser.d.ts +65 -0
  180. package/lib/parsers/bot-parser.js +225 -0
  181. package/lib/parsers/bot-parser.js.map +1 -0
  182. package/lib/parsers/custom-metadata-parser.d.ts +94 -0
  183. package/lib/parsers/custom-metadata-parser.js +199 -0
  184. package/lib/parsers/custom-metadata-parser.js.map +1 -0
  185. package/lib/parsers/custom-object-parser.d.ts +62 -0
  186. package/lib/parsers/custom-object-parser.js +297 -0
  187. package/lib/parsers/custom-object-parser.js.map +1 -0
  188. package/lib/parsers/email-template-parser.d.ts +64 -0
  189. package/lib/parsers/email-template-parser.js +238 -0
  190. package/lib/parsers/email-template-parser.js.map +1 -0
  191. package/lib/parsers/error-resilient-parser.d.ts +110 -0
  192. package/lib/parsers/error-resilient-parser.js +277 -0
  193. package/lib/parsers/error-resilient-parser.js.map +1 -0
  194. package/lib/parsers/flexipage-parser.d.ts +64 -0
  195. package/lib/parsers/flexipage-parser.js +196 -0
  196. package/lib/parsers/flexipage-parser.js.map +1 -0
  197. package/lib/parsers/flow-parser.d.ts +54 -0
  198. package/lib/parsers/flow-parser.js +287 -0
  199. package/lib/parsers/flow-parser.js.map +1 -0
  200. package/lib/parsers/genai-prompt-parser.d.ts +67 -0
  201. package/lib/parsers/genai-prompt-parser.js +160 -0
  202. package/lib/parsers/genai-prompt-parser.js.map +1 -0
  203. package/lib/parsers/layout-parser.d.ts +64 -0
  204. package/lib/parsers/layout-parser.js +267 -0
  205. package/lib/parsers/layout-parser.js.map +1 -0
  206. package/lib/parsers/lwc-parser.d.ts +60 -0
  207. package/lib/parsers/lwc-parser.js +264 -0
  208. package/lib/parsers/lwc-parser.js.map +1 -0
  209. package/lib/parsers/permission-set-parser.d.ts +86 -0
  210. package/lib/parsers/permission-set-parser.js +152 -0
  211. package/lib/parsers/permission-set-parser.js.map +1 -0
  212. package/lib/parsers/profile-parser.d.ts +81 -0
  213. package/lib/parsers/profile-parser.js +141 -0
  214. package/lib/parsers/profile-parser.js.map +1 -0
  215. package/lib/parsers/visualforce-parser.d.ts +47 -0
  216. package/lib/parsers/visualforce-parser.js +180 -0
  217. package/lib/parsers/visualforce-parser.js.map +1 -0
  218. package/lib/provisioning/data-provisioner.d.ts +88 -0
  219. package/lib/provisioning/data-provisioner.js +257 -0
  220. package/lib/provisioning/data-provisioner.js.map +1 -0
  221. package/lib/scanner/custom-structure-scanner.d.ts +66 -0
  222. package/lib/scanner/custom-structure-scanner.js +229 -0
  223. package/lib/scanner/custom-structure-scanner.js.map +1 -0
  224. package/lib/scanner/forceignore-parser.d.ts +69 -0
  225. package/lib/scanner/forceignore-parser.js +195 -0
  226. package/lib/scanner/forceignore-parser.js.map +1 -0
  227. package/lib/scanner/metadata-format-scanner.d.ts +77 -0
  228. package/lib/scanner/metadata-format-scanner.js +282 -0
  229. package/lib/scanner/metadata-format-scanner.js.map +1 -0
  230. package/lib/scanner/monorepo-scanner.d.ts +71 -0
  231. package/lib/scanner/monorepo-scanner.js +225 -0
  232. package/lib/scanner/monorepo-scanner.js.map +1 -0
  233. package/lib/scanner/project-validator.d.ts +55 -0
  234. package/lib/scanner/project-validator.js +235 -0
  235. package/lib/scanner/project-validator.js.map +1 -0
  236. package/lib/scanner/sfdx-project-detector.d.ts +86 -0
  237. package/lib/scanner/sfdx-project-detector.js +240 -0
  238. package/lib/scanner/sfdx-project-detector.js.map +1 -0
  239. package/lib/scanner/structure-validator.d.ts +64 -0
  240. package/lib/scanner/structure-validator.js +296 -0
  241. package/lib/scanner/structure-validator.js.map +1 -0
  242. package/lib/services/metadata-scanner-service.d.ts +64 -0
  243. package/lib/services/metadata-scanner-service.js +651 -0
  244. package/lib/services/metadata-scanner-service.js.map +1 -0
  245. package/lib/types/agentforce.d.ts +157 -0
  246. package/lib/types/agentforce.js +2 -0
  247. package/lib/types/agentforce.js.map +1 -0
  248. package/lib/types/dependency.d.ts +98 -0
  249. package/lib/types/dependency.js +5 -0
  250. package/lib/types/dependency.js.map +1 -0
  251. package/lib/types/deployment-plan.d.ts +81 -0
  252. package/lib/types/deployment-plan.js +6 -0
  253. package/lib/types/deployment-plan.js.map +1 -0
  254. package/lib/types/deployment.d.ts +88 -0
  255. package/lib/types/deployment.js +5 -0
  256. package/lib/types/deployment.js.map +1 -0
  257. package/lib/types/graph.d.ts +35 -0
  258. package/lib/types/graph.js +5 -0
  259. package/lib/types/graph.js.map +1 -0
  260. package/lib/types/index.d.ts +12 -0
  261. package/lib/types/index.js +17 -0
  262. package/lib/types/index.js.map +1 -0
  263. package/lib/types/metadata.d.ts +101 -0
  264. package/lib/types/metadata.js +13 -0
  265. package/lib/types/metadata.js.map +1 -0
  266. package/lib/types/project.d.ts +156 -0
  267. package/lib/types/project.js +56 -0
  268. package/lib/types/project.js.map +1 -0
  269. package/lib/types/salesforce/apex.d.ts +94 -0
  270. package/lib/types/salesforce/apex.js +6 -0
  271. package/lib/types/salesforce/apex.js.map +1 -0
  272. package/lib/types/salesforce/aura.d.ts +150 -0
  273. package/lib/types/salesforce/aura.js +6 -0
  274. package/lib/types/salesforce/aura.js.map +1 -0
  275. package/lib/types/salesforce/bot.d.ts +293 -0
  276. package/lib/types/salesforce/bot.js +6 -0
  277. package/lib/types/salesforce/bot.js.map +1 -0
  278. package/lib/types/salesforce/common.d.ts +15 -0
  279. package/lib/types/salesforce/common.js +5 -0
  280. package/lib/types/salesforce/common.js.map +1 -0
  281. package/lib/types/salesforce/custom-metadata.d.ts +92 -0
  282. package/lib/types/salesforce/custom-metadata.js +6 -0
  283. package/lib/types/salesforce/custom-metadata.js.map +1 -0
  284. package/lib/types/salesforce/email.d.ts +56 -0
  285. package/lib/types/salesforce/email.js +6 -0
  286. package/lib/types/salesforce/email.js.map +1 -0
  287. package/lib/types/salesforce/flexipage.d.ts +149 -0
  288. package/lib/types/salesforce/flexipage.js +6 -0
  289. package/lib/types/salesforce/flexipage.js.map +1 -0
  290. package/lib/types/salesforce/flow.d.ts +516 -0
  291. package/lib/types/salesforce/flow.js +6 -0
  292. package/lib/types/salesforce/flow.js.map +1 -0
  293. package/lib/types/salesforce/genai.d.ts +67 -0
  294. package/lib/types/salesforce/genai.js +6 -0
  295. package/lib/types/salesforce/genai.js.map +1 -0
  296. package/lib/types/salesforce/index.d.ts +27 -0
  297. package/lib/types/salesforce/index.js +43 -0
  298. package/lib/types/salesforce/index.js.map +1 -0
  299. package/lib/types/salesforce/layout.d.ts +236 -0
  300. package/lib/types/salesforce/layout.js +6 -0
  301. package/lib/types/salesforce/layout.js.map +1 -0
  302. package/lib/types/salesforce/lwc.d.ts +123 -0
  303. package/lib/types/salesforce/lwc.js +6 -0
  304. package/lib/types/salesforce/lwc.js.map +1 -0
  305. package/lib/types/salesforce/object.d.ts +427 -0
  306. package/lib/types/salesforce/object.js +6 -0
  307. package/lib/types/salesforce/object.js.map +1 -0
  308. package/lib/types/salesforce/parser-types.d.ts +79 -0
  309. package/lib/types/salesforce/parser-types.js +80 -0
  310. package/lib/types/salesforce/parser-types.js.map +1 -0
  311. package/lib/types/salesforce/permission.d.ts +289 -0
  312. package/lib/types/salesforce/permission.js +6 -0
  313. package/lib/types/salesforce/permission.js.map +1 -0
  314. package/lib/types/salesforce/resource.d.ts +93 -0
  315. package/lib/types/salesforce/resource.js +6 -0
  316. package/lib/types/salesforce/resource.js.map +1 -0
  317. package/lib/types/salesforce/visualforce.d.ts +70 -0
  318. package/lib/types/salesforce/visualforce.js +6 -0
  319. package/lib/types/salesforce/visualforce.js.map +1 -0
  320. package/lib/utils/cache-manager.d.ts +158 -0
  321. package/lib/utils/cache-manager.js +429 -0
  322. package/lib/utils/cache-manager.js.map +1 -0
  323. package/lib/utils/deployment-plan-manager.d.ts +40 -0
  324. package/lib/utils/deployment-plan-manager.js +183 -0
  325. package/lib/utils/deployment-plan-manager.js.map +1 -0
  326. package/lib/utils/error-aggregator.d.ts +117 -0
  327. package/lib/utils/error-aggregator.js +268 -0
  328. package/lib/utils/error-aggregator.js.map +1 -0
  329. package/lib/utils/file-system.d.ts +62 -0
  330. package/lib/utils/file-system.js +167 -0
  331. package/lib/utils/file-system.js.map +1 -0
  332. package/lib/utils/functional.d.ts +52 -0
  333. package/lib/utils/functional.js +61 -0
  334. package/lib/utils/functional.js.map +1 -0
  335. package/lib/utils/graph-algorithms.d.ts +53 -0
  336. package/lib/utils/graph-algorithms.js +177 -0
  337. package/lib/utils/graph-algorithms.js.map +1 -0
  338. package/lib/utils/logger.d.ts +154 -0
  339. package/lib/utils/logger.js +327 -0
  340. package/lib/utils/logger.js.map +1 -0
  341. package/lib/utils/network-handler.d.ts +64 -0
  342. package/lib/utils/network-handler.js +147 -0
  343. package/lib/utils/network-handler.js.map +1 -0
  344. package/lib/utils/performance.d.ts +148 -0
  345. package/lib/utils/performance.js +294 -0
  346. package/lib/utils/performance.js.map +1 -0
  347. package/lib/utils/string.d.ts +197 -0
  348. package/lib/utils/string.js +331 -0
  349. package/lib/utils/string.js.map +1 -0
  350. package/lib/utils/xml.d.ts +97 -0
  351. package/lib/utils/xml.js +227 -0
  352. package/lib/utils/xml.js.map +1 -0
  353. package/lib/validators/xml-metadata-validator.d.ts +106 -0
  354. package/lib/validators/xml-metadata-validator.js +509 -0
  355. package/lib/validators/xml-metadata-validator.js.map +1 -0
  356. package/lib/waves/priority-wave-generator-ai.d.ts +85 -0
  357. package/lib/waves/priority-wave-generator-ai.js +191 -0
  358. package/lib/waves/priority-wave-generator-ai.js.map +1 -0
  359. package/lib/waves/priority-wave-generator.d.ts +47 -0
  360. package/lib/waves/priority-wave-generator.js +88 -0
  361. package/lib/waves/priority-wave-generator.js.map +1 -0
  362. package/lib/waves/test-optimizer.d.ts +155 -0
  363. package/lib/waves/test-optimizer.js +290 -0
  364. package/lib/waves/test-optimizer.js.map +1 -0
  365. package/lib/waves/wave-builder.d.ts +147 -0
  366. package/lib/waves/wave-builder.js +286 -0
  367. package/lib/waves/wave-builder.js.map +1 -0
  368. package/lib/waves/wave-diff-generator.d.ts +17 -0
  369. package/lib/waves/wave-diff-generator.js +6 -0
  370. package/lib/waves/wave-diff-generator.js.map +1 -0
  371. package/lib/waves/wave-executor.d.ts +33 -0
  372. package/lib/waves/wave-executor.js +50 -0
  373. package/lib/waves/wave-executor.js.map +1 -0
  374. package/lib/waves/wave-merger.d.ts +96 -0
  375. package/lib/waves/wave-merger.js +181 -0
  376. package/lib/waves/wave-merger.js.map +1 -0
  377. package/lib/waves/wave-metadata-generator.d.ts +13 -0
  378. package/lib/waves/wave-metadata-generator.js +12 -0
  379. package/lib/waves/wave-metadata-generator.js.map +1 -0
  380. package/lib/waves/wave-splitter.d.ts +154 -0
  381. package/lib/waves/wave-splitter.js +307 -0
  382. package/lib/waves/wave-splitter.js.map +1 -0
  383. package/lib/waves/wave-validator.d.ts +17 -0
  384. package/lib/waves/wave-validator.js +15 -0
  385. package/lib/waves/wave-validator.js.map +1 -0
  386. package/messages/analyze.json +18 -0
  387. package/messages/config.json +29 -0
  388. package/messages/resume.json +9 -0
  389. package/messages/start.json +24 -0
  390. package/messages/status.json +8 -0
  391. package/messages/validate.json +9 -0
  392. package/npm-shrinkwrap.json +25676 -0
  393. package/oclif.lock +11988 -0
  394. package/oclif.manifest.json +589 -0
  395. package/package.json +224 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * XML Metadata Validator - US-091
3
+ * Pre-deployment XML validation with detailed error reporting
4
+ *
5
+ * @ac US-091-AC-1: Validate XML syntax
6
+ * @ac US-091-AC-2: Validate against Salesforce schema
7
+ * @ac US-091-AC-3: Check API version compatibility
8
+ * @ac US-091-AC-4: Validate field references
9
+ * @ac US-091-AC-5: Report validation errors with line numbers
10
+ * @ac US-091-AC-6: Suggest auto-fixes
11
+ * @issue #91
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
+ };
37
+ /**
38
+ * @ac US-091-AC-1: Validate XML syntax
39
+ */
40
+ export declare class XmlMetadataValidator {
41
+ private readonly minApiVersion;
42
+ private readonly maxApiVersion;
43
+ /**
44
+ * @ac US-091-AC-1: Validate XML syntax
45
+ * @ac US-091-AC-5: Report validation errors with line numbers
46
+ * Validate XML file
47
+ */
48
+ validateFile(filePath: string): Promise<ValidationResult>;
49
+ /**
50
+ * @ac US-091-AC-1: Validate XML syntax
51
+ * Validate XML is well-formed
52
+ */
53
+ private validateXmlSyntax;
54
+ /**
55
+ * @ac US-091-AC-2: Validate against Salesforce schema
56
+ * Validate metadata structure
57
+ */
58
+ private validateSchema;
59
+ /**
60
+ * @ac US-091-AC-3: Check API version compatibility
61
+ * Validate API version
62
+ */
63
+ 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
+ /**
99
+ * Format validation report
100
+ */
101
+ formatReport(result: ValidationResult): string;
102
+ /**
103
+ * Validate multiple files
104
+ */
105
+ validateFiles(filePaths: string[]): Promise<ValidationResult[]>;
106
+ }
@@ -0,0 +1,509 @@
1
+ /**
2
+ * XML Metadata Validator - US-091
3
+ * Pre-deployment XML validation with detailed error reporting
4
+ *
5
+ * @ac US-091-AC-1: Validate XML syntax
6
+ * @ac US-091-AC-2: Validate against Salesforce schema
7
+ * @ac US-091-AC-3: Check API version compatibility
8
+ * @ac US-091-AC-4: Validate field references
9
+ * @ac US-091-AC-5: Report validation errors with line numbers
10
+ * @ac US-091-AC-6: Suggest auto-fixes
11
+ * @issue #91
12
+ */
13
+ import { promises as fs } from 'node:fs';
14
+ import { getLogger } from '../utils/logger.js';
15
+ const logger = getLogger('XmlMetadataValidator');
16
+ /**
17
+ * @ac US-091-AC-1: Validate XML syntax
18
+ */
19
+ export class XmlMetadataValidator {
20
+ minApiVersion = 40.0;
21
+ maxApiVersion = 61.0;
22
+ /**
23
+ * @ac US-091-AC-1: Validate XML syntax
24
+ * @ac US-091-AC-5: Report validation errors with line numbers
25
+ * Validate XML file
26
+ */
27
+ async validateFile(filePath) {
28
+ logger.info('Validating XML file', { filePath });
29
+ const result = {
30
+ isValid: true,
31
+ errors: [],
32
+ warnings: [],
33
+ suggestions: [],
34
+ filePath,
35
+ };
36
+ try {
37
+ const content = await fs.readFile(filePath, 'utf-8');
38
+ // 1. Validate XML syntax
39
+ this.validateXmlSyntax(content, result);
40
+ // 2. Validate against Salesforce schema
41
+ this.validateSchema(content, filePath, result);
42
+ // 3. Check API version
43
+ this.validateApiVersion(content, result);
44
+ // 4. Validate field references
45
+ this.validateReferences(content, filePath, result);
46
+ // 5. Generate suggestions
47
+ this.generateSuggestions(result);
48
+ result.isValid = result.errors.filter((e) => e.severity === 'error').length === 0;
49
+ logger.info('Validation complete', {
50
+ filePath,
51
+ isValid: result.isValid,
52
+ errors: result.errors.length,
53
+ warnings: result.warnings.length,
54
+ });
55
+ return result;
56
+ }
57
+ catch (error) {
58
+ result.isValid = false;
59
+ result.errors.push({
60
+ type: 'syntax',
61
+ message: error instanceof Error ? error.message : String(error),
62
+ severity: 'error',
63
+ });
64
+ return result;
65
+ }
66
+ }
67
+ /**
68
+ * @ac US-091-AC-1: Validate XML syntax
69
+ * Validate XML is well-formed
70
+ */
71
+ validateXmlSyntax(content, result) {
72
+ // Basic XML validation
73
+ const lines = content.split('\n');
74
+ // Check for XML declaration
75
+ if (!content.trim().startsWith('<?xml')) {
76
+ result.errors.push({
77
+ type: 'syntax',
78
+ message: 'Missing XML declaration',
79
+ line: 1,
80
+ severity: 'warning',
81
+ });
82
+ }
83
+ // Check for balanced tags
84
+ const openTags = [];
85
+ const tagRegex = /<\/?([a-zA-Z][a-zA-Z0-9_-]*)[^>]*>/g;
86
+ for (let i = 0; i < lines.length; i++) {
87
+ const currentLine = lines[i];
88
+ const tagMatches = [...currentLine.matchAll(tagRegex)];
89
+ for (const tagMatch of tagMatches) {
90
+ const fullTag = tagMatch[0];
91
+ const tagName = tagMatch[1];
92
+ const isClosing = fullTag.startsWith('</');
93
+ if (isClosing) {
94
+ if (openTags.length === 0 || openTags[openTags.length - 1] !== tagName) {
95
+ result.errors.push({
96
+ type: 'syntax',
97
+ message: `Unmatched closing tag: ${tagName}`,
98
+ line: i + 1,
99
+ severity: 'error',
100
+ });
101
+ }
102
+ else {
103
+ openTags.pop();
104
+ }
105
+ }
106
+ else if (!fullTag.endsWith('/>')) {
107
+ // Opening tag (not self-closing)
108
+ openTags.push(tagName);
109
+ }
110
+ }
111
+ }
112
+ if (openTags.length > 0) {
113
+ result.errors.push({
114
+ type: 'syntax',
115
+ message: `Unclosed tags: ${openTags.join(', ')}`,
116
+ line: lines.length,
117
+ severity: 'error',
118
+ });
119
+ }
120
+ }
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
+ /**
140
+ * @ac US-091-AC-3: Check API version compatibility
141
+ * Validate API version
142
+ */
143
+ validateApiVersion(content, result) {
144
+ const versionMatch = content.match(/<apiVersion>(\d+(?:\.\d+)?)<\/apiVersion>/);
145
+ if (!versionMatch) {
146
+ result.warnings.push({
147
+ message: 'No API version specified',
148
+ suggestion: `Add <apiVersion>${this.maxApiVersion}</apiVersion>`,
149
+ });
150
+ return;
151
+ }
152
+ const version = parseFloat(versionMatch[1]);
153
+ if (version < this.minApiVersion) {
154
+ result.errors.push({
155
+ type: 'version',
156
+ message: `API version ${version} is too old (minimum: ${this.minApiVersion})`,
157
+ severity: 'error',
158
+ });
159
+ }
160
+ else if (version > this.maxApiVersion) {
161
+ result.warnings.push({
162
+ message: `API version ${version} is newer than tested version ${this.maxApiVersion}`,
163
+ suggestion: `Consider using version ${this.maxApiVersion}`,
164
+ });
165
+ }
166
+ else if (version < this.maxApiVersion - 5) {
167
+ result.warnings.push({
168
+ message: `API version ${version} is outdated`,
169
+ suggestion: `Consider updating to ${this.maxApiVersion}`,
170
+ });
171
+ }
172
+ }
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
+ /**
447
+ * Format validation report
448
+ */
449
+ 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');
494
+ }
495
+ /**
496
+ * Validate multiple files
497
+ */
498
+ async validateFiles(filePaths) {
499
+ logger.info('Validating multiple files', { count: filePaths.length });
500
+ const results = await Promise.all(filePaths.map((path) => this.validateFile(path)));
501
+ logger.info('Batch validation complete', {
502
+ total: results.length,
503
+ valid: results.filter((r) => r.isValid).length,
504
+ invalid: results.filter((r) => !r.isValid).length,
505
+ });
506
+ return results;
507
+ }
508
+ }
509
+ //# sourceMappingURL=xml-metadata-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-metadata-validator.js","sourceRoot":"","sources":["../../src/validators/xml-metadata-validator.ts"],"names":[],"mappings":"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"}