@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,53 @@
1
+ /**
2
+ * Network Error Classes - US-072
3
+ * Specialized errors for network operations
4
+ *
5
+ * @ac US-072-AC-1: Detect network errors
6
+ * @ac US-072-AC-6: User-friendly error messages
7
+ * @issue #72
8
+ */
9
+ import { SmartDeploymentError } from './base-error.js';
10
+ export type NetworkErrorOptions = {
11
+ url?: string;
12
+ statusCode?: number;
13
+ timeout?: number;
14
+ retryCount?: number;
15
+ originalError?: Error;
16
+ };
17
+ /**
18
+ * @ac US-072-AC-1: Detect network errors
19
+ * Base class for network-related errors
20
+ */
21
+ export declare class NetworkError extends SmartDeploymentError {
22
+ readonly url?: string;
23
+ readonly statusCode?: number;
24
+ constructor(message: string, options?: NetworkErrorOptions, code?: string);
25
+ /**
26
+ * @ac US-072-AC-6: User-friendly error messages
27
+ * Get suggestions based on error type
28
+ */
29
+ private static getSuggestions;
30
+ /**
31
+ * @ac US-072-AC-1: Detect network errors
32
+ * Check if error is a network error
33
+ */
34
+ static isNetworkError(error: unknown): boolean;
35
+ }
36
+ /**
37
+ * Timeout-specific error
38
+ */
39
+ export declare class TimeoutError extends NetworkError {
40
+ constructor(url: string, timeout: number);
41
+ }
42
+ /**
43
+ * Connection error
44
+ */
45
+ export declare class ConnectionError extends NetworkError {
46
+ constructor(url: string, originalError?: Error);
47
+ }
48
+ /**
49
+ * HTTP error
50
+ */
51
+ export declare class HttpError extends NetworkError {
52
+ constructor(url: string, statusCode: number, statusText?: string);
53
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Network Error Classes - US-072
3
+ * Specialized errors for network operations
4
+ *
5
+ * @ac US-072-AC-1: Detect network errors
6
+ * @ac US-072-AC-6: User-friendly error messages
7
+ * @issue #72
8
+ */
9
+ import { SmartDeploymentError } from './base-error.js';
10
+ /**
11
+ * @ac US-072-AC-1: Detect network errors
12
+ * Base class for network-related errors
13
+ */
14
+ export class NetworkError extends SmartDeploymentError {
15
+ url;
16
+ statusCode;
17
+ constructor(message, options = {}, code = 'NETWORK_ERROR') {
18
+ const context = {
19
+ url: options.url,
20
+ statusCode: options.statusCode,
21
+ timeout: options.timeout,
22
+ retryCount: options.retryCount,
23
+ };
24
+ const suggestions = NetworkError.getSuggestions(options);
25
+ super(message, code, context, suggestions);
26
+ this.url = options.url;
27
+ this.statusCode = options.statusCode;
28
+ }
29
+ /**
30
+ * @ac US-072-AC-6: User-friendly error messages
31
+ * Get suggestions based on error type
32
+ */
33
+ static getSuggestions(options) {
34
+ const suggestions = [];
35
+ if (options.statusCode === 404) {
36
+ suggestions.push('Check if the endpoint URL is correct');
37
+ suggestions.push('Verify the resource exists');
38
+ }
39
+ else if (options.statusCode === 401 || options.statusCode === 403) {
40
+ suggestions.push('Check your authentication credentials');
41
+ suggestions.push('Verify API permissions');
42
+ }
43
+ else if (options.statusCode && options.statusCode >= 500) {
44
+ suggestions.push('Server error - retry after a few minutes');
45
+ suggestions.push('Check server status');
46
+ }
47
+ else if (options.timeout) {
48
+ suggestions.push('Request timed out - check your network connection');
49
+ suggestions.push('Try increasing timeout value');
50
+ }
51
+ else {
52
+ suggestions.push('Check your internet connection');
53
+ suggestions.push('Verify firewall settings');
54
+ suggestions.push('Try again later');
55
+ }
56
+ return suggestions;
57
+ }
58
+ /**
59
+ * @ac US-072-AC-1: Detect network errors
60
+ * Check if error is a network error
61
+ */
62
+ static isNetworkError(error) {
63
+ if (error instanceof NetworkError)
64
+ return true;
65
+ if (error instanceof Error) {
66
+ const message = error.message.toLowerCase();
67
+ return (message.includes('network') ||
68
+ message.includes('econnrefused') ||
69
+ message.includes('enotfound') ||
70
+ message.includes('etimedout') ||
71
+ message.includes('fetch') ||
72
+ message.includes('socket') ||
73
+ message.includes('connection'));
74
+ }
75
+ return false;
76
+ }
77
+ }
78
+ /**
79
+ * Timeout-specific error
80
+ */
81
+ export class TimeoutError extends NetworkError {
82
+ constructor(url, timeout) {
83
+ super(`Request timeout after ${timeout}ms`, {
84
+ url,
85
+ timeout,
86
+ }, 'NETWORK_TIMEOUT');
87
+ }
88
+ }
89
+ /**
90
+ * Connection error
91
+ */
92
+ export class ConnectionError extends NetworkError {
93
+ constructor(url, originalError) {
94
+ super(`Failed to connect to ${url}`, {
95
+ url,
96
+ originalError,
97
+ }, 'NETWORK_CONNECTION_FAILED');
98
+ }
99
+ }
100
+ /**
101
+ * HTTP error
102
+ */
103
+ export class HttpError extends NetworkError {
104
+ constructor(url, statusCode, statusText) {
105
+ super(`HTTP ${statusCode}${statusText ? ': ' + statusText : ''} at ${url}`, {
106
+ url,
107
+ statusCode,
108
+ }, 'NETWORK_HTTP_ERROR');
109
+ }
110
+ }
111
+ //# sourceMappingURL=network-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-error.js","sourceRoot":"","sources":["../../src/errors/network-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { SmartDeploymentError } from './base-error.js';
2
+ /**
3
+ * Error thrown when parsing metadata or project files fails
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * throw new ParsingError('Failed to parse package.xml', {
8
+ * filePath: '/path/to/package.xml',
9
+ * line: 42,
10
+ * column: 15,
11
+ * parseError: 'Unexpected token <'
12
+ * });
13
+ * ```
14
+ */
15
+ export declare class ParsingError extends SmartDeploymentError {
16
+ constructor(message: string, context?: {
17
+ [key: string]: unknown;
18
+ filePath?: string;
19
+ line?: number;
20
+ column?: number;
21
+ parseError?: string;
22
+ });
23
+ }
24
+ /**
25
+ * Error thrown when XML parsing fails specifically
26
+ */
27
+ export declare class XmlParsingError extends ParsingError {
28
+ constructor(message: string, context?: Record<string, unknown>);
29
+ }
30
+ /**
31
+ * Error thrown when JSON parsing fails specifically
32
+ */
33
+ export declare class JsonParsingError extends ParsingError {
34
+ constructor(message: string, context?: Record<string, unknown>);
35
+ }
36
+ /**
37
+ * Error thrown when SFDX project structure is invalid
38
+ */
39
+ export declare class ProjectStructureError extends ParsingError {
40
+ constructor(message: string, context?: Record<string, unknown>);
41
+ }
@@ -0,0 +1,69 @@
1
+ import { SmartDeploymentError } from './base-error.js';
2
+ /**
3
+ * Error thrown when parsing metadata or project files fails
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * throw new ParsingError('Failed to parse package.xml', {
8
+ * filePath: '/path/to/package.xml',
9
+ * line: 42,
10
+ * column: 15,
11
+ * parseError: 'Unexpected token <'
12
+ * });
13
+ * ```
14
+ */
15
+ export class ParsingError extends SmartDeploymentError {
16
+ constructor(message, context = {}) {
17
+ const suggestions = [];
18
+ // Add context-specific suggestions
19
+ if (context.filePath?.endsWith('.xml')) {
20
+ suggestions.push('Validate XML syntax using an XML validator');
21
+ suggestions.push('Check for unclosed tags or invalid characters');
22
+ }
23
+ if (context.filePath?.endsWith('.json')) {
24
+ suggestions.push('Validate JSON syntax using a JSON validator');
25
+ suggestions.push('Check for trailing commas or unquoted keys');
26
+ }
27
+ if (context.line && context.column) {
28
+ suggestions.push(`Check line ${context.line}, column ${context.column} in the file`);
29
+ }
30
+ if (context.filePath) {
31
+ suggestions.push(`Review file: ${context.filePath}`);
32
+ }
33
+ super(message, 'PARSING_ERROR', context, suggestions);
34
+ }
35
+ }
36
+ /**
37
+ * Error thrown when XML parsing fails specifically
38
+ */
39
+ export class XmlParsingError extends ParsingError {
40
+ constructor(message, context = {}) {
41
+ super(`XML parsing failed: ${message}`, {
42
+ ...context,
43
+ xmlError: true,
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Error thrown when JSON parsing fails specifically
49
+ */
50
+ export class JsonParsingError extends ParsingError {
51
+ constructor(message, context = {}) {
52
+ super(`JSON parsing failed: ${message}`, {
53
+ ...context,
54
+ jsonError: true,
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Error thrown when SFDX project structure is invalid
60
+ */
61
+ export class ProjectStructureError extends ParsingError {
62
+ constructor(message, context = {}) {
63
+ super(`Invalid project structure: ${message}`, context);
64
+ this.suggestions.push('Ensure sfdx-project.json exists and is valid');
65
+ this.suggestions.push('Check packageDirectories configuration');
66
+ this.suggestions.push('Run: sf project validate');
67
+ }
68
+ }
69
+ //# sourceMappingURL=parsing-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsing-error.js","sourceRoot":"","sources":["../../src/errors/parsing-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,YAAa,SAAQ,oBAAoB;IACpD,YACE,OAAe,EACf,UAMI,EAAE;QAEN,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,mCAAmC;QACnC,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC/D,WAAW,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,WAAW,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,YAAmB,OAAe,EAAE,UAAmC,EAAE;QACvE,KAAK,CAAC,uBAAuB,OAAO,EAAE,EAAE;YACtC,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAmB,OAAe,EAAE,UAAmC,EAAE;QACvE,KAAK,CAAC,wBAAwB,OAAO,EAAE,EAAE;YACvC,GAAG,OAAO;YACV,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD,YAAmB,OAAe,EAAE,UAAmC,EAAE;QACvE,KAAK,CAAC,8BAA8B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Validation Error Reporter - US-075
3
+ * Clear validation error messages with documentation links
4
+ *
5
+ * @ac US-075-AC-1: User-friendly error messages
6
+ * @ac US-075-AC-2: Include file paths
7
+ * @ac US-075-AC-3: Include line numbers
8
+ * @ac US-075-AC-4: Suggest fixes
9
+ * @ac US-075-AC-5: Link to documentation
10
+ * @ac US-075-AC-6: Categorize by severity
11
+ * @issue #75
12
+ */
13
+ import { ValidationError } from './validation-error.js';
14
+ export declare class ValidationErrorReporter {
15
+ /**
16
+ * @ac US-075-AC-5: Link to documentation
17
+ * Get documentation link for error
18
+ */
19
+ getDocumentationLink(errorCode: string): string;
20
+ /**
21
+ * @ac US-075-AC-1: User-friendly error messages
22
+ * @ac US-075-AC-2: Include file paths
23
+ * @ac US-075-AC-3: Include line numbers
24
+ * @ac US-075-AC-4: Suggest fixes
25
+ * @ac US-075-AC-5: Link to documentation
26
+ * Format validation error with all details
27
+ */
28
+ format(error: ValidationError): string;
29
+ /**
30
+ * @ac US-075-AC-6: Categorize by severity
31
+ * Format multiple validation errors grouped by severity
32
+ */
33
+ formatMultiple(errors: ValidationError[]): string;
34
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Validation Error Reporter - US-075
3
+ * Clear validation error messages with documentation links
4
+ *
5
+ * @ac US-075-AC-1: User-friendly error messages
6
+ * @ac US-075-AC-2: Include file paths
7
+ * @ac US-075-AC-3: Include line numbers
8
+ * @ac US-075-AC-4: Suggest fixes
9
+ * @ac US-075-AC-5: Link to documentation
10
+ * @ac US-075-AC-6: Categorize by severity
11
+ * @issue #75
12
+ */
13
+ const DOCS_BASE_URL = 'https://github.com/jterrats/smart-deployment/blob/main/docs';
14
+ export class ValidationErrorReporter {
15
+ /**
16
+ * @ac US-075-AC-5: Link to documentation
17
+ * Get documentation link for error
18
+ */
19
+ getDocumentationLink(errorCode) {
20
+ const docMap = {
21
+ INVALID_DEPENDENCY: `${DOCS_BASE_URL}/errors/INVALID_DEPENDENCY.md`,
22
+ CIRCULAR_DEPENDENCY: `${DOCS_BASE_URL}/errors/CIRCULAR_DEPENDENCY.md`,
23
+ MISSING_COMPONENT: `${DOCS_BASE_URL}/errors/MISSING_COMPONENT.md`,
24
+ INVALID_METADATA: `${DOCS_BASE_URL}/errors/INVALID_METADATA.md`,
25
+ };
26
+ return docMap[errorCode] || `${DOCS_BASE_URL}/ERROR_CATALOG.md`;
27
+ }
28
+ /**
29
+ * @ac US-075-AC-1: User-friendly error messages
30
+ * @ac US-075-AC-2: Include file paths
31
+ * @ac US-075-AC-3: Include line numbers
32
+ * @ac US-075-AC-4: Suggest fixes
33
+ * @ac US-075-AC-5: Link to documentation
34
+ * Format validation error with all details
35
+ */
36
+ format(error) {
37
+ const lines = [];
38
+ lines.push(`❌ ${error.name} [${error.code}]`);
39
+ lines.push(` ${error.message}`);
40
+ lines.push('');
41
+ // File and line info
42
+ if (error.context.file) {
43
+ lines.push(`📁 File: ${error.context.file}`);
44
+ if (error.context.line) {
45
+ lines.push(`📍 Line: ${error.context.line}`);
46
+ }
47
+ lines.push('');
48
+ }
49
+ // Suggestions
50
+ if (error.suggestions.length > 0) {
51
+ lines.push('💡 Suggested Fixes:');
52
+ for (const suggestion of error.suggestions) {
53
+ lines.push(` • ${suggestion}`);
54
+ }
55
+ lines.push('');
56
+ }
57
+ // Documentation link
58
+ const docLink = this.getDocumentationLink(error.code);
59
+ lines.push(`📖 Documentation: ${docLink}`);
60
+ return lines.join('\n');
61
+ }
62
+ /**
63
+ * @ac US-075-AC-6: Categorize by severity
64
+ * Format multiple validation errors grouped by severity
65
+ */
66
+ formatMultiple(errors) {
67
+ const lines = [];
68
+ lines.push('📋 Validation Errors Report');
69
+ lines.push('═══════════════════════════════════════');
70
+ lines.push(`Total Errors: ${errors.length}`);
71
+ lines.push('');
72
+ // Group by severity (based on code)
73
+ const critical = errors.filter((e) => e.code.includes('CRITICAL'));
74
+ const high = errors.filter((e) => e.code.includes('ERROR'));
75
+ const medium = errors.filter((e) => e.code.includes('WARNING'));
76
+ if (critical.length > 0) {
77
+ lines.push(`🔴 Critical (${critical.length}):`);
78
+ for (const error of critical) {
79
+ lines.push(` ${error.message}`);
80
+ }
81
+ lines.push('');
82
+ }
83
+ if (high.length > 0) {
84
+ lines.push(`🟠 Errors (${high.length}):`);
85
+ for (const error of high) {
86
+ lines.push(` ${error.message}`);
87
+ }
88
+ lines.push('');
89
+ }
90
+ if (medium.length > 0) {
91
+ lines.push(`🟡 Warnings (${medium.length}):`);
92
+ for (const error of medium) {
93
+ lines.push(` ${error.message}`);
94
+ }
95
+ }
96
+ return lines.join('\n');
97
+ }
98
+ }
99
+ //# sourceMappingURL=validation-error-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error-reporter.js","sourceRoot":"","sources":["../../src/errors/validation-error-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { SmartDeploymentError } from './base-error.js';
2
+ /**
3
+ * Error thrown when metadata or configuration validation fails
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * throw new ValidationError('Invalid API version', {
8
+ * currentVersion: '30.0',
9
+ * minimumVersion: '40.0',
10
+ * field: 'sourceApiVersion'
11
+ * });
12
+ * ```
13
+ */
14
+ export declare class ValidationError extends SmartDeploymentError {
15
+ constructor(message: string, context?: Record<string, unknown>);
16
+ }
17
+ /**
18
+ * Error thrown when required configuration is missing
19
+ */
20
+ export declare class ConfigurationError extends ValidationError {
21
+ constructor(missingConfig: string, context?: Record<string, unknown>);
22
+ }
23
+ /**
24
+ * Error thrown when API version is invalid or outdated
25
+ */
26
+ export declare class ApiVersionError extends ValidationError {
27
+ constructor(currentVersion: string, minimumVersion: string, context?: Record<string, unknown>);
28
+ }
29
+ /**
30
+ * Error thrown when metadata type is unknown or unsupported
31
+ */
32
+ export declare class UnknownMetadataTypeError extends ValidationError {
33
+ constructor(metadataType: string, context?: Record<string, unknown>);
34
+ }
35
+ /**
36
+ * Error thrown when component count exceeds limits
37
+ */
38
+ export declare class ComponentCountError extends ValidationError {
39
+ constructor(count: number, limit: number, componentType?: string, context?: Record<string, unknown>);
40
+ }
41
+ /**
42
+ * Error thrown when required metadata is missing
43
+ */
44
+ export declare class MissingMetadataError extends ValidationError {
45
+ constructor(metadataType: string, metadataName: string, context?: Record<string, unknown>);
46
+ }
47
+ /**
48
+ * Error thrown when file or directory does not exist
49
+ */
50
+ export declare class FileNotFoundError extends ValidationError {
51
+ constructor(filePath: string, context?: Record<string, unknown>);
52
+ }
53
+ /**
54
+ * Error thrown when file permissions are insufficient
55
+ */
56
+ export declare class PermissionError extends ValidationError {
57
+ constructor(filePath: string, operation: string, context?: Record<string, unknown>);
58
+ }
@@ -0,0 +1,131 @@
1
+ import { SmartDeploymentError } from './base-error.js';
2
+ /**
3
+ * Error thrown when metadata or configuration validation fails
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * throw new ValidationError('Invalid API version', {
8
+ * currentVersion: '30.0',
9
+ * minimumVersion: '40.0',
10
+ * field: 'sourceApiVersion'
11
+ * });
12
+ * ```
13
+ */
14
+ export class ValidationError extends SmartDeploymentError {
15
+ constructor(message, context = {}) {
16
+ const suggestions = [];
17
+ // Add context-specific suggestions
18
+ if (context.field) {
19
+ suggestions.push(`Check field: ${String(context.field)}`);
20
+ }
21
+ if (context.minimumVersion) {
22
+ suggestions.push(`Update to minimum version: ${String(context.minimumVersion)}`);
23
+ }
24
+ if (context.allowedValues) {
25
+ suggestions.push(`Allowed values: ${JSON.stringify(context.allowedValues)}`);
26
+ }
27
+ super(message, 'VALIDATION_ERROR', context, suggestions);
28
+ }
29
+ }
30
+ /**
31
+ * Error thrown when required configuration is missing
32
+ */
33
+ export class ConfigurationError extends ValidationError {
34
+ constructor(missingConfig, context = {}) {
35
+ super(`Missing required configuration: ${missingConfig}`, {
36
+ ...context,
37
+ missingConfig,
38
+ });
39
+ this.suggestions.push(`Add '${missingConfig}' to your configuration`);
40
+ this.suggestions.push('Check .sfsmartdeploy.json or CLI flags');
41
+ }
42
+ }
43
+ /**
44
+ * Error thrown when API version is invalid or outdated
45
+ */
46
+ export class ApiVersionError extends ValidationError {
47
+ constructor(currentVersion, minimumVersion, context = {}) {
48
+ super(`API version ${currentVersion} is below minimum ${minimumVersion}`, {
49
+ ...context,
50
+ currentVersion,
51
+ minimumVersion,
52
+ });
53
+ this.suggestions.push(`Update sourceApiVersion in sfdx-project.json to ${minimumVersion} or higher`);
54
+ this.suggestions.push('Salesforce deprecates API versions older than 3 years');
55
+ this.suggestions.push('Consider using the latest API version for new features');
56
+ }
57
+ }
58
+ /**
59
+ * Error thrown when metadata type is unknown or unsupported
60
+ */
61
+ export class UnknownMetadataTypeError extends ValidationError {
62
+ constructor(metadataType, context = {}) {
63
+ super(`Unknown metadata type: ${metadataType}`, {
64
+ ...context,
65
+ metadataType,
66
+ });
67
+ this.suggestions.push('Check metadata type spelling and casing');
68
+ this.suggestions.push('Verify the type exists in Salesforce documentation');
69
+ this.suggestions.push('Type may be new - update plugin to latest version');
70
+ }
71
+ }
72
+ /**
73
+ * Error thrown when component count exceeds limits
74
+ */
75
+ export class ComponentCountError extends ValidationError {
76
+ constructor(count, limit, componentType, context = {}) {
77
+ const typeStr = componentType ? ` ${componentType}` : '';
78
+ super(`Too many${typeStr} components: ${count} exceeds limit of ${limit}`, {
79
+ ...context,
80
+ count,
81
+ limit,
82
+ componentType,
83
+ });
84
+ this.suggestions.push('Split deployment into multiple waves');
85
+ this.suggestions.push('Use selective deployment for changed components only');
86
+ }
87
+ }
88
+ /**
89
+ * Error thrown when required metadata is missing
90
+ */
91
+ export class MissingMetadataError extends ValidationError {
92
+ constructor(metadataType, metadataName, context = {}) {
93
+ super(`Missing required ${metadataType}: ${metadataName}`, {
94
+ ...context,
95
+ metadataType,
96
+ metadataName,
97
+ });
98
+ this.suggestions.push(`Add ${metadataType} '${metadataName}' to your deployment`);
99
+ this.suggestions.push('Check if the component was deleted or renamed');
100
+ }
101
+ }
102
+ /**
103
+ * Error thrown when file or directory does not exist
104
+ */
105
+ export class FileNotFoundError extends ValidationError {
106
+ constructor(filePath, context = {}) {
107
+ super(`File or directory not found: ${filePath}`, {
108
+ ...context,
109
+ filePath,
110
+ });
111
+ this.suggestions.push(`Verify path exists: ${filePath}`);
112
+ this.suggestions.push('Check for typos in file path');
113
+ this.suggestions.push('Ensure you are in the correct directory');
114
+ }
115
+ }
116
+ /**
117
+ * Error thrown when file permissions are insufficient
118
+ */
119
+ export class PermissionError extends ValidationError {
120
+ constructor(filePath, operation, context = {}) {
121
+ super(`Permission denied: cannot ${operation} ${filePath}`, {
122
+ ...context,
123
+ filePath,
124
+ operation,
125
+ });
126
+ this.suggestions.push(`Check file permissions: ls -la ${filePath}`);
127
+ this.suggestions.push(`Grant ${operation} permission: chmod +r ${filePath}`);
128
+ this.suggestions.push('Run command with appropriate user privileges');
129
+ }
130
+ }
131
+ //# sourceMappingURL=validation-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error.js","sourceRoot":"","sources":["../../src/errors/validation-error.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const _default: {};
2
+ export default _default;
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export default {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe,EAAE,CAAC"}