@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,368 @@
1
+ import { getLogger } from '../utils/logger.js';
2
+ import { ParsingError } from '../errors/parsing-error.js';
3
+ const logger = getLogger('ApexClassParser');
4
+ /**
5
+ * Standard Apex classes that should be ignored
6
+ */
7
+ const STANDARD_APEX_CLASSES = new Set([
8
+ 'System',
9
+ 'String',
10
+ 'Integer',
11
+ 'Boolean',
12
+ 'Date',
13
+ 'Datetime',
14
+ 'Time',
15
+ 'Decimal',
16
+ 'Double',
17
+ 'Long',
18
+ 'Id',
19
+ 'Blob',
20
+ 'Object',
21
+ 'List',
22
+ 'Set',
23
+ 'Map',
24
+ 'SObject',
25
+ 'Database',
26
+ 'Schema',
27
+ 'Test',
28
+ 'Limits',
29
+ 'ApexPages',
30
+ 'PageReference',
31
+ 'Trigger',
32
+ 'UserInfo',
33
+ 'Math',
34
+ 'Messaging',
35
+ 'Http',
36
+ 'HttpRequest',
37
+ 'HttpResponse',
38
+ 'JsonParser',
39
+ 'JsonGenerator',
40
+ 'JSON',
41
+ 'Pattern',
42
+ 'Matcher',
43
+ 'Exception',
44
+ 'DmlException',
45
+ 'QueryException',
46
+ 'NullPointerException',
47
+ 'TypeException',
48
+ 'CalloutException',
49
+ 'LimitException',
50
+ ]);
51
+ /**
52
+ * Remove comments from Apex code
53
+ *
54
+ * @ac US-013-AC-9: Remove comments before parsing
55
+ */
56
+ function removeComments(code) {
57
+ // Remove single-line comments (//)
58
+ let cleaned = code.replace(/\/\/.*$/gm, '');
59
+ // Remove multi-line comments (/* ... */)
60
+ cleaned = cleaned.replace(/\/\*[\s\S]*?\*\//g, '');
61
+ // Remove JavaDoc comments (/** ... */)
62
+ cleaned = cleaned.replace(/\/\*\*[\s\S]*?\*\//g, '');
63
+ return cleaned;
64
+ }
65
+ /**
66
+ * Check if a class is a standard Apex class
67
+ *
68
+ * @ac US-013-AC-7: Ignore standard classes (System.*, etc.)
69
+ */
70
+ function isStandardClass(className) {
71
+ // Remove namespace if present
72
+ const cleanName = className.includes('.') ? className.split('.').pop() : className;
73
+ // Check if it's in the standard classes set
74
+ if (STANDARD_APEX_CLASSES.has(cleanName)) {
75
+ return true;
76
+ }
77
+ // Check if it starts with a standard prefix
78
+ if (cleanName.startsWith('System.') ||
79
+ cleanName.startsWith('Database.') ||
80
+ cleanName.startsWith('Schema.') ||
81
+ cleanName.startsWith('Test.') ||
82
+ cleanName.startsWith('ApexPages.')) {
83
+ return true;
84
+ }
85
+ return false;
86
+ }
87
+ /**
88
+ * Extract namespace from a fully qualified class name
89
+ *
90
+ * @ac US-013-AC-8: Handle managed packages
91
+ */
92
+ function extractNamespace(className) {
93
+ // Pattern: Namespace__ClassName or Namespace.ClassName
94
+ const namespacePattern = /^([a-zA-Z][a-zA-Z0-9_]*(?:__|\.))(.+)$/;
95
+ const match = className.match(namespacePattern);
96
+ if (match) {
97
+ const namespace = match[1].replace(/__|\.$/g, '');
98
+ const cleanName = match[2];
99
+ const isManagedPackage = match[1].includes('__');
100
+ return { namespace, cleanName, isManagedPackage };
101
+ }
102
+ return { cleanName: className, isManagedPackage: false };
103
+ }
104
+ /**
105
+ * Extract extends relationship
106
+ *
107
+ * @ac US-013-AC-1: Extract extends relationships
108
+ */
109
+ function extractExtends(code) {
110
+ const extendsPattern = /class\s+\w+\s+extends\s+([a-zA-Z][a-zA-Z0-9_<>.,\s]*?)(?:\s+implements|\s*\{)/i;
111
+ const match = code.match(extendsPattern);
112
+ if (match) {
113
+ // Clean up generic types and whitespace
114
+ return match[1].replace(/<.*?>/g, '').trim();
115
+ }
116
+ return undefined;
117
+ }
118
+ /**
119
+ * Extract implements relationships
120
+ *
121
+ * @ac US-013-AC-2: Extract implements relationships
122
+ */
123
+ function extractImplements(code) {
124
+ const implementsPattern = /implements\s+([a-zA-Z][a-zA-Z0-9_<>.,\s]+?)(?:\s*\{)/gi;
125
+ const matches = code.matchAll(implementsPattern);
126
+ const interfaces = [];
127
+ for (const match of matches) {
128
+ // Split by comma to handle multiple interfaces
129
+ const interfaceList = match[1].split(',');
130
+ for (const iface of interfaceList) {
131
+ // Clean up generic types and whitespace
132
+ const cleanInterface = iface.replace(/<.*?>/g, '').trim();
133
+ if (cleanInterface && !interfaces.includes(cleanInterface)) {
134
+ interfaces.push(cleanInterface);
135
+ }
136
+ }
137
+ }
138
+ return interfaces;
139
+ }
140
+ /**
141
+ * Extract static method calls
142
+ *
143
+ * @ac US-013-AC-3: Extract static method calls
144
+ */
145
+ function extractStaticMethodCalls(code) {
146
+ const staticCallPattern = /([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*\.\s*[a-zA-Z][a-zA-Z0-9_]*\s*\(/g;
147
+ const matches = code.matchAll(staticCallPattern);
148
+ const dependencies = [];
149
+ const seen = new Set();
150
+ for (const match of matches) {
151
+ const className = match[1];
152
+ // Skip if already seen or is a standard class
153
+ if (seen.has(className) || isStandardClass(className)) {
154
+ continue;
155
+ }
156
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
157
+ seen.add(className);
158
+ dependencies.push({
159
+ type: 'static_method',
160
+ className: cleanName,
161
+ namespace,
162
+ isStandard: false,
163
+ isManagedPackage,
164
+ });
165
+ }
166
+ return dependencies;
167
+ }
168
+ /**
169
+ * Extract object instantiations (new ClassName())
170
+ *
171
+ * @ac US-013-AC-4: Extract object instantiations
172
+ */
173
+ function extractInstantiations(code) {
174
+ const newPattern = /new\s+([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*(?:<[^>]+>)?\s*\(/g;
175
+ const matches = code.matchAll(newPattern);
176
+ const dependencies = [];
177
+ const seen = new Set();
178
+ for (const match of matches) {
179
+ const className = match[1];
180
+ // Skip if already seen or is a standard class
181
+ if (seen.has(className) || isStandardClass(className)) {
182
+ continue;
183
+ }
184
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
185
+ seen.add(className);
186
+ dependencies.push({
187
+ type: 'instantiation',
188
+ className: cleanName,
189
+ namespace,
190
+ isStandard: false,
191
+ isManagedPackage,
192
+ });
193
+ }
194
+ return dependencies;
195
+ }
196
+ /**
197
+ * Extract variable declarations
198
+ *
199
+ * @ac US-013-AC-5: Extract variable declarations
200
+ */
201
+ function extractVariableDeclarations(code) {
202
+ // Pattern: ClassName variableName = ...
203
+ const varPattern = /(?:^|[;\s{])\s*([A-Z][a-zA-Z0-9_]*(?:\.[A-Z][a-zA-Z0-9_]*)*)\s+[a-z][a-zA-Z0-9_]*\s*[=;]/gm;
204
+ const matches = code.matchAll(varPattern);
205
+ const dependencies = [];
206
+ const seen = new Set();
207
+ for (const match of matches) {
208
+ const className = match[1];
209
+ // Skip if already seen or is a standard class
210
+ if (seen.has(className) || isStandardClass(className)) {
211
+ continue;
212
+ }
213
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
214
+ seen.add(className);
215
+ dependencies.push({
216
+ type: 'variable_declaration',
217
+ className: cleanName,
218
+ namespace,
219
+ isStandard: false,
220
+ isManagedPackage,
221
+ });
222
+ }
223
+ return dependencies;
224
+ }
225
+ /**
226
+ * Extract inner classes
227
+ *
228
+ * @ac US-013-AC-6: Handle inner classes
229
+ */
230
+ function extractInnerClasses(code, outerClassName) {
231
+ // Pattern: class InnerClassName { ... }
232
+ // More permissive: allows any combination of modifiers and keywords
233
+ const innerClassPattern = /\bclass\s+([a-zA-Z][a-zA-Z0-9_]*)\s*(?:extends|implements|\{)/g;
234
+ const matches = code.matchAll(innerClassPattern);
235
+ const innerClasses = [];
236
+ for (const match of matches) {
237
+ const className = match[1];
238
+ // Skip the outer class itself
239
+ if (className !== outerClassName && !innerClasses.includes(className)) {
240
+ innerClasses.push(className);
241
+ }
242
+ }
243
+ return innerClasses;
244
+ }
245
+ /**
246
+ * Extract Type.forName() dynamic instantiation
247
+ *
248
+ * @ac US-013-AC-10: Handle Type.forName() dynamic instantiation
249
+ */
250
+ function extractDynamicInstantiations(code) {
251
+ // Pattern: Type.forName('ClassName') or Type.forName("ClassName")
252
+ const typeForNamePattern = /Type\.forName\s*\(\s*['"]([a-zA-Z][a-zA-Z0-9_.]*)['"][\s)]/g;
253
+ const matches = code.matchAll(typeForNamePattern);
254
+ const dependencies = [];
255
+ const seen = new Set();
256
+ for (const match of matches) {
257
+ const className = match[1];
258
+ // Skip if already seen or is a standard class
259
+ if (seen.has(className) || isStandardClass(className)) {
260
+ continue;
261
+ }
262
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
263
+ seen.add(className);
264
+ dependencies.push({
265
+ type: 'dynamic_instantiation',
266
+ className: cleanName,
267
+ namespace,
268
+ isStandard: false,
269
+ isManagedPackage,
270
+ });
271
+ }
272
+ return dependencies;
273
+ }
274
+ /**
275
+ * Parse an Apex class file and extract dependencies
276
+ *
277
+ * @param filePath - Path to the Apex class file
278
+ * @param content - Content of the Apex class file
279
+ * @returns ApexParseResult with all extracted dependencies
280
+ *
281
+ * @throws {ParsingError} If the file cannot be parsed
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * const result = parseApexClass('MyController.cls', apexCode);
286
+ * console.log(result.extends); // 'BaseController'
287
+ * console.log(result.implements); // ['IController', 'ICallable']
288
+ * console.log(result.dependencies.length); // 5
289
+ * ```
290
+ */
291
+ export function parseApexClass(filePath, content) {
292
+ try {
293
+ logger.debug(`Parsing Apex class: ${filePath}`);
294
+ // Extract class name from file path
295
+ const classNameMatch = filePath.match(/([a-zA-Z][a-zA-Z0-9_]*)\.cls$/);
296
+ if (!classNameMatch) {
297
+ throw new ParsingError(`Invalid Apex class file name: ${filePath}`, {
298
+ filePath,
299
+ suggestion: 'Apex class files must end with .cls',
300
+ });
301
+ }
302
+ const className = classNameMatch[1];
303
+ // Remove comments
304
+ const cleanCode = removeComments(content);
305
+ // Extract namespace from class definition
306
+ const { namespace } = extractNamespace(className);
307
+ // Extract extends relationship
308
+ const extendsClass = extractExtends(cleanCode);
309
+ // Extract implements relationships
310
+ const implementsList = extractImplements(cleanCode);
311
+ // Extract all dependencies
312
+ const dependencies = [];
313
+ // Add extends as a dependency
314
+ if (extendsClass && !isStandardClass(extendsClass)) {
315
+ const { namespace: extNamespace, cleanName, isManagedPackage } = extractNamespace(extendsClass);
316
+ dependencies.push({
317
+ type: 'extends',
318
+ className: cleanName,
319
+ namespace: extNamespace,
320
+ isStandard: false,
321
+ isManagedPackage,
322
+ });
323
+ }
324
+ // Add implements as dependencies
325
+ for (const iface of implementsList) {
326
+ if (!isStandardClass(iface)) {
327
+ const { namespace: ifaceNamespace, cleanName, isManagedPackage } = extractNamespace(iface);
328
+ dependencies.push({
329
+ type: 'implements',
330
+ className: cleanName,
331
+ namespace: ifaceNamespace,
332
+ isStandard: false,
333
+ isManagedPackage,
334
+ });
335
+ }
336
+ }
337
+ // Extract and add other dependencies
338
+ dependencies.push(...extractStaticMethodCalls(cleanCode));
339
+ dependencies.push(...extractInstantiations(cleanCode));
340
+ dependencies.push(...extractVariableDeclarations(cleanCode));
341
+ dependencies.push(...extractDynamicInstantiations(cleanCode));
342
+ // Extract inner classes
343
+ const innerClasses = extractInnerClasses(cleanCode, className);
344
+ const result = {
345
+ className,
346
+ namespace,
347
+ extends: extendsClass,
348
+ implements: implementsList,
349
+ dependencies,
350
+ innerClasses,
351
+ };
352
+ logger.debug(`Parsed Apex class: ${className}`, {
353
+ dependencies: dependencies.length,
354
+ innerClasses: innerClasses.length,
355
+ });
356
+ return result;
357
+ }
358
+ catch (error) {
359
+ if (error instanceof ParsingError) {
360
+ throw error;
361
+ }
362
+ throw new ParsingError(`Failed to parse Apex class: ${filePath}`, {
363
+ filePath,
364
+ originalError: error instanceof Error ? error.message : String(error),
365
+ });
366
+ }
367
+ }
368
+ //# sourceMappingURL=apex-class-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-class-parser.js","sourceRoot":"","sources":["../../src/parsers/apex-class-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { ApexTriggerMetadata, ApexTriggerEvent } from '../types/salesforce/apex.js';
2
+ /**
3
+ * Re-export ApexTriggerEvent from Salesforce types for backwards compatibility
4
+ */
5
+ export type { ApexTriggerEvent as TriggerEvent } from '../types/salesforce/apex.js';
6
+ /**
7
+ * Apex trigger dependency types
8
+ */
9
+ export type TriggerDependencyType = 'handler' | 'variable_declaration';
10
+ /**
11
+ * Represents a dependency found in an Apex trigger
12
+ */
13
+ export type TriggerDependency = {
14
+ type: TriggerDependencyType;
15
+ className: string;
16
+ namespace?: string;
17
+ isManagedPackage: boolean;
18
+ };
19
+ /**
20
+ * Result of parsing an Apex trigger
21
+ * Optionally includes metadata from .trigger-meta.xml
22
+ */
23
+ export type TriggerParseResult = {
24
+ triggerName: string;
25
+ sobjectType: string;
26
+ events: ApexTriggerEvent[];
27
+ handlers: TriggerDependency[];
28
+ dependencies: TriggerDependency[];
29
+ metadata?: ApexTriggerMetadata;
30
+ };
31
+ /**
32
+ * Parse an Apex trigger file and extract dependencies
33
+ *
34
+ * @param filePath - Path to the Apex trigger file
35
+ * @param content - Content of the Apex trigger file
36
+ * @returns TriggerParseResult with all extracted dependencies
37
+ *
38
+ * @throws {ParsingError} If the file cannot be parsed
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const result = parseApexTrigger('AccountTrigger.trigger', triggerCode);
43
+ * console.log(result.sobjectType); // 'Account'
44
+ * console.log(result.events); // ['before insert', 'after update']
45
+ * console.log(result.handlers); // [{ type: 'handler', className: 'AccountTriggerHandler', ... }]
46
+ * ```
47
+ */
48
+ export declare function parseApexTrigger(filePath: string, content: string): TriggerParseResult;
@@ -0,0 +1,229 @@
1
+ import { getLogger } from '../utils/logger.js';
2
+ import { ParsingError } from '../errors/parsing-error.js';
3
+ const logger = getLogger('ApexTriggerParser');
4
+ /**
5
+ * Standard Apex classes that should be ignored
6
+ */
7
+ const STANDARD_APEX_CLASSES = new Set([
8
+ 'System',
9
+ 'String',
10
+ 'Integer',
11
+ 'Boolean',
12
+ 'Date',
13
+ 'Datetime',
14
+ 'Time',
15
+ 'Decimal',
16
+ 'Double',
17
+ 'Long',
18
+ 'Id',
19
+ 'Blob',
20
+ 'Object',
21
+ 'List',
22
+ 'Set',
23
+ 'Map',
24
+ 'SObject',
25
+ 'Database',
26
+ 'Schema',
27
+ 'Test',
28
+ 'Trigger',
29
+ ]);
30
+ /**
31
+ * Remove comments from Apex code
32
+ */
33
+ function removeComments(code) {
34
+ // Remove single-line comments (//)
35
+ let cleaned = code.replace(/\/\/.*$/gm, '');
36
+ // Remove multi-line comments (/* ... */)
37
+ cleaned = cleaned.replace(/\/\*[\s\S]*?\*\//g, '');
38
+ // Remove JavaDoc comments (/** ... */)
39
+ cleaned = cleaned.replace(/\/\*\*[\s\S]*?\*\//g, '');
40
+ return cleaned;
41
+ }
42
+ /**
43
+ * Check if a class is a standard Apex class
44
+ */
45
+ function isStandardClass(className) {
46
+ // Remove namespace if present
47
+ const cleanName = className.includes('.') ? className.split('.').pop() : className;
48
+ return STANDARD_APEX_CLASSES.has(cleanName);
49
+ }
50
+ /**
51
+ * Extract namespace from a fully qualified class name
52
+ */
53
+ function extractNamespace(className) {
54
+ // Pattern: Namespace__ClassName or Namespace.ClassName
55
+ const namespacePattern = /^([a-zA-Z][a-zA-Z0-9_]*(?:__|\.))(.+)$/;
56
+ const match = className.match(namespacePattern);
57
+ if (match) {
58
+ const namespace = match[1].replace(/__|\.$/g, '');
59
+ const cleanName = match[2];
60
+ const isManagedPackage = match[1].includes('__');
61
+ return { namespace, cleanName, isManagedPackage };
62
+ }
63
+ return { cleanName: className, isManagedPackage: false };
64
+ }
65
+ /**
66
+ * Extract trigger declaration (name, object, events)
67
+ *
68
+ * @ac US-014-AC-1: Extract trigger object (Account, etc.)
69
+ * @ac US-014-AC-3: Detect trigger events (before insert, etc.)
70
+ */
71
+ function extractTriggerDeclaration(code, filePath) {
72
+ // Pattern: trigger TriggerName on SObjectType (event1, event2, ...)
73
+ const triggerPattern = /trigger\s+([a-zA-Z][a-zA-Z0-9_]*)\s+on\s+([a-zA-Z][a-zA-Z0-9_]*)\s*\(\s*([^)]+)\s*\)/i;
74
+ const match = code.match(triggerPattern);
75
+ if (!match) {
76
+ throw new ParsingError(`Invalid trigger declaration: ${filePath}`, {
77
+ filePath,
78
+ suggestion: 'Trigger files must have format: trigger TriggerName on SObjectType (events)',
79
+ });
80
+ }
81
+ const triggerName = match[1];
82
+ const sobjectType = match[2];
83
+ const eventsStr = match[3];
84
+ // Parse events (before insert, after update, etc.)
85
+ const eventsList = eventsStr
86
+ .split(',')
87
+ .map((e) => e.trim().toLowerCase())
88
+ .filter((e) => e.length > 0);
89
+ return { triggerName, sobjectType, events: eventsList };
90
+ }
91
+ /**
92
+ * Extract handler class references
93
+ *
94
+ * @ac US-014-AC-2: Extract handler class references
95
+ * @ac US-014-AC-4: Link trigger to handler classes
96
+ * @ac US-014-AC-5: Handle multiple handlers per trigger
97
+ */
98
+ function extractHandlers(code) {
99
+ const handlers = [];
100
+ const seen = new Set();
101
+ // Pattern 1: ClassName.methodName(...) - Static method calls
102
+ const staticMethodPattern = /([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*\.\s*[a-zA-Z][a-zA-Z0-9_]*\s*\(/g;
103
+ const staticMatches = code.matchAll(staticMethodPattern);
104
+ for (const match of staticMatches) {
105
+ const className = match[1];
106
+ // Skip if already seen or is a standard class
107
+ if (seen.has(className) || isStandardClass(className)) {
108
+ continue;
109
+ }
110
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
111
+ seen.add(className);
112
+ handlers.push({
113
+ type: 'handler',
114
+ className: cleanName,
115
+ namespace,
116
+ isManagedPackage,
117
+ });
118
+ }
119
+ // Pattern 2: new ClassName() - Instantiations (for framework patterns)
120
+ const instantiationPattern = /new\s+([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)\s*\(/g;
121
+ const instantiationMatches = code.matchAll(instantiationPattern);
122
+ for (const match of instantiationMatches) {
123
+ const className = match[1];
124
+ // Skip if already seen or is a standard class
125
+ if (seen.has(className) || isStandardClass(className)) {
126
+ continue;
127
+ }
128
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
129
+ seen.add(className);
130
+ handlers.push({
131
+ type: 'handler',
132
+ className: cleanName,
133
+ namespace,
134
+ isManagedPackage,
135
+ });
136
+ }
137
+ return handlers;
138
+ }
139
+ /**
140
+ * Extract variable declarations
141
+ *
142
+ * @ac US-014-AC-6: Extract variable declarations
143
+ */
144
+ function extractVariableDeclarations(code) {
145
+ // Pattern: ClassName variableName = ...
146
+ const varPattern = /(?:^|[;\s{])\s*([A-Z][a-zA-Z0-9_]*(?:\.[A-Z][a-zA-Z0-9_]*)*)\s+[a-z][a-zA-Z0-9_]*\s*[=;]/gm;
147
+ const matches = code.matchAll(varPattern);
148
+ const dependencies = [];
149
+ const seen = new Set();
150
+ for (const match of matches) {
151
+ const className = match[1];
152
+ // Skip if already seen or is a standard class
153
+ if (seen.has(className) || isStandardClass(className)) {
154
+ continue;
155
+ }
156
+ const { namespace, cleanName, isManagedPackage } = extractNamespace(className);
157
+ seen.add(className);
158
+ dependencies.push({
159
+ type: 'variable_declaration',
160
+ className: cleanName,
161
+ namespace,
162
+ isManagedPackage,
163
+ });
164
+ }
165
+ return dependencies;
166
+ }
167
+ /**
168
+ * Parse an Apex trigger file and extract dependencies
169
+ *
170
+ * @param filePath - Path to the Apex trigger file
171
+ * @param content - Content of the Apex trigger file
172
+ * @returns TriggerParseResult with all extracted dependencies
173
+ *
174
+ * @throws {ParsingError} If the file cannot be parsed
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * const result = parseApexTrigger('AccountTrigger.trigger', triggerCode);
179
+ * console.log(result.sobjectType); // 'Account'
180
+ * console.log(result.events); // ['before insert', 'after update']
181
+ * console.log(result.handlers); // [{ type: 'handler', className: 'AccountTriggerHandler', ... }]
182
+ * ```
183
+ */
184
+ export function parseApexTrigger(filePath, content) {
185
+ try {
186
+ logger.debug(`Parsing Apex trigger: ${filePath}`);
187
+ // Validate file extension
188
+ if (!filePath.endsWith('.trigger')) {
189
+ throw new ParsingError(`Invalid Apex trigger file name: ${filePath}`, {
190
+ filePath,
191
+ suggestion: 'Apex trigger files must end with .trigger',
192
+ });
193
+ }
194
+ // Remove comments
195
+ const cleanCode = removeComments(content);
196
+ // Extract trigger declaration
197
+ const { triggerName, sobjectType, events } = extractTriggerDeclaration(cleanCode, filePath);
198
+ // Extract handler class references
199
+ const handlers = extractHandlers(cleanCode);
200
+ // Extract variable declarations
201
+ const varDecls = extractVariableDeclarations(cleanCode);
202
+ // Combine all dependencies
203
+ const dependencies = [...handlers, ...varDecls];
204
+ const result = {
205
+ triggerName,
206
+ sobjectType,
207
+ events,
208
+ handlers,
209
+ dependencies,
210
+ };
211
+ logger.debug(`Parsed Apex trigger: ${triggerName}`, {
212
+ sobjectType,
213
+ events: events.length,
214
+ handlers: handlers.length,
215
+ dependencies: dependencies.length,
216
+ });
217
+ return result;
218
+ }
219
+ catch (error) {
220
+ if (error instanceof ParsingError) {
221
+ throw error;
222
+ }
223
+ throw new ParsingError(`Failed to parse Apex trigger: ${filePath}`, {
224
+ filePath,
225
+ originalError: error instanceof Error ? error.message : String(error),
226
+ });
227
+ }
228
+ }
229
+ //# sourceMappingURL=apex-trigger-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apex-trigger-parser.js","sourceRoot":"","sources":["../../src/parsers/apex-trigger-parser.ts"],"names":[],"mappings":"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"}