@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,331 @@
1
+ /**
2
+ * String Utilities
3
+ *
4
+ * Provides string manipulation functions for metadata processing
5
+ */
6
+ import { getLogger } from './logger.js';
7
+ const logger = getLogger('StringUtils');
8
+ /**
9
+ * Convert string to camelCase
10
+ *
11
+ * @ac US-011-AC-1: Case conversions (camelCase, PascalCase, snake_case)
12
+ * @example
13
+ * toCamelCase('hello_world') // 'helloWorld'
14
+ * toCamelCase('HelloWorld') // 'helloWorld'
15
+ */
16
+ export function toCamelCase(str) {
17
+ // Convert to words array by splitting on separators and camel case boundaries
18
+ const words = str
19
+ // Insert space before uppercase letters that follow lowercase
20
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
21
+ // Split on separators
22
+ .split(/[-_\s]+/)
23
+ .filter(Boolean);
24
+ return words
25
+ .map((word, index) => {
26
+ const lower = word.toLowerCase();
27
+ return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);
28
+ })
29
+ .join('');
30
+ }
31
+ /**
32
+ * Convert string to PascalCase
33
+ *
34
+ * @ac US-011-AC-1: Case conversions (camelCase, PascalCase, snake_case)
35
+ * @example
36
+ * toPascalCase('hello_world') // 'HelloWorld'
37
+ * toPascalCase('helloWorld') // 'HelloWorld'
38
+ */
39
+ export function toPascalCase(str) {
40
+ // Similar to camelCase but capitalize first word too
41
+ const words = str
42
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
43
+ .split(/[-_\s]+/)
44
+ .filter(Boolean);
45
+ return words
46
+ .map((word) => {
47
+ const lower = word.toLowerCase();
48
+ return lower.charAt(0).toUpperCase() + lower.slice(1);
49
+ })
50
+ .join('');
51
+ }
52
+ /**
53
+ * Convert string to snake_case
54
+ *
55
+ * @ac US-011-AC-1: Case conversions (camelCase, PascalCase, snake_case)
56
+ * @example
57
+ * toSnakeCase('helloWorld') // 'hello_world'
58
+ * toSnakeCase('HelloWorld') // 'hello_world'
59
+ */
60
+ export function toSnakeCase(str) {
61
+ return str
62
+ .replace(/([A-Z])/g, '_$1')
63
+ .replace(/[-\s]+/g, '_')
64
+ .replace(/^_/, '')
65
+ .toLowerCase();
66
+ }
67
+ /**
68
+ * Convert string to kebab-case
69
+ *
70
+ * @ac US-011-AC-1: Case conversions (camelCase, PascalCase, snake_case)
71
+ * @example
72
+ * toKebabCase('helloWorld') // 'hello-world'
73
+ * toKebabCase('hello_world') // 'hello-world'
74
+ */
75
+ export function toKebabCase(str) {
76
+ return toSnakeCase(str).replace(/_/g, '-');
77
+ }
78
+ /**
79
+ * Extract comments from Apex code
80
+ *
81
+ * @ac US-011-AC-2: Extract comments from Apex/JavaScript
82
+ * @example
83
+ * extractApexComments('// comment\ncode') // ['// comment']
84
+ */
85
+ export function extractApexComments(code) {
86
+ const comments = [];
87
+ // Single-line comments
88
+ const singleLinePattern = /\/\/.*/g;
89
+ let match;
90
+ while ((match = singleLinePattern.exec(code)) !== null) {
91
+ comments.push(match[0]);
92
+ }
93
+ // Multi-line comments
94
+ const multiLinePattern = /\/\*[\s\S]*?\*\//g;
95
+ while ((match = multiLinePattern.exec(code)) !== null) {
96
+ comments.push(match[0]);
97
+ }
98
+ return comments;
99
+ }
100
+ /**
101
+ * Extract comments from JavaScript code
102
+ *
103
+ * @ac US-011-AC-2: Extract comments from Apex/JavaScript
104
+ * @example
105
+ * extractJavaScriptComments('/* comment *\/\ncode') // ['/* comment *\/']
106
+ */
107
+ export function extractJavaScriptComments(code) {
108
+ // JavaScript comments follow same pattern as Apex
109
+ return extractApexComments(code);
110
+ }
111
+ /**
112
+ * Escape XML special characters
113
+ *
114
+ * @ac US-011-AC-3: Escape/unescape XML special characters
115
+ * @example
116
+ * escapeXml('<tag>value & "quoted"</tag>') // '&lt;tag&gt;value &amp; &quot;quoted&quot;&lt;/tag&gt;'
117
+ */
118
+ export function escapeXml(str) {
119
+ return str
120
+ .replace(/&/g, '&amp;')
121
+ .replace(/</g, '&lt;')
122
+ .replace(/>/g, '&gt;')
123
+ .replace(/"/g, '&quot;')
124
+ .replace(/'/g, '&apos;');
125
+ }
126
+ /**
127
+ * Unescape XML special characters
128
+ *
129
+ * @ac US-011-AC-3: Escape/unescape XML special characters
130
+ * @example
131
+ * unescapeXml('&lt;tag&gt;value &amp; &quot;quoted&quot;&lt;/tag&gt;') // '<tag>value & "quoted"</tag>'
132
+ */
133
+ export function unescapeXml(str) {
134
+ return str
135
+ .replace(/&lt;/g, '<')
136
+ .replace(/&gt;/g, '>')
137
+ .replace(/&quot;/g, '"')
138
+ .replace(/&apos;/g, "'")
139
+ .replace(/&amp;/g, '&'); // Must be last to avoid double-unescaping
140
+ }
141
+ /**
142
+ * Common regex patterns for Salesforce
143
+ *
144
+ * @ac US-011-AC-4: Regex utilities for common patterns
145
+ */
146
+ export const REGEX_PATTERNS = {
147
+ /** Salesforce API name (letters, numbers, underscores, starts with letter) */
148
+ SALESFORCE_API_NAME: /^[a-zA-Z][a-zA-Z0-9_]*$/,
149
+ /** Salesforce Email (standard email pattern) */
150
+ EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
151
+ /** Salesforce 15/18 character ID */
152
+ SALESFORCE_ID: /^[a-zA-Z0-9]{15}([a-zA-Z0-9]{3})?$/,
153
+ /** Salesforce namespace prefix */
154
+ NAMESPACE_PREFIX: /^[a-zA-Z][a-zA-Z0-9_]*__$/,
155
+ /** Custom field suffix */
156
+ CUSTOM_FIELD_SUFFIX: /__c$/,
157
+ /** Custom object suffix */
158
+ CUSTOM_OBJECT_SUFFIX: /__c$/,
159
+ /** Metadata file extension */
160
+ METADATA_FILE: /\.[\w-]+meta\.xml$/,
161
+ /** Version number (semantic versioning) */
162
+ VERSION: /^\d+\.\d+(\.\d+)?$/,
163
+ };
164
+ /**
165
+ * Validate Salesforce API name
166
+ *
167
+ * @ac US-011-AC-4: Regex utilities for common patterns
168
+ * @example
169
+ * isValidSalesforceApiName('MyField__c') // true
170
+ * isValidSalesforceApiName('123Invalid') // false
171
+ */
172
+ export function isValidSalesforceApiName(name) {
173
+ return REGEX_PATTERNS.SALESFORCE_API_NAME.test(name);
174
+ }
175
+ /**
176
+ * Validate email address
177
+ *
178
+ * @ac US-011-AC-4: Regex utilities for common patterns
179
+ * @example
180
+ * isValidEmail('user@example.com') // true
181
+ * isValidEmail('invalid-email') // false
182
+ */
183
+ export function isValidEmail(email) {
184
+ return REGEX_PATTERNS.EMAIL.test(email);
185
+ }
186
+ /**
187
+ * Normalize Unicode string (NFC normalization)
188
+ *
189
+ * @ac US-011-AC-5: Unicode handling
190
+ * @example
191
+ * normalizeUnicode('café') // Normalized form
192
+ */
193
+ export function normalizeUnicode(str) {
194
+ return str.normalize('NFC');
195
+ }
196
+ /**
197
+ * Strip accents from Unicode string
198
+ *
199
+ * @ac US-011-AC-5: Unicode handling
200
+ * @example
201
+ * stripAccents('café') // 'cafe'
202
+ * stripAccents('naïve') // 'naive'
203
+ */
204
+ export function stripAccents(str) {
205
+ return str
206
+ .normalize('NFD')
207
+ .replace(/[\u0300-\u036f]/g, '')
208
+ .normalize('NFC');
209
+ }
210
+ /**
211
+ * Truncate string with ellipsis
212
+ *
213
+ * @example
214
+ * truncate('Hello World', 8) // 'Hello...'
215
+ * truncate('Short', 10) // 'Short'
216
+ */
217
+ export function truncate(str, maxLength, ellipsis = '...') {
218
+ if (str.length <= maxLength) {
219
+ return str;
220
+ }
221
+ const truncated = str.slice(0, maxLength - ellipsis.length);
222
+ return truncated + ellipsis;
223
+ }
224
+ /**
225
+ * Pluralize word (simple English rules)
226
+ *
227
+ * @example
228
+ * pluralize('field') // 'fields'
229
+ * pluralize('class') // 'classes'
230
+ * pluralize('entry') // 'entries'
231
+ */
232
+ export function pluralize(word) {
233
+ if (word.endsWith('s') || word.endsWith('x') || word.endsWith('z') || word.endsWith('ch') || word.endsWith('sh')) {
234
+ return word + 'es';
235
+ }
236
+ if (word.endsWith('y') && !/[aeiou]y$/i.test(word)) {
237
+ return word.slice(0, -1) + 'ies';
238
+ }
239
+ return word + 's';
240
+ }
241
+ /**
242
+ * Singularize word (simple English rules)
243
+ *
244
+ * @example
245
+ * singularize('fields') // 'field'
246
+ * singularize('classes') // 'class'
247
+ * singularize('entries') // 'entry'
248
+ */
249
+ export function singularize(word) {
250
+ if (word.endsWith('ies')) {
251
+ return word.slice(0, -3) + 'y';
252
+ }
253
+ if (word.endsWith('es')) {
254
+ // Check if it's a word that adds 'es' (classes, boxes, etc.)
255
+ const stem = word.slice(0, -2);
256
+ if (stem.endsWith('s') || stem.endsWith('x') || stem.endsWith('z') || stem.endsWith('ch') || stem.endsWith('sh')) {
257
+ return stem;
258
+ }
259
+ // Otherwise just remove 's'
260
+ return word.slice(0, -1);
261
+ }
262
+ if (word.endsWith('s') && !word.endsWith('ss')) {
263
+ return word.slice(0, -1);
264
+ }
265
+ return word;
266
+ }
267
+ /**
268
+ * Convert string to title case
269
+ *
270
+ * @example
271
+ * toTitleCase('hello world') // 'Hello World'
272
+ * toTitleCase('HELLO WORLD') // 'Hello World'
273
+ */
274
+ export function toTitleCase(str) {
275
+ return str
276
+ .toLowerCase()
277
+ .split(' ')
278
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
279
+ .join(' ');
280
+ }
281
+ /**
282
+ * Remove multiple consecutive spaces
283
+ *
284
+ * @example
285
+ * normalizeWhitespace('hello world') // 'hello world'
286
+ * normalizeWhitespace(' spaces ') // 'spaces'
287
+ */
288
+ export function normalizeWhitespace(str) {
289
+ return str.replace(/\s+/g, ' ').trim();
290
+ }
291
+ /**
292
+ * Extract namespace from Salesforce API name
293
+ *
294
+ * @example
295
+ * extractNamespace('MyNamespace__CustomObject__c') // 'MyNamespace'
296
+ * extractNamespace('StandardObject') // null
297
+ */
298
+ export function extractNamespace(apiName) {
299
+ // Match namespace pattern: letters/numbers/underscores followed by double underscore
300
+ // But NOT ending with __c (that's the custom suffix, not namespace)
301
+ const match = apiName.match(/^([a-zA-Z][a-zA-Z0-9_]*?)__(?!c$)/);
302
+ return match ? match[1] : null;
303
+ }
304
+ /**
305
+ * Check if API name is custom (ends with __c)
306
+ *
307
+ * @example
308
+ * isCustom('MyField__c') // true
309
+ * isCustom('Name') // false
310
+ */
311
+ export function isCustom(apiName) {
312
+ return apiName.endsWith('__c');
313
+ }
314
+ /**
315
+ * Format bytes to human-readable string
316
+ *
317
+ * @example
318
+ * formatBytes(1024) // '1.00 KB'
319
+ * formatBytes(1048576) // '1.00 MB'
320
+ */
321
+ export function formatBytes(bytes, decimals = 2) {
322
+ if (bytes === 0)
323
+ return '0 Bytes';
324
+ const k = 1024;
325
+ const dm = decimals < 0 ? 0 : decimals;
326
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
327
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
328
+ return `${(bytes / Math.pow(k, i)).toFixed(dm)} ${sizes[i]}`;
329
+ }
330
+ logger.debug('String utilities loaded');
331
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,8EAA8E;IAC9E,MAAM,KAAK,GAAG,GAAG;QACf,8DAA8D;SAC7D,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;QACpC,sBAAsB;SACrB,KAAK,CAAC,SAAS,CAAC;SAChB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,qDAAqD;IACrD,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,KAAK,CAAC,SAAS,CAAC;SAChB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,uBAAuB;IACvB,MAAM,iBAAiB,GAAG,SAAS,CAAC;IACpC,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB;IACtB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;IAC7C,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,kDAAkD;IAClD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,0CAA0C;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,8EAA8E;IAC9E,mBAAmB,EAAE,yBAAyB;IAE9C,gDAAgD;IAChD,KAAK,EAAE,4BAA4B;IAEnC,oCAAoC;IACpC,aAAa,EAAE,oCAAoC;IAEnD,kCAAkC;IAClC,gBAAgB,EAAE,2BAA2B;IAE7C,0BAA0B;IAC1B,mBAAmB,EAAE,MAAM;IAE3B,2BAA2B;IAC3B,oBAAoB,EAAE,MAAM;IAE5B,8BAA8B;IAC9B,aAAa,EAAE,oBAAoB;IAEnC,2CAA2C;IAC3C,OAAO,EAAE,oBAAoB;CACrB,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,SAAS,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB,EAAE,QAAQ,GAAG,KAAK;IACvE,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,SAAS,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjH,OAAO,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,GAAG,GAAG,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,6DAA6D;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,4BAA4B;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,WAAW,EAAE;SACb,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,qFAAqF;IACrF,oEAAoE;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC;IACrD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * XML parsing options
3
+ */
4
+ export type XmlParseOptions = {
5
+ ignoreAttributes?: boolean;
6
+ preserveOrder?: boolean;
7
+ trimValues?: boolean;
8
+ parseTagValue?: boolean;
9
+ };
10
+ /**
11
+ * XML generation options
12
+ */
13
+ export type XmlBuildOptions = {
14
+ format?: boolean;
15
+ ignoreAttributes?: boolean;
16
+ indentBy?: string;
17
+ suppressEmptyNode?: boolean;
18
+ };
19
+ /**
20
+ * Parse XML string to JavaScript object
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const xml = '<ApexClass><name>MyClass</name></ApexClass>';
25
+ * const obj = parseXml(xml);
26
+ * // { ApexClass: { name: 'MyClass' } }
27
+ * ```
28
+ */
29
+ export declare function parseXml<T = unknown>(xmlString: string, options?: XmlParseOptions): T;
30
+ /**
31
+ * Generate XML string from JavaScript object
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const obj = { ApexClass: { name: 'MyClass', apiVersion: '60.0' } };
36
+ * const xml = buildXml(obj);
37
+ * // <ApexClass>
38
+ * // <name>MyClass</name>
39
+ * // <apiVersion>60.0</apiVersion>
40
+ * // </ApexClass>
41
+ * ```
42
+ */
43
+ export declare function buildXml(object: unknown, options?: XmlBuildOptions): string;
44
+ /**
45
+ * Validate XML string
46
+ *
47
+ * @returns True if valid, error object if invalid
48
+ */
49
+ export declare function validateXml(xmlString: string): true | {
50
+ err: {
51
+ msg: string;
52
+ line: number;
53
+ };
54
+ };
55
+ /**
56
+ * Parse XML file to JavaScript object
57
+ */
58
+ export declare function parseXmlFile<T = unknown>(filePath: string, options?: XmlParseOptions): Promise<T>;
59
+ /**
60
+ * Write JavaScript object to XML file
61
+ */
62
+ export declare function writeXmlFile(filePath: string, object: unknown, options?: XmlBuildOptions): Promise<void>;
63
+ /**
64
+ * Pretty-print XML string
65
+ */
66
+ export declare function formatXml(xmlString: string): string;
67
+ /**
68
+ * Extract namespace from XML string
69
+ */
70
+ export declare function extractNamespace(xmlString: string): string | null;
71
+ /**
72
+ * Check if XML string has specific namespace
73
+ */
74
+ export declare function hasNamespace(xmlString: string, namespace: string): boolean;
75
+ /**
76
+ * Parse Salesforce metadata XML with proper namespace handling
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const metadata = await parseSalesforceMetadata('./MyClass.cls-meta.xml');
81
+ * // { ApexClass: { apiVersion: '60.0', status: 'Active' } }
82
+ * ```
83
+ */
84
+ export declare function parseSalesforceMetadata<T = unknown>(filePath: string): Promise<T>;
85
+ /**
86
+ * Build Salesforce metadata XML with proper formatting
87
+ */
88
+ export declare function buildSalesforceMetadata(object: unknown, namespace?: string): string;
89
+ /**
90
+ * Stream-based XML parsing for large files
91
+ * Returns array of parsed chunks
92
+ */
93
+ export declare function parseXmlStream<T = unknown>(filePath: string, chunkSize?: number): Promise<T[]>;
94
+ /**
95
+ * Minify XML by removing whitespace
96
+ */
97
+ export declare function minifyXml(xmlString: string): string;
@@ -0,0 +1,227 @@
1
+ import fs from 'node:fs/promises';
2
+ import { XMLBuilder, XMLParser, XMLValidator } from 'fast-xml-parser';
3
+ import { getLogger } from './logger.js';
4
+ const logger = getLogger('XMLUtils');
5
+ /**
6
+ * Default XML parsing configuration for Salesforce metadata
7
+ */
8
+ const DEFAULT_PARSE_OPTIONS = {
9
+ ignoreAttributes: false,
10
+ preserveOrder: false,
11
+ trimValues: true,
12
+ parseTagValue: true,
13
+ };
14
+ /**
15
+ * Default XML generation configuration
16
+ */
17
+ const DEFAULT_BUILD_OPTIONS = {
18
+ format: true,
19
+ ignoreAttributes: false,
20
+ indentBy: ' ',
21
+ suppressEmptyNode: false,
22
+ };
23
+ /**
24
+ * Parse XML string to JavaScript object
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const xml = '<ApexClass><name>MyClass</name></ApexClass>';
29
+ * const obj = parseXml(xml);
30
+ * // { ApexClass: { name: 'MyClass' } }
31
+ * ```
32
+ */
33
+ export function parseXml(xmlString, options) {
34
+ try {
35
+ const parser = new XMLParser({
36
+ ...DEFAULT_PARSE_OPTIONS,
37
+ ...options,
38
+ attributeNamePrefix: '@_',
39
+ textNodeName: '#text',
40
+ });
41
+ return parser.parse(xmlString);
42
+ }
43
+ catch (error) {
44
+ logger.error('Failed to parse XML', { error });
45
+ throw new Error(`XML parsing failed: ${error.message}`);
46
+ }
47
+ }
48
+ /**
49
+ * Generate XML string from JavaScript object
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const obj = { ApexClass: { name: 'MyClass', apiVersion: '60.0' } };
54
+ * const xml = buildXml(obj);
55
+ * // <ApexClass>
56
+ * // <name>MyClass</name>
57
+ * // <apiVersion>60.0</apiVersion>
58
+ * // </ApexClass>
59
+ * ```
60
+ */
61
+ export function buildXml(object, options) {
62
+ try {
63
+ const builder = new XMLBuilder({
64
+ ...DEFAULT_BUILD_OPTIONS,
65
+ ...options,
66
+ attributeNamePrefix: '@_',
67
+ textNodeName: '#text',
68
+ });
69
+ const xml = builder.build(object);
70
+ // Add XML declaration if format is enabled
71
+ if (options?.format !== false) {
72
+ return `<?xml version="1.0" encoding="UTF-8"?>\n${xml}`;
73
+ }
74
+ return xml;
75
+ }
76
+ catch (error) {
77
+ logger.error('Failed to build XML', { error });
78
+ throw new Error(`XML generation failed: ${error.message}`);
79
+ }
80
+ }
81
+ /**
82
+ * Validate XML string
83
+ *
84
+ * @returns True if valid, error object if invalid
85
+ */
86
+ export function validateXml(xmlString) {
87
+ const result = XMLValidator.validate(xmlString, {
88
+ allowBooleanAttributes: true,
89
+ });
90
+ if (result === true) {
91
+ return true;
92
+ }
93
+ logger.warn('XML validation failed', { error: result.err });
94
+ return result;
95
+ }
96
+ /**
97
+ * Parse XML file to JavaScript object
98
+ */
99
+ export async function parseXmlFile(filePath, options) {
100
+ try {
101
+ const content = await fs.readFile(filePath, 'utf-8');
102
+ return parseXml(content, options);
103
+ }
104
+ catch (error) {
105
+ logger.error('Failed to parse XML file', { error, filePath });
106
+ throw new Error(`Failed to read/parse XML file ${filePath}: ${error.message}`);
107
+ }
108
+ }
109
+ /**
110
+ * Write JavaScript object to XML file
111
+ */
112
+ export async function writeXmlFile(filePath, object, options) {
113
+ try {
114
+ const xml = buildXml(object, options);
115
+ await fs.writeFile(filePath, xml, 'utf-8');
116
+ }
117
+ catch (error) {
118
+ logger.error('Failed to write XML file', { error, filePath });
119
+ throw new Error(`Failed to write XML file ${filePath}: ${error.message}`);
120
+ }
121
+ }
122
+ /**
123
+ * Pretty-print XML string
124
+ */
125
+ export function formatXml(xmlString) {
126
+ try {
127
+ // Parse and rebuild with formatting
128
+ const parsed = parseXml(xmlString);
129
+ return buildXml(parsed, { format: true });
130
+ }
131
+ catch (error) {
132
+ logger.error('Failed to format XML', { error });
133
+ throw new Error(`XML formatting failed: ${error.message}`);
134
+ }
135
+ }
136
+ /**
137
+ * Extract namespace from XML string
138
+ */
139
+ export function extractNamespace(xmlString) {
140
+ const namespaceMatch = /xmlns="([^"]+)"/.exec(xmlString);
141
+ return namespaceMatch ? namespaceMatch[1] : null;
142
+ }
143
+ /**
144
+ * Check if XML string has specific namespace
145
+ */
146
+ export function hasNamespace(xmlString, namespace) {
147
+ const extractedNamespace = extractNamespace(xmlString);
148
+ return extractedNamespace === namespace;
149
+ }
150
+ /**
151
+ * Parse Salesforce metadata XML with proper namespace handling
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * const metadata = await parseSalesforceMetadata('./MyClass.cls-meta.xml');
156
+ * // { ApexClass: { apiVersion: '60.0', status: 'Active' } }
157
+ * ```
158
+ */
159
+ export async function parseSalesforceMetadata(filePath) {
160
+ const content = await fs.readFile(filePath, 'utf-8');
161
+ // Validate before parsing
162
+ const validation = validateXml(content);
163
+ if (validation !== true) {
164
+ throw new Error(`Invalid XML in ${filePath}: ${validation.err.msg} at line ${validation.err.line}`);
165
+ }
166
+ return parseXml(content, {
167
+ ignoreAttributes: false,
168
+ trimValues: true,
169
+ });
170
+ }
171
+ /**
172
+ * Build Salesforce metadata XML with proper formatting
173
+ */
174
+ export function buildSalesforceMetadata(object, namespace = 'http://soap.sforce.com/2006/04/metadata') {
175
+ const xml = buildXml(object, {
176
+ format: true,
177
+ indentBy: ' ', // Salesforce uses 4 spaces
178
+ });
179
+ // Add namespace to root element
180
+ return xml.replace(/<(\w+)>/, `<$1 xmlns="${namespace}">`);
181
+ }
182
+ /**
183
+ * Stream-based XML parsing for large files
184
+ * Returns array of parsed chunks
185
+ */
186
+ export async function parseXmlStream(filePath, chunkSize = 1024 * 1024 // 1MB chunks
187
+ ) {
188
+ try {
189
+ const content = await fs.readFile(filePath, 'utf-8');
190
+ // For files smaller than chunk size, parse normally
191
+ if (content.length < chunkSize) {
192
+ return [parseXml(content)];
193
+ }
194
+ // For large files, split by root elements (simplified approach)
195
+ const chunks = [];
196
+ const rootTagMatch = /<(\w+)[^>]*>/.exec(content);
197
+ if (!rootTagMatch) {
198
+ throw new Error('Could not determine root element');
199
+ }
200
+ const rootTag = rootTagMatch[1];
201
+ // Find all occurrences of child elements and parse individually
202
+ const childPattern = new RegExp(`<${rootTag}[^>]*>([\\s\\S]*?)</${rootTag}>`, 'g');
203
+ let match;
204
+ while ((match = childPattern.exec(content)) !== null) {
205
+ chunks.push(parseXml(match[0]));
206
+ }
207
+ return chunks.length > 0 ? chunks : [parseXml(content)];
208
+ }
209
+ catch (error) {
210
+ logger.error('Failed to stream parse XML', { error, filePath });
211
+ throw new Error(`Failed to stream parse XML file ${filePath}: ${error.message}`);
212
+ }
213
+ }
214
+ /**
215
+ * Minify XML by removing whitespace
216
+ */
217
+ export function minifyXml(xmlString) {
218
+ try {
219
+ const parsed = parseXml(xmlString);
220
+ return buildXml(parsed, { format: false });
221
+ }
222
+ catch (error) {
223
+ logger.error('Failed to minify XML', { error });
224
+ throw new Error(`XML minification failed: ${error.message}`);
225
+ }
226
+ }
227
+ //# sourceMappingURL=xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/utils/xml.ts"],"names":[],"mappings":"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"}