@webiny/api-workflows 6.3.0-beta.4 → 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,327 +1,224 @@
1
1
  import { WorkflowStateRecordState } from "./abstractions.js";
2
2
  import { Result } from "@webiny/feature/api";
3
- import { WorkflowStateNotAuthorizedError, WorkflowStateNoPendingStepError, WorkflowStateStepCannotReviewError, WorkflowStateStepCannotTakeOverError, WorkflowStateStepNotStepOwnerError, WorkflowStateInReviewError, WorkflowStateRejectedError, WorkflowStateNoCurrentStepError, WorkflowStateNotInReview } from "./errors.js";
4
- import { canReview } from "./guards/canReview.js";
3
+ import { WorkflowStateInReviewError, WorkflowStateNoCurrentStepError, WorkflowStateNoPendingStepError, WorkflowStateNotAuthorizedError, WorkflowStateNotInReview, WorkflowStateRejectedError, WorkflowStateStepCannotReviewError, WorkflowStateStepCannotTakeOverError, WorkflowStateStepNotStepOwnerError } from "./errors.js";
4
+ import { canReview as canReview_js_canReview } from "./guards/canReview.js";
5
5
  import { isRejected } from "./guards/isRejected.js";
6
- import { canTakeOver } from "./guards/canTakeOver.js";
6
+ import { canTakeOver as canTakeOver_js_canTakeOver } from "./guards/canTakeOver.js";
7
7
  import { isInReview } from "./guards/isInReview.js";
8
8
  import { isStepOwner } from "./guards/isStepOwner.js";
9
- export class WorkflowState {
10
- constructor(record, teams, currentIdentity) {
11
- this.record = record;
12
- this.teams = teams;
13
- this.currentIdentity = currentIdentity;
14
- }
15
- get id() {
16
- return this.record.id;
17
- }
18
- get app() {
19
- return this.record.app;
20
- }
21
- get title() {
22
- return this.record.title;
23
- }
24
- get workflowId() {
25
- return this.record.workflowId;
26
- }
27
- get targetId() {
28
- return this.record.targetId;
29
- }
30
- get targetRevisionId() {
31
- return this.record.targetRevisionId;
32
- }
33
- get isActive() {
34
- return this.record.isActive;
35
- }
36
- get comment() {
37
- return this.record.comment;
38
- }
39
- get state() {
40
- return this.record.state;
41
- }
42
- get steps() {
43
- return this.record.steps.map(step => {
44
- return this.enrichStep({
45
- createdBy: this.record.createdBy,
46
- step
47
- });
48
- });
49
- }
50
- get createdOn() {
51
- return this.record.createdOn;
52
- }
53
- get savedOn() {
54
- return this.record.savedOn;
55
- }
56
- get createdBy() {
57
- return this.record.createdBy;
58
- }
59
- get savedBy() {
60
- return this.record.savedBy;
61
- }
62
- get done() {
63
- /**
64
- * A just-in-case check.
65
- */
66
- if (this.record.steps.length === 0) {
67
- return false;
68
- }
69
- return this.record.steps.every(step => {
70
- return step.state === WorkflowStateRecordState.approved;
71
- });
72
- }
73
-
74
- /**
75
- * Current step can be:
76
- * - in review step
77
- * - rejected step - can only be one
78
- * - first pending step
79
- * - last approved step
80
- */
81
- get currentStep() {
82
- const steps = this.steps;
83
- const inReview = steps.find(step => step.state === WorkflowStateRecordState.inReview);
84
- if (inReview) {
85
- return inReview;
86
- }
87
- const rejected = steps.find(step => step.state === WorkflowStateRecordState.rejected);
88
- if (rejected) {
89
- return rejected;
90
- }
91
- const pending = steps.find(step => step.state === WorkflowStateRecordState.pending);
92
- if (pending) {
93
- return pending;
94
- }
95
- const approved = steps.toReversed().find(step => step.state === WorkflowStateRecordState.approved);
96
- if (approved) {
97
- return approved;
98
- }
99
- throw new WorkflowStateNoCurrentStepError(steps);
100
- }
101
- get nextStep() {
102
- const steps = this.steps;
103
- const currentStep = this.currentStep;
104
- const currentIndex = steps.findIndex(step => step.id === currentStep.id);
105
- if (currentIndex === -1) {
106
- return null;
107
- }
108
- return steps[currentIndex + 1] || null;
109
- }
110
- get previousStep() {
111
- const steps = this.steps;
112
- const currentStep = this.currentStep;
113
- const currentIndex = steps.findIndex(step => step.id === currentStep.id);
114
- if (currentIndex <= 0) {
115
- return null;
116
- }
117
- return steps[currentIndex - 1] || null;
118
- }
119
-
120
- /**
121
- * Active step is the one that is currently "inReview". If there is a rejected step, returns null.
122
- */
123
- getActiveStep() {
124
- const steps = this.steps;
125
- const hasRejected = steps.some(step => {
126
- return step.state === WorkflowStateRecordState.rejected;
127
- });
128
- if (hasRejected) {
129
- return null;
130
- }
131
- const step = steps.find(step => {
132
- return step.state === WorkflowStateRecordState.inReview;
133
- });
134
- return step || null;
135
- }
136
- start() {
137
- const stepResult = this.getPendingStep();
138
- if (stepResult.isFail()) {
139
- return Result.fail(stepResult.error);
140
- }
141
- const step = stepResult.value;
142
- if (!canReview(step)) {
143
- return Result.fail(new WorkflowStateStepCannotReviewError(step));
144
- }
145
- const identity = {
146
- id: this.currentIdentity.id,
147
- displayName: this.currentIdentity.displayName,
148
- type: this.currentIdentity.type
149
- };
150
- this.updateStep(step.id, {
151
- savedBy: identity,
152
- state: WorkflowStateRecordState.inReview
153
- });
154
- this.updateRecord({
155
- savedBy: identity,
156
- state: WorkflowStateRecordState.inReview
157
- });
158
- return Result.ok();
159
- }
160
- takeOver() {
161
- if (isRejected(this.record)) {
162
- return Result.fail(new WorkflowStateRejectedError(this.record));
163
- }
164
- const step = this.getActiveStep();
165
- if (!step) {
166
- return Result.fail(new WorkflowStateNotAuthorizedError(`Cannot take over a workflow state that is not in review.`));
167
- }
168
- if (!canTakeOver(step)) {
169
- return Result.fail(new WorkflowStateStepCannotTakeOverError(step));
170
- }
171
- if (!canReview(step)) {
172
- return Result.fail(new WorkflowStateStepCannotReviewError(step));
173
- }
174
- const identity = {
175
- id: this.currentIdentity.id,
176
- displayName: this.currentIdentity.displayName,
177
- type: this.currentIdentity.type
178
- };
179
- this.updateStep(step.id, {
180
- savedBy: identity
181
- });
182
- this.updateRecord({
183
- savedBy: identity
184
- });
185
- return Result.ok();
186
- }
187
- approve(comment) {
188
- if (isRejected(this.record)) {
189
- return Result.fail(new WorkflowStateRejectedError(this.record));
190
- }
191
- const step = this.getActiveStep();
192
- /**
193
- * Step cannot be found - all steps are either approved or rejected.
194
- */
195
- if (!step) {
196
- return Result.fail(new WorkflowStateNotAuthorizedError(`Cannot approve a workflow state that is not in review.`));
197
- }
198
- if (!canReview(step)) {
199
- return Result.fail(new WorkflowStateStepCannotReviewError(step));
200
- }
201
- if (!isStepOwner(step)) {
202
- return Result.fail(new WorkflowStateStepNotStepOwnerError(step));
203
- }
204
- this.approveStep(step.id, comment);
205
- const nextStep = this.getNextStep(step.id);
206
- this.updateRecord({
207
- state: nextStep ? WorkflowStateRecordState.pending : WorkflowStateRecordState.approved
208
- });
209
- return Result.ok();
210
- }
211
- reject(comment) {
212
- if (isRejected(this.record)) {
213
- return Result.fail(new WorkflowStateRejectedError(this.record));
214
- }
215
- const step = this.getActiveStep();
216
- if (!step) {
217
- return Result.fail(new WorkflowStateNotInReview(`Cannot reject a workflow state that is not in review.`, this));
218
- }
219
- if (!canReview(step)) {
220
- return Result.fail(new WorkflowStateStepCannotReviewError(step));
221
- }
222
- if (!isStepOwner(step)) {
223
- return Result.fail(new WorkflowStateStepNotStepOwnerError(step));
224
- }
225
- this.rejectStep(step.id, comment);
226
- this.updateRecord({
227
- state: WorkflowStateRecordState.rejected
228
- });
229
- return Result.ok();
230
- }
231
- getPendingStep() {
232
- if (isRejected(this.record)) {
233
- return Result.fail(new WorkflowStateRejectedError(this.record));
234
- }
235
- if (isInReview(this.record)) {
236
- return Result.fail(new WorkflowStateInReviewError(this.record));
237
- }
238
- for (const step of this.steps) {
239
- if (step.state === WorkflowStateRecordState.pending) {
240
- return Result.ok(step);
241
- }
242
- }
243
- return Result.fail(new WorkflowStateNoPendingStepError());
244
- }
245
- updateRecord(record) {
246
- Object.assign(this.record, record);
247
- }
248
- updateStep(id, input) {
249
- const step = this.record.steps.find(s => s.id === id);
250
- if (!step) {
251
- throw new Error(`Step with ID "${id}" not found.`);
252
- }
253
- Object.assign(step, {
254
- savedBy: {
255
- id: this.currentIdentity.id,
256
- displayName: this.currentIdentity.displayName,
257
- type: this.currentIdentity.type
258
- },
259
- ...input
260
- });
261
- }
262
- approveStep(id, comment) {
263
- this.updateStep(id, {
264
- state: WorkflowStateRecordState.approved,
265
- comment
266
- });
267
- }
268
- rejectStep(id, comment) {
269
- this.updateStep(id, {
270
- state: WorkflowStateRecordState.rejected,
271
- comment
272
- });
273
- }
274
- getNextStep(currentStepId) {
275
- const index = this.record.steps.findIndex(s => s.id === currentStepId);
276
- if (index === -1) {
277
- return undefined;
278
- }
279
- return this.record.steps[index + 1];
280
- }
281
- enrichStep(params) {
282
- const {
283
- step,
284
- createdBy
285
- } = params;
286
- const identity = this.currentIdentity;
287
- /**
288
- * User who created the workflow state cannot take part in reviewing it.
289
- */
290
- if (createdBy.id === identity.id) {
291
- return {
292
- ...step,
293
- isOwner: false,
294
- canTakeOver: false,
295
- canReview: false
296
- };
297
- }
298
- /**
299
- * Current user is step owner - they started the review.
300
- */
301
- const isOwner = step.savedBy?.id === identity.id;
302
- /**
303
- * Can current user actually review this step?
304
- */
305
- const canReview = step.teams.some(team => {
306
- return this.teams.some(t => {
307
- return t.id === team.id;
308
- });
309
- });
310
- /**
311
- * Can current user take over the review from another reviewer?
312
- * Taking over is only possible if current user did not start the review of the step - and review was actually started.
313
- */
314
- const canTakeOver = canReview && !!step.savedBy?.id && step.state === WorkflowStateRecordState.inReview;
315
- return {
316
- ...step,
317
- canTakeOver: !isOwner ? canTakeOver : false,
318
- isOwner,
319
- canReview
320
- };
321
- }
322
- toRecord() {
323
- return this.record;
324
- }
9
+ class WorkflowState {
10
+ constructor(record, teams, currentIdentity){
11
+ this.record = record;
12
+ this.teams = teams;
13
+ this.currentIdentity = currentIdentity;
14
+ }
15
+ get id() {
16
+ return this.record.id;
17
+ }
18
+ get app() {
19
+ return this.record.app;
20
+ }
21
+ get title() {
22
+ return this.record.title;
23
+ }
24
+ get workflowId() {
25
+ return this.record.workflowId;
26
+ }
27
+ get targetId() {
28
+ return this.record.targetId;
29
+ }
30
+ get targetRevisionId() {
31
+ return this.record.targetRevisionId;
32
+ }
33
+ get isActive() {
34
+ return this.record.isActive;
35
+ }
36
+ get comment() {
37
+ return this.record.comment;
38
+ }
39
+ get state() {
40
+ return this.record.state;
41
+ }
42
+ get steps() {
43
+ return this.record.steps.map((step)=>this.enrichStep({
44
+ createdBy: this.record.createdBy,
45
+ step
46
+ }));
47
+ }
48
+ get createdOn() {
49
+ return this.record.createdOn;
50
+ }
51
+ get savedOn() {
52
+ return this.record.savedOn;
53
+ }
54
+ get createdBy() {
55
+ return this.record.createdBy;
56
+ }
57
+ get savedBy() {
58
+ return this.record.savedBy;
59
+ }
60
+ get done() {
61
+ if (0 === this.record.steps.length) return false;
62
+ return this.record.steps.every((step)=>step.state === WorkflowStateRecordState.approved);
63
+ }
64
+ get currentStep() {
65
+ const steps = this.steps;
66
+ const inReview = steps.find((step)=>step.state === WorkflowStateRecordState.inReview);
67
+ if (inReview) return inReview;
68
+ const rejected = steps.find((step)=>step.state === WorkflowStateRecordState.rejected);
69
+ if (rejected) return rejected;
70
+ const pending = steps.find((step)=>step.state === WorkflowStateRecordState.pending);
71
+ if (pending) return pending;
72
+ const approved = steps.toReversed().find((step)=>step.state === WorkflowStateRecordState.approved);
73
+ if (approved) return approved;
74
+ throw new WorkflowStateNoCurrentStepError(steps);
75
+ }
76
+ get nextStep() {
77
+ const steps = this.steps;
78
+ const currentStep = this.currentStep;
79
+ const currentIndex = steps.findIndex((step)=>step.id === currentStep.id);
80
+ if (-1 === currentIndex) return null;
81
+ return steps[currentIndex + 1] || null;
82
+ }
83
+ get previousStep() {
84
+ const steps = this.steps;
85
+ const currentStep = this.currentStep;
86
+ const currentIndex = steps.findIndex((step)=>step.id === currentStep.id);
87
+ if (currentIndex <= 0) return null;
88
+ return steps[currentIndex - 1] || null;
89
+ }
90
+ getActiveStep() {
91
+ const steps = this.steps;
92
+ const hasRejected = steps.some((step)=>step.state === WorkflowStateRecordState.rejected);
93
+ if (hasRejected) return null;
94
+ const step = steps.find((step)=>step.state === WorkflowStateRecordState.inReview);
95
+ return step || null;
96
+ }
97
+ start() {
98
+ const stepResult = this.getPendingStep();
99
+ if (stepResult.isFail()) return Result.fail(stepResult.error);
100
+ const step = stepResult.value;
101
+ if (!canReview_js_canReview(step)) return Result.fail(new WorkflowStateStepCannotReviewError(step));
102
+ const identity = {
103
+ id: this.currentIdentity.id,
104
+ displayName: this.currentIdentity.displayName,
105
+ type: this.currentIdentity.type
106
+ };
107
+ this.updateStep(step.id, {
108
+ savedBy: identity,
109
+ state: WorkflowStateRecordState.inReview
110
+ });
111
+ this.updateRecord({
112
+ savedBy: identity,
113
+ state: WorkflowStateRecordState.inReview
114
+ });
115
+ return Result.ok();
116
+ }
117
+ takeOver() {
118
+ if (isRejected(this.record)) return Result.fail(new WorkflowStateRejectedError(this.record));
119
+ const step = this.getActiveStep();
120
+ if (!step) return Result.fail(new WorkflowStateNotAuthorizedError("Cannot take over a workflow state that is not in review."));
121
+ if (!canTakeOver_js_canTakeOver(step)) return Result.fail(new WorkflowStateStepCannotTakeOverError(step));
122
+ if (!canReview_js_canReview(step)) return Result.fail(new WorkflowStateStepCannotReviewError(step));
123
+ const identity = {
124
+ id: this.currentIdentity.id,
125
+ displayName: this.currentIdentity.displayName,
126
+ type: this.currentIdentity.type
127
+ };
128
+ this.updateStep(step.id, {
129
+ savedBy: identity
130
+ });
131
+ this.updateRecord({
132
+ savedBy: identity
133
+ });
134
+ return Result.ok();
135
+ }
136
+ approve(comment) {
137
+ if (isRejected(this.record)) return Result.fail(new WorkflowStateRejectedError(this.record));
138
+ const step = this.getActiveStep();
139
+ if (!step) return Result.fail(new WorkflowStateNotAuthorizedError("Cannot approve a workflow state that is not in review."));
140
+ if (!canReview_js_canReview(step)) return Result.fail(new WorkflowStateStepCannotReviewError(step));
141
+ if (!isStepOwner(step)) return Result.fail(new WorkflowStateStepNotStepOwnerError(step));
142
+ this.approveStep(step.id, comment);
143
+ const nextStep = this.getNextStep(step.id);
144
+ this.updateRecord({
145
+ state: nextStep ? WorkflowStateRecordState.pending : WorkflowStateRecordState.approved
146
+ });
147
+ return Result.ok();
148
+ }
149
+ reject(comment) {
150
+ if (isRejected(this.record)) return Result.fail(new WorkflowStateRejectedError(this.record));
151
+ const step = this.getActiveStep();
152
+ if (!step) return Result.fail(new WorkflowStateNotInReview("Cannot reject a workflow state that is not in review.", this));
153
+ if (!canReview_js_canReview(step)) return Result.fail(new WorkflowStateStepCannotReviewError(step));
154
+ if (!isStepOwner(step)) return Result.fail(new WorkflowStateStepNotStepOwnerError(step));
155
+ this.rejectStep(step.id, comment);
156
+ this.updateRecord({
157
+ state: WorkflowStateRecordState.rejected
158
+ });
159
+ return Result.ok();
160
+ }
161
+ getPendingStep() {
162
+ if (isRejected(this.record)) return Result.fail(new WorkflowStateRejectedError(this.record));
163
+ if (isInReview(this.record)) return Result.fail(new WorkflowStateInReviewError(this.record));
164
+ for (const step of this.steps)if (step.state === WorkflowStateRecordState.pending) return Result.ok(step);
165
+ return Result.fail(new WorkflowStateNoPendingStepError());
166
+ }
167
+ updateRecord(record) {
168
+ Object.assign(this.record, record);
169
+ }
170
+ updateStep(id, input) {
171
+ const step = this.record.steps.find((s)=>s.id === id);
172
+ if (!step) throw new Error(`Step with ID "${id}" not found.`);
173
+ Object.assign(step, {
174
+ savedBy: {
175
+ id: this.currentIdentity.id,
176
+ displayName: this.currentIdentity.displayName,
177
+ type: this.currentIdentity.type
178
+ },
179
+ ...input
180
+ });
181
+ }
182
+ approveStep(id, comment) {
183
+ this.updateStep(id, {
184
+ state: WorkflowStateRecordState.approved,
185
+ comment
186
+ });
187
+ }
188
+ rejectStep(id, comment) {
189
+ this.updateStep(id, {
190
+ state: WorkflowStateRecordState.rejected,
191
+ comment
192
+ });
193
+ }
194
+ getNextStep(currentStepId) {
195
+ const index = this.record.steps.findIndex((s)=>s.id === currentStepId);
196
+ if (-1 === index) return;
197
+ return this.record.steps[index + 1];
198
+ }
199
+ enrichStep(params) {
200
+ const { step, createdBy } = params;
201
+ const identity = this.currentIdentity;
202
+ if (createdBy.id === identity.id) return {
203
+ ...step,
204
+ isOwner: false,
205
+ canTakeOver: false,
206
+ canReview: false
207
+ };
208
+ const isOwner = step.savedBy?.id === identity.id;
209
+ const canReview = step.teams.some((team)=>this.teams.some((t)=>t.id === team.id));
210
+ const canTakeOver = canReview && !!step.savedBy?.id && step.state === WorkflowStateRecordState.inReview;
211
+ return {
212
+ ...step,
213
+ canTakeOver: isOwner ? false : canTakeOver,
214
+ isOwner,
215
+ canReview
216
+ };
217
+ }
218
+ toRecord() {
219
+ return this.record;
220
+ }
325
221
  }
222
+ export { WorkflowState };
326
223
 
327
224
  //# sourceMappingURL=WorkflowState.js.map