@webiny/api-workflows 6.3.0 → 6.4.0-beta.0

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 (308) hide show
  1. package/constants.js +4 -3
  2. package/constants.js.map +1 -1
  3. package/domain/notifications/abstractions.js +8 -7
  4. package/domain/notifications/abstractions.js.map +1 -1
  5. package/domain/notifications/errors.js +7 -7
  6. package/domain/notifications/errors.js.map +1 -1
  7. package/domain/workflow/WorkflowMapper.js +22 -23
  8. package/domain/workflow/WorkflowMapper.js.map +1 -1
  9. package/domain/workflow/abstractions.js +3 -3
  10. package/domain/workflow/abstractions.js.map +1 -1
  11. package/domain/workflow/errors.js +26 -29
  12. package/domain/workflow/errors.js.map +1 -1
  13. package/domain/workflow/workflowModel.js +27 -25
  14. package/domain/workflow/workflowModel.js.map +1 -1
  15. package/domain/workflowState/WorkflowState.js +216 -319
  16. package/domain/workflowState/WorkflowState.js.map +1 -1
  17. package/domain/workflowState/WorkflowStateMapper.js +36 -35
  18. package/domain/workflowState/WorkflowStateMapper.js.map +1 -1
  19. package/domain/workflowState/abstractions.js +9 -9
  20. package/domain/workflowState/abstractions.js.map +1 -1
  21. package/domain/workflowState/errors.js +109 -122
  22. package/domain/workflowState/errors.js.map +1 -1
  23. package/domain/workflowState/guards/canReview.js +2 -3
  24. package/domain/workflowState/guards/canReview.js.map +1 -1
  25. package/domain/workflowState/guards/canTakeOver.js +2 -3
  26. package/domain/workflowState/guards/canTakeOver.js.map +1 -1
  27. package/domain/workflowState/guards/isInReview.js +2 -3
  28. package/domain/workflowState/guards/isInReview.js.map +1 -1
  29. package/domain/workflowState/guards/isRejected.js +2 -3
  30. package/domain/workflowState/guards/isRejected.js.map +1 -1
  31. package/domain/workflowState/guards/isStepOwner.js +2 -3
  32. package/domain/workflowState/guards/isStepOwner.js.map +1 -1
  33. package/domain/workflowState/stateModel.js +59 -51
  34. package/domain/workflowState/stateModel.js.map +1 -1
  35. package/features/internal/GetUserTeams/GetUserTeamsUseCase.js +20 -27
  36. package/features/internal/GetUserTeams/GetUserTeamsUseCase.js.map +1 -1
  37. package/features/internal/GetUserTeams/abstractions.js +2 -1
  38. package/features/internal/GetUserTeams/abstractions.js.map +1 -1
  39. package/features/internal/GetUserTeams/feature.js +6 -5
  40. package/features/internal/GetUserTeams/feature.js.map +1 -1
  41. package/features/internal/GetUserTeams/index.js +0 -2
  42. package/features/notifications/ListNotificationTypes/ListNotificationTypesRepository.js +21 -17
  43. package/features/notifications/ListNotificationTypes/ListNotificationTypesRepository.js.map +1 -1
  44. package/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js +22 -27
  45. package/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js.map +1 -1
  46. package/features/notifications/ListNotificationTypes/abstractions.js +3 -12
  47. package/features/notifications/ListNotificationTypes/abstractions.js.map +1 -1
  48. package/features/notifications/ListNotificationTypes/feature.js +7 -6
  49. package/features/notifications/ListNotificationTypes/feature.js.map +1 -1
  50. package/features/notifications/ListNotificationTypes/index.js +0 -2
  51. package/features/notifications/NotificationTransport/MailNotificationTransport.js +29 -38
  52. package/features/notifications/NotificationTransport/MailNotificationTransport.js.map +1 -1
  53. package/features/notifications/NotificationTransport/abstractions.js +2 -1
  54. package/features/notifications/NotificationTransport/abstractions.js.map +1 -1
  55. package/features/notifications/NotificationTransport/feature.js +6 -5
  56. package/features/notifications/NotificationTransport/feature.js.map +1 -1
  57. package/features/notifications/NotificationTransport/index.js +0 -2
  58. package/features/shared/abstractions.js +0 -3
  59. package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +35 -34
  60. package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js.map +1 -1
  61. package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js +38 -42
  62. package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js.map +1 -1
  63. package/features/workflow/CreateWorkflow/abstractions.js +3 -16
  64. package/features/workflow/CreateWorkflow/abstractions.js.map +1 -1
  65. package/features/workflow/CreateWorkflow/events.js +17 -14
  66. package/features/workflow/CreateWorkflow/events.js.map +1 -1
  67. package/features/workflow/CreateWorkflow/feature.js +7 -6
  68. package/features/workflow/CreateWorkflow/feature.js.map +1 -1
  69. package/features/workflow/CreateWorkflow/index.js +2 -4
  70. package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +24 -22
  71. package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js.map +1 -1
  72. package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js +38 -43
  73. package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js.map +1 -1
  74. package/features/workflow/DeleteWorkflow/abstractions.js +3 -16
  75. package/features/workflow/DeleteWorkflow/abstractions.js.map +1 -1
  76. package/features/workflow/DeleteWorkflow/events.js +17 -14
  77. package/features/workflow/DeleteWorkflow/events.js.map +1 -1
  78. package/features/workflow/DeleteWorkflow/feature.js +7 -6
  79. package/features/workflow/DeleteWorkflow/feature.js.map +1 -1
  80. package/features/workflow/DeleteWorkflow/index.js +2 -4
  81. package/features/workflow/GetWorkflow/GetWorkflowRepository.js +33 -34
  82. package/features/workflow/GetWorkflow/GetWorkflowRepository.js.map +1 -1
  83. package/features/workflow/GetWorkflow/GetWorkflowUseCase.js +21 -23
  84. package/features/workflow/GetWorkflow/GetWorkflowUseCase.js.map +1 -1
  85. package/features/workflow/GetWorkflow/abstractions.js +3 -12
  86. package/features/workflow/GetWorkflow/abstractions.js.map +1 -1
  87. package/features/workflow/GetWorkflow/feature.js +7 -6
  88. package/features/workflow/GetWorkflow/feature.js.map +1 -1
  89. package/features/workflow/GetWorkflow/index.js +0 -2
  90. package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +47 -52
  91. package/features/workflow/ListWorkflows/ListWorkflowsRepository.js.map +1 -1
  92. package/features/workflow/ListWorkflows/ListWorkflowsUseCase.js +14 -13
  93. package/features/workflow/ListWorkflows/ListWorkflowsUseCase.js.map +1 -1
  94. package/features/workflow/ListWorkflows/abstractions.js +3 -12
  95. package/features/workflow/ListWorkflows/abstractions.js.map +1 -1
  96. package/features/workflow/ListWorkflows/feature.js +7 -6
  97. package/features/workflow/ListWorkflows/feature.js.map +1 -1
  98. package/features/workflow/ListWorkflows/index.js +0 -2
  99. package/features/workflow/StoreWorkflow/StoreWorkflowUseCase.js +24 -26
  100. package/features/workflow/StoreWorkflow/StoreWorkflowUseCase.js.map +1 -1
  101. package/features/workflow/StoreWorkflow/abstractions.js +2 -8
  102. package/features/workflow/StoreWorkflow/abstractions.js.map +1 -1
  103. package/features/workflow/StoreWorkflow/feature.js +8 -10
  104. package/features/workflow/StoreWorkflow/feature.js.map +1 -1
  105. package/features/workflow/StoreWorkflow/index.js +0 -2
  106. package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +38 -37
  107. package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js.map +1 -1
  108. package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js +40 -44
  109. package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js.map +1 -1
  110. package/features/workflow/UpdateWorkflow/abstractions.js +3 -16
  111. package/features/workflow/UpdateWorkflow/abstractions.js.map +1 -1
  112. package/features/workflow/UpdateWorkflow/events.js +17 -14
  113. package/features/workflow/UpdateWorkflow/events.js.map +1 -1
  114. package/features/workflow/UpdateWorkflow/feature.js +7 -6
  115. package/features/workflow/UpdateWorkflow/feature.js.map +1 -1
  116. package/features/workflow/UpdateWorkflow/index.js +2 -4
  117. package/features/workflowState/ApproveWorkflowStateStep/ApproveWorkflowStateStepUseCase.js +26 -27
  118. package/features/workflowState/ApproveWorkflowStateStep/ApproveWorkflowStateStepUseCase.js.map +1 -1
  119. package/features/workflowState/ApproveWorkflowStateStep/abstractions.js +2 -1
  120. package/features/workflowState/ApproveWorkflowStateStep/abstractions.js.map +1 -1
  121. package/features/workflowState/ApproveWorkflowStateStep/events.js +9 -6
  122. package/features/workflowState/ApproveWorkflowStateStep/events.js.map +1 -1
  123. package/features/workflowState/ApproveWorkflowStateStep/feature.js +6 -5
  124. package/features/workflowState/ApproveWorkflowStateStep/feature.js.map +1 -1
  125. package/features/workflowState/ApproveWorkflowStateStep/index.js +0 -2
  126. package/features/workflowState/CancelWorkflowState/CancelWorkflowStateUseCase.js +21 -19
  127. package/features/workflowState/CancelWorkflowState/CancelWorkflowStateUseCase.js.map +1 -1
  128. package/features/workflowState/CancelWorkflowState/abstractions.js +2 -6
  129. package/features/workflowState/CancelWorkflowState/abstractions.js.map +1 -1
  130. package/features/workflowState/CancelWorkflowState/events.js +9 -6
  131. package/features/workflowState/CancelWorkflowState/events.js.map +1 -1
  132. package/features/workflowState/CancelWorkflowState/feature.js +6 -5
  133. package/features/workflowState/CancelWorkflowState/feature.js.map +1 -1
  134. package/features/workflowState/CancelWorkflowState/index.js +0 -2
  135. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +25 -22
  136. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
  137. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js +78 -90
  138. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js.map +1 -1
  139. package/features/workflowState/CreateWorkflowState/abstractions.js +3 -12
  140. package/features/workflowState/CreateWorkflowState/abstractions.js.map +1 -1
  141. package/features/workflowState/CreateWorkflowState/events.js +9 -6
  142. package/features/workflowState/CreateWorkflowState/events.js.map +1 -1
  143. package/features/workflowState/CreateWorkflowState/feature.js +7 -6
  144. package/features/workflowState/CreateWorkflowState/feature.js.map +1 -1
  145. package/features/workflowState/CreateWorkflowState/index.js +1 -3
  146. package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js +44 -42
  147. package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js.map +1 -1
  148. package/features/workflowState/DeleteTargetWorkflowState/abstractions.js +2 -1
  149. package/features/workflowState/DeleteTargetWorkflowState/abstractions.js.map +1 -1
  150. package/features/workflowState/DeleteTargetWorkflowState/events.js +9 -6
  151. package/features/workflowState/DeleteTargetWorkflowState/events.js.map +1 -1
  152. package/features/workflowState/DeleteTargetWorkflowState/feature.js +6 -5
  153. package/features/workflowState/DeleteTargetWorkflowState/feature.js.map +1 -1
  154. package/features/workflowState/DeleteTargetWorkflowState/index.js +0 -2
  155. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +16 -12
  156. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js.map +1 -1
  157. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateUseCase.js +22 -21
  158. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateUseCase.js.map +1 -1
  159. package/features/workflowState/DeleteWorkflowState/abstractions.js +3 -2
  160. package/features/workflowState/DeleteWorkflowState/abstractions.js.map +1 -1
  161. package/features/workflowState/DeleteWorkflowState/feature.js +7 -6
  162. package/features/workflowState/DeleteWorkflowState/feature.js.map +1 -1
  163. package/features/workflowState/DeleteWorkflowState/index.js +1 -3
  164. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +39 -43
  165. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js.map +1 -1
  166. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js +24 -25
  167. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js.map +1 -1
  168. package/features/workflowState/GetTargetWorkflowState/abstractions.js +3 -12
  169. package/features/workflowState/GetTargetWorkflowState/abstractions.js.map +1 -1
  170. package/features/workflowState/GetTargetWorkflowState/feature.js +7 -6
  171. package/features/workflowState/GetTargetWorkflowState/feature.js.map +1 -1
  172. package/features/workflowState/GetTargetWorkflowState/index.js +1 -3
  173. package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +26 -23
  174. package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js.map +1 -1
  175. package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js +23 -20
  176. package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js.map +1 -1
  177. package/features/workflowState/GetWorkflowState/abstractions.js +3 -12
  178. package/features/workflowState/GetWorkflowState/abstractions.js.map +1 -1
  179. package/features/workflowState/GetWorkflowState/feature.js +7 -6
  180. package/features/workflowState/GetWorkflowState/feature.js.map +1 -1
  181. package/features/workflowState/GetWorkflowState/index.js +1 -3
  182. package/features/workflowState/ListOwnWorkflowStates/ListOwnWorkflowStatesUseCase.js +33 -32
  183. package/features/workflowState/ListOwnWorkflowStates/ListOwnWorkflowStatesUseCase.js.map +1 -1
  184. package/features/workflowState/ListOwnWorkflowStates/abstractions.js +2 -6
  185. package/features/workflowState/ListOwnWorkflowStates/abstractions.js.map +1 -1
  186. package/features/workflowState/ListOwnWorkflowStates/feature.js +6 -5
  187. package/features/workflowState/ListOwnWorkflowStates/feature.js.map +1 -1
  188. package/features/workflowState/ListOwnWorkflowStates/index.js +0 -2
  189. package/features/workflowState/ListRequestedWorkflowStates/ListRequestedWorkflowStatesUseCase.js +41 -38
  190. package/features/workflowState/ListRequestedWorkflowStates/ListRequestedWorkflowStatesUseCase.js.map +1 -1
  191. package/features/workflowState/ListRequestedWorkflowStates/abstractions.js +2 -6
  192. package/features/workflowState/ListRequestedWorkflowStates/abstractions.js.map +1 -1
  193. package/features/workflowState/ListRequestedWorkflowStates/feature.js +6 -5
  194. package/features/workflowState/ListRequestedWorkflowStates/feature.js.map +1 -1
  195. package/features/workflowState/ListRequestedWorkflowStates/index.js +0 -2
  196. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +35 -32
  197. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
  198. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js +26 -26
  199. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js.map +1 -1
  200. package/features/workflowState/ListWorkflowStates/abstractions.js +3 -12
  201. package/features/workflowState/ListWorkflowStates/abstractions.js.map +1 -1
  202. package/features/workflowState/ListWorkflowStates/feature.js +7 -6
  203. package/features/workflowState/ListWorkflowStates/feature.js.map +1 -1
  204. package/features/workflowState/ListWorkflowStates/index.js +1 -3
  205. package/features/workflowState/RejectWorkflowStateStep/RejectWorkflowStateStepUseCase.js +26 -27
  206. package/features/workflowState/RejectWorkflowStateStep/RejectWorkflowStateStepUseCase.js.map +1 -1
  207. package/features/workflowState/RejectWorkflowStateStep/abstractions.js +2 -1
  208. package/features/workflowState/RejectWorkflowStateStep/abstractions.js.map +1 -1
  209. package/features/workflowState/RejectWorkflowStateStep/events.js +9 -6
  210. package/features/workflowState/RejectWorkflowStateStep/events.js.map +1 -1
  211. package/features/workflowState/RejectWorkflowStateStep/feature.js +6 -5
  212. package/features/workflowState/RejectWorkflowStateStep/feature.js.map +1 -1
  213. package/features/workflowState/RejectWorkflowStateStep/index.js +0 -2
  214. package/features/workflowState/StartWorkflowStateStep/StartWorkflowStateStepUseCase.js +26 -27
  215. package/features/workflowState/StartWorkflowStateStep/StartWorkflowStateStepUseCase.js.map +1 -1
  216. package/features/workflowState/StartWorkflowStateStep/abstractions.js +2 -1
  217. package/features/workflowState/StartWorkflowStateStep/abstractions.js.map +1 -1
  218. package/features/workflowState/StartWorkflowStateStep/events.js +9 -6
  219. package/features/workflowState/StartWorkflowStateStep/events.js.map +1 -1
  220. package/features/workflowState/StartWorkflowStateStep/feature.js +6 -5
  221. package/features/workflowState/StartWorkflowStateStep/feature.js.map +1 -1
  222. package/features/workflowState/StartWorkflowStateStep/index.js +0 -2
  223. package/features/workflowState/TakeOverWorkflowStateStep/TakeOverWorkflowStateStepUseCase.js +26 -27
  224. package/features/workflowState/TakeOverWorkflowStateStep/TakeOverWorkflowStateStepUseCase.js.map +1 -1
  225. package/features/workflowState/TakeOverWorkflowStateStep/abstractions.js +2 -1
  226. package/features/workflowState/TakeOverWorkflowStateStep/abstractions.js.map +1 -1
  227. package/features/workflowState/TakeOverWorkflowStateStep/events.js +9 -6
  228. package/features/workflowState/TakeOverWorkflowStateStep/events.js.map +1 -1
  229. package/features/workflowState/TakeOverWorkflowStateStep/feature.js +6 -5
  230. package/features/workflowState/TakeOverWorkflowStateStep/feature.js.map +1 -1
  231. package/features/workflowState/TakeOverWorkflowStateStep/index.js +0 -2
  232. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +39 -37
  233. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js.map +1 -1
  234. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js +43 -41
  235. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js.map +1 -1
  236. package/features/workflowState/UpdateWorkflowState/abstractions.js +3 -12
  237. package/features/workflowState/UpdateWorkflowState/abstractions.js.map +1 -1
  238. package/features/workflowState/UpdateWorkflowState/events.js +9 -6
  239. package/features/workflowState/UpdateWorkflowState/events.js.map +1 -1
  240. package/features/workflowState/UpdateWorkflowState/feature.js +7 -6
  241. package/features/workflowState/UpdateWorkflowState/feature.js.map +1 -1
  242. package/features/workflowState/UpdateWorkflowState/index.js +1 -3
  243. package/graphql/notifications.js +21 -24
  244. package/graphql/notifications.js.map +1 -1
  245. package/graphql/validation/approveWorkflowState.js +4 -3
  246. package/graphql/validation/approveWorkflowState.js.map +1 -1
  247. package/graphql/validation/cancelWorkflowState.js +3 -2
  248. package/graphql/validation/cancelWorkflowState.js.map +1 -1
  249. package/graphql/validation/createWorkflowState.js +5 -4
  250. package/graphql/validation/createWorkflowState.js.map +1 -1
  251. package/graphql/validation/deleteWorkflow.js +4 -3
  252. package/graphql/validation/deleteWorkflow.js.map +1 -1
  253. package/graphql/validation/getTargetWorkflowState.js +4 -3
  254. package/graphql/validation/getTargetWorkflowState.js.map +1 -1
  255. package/graphql/validation/getWorkflow.js +4 -3
  256. package/graphql/validation/getWorkflow.js.map +1 -1
  257. package/graphql/validation/getWorkflowState.js +3 -2
  258. package/graphql/validation/getWorkflowState.js.map +1 -1
  259. package/graphql/validation/listWorkflowStates.d.ts +4 -4
  260. package/graphql/validation/listWorkflowStates.js +30 -36
  261. package/graphql/validation/listWorkflowStates.js.map +1 -1
  262. package/graphql/validation/listWorkflows.js +15 -18
  263. package/graphql/validation/listWorkflows.js.map +1 -1
  264. package/graphql/validation/rejectWorkflowState.js +4 -3
  265. package/graphql/validation/rejectWorkflowState.js.map +1 -1
  266. package/graphql/validation/startWorkflowState.js +3 -2
  267. package/graphql/validation/startWorkflowState.js.map +1 -1
  268. package/graphql/validation/step.js +12 -17
  269. package/graphql/validation/step.js.map +1 -1
  270. package/graphql/validation/storeWorkflow.js +5 -4
  271. package/graphql/validation/storeWorkflow.js.map +1 -1
  272. package/graphql/validation/takeOverWorkflowStateStep.js +3 -2
  273. package/graphql/validation/takeOverWorkflowStateStep.js.map +1 -1
  274. package/graphql/validation/workflow.js +4 -5
  275. package/graphql/validation/workflow.js.map +1 -1
  276. package/graphql/workflowState.js +132 -202
  277. package/graphql/workflowState.js.map +1 -1
  278. package/graphql/workflows.js +54 -79
  279. package/graphql/workflows.js.map +1 -1
  280. package/index.js +53 -67
  281. package/index.js.map +1 -1
  282. package/package.json +16 -16
  283. package/types.js +0 -3
  284. package/features/internal/GetUserTeams/index.js.map +0 -1
  285. package/features/notifications/ListNotificationTypes/index.js.map +0 -1
  286. package/features/notifications/NotificationTransport/index.js.map +0 -1
  287. package/features/shared/abstractions.js.map +0 -1
  288. package/features/workflow/CreateWorkflow/index.js.map +0 -1
  289. package/features/workflow/DeleteWorkflow/index.js.map +0 -1
  290. package/features/workflow/GetWorkflow/index.js.map +0 -1
  291. package/features/workflow/ListWorkflows/index.js.map +0 -1
  292. package/features/workflow/StoreWorkflow/index.js.map +0 -1
  293. package/features/workflow/UpdateWorkflow/index.js.map +0 -1
  294. package/features/workflowState/ApproveWorkflowStateStep/index.js.map +0 -1
  295. package/features/workflowState/CancelWorkflowState/index.js.map +0 -1
  296. package/features/workflowState/CreateWorkflowState/index.js.map +0 -1
  297. package/features/workflowState/DeleteTargetWorkflowState/index.js.map +0 -1
  298. package/features/workflowState/DeleteWorkflowState/index.js.map +0 -1
  299. package/features/workflowState/GetTargetWorkflowState/index.js.map +0 -1
  300. package/features/workflowState/GetWorkflowState/index.js.map +0 -1
  301. package/features/workflowState/ListOwnWorkflowStates/index.js.map +0 -1
  302. package/features/workflowState/ListRequestedWorkflowStates/index.js.map +0 -1
  303. package/features/workflowState/ListWorkflowStates/index.js.map +0 -1
  304. package/features/workflowState/RejectWorkflowStateStep/index.js.map +0 -1
  305. package/features/workflowState/StartWorkflowStateStep/index.js.map +0 -1
  306. package/features/workflowState/TakeOverWorkflowStateStep/index.js.map +0 -1
  307. package/features/workflowState/UpdateWorkflowState/index.js.map +0 -1
  308. package/types.js.map +0 -1
@@ -1,47 +1,38 @@
1
1
  import { MailerService } from "@webiny/api-mailer";
2
2
  import { NotificationTransport } from "./abstractions.js";
3
3
  class MailNotificationTransportImpl {
4
- id = "e-mail";
5
- title = "E-Mail";
6
- constructor(mailer) {
7
- this.mailer = mailer;
8
- }
9
- async send(params) {
10
- const {
11
- users,
12
- message
13
- } = params;
14
- const bcc = users.map(user => {
15
- if (!user.displayName) {
16
- return user.email;
17
- }
18
- return `"${user.displayName}" <${user.email}>`;
19
- })
20
- /**
21
- * Just in case...
22
- */.filter(user => !!user);
23
- if (bcc.length === 0) {
24
- return;
4
+ constructor(mailer){
5
+ this.id = "e-mail";
6
+ this.title = "E-Mail";
7
+ this.mailer = mailer;
25
8
  }
26
- const result = await this.mailer.sendMail({
27
- bcc,
28
- subject: message.title,
29
- text: message.body,
30
- html: `<p>${message.body.replace(/\n/g, "<br/>")}</p>`
31
- });
32
- if (result.isOk()) {
33
- return;
9
+ async send(params) {
10
+ const { users, message } = params;
11
+ const bcc = users.map((user)=>{
12
+ if (!user.displayName) return user.email;
13
+ return `"${user.displayName}" <${user.email}>`;
14
+ }).filter((user)=>!!user);
15
+ if (0 === bcc.length) return;
16
+ const result = await this.mailer.sendMail({
17
+ bcc,
18
+ subject: message.title,
19
+ text: message.body,
20
+ html: `<p>${message.body.replace(/\n/g, "<br/>")}</p>`
21
+ });
22
+ if (result.isOk()) return;
23
+ console.error({
24
+ message: "Failed to send e-mail notification.",
25
+ error: result.error,
26
+ users: users.map((u)=>u.email)
27
+ });
34
28
  }
35
- console.error({
36
- message: "Failed to send e-mail notification.",
37
- error: result.error,
38
- users: users.map(u => u.email)
39
- });
40
- }
41
29
  }
42
- export const MailNotificationTransport = NotificationTransport.createImplementation({
43
- implementation: MailNotificationTransportImpl,
44
- dependencies: [MailerService]
30
+ const MailNotificationTransport = NotificationTransport.createImplementation({
31
+ implementation: MailNotificationTransportImpl,
32
+ dependencies: [
33
+ MailerService
34
+ ]
45
35
  });
36
+ export { MailNotificationTransport };
46
37
 
47
38
  //# sourceMappingURL=MailNotificationTransport.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MailerService","NotificationTransport","MailNotificationTransportImpl","id","title","constructor","mailer","send","params","users","message","bcc","map","user","displayName","email","filter","length","result","sendMail","subject","text","body","html","replace","isOk","console","error","u","MailNotificationTransport","createImplementation","implementation","dependencies"],"sources":["MailNotificationTransport.ts"],"sourcesContent":["import { MailerService } from \"@webiny/api-mailer\";\nimport { NotificationTransport } from \"./abstractions.js\";\n\nclass MailNotificationTransportImpl implements NotificationTransport.Interface {\n public readonly id = \"e-mail\";\n public readonly title = \"E-Mail\";\n\n private readonly mailer: MailerService.Interface;\n\n public constructor(mailer: MailerService.Interface) {\n this.mailer = mailer;\n }\n\n public async send(params: NotificationTransport.SendParams): Promise<void> {\n const { users, message } = params;\n\n const bcc = users\n .map(user => {\n if (!user.displayName) {\n return user.email;\n }\n return `\"${user.displayName}\" <${user.email}>`;\n })\n /**\n * Just in case...\n */\n .filter(user => !!user);\n\n if (bcc.length === 0) {\n return;\n }\n\n const result = await this.mailer.sendMail({\n bcc,\n subject: message.title,\n text: message.body,\n html: `<p>${message.body.replace(/\\n/g, \"<br/>\")}</p>`\n });\n if (result.isOk()) {\n return;\n }\n console.error({\n message: \"Failed to send e-mail notification.\",\n error: result.error,\n users: users.map(u => u.email)\n });\n }\n}\n\nexport const MailNotificationTransport = NotificationTransport.createImplementation({\n implementation: MailNotificationTransportImpl,\n dependencies: [MailerService]\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,oBAAoB;AAClD,SAASC,qBAAqB;AAE9B,MAAMC,6BAA6B,CAA4C;EAC3DC,EAAE,GAAG,QAAQ;EACbC,KAAK,GAAG,QAAQ;EAIzBC,WAAWA,CAACC,MAA+B,EAAE;IAChD,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEA,MAAaC,IAAIA,CAACC,MAAwC,EAAiB;IACvE,MAAM;MAAEC,KAAK;MAAEC;IAAQ,CAAC,GAAGF,MAAM;IAEjC,MAAMG,GAAG,GAAGF,KAAK,CACZG,GAAG,CAACC,IAAI,IAAI;MACT,IAAI,CAACA,IAAI,CAACC,WAAW,EAAE;QACnB,OAAOD,IAAI,CAACE,KAAK;MACrB;MACA,OAAO,IAAIF,IAAI,CAACC,WAAW,MAAMD,IAAI,CAACE,KAAK,GAAG;IAClD,CAAC;IACD;AACZ;AACA,OAFY,CAGCC,MAAM,CAACH,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC;IAE3B,IAAIF,GAAG,CAACM,MAAM,KAAK,CAAC,EAAE;MAClB;IACJ;IAEA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACZ,MAAM,CAACa,QAAQ,CAAC;MACtCR,GAAG;MACHS,OAAO,EAAEV,OAAO,CAACN,KAAK;MACtBiB,IAAI,EAAEX,OAAO,CAACY,IAAI;MAClBC,IAAI,EAAE,MAAMb,OAAO,CAACY,IAAI,CAACE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;IACpD,CAAC,CAAC;IACF,IAAIN,MAAM,CAACO,IAAI,CAAC,CAAC,EAAE;MACf;IACJ;IACAC,OAAO,CAACC,KAAK,CAAC;MACVjB,OAAO,EAAE,qCAAqC;MAC9CiB,KAAK,EAAET,MAAM,CAACS,KAAK;MACnBlB,KAAK,EAAEA,KAAK,CAACG,GAAG,CAACgB,CAAC,IAAIA,CAAC,CAACb,KAAK;IACjC,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMc,yBAAyB,GAAG5B,qBAAqB,CAAC6B,oBAAoB,CAAC;EAChFC,cAAc,EAAE7B,6BAA6B;EAC7C8B,YAAY,EAAE,CAAChC,aAAa;AAChC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/notifications/NotificationTransport/MailNotificationTransport.js","sources":["../../../../src/features/notifications/NotificationTransport/MailNotificationTransport.ts"],"sourcesContent":["import { MailerService } from \"@webiny/api-mailer\";\nimport { NotificationTransport } from \"./abstractions.js\";\n\nclass MailNotificationTransportImpl implements NotificationTransport.Interface {\n public readonly id = \"e-mail\";\n public readonly title = \"E-Mail\";\n\n private readonly mailer: MailerService.Interface;\n\n public constructor(mailer: MailerService.Interface) {\n this.mailer = mailer;\n }\n\n public async send(params: NotificationTransport.SendParams): Promise<void> {\n const { users, message } = params;\n\n const bcc = users\n .map(user => {\n if (!user.displayName) {\n return user.email;\n }\n return `\"${user.displayName}\" <${user.email}>`;\n })\n /**\n * Just in case...\n */\n .filter(user => !!user);\n\n if (bcc.length === 0) {\n return;\n }\n\n const result = await this.mailer.sendMail({\n bcc,\n subject: message.title,\n text: message.body,\n html: `<p>${message.body.replace(/\\n/g, \"<br/>\")}</p>`\n });\n if (result.isOk()) {\n return;\n }\n console.error({\n message: \"Failed to send e-mail notification.\",\n error: result.error,\n users: users.map(u => u.email)\n });\n }\n}\n\nexport const MailNotificationTransport = NotificationTransport.createImplementation({\n implementation: MailNotificationTransportImpl,\n dependencies: [MailerService]\n});\n"],"names":["MailNotificationTransportImpl","mailer","params","users","message","bcc","user","result","console","u","MailNotificationTransport","NotificationTransport","MailerService"],"mappings":";;AAGA,MAAMA;IAMF,YAAmBC,MAA+B,CAAE;aALpC,EAAE,GAAG;aACL,KAAK,GAAG;QAKpB,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,MAAa,KAAKC,MAAwC,EAAiB;QACvE,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGF;QAE3B,MAAMG,MAAMF,MACP,GAAG,CAACG,CAAAA;YACD,IAAI,CAACA,KAAK,WAAW,EACjB,OAAOA,KAAK,KAAK;YAErB,OAAO,CAAC,CAAC,EAAEA,KAAK,WAAW,CAAC,GAAG,EAAEA,KAAK,KAAK,CAAC,CAAC,CAAC;QAClD,GAIC,MAAM,CAACA,CAAAA,OAAQ,CAAC,CAACA;QAEtB,IAAID,AAAe,MAAfA,IAAI,MAAM,EACV;QAGJ,MAAME,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtCF;YACA,SAASD,QAAQ,KAAK;YACtB,MAAMA,QAAQ,IAAI;YAClB,MAAM,CAAC,GAAG,EAAEA,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,SAAS,IAAI,CAAC;QAC1D;QACA,IAAIG,OAAO,IAAI,IACX;QAEJC,QAAQ,KAAK,CAAC;YACV,SAAS;YACT,OAAOD,OAAO,KAAK;YACnB,OAAOJ,MAAM,GAAG,CAACM,CAAAA,IAAKA,EAAE,KAAK;QACjC;IACJ;AACJ;AAEO,MAAMC,4BAA4BC,sBAAsB,oBAAoB,CAAC;IAChF,gBAAgBX;IAChB,cAAc;QAACY;KAAc;AACjC"}
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const NotificationTransport = createAbstraction("WorkflowNotificationTransport");
2
+ const NotificationTransport = createAbstraction("WorkflowNotificationTransport");
3
+ export { NotificationTransport };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","NotificationTransport"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n INotificationType,\n INotificationTypeMessage\n} from \"~/domain/notifications/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\n\nexport interface INotificationTransportUser {\n id: string;\n email: string;\n displayName: string;\n}\n\nexport interface INotificationTransportSendParams {\n users: NonEmptyArray<INotificationTransportUser>;\n message: INotificationTypeMessage;\n}\n\nexport interface INotificationTransport {\n id: INotificationType[\"id\"];\n title: INotificationType[\"title\"];\n send(params: INotificationTransportSendParams): Promise<void>;\n}\n\nexport const NotificationTransport = createAbstraction<INotificationTransport>(\n \"WorkflowNotificationTransport\"\n);\n\nexport namespace NotificationTransport {\n export type Interface = INotificationTransport;\n export type SendParams = INotificationTransportSendParams;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAwBvD,OAAO,MAAMC,qBAAqB,GAAGD,iBAAiB,CAClD,+BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/notifications/NotificationTransport/abstractions.js","sources":["../../../../src/features/notifications/NotificationTransport/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n INotificationType,\n INotificationTypeMessage\n} from \"~/domain/notifications/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\n\nexport interface INotificationTransportUser {\n id: string;\n email: string;\n displayName: string;\n}\n\nexport interface INotificationTransportSendParams {\n users: NonEmptyArray<INotificationTransportUser>;\n message: INotificationTypeMessage;\n}\n\nexport interface INotificationTransport {\n id: INotificationType[\"id\"];\n title: INotificationType[\"title\"];\n send(params: INotificationTransportSendParams): Promise<void>;\n}\n\nexport const NotificationTransport = createAbstraction<INotificationTransport>(\n \"WorkflowNotificationTransport\"\n);\n\nexport namespace NotificationTransport {\n export type Interface = INotificationTransport;\n export type SendParams = INotificationTransportSendParams;\n}\n"],"names":["NotificationTransport","createAbstraction"],"mappings":";AAwBO,MAAMA,wBAAwBC,kBACjC"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { MailNotificationTransport } from "./MailNotificationTransport.js";
3
- export const NotificationTransportFeature = createFeature({
4
- name: "WorkflowNotifications/NotificationTransport",
5
- register(container) {
6
- container.register(MailNotificationTransport);
7
- }
3
+ const NotificationTransportFeature = createFeature({
4
+ name: "WorkflowNotifications/NotificationTransport",
5
+ register (container) {
6
+ container.register(MailNotificationTransport);
7
+ }
8
8
  });
9
+ export { NotificationTransportFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","MailNotificationTransport","NotificationTransportFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { MailNotificationTransport } from \"./MailNotificationTransport.js\";\n\nexport const NotificationTransportFeature = createFeature({\n name: \"WorkflowNotifications/NotificationTransport\",\n register(container) {\n container.register(MailNotificationTransport);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,yBAAyB;AAElC,OAAO,MAAMC,4BAA4B,GAAGF,aAAa,CAAC;EACtDG,IAAI,EAAE,6CAA6C;EACnDC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,yBAAyB,CAAC;EACjD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/notifications/NotificationTransport/feature.js","sources":["../../../../src/features/notifications/NotificationTransport/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { MailNotificationTransport } from \"./MailNotificationTransport.js\";\n\nexport const NotificationTransportFeature = createFeature({\n name: \"WorkflowNotifications/NotificationTransport\",\n register(container) {\n container.register(MailNotificationTransport);\n }\n});\n"],"names":["NotificationTransportFeature","createFeature","container","MailNotificationTransport"],"mappings":";;AAGO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export { NotificationTransportFeature } from "./feature.js";
2
2
  export { NotificationTransport } from "./abstractions.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=abstractions.js.map
@@ -3,43 +3,44 @@ import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
3
3
  import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
4
4
  import { WorkflowMapper, WorkflowModel } from "../../../domain/workflow/abstractions.js";
5
5
  import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
6
- import { CreateWorkflowRepository as Repository } from "./abstractions.js";
6
+ import { CreateWorkflowRepository } from "./abstractions.js";
7
7
  class CreateWorkflowRepositoryImpl {
8
- constructor(createEntry, model, mapper) {
9
- this.createEntry = createEntry;
10
- this.model = model;
11
- this.mapper = mapper;
12
- }
13
- async execute(input) {
14
- const {
15
- id
16
- } = parseIdentifier(input.id);
17
- const values = this.mapper.toCmsEntry({
18
- id,
19
- app: input.app,
20
- name: input.name,
21
- steps: input.steps
22
- });
23
- try {
24
- const createResult = await this.createEntry.execute(this.model, {
25
- id,
26
- values
27
- });
28
- if (createResult.isFail()) {
29
- return Result.fail(new WorkflowPersistenceError(createResult.error));
30
- }
31
- return Result.ok({
32
- ...values,
33
- id
34
- });
35
- } catch (error) {
36
- return Result.fail(new WorkflowPersistenceError(error));
8
+ constructor(createEntry, model, mapper){
9
+ this.createEntry = createEntry;
10
+ this.model = model;
11
+ this.mapper = mapper;
12
+ }
13
+ async execute(input) {
14
+ const { id } = parseIdentifier(input.id);
15
+ const values = this.mapper.toCmsEntry({
16
+ id,
17
+ app: input.app,
18
+ name: input.name,
19
+ steps: input.steps
20
+ });
21
+ try {
22
+ const createResult = await this.createEntry.execute(this.model, {
23
+ id,
24
+ values
25
+ });
26
+ if (createResult.isFail()) return Result.fail(new WorkflowPersistenceError(createResult.error));
27
+ return Result.ok({
28
+ ...values,
29
+ id
30
+ });
31
+ } catch (error) {
32
+ return Result.fail(new WorkflowPersistenceError(error));
33
+ }
37
34
  }
38
- }
39
35
  }
40
- export const CreateWorkflowRepository = Repository.createImplementation({
41
- implementation: CreateWorkflowRepositoryImpl,
42
- dependencies: [CreateEntryUseCase, WorkflowModel, WorkflowMapper]
36
+ const CreateWorkflowRepository_CreateWorkflowRepository = CreateWorkflowRepository.createImplementation({
37
+ implementation: CreateWorkflowRepositoryImpl,
38
+ dependencies: [
39
+ CreateEntryUseCase,
40
+ WorkflowModel,
41
+ WorkflowMapper
42
+ ]
43
43
  });
44
+ export { CreateWorkflowRepository_CreateWorkflowRepository as CreateWorkflowRepository };
44
45
 
45
46
  //# sourceMappingURL=CreateWorkflowRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","parseIdentifier","CreateEntryUseCase","WorkflowMapper","WorkflowModel","WorkflowPersistenceError","CreateWorkflowRepository","Repository","CreateWorkflowRepositoryImpl","constructor","createEntry","model","mapper","execute","input","id","values","toCmsEntry","app","name","steps","createResult","isFail","fail","error","ok","createImplementation","implementation","dependencies"],"sources":["CreateWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { type IWorkflow, WorkflowMapper, WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { CreateWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass CreateWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private model: WorkflowModel.Interface,\n private mapper: WorkflowMapper.Interface\n ) {}\n\n async execute(input: Repository.Input): Repository.Return {\n const { id } = parseIdentifier(input.id);\n\n const values = this.mapper.toCmsEntry({\n id,\n app: input.app,\n name: input.name,\n steps: input.steps\n });\n try {\n const createResult = await this.createEntry.execute<IWorkflow>(this.model, {\n id,\n values\n });\n\n if (createResult.isFail()) {\n return Result.fail(new WorkflowPersistenceError(createResult.error));\n }\n\n return Result.ok({ ...values, id });\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error));\n }\n }\n}\n\nexport const CreateWorkflowRepository = Repository.createImplementation({\n implementation: CreateWorkflowRepositoryImpl,\n dependencies: [CreateEntryUseCase, WorkflowModel, WorkflowMapper]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,kCAAkC;AAClE,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAAyBC,cAAc,EAAEC,aAAa;AACtD,SAASC,wBAAwB;AACjC,SAASC,wBAAwB,IAAIC,UAAU;AAE/C,MAAMC,4BAA4B,CAAiC;EAC/DC,WAAWA,CACCC,WAAyC,EACzCC,KAA8B,EAC9BC,MAAgC,EAC1C;IAAA,KAHUF,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,KAA8B,GAA9BA,KAA8B;IAAA,KAC9BC,MAAgC,GAAhCA,MAAgC;EACzC;EAEH,MAAMC,OAAOA,CAACC,KAAuB,EAAqB;IACtD,MAAM;MAAEC;IAAG,CAAC,GAAGd,eAAe,CAACa,KAAK,CAACC,EAAE,CAAC;IAExC,MAAMC,MAAM,GAAG,IAAI,CAACJ,MAAM,CAACK,UAAU,CAAC;MAClCF,EAAE;MACFG,GAAG,EAAEJ,KAAK,CAACI,GAAG;MACdC,IAAI,EAAEL,KAAK,CAACK,IAAI;MAChBC,KAAK,EAAEN,KAAK,CAACM;IACjB,CAAC,CAAC;IACF,IAAI;MACA,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACX,WAAW,CAACG,OAAO,CAAY,IAAI,CAACF,KAAK,EAAE;QACvEI,EAAE;QACFC;MACJ,CAAC,CAAC;MAEF,IAAIK,YAAY,CAACC,MAAM,CAAC,CAAC,EAAE;QACvB,OAAOtB,MAAM,CAACuB,IAAI,CAAC,IAAIlB,wBAAwB,CAACgB,YAAY,CAACG,KAAK,CAAC,CAAC;MACxE;MAEA,OAAOxB,MAAM,CAACyB,EAAE,CAAC;QAAE,GAAGT,MAAM;QAAED;MAAG,CAAC,CAAC;IACvC,CAAC,CAAC,OAAOS,KAAK,EAAE;MACZ,OAAOxB,MAAM,CAACuB,IAAI,CAAC,IAAIlB,wBAAwB,CAACmB,KAAK,CAAC,CAAC;IAC3D;EACJ;AACJ;AAEA,OAAO,MAAMlB,wBAAwB,GAAGC,UAAU,CAACmB,oBAAoB,CAAC;EACpEC,cAAc,EAAEnB,4BAA4B;EAC5CoB,YAAY,EAAE,CAAC1B,kBAAkB,EAAEE,aAAa,EAAED,cAAc;AACpE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowRepository.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { type IWorkflow, WorkflowMapper, WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { CreateWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass CreateWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private model: WorkflowModel.Interface,\n private mapper: WorkflowMapper.Interface\n ) {}\n\n async execute(input: Repository.Input): Repository.Return {\n const { id } = parseIdentifier(input.id);\n\n const values = this.mapper.toCmsEntry({\n id,\n app: input.app,\n name: input.name,\n steps: input.steps\n });\n try {\n const createResult = await this.createEntry.execute<IWorkflow>(this.model, {\n id,\n values\n });\n\n if (createResult.isFail()) {\n return Result.fail(new WorkflowPersistenceError(createResult.error));\n }\n\n return Result.ok({ ...values, id });\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error));\n }\n }\n}\n\nexport const CreateWorkflowRepository = Repository.createImplementation({\n implementation: CreateWorkflowRepositoryImpl,\n dependencies: [CreateEntryUseCase, WorkflowModel, WorkflowMapper]\n});\n"],"names":["CreateWorkflowRepositoryImpl","createEntry","model","mapper","input","id","parseIdentifier","values","createResult","Result","WorkflowPersistenceError","error","CreateWorkflowRepository","Repository","CreateEntryUseCase","WorkflowModel","WorkflowMapper"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,WAAyC,EACzCC,KAA8B,EAC9BC,MAAgC,CAC1C;aAHUF,WAAW,GAAXA;aACAC,KAAK,GAALA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,KAAuB,EAAqB;QACtD,MAAM,EAAEC,EAAE,EAAE,GAAGC,gBAAgBF,MAAM,EAAE;QAEvC,MAAMG,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAClCF;YACA,KAAKD,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;QACtB;QACA,IAAI;YACA,MAAMI,eAAe,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY,IAAI,CAAC,KAAK,EAAE;gBACvEH;gBACAE;YACJ;YAEA,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,aAAa,KAAK;YAGtE,OAAOC,OAAO,EAAE,CAAC;gBAAE,GAAGF,MAAM;gBAAEF;YAAG;QACrC,EAAE,OAAOM,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBb;IAChB,cAAc;QAACc;QAAoBC;QAAeC;KAAe;AACrE"}
@@ -1,56 +1,52 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
3
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
4
- import { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from "./abstractions.js";
4
+ import { CreateWorkflowRepository, CreateWorkflowUseCase } from "./abstractions.js";
5
5
  import { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from "./events.js";
6
6
  import { WorkflowNotAuthorizedError } from "../../../domain/workflow/errors.js";
7
7
  import { WORKFLOWS_PERMISSION } from "../../../constants.js";
8
8
  class CreateWorkflowUseCaseImpl {
9
- constructor(identityContext, eventPublisher, repository) {
10
- this.identityContext = identityContext;
11
- this.eventPublisher = eventPublisher;
12
- this.repository = repository;
13
- }
14
- async execute(input) {
15
- const hasAccess = await this.ensureManageAccess();
16
- if (hasAccess.isFail()) {
17
- return Result.fail(hasAccess.error);
9
+ constructor(identityContext, eventPublisher, repository){
10
+ this.identityContext = identityContext;
11
+ this.eventPublisher = eventPublisher;
12
+ this.repository = repository;
18
13
  }
19
- const workflow = {
20
- id: input.id,
21
- app: input.app,
22
- name: input.name,
23
- steps: input.steps
24
- };
25
- await this.eventPublisher.publish(new WorkflowBeforeCreateEvent({
26
- workflow,
27
- input
28
- }));
29
- const result = await this.repository.execute(input);
30
- if (result.isFail()) {
31
- return result;
14
+ async execute(input) {
15
+ const hasAccess = await this.ensureManageAccess();
16
+ if (hasAccess.isFail()) return Result.fail(hasAccess.error);
17
+ const workflow = {
18
+ id: input.id,
19
+ app: input.app,
20
+ name: input.name,
21
+ steps: input.steps
22
+ };
23
+ await this.eventPublisher.publish(new WorkflowBeforeCreateEvent({
24
+ workflow,
25
+ input
26
+ }));
27
+ const result = await this.repository.execute(input);
28
+ if (result.isFail()) return result;
29
+ await this.eventPublisher.publish(new WorkflowAfterCreateEvent({
30
+ workflow: result.value,
31
+ input
32
+ }));
33
+ return Result.ok(result.value);
32
34
  }
33
- await this.eventPublisher.publish(new WorkflowAfterCreateEvent({
34
- workflow: result.value,
35
- input
36
- }));
37
- return Result.ok(result.value);
38
- }
39
- async ensureManageAccess() {
40
- const permissions = await this.identityContext.getPermissions(WORKFLOWS_PERMISSION);
41
- for (const permission of permissions) {
42
- if (permission.name === "*") {
43
- return Result.ok();
44
- } else if (permission.editor) {
45
- return Result.ok();
46
- }
35
+ async ensureManageAccess() {
36
+ const permissions = await this.identityContext.getPermissions(WORKFLOWS_PERMISSION);
37
+ for (const permission of permissions)if ("*" === permission.name) return Result.ok();
38
+ else if (permission.editor) return Result.ok();
39
+ return Result.fail(new WorkflowNotAuthorizedError("You cannot manage workflows."));
47
40
  }
48
- return Result.fail(new WorkflowNotAuthorizedError("You cannot manage workflows."));
49
- }
50
41
  }
51
- export const CreateWorkflowUseCase = UseCase.createImplementation({
52
- implementation: CreateWorkflowUseCaseImpl,
53
- dependencies: [IdentityContext, EventPublisher, CreateWorkflowRepository]
42
+ const CreateWorkflowUseCase_CreateWorkflowUseCase = CreateWorkflowUseCase.createImplementation({
43
+ implementation: CreateWorkflowUseCaseImpl,
44
+ dependencies: [
45
+ IdentityContext,
46
+ EventPublisher,
47
+ CreateWorkflowRepository
48
+ ]
54
49
  });
50
+ export { CreateWorkflowUseCase_CreateWorkflowUseCase as CreateWorkflowUseCase };
55
51
 
56
52
  //# sourceMappingURL=CreateWorkflowUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","IdentityContext","EventPublisher","CreateWorkflowRepository","CreateWorkflowUseCase","UseCase","WorkflowAfterCreateEvent","WorkflowBeforeCreateEvent","WorkflowNotAuthorizedError","WORKFLOWS_PERMISSION","CreateWorkflowUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","hasAccess","ensureManageAccess","isFail","fail","error","workflow","id","app","name","steps","publish","result","value","ok","permissions","getPermissions","permission","editor","createImplementation","implementation","dependencies"],"sources":["CreateWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass CreateWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Input): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflow = {\n id: input.id,\n app: input.app,\n name: input.name,\n steps: input.steps\n };\n\n await this.eventPublisher.publish(\n new WorkflowBeforeCreateEvent({\n workflow,\n input\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterCreateEvent({\n workflow: result.value,\n input\n })\n );\n\n return Result.ok(result.value);\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const CreateWorkflowUseCase = UseCase.createImplementation({\n implementation: CreateWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, CreateWorkflowRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,cAAc,QAAQ,mDAAmD;AAClF,SAASC,wBAAwB,EAAEC,qBAAqB,IAAIC,OAAO;AACnE,SAASC,wBAAwB,EAAEC,yBAAyB;AAC5D,SAASC,0BAA0B;AACnC,SAASC,oBAAoB;AAG7B,MAAMC,yBAAyB,CAA8B;EACzDC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA8C,EACxD;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,KAAoB,EAAkB;IAChD,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACjD,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOnB,MAAM,CAACoB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAG;MACbC,EAAE,EAAEP,KAAK,CAACO,EAAE;MACZC,GAAG,EAAER,KAAK,CAACQ,GAAG;MACdC,IAAI,EAAET,KAAK,CAACS,IAAI;MAChBC,KAAK,EAAEV,KAAK,CAACU;IACjB,CAAC;IAED,MAAM,IAAI,CAACb,cAAc,CAACc,OAAO,CAC7B,IAAIpB,yBAAyB,CAAC;MAC1Be,QAAQ;MACRN;IACJ,CAAC,CACL,CAAC;IAED,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IACnD,IAAIY,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;IAEA,MAAM,IAAI,CAACf,cAAc,CAACc,OAAO,CAC7B,IAAIrB,wBAAwB,CAAC;MACzBgB,QAAQ,EAAEM,MAAM,CAACC,KAAK;MACtBb;IACJ,CAAC,CACL,CAAC;IAED,OAAOhB,MAAM,CAAC8B,EAAE,CAACF,MAAM,CAACC,KAAK,CAAC;EAClC;EAEA,MAAcX,kBAAkBA,CAAA,EAAsD;IAClF,MAAMa,WAAW,GACb,MAAM,IAAI,CAACnB,eAAe,CAACoB,cAAc,CACrCvB,oBACJ,CAAC;IAEL,KAAK,MAAMwB,UAAU,IAAIF,WAAW,EAAE;MAClC,IAAIE,UAAU,CAACR,IAAI,KAAK,GAAG,EAAE;QACzB,OAAOzB,MAAM,CAAC8B,EAAE,CAAC,CAAC;MACtB,CAAC,MAAM,IAAIG,UAAU,CAACC,MAAM,EAAE;QAC1B,OAAOlC,MAAM,CAAC8B,EAAE,CAAC,CAAC;MACtB;IACJ;IAEA,OAAO9B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,8BAA8B,CAAC,CAAC;EACtF;AACJ;AAEA,OAAO,MAAMJ,qBAAqB,GAAGC,OAAO,CAAC8B,oBAAoB,CAAC;EAC9DC,cAAc,EAAE1B,yBAAyB;EACzC2B,YAAY,EAAE,CAACpC,eAAe,EAAEC,cAAc,EAAEC,wBAAwB;AAC5E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowUseCase.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass CreateWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Input): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflow = {\n id: input.id,\n app: input.app,\n name: input.name,\n steps: input.steps\n };\n\n await this.eventPublisher.publish(\n new WorkflowBeforeCreateEvent({\n workflow,\n input\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterCreateEvent({\n workflow: result.value,\n input\n })\n );\n\n return Result.ok(result.value);\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const CreateWorkflowUseCase = UseCase.createImplementation({\n implementation: CreateWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, CreateWorkflowRepository]\n});\n"],"names":["CreateWorkflowUseCaseImpl","identityContext","eventPublisher","repository","input","hasAccess","Result","workflow","WorkflowBeforeCreateEvent","result","WorkflowAfterCreateEvent","permissions","WORKFLOWS_PERMISSION","permission","WorkflowNotAuthorizedError","CreateWorkflowUseCase","UseCase","IdentityContext","EventPublisher","CreateWorkflowRepository"],"mappings":";;;;;;;AASA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA8C,CACxD;aAHUF,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAAoB,EAAkB;QAChD,MAAMC,YAAY,MAAM,IAAI,CAAC,kBAAkB;QAC/C,IAAIA,UAAU,MAAM,IAChB,OAAOC,OAAO,IAAI,CAACD,UAAU,KAAK;QAGtC,MAAME,WAAW;YACb,IAAIH,MAAM,EAAE;YACZ,KAAKA,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;QACtB;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAII,0BAA0B;YAC1BD;YACAH;QACJ;QAGJ,MAAMK,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACL;QAC7C,IAAIK,OAAO,MAAM,IACb,OAAOA;QAGX,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,yBAAyB;YACzB,UAAUD,OAAO,KAAK;YACtBL;QACJ;QAGJ,OAAOE,OAAO,EAAE,CAACG,OAAO,KAAK;IACjC;IAEA,MAAc,qBAAwE;QAClF,MAAME,cACF,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACrCC;QAGR,KAAK,MAAMC,cAAcF,YACrB,IAAIE,AAAoB,QAApBA,WAAW,IAAI,EACf,OAAOP,OAAO,EAAE;aACb,IAAIO,WAAW,MAAM,EACxB,OAAOP,OAAO,EAAE;QAIxB,OAAOA,OAAO,IAAI,CAAC,IAAIQ,2BAA2B;IACtD;AACJ;AAEO,MAAMC,8CAAwBC,sBAAAA,oBAA4B,CAAC;IAC9D,gBAAgBhB;IAChB,cAAc;QAACiB;QAAiBC;QAAgBC;KAAyB;AAC7E"}
@@ -1,19 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- // Input types
4
-
5
- // Event payloads
6
-
7
- /**
8
- * CreateWorkflow use case interface
9
- */
10
-
11
- export const CreateWorkflowUseCase = createAbstraction("CreateWorkflowUseCase");
12
-
13
- /**
14
- * CreateWorkflow repository interface
15
- */
16
-
17
- export const CreateWorkflowRepository = createAbstraction("CreateWorkflowRepository");
2
+ const CreateWorkflowUseCase = createAbstraction("CreateWorkflowUseCase");
3
+ const CreateWorkflowRepository = createAbstraction("CreateWorkflowRepository");
4
+ export { CreateWorkflowRepository, CreateWorkflowUseCase };
18
5
 
19
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateWorkflowUseCase","CreateWorkflowRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { IWorkflow } from \"~/domain/workflow/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\nimport {\n type WorkflowNotAuthorizedError,\n type WorkflowPersistenceError,\n type WorkflowValidationError\n} from \"~/domain/workflow/errors.js\";\nimport type { IWorkflowStepInput } from \"~/features/shared/abstractions.js\";\n\n// Input types\nexport interface ICreateWorkflowInput {\n app: string;\n id: string;\n name: string;\n steps: NonEmptyArray<IWorkflowStepInput>;\n}\n\n// Event payloads\nexport interface WorkflowBeforeCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\nexport interface WorkflowAfterCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\n/**\n * CreateWorkflow use case interface\n */\nexport interface ICreateWorkflowUseCase {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, UseCaseError>>;\n}\n\nexport interface ICreateWorkflowUseCaseErrors {\n notAuthorized: WorkflowNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n validation: WorkflowValidationError;\n}\n\ntype UseCaseError = ICreateWorkflowUseCaseErrors[keyof ICreateWorkflowUseCaseErrors];\n\nexport const CreateWorkflowUseCase =\n createAbstraction<ICreateWorkflowUseCase>(\"CreateWorkflowUseCase\");\n\nexport namespace CreateWorkflowUseCase {\n export type Interface = ICreateWorkflowUseCase;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n/**\n * CreateWorkflow repository interface\n */\nexport interface ICreateWorkflowRepository {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, RepositoryError>>;\n}\n\nexport interface ICreateWorkflowRepositoryErrors {\n persistence: WorkflowPersistenceError;\n}\n\ntype RepositoryError = ICreateWorkflowRepositoryErrors[keyof ICreateWorkflowRepositoryErrors];\n\nexport const CreateWorkflowRepository = createAbstraction<ICreateWorkflowRepository>(\n \"CreateWorkflowRepository\"\n);\n\nexport namespace CreateWorkflowRepository {\n export type Interface = ICreateWorkflowRepository;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, RepositoryError>>;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAWvD;;AAQA;;AAWA;AACA;AACA;;AAaA,OAAO,MAAMC,qBAAqB,GAC9BD,iBAAiB,CAAyB,uBAAuB,CAAC;;AAStE;AACA;AACA;;AAWA,OAAO,MAAME,wBAAwB,GAAGF,iBAAiB,CACrD,0BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/CreateWorkflow/abstractions.js","sources":["../../../../src/features/workflow/CreateWorkflow/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { IWorkflow } from \"~/domain/workflow/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\nimport {\n type WorkflowNotAuthorizedError,\n type WorkflowPersistenceError,\n type WorkflowValidationError\n} from \"~/domain/workflow/errors.js\";\nimport type { IWorkflowStepInput } from \"~/features/shared/abstractions.js\";\n\n// Input types\nexport interface ICreateWorkflowInput {\n app: string;\n id: string;\n name: string;\n steps: NonEmptyArray<IWorkflowStepInput>;\n}\n\n// Event payloads\nexport interface WorkflowBeforeCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\nexport interface WorkflowAfterCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\n/**\n * CreateWorkflow use case interface\n */\nexport interface ICreateWorkflowUseCase {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, UseCaseError>>;\n}\n\nexport interface ICreateWorkflowUseCaseErrors {\n notAuthorized: WorkflowNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n validation: WorkflowValidationError;\n}\n\ntype UseCaseError = ICreateWorkflowUseCaseErrors[keyof ICreateWorkflowUseCaseErrors];\n\nexport const CreateWorkflowUseCase =\n createAbstraction<ICreateWorkflowUseCase>(\"CreateWorkflowUseCase\");\n\nexport namespace CreateWorkflowUseCase {\n export type Interface = ICreateWorkflowUseCase;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n/**\n * CreateWorkflow repository interface\n */\nexport interface ICreateWorkflowRepository {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, RepositoryError>>;\n}\n\nexport interface ICreateWorkflowRepositoryErrors {\n persistence: WorkflowPersistenceError;\n}\n\ntype RepositoryError = ICreateWorkflowRepositoryErrors[keyof ICreateWorkflowRepositoryErrors];\n\nexport const CreateWorkflowRepository = createAbstraction<ICreateWorkflowRepository>(\n \"CreateWorkflowRepository\"\n);\n\nexport namespace CreateWorkflowRepository {\n export type Interface = ICreateWorkflowRepository;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, RepositoryError>>;\n export type Error = RepositoryError;\n}\n"],"names":["CreateWorkflowUseCase","createAbstraction","CreateWorkflowRepository"],"mappings":";AA6CO,MAAMA,wBACTC,kBAA0C;AAsBvC,MAAMC,2BAA2BD,kBACpC"}
@@ -1,20 +1,23 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
2
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
- // Before create event
4
- export class WorkflowBeforeCreateEvent extends DomainEvent {
5
- eventType = "workflow.beforeCreate";
6
- getHandlerAbstraction() {
7
- return WorkflowBeforeCreateHandler;
8
- }
3
+ class WorkflowBeforeCreateEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return WorkflowBeforeCreateHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "workflow.beforeCreate";
9
+ }
9
10
  }
10
- export const WorkflowBeforeCreateHandler = createAbstraction("WorkflowBeforeCreateHandler");
11
- // After create event
12
- export class WorkflowAfterCreateEvent extends DomainEvent {
13
- eventType = "workflow.afterCreate";
14
- getHandlerAbstraction() {
15
- return WorkflowAfterCreateHandler;
16
- }
11
+ const WorkflowBeforeCreateHandler = createAbstraction("WorkflowBeforeCreateHandler");
12
+ class WorkflowAfterCreateEvent extends DomainEvent {
13
+ getHandlerAbstraction() {
14
+ return WorkflowAfterCreateHandler;
15
+ }
16
+ constructor(...args){
17
+ super(...args), this.eventType = "workflow.afterCreate";
18
+ }
17
19
  }
18
- export const WorkflowAfterCreateHandler = createAbstraction("WorkflowAfterCreateHandler");
20
+ const WorkflowAfterCreateHandler = createAbstraction("WorkflowAfterCreateHandler");
21
+ export { WorkflowAfterCreateEvent, WorkflowAfterCreateHandler, WorkflowBeforeCreateEvent, WorkflowBeforeCreateHandler };
19
22
 
20
23
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","WorkflowBeforeCreateEvent","eventType","getHandlerAbstraction","WorkflowBeforeCreateHandler","WorkflowAfterCreateEvent","WorkflowAfterCreateHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WorkflowBeforeCreatePayload, WorkflowAfterCreatePayload } from \"./abstractions.js\";\n\n// Before create event\nexport class WorkflowBeforeCreateEvent extends DomainEvent<WorkflowBeforeCreatePayload> {\n eventType = \"workflow.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowBeforeCreateHandler;\n }\n}\n\nexport const WorkflowBeforeCreateHandler = createAbstraction<\n IEventHandler<WorkflowBeforeCreateEvent>\n>(\"WorkflowBeforeCreateHandler\");\n\nexport namespace WorkflowBeforeCreateHandler {\n export type Interface = IEventHandler<WorkflowBeforeCreateEvent>;\n export type Event = WorkflowBeforeCreateEvent;\n}\n\n// After create event\nexport class WorkflowAfterCreateEvent extends DomainEvent<WorkflowAfterCreatePayload> {\n eventType = \"workflow.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowAfterCreateHandler;\n }\n}\n\nexport const WorkflowAfterCreateHandler = createAbstraction<\n IEventHandler<WorkflowAfterCreateEvent>\n>(\"WorkflowAfterCreateHandler\");\n\nexport namespace WorkflowAfterCreateHandler {\n export type Interface = IEventHandler<WorkflowAfterCreateEvent>;\n export type Event = WorkflowAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;AAI/E;AACA,OAAO,MAAMC,yBAAyB,SAASD,WAAW,CAA8B;EACpFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,2BAA2B;EACtC;AACJ;AAEA,OAAO,MAAMA,2BAA2B,GAAGL,iBAAiB,CAE1D,6BAA6B,CAAC;AAOhC;AACA,OAAO,MAAMM,wBAAwB,SAASL,WAAW,CAA6B;EAClFE,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,0BAA0B;EACrC;AACJ;AAEA,OAAO,MAAMA,0BAA0B,GAAGP,iBAAiB,CAEzD,4BAA4B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/CreateWorkflow/events.js","sources":["../../../../src/features/workflow/CreateWorkflow/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WorkflowBeforeCreatePayload, WorkflowAfterCreatePayload } from \"./abstractions.js\";\n\n// Before create event\nexport class WorkflowBeforeCreateEvent extends DomainEvent<WorkflowBeforeCreatePayload> {\n eventType = \"workflow.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowBeforeCreateHandler;\n }\n}\n\nexport const WorkflowBeforeCreateHandler = createAbstraction<\n IEventHandler<WorkflowBeforeCreateEvent>\n>(\"WorkflowBeforeCreateHandler\");\n\nexport namespace WorkflowBeforeCreateHandler {\n export type Interface = IEventHandler<WorkflowBeforeCreateEvent>;\n export type Event = WorkflowBeforeCreateEvent;\n}\n\n// After create event\nexport class WorkflowAfterCreateEvent extends DomainEvent<WorkflowAfterCreatePayload> {\n eventType = \"workflow.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowAfterCreateHandler;\n }\n}\n\nexport const WorkflowAfterCreateHandler = createAbstraction<\n IEventHandler<WorkflowAfterCreateEvent>\n>(\"WorkflowAfterCreateHandler\");\n\nexport namespace WorkflowAfterCreateHandler {\n export type Interface = IEventHandler<WorkflowAfterCreateEvent>;\n export type Event = WorkflowAfterCreateEvent;\n}\n"],"names":["WorkflowBeforeCreateEvent","DomainEvent","WorkflowBeforeCreateHandler","createAbstraction","WorkflowAfterCreateEvent","WorkflowAfterCreateHandler"],"mappings":";;AAMO,MAAMA,kCAAkCC;IAG3C,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,8BAA8BC,kBAEzC;AAQK,MAAMC,iCAAiCH;IAG1C,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,6BAA6BF,kBAExC"}
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { CreateWorkflowUseCase } from "./CreateWorkflowUseCase.js";
3
3
  import { CreateWorkflowRepository } from "./CreateWorkflowRepository.js";
4
- export const CreateWorkflowFeature = createFeature({
5
- name: "Workflows/CreateWorkflow",
6
- register(container) {
7
- container.register(CreateWorkflowRepository).inSingletonScope();
8
- container.register(CreateWorkflowUseCase);
9
- }
4
+ const CreateWorkflowFeature = createFeature({
5
+ name: "Workflows/CreateWorkflow",
6
+ register (container) {
7
+ container.register(CreateWorkflowRepository).inSingletonScope();
8
+ container.register(CreateWorkflowUseCase);
9
+ }
10
10
  });
11
+ export { CreateWorkflowFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","CreateWorkflowUseCase","CreateWorkflowRepository","CreateWorkflowFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateWorkflowUseCase } from \"./CreateWorkflowUseCase.js\";\nimport { CreateWorkflowRepository } from \"./CreateWorkflowRepository.js\";\n\nexport const CreateWorkflowFeature = createFeature({\n name: \"Workflows/CreateWorkflow\",\n register(container) {\n container.register(CreateWorkflowRepository).inSingletonScope();\n container.register(CreateWorkflowUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,qBAAqB;AAC9B,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,qBAAqB,GAAGH,aAAa,CAAC;EAC/CI,IAAI,EAAE,0BAA0B;EAChCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,wBAAwB,CAAC,CAACK,gBAAgB,CAAC,CAAC;IAC/DD,SAAS,CAACD,QAAQ,CAACJ,qBAAqB,CAAC;EAC7C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/CreateWorkflow/feature.js","sources":["../../../../src/features/workflow/CreateWorkflow/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateWorkflowUseCase } from \"./CreateWorkflowUseCase.js\";\nimport { CreateWorkflowRepository } from \"./CreateWorkflowRepository.js\";\n\nexport const CreateWorkflowFeature = createFeature({\n name: \"Workflows/CreateWorkflow\",\n register(container) {\n container.register(CreateWorkflowRepository).inSingletonScope();\n container.register(CreateWorkflowUseCase);\n }\n});\n"],"names":["CreateWorkflowFeature","createFeature","container","CreateWorkflowRepository","CreateWorkflowUseCase"],"mappings":";;;AAIO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,0BAA0B,gBAAgB;QAC7DD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
@@ -1,5 +1,3 @@
1
1
  export { CreateWorkflowFeature } from "./feature.js";
2
- export { CreateWorkflowUseCase, CreateWorkflowRepository } from "./abstractions.js";
3
- export { WorkflowBeforeCreateEvent, WorkflowAfterCreateEvent, WorkflowBeforeCreateHandler, WorkflowAfterCreateHandler } from "./events.js";
4
-
5
- //# sourceMappingURL=index.js.map
2
+ export { CreateWorkflowRepository, CreateWorkflowUseCase } from "./abstractions.js";
3
+ export { WorkflowAfterCreateEvent, WorkflowAfterCreateHandler, WorkflowBeforeCreateEvent, WorkflowBeforeCreateHandler } from "./events.js";
@@ -3,31 +3,33 @@ import { createIdentifier } from "@webiny/utils";
3
3
  import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
4
4
  import { WorkflowModel } from "../../../domain/workflow/abstractions.js";
5
5
  import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
6
- import { DeleteWorkflowRepository as Repository } from "./abstractions.js";
6
+ import { DeleteWorkflowRepository } from "./abstractions.js";
7
7
  class DeleteWorkflowRepositoryImpl {
8
- constructor(deleteEntry, model) {
9
- this.deleteEntry = deleteEntry;
10
- this.model = model;
11
- }
12
- async execute(input) {
13
- const workflowId = createIdentifier({
14
- id: input.id,
15
- version: 1
16
- });
17
- try {
18
- const result = await this.deleteEntry.execute(this.model, workflowId);
19
- if (result.isFail()) {
20
- return Result.fail(new WorkflowPersistenceError(result.error));
21
- }
22
- return Result.ok();
23
- } catch (error) {
24
- return Result.fail(new WorkflowPersistenceError(error));
8
+ constructor(deleteEntry, model){
9
+ this.deleteEntry = deleteEntry;
10
+ this.model = model;
11
+ }
12
+ async execute(input) {
13
+ const workflowId = createIdentifier({
14
+ id: input.id,
15
+ version: 1
16
+ });
17
+ try {
18
+ const result = await this.deleteEntry.execute(this.model, workflowId);
19
+ if (result.isFail()) return Result.fail(new WorkflowPersistenceError(result.error));
20
+ return Result.ok();
21
+ } catch (error) {
22
+ return Result.fail(new WorkflowPersistenceError(error));
23
+ }
25
24
  }
26
- }
27
25
  }
28
- export const DeleteWorkflowRepository = Repository.createImplementation({
29
- implementation: DeleteWorkflowRepositoryImpl,
30
- dependencies: [DeleteEntryUseCase, WorkflowModel]
26
+ const DeleteWorkflowRepository_DeleteWorkflowRepository = DeleteWorkflowRepository.createImplementation({
27
+ implementation: DeleteWorkflowRepositoryImpl,
28
+ dependencies: [
29
+ DeleteEntryUseCase,
30
+ WorkflowModel
31
+ ]
31
32
  });
33
+ export { DeleteWorkflowRepository_DeleteWorkflowRepository as DeleteWorkflowRepository };
32
34
 
33
35
  //# sourceMappingURL=DeleteWorkflowRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createIdentifier","DeleteEntryUseCase","WorkflowModel","WorkflowPersistenceError","DeleteWorkflowRepository","Repository","DeleteWorkflowRepositoryImpl","constructor","deleteEntry","model","execute","input","workflowId","id","version","result","isFail","fail","error","ok","createImplementation","implementation","dependencies"],"sources":["DeleteWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { DeleteWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass DeleteWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private model: WorkflowModel.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const workflowId = createIdentifier({\n id: input.id,\n version: 1\n });\n\n try {\n const result = await this.deleteEntry.execute(this.model, workflowId);\n\n if (result.isFail()) {\n return Result.fail(new WorkflowPersistenceError(result.error));\n }\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteWorkflowRepository = Repository.createImplementation({\n implementation: DeleteWorkflowRepositoryImpl,\n dependencies: [DeleteEntryUseCase, WorkflowModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,kBAAkB,QAAQ,qEAAqE;AACxG,SAASC,aAAa;AACtB,SAASC,wBAAwB;AACjC,SAASC,wBAAwB,IAAIC,UAAU;AAE/C,MAAMC,4BAA4B,CAAiC;EAC/DC,WAAWA,CACCC,WAAyC,EACzCC,KAA8B,EACxC;IAAA,KAFUD,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,KAA8B,GAA9BA,KAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,KAAwB,EAAqB;IACvD,MAAMC,UAAU,GAAGZ,gBAAgB,CAAC;MAChCa,EAAE,EAAEF,KAAK,CAACE,EAAE;MACZC,OAAO,EAAE;IACb,CAAC,CAAC;IAEF,IAAI;MACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACP,WAAW,CAACE,OAAO,CAAC,IAAI,CAACD,KAAK,EAAEG,UAAU,CAAC;MAErE,IAAIG,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;QACjB,OAAOjB,MAAM,CAACkB,IAAI,CAAC,IAAId,wBAAwB,CAACY,MAAM,CAACG,KAAK,CAAC,CAAC;MAClE;MAEA,OAAOnB,MAAM,CAACoB,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOD,KAAK,EAAE;MACZ,OAAOnB,MAAM,CAACkB,IAAI,CAAC,IAAId,wBAAwB,CAACe,KAAc,CAAC,CAAC;IACpE;EACJ;AACJ;AAEA,OAAO,MAAMd,wBAAwB,GAAGC,UAAU,CAACe,oBAAoB,CAAC;EACpEC,cAAc,EAAEf,4BAA4B;EAC5CgB,YAAY,EAAE,CAACrB,kBAAkB,EAAEC,aAAa;AACpD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js","sources":["../../../../src/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { DeleteWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass DeleteWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private model: WorkflowModel.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const workflowId = createIdentifier({\n id: input.id,\n version: 1\n });\n\n try {\n const result = await this.deleteEntry.execute(this.model, workflowId);\n\n if (result.isFail()) {\n return Result.fail(new WorkflowPersistenceError(result.error));\n }\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteWorkflowRepository = Repository.createImplementation({\n implementation: DeleteWorkflowRepositoryImpl,\n dependencies: [DeleteEntryUseCase, WorkflowModel]\n});\n"],"names":["DeleteWorkflowRepositoryImpl","deleteEntry","model","input","workflowId","createIdentifier","result","Result","WorkflowPersistenceError","error","DeleteWorkflowRepository","Repository","DeleteEntryUseCase","WorkflowModel"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,WAAyC,EACzCC,KAA8B,CACxC;aAFUD,WAAW,GAAXA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,KAAwB,EAAqB;QACvD,MAAMC,aAAaC,iBAAiB;YAChC,IAAIF,MAAM,EAAE;YACZ,SAAS;QACb;QAEA,IAAI;YACA,MAAMG,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAEF;YAE1D,IAAIE,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,OAAO,KAAK;YAGhE,OAAOC,OAAO,EAAE;QACpB,EAAE,OAAOE,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBX;IAChB,cAAc;QAACY;QAAoBC;KAAc;AACrD"}