@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,277 @@
1
+ /**
2
+ * Error-Resilient Parser Wrapper - US-071
3
+ * Gracefully handles parse errors without breaking analysis
4
+ *
5
+ * @ac US-071-AC-1: Catch and log parse errors
6
+ * @ac US-071-AC-2: Continue with other files
7
+ * @ac US-071-AC-3: Report errors with file paths
8
+ * @ac US-071-AC-4: Suggest fixes when possible
9
+ * @ac US-071-AC-5: Aggregate error report
10
+ * @ac US-071-AC-6: Option to fail-fast
11
+ * @issue #71
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ import { getErrorAggregator } from '../utils/error-aggregator.js';
15
+ const logger = getLogger('ErrorResilientParser');
16
+ const errorAggregator = getErrorAggregator();
17
+ /**
18
+ * @ac US-071-AC-1: Catch and log parse errors
19
+ * @ac US-071-AC-2: Continue with other files
20
+ */
21
+ export class ErrorResilientParser {
22
+ options;
23
+ errors = [];
24
+ constructor(options = {}) {
25
+ this.options = {
26
+ failFast: options.failFast ?? false,
27
+ logErrors: options.logErrors ?? true,
28
+ suggestFixes: options.suggestFixes ?? true,
29
+ };
30
+ logger.debug('Error-resilient parser initialized', { options: this.options });
31
+ }
32
+ /**
33
+ * @ac US-071-AC-1: Catch and log parse errors
34
+ * @ac US-071-AC-2: Continue with other files
35
+ * Parse multiple files with error resilience
36
+ */
37
+ async parseFiles(filePaths, parser) {
38
+ logger.info('Starting resilient parse', {
39
+ fileCount: filePaths.length,
40
+ failFast: this.options.failFast,
41
+ });
42
+ const results = this.options.failFast
43
+ ? await this.parseFilesSequentially(filePaths, parser)
44
+ : await Promise.all(filePaths.map(async (filePath) => this.parseFile(filePath, parser)));
45
+ logger.info('Resilient parse completed', {
46
+ totalFiles: filePaths.length,
47
+ successCount: results.filter((r) => r.success).length,
48
+ errorCount: results.filter((r) => !r.success).length,
49
+ });
50
+ return results;
51
+ }
52
+ async parseFilesSequentially(filePaths, parser, results = []) {
53
+ if (filePaths.length === 0) {
54
+ return results;
55
+ }
56
+ const [filePath, ...remaining] = filePaths;
57
+ const result = await this.parseFile(filePath, parser);
58
+ results.push(result);
59
+ if (!result.success) {
60
+ logger.warn('Fail-fast enabled, stopping parse', {
61
+ filePath,
62
+ totalProcessed: results.length,
63
+ totalFiles: results.length + remaining.length,
64
+ });
65
+ return results;
66
+ }
67
+ return this.parseFilesSequentially(remaining, parser, results);
68
+ }
69
+ /**
70
+ * @ac US-071-AC-1: Catch and log parse errors
71
+ * Parse single file with error handling
72
+ */
73
+ async parseFile(filePath, parser) {
74
+ try {
75
+ const data = await parser(filePath);
76
+ return {
77
+ success: true,
78
+ data,
79
+ filePath,
80
+ };
81
+ }
82
+ catch (error) {
83
+ const parseError = this.createParseError(filePath, error);
84
+ // Log to aggregator
85
+ if (this.options.logErrors) {
86
+ errorAggregator.addError({
87
+ message: parseError.message,
88
+ type: parseError.errorType,
89
+ severity: 'MEDIUM',
90
+ filePath: parseError.filePath,
91
+ lineNumber: parseError.lineNumber,
92
+ columnNumber: parseError.columnNumber,
93
+ context: {
94
+ suggestedFix: parseError.suggestedFix,
95
+ },
96
+ });
97
+ }
98
+ // Track locally
99
+ this.errors.push(parseError);
100
+ logger.warn('Parse error caught', {
101
+ filePath,
102
+ errorType: parseError.errorType,
103
+ message: parseError.message,
104
+ });
105
+ return {
106
+ success: false,
107
+ error: parseError,
108
+ filePath,
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * @ac US-071-AC-3: Report errors with file paths
114
+ * @ac US-071-AC-4: Suggest fixes when possible
115
+ * Create structured parse error
116
+ */
117
+ createParseError(filePath, error) {
118
+ const errorMessage = error instanceof Error ? error.message : String(error);
119
+ const errorStack = error instanceof Error ? error.stack : undefined;
120
+ // Extract line/column from error message if available
121
+ const locationMatch = /:(\d+):(\d+)/.exec(errorMessage);
122
+ const lineNumber = locationMatch ? Number.parseInt(locationMatch[1], 10) : undefined;
123
+ const columnNumber = locationMatch ? Number.parseInt(locationMatch[2], 10) : undefined;
124
+ // Determine error type
125
+ const errorType = this.categorizeError(errorMessage);
126
+ // Suggest fix if enabled
127
+ const suggestedFix = this.options.suggestFixes ? this.suggestFix(errorType, errorMessage) : undefined;
128
+ return {
129
+ filePath,
130
+ errorType,
131
+ message: errorMessage,
132
+ lineNumber,
133
+ columnNumber,
134
+ suggestedFix,
135
+ stack: errorStack,
136
+ };
137
+ }
138
+ /**
139
+ * Categorize error by type
140
+ */
141
+ categorizeError(message) {
142
+ const patterns = [
143
+ { pattern: /syntax error/i, type: 'SyntaxError' },
144
+ { pattern: /unexpected token/i, type: 'SyntaxError' },
145
+ { pattern: /missing/i, type: 'SyntaxError' },
146
+ { pattern: /expected/i, type: 'SyntaxError' },
147
+ { pattern: /cannot find/i, type: 'ReferenceError' },
148
+ { pattern: /not found/i, type: 'ReferenceError' },
149
+ { pattern: /ENOENT/i, type: 'FileNotFoundError' },
150
+ { pattern: /EACCES/i, type: 'PermissionError' },
151
+ { pattern: /encoding/i, type: 'EncodingError' },
152
+ { pattern: /xml/i, type: 'XMLParseError' },
153
+ ];
154
+ for (const { pattern, type } of patterns) {
155
+ if (pattern.test(message)) {
156
+ return type;
157
+ }
158
+ }
159
+ return 'ParseError';
160
+ }
161
+ /**
162
+ * @ac US-071-AC-4: Suggest fixes when possible
163
+ * Suggest fix based on error type
164
+ */
165
+ suggestFix(errorType, message) {
166
+ const suggestions = {
167
+ SyntaxError: 'Check for missing brackets, quotes, or semicolons. Validate XML/JSON structure.',
168
+ ReferenceError: 'Ensure the referenced component exists in the project or check dependencies.',
169
+ FileNotFoundError: 'Verify the file exists at the specified path. Check .forceignore rules.',
170
+ PermissionError: 'Check file permissions. Ensure read access to the file.',
171
+ EncodingError: 'Ensure file is encoded in UTF-8. Check for BOM or special characters.',
172
+ XMLParseError: 'Validate XML syntax. Check for unclosed tags or missing declarations.',
173
+ };
174
+ const baseSuggestion = suggestions[errorType];
175
+ // Add specific suggestions based on message
176
+ if (message.includes('Unexpected token')) {
177
+ return `${baseSuggestion || ''} Check for stray characters or incorrect syntax.`.trim();
178
+ }
179
+ if (message.includes('Expected')) {
180
+ return `${baseSuggestion || ''} Ensure all required elements are present.`.trim();
181
+ }
182
+ return baseSuggestion;
183
+ }
184
+ /**
185
+ * @ac US-071-AC-5: Aggregate error report
186
+ * Generate comprehensive error report
187
+ */
188
+ generateErrorReport() {
189
+ const lines = [];
190
+ lines.push('🔧 Parse Error Report');
191
+ lines.push('═══════════════════════════════════════');
192
+ if (this.errors.length === 0) {
193
+ lines.push('✅ No parse errors encountered');
194
+ return lines.join('\n');
195
+ }
196
+ lines.push(`❌ Total Errors: ${this.errors.length}`);
197
+ lines.push('');
198
+ // Group by error type
199
+ const byType = new Map();
200
+ for (const error of this.errors) {
201
+ const errors = byType.get(error.errorType) ?? [];
202
+ errors.push(error);
203
+ byType.set(error.errorType, errors);
204
+ }
205
+ lines.push('📊 Errors by Type:');
206
+ for (const [type, errors] of byType.entries()) {
207
+ lines.push(` ${type}: ${errors.length}`);
208
+ }
209
+ lines.push('');
210
+ // List errors (limit to first 20)
211
+ lines.push('📋 Error Details:');
212
+ const errorsToShow = this.errors.slice(0, 20);
213
+ for (const [index, error] of errorsToShow.entries()) {
214
+ lines.push(`\n${index + 1}. ${error.errorType} in ${error.filePath}`);
215
+ lines.push(` Message: ${error.message}`);
216
+ if (error.lineNumber) {
217
+ lines.push(` Location: Line ${error.lineNumber}${error.columnNumber ? `:${error.columnNumber}` : ''}`);
218
+ }
219
+ if (error.suggestedFix) {
220
+ lines.push(` 💡 Suggestion: ${error.suggestedFix}`);
221
+ }
222
+ }
223
+ if (this.errors.length > 20) {
224
+ lines.push(`\n... and ${this.errors.length - 20} more errors`);
225
+ }
226
+ return lines.join('\n');
227
+ }
228
+ /**
229
+ * Get all errors
230
+ */
231
+ getErrors() {
232
+ return [...this.errors];
233
+ }
234
+ /**
235
+ * Get error count
236
+ */
237
+ getErrorCount() {
238
+ return this.errors.length;
239
+ }
240
+ /**
241
+ * Check if any errors occurred
242
+ */
243
+ hasErrors() {
244
+ return this.errors.length > 0;
245
+ }
246
+ /**
247
+ * Clear errors
248
+ */
249
+ clearErrors() {
250
+ this.errors.length = 0;
251
+ }
252
+ /**
253
+ * Get successful parse count
254
+ */
255
+ static getSuccessCount(results) {
256
+ return results.filter((r) => r.success).length;
257
+ }
258
+ /**
259
+ * Get failed parse count
260
+ */
261
+ static getFailureCount(results) {
262
+ return results.filter((r) => !r.success).length;
263
+ }
264
+ /**
265
+ * Extract only successful results
266
+ */
267
+ static getSuccessfulData(results) {
268
+ return results.filter((r) => r.success && r.data !== undefined).map((r) => r.data);
269
+ }
270
+ /**
271
+ * Extract only errors
272
+ */
273
+ static getErrors(results) {
274
+ return results.filter((r) => !r.success && r.error !== undefined).map((r) => r.error);
275
+ }
276
+ }
277
+ //# sourceMappingURL=error-resilient-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-resilient-parser.js","sourceRoot":"","sources":["../../src/parsers/error-resilient-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * FlexiPage Parser
3
+ * Parses Salesforce Lightning Page metadata files (.flexipage-meta.xml)
4
+ *
5
+ * @ac US-022-AC-1: Extract LWC component references
6
+ * @ac US-022-AC-2: Extract Aura component references
7
+ * @ac US-022-AC-3: Extract object references
8
+ * @ac US-022-AC-4: Extract record type filters
9
+ * @ac US-022-AC-5: Extract region configurations
10
+ * @ac US-022-AC-6: Link to all component dependencies
11
+ *
12
+ * @issue #22
13
+ */
14
+ /**
15
+ * Result of parsing a FlexiPage file
16
+ */
17
+ export type FlexiPageParseResult = {
18
+ /** Name of the FlexiPage (from filename) */
19
+ name: string;
20
+ /** Master label */
21
+ masterLabel: string;
22
+ /** FlexiPage type (AppPage, HomePage, RecordPage, etc.) */
23
+ type: string;
24
+ /** SObject type (for RecordPage) */
25
+ sobjectType?: string;
26
+ /** LWC components referenced */
27
+ lwcComponents: string[];
28
+ /** Aura components referenced */
29
+ auraComponents: string[];
30
+ /** Objects referenced */
31
+ objects: string[];
32
+ /** Record type filters */
33
+ recordTypeFilters: string[];
34
+ /** Region names configured */
35
+ regions: string[];
36
+ /** Quick actions */
37
+ quickActions: string[];
38
+ /** All dependencies extracted from this FlexiPage */
39
+ dependencies: {
40
+ lwcComponents: string[];
41
+ auraComponents: string[];
42
+ objects: string[];
43
+ recordTypes: string[];
44
+ regions: string[];
45
+ quickActions: string[];
46
+ };
47
+ };
48
+ /**
49
+ * Parse a FlexiPage metadata XML file
50
+ *
51
+ * @param filePath - Path to the .flexipage-meta.xml file
52
+ * @param flexiPageName - Name of the FlexiPage (typically from filename)
53
+ * @returns Parsed FlexiPage metadata with dependencies
54
+ *
55
+ * @example
56
+ * const result = await parseFlexiPage(
57
+ * 'force-app/main/default/flexipages/Account_Record_Page.flexipage-meta.xml',
58
+ * 'Account_Record_Page'
59
+ * );
60
+ * console.log(result.sobjectType); // 'Account'
61
+ * console.log(result.lwcComponents); // ['c:accountSummary', 'c:relatedContacts']
62
+ * console.log(result.dependencies.auraComponents); // ['c:AccountChart']
63
+ */
64
+ export declare function parseFlexiPage(filePath: string, flexiPageName: string): Promise<FlexiPageParseResult>;
@@ -0,0 +1,196 @@
1
+ /**
2
+ * FlexiPage Parser
3
+ * Parses Salesforce Lightning Page metadata files (.flexipage-meta.xml)
4
+ *
5
+ * @ac US-022-AC-1: Extract LWC component references
6
+ * @ac US-022-AC-2: Extract Aura component references
7
+ * @ac US-022-AC-3: Extract object references
8
+ * @ac US-022-AC-4: Extract record type filters
9
+ * @ac US-022-AC-5: Extract region configurations
10
+ * @ac US-022-AC-6: Link to all component dependencies
11
+ *
12
+ * @issue #22
13
+ */
14
+ import { readFile } from 'node:fs/promises';
15
+ import { XMLParser } from 'fast-xml-parser';
16
+ /**
17
+ * Normalize value to array (handles XML parser returning single object vs array)
18
+ */
19
+ function normalizeArray(value) {
20
+ if (!value)
21
+ return [];
22
+ return Array.isArray(value) ? value : [value];
23
+ }
24
+ /**
25
+ * Extract components from item instances
26
+ */
27
+ function extractComponentsFromItems(items) {
28
+ const lwcComponents = [];
29
+ const auraComponents = [];
30
+ const recordTypes = [];
31
+ for (const item of items) {
32
+ if (item.componentInstance) {
33
+ const componentName = item.componentInstance.componentName;
34
+ // LWC components use namespace:componentName or c:componentName format
35
+ // Aura components use namespace:componentName or c:componentName format
36
+ // Distinguish by convention: LWC typically lowercase, Aura camelCase
37
+ if (componentName.includes(':')) {
38
+ const [namespace, name] = componentName.split(':');
39
+ // Standard components (force:*, lightning:*, etc.)
40
+ if (namespace === 'force' || namespace === 'lightning' || namespace === 'forceChatter') {
41
+ // Standard component, skip or log
42
+ }
43
+ else if (namespace === 'flexipage') {
44
+ // Flexipage components, skip
45
+ }
46
+ else if (name && name.startsWith(name[0].toUpperCase())) {
47
+ // Custom component - check naming convention
48
+ // LWC: lowercase or camelCase starting with lowercase
49
+ // Aura: PascalCase (starts with uppercase)
50
+ auraComponents.push(componentName);
51
+ }
52
+ else {
53
+ lwcComponents.push(componentName);
54
+ }
55
+ }
56
+ else if (componentName.startsWith(componentName[0].toUpperCase())) {
57
+ // No namespace - could be either, use naming convention
58
+ auraComponents.push(componentName);
59
+ }
60
+ else {
61
+ lwcComponents.push(componentName);
62
+ }
63
+ // Extract record type filters from visibility rules
64
+ if (item.componentInstance.visibilityRule) {
65
+ const criteria = normalizeArray(item.componentInstance.visibilityRule.criteria);
66
+ for (const criterion of criteria) {
67
+ // Check if criterion references RecordType
68
+ if (criterion.leftValue?.includes('RecordType') || criterion.rightValue?.includes('RecordType')) {
69
+ const rtValue = criterion.rightValue ?? criterion.leftValue;
70
+ if (rtValue && !rtValue.includes('RecordType')) {
71
+ recordTypes.push(rtValue);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ return {
79
+ lwc: lwcComponents,
80
+ aura: auraComponents,
81
+ recordTypes,
82
+ };
83
+ }
84
+ /**
85
+ * Extract components from all regions
86
+ */
87
+ function extractComponents(regions) {
88
+ const allLwc = [];
89
+ const allAura = [];
90
+ const allRecordTypes = [];
91
+ for (const region of regions) {
92
+ const items = normalizeArray(region.itemInstances);
93
+ const { lwc, aura, recordTypes } = extractComponentsFromItems(items);
94
+ allLwc.push(...lwc);
95
+ allAura.push(...aura);
96
+ allRecordTypes.push(...recordTypes);
97
+ }
98
+ return {
99
+ lwc: [...new Set(allLwc)],
100
+ aura: [...new Set(allAura)],
101
+ recordTypes: [...new Set(allRecordTypes)],
102
+ };
103
+ }
104
+ /**
105
+ * Extract quick actions from FlexiPage
106
+ */
107
+ function extractQuickActions(metadata) {
108
+ const quickActions = [];
109
+ if (metadata.quickActionList?.quickActionListItems) {
110
+ const items = normalizeArray(metadata.quickActionList.quickActionListItems);
111
+ for (const item of items) {
112
+ quickActions.push(item.quickActionName);
113
+ }
114
+ }
115
+ if (metadata.platformActionList?.platformActionListItems) {
116
+ const items = normalizeArray(metadata.platformActionList.platformActionListItems);
117
+ for (const item of items) {
118
+ if (item.actionType === 'QuickAction') {
119
+ quickActions.push(item.actionName);
120
+ }
121
+ }
122
+ }
123
+ return [...new Set(quickActions)];
124
+ }
125
+ /**
126
+ * Parse a FlexiPage metadata XML file
127
+ *
128
+ * @param filePath - Path to the .flexipage-meta.xml file
129
+ * @param flexiPageName - Name of the FlexiPage (typically from filename)
130
+ * @returns Parsed FlexiPage metadata with dependencies
131
+ *
132
+ * @example
133
+ * const result = await parseFlexiPage(
134
+ * 'force-app/main/default/flexipages/Account_Record_Page.flexipage-meta.xml',
135
+ * 'Account_Record_Page'
136
+ * );
137
+ * console.log(result.sobjectType); // 'Account'
138
+ * console.log(result.lwcComponents); // ['c:accountSummary', 'c:relatedContacts']
139
+ * console.log(result.dependencies.auraComponents); // ['c:AccountChart']
140
+ */
141
+ export async function parseFlexiPage(filePath, flexiPageName) {
142
+ // Read and parse XML
143
+ const xmlContent = await readFile(filePath, 'utf-8');
144
+ const parser = new XMLParser({
145
+ ignoreAttributes: false,
146
+ parseAttributeValue: true,
147
+ trimValues: true,
148
+ });
149
+ let parsed;
150
+ try {
151
+ parsed = parser.parse(xmlContent);
152
+ }
153
+ catch (error) {
154
+ throw new Error(`Failed to parse FlexiPage XML at ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
155
+ }
156
+ // Type assertion with validation
157
+ const root = parsed;
158
+ if (!root.FlexiPage) {
159
+ throw new Error(`Invalid FlexiPage XML structure at ${filePath}: missing FlexiPage root element`);
160
+ }
161
+ const metadata = root.FlexiPage;
162
+ // Extract regions
163
+ const regions = normalizeArray(metadata.flexiPageRegions);
164
+ const regionNames = regions.map((region) => region.name);
165
+ // Extract components
166
+ const { lwc, aura, recordTypes } = extractComponents(regions);
167
+ // Extract objects
168
+ const objects = [];
169
+ if (metadata.sobjectType) {
170
+ objects.push(metadata.sobjectType);
171
+ }
172
+ // Extract quick actions
173
+ const quickActions = extractQuickActions(metadata);
174
+ // Build result
175
+ return {
176
+ name: flexiPageName,
177
+ masterLabel: metadata.masterLabel,
178
+ type: metadata.type,
179
+ sobjectType: metadata.sobjectType,
180
+ lwcComponents: lwc,
181
+ auraComponents: aura,
182
+ objects,
183
+ recordTypeFilters: recordTypes,
184
+ regions: regionNames,
185
+ quickActions,
186
+ dependencies: {
187
+ lwcComponents: lwc,
188
+ auraComponents: aura,
189
+ objects,
190
+ recordTypes,
191
+ regions: regionNames,
192
+ quickActions,
193
+ },
194
+ };
195
+ }
196
+ //# sourceMappingURL=flexipage-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexipage-parser.js","sourceRoot":"","sources":["../../src/parsers/flexipage-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { FlowMetadata, FlowProcessType, FlowStatus } from '../types/salesforce/flow.js';
2
+ /**
3
+ * Flow dependency types
4
+ */
5
+ export type FlowDependencyType = 'apex_action' | 'subflow' | 'record' | 'genai_prompt' | 'screen_field' | 'decision';
6
+ /**
7
+ * Re-export FlowProcessType and FlowStatus from Salesforce types
8
+ */
9
+ export type { FlowProcessType, FlowStatus } from '../types/salesforce/flow.js';
10
+ /**
11
+ * Represents a dependency found in a Flow
12
+ */
13
+ export type FlowDependency = {
14
+ type: FlowDependencyType;
15
+ name: string;
16
+ reference?: string;
17
+ };
18
+ /**
19
+ * Result of parsing a Flow
20
+ * Optionally includes full metadata from Flow-meta.xml
21
+ */
22
+ export type FlowParseResult = {
23
+ flowName: string;
24
+ flowType?: FlowProcessType;
25
+ status?: FlowStatus;
26
+ apexActions: string[];
27
+ subflows: string[];
28
+ recordReferences: string[];
29
+ genaiPrompts: string[];
30
+ dependencies: FlowDependency[];
31
+ metadata?: FlowMetadata;
32
+ };
33
+ /**
34
+ * Parse a Flow file and extract dependencies
35
+ *
36
+ * @param filePath - Path to the Flow file (.flow-meta.xml)
37
+ * @param content - Content of the Flow file
38
+ * @returns FlowParseResult with all extracted dependencies
39
+ *
40
+ * @throws {ParsingError} If the file cannot be parsed
41
+ *
42
+ * @ac US-015-AC-7: Handle all flow types (screen, record-triggered, scheduled)
43
+ * @ac US-015-AC-8: Parse flow metadata XML correctly
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const result = parseFlow('MyFlow.flow-meta.xml', flowXmlContent);
48
+ * console.log(result.flowType); // 'Screen'
49
+ * console.log(result.apexActions); // ['MyApexClass.myMethod']
50
+ * console.log(result.subflows); // ['MySubflow']
51
+ * console.log(result.recordReferences); // ['Account', 'Contact']
52
+ * ```
53
+ */
54
+ export declare function parseFlow(filePath: string, content: string): FlowParseResult;