@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,64 @@
1
+ import type { EmailTemplateMetadata } from '../types/salesforce/email.js';
2
+ /**
3
+ * Email template dependency types
4
+ */
5
+ export type EmailTemplateDependencyType = 'merge_field' | 'visualforce_page' | 'related_entity' | 'attachment' | 'custom_label';
6
+ /**
7
+ * Represents a dependency found in an email template
8
+ */
9
+ export type EmailTemplateDependency = {
10
+ type: EmailTemplateDependencyType;
11
+ name: string;
12
+ objectName?: string;
13
+ fieldName?: string;
14
+ };
15
+ /**
16
+ * Merge field reference
17
+ */
18
+ export type MergeField = {
19
+ fullReference: string;
20
+ objectName: string;
21
+ fieldName: string;
22
+ isRelated: boolean;
23
+ relationshipPath?: string;
24
+ };
25
+ /**
26
+ * Result of parsing an email template
27
+ * Extends EmailTemplateMetadata with parsed dependencies
28
+ * Overrides attachments to be string[] for easier consumption
29
+ */
30
+ export type EmailTemplateParseResult = Omit<EmailTemplateMetadata, 'attachments'> & {
31
+ mergeFields: MergeField[];
32
+ customLabels: string[];
33
+ dependencies: EmailTemplateDependency[];
34
+ visualforcePage?: string;
35
+ attachments?: string[];
36
+ };
37
+ /**
38
+ * Parse an email template and extract dependencies
39
+ *
40
+ * @param templateName - Name of the email template
41
+ * @param templateContent - Content of the template (HTML, text, or VF)
42
+ * @param metadataContent - Content of the .email-meta.xml file
43
+ * @returns EmailTemplateParseResult with all extracted dependencies
44
+ *
45
+ * @throws {ParsingError} If the template cannot be parsed
46
+ *
47
+ * @ac US-019-AC-2: Extract Visualforce page references
48
+ * @ac US-019-AC-3: Extract relatedEntityType (target SObject)
49
+ * @ac US-019-AC-4: Extract attachment references
50
+ * @ac US-019-AC-7: Support all template types (text, html, visualforce, custom)
51
+ * @ac US-019-AC-8: Handle both body and subject merge fields
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const result = await parseEmailTemplate(
56
+ * 'WelcomeEmail',
57
+ * templateContent,
58
+ * metadataXml
59
+ * );
60
+ * console.log(result.mergeFields); // [{objectName: 'Contact', fieldName: 'Name', ...}]
61
+ * console.log(result.relatedEntityType); // 'Contact'
62
+ * ```
63
+ */
64
+ export declare function parseEmailTemplate(templateName: string, templateContent: string, metadataContent: string): Promise<EmailTemplateParseResult>;
@@ -0,0 +1,238 @@
1
+ import { getLogger } from '../utils/logger.js';
2
+ import { ParsingError } from '../errors/parsing-error.js';
3
+ import { parseXml } from '../utils/xml.js';
4
+ const logger = getLogger('EmailTemplateParser');
5
+ /**
6
+ * Extract merge fields from template content
7
+ *
8
+ * @ac US-019-AC-1: Extract merge fields (object.field references)
9
+ */
10
+ function extractMergeFields(content) {
11
+ const mergeFields = [];
12
+ const seen = new Set();
13
+ // Pattern: {!ObjectName.FieldName} or {!RelatedObject__r.Field__c}
14
+ // Also matches: {!Account.Owner.Name} (related traversal)
15
+ const mergeFieldPattern = /\{!([a-zA-Z][a-zA-Z0-9_]*(?:__[rc])?)\.([a-zA-Z][a-zA-Z0-9_.]*)\}/g;
16
+ const matches = content.matchAll(mergeFieldPattern);
17
+ for (const match of matches) {
18
+ const fullReference = match[0];
19
+ const objectName = match[1];
20
+ const fieldPath = match[2];
21
+ // Check if it's a related object traversal (contains dots)
22
+ const isRelated = fieldPath.includes('.');
23
+ const parts = fieldPath.split('.');
24
+ const fieldName = parts[parts.length - 1];
25
+ const relationshipPath = isRelated ? fieldPath : undefined;
26
+ const key = `${objectName}.${fieldPath}`;
27
+ if (!seen.has(key)) {
28
+ seen.add(key);
29
+ mergeFields.push({
30
+ fullReference,
31
+ objectName,
32
+ fieldName,
33
+ isRelated,
34
+ relationshipPath,
35
+ });
36
+ }
37
+ }
38
+ return mergeFields;
39
+ }
40
+ /**
41
+ * Extract custom label references
42
+ *
43
+ * @ac US-019-AC-5: Extract custom label references
44
+ */
45
+ function extractCustomLabels(content) {
46
+ const labels = [];
47
+ const seen = new Set();
48
+ // Pattern: {!$Label.MyLabel} or {!$Label.namespace__MyLabel}
49
+ const labelPattern = /\{!\$Label\.([a-zA-Z][a-zA-Z0-9_.]*)\}/g;
50
+ const matches = content.matchAll(labelPattern);
51
+ for (const match of matches) {
52
+ const labelName = match[1];
53
+ if (!seen.has(labelName)) {
54
+ seen.add(labelName);
55
+ labels.push(labelName);
56
+ }
57
+ }
58
+ return labels;
59
+ }
60
+ /**
61
+ * Parse email template metadata XML
62
+ *
63
+ * @ac US-019-AC-6: Parse template metadata (.email-meta.xml)
64
+ */
65
+ async function parseMetadataXml(metadataContent) {
66
+ try {
67
+ const parsed = await parseXml(metadataContent);
68
+ const parsedObj = parsed;
69
+ const emailTemplate = parsedObj.EmailTemplate || parsedObj;
70
+ // Normalize arrays (XML parser returns single items as objects, not arrays)
71
+ const normalizeArray = (value) => {
72
+ if (value === undefined)
73
+ return undefined;
74
+ return Array.isArray(value) ? value : [value];
75
+ };
76
+ // Normalize attachments (XML can have just <name> or full <content><name> structure)
77
+ let attachments = normalizeArray(emailTemplate.attachments);
78
+ if (attachments) {
79
+ attachments = attachments.map((att) => {
80
+ // If attachment is a string, it's just the name
81
+ if (typeof att === 'string') {
82
+ return { name: att, content: '' };
83
+ }
84
+ // If it has a 'name' key with no content, set content to empty
85
+ if (typeof att === 'object' && att.name && !att.content) {
86
+ return { name: String(att.name), content: '' };
87
+ }
88
+ return att;
89
+ });
90
+ }
91
+ // Map to EmailTemplateMetadata
92
+ const metadata = {
93
+ apiVersion: emailTemplate.apiVersion,
94
+ available: emailTemplate.available ?? false,
95
+ description: emailTemplate.description,
96
+ encodingKey: (emailTemplate.encodingKey ?? 'UTF-8'),
97
+ name: emailTemplate.name ?? '',
98
+ style: (emailTemplate.style ?? 'none'),
99
+ subject: emailTemplate.subject,
100
+ textOnly: emailTemplate.textOnly,
101
+ type: (emailTemplate.type ?? 'text'),
102
+ uiType: emailTemplate.uiType,
103
+ attachedContentDocuments: normalizeArray(emailTemplate.attachedContentDocuments),
104
+ attachments,
105
+ letterhead: emailTemplate.letterhead,
106
+ packageVersions: emailTemplate.packageVersions,
107
+ relatedEntityType: emailTemplate.relatedEntityType,
108
+ visualforcePage: emailTemplate.visualforcePage,
109
+ };
110
+ return metadata;
111
+ }
112
+ catch (error) {
113
+ throw new ParsingError('Failed to parse email template metadata XML', {
114
+ originalError: error instanceof Error ? error.message : String(error),
115
+ });
116
+ }
117
+ }
118
+ /**
119
+ * Parse an email template and extract dependencies
120
+ *
121
+ * @param templateName - Name of the email template
122
+ * @param templateContent - Content of the template (HTML, text, or VF)
123
+ * @param metadataContent - Content of the .email-meta.xml file
124
+ * @returns EmailTemplateParseResult with all extracted dependencies
125
+ *
126
+ * @throws {ParsingError} If the template cannot be parsed
127
+ *
128
+ * @ac US-019-AC-2: Extract Visualforce page references
129
+ * @ac US-019-AC-3: Extract relatedEntityType (target SObject)
130
+ * @ac US-019-AC-4: Extract attachment references
131
+ * @ac US-019-AC-7: Support all template types (text, html, visualforce, custom)
132
+ * @ac US-019-AC-8: Handle both body and subject merge fields
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const result = await parseEmailTemplate(
137
+ * 'WelcomeEmail',
138
+ * templateContent,
139
+ * metadataXml
140
+ * );
141
+ * console.log(result.mergeFields); // [{objectName: 'Contact', fieldName: 'Name', ...}]
142
+ * console.log(result.relatedEntityType); // 'Contact'
143
+ * ```
144
+ */
145
+ export async function parseEmailTemplate(templateName, templateContent, metadataContent) {
146
+ try {
147
+ logger.debug(`Parsing email template: ${templateName}`);
148
+ // Parse metadata XML using Salesforce types
149
+ const metadata = await parseMetadataXml(metadataContent);
150
+ // Extract merge fields from content and subject
151
+ const contentMergeFields = extractMergeFields(templateContent);
152
+ const subjectMergeFields = metadata.subject ? extractMergeFields(metadata.subject) : [];
153
+ const mergeFields = [...contentMergeFields, ...subjectMergeFields];
154
+ // Extract custom labels
155
+ const customLabels = extractCustomLabels(templateContent);
156
+ // Build dependencies array
157
+ const dependencies = [];
158
+ // Add related entity type as dependency
159
+ if (metadata.relatedEntityType) {
160
+ dependencies.push({
161
+ type: 'related_entity',
162
+ name: metadata.relatedEntityType,
163
+ });
164
+ }
165
+ // Add Visualforce page as dependency (for visualforce template type)
166
+ let visualforcePage;
167
+ if (metadata.type === 'visualforce' && metadata.visualforcePage) {
168
+ visualforcePage = metadata.visualforcePage;
169
+ dependencies.push({
170
+ type: 'visualforce_page',
171
+ name: visualforcePage,
172
+ });
173
+ }
174
+ // Add merge fields as dependencies
175
+ for (const mergeField of mergeFields) {
176
+ dependencies.push({
177
+ type: 'merge_field',
178
+ name: mergeField.fullReference,
179
+ objectName: mergeField.objectName,
180
+ fieldName: mergeField.fieldName,
181
+ });
182
+ }
183
+ // Add custom labels as dependencies
184
+ for (const label of customLabels) {
185
+ dependencies.push({
186
+ type: 'custom_label',
187
+ name: label,
188
+ });
189
+ }
190
+ // Add attachments as dependencies
191
+ if (metadata.attachments) {
192
+ for (const attachment of metadata.attachments) {
193
+ dependencies.push({
194
+ type: 'attachment',
195
+ name: attachment.name,
196
+ });
197
+ }
198
+ }
199
+ if (metadata.attachedContentDocuments) {
200
+ for (const doc of metadata.attachedContentDocuments) {
201
+ dependencies.push({
202
+ type: 'attachment',
203
+ name: doc,
204
+ });
205
+ }
206
+ }
207
+ // Map attachments to string array (just names) and include attachedContentDocuments
208
+ const attachmentNames = metadata.attachments?.map((att) => att.name) ?? [];
209
+ const allAttachments = [...attachmentNames, ...(metadata.attachedContentDocuments ?? [])];
210
+ const result = {
211
+ ...metadata,
212
+ attachments: allAttachments.length > 0 ? allAttachments : undefined,
213
+ mergeFields,
214
+ customLabels,
215
+ dependencies,
216
+ visualforcePage,
217
+ };
218
+ logger.debug(`Parsed email template: ${templateName}`, {
219
+ templateType: metadata.type,
220
+ relatedEntityType: !!metadata.relatedEntityType,
221
+ mergeFieldsCount: mergeFields.length,
222
+ customLabelsCount: customLabels.length,
223
+ attachmentsCount: (metadata.attachments?.length ?? 0) + (metadata.attachedContentDocuments?.length ?? 0),
224
+ dependenciesCount: dependencies.length,
225
+ });
226
+ return result;
227
+ }
228
+ catch (error) {
229
+ if (error instanceof ParsingError) {
230
+ throw error;
231
+ }
232
+ throw new ParsingError(`Failed to parse email template: ${templateName}`, {
233
+ filePath: templateName,
234
+ originalError: error instanceof Error ? error.message : String(error),
235
+ });
236
+ }
237
+ }
238
+ //# sourceMappingURL=email-template-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-template-parser.js","sourceRoot":"","sources":["../../src/parsers/email-template-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Error-Resilient Parser Wrapper - US-071
3
+ * Gracefully handles parse errors without breaking analysis
4
+ *
5
+ * @ac US-071-AC-1: Catch and log parse errors
6
+ * @ac US-071-AC-2: Continue with other files
7
+ * @ac US-071-AC-3: Report errors with file paths
8
+ * @ac US-071-AC-4: Suggest fixes when possible
9
+ * @ac US-071-AC-5: Aggregate error report
10
+ * @ac US-071-AC-6: Option to fail-fast
11
+ * @issue #71
12
+ */
13
+ export type ParseResult<T> = {
14
+ success: boolean;
15
+ data?: T;
16
+ error?: ParseError;
17
+ filePath: string;
18
+ };
19
+ export type ParseError = {
20
+ filePath: string;
21
+ errorType: string;
22
+ message: string;
23
+ lineNumber?: number;
24
+ columnNumber?: number;
25
+ suggestedFix?: string;
26
+ stack?: string;
27
+ };
28
+ export type ParserOptions = {
29
+ /** Stop on first error */
30
+ failFast: boolean;
31
+ /** Log errors to aggregator */
32
+ logErrors: boolean;
33
+ /** Attempt to suggest fixes */
34
+ suggestFixes: boolean;
35
+ };
36
+ type ParserFunction<T> = (filePath: string) => Promise<T> | T;
37
+ /**
38
+ * @ac US-071-AC-1: Catch and log parse errors
39
+ * @ac US-071-AC-2: Continue with other files
40
+ */
41
+ export declare class ErrorResilientParser {
42
+ private readonly options;
43
+ private readonly errors;
44
+ constructor(options?: Partial<ParserOptions>);
45
+ /**
46
+ * @ac US-071-AC-1: Catch and log parse errors
47
+ * @ac US-071-AC-2: Continue with other files
48
+ * Parse multiple files with error resilience
49
+ */
50
+ parseFiles<T>(filePaths: string[], parser: ParserFunction<T>): Promise<Array<ParseResult<T>>>;
51
+ private parseFilesSequentially;
52
+ /**
53
+ * @ac US-071-AC-1: Catch and log parse errors
54
+ * Parse single file with error handling
55
+ */
56
+ parseFile<T>(filePath: string, parser: ParserFunction<T>): Promise<ParseResult<T>>;
57
+ /**
58
+ * @ac US-071-AC-3: Report errors with file paths
59
+ * @ac US-071-AC-4: Suggest fixes when possible
60
+ * Create structured parse error
61
+ */
62
+ private createParseError;
63
+ /**
64
+ * Categorize error by type
65
+ */
66
+ private categorizeError;
67
+ /**
68
+ * @ac US-071-AC-4: Suggest fixes when possible
69
+ * Suggest fix based on error type
70
+ */
71
+ private suggestFix;
72
+ /**
73
+ * @ac US-071-AC-5: Aggregate error report
74
+ * Generate comprehensive error report
75
+ */
76
+ generateErrorReport(): string;
77
+ /**
78
+ * Get all errors
79
+ */
80
+ getErrors(): ParseError[];
81
+ /**
82
+ * Get error count
83
+ */
84
+ getErrorCount(): number;
85
+ /**
86
+ * Check if any errors occurred
87
+ */
88
+ hasErrors(): boolean;
89
+ /**
90
+ * Clear errors
91
+ */
92
+ clearErrors(): void;
93
+ /**
94
+ * Get successful parse count
95
+ */
96
+ static getSuccessCount(results: Array<ParseResult<unknown>>): number;
97
+ /**
98
+ * Get failed parse count
99
+ */
100
+ static getFailureCount(results: Array<ParseResult<unknown>>): number;
101
+ /**
102
+ * Extract only successful results
103
+ */
104
+ static getSuccessfulData<T>(results: Array<ParseResult<T>>): T[];
105
+ /**
106
+ * Extract only errors
107
+ */
108
+ static getErrors(results: Array<ParseResult<unknown>>): ParseError[];
109
+ }
110
+ export {};