@webiny/api-headless-cms-workflows 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2

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 (510) hide show
  1. package/{features/EntryWorkflows/feature.d.ts → CmsWorkflowsFeature.d.ts} +1 -1
  2. package/CmsWorkflowsFeature.js +28 -0
  3. package/CmsWorkflowsFeature.js.map +1 -0
  4. package/domain/errors.d.ts +27 -0
  5. package/domain/errors.js +14 -0
  6. package/domain/errors.js.map +1 -0
  7. package/features/Workflows/feature.js +2 -0
  8. package/features/Workflows/feature.js.map +1 -1
  9. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.d.ts +18 -6
  10. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js +30 -13
  11. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js.map +1 -1
  12. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.d.ts +23 -0
  13. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.js +44 -0
  14. package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.js.map +1 -0
  15. package/features/hooks/BlockDeleteMultipleWhileInReview.d.ts +22 -0
  16. package/features/hooks/BlockDeleteMultipleWhileInReview.js +64 -0
  17. package/features/hooks/BlockDeleteMultipleWhileInReview.js.map +1 -0
  18. package/features/hooks/BlockDeleteWhileInReview.d.ts +18 -0
  19. package/features/hooks/BlockDeleteWhileInReview.js +45 -0
  20. package/features/hooks/BlockDeleteWhileInReview.js.map +1 -0
  21. package/features/hooks/BlockFolderChangeWhileInReview.d.ts +21 -0
  22. package/features/hooks/BlockFolderChangeWhileInReview.js +44 -0
  23. package/features/hooks/BlockFolderChangeWhileInReview.js.map +1 -0
  24. package/features/hooks/BlockMoveWhileInReview.d.ts +19 -0
  25. package/features/hooks/BlockMoveWhileInReview.js +46 -0
  26. package/features/hooks/BlockMoveWhileInReview.js.map +1 -0
  27. package/features/hooks/BlockRevisionDeleteWhileInReview.d.ts +17 -0
  28. package/features/hooks/BlockRevisionDeleteWhileInReview.js +46 -0
  29. package/features/hooks/BlockRevisionDeleteWhileInReview.js.map +1 -0
  30. package/features/hooks/BlockUpdateWhileInReview.d.ts +25 -0
  31. package/features/hooks/BlockUpdateWhileInReview.js +43 -0
  32. package/features/hooks/BlockUpdateWhileInReview.js.map +1 -0
  33. package/features/hooks/DeleteModelBoundToWorkflowDecorator.d.ts +22 -0
  34. package/features/hooks/DeleteModelBoundToWorkflowDecorator.js +52 -0
  35. package/features/hooks/DeleteModelBoundToWorkflowDecorator.js.map +1 -0
  36. package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.d.ts +27 -0
  37. package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.js +64 -0
  38. package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.js.map +1 -0
  39. package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.d.ts +19 -0
  40. package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.js +47 -0
  41. package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.js.map +1 -0
  42. package/features/hooks/DeleteReviewsOnEntryDelete.d.ts +19 -0
  43. package/features/hooks/DeleteReviewsOnEntryDelete.js +46 -0
  44. package/features/hooks/DeleteReviewsOnEntryDelete.js.map +1 -0
  45. package/features/hooks/DeleteReviewsOnRevisionDelete.d.ts +18 -0
  46. package/features/hooks/DeleteReviewsOnRevisionDelete.js +46 -0
  47. package/features/hooks/DeleteReviewsOnRevisionDelete.js.map +1 -0
  48. package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.d.ts +28 -0
  49. package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.js +63 -0
  50. package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.js.map +1 -0
  51. package/features/hooks/NullReviewStateOnRevisionCreate.d.ts +15 -0
  52. package/features/hooks/NullReviewStateOnRevisionCreate.js +17 -0
  53. package/features/hooks/NullReviewStateOnRevisionCreate.js.map +1 -0
  54. package/features/hooks/RequireApprovedReviewOnPublish.d.ts +22 -0
  55. package/features/hooks/RequireApprovedReviewOnPublish.js +43 -0
  56. package/features/hooks/RequireApprovedReviewOnPublish.js.map +1 -0
  57. package/features/hooks/RequireApprovedReviewOnRepublish.d.ts +23 -0
  58. package/features/hooks/RequireApprovedReviewOnRepublish.js +49 -0
  59. package/features/hooks/RequireApprovedReviewOnRepublish.js.map +1 -0
  60. package/features/hooks/feature.d.ts +8 -0
  61. package/features/hooks/feature.js +39 -0
  62. package/features/hooks/feature.js.map +1 -0
  63. package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.d.ts +18 -0
  64. package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.js +97 -0
  65. package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.js.map +1 -0
  66. package/features/target/CandidateFolderReadRules/abstractions.d.ts +35 -0
  67. package/features/target/CandidateFolderReadRules/abstractions.js +5 -0
  68. package/features/target/CandidateFolderReadRules/abstractions.js.map +1 -0
  69. package/features/target/CandidateFolderReadRules/index.d.ts +1 -0
  70. package/features/target/CandidateFolderReadRules/index.js +1 -0
  71. package/features/target/CmsEntryAccess/CmsEntryAccess.d.ts +32 -0
  72. package/features/target/CmsEntryAccess/CmsEntryAccess.js +141 -0
  73. package/features/target/CmsEntryAccess/CmsEntryAccess.js.map +1 -0
  74. package/features/target/CmsEntryAccess/abstractions.d.ts +48 -0
  75. package/features/target/CmsEntryAccess/abstractions.js +5 -0
  76. package/features/target/CmsEntryAccess/abstractions.js.map +1 -0
  77. package/features/target/CmsEntryAccess/index.d.ts +2 -0
  78. package/features/target/CmsEntryAccess/index.js +2 -0
  79. package/features/target/CmsEntryAccess/unreadableCodes.d.ts +1 -0
  80. package/features/target/CmsEntryAccess/unreadableCodes.js +9 -0
  81. package/features/target/CmsEntryAccess/unreadableCodes.js.map +1 -0
  82. package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.d.ts +21 -0
  83. package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.js +66 -0
  84. package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.js.map +1 -0
  85. package/features/target/CmsEntryDeniedFolders/abstractions.d.ts +23 -0
  86. package/features/target/CmsEntryDeniedFolders/abstractions.js +5 -0
  87. package/features/target/CmsEntryDeniedFolders/abstractions.js.map +1 -0
  88. package/features/target/CmsEntryDeniedFolders/index.d.ts +1 -0
  89. package/features/target/CmsEntryDeniedFolders/index.js +1 -0
  90. package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.d.ts +18 -0
  91. package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.js +43 -0
  92. package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.js.map +1 -0
  93. package/features/target/CmsEntryFolderExistsService/abstractions.d.ts +23 -0
  94. package/features/target/CmsEntryFolderExistsService/abstractions.js +5 -0
  95. package/features/target/CmsEntryFolderExistsService/abstractions.js.map +1 -0
  96. package/features/target/CmsEntryFolderExistsService/index.d.ts +1 -0
  97. package/features/target/CmsEntryFolderExistsService/index.js +1 -0
  98. package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.d.ts +10 -0
  99. package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.js +14 -0
  100. package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.js.map +1 -0
  101. package/features/target/CmsEntryReviewNamespace/abstractions.d.ts +17 -0
  102. package/features/target/CmsEntryReviewNamespace/abstractions.js +5 -0
  103. package/features/target/CmsEntryReviewNamespace/abstractions.js.map +1 -0
  104. package/features/target/CmsEntryReviewNamespace/index.d.ts +1 -0
  105. package/features/target/CmsEntryReviewNamespace/index.js +1 -0
  106. package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.d.ts +20 -0
  107. package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.js +80 -0
  108. package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.js.map +1 -0
  109. package/features/target/CmsEntryReviewReadFilter/abstractions.d.ts +24 -0
  110. package/features/target/CmsEntryReviewReadFilter/abstractions.js +5 -0
  111. package/features/target/CmsEntryReviewReadFilter/abstractions.js.map +1 -0
  112. package/features/target/CmsEntryReviewReadFilter/index.d.ts +1 -0
  113. package/features/target/CmsEntryReviewReadFilter/index.js +1 -0
  114. package/features/target/CmsEntryReviewTargetEditor.d.ts +28 -0
  115. package/features/target/CmsEntryReviewTargetEditor.js +128 -0
  116. package/features/target/CmsEntryReviewTargetEditor.js.map +1 -0
  117. package/features/target/CmsEntryReviewTargetFolderChain.d.ts +22 -0
  118. package/features/target/CmsEntryReviewTargetFolderChain.js +37 -0
  119. package/features/target/CmsEntryReviewTargetFolderChain.js.map +1 -0
  120. package/features/target/CmsEntryReviewTargetLink.d.ts +17 -0
  121. package/features/target/CmsEntryReviewTargetLink.js +18 -0
  122. package/features/target/CmsEntryReviewTargetLink.js.map +1 -0
  123. package/features/target/CmsEntryReviewTargetLoader.d.ts +16 -0
  124. package/features/target/CmsEntryReviewTargetLoader.js +29 -0
  125. package/features/target/CmsEntryReviewTargetLoader.js.map +1 -0
  126. package/features/target/CmsEntryReviewTargetReadAccess.d.ts +41 -0
  127. package/features/target/CmsEntryReviewTargetReadAccess.js +91 -0
  128. package/features/target/CmsEntryReviewTargetReadAccess.js.map +1 -0
  129. package/features/target/CmsEntryReviewTargetSync.d.ts +23 -0
  130. package/features/target/CmsEntryReviewTargetSync.js +42 -0
  131. package/features/target/CmsEntryReviewTargetSync.js.map +1 -0
  132. package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.d.ts +27 -0
  133. package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.js +81 -0
  134. package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.js.map +1 -0
  135. package/features/target/CmsEntryTargetReader/abstractions.d.ts +40 -0
  136. package/features/target/CmsEntryTargetReader/abstractions.js +5 -0
  137. package/features/target/CmsEntryTargetReader/abstractions.js.map +1 -0
  138. package/features/target/CmsEntryTargetReader/index.d.ts +1 -0
  139. package/features/target/CmsEntryTargetReader/index.js +1 -0
  140. package/features/target/CmsModelGroupService/CmsModelGroupService.d.ts +12 -0
  141. package/features/target/CmsModelGroupService/CmsModelGroupService.js +25 -0
  142. package/features/target/CmsModelGroupService/CmsModelGroupService.js.map +1 -0
  143. package/features/target/CmsModelGroupService/abstractions.d.ts +24 -0
  144. package/features/target/CmsModelGroupService/abstractions.js +5 -0
  145. package/features/target/CmsModelGroupService/abstractions.js.map +1 -0
  146. package/features/target/CmsModelGroupService/index.d.ts +1 -0
  147. package/features/target/CmsModelGroupService/index.js +1 -0
  148. package/features/target/CmsWorkflowModelParser.d.ts +9 -0
  149. package/features/target/CmsWorkflowModelParser.js +18 -0
  150. package/features/target/CmsWorkflowModelParser.js.map +1 -0
  151. package/features/target/FolderReadRule.d.ts +9 -0
  152. package/features/target/FolderReadRule.js +0 -0
  153. package/features/target/WorkflowEntrySystemField.d.ts +13 -0
  154. package/features/target/WorkflowEntrySystemField.js +35 -0
  155. package/features/target/WorkflowEntrySystemField.js.map +1 -0
  156. package/features/target/feature.d.ts +5 -0
  157. package/features/target/feature.js +41 -0
  158. package/features/target/feature.js.map +1 -0
  159. package/features/target/getModelSafeValidationMessage.d.ts +11 -0
  160. package/features/target/getModelSafeValidationMessage.js +28 -0
  161. package/features/target/getModelSafeValidationMessage.js.map +1 -0
  162. package/features/target/isEditorFieldValue.d.ts +9 -0
  163. package/features/target/isEditorFieldValue.js +30 -0
  164. package/features/target/isEditorFieldValue.js.map +1 -0
  165. package/features/target/toCmsReviewTarget.d.ts +4 -0
  166. package/features/target/toCmsReviewTarget.js +26 -0
  167. package/features/target/toCmsReviewTarget.js.map +1 -0
  168. package/features/target/toEditorFields.d.ts +9 -0
  169. package/features/target/toEditorFields.js +48 -0
  170. package/features/target/toEditorFields.js.map +1 -0
  171. package/features/target/toEntryValuesPatch.d.ts +9 -0
  172. package/features/target/toEntryValuesPatch.js +31 -0
  173. package/features/target/toEntryValuesPatch.js.map +1 -0
  174. package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.d.ts +13 -0
  175. package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.js +35 -0
  176. package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.js.map +1 -0
  177. package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.d.ts +26 -0
  178. package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.js +5 -0
  179. package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.js.map +1 -0
  180. package/features/wrappers/ApproveCmsEntryReviewStep/feature.d.ts +4 -0
  181. package/features/wrappers/ApproveCmsEntryReviewStep/feature.js +11 -0
  182. package/features/wrappers/ApproveCmsEntryReviewStep/feature.js.map +1 -0
  183. package/features/wrappers/ApproveCmsEntryReviewStep/index.d.ts +1 -0
  184. package/features/wrappers/ApproveCmsEntryReviewStep/index.js +1 -0
  185. package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.d.ts +13 -0
  186. package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.js +37 -0
  187. package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.js.map +1 -0
  188. package/features/wrappers/CancelCmsEntryReview/abstractions.d.ts +30 -0
  189. package/features/wrappers/CancelCmsEntryReview/abstractions.js +5 -0
  190. package/features/wrappers/CancelCmsEntryReview/abstractions.js.map +1 -0
  191. package/features/wrappers/CancelCmsEntryReview/feature.d.ts +4 -0
  192. package/features/wrappers/CancelCmsEntryReview/feature.js +11 -0
  193. package/features/wrappers/CancelCmsEntryReview/feature.js.map +1 -0
  194. package/features/wrappers/CancelCmsEntryReview/index.d.ts +1 -0
  195. package/features/wrappers/CancelCmsEntryReview/index.js +1 -0
  196. package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.d.ts +19 -0
  197. package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js +85 -0
  198. package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js.map +1 -0
  199. package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.d.ts +41 -0
  200. package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.js +5 -0
  201. package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.js.map +1 -0
  202. package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.d.ts +4 -0
  203. package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.js +11 -0
  204. package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.js.map +1 -0
  205. package/features/wrappers/CancelCmsEntryReviewsForDelete/index.d.ts +1 -0
  206. package/features/wrappers/CancelCmsEntryReviewsForDelete/index.js +1 -0
  207. package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.d.ts +15 -0
  208. package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.js +46 -0
  209. package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.js.map +1 -0
  210. package/features/wrappers/CmsEntryFolderExists/abstractions.d.ts +29 -0
  211. package/features/wrappers/CmsEntryFolderExists/abstractions.js +5 -0
  212. package/features/wrappers/CmsEntryFolderExists/abstractions.js.map +1 -0
  213. package/features/wrappers/CmsEntryFolderExists/feature.d.ts +4 -0
  214. package/features/wrappers/CmsEntryFolderExists/feature.js +11 -0
  215. package/features/wrappers/CmsEntryFolderExists/feature.js.map +1 -0
  216. package/features/wrappers/CmsEntryFolderExists/index.d.ts +1 -0
  217. package/features/wrappers/CmsEntryFolderExists/index.js +1 -0
  218. package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.d.ts +17 -0
  219. package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.js +63 -0
  220. package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.js.map +1 -0
  221. package/features/wrappers/CmsEntryReviewGuardService/abstractions.d.ts +37 -0
  222. package/features/wrappers/CmsEntryReviewGuardService/abstractions.js +5 -0
  223. package/features/wrappers/CmsEntryReviewGuardService/abstractions.js.map +1 -0
  224. package/features/wrappers/CmsEntryReviewGuardService/index.d.ts +1 -0
  225. package/features/wrappers/CmsEntryReviewGuardService/index.js +1 -0
  226. package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.d.ts +25 -0
  227. package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.js +98 -0
  228. package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.js.map +1 -0
  229. package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.d.ts +32 -0
  230. package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.js +5 -0
  231. package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.js.map +1 -0
  232. package/features/wrappers/DeleteCmsEntryWorkflow/feature.d.ts +4 -0
  233. package/features/wrappers/DeleteCmsEntryWorkflow/feature.js +11 -0
  234. package/features/wrappers/DeleteCmsEntryWorkflow/feature.js.map +1 -0
  235. package/features/wrappers/DeleteCmsEntryWorkflow/index.d.ts +1 -0
  236. package/features/wrappers/DeleteCmsEntryWorkflow/index.js +1 -0
  237. package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.d.ts +13 -0
  238. package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.js +40 -0
  239. package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.js.map +1 -0
  240. package/features/wrappers/GetCmsEntryReview/abstractions.d.ts +28 -0
  241. package/features/wrappers/GetCmsEntryReview/abstractions.js +5 -0
  242. package/features/wrappers/GetCmsEntryReview/abstractions.js.map +1 -0
  243. package/features/wrappers/GetCmsEntryReview/feature.d.ts +4 -0
  244. package/features/wrappers/GetCmsEntryReview/feature.js +11 -0
  245. package/features/wrappers/GetCmsEntryReview/feature.js.map +1 -0
  246. package/features/wrappers/GetCmsEntryReview/index.d.ts +1 -0
  247. package/features/wrappers/GetCmsEntryReview/index.js +1 -0
  248. package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.d.ts +13 -0
  249. package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.js +39 -0
  250. package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.js.map +1 -0
  251. package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.d.ts +33 -0
  252. package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.js +5 -0
  253. package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.js.map +1 -0
  254. package/features/wrappers/GetCmsEntryReviewStepRun/feature.d.ts +4 -0
  255. package/features/wrappers/GetCmsEntryReviewStepRun/feature.js +11 -0
  256. package/features/wrappers/GetCmsEntryReviewStepRun/feature.js.map +1 -0
  257. package/features/wrappers/GetCmsEntryReviewStepRun/index.d.ts +1 -0
  258. package/features/wrappers/GetCmsEntryReviewStepRun/index.js +1 -0
  259. package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.d.ts +19 -0
  260. package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.js +76 -0
  261. package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.js.map +1 -0
  262. package/features/wrappers/GetCmsEntryTargetReview/abstractions.d.ts +36 -0
  263. package/features/wrappers/GetCmsEntryTargetReview/abstractions.js +5 -0
  264. package/features/wrappers/GetCmsEntryTargetReview/abstractions.js.map +1 -0
  265. package/features/wrappers/GetCmsEntryTargetReview/feature.d.ts +4 -0
  266. package/features/wrappers/GetCmsEntryTargetReview/feature.js +11 -0
  267. package/features/wrappers/GetCmsEntryTargetReview/feature.js.map +1 -0
  268. package/features/wrappers/GetCmsEntryTargetReview/index.d.ts +1 -0
  269. package/features/wrappers/GetCmsEntryTargetReview/index.js +1 -0
  270. package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.d.ts +13 -0
  271. package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.js +34 -0
  272. package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.js.map +1 -0
  273. package/features/wrappers/GetCmsEntryWorkflow/abstractions.d.ts +24 -0
  274. package/features/wrappers/GetCmsEntryWorkflow/abstractions.js +5 -0
  275. package/features/wrappers/GetCmsEntryWorkflow/abstractions.js.map +1 -0
  276. package/features/wrappers/GetCmsEntryWorkflow/feature.d.ts +4 -0
  277. package/features/wrappers/GetCmsEntryWorkflow/feature.js +11 -0
  278. package/features/wrappers/GetCmsEntryWorkflow/feature.js.map +1 -0
  279. package/features/wrappers/GetCmsEntryWorkflow/index.d.ts +1 -0
  280. package/features/wrappers/GetCmsEntryWorkflow/index.js +1 -0
  281. package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.d.ts +19 -0
  282. package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.js +54 -0
  283. package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.js.map +1 -0
  284. package/features/wrappers/InspectCmsEntryRouting/abstractions.d.ts +37 -0
  285. package/features/wrappers/InspectCmsEntryRouting/abstractions.js +5 -0
  286. package/features/wrappers/InspectCmsEntryRouting/abstractions.js.map +1 -0
  287. package/features/wrappers/InspectCmsEntryRouting/feature.d.ts +4 -0
  288. package/features/wrappers/InspectCmsEntryRouting/feature.js +11 -0
  289. package/features/wrappers/InspectCmsEntryRouting/feature.js.map +1 -0
  290. package/features/wrappers/InspectCmsEntryRouting/index.d.ts +1 -0
  291. package/features/wrappers/InspectCmsEntryRouting/index.js +1 -0
  292. package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.d.ts +25 -0
  293. package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.js +109 -0
  294. package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.js.map +1 -0
  295. package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.d.ts +36 -0
  296. package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.js +6 -0
  297. package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.js.map +1 -0
  298. package/features/wrappers/ListCmsEntryBlockingReviews/feature.d.ts +4 -0
  299. package/features/wrappers/ListCmsEntryBlockingReviews/feature.js +11 -0
  300. package/features/wrappers/ListCmsEntryBlockingReviews/feature.js.map +1 -0
  301. package/features/wrappers/ListCmsEntryBlockingReviews/index.d.ts +1 -0
  302. package/features/wrappers/ListCmsEntryBlockingReviews/index.js +1 -0
  303. package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.d.ts +13 -0
  304. package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.js +41 -0
  305. package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.js.map +1 -0
  306. package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.d.ts +30 -0
  307. package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.js +5 -0
  308. package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.js.map +1 -0
  309. package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.d.ts +4 -0
  310. package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.js +11 -0
  311. package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.js.map +1 -0
  312. package/features/wrappers/ListCmsEntryReviewStepCandidates/index.d.ts +1 -0
  313. package/features/wrappers/ListCmsEntryReviewStepCandidates/index.js +1 -0
  314. package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.d.ts +17 -0
  315. package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.js +85 -0
  316. package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.js.map +1 -0
  317. package/features/wrappers/ListCmsEntryReviews/abstractions.d.ts +50 -0
  318. package/features/wrappers/ListCmsEntryReviews/abstractions.js +5 -0
  319. package/features/wrappers/ListCmsEntryReviews/abstractions.js.map +1 -0
  320. package/features/wrappers/ListCmsEntryReviews/feature.d.ts +4 -0
  321. package/features/wrappers/ListCmsEntryReviews/feature.js +11 -0
  322. package/features/wrappers/ListCmsEntryReviews/feature.js.map +1 -0
  323. package/features/wrappers/ListCmsEntryReviews/index.d.ts +1 -0
  324. package/features/wrappers/ListCmsEntryReviews/index.js +1 -0
  325. package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.d.ts +25 -0
  326. package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.js +83 -0
  327. package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.js.map +1 -0
  328. package/features/wrappers/ListCmsEntryStepCandidates/abstractions.d.ts +41 -0
  329. package/features/wrappers/ListCmsEntryStepCandidates/abstractions.js +5 -0
  330. package/features/wrappers/ListCmsEntryStepCandidates/abstractions.js.map +1 -0
  331. package/features/wrappers/ListCmsEntryStepCandidates/feature.d.ts +4 -0
  332. package/features/wrappers/ListCmsEntryStepCandidates/feature.js +11 -0
  333. package/features/wrappers/ListCmsEntryStepCandidates/feature.js.map +1 -0
  334. package/features/wrappers/ListCmsEntryStepCandidates/index.d.ts +1 -0
  335. package/features/wrappers/ListCmsEntryStepCandidates/index.js +1 -0
  336. package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.d.ts +17 -0
  337. package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.js +106 -0
  338. package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.js.map +1 -0
  339. package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.d.ts +58 -0
  340. package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.js +5 -0
  341. package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.js.map +1 -0
  342. package/features/wrappers/ListCmsEntryWorkflowModels/feature.d.ts +4 -0
  343. package/features/wrappers/ListCmsEntryWorkflowModels/feature.js +11 -0
  344. package/features/wrappers/ListCmsEntryWorkflowModels/feature.js.map +1 -0
  345. package/features/wrappers/ListCmsEntryWorkflowModels/index.d.ts +2 -0
  346. package/features/wrappers/ListCmsEntryWorkflowModels/index.js +1 -0
  347. package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.d.ts +8 -0
  348. package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.js +20 -0
  349. package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.js.map +1 -0
  350. package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.d.ts +17 -0
  351. package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.js +43 -0
  352. package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.js.map +1 -0
  353. package/features/wrappers/ListCmsEntryWorkflows/abstractions.d.ts +24 -0
  354. package/features/wrappers/ListCmsEntryWorkflows/abstractions.js +5 -0
  355. package/features/wrappers/ListCmsEntryWorkflows/abstractions.js.map +1 -0
  356. package/features/wrappers/ListCmsEntryWorkflows/feature.d.ts +4 -0
  357. package/features/wrappers/ListCmsEntryWorkflows/feature.js +11 -0
  358. package/features/wrappers/ListCmsEntryWorkflows/feature.js.map +1 -0
  359. package/features/wrappers/ListCmsEntryWorkflows/index.d.ts +1 -0
  360. package/features/wrappers/ListCmsEntryWorkflows/index.js +1 -0
  361. package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.d.ts +13 -0
  362. package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.js +40 -0
  363. package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.js.map +1 -0
  364. package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.d.ts +32 -0
  365. package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.js +5 -0
  366. package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.js.map +1 -0
  367. package/features/wrappers/ReassignCmsEntryReviewStep/feature.d.ts +4 -0
  368. package/features/wrappers/ReassignCmsEntryReviewStep/feature.js +11 -0
  369. package/features/wrappers/ReassignCmsEntryReviewStep/feature.js.map +1 -0
  370. package/features/wrappers/ReassignCmsEntryReviewStep/index.d.ts +1 -0
  371. package/features/wrappers/ReassignCmsEntryReviewStep/index.js +1 -0
  372. package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.d.ts +13 -0
  373. package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.js +35 -0
  374. package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.js.map +1 -0
  375. package/features/wrappers/RejectCmsEntryReviewStep/abstractions.d.ts +26 -0
  376. package/features/wrappers/RejectCmsEntryReviewStep/abstractions.js +5 -0
  377. package/features/wrappers/RejectCmsEntryReviewStep/abstractions.js.map +1 -0
  378. package/features/wrappers/RejectCmsEntryReviewStep/feature.d.ts +4 -0
  379. package/features/wrappers/RejectCmsEntryReviewStep/feature.js +11 -0
  380. package/features/wrappers/RejectCmsEntryReviewStep/feature.js.map +1 -0
  381. package/features/wrappers/RejectCmsEntryReviewStep/index.d.ts +1 -0
  382. package/features/wrappers/RejectCmsEntryReviewStep/index.js +1 -0
  383. package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.d.ts +21 -0
  384. package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.js +63 -0
  385. package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.js.map +1 -0
  386. package/features/wrappers/RequestCmsEntryReview/abstractions.d.ts +38 -0
  387. package/features/wrappers/RequestCmsEntryReview/abstractions.js +5 -0
  388. package/features/wrappers/RequestCmsEntryReview/abstractions.js.map +1 -0
  389. package/features/wrappers/RequestCmsEntryReview/feature.d.ts +4 -0
  390. package/features/wrappers/RequestCmsEntryReview/feature.js +11 -0
  391. package/features/wrappers/RequestCmsEntryReview/feature.js.map +1 -0
  392. package/features/wrappers/RequestCmsEntryReview/index.d.ts +1 -0
  393. package/features/wrappers/RequestCmsEntryReview/index.js +1 -0
  394. package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.d.ts +13 -0
  395. package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.js +39 -0
  396. package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.js.map +1 -0
  397. package/features/wrappers/RestartCmsEntryReviewStep/abstractions.d.ts +30 -0
  398. package/features/wrappers/RestartCmsEntryReviewStep/abstractions.js +5 -0
  399. package/features/wrappers/RestartCmsEntryReviewStep/abstractions.js.map +1 -0
  400. package/features/wrappers/RestartCmsEntryReviewStep/feature.d.ts +4 -0
  401. package/features/wrappers/RestartCmsEntryReviewStep/feature.js +11 -0
  402. package/features/wrappers/RestartCmsEntryReviewStep/feature.js.map +1 -0
  403. package/features/wrappers/RestartCmsEntryReviewStep/index.d.ts +1 -0
  404. package/features/wrappers/RestartCmsEntryReviewStep/index.js +1 -0
  405. package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.d.ts +13 -0
  406. package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.js +34 -0
  407. package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.js.map +1 -0
  408. package/features/wrappers/StartCmsEntryReviewStep/abstractions.d.ts +25 -0
  409. package/features/wrappers/StartCmsEntryReviewStep/abstractions.js +5 -0
  410. package/features/wrappers/StartCmsEntryReviewStep/abstractions.js.map +1 -0
  411. package/features/wrappers/StartCmsEntryReviewStep/feature.d.ts +4 -0
  412. package/features/wrappers/StartCmsEntryReviewStep/feature.js +11 -0
  413. package/features/wrappers/StartCmsEntryReviewStep/feature.js.map +1 -0
  414. package/features/wrappers/StartCmsEntryReviewStep/index.d.ts +1 -0
  415. package/features/wrappers/StartCmsEntryReviewStep/index.js +1 -0
  416. package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.d.ts +17 -0
  417. package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.js +57 -0
  418. package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.js.map +1 -0
  419. package/features/wrappers/StoreCmsEntryWorkflow/abstractions.d.ts +32 -0
  420. package/features/wrappers/StoreCmsEntryWorkflow/abstractions.js +5 -0
  421. package/features/wrappers/StoreCmsEntryWorkflow/abstractions.js.map +1 -0
  422. package/features/wrappers/StoreCmsEntryWorkflow/feature.d.ts +4 -0
  423. package/features/wrappers/StoreCmsEntryWorkflow/feature.js +11 -0
  424. package/features/wrappers/StoreCmsEntryWorkflow/feature.js.map +1 -0
  425. package/features/wrappers/StoreCmsEntryWorkflow/index.d.ts +1 -0
  426. package/features/wrappers/StoreCmsEntryWorkflow/index.js +1 -0
  427. package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.d.ts +13 -0
  428. package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.js +35 -0
  429. package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.js.map +1 -0
  430. package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.d.ts +27 -0
  431. package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.js +5 -0
  432. package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.js.map +1 -0
  433. package/features/wrappers/TakeOverCmsEntryReviewStep/feature.d.ts +4 -0
  434. package/features/wrappers/TakeOverCmsEntryReviewStep/feature.js +11 -0
  435. package/features/wrappers/TakeOverCmsEntryReviewStep/feature.js.map +1 -0
  436. package/features/wrappers/TakeOverCmsEntryReviewStep/index.d.ts +1 -0
  437. package/features/wrappers/TakeOverCmsEntryReviewStep/index.js +1 -0
  438. package/features/wrappers/feature.d.ts +9 -0
  439. package/features/wrappers/feature.js +57 -0
  440. package/features/wrappers/feature.js.map +1 -0
  441. package/features/wrappers/shared/cmsWorkflows.d.ts +6 -0
  442. package/features/wrappers/shared/cmsWorkflows.js +8 -0
  443. package/features/wrappers/shared/cmsWorkflows.js.map +1 -0
  444. package/graphql/CmsWorkflowsSchemaFactory.d.ts +14 -0
  445. package/graphql/CmsWorkflowsSchemaFactory.js +695 -0
  446. package/graphql/CmsWorkflowsSchemaFactory.js.map +1 -0
  447. package/graphql/entrySystemSchema.d.ts +5 -1
  448. package/graphql/entrySystemSchema.js +3 -2
  449. package/graphql/entrySystemSchema.js.map +1 -1
  450. package/graphql/isValidRevisionId.d.ts +6 -0
  451. package/graphql/isValidRevisionId.js +9 -0
  452. package/graphql/isValidRevisionId.js.map +1 -0
  453. package/index.d.ts +2 -1
  454. package/index.js +1 -19
  455. package/package.json +22 -16
  456. package/types.d.ts +24 -0
  457. package/types.js +0 -0
  458. package/utils/appName.d.ts +9 -5
  459. package/utils/appName.js +6 -4
  460. package/utils/appName.js.map +1 -1
  461. package/utils/folderType.d.ts +4 -0
  462. package/utils/folderType.js +9 -0
  463. package/utils/folderType.js.map +1 -0
  464. package/utils/isBindableModel.d.ts +9 -0
  465. package/utils/isBindableModel.js +8 -0
  466. package/utils/isBindableModel.js.map +1 -0
  467. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.d.ts +0 -15
  468. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js +0 -35
  469. package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js.map +0 -1
  470. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.d.ts +0 -13
  471. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js +0 -45
  472. package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js.map +0 -1
  473. package/features/EntryWorkflows/errors.d.ts +0 -11
  474. package/features/EntryWorkflows/errors.js +0 -12
  475. package/features/EntryWorkflows/errors.js.map +0 -1
  476. package/features/EntryWorkflows/feature.js +0 -29
  477. package/features/EntryWorkflows/feature.js.map +0 -1
  478. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.d.ts +0 -11
  479. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js +0 -37
  480. package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js.map +0 -1
  481. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.d.ts +0 -13
  482. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js +0 -35
  483. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js.map +0 -1
  484. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.d.ts +0 -13
  485. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js +0 -35
  486. package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js.map +0 -1
  487. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.d.ts +0 -11
  488. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js +0 -26
  489. package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js.map +0 -1
  490. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.d.ts +0 -13
  491. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js +0 -42
  492. package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js.map +0 -1
  493. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.d.ts +0 -13
  494. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js +0 -37
  495. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js.map +0 -1
  496. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.d.ts +0 -13
  497. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js +0 -36
  498. package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js.map +0 -1
  499. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.d.ts +0 -11
  500. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js +0 -46
  501. package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js.map +0 -1
  502. package/features/EntryWorkflows/index.d.ts +0 -1
  503. package/features/EntryWorkflows/index.js +0 -1
  504. package/index.js.map +0 -1
  505. package/utils/modelAllowed.d.ts +0 -2
  506. package/utils/modelAllowed.js +0 -9
  507. package/utils/modelAllowed.js.map +0 -1
  508. package/utils/state.d.ts +0 -3
  509. package/utils/state.js +0 -12
  510. package/utils/state.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { ReviewWithAssignmentsAndViewerFlags } from "@webiny/api-workflows/domain/assignment/types.js";
3
+ import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
4
+ import type { ReviewPersistenceError, ReviewTargetNotFoundError } from "@webiny/api-workflows/domain/review/errors.js";
5
+ import type { GetTargetReviewUseCase } from "@webiny/api-workflows/features/review/GetTargetReview/index.js";
6
+ import type { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
7
+ export interface GetCmsEntryTargetReviewInput {
8
+ /** Namespace id, `cms.<modelId>`. */
9
+ model: string;
10
+ targetRevisionId: string;
11
+ }
12
+ export interface IGetCmsEntryTargetReviewUseCaseErrors {
13
+ notAuthenticated: WorkflowsNotAuthenticatedError;
14
+ notAuthorized: WorkflowsNotAuthorizedError;
15
+ targetNotFound: ReviewTargetNotFoundError;
16
+ persistence: ReviewPersistenceError;
17
+ get: GetTargetReviewUseCase.Error;
18
+ assignments: ListReviewAssignmentsUseCase.Error;
19
+ }
20
+ type UseCaseError = IGetCmsEntryTargetReviewUseCaseErrors[keyof IGetCmsEntryTargetReviewUseCaseErrors];
21
+ export interface IGetCmsEntryTargetReviewUseCase {
22
+ execute(input: GetCmsEntryTargetReviewInput): Promise<Result<ReviewWithAssignmentsAndViewerFlags | null, UseCaseError>>;
23
+ }
24
+ /**
25
+ * The active review of a CMS entry revision with the viewer's flags and redacted assignment
26
+ * entries, or `null` (spec 10, R96). Needs read access to the revision: a missing, trashed or
27
+ * unreadable revision is `NotAuthorized` (R108); a namespace of another app is not found (R46).
28
+ */
29
+ export declare const GetCmsEntryTargetReviewUseCase: import("@webiny/di").Abstraction<IGetCmsEntryTargetReviewUseCase>;
30
+ export declare namespace GetCmsEntryTargetReviewUseCase {
31
+ type Interface = IGetCmsEntryTargetReviewUseCase;
32
+ type Input = GetCmsEntryTargetReviewInput;
33
+ type Error = UseCaseError;
34
+ type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags | null, UseCaseError>>;
35
+ }
36
+ export {};
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const GetCmsEntryTargetReviewUseCase = createAbstraction("GetCmsEntryTargetReviewUseCase");
3
+ export { GetCmsEntryTargetReviewUseCase };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/GetCmsEntryTargetReview/abstractions.js","sources":["../../../../src/features/wrappers/GetCmsEntryTargetReview/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ReviewWithAssignmentsAndViewerFlags } from \"@webiny/api-workflows/domain/assignment/types.js\";\nimport type {\n WorkflowsNotAuthenticatedError,\n WorkflowsNotAuthorizedError\n} from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type {\n ReviewPersistenceError,\n ReviewTargetNotFoundError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\nimport type { GetTargetReviewUseCase } from \"@webiny/api-workflows/features/review/GetTargetReview/index.js\";\nimport type { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\n\nexport interface GetCmsEntryTargetReviewInput {\n /** Namespace id, `cms.<modelId>`. */\n model: string;\n targetRevisionId: string;\n}\n\nexport interface IGetCmsEntryTargetReviewUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n targetNotFound: ReviewTargetNotFoundError;\n persistence: ReviewPersistenceError;\n get: GetTargetReviewUseCase.Error;\n assignments: ListReviewAssignmentsUseCase.Error;\n}\n\ntype UseCaseError =\n IGetCmsEntryTargetReviewUseCaseErrors[keyof IGetCmsEntryTargetReviewUseCaseErrors];\n\nexport interface IGetCmsEntryTargetReviewUseCase {\n execute(\n input: GetCmsEntryTargetReviewInput\n ): Promise<Result<ReviewWithAssignmentsAndViewerFlags | null, UseCaseError>>;\n}\n\n/**\n * The active review of a CMS entry revision with the viewer's flags and redacted assignment\n * entries, or `null` (spec 10, R96). Needs read access to the revision: a missing, trashed or\n * unreadable revision is `NotAuthorized` (R108); a namespace of another app is not found (R46).\n */\nexport const GetCmsEntryTargetReviewUseCase = createAbstraction<IGetCmsEntryTargetReviewUseCase>(\n \"GetCmsEntryTargetReviewUseCase\"\n);\n\nexport namespace GetCmsEntryTargetReviewUseCase {\n export type Interface = IGetCmsEntryTargetReviewUseCase;\n export type Input = GetCmsEntryTargetReviewInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags | null, UseCaseError>>;\n}\n"],"names":["GetCmsEntryTargetReviewUseCase","createAbstraction"],"mappings":";AA0CO,MAAMA,iCAAiCC,kBAC1C"}
@@ -0,0 +1,4 @@
1
+ export declare const GetCmsEntryTargetReviewFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { GetCmsEntryTargetReviewUseCase } from "./GetCmsEntryTargetReviewUseCase.js";
3
+ const GetCmsEntryTargetReviewFeature = createFeature({
4
+ name: "CmsWorkflows/GetCmsEntryTargetReview",
5
+ register (container) {
6
+ container.register(GetCmsEntryTargetReviewUseCase);
7
+ }
8
+ });
9
+ export { GetCmsEntryTargetReviewFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/GetCmsEntryTargetReview/feature.js","sources":["../../../../src/features/wrappers/GetCmsEntryTargetReview/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetCmsEntryTargetReviewUseCase } from \"./GetCmsEntryTargetReviewUseCase.js\";\n\nexport const GetCmsEntryTargetReviewFeature = createFeature({\n name: \"CmsWorkflows/GetCmsEntryTargetReview\",\n register(container) {\n container.register(GetCmsEntryTargetReviewUseCase);\n }\n});\n"],"names":["GetCmsEntryTargetReviewFeature","createFeature","container","GetCmsEntryTargetReviewUseCase"],"mappings":";;AAGO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { GetCmsEntryTargetReviewUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { GetCmsEntryTargetReviewUseCase } from "./abstractions.js";
@@ -0,0 +1,13 @@
1
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
2
+ import { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
3
+ import { GetCmsEntryWorkflowUseCase as UseCase } from "./abstractions.js";
4
+ declare class GetCmsEntryWorkflowUseCaseImpl implements UseCase.Interface {
5
+ private viewer;
6
+ private getWorkflow;
7
+ constructor(viewer: CurrentReviewViewer.Interface, getWorkflow: GetWorkflowUseCase.Interface);
8
+ execute(input: UseCase.Input): UseCase.Return;
9
+ }
10
+ export declare const GetCmsEntryWorkflowUseCase: typeof GetCmsEntryWorkflowUseCaseImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetCmsEntryWorkflowUseCase>;
12
+ };
13
+ export {};
@@ -0,0 +1,34 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
3
+ import { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
4
+ import { WorkflowNotFoundError } from "@webiny/api-workflows/domain/workflow/errors.js";
5
+ import { isCmsWorkflow } from "../shared/cmsWorkflows.js";
6
+ import { GetCmsEntryWorkflowUseCase } from "./abstractions.js";
7
+ class GetCmsEntryWorkflowUseCaseImpl {
8
+ constructor(viewer, getWorkflow){
9
+ this.viewer = viewer;
10
+ this.getWorkflow = getWorkflow;
11
+ }
12
+ async execute(input) {
13
+ const actor = this.viewer.getActor();
14
+ if (actor.isFail()) return Result.fail(actor.error);
15
+ const workflow = await this.getWorkflow.execute({
16
+ id: input.id
17
+ });
18
+ if (workflow.isFail()) return Result.fail(workflow.error);
19
+ if (!isCmsWorkflow(workflow.value)) return Result.fail(new WorkflowNotFoundError({
20
+ id: input.id
21
+ }));
22
+ return Result.ok(workflow.value);
23
+ }
24
+ }
25
+ const GetCmsEntryWorkflowUseCase_GetCmsEntryWorkflowUseCase = GetCmsEntryWorkflowUseCase.createImplementation({
26
+ implementation: GetCmsEntryWorkflowUseCaseImpl,
27
+ dependencies: [
28
+ CurrentReviewViewer,
29
+ GetWorkflowUseCase
30
+ ]
31
+ });
32
+ export { GetCmsEntryWorkflowUseCase_GetCmsEntryWorkflowUseCase as GetCmsEntryWorkflowUseCase };
33
+
34
+ //# sourceMappingURL=GetCmsEntryWorkflowUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.js","sources":["../../../../src/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { GetWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetWorkflow/index.js\";\nimport { WorkflowNotFoundError } from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport { isCmsWorkflow } from \"../shared/cmsWorkflows.js\";\nimport { GetCmsEntryWorkflowUseCase as UseCase } from \"./abstractions.js\";\n\nclass GetCmsEntryWorkflowUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private getWorkflow: GetWorkflowUseCase.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const actor = this.viewer.getActor();\n if (actor.isFail()) {\n return Result.fail(actor.error);\n }\n\n const workflow = await this.getWorkflow.execute({ id: input.id });\n if (workflow.isFail()) {\n return Result.fail(workflow.error);\n }\n if (!isCmsWorkflow(workflow.value)) {\n return Result.fail(new WorkflowNotFoundError({ id: input.id }));\n }\n return Result.ok(workflow.value);\n }\n}\n\nexport const GetCmsEntryWorkflowUseCase = UseCase.createImplementation({\n implementation: GetCmsEntryWorkflowUseCaseImpl,\n dependencies: [CurrentReviewViewer, GetWorkflowUseCase]\n});\n"],"names":["GetCmsEntryWorkflowUseCaseImpl","viewer","getWorkflow","input","actor","Result","workflow","isCmsWorkflow","WorkflowNotFoundError","GetCmsEntryWorkflowUseCase","UseCase","CurrentReviewViewer","GetWorkflowUseCase"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,MAAqC,EACrCC,WAAyC,CACnD;aAFUD,MAAM,GAANA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClC,IAAIA,MAAM,MAAM,IACZ,OAAOC,OAAO,IAAI,CAACD,MAAM,KAAK;QAGlC,MAAME,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAAE,IAAIH,MAAM,EAAE;QAAC;QAC/D,IAAIG,SAAS,MAAM,IACf,OAAOD,OAAO,IAAI,CAACC,SAAS,KAAK;QAErC,IAAI,CAACC,cAAcD,SAAS,KAAK,GAC7B,OAAOD,OAAO,IAAI,CAAC,IAAIG,sBAAsB;YAAE,IAAIL,MAAM,EAAE;QAAC;QAEhE,OAAOE,OAAO,EAAE,CAACC,SAAS,KAAK;IACnC;AACJ;AAEO,MAAMG,wDAA6BC,2BAAAA,oBAA4B,CAAC;IACnE,gBAAgBV;IAChB,cAAc;QAACW;QAAqBC;KAAmB;AAC3D"}
@@ -0,0 +1,24 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { Workflow } from "@webiny/api-workflows/domain/workflow/types.js";
3
+ import type { WorkflowsNotAuthenticatedError } from "@webiny/api-workflows/domain/permissions/errors.js";
4
+ import type { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
5
+ export interface GetCmsEntryWorkflowInput {
6
+ id: string;
7
+ }
8
+ export interface IGetCmsEntryWorkflowUseCaseErrors {
9
+ notAuthenticated: WorkflowsNotAuthenticatedError;
10
+ get: GetWorkflowUseCase.Error;
11
+ }
12
+ type UseCaseError = IGetCmsEntryWorkflowUseCaseErrors[keyof IGetCmsEntryWorkflowUseCaseErrors];
13
+ export interface IGetCmsEntryWorkflowUseCase {
14
+ execute(input: GetCmsEntryWorkflowInput): Promise<Result<Workflow, UseCaseError>>;
15
+ }
16
+ /** One Headless CMS workflow, for any signed-in identity (D78); another app's is not found (R46). */
17
+ export declare const GetCmsEntryWorkflowUseCase: import("@webiny/di").Abstraction<IGetCmsEntryWorkflowUseCase>;
18
+ export declare namespace GetCmsEntryWorkflowUseCase {
19
+ type Interface = IGetCmsEntryWorkflowUseCase;
20
+ type Input = GetCmsEntryWorkflowInput;
21
+ type Error = UseCaseError;
22
+ type Return = Promise<Result<Workflow, UseCaseError>>;
23
+ }
24
+ export {};
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const GetCmsEntryWorkflowUseCase = createAbstraction("GetCmsEntryWorkflowUseCase");
3
+ export { GetCmsEntryWorkflowUseCase };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/GetCmsEntryWorkflow/abstractions.js","sources":["../../../../src/features/wrappers/GetCmsEntryWorkflow/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { Workflow } from \"@webiny/api-workflows/domain/workflow/types.js\";\nimport type { WorkflowsNotAuthenticatedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type { GetWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetWorkflow/index.js\";\n\nexport interface GetCmsEntryWorkflowInput {\n id: string;\n}\n\nexport interface IGetCmsEntryWorkflowUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n get: GetWorkflowUseCase.Error;\n}\n\ntype UseCaseError = IGetCmsEntryWorkflowUseCaseErrors[keyof IGetCmsEntryWorkflowUseCaseErrors];\n\nexport interface IGetCmsEntryWorkflowUseCase {\n execute(input: GetCmsEntryWorkflowInput): Promise<Result<Workflow, UseCaseError>>;\n}\n\n/** One Headless CMS workflow, for any signed-in identity (D78); another app's is not found (R46). */\nexport const GetCmsEntryWorkflowUseCase = createAbstraction<IGetCmsEntryWorkflowUseCase>(\n \"GetCmsEntryWorkflowUseCase\"\n);\n\nexport namespace GetCmsEntryWorkflowUseCase {\n export type Interface = IGetCmsEntryWorkflowUseCase;\n export type Input = GetCmsEntryWorkflowInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<Workflow, UseCaseError>>;\n}\n"],"names":["GetCmsEntryWorkflowUseCase","createAbstraction"],"mappings":";AAqBO,MAAMA,6BAA6BC,kBACtC"}
@@ -0,0 +1,4 @@
1
+ export declare const GetCmsEntryWorkflowFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { GetCmsEntryWorkflowUseCase } from "./GetCmsEntryWorkflowUseCase.js";
3
+ const GetCmsEntryWorkflowFeature = createFeature({
4
+ name: "CmsWorkflows/GetCmsEntryWorkflow",
5
+ register (container) {
6
+ container.register(GetCmsEntryWorkflowUseCase);
7
+ }
8
+ });
9
+ export { GetCmsEntryWorkflowFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/GetCmsEntryWorkflow/feature.js","sources":["../../../../src/features/wrappers/GetCmsEntryWorkflow/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetCmsEntryWorkflowUseCase } from \"./GetCmsEntryWorkflowUseCase.js\";\n\nexport const GetCmsEntryWorkflowFeature = createFeature({\n name: \"CmsWorkflows/GetCmsEntryWorkflow\",\n register(container) {\n container.register(GetCmsEntryWorkflowUseCase);\n }\n});\n"],"names":["GetCmsEntryWorkflowFeature","createFeature","container","GetCmsEntryWorkflowUseCase"],"mappings":";;AAGO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { GetCmsEntryWorkflowUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { GetCmsEntryWorkflowUseCase } from "./abstractions.js";
@@ -0,0 +1,19 @@
1
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
2
+ import { WorkflowsPermissions } from "@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js";
3
+ import { InspectRoutingUseCase } from "@webiny/api-workflows/features/routing/InspectRouting/index.js";
4
+ import { InspectCmsEntryRoutingUseCase as UseCase } from "./abstractions.js";
5
+ /**
6
+ * The folder type is derived from the model (`cms:<modelId>`, R121); the CMS folder port refuses a
7
+ * folder of another type, which the engine reports as a routing failure.
8
+ */
9
+ declare class InspectCmsEntryRoutingUseCaseImpl implements UseCase.Interface {
10
+ private viewer;
11
+ private permissions;
12
+ private inspectRouting;
13
+ constructor(viewer: CurrentReviewViewer.Interface, permissions: WorkflowsPermissions.Interface, inspectRouting: InspectRoutingUseCase.Interface);
14
+ execute(input: UseCase.Input): UseCase.Return;
15
+ }
16
+ export declare const InspectCmsEntryRoutingUseCase: typeof InspectCmsEntryRoutingUseCaseImpl & {
17
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IInspectCmsEntryRoutingUseCase>;
18
+ };
19
+ export {};
@@ -0,0 +1,54 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { ROOT_FOLDER } from "@webiny/api-headless-cms/constants.js";
3
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
4
+ import { WorkflowsPermissions } from "@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js";
5
+ import { InspectRoutingUseCase } from "@webiny/api-workflows/features/routing/InspectRouting/index.js";
6
+ import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
7
+ import { WorkflowPersistenceError, WorkflowValidationError } from "@webiny/api-workflows/domain/workflow/errors.js";
8
+ import { getModelIdFromAppName } from "../../../utils/appName.js";
9
+ import { toCmsFolderType } from "../../../utils/folderType.js";
10
+ import { InspectCmsEntryRoutingUseCase } from "./abstractions.js";
11
+ class InspectCmsEntryRoutingUseCaseImpl {
12
+ constructor(viewer, permissions, inspectRouting){
13
+ this.viewer = viewer;
14
+ this.permissions = permissions;
15
+ this.inspectRouting = inspectRouting;
16
+ }
17
+ async execute(input) {
18
+ const actor = this.viewer.getActor();
19
+ if (actor.isFail()) return Result.fail(actor.error);
20
+ let canEdit;
21
+ try {
22
+ canEdit = await this.permissions.canEdit();
23
+ } catch (error) {
24
+ return Result.fail(new WorkflowPersistenceError(error instanceof Error ? error : new Error(String(error))));
25
+ }
26
+ if (!canEdit) return Result.fail(new WorkflowsNotAuthorizedError({
27
+ action: "inspect routing"
28
+ }));
29
+ const modelId = getModelIdFromAppName(input.model);
30
+ if (!modelId) return Result.fail(new WorkflowValidationError("Routing can only be inspected for a CMS model."));
31
+ const folderId = input.folderId && input.folderId !== ROOT_FOLDER ? input.folderId : null;
32
+ return this.inspectRouting.execute({
33
+ stepConfig: input.stepConfig,
34
+ model: input.model,
35
+ requesterId: input.requesterId,
36
+ folder: folderId ? {
37
+ id: folderId,
38
+ type: toCmsFolderType(modelId)
39
+ } : null,
40
+ now: new Date()
41
+ });
42
+ }
43
+ }
44
+ const InspectCmsEntryRoutingUseCase_InspectCmsEntryRoutingUseCase = InspectCmsEntryRoutingUseCase.createImplementation({
45
+ implementation: InspectCmsEntryRoutingUseCaseImpl,
46
+ dependencies: [
47
+ CurrentReviewViewer,
48
+ WorkflowsPermissions,
49
+ InspectRoutingUseCase
50
+ ]
51
+ });
52
+ export { InspectCmsEntryRoutingUseCase_InspectCmsEntryRoutingUseCase as InspectCmsEntryRoutingUseCase };
53
+
54
+ //# sourceMappingURL=InspectCmsEntryRoutingUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.js","sources":["../../../../src/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ROOT_FOLDER } from \"@webiny/api-headless-cms/constants.js\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { WorkflowsPermissions } from \"@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js\";\nimport { InspectRoutingUseCase } from \"@webiny/api-workflows/features/routing/InspectRouting/index.js\";\nimport { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport {\n WorkflowPersistenceError,\n WorkflowValidationError\n} from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport { getModelIdFromAppName } from \"~/utils/appName.js\";\nimport { toCmsFolderType } from \"~/utils/folderType.js\";\nimport { InspectCmsEntryRoutingUseCase as UseCase } from \"./abstractions.js\";\n\n/**\n * The folder type is derived from the model (`cms:<modelId>`, R121); the CMS folder port refuses a\n * folder of another type, which the engine reports as a routing failure.\n */\nclass InspectCmsEntryRoutingUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private permissions: WorkflowsPermissions.Interface,\n private inspectRouting: InspectRoutingUseCase.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const actor = this.viewer.getActor();\n if (actor.isFail()) {\n return Result.fail(actor.error);\n }\n let canEdit: boolean;\n try {\n canEdit = await this.permissions.canEdit();\n } catch (error) {\n return Result.fail(\n new WorkflowPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!canEdit) {\n return Result.fail(new WorkflowsNotAuthorizedError({ action: \"inspect routing\" }));\n }\n\n const modelId = getModelIdFromAppName(input.model);\n if (!modelId) {\n return Result.fail(\n new WorkflowValidationError(\"Routing can only be inspected for a CMS model.\")\n );\n }\n const folderId = input.folderId && input.folderId !== ROOT_FOLDER ? input.folderId : null;\n\n return this.inspectRouting.execute({\n stepConfig: input.stepConfig,\n model: input.model,\n requesterId: input.requesterId,\n folder: folderId ? { id: folderId, type: toCmsFolderType(modelId) } : null,\n now: new Date()\n });\n }\n}\n\nexport const InspectCmsEntryRoutingUseCase = UseCase.createImplementation({\n implementation: InspectCmsEntryRoutingUseCaseImpl,\n dependencies: [CurrentReviewViewer, WorkflowsPermissions, InspectRoutingUseCase]\n});\n"],"names":["InspectCmsEntryRoutingUseCaseImpl","viewer","permissions","inspectRouting","input","actor","Result","canEdit","error","WorkflowPersistenceError","Error","String","WorkflowsNotAuthorizedError","modelId","getModelIdFromAppName","WorkflowValidationError","folderId","ROOT_FOLDER","toCmsFolderType","Date","InspectCmsEntryRoutingUseCase","UseCase","CurrentReviewViewer","WorkflowsPermissions","InspectRoutingUseCase"],"mappings":";;;;;;;;;;AAkBA,MAAMA;IACF,YACYC,MAAqC,EACrCC,WAA2C,EAC3CC,cAA+C,CACzD;aAHUF,MAAM,GAANA;aACAC,WAAW,GAAXA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClC,IAAIA,MAAM,MAAM,IACZ,OAAOC,OAAO,IAAI,CAACD,MAAM,KAAK;QAElC,IAAIE;QACJ,IAAI;YACAA,UAAU,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QAC5C,EAAE,OAAOC,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,yBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACD,SACD,OAAOD,OAAO,IAAI,CAAC,IAAIM,4BAA4B;YAAE,QAAQ;QAAkB;QAGnF,MAAMC,UAAUC,sBAAsBV,MAAM,KAAK;QACjD,IAAI,CAACS,SACD,OAAOP,OAAO,IAAI,CACd,IAAIS,wBAAwB;QAGpC,MAAMC,WAAWZ,MAAM,QAAQ,IAAIA,MAAM,QAAQ,KAAKa,cAAcb,MAAM,QAAQ,GAAG;QAErF,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/B,YAAYA,MAAM,UAAU;YAC5B,OAAOA,MAAM,KAAK;YAClB,aAAaA,MAAM,WAAW;YAC9B,QAAQY,WAAW;gBAAE,IAAIA;gBAAU,MAAME,gBAAgBL;YAAS,IAAI;YACtE,KAAK,IAAIM;QACb;IACJ;AACJ;AAEO,MAAMC,8DAAgCC,8BAAAA,oBAA4B,CAAC;IACtE,gBAAgBrB;IAChB,cAAc;QAACsB;QAAqBC;QAAsBC;KAAsB;AACpF"}
@@ -0,0 +1,37 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { RoutingInspection } from "@webiny/api-workflows/domain/routing/types.js";
3
+ import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
4
+ import type { WorkflowPersistenceError, WorkflowValidationError } from "@webiny/api-workflows/domain/workflow/errors.js";
5
+ import type { InspectRoutingUseCase } from "@webiny/api-workflows/features/routing/InspectRouting/index.js";
6
+ export interface InspectCmsEntryRoutingInput {
7
+ /** The step config as the editor holds it, unsaved; the engine validates it. */
8
+ stepConfig: unknown;
9
+ /** Namespace id, `cms.<modelId>`. */
10
+ model: string;
11
+ requesterId: string;
12
+ /** An entry folder of the model; missing, `null` or "root" is the root. */
13
+ folderId?: string | null;
14
+ }
15
+ export interface IInspectCmsEntryRoutingUseCaseErrors {
16
+ notAuthenticated: WorkflowsNotAuthenticatedError;
17
+ notAuthorized: WorkflowsNotAuthorizedError;
18
+ validation: WorkflowValidationError;
19
+ persistence: WorkflowPersistenceError;
20
+ inspect: InspectRoutingUseCase.Error;
21
+ }
22
+ type UseCaseError = IInspectCmsEntryRoutingUseCaseErrors[keyof IInspectCmsEntryRoutingUseCaseErrors];
23
+ export interface IInspectCmsEntryRoutingUseCase {
24
+ execute(input: InspectCmsEntryRoutingInput): Promise<Result<RoutingInspection, UseCaseError>>;
25
+ }
26
+ /**
27
+ * The workflow editor's rule inspector for CMS entries (spec 6, D45, D95, D118, R121): `editor`
28
+ * only (R125); read access at folder level (A47).
29
+ */
30
+ export declare const InspectCmsEntryRoutingUseCase: import("@webiny/di").Abstraction<IInspectCmsEntryRoutingUseCase>;
31
+ export declare namespace InspectCmsEntryRoutingUseCase {
32
+ type Interface = IInspectCmsEntryRoutingUseCase;
33
+ type Input = InspectCmsEntryRoutingInput;
34
+ type Error = UseCaseError;
35
+ type Return = Promise<Result<RoutingInspection, UseCaseError>>;
36
+ }
37
+ export {};
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const InspectCmsEntryRoutingUseCase = createAbstraction("InspectCmsEntryRoutingUseCase");
3
+ export { InspectCmsEntryRoutingUseCase };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/InspectCmsEntryRouting/abstractions.js","sources":["../../../../src/features/wrappers/InspectCmsEntryRouting/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { RoutingInspection } from \"@webiny/api-workflows/domain/routing/types.js\";\nimport type {\n WorkflowsNotAuthenticatedError,\n WorkflowsNotAuthorizedError\n} from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type {\n WorkflowPersistenceError,\n WorkflowValidationError\n} from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport type { InspectRoutingUseCase } from \"@webiny/api-workflows/features/routing/InspectRouting/index.js\";\n\nexport interface InspectCmsEntryRoutingInput {\n /** The step config as the editor holds it, unsaved; the engine validates it. */\n stepConfig: unknown;\n /** Namespace id, `cms.<modelId>`. */\n model: string;\n requesterId: string;\n /** An entry folder of the model; missing, `null` or \"root\" is the root. */\n folderId?: string | null;\n}\n\nexport interface IInspectCmsEntryRoutingUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n validation: WorkflowValidationError;\n persistence: WorkflowPersistenceError;\n inspect: InspectRoutingUseCase.Error;\n}\n\ntype UseCaseError =\n IInspectCmsEntryRoutingUseCaseErrors[keyof IInspectCmsEntryRoutingUseCaseErrors];\n\nexport interface IInspectCmsEntryRoutingUseCase {\n execute(input: InspectCmsEntryRoutingInput): Promise<Result<RoutingInspection, UseCaseError>>;\n}\n\n/**\n * The workflow editor's rule inspector for CMS entries (spec 6, D45, D95, D118, R121): `editor`\n * only (R125); read access at folder level (A47).\n */\nexport const InspectCmsEntryRoutingUseCase = createAbstraction<IInspectCmsEntryRoutingUseCase>(\n \"InspectCmsEntryRoutingUseCase\"\n);\n\nexport namespace InspectCmsEntryRoutingUseCase {\n export type Interface = IInspectCmsEntryRoutingUseCase;\n export type Input = InspectCmsEntryRoutingInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<RoutingInspection, UseCaseError>>;\n}\n"],"names":["InspectCmsEntryRoutingUseCase","createAbstraction"],"mappings":";AAyCO,MAAMA,gCAAgCC,kBACzC"}
@@ -0,0 +1,4 @@
1
+ export declare const InspectCmsEntryRoutingFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { InspectCmsEntryRoutingUseCase } from "./InspectCmsEntryRoutingUseCase.js";
3
+ const InspectCmsEntryRoutingFeature = createFeature({
4
+ name: "CmsWorkflows/InspectCmsEntryRouting",
5
+ register (container) {
6
+ container.register(InspectCmsEntryRoutingUseCase);
7
+ }
8
+ });
9
+ export { InspectCmsEntryRoutingFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/InspectCmsEntryRouting/feature.js","sources":["../../../../src/features/wrappers/InspectCmsEntryRouting/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { InspectCmsEntryRoutingUseCase } from \"./InspectCmsEntryRoutingUseCase.js\";\n\nexport const InspectCmsEntryRoutingFeature = createFeature({\n name: \"CmsWorkflows/InspectCmsEntryRouting\",\n register(container) {\n container.register(InspectCmsEntryRoutingUseCase);\n }\n});\n"],"names":["InspectCmsEntryRoutingFeature","createFeature","container","InspectCmsEntryRoutingUseCase"],"mappings":";;AAGO,MAAMA,gCAAgCC,cAAc;IACvD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { InspectCmsEntryRoutingUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { InspectCmsEntryRoutingUseCase } from "./abstractions.js";
@@ -0,0 +1,25 @@
1
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
2
+ import { GetLatestEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/index.js";
3
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
4
+ import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
5
+ import { ListReviewsByTargetsUseCase } from "@webiny/api-workflows/features/review/ListReviewsByTargets/index.js";
6
+ import { CmsEntryAccess } from "../../../features/target/CmsEntryAccess/index.js";
7
+ import { CmsModelGroupService } from "../../../features/target/CmsModelGroupService/index.js";
8
+ import { CmsEntryDeniedFolders } from "../../../features/target/CmsEntryDeniedFolders/index.js";
9
+ import { ListCmsEntryBlockingReviewsUseCase as UseCase } from "./abstractions.js";
10
+ declare class ListCmsEntryBlockingReviewsUseCaseImpl implements UseCase.Interface {
11
+ private viewer;
12
+ private getModel;
13
+ private modelGroups;
14
+ private getBoundWorkflow;
15
+ private listReviewsByTargets;
16
+ private getLatestEntries;
17
+ private access;
18
+ private deniedFolders;
19
+ constructor(viewer: CurrentReviewViewer.Interface, getModel: GetModelUseCase.Interface, modelGroups: CmsModelGroupService.Interface, getBoundWorkflow: GetBoundWorkflowUseCase.Interface, listReviewsByTargets: ListReviewsByTargetsUseCase.Interface, getLatestEntries: GetLatestEntriesByIdsUseCase.Interface, access: CmsEntryAccess.Interface, deniedFolders: CmsEntryDeniedFolders.Interface);
20
+ execute(input: UseCase.Input): UseCase.Return;
21
+ }
22
+ export declare const ListCmsEntryBlockingReviewsUseCase: typeof ListCmsEntryBlockingReviewsUseCaseImpl & {
23
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IListCmsEntryBlockingReviewsUseCase>;
24
+ };
25
+ export {};
@@ -0,0 +1,109 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
3
+ import { GetLatestEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/index.js";
4
+ import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
5
+ import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
6
+ import { ListReviewsByTargetsUseCase } from "@webiny/api-workflows/features/review/ListReviewsByTargets/index.js";
7
+ import { ReviewPersistenceError, ReviewValidationError } from "@webiny/api-workflows/domain/review/errors.js";
8
+ import { toBlockingReview } from "@webiny/api-workflows/domain/review/toBlockingReview.js";
9
+ import { CmsEntryAccess, UNREADABLE_CODES } from "../../target/CmsEntryAccess/index.js";
10
+ import { CmsModelGroupService } from "../../target/CmsModelGroupService/index.js";
11
+ import { CmsEntryDeniedFolders } from "../../target/CmsEntryDeniedFolders/index.js";
12
+ import { getCmsNamespace } from "../../../utils/appName.js";
13
+ import { BLOCKING_REVIEWS_MAX_IDS, ListCmsEntryBlockingReviewsUseCase } from "./abstractions.js";
14
+ const ENTRIES_NOT_AUTHORIZED = "Cms/Entry/NotAuthorized";
15
+ class ListCmsEntryBlockingReviewsUseCaseImpl {
16
+ constructor(viewer, getModel, modelGroups, getBoundWorkflow, listReviewsByTargets, getLatestEntries, access, deniedFolders){
17
+ this.viewer = viewer;
18
+ this.getModel = getModel;
19
+ this.modelGroups = modelGroups;
20
+ this.getBoundWorkflow = getBoundWorkflow;
21
+ this.listReviewsByTargets = listReviewsByTargets;
22
+ this.getLatestEntries = getLatestEntries;
23
+ this.access = access;
24
+ this.deniedFolders = deniedFolders;
25
+ }
26
+ async execute(input) {
27
+ const actor = this.viewer.getActor();
28
+ if (actor.isFail()) return Result.fail(actor.error);
29
+ if (input.entryIds.length > BLOCKING_REVIEWS_MAX_IDS) return Result.fail(new ReviewValidationError(`At most ${BLOCKING_REVIEWS_MAX_IDS} entries can be checked at once.`));
30
+ const entryIds = Array.from(new Set(input.entryIds));
31
+ if (0 === entryIds.length) return Result.ok([]);
32
+ try {
33
+ const model = await this.getModel.execute(input.modelId);
34
+ if (model.isFail()) {
35
+ if (UNREADABLE_CODES.includes(model.error.code)) return Result.ok([]);
36
+ return Result.fail(new ReviewPersistenceError(model.error));
37
+ }
38
+ const namespace = getCmsNamespace(model.value);
39
+ if (!namespace) return Result.ok([]);
40
+ const group = await this.modelGroups.getGroup(model.value);
41
+ if (group.isFail()) {
42
+ if (UNREADABLE_CODES.includes(group.error.code)) return Result.ok([]);
43
+ return Result.fail(new ReviewPersistenceError(group.error));
44
+ }
45
+ const bound = await this.getBoundWorkflow.execute({
46
+ model: namespace
47
+ });
48
+ if (bound.isFail()) return Result.fail(bound.error);
49
+ if (!bound.value) return Result.ok([]);
50
+ const listed = await this.listReviewsByTargets.execute({
51
+ model: namespace,
52
+ targetIds: entryIds,
53
+ state: "inProgress"
54
+ });
55
+ if (listed.isFail()) return Result.fail(listed.error);
56
+ const inProgress = new Map();
57
+ for (const review of listed.value){
58
+ const reviews = inProgress.get(review.targetId) ?? [];
59
+ reviews.push(review);
60
+ inProgress.set(review.targetId, reviews);
61
+ }
62
+ if (0 === inProgress.size) return Result.ok([]);
63
+ const idsWithReviews = entryIds.filter((entryId)=>inProgress.has(entryId));
64
+ const latest = await this.getLatestEntries.execute(model.value, idsWithReviews);
65
+ if (latest.isFail()) {
66
+ if (latest.error.code === ENTRIES_NOT_AUTHORIZED) return Result.ok([]);
67
+ return Result.fail(new ReviewPersistenceError(latest.error));
68
+ }
69
+ const folderRule = await this.deniedFolders.createFolderReadRule([
70
+ model.value.modelId
71
+ ]);
72
+ const readableIds = new Set();
73
+ for (const entry of latest.value){
74
+ const canRead = await this.access.canRead({
75
+ model: model.value,
76
+ group: group.value,
77
+ entry
78
+ }, folderRule);
79
+ if (canRead) readableIds.add(entry.entryId);
80
+ }
81
+ const blocking = [];
82
+ for (const entryId of entryIds){
83
+ if (!readableIds.has(entryId)) continue;
84
+ const reviews = inProgress.get(entryId) ?? [];
85
+ for (const review of reviews)blocking.push(toBlockingReview(review));
86
+ }
87
+ return Result.ok(blocking);
88
+ } catch (error) {
89
+ const cause = error instanceof Error ? error : new Error(String(error));
90
+ return Result.fail(new ReviewPersistenceError(cause));
91
+ }
92
+ }
93
+ }
94
+ const ListCmsEntryBlockingReviewsUseCase_ListCmsEntryBlockingReviewsUseCase = ListCmsEntryBlockingReviewsUseCase.createImplementation({
95
+ implementation: ListCmsEntryBlockingReviewsUseCaseImpl,
96
+ dependencies: [
97
+ CurrentReviewViewer,
98
+ GetModelUseCase,
99
+ CmsModelGroupService,
100
+ GetBoundWorkflowUseCase,
101
+ ListReviewsByTargetsUseCase,
102
+ GetLatestEntriesByIdsUseCase,
103
+ CmsEntryAccess,
104
+ CmsEntryDeniedFolders
105
+ ]
106
+ });
107
+ export { ListCmsEntryBlockingReviewsUseCase_ListCmsEntryBlockingReviewsUseCase as ListCmsEntryBlockingReviewsUseCase };
108
+
109
+ //# sourceMappingURL=ListCmsEntryBlockingReviewsUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.js","sources":["../../../../src/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { GetLatestEntriesByIdsUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/index.js\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { GetBoundWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js\";\nimport { ListReviewsByTargetsUseCase } from \"@webiny/api-workflows/features/review/ListReviewsByTargets/index.js\";\nimport {\n ReviewPersistenceError,\n ReviewValidationError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { toBlockingReview } from \"@webiny/api-workflows/domain/review/toBlockingReview.js\";\nimport type { ReviewData } from \"@webiny/api-workflows/domain/review/types.js\";\nimport type { WorkflowBlockingReview } from \"@webiny/api-workflows/domain/workflow/types.js\";\nimport { CmsEntryAccess } from \"~/features/target/CmsEntryAccess/index.js\";\nimport { UNREADABLE_CODES } from \"~/features/target/CmsEntryAccess/index.js\";\nimport { CmsModelGroupService } from \"~/features/target/CmsModelGroupService/index.js\";\nimport { CmsEntryDeniedFolders } from \"~/features/target/CmsEntryDeniedFolders/index.js\";\nimport { getCmsNamespace } from \"~/utils/appName.js\";\nimport {\n BLOCKING_REVIEWS_MAX_IDS,\n ListCmsEntryBlockingReviewsUseCase as UseCase\n} from \"./abstractions.js\";\n\n/** The viewer has no entry permission at all, so no entry is readable. */\nconst ENTRIES_NOT_AUTHORIZED = \"Cms/Entry/NotAuthorized\";\n\nclass ListCmsEntryBlockingReviewsUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private getModel: GetModelUseCase.Interface,\n private modelGroups: CmsModelGroupService.Interface,\n private getBoundWorkflow: GetBoundWorkflowUseCase.Interface,\n private listReviewsByTargets: ListReviewsByTargetsUseCase.Interface,\n private getLatestEntries: GetLatestEntriesByIdsUseCase.Interface,\n private access: CmsEntryAccess.Interface,\n private deniedFolders: CmsEntryDeniedFolders.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const actor = this.viewer.getActor();\n if (actor.isFail()) {\n return Result.fail(actor.error);\n }\n if (input.entryIds.length > BLOCKING_REVIEWS_MAX_IDS) {\n return Result.fail(\n new ReviewValidationError(\n `At most ${BLOCKING_REVIEWS_MAX_IDS} entries can be checked at once.`\n )\n );\n }\n const entryIds = Array.from(new Set(input.entryIds));\n if (entryIds.length === 0) {\n return Result.ok([]);\n }\n\n // Every dependency failure and throw below is a failed Result (R87).\n try {\n const model = await this.getModel.execute(input.modelId);\n if (model.isFail()) {\n if (UNREADABLE_CODES.includes(model.error.code)) {\n return Result.ok([]);\n }\n return Result.fail(new ReviewPersistenceError(model.error));\n }\n // `null` for a private model.\n const namespace = getCmsNamespace(model.value);\n if (!namespace) {\n return Result.ok([]);\n }\n const group = await this.modelGroups.getGroup(model.value);\n if (group.isFail()) {\n if (UNREADABLE_CODES.includes(group.error.code)) {\n return Result.ok([]);\n }\n return Result.fail(new ReviewPersistenceError(group.error));\n }\n\n const bound = await this.getBoundWorkflow.execute({ model: namespace });\n if (bound.isFail()) {\n return Result.fail(bound.error);\n }\n if (!bound.value) {\n return Result.ok([]);\n }\n\n // One engine call for every entry (Q79): one query per 100 ids, confirmed in a batch.\n const listed = await this.listReviewsByTargets.execute({\n model: namespace,\n targetIds: entryIds,\n state: \"inProgress\"\n });\n if (listed.isFail()) {\n return Result.fail(listed.error);\n }\n const inProgress = new Map<string, ReviewData[]>();\n for (const review of listed.value) {\n const reviews = inProgress.get(review.targetId) ?? [];\n reviews.push(review);\n inProgress.set(review.targetId, reviews);\n }\n if (inProgress.size === 0) {\n return Result.ok([]);\n }\n\n // The entry permissions (own) and the folder are entry-level, so the latest\n // revision answers for every revision of the entry.\n const idsWithReviews = entryIds.filter(entryId => inProgress.has(entryId));\n const latest = await this.getLatestEntries.execute(model.value, idsWithReviews);\n if (latest.isFail()) {\n if (latest.error.code === ENTRIES_NOT_AUTHORIZED) {\n return Result.ok([]);\n }\n return Result.fail(new ReviewPersistenceError(latest.error));\n }\n // The folder rules are read once for the model; every check below is in memory.\n const folderRule = await this.deniedFolders.createFolderReadRule([model.value.modelId]);\n const readableIds = new Set<string>();\n for (const entry of latest.value) {\n // oxlint-disable-next-line no-await-in-loop -- in memory: the folder rule and permissions are already loaded.\n const canRead = await this.access.canRead(\n { model: model.value, group: group.value, entry },\n folderRule\n );\n if (canRead) {\n readableIds.add(entry.entryId);\n }\n }\n\n // In the order of the input ids, each entry's reviews in list order.\n const blocking: WorkflowBlockingReview[] = [];\n for (const entryId of entryIds) {\n if (!readableIds.has(entryId)) {\n continue;\n }\n const reviews = inProgress.get(entryId) ?? [];\n for (const review of reviews) {\n blocking.push(toBlockingReview(review));\n }\n }\n return Result.ok(blocking);\n } catch (error) {\n const cause = error instanceof Error ? error : new Error(String(error));\n return Result.fail(new ReviewPersistenceError(cause));\n }\n }\n}\n\nexport const ListCmsEntryBlockingReviewsUseCase = UseCase.createImplementation({\n implementation: ListCmsEntryBlockingReviewsUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n GetModelUseCase,\n CmsModelGroupService,\n GetBoundWorkflowUseCase,\n ListReviewsByTargetsUseCase,\n GetLatestEntriesByIdsUseCase,\n CmsEntryAccess,\n CmsEntryDeniedFolders\n ]\n});\n"],"names":["ENTRIES_NOT_AUTHORIZED","ListCmsEntryBlockingReviewsUseCaseImpl","viewer","getModel","modelGroups","getBoundWorkflow","listReviewsByTargets","getLatestEntries","access","deniedFolders","input","actor","Result","BLOCKING_REVIEWS_MAX_IDS","ReviewValidationError","entryIds","Array","Set","model","UNREADABLE_CODES","ReviewPersistenceError","namespace","getCmsNamespace","group","bound","listed","inProgress","Map","review","reviews","idsWithReviews","entryId","latest","folderRule","readableIds","entry","canRead","blocking","toBlockingReview","error","cause","Error","String","ListCmsEntryBlockingReviewsUseCase","UseCase","CurrentReviewViewer","GetModelUseCase","CmsModelGroupService","GetBoundWorkflowUseCase","ListReviewsByTargetsUseCase","GetLatestEntriesByIdsUseCase","CmsEntryAccess","CmsEntryDeniedFolders"],"mappings":";;;;;;;;;;;;;AAwBA,MAAMA,yBAAyB;AAE/B,MAAMC;IACF,YACYC,MAAqC,EACrCC,QAAmC,EACnCC,WAA2C,EAC3CC,gBAAmD,EACnDC,oBAA2D,EAC3DC,gBAAwD,EACxDC,MAAgC,EAChCC,aAA8C,CACxD;aARUP,MAAM,GAANA;aACAC,QAAQ,GAARA;aACAC,WAAW,GAAXA;aACAC,gBAAgB,GAAhBA;aACAC,oBAAoB,GAApBA;aACAC,gBAAgB,GAAhBA;aACAC,MAAM,GAANA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClC,IAAIA,MAAM,MAAM,IACZ,OAAOC,OAAO,IAAI,CAACD,MAAM,KAAK;QAElC,IAAID,MAAM,QAAQ,CAAC,MAAM,GAAGG,0BACxB,OAAOD,OAAO,IAAI,CACd,IAAIE,sBACA,CAAC,QAAQ,EAAED,yBAAyB,gCAAgC,CAAC;QAIjF,MAAME,WAAWC,MAAM,IAAI,CAAC,IAAIC,IAAIP,MAAM,QAAQ;QAClD,IAAIK,AAAoB,MAApBA,SAAS,MAAM,EACf,OAAOH,OAAO,EAAE,CAAC,EAAE;QAIvB,IAAI;YACA,MAAMM,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACR,MAAM,OAAO;YACvD,IAAIQ,MAAM,MAAM,IAAI;gBAChB,IAAIC,iBAAiB,QAAQ,CAACD,MAAM,KAAK,CAAC,IAAI,GAC1C,OAAON,OAAO,EAAE,CAAC,EAAE;gBAEvB,OAAOA,OAAO,IAAI,CAAC,IAAIQ,uBAAuBF,MAAM,KAAK;YAC7D;YAEA,MAAMG,YAAYC,gBAAgBJ,MAAM,KAAK;YAC7C,IAAI,CAACG,WACD,OAAOT,OAAO,EAAE,CAAC,EAAE;YAEvB,MAAMW,QAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAACL,MAAM,KAAK;YACzD,IAAIK,MAAM,MAAM,IAAI;gBAChB,IAAIJ,iBAAiB,QAAQ,CAACI,MAAM,KAAK,CAAC,IAAI,GAC1C,OAAOX,OAAO,EAAE,CAAC,EAAE;gBAEvB,OAAOA,OAAO,IAAI,CAAC,IAAIQ,uBAAuBG,MAAM,KAAK;YAC7D;YAEA,MAAMC,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAAE,OAAOH;YAAU;YACrE,IAAIG,MAAM,MAAM,IACZ,OAAOZ,OAAO,IAAI,CAACY,MAAM,KAAK;YAElC,IAAI,CAACA,MAAM,KAAK,EACZ,OAAOZ,OAAO,EAAE,CAAC,EAAE;YAIvB,MAAMa,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACnD,OAAOJ;gBACP,WAAWN;gBACX,OAAO;YACX;YACA,IAAIU,OAAO,MAAM,IACb,OAAOb,OAAO,IAAI,CAACa,OAAO,KAAK;YAEnC,MAAMC,aAAa,IAAIC;YACvB,KAAK,MAAMC,UAAUH,OAAO,KAAK,CAAE;gBAC/B,MAAMI,UAAUH,WAAW,GAAG,CAACE,OAAO,QAAQ,KAAK,EAAE;gBACrDC,QAAQ,IAAI,CAACD;gBACbF,WAAW,GAAG,CAACE,OAAO,QAAQ,EAAEC;YACpC;YACA,IAAIH,AAAoB,MAApBA,WAAW,IAAI,EACf,OAAOd,OAAO,EAAE,CAAC,EAAE;YAKvB,MAAMkB,iBAAiBf,SAAS,MAAM,CAACgB,CAAAA,UAAWL,WAAW,GAAG,CAACK;YACjE,MAAMC,SAAS,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACd,MAAM,KAAK,EAAEY;YAChE,IAAIE,OAAO,MAAM,IAAI;gBACjB,IAAIA,OAAO,KAAK,CAAC,IAAI,KAAKhC,wBACtB,OAAOY,OAAO,EAAE,CAAC,EAAE;gBAEvB,OAAOA,OAAO,IAAI,CAAC,IAAIQ,uBAAuBY,OAAO,KAAK;YAC9D;YAEA,MAAMC,aAAa,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;gBAACf,MAAM,KAAK,CAAC,OAAO;aAAC;YACtF,MAAMgB,cAAc,IAAIjB;YACxB,KAAK,MAAMkB,SAASH,OAAO,KAAK,CAAE;gBAE9B,MAAMI,UAAU,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACrC;oBAAE,OAAOlB,MAAM,KAAK;oBAAE,OAAOK,MAAM,KAAK;oBAAEY;gBAAM,GAChDF;gBAEJ,IAAIG,SACAF,YAAY,GAAG,CAACC,MAAM,OAAO;YAErC;YAGA,MAAME,WAAqC,EAAE;YAC7C,KAAK,MAAMN,WAAWhB,SAAU;gBAC5B,IAAI,CAACmB,YAAY,GAAG,CAACH,UACjB;gBAEJ,MAAMF,UAAUH,WAAW,GAAG,CAACK,YAAY,EAAE;gBAC7C,KAAK,MAAMH,UAAUC,QACjBQ,SAAS,IAAI,CAACC,iBAAiBV;YAEvC;YACA,OAAOhB,OAAO,EAAE,CAACyB;QACrB,EAAE,OAAOE,OAAO;YACZ,MAAMC,QAAQD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;YAChE,OAAO3B,OAAO,IAAI,CAAC,IAAIQ,uBAAuBoB;QAClD;IACJ;AACJ;AAEO,MAAMG,wEAAqCC,mCAAAA,oBAA4B,CAAC;IAC3E,gBAAgB3C;IAChB,cAAc;QACV4C;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -0,0 +1,36 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { WorkflowBlockingReview } from "@webiny/api-workflows/domain/workflow/types.js";
3
+ import type { WorkflowPersistenceError } from "@webiny/api-workflows/domain/workflow/errors.js";
4
+ import type { ReviewPersistenceError, ReviewValidationError } from "@webiny/api-workflows/domain/review/errors.js";
5
+ import type { WorkflowsNotAuthenticatedError } from "@webiny/api-workflows/domain/permissions/errors.js";
6
+ /** The most entry ids one call checks (R265); the admin sends chunks of this size. */
7
+ export declare const BLOCKING_REVIEWS_MAX_IDS = 200;
8
+ export interface ListCmsEntryBlockingReviewsInput {
9
+ /** The model id, without the `cms.` prefix. */
10
+ modelId: string;
11
+ /** Entry ids, not revision ids. At most `BLOCKING_REVIEWS_MAX_IDS`. */
12
+ entryIds: string[];
13
+ }
14
+ export interface IListCmsEntryBlockingReviewsUseCaseErrors {
15
+ notAuthenticated: WorkflowsNotAuthenticatedError;
16
+ validation: ReviewValidationError;
17
+ persistence: ReviewPersistenceError;
18
+ bindingPersistence: WorkflowPersistenceError;
19
+ }
20
+ type UseCaseError = IListCmsEntryBlockingReviewsUseCaseErrors[keyof IListCmsEntryBlockingReviewsUseCaseErrors];
21
+ export interface IListCmsEntryBlockingReviewsUseCase {
22
+ execute(input: ListCmsEntryBlockingReviewsInput): Promise<Result<WorkflowBlockingReview[], UseCaseError>>;
23
+ }
24
+ /**
25
+ * The reviews in progress of a list of entries, for the admin's bulk trash of all loaded rows
26
+ * (R265, D164): only entries the viewer can read are considered, so the answer never names a
27
+ * review of content the viewer cannot see. Everything unreadable or unbound answers an empty list.
28
+ */
29
+ export declare const ListCmsEntryBlockingReviewsUseCase: import("@webiny/di").Abstraction<IListCmsEntryBlockingReviewsUseCase>;
30
+ export declare namespace ListCmsEntryBlockingReviewsUseCase {
31
+ type Interface = IListCmsEntryBlockingReviewsUseCase;
32
+ type Input = ListCmsEntryBlockingReviewsInput;
33
+ type Error = UseCaseError;
34
+ type Return = Promise<Result<WorkflowBlockingReview[], UseCaseError>>;
35
+ }
36
+ export {};
@@ -0,0 +1,6 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const BLOCKING_REVIEWS_MAX_IDS = 200;
3
+ const ListCmsEntryBlockingReviewsUseCase = createAbstraction("ListCmsEntryBlockingReviewsUseCase");
4
+ export { BLOCKING_REVIEWS_MAX_IDS, ListCmsEntryBlockingReviewsUseCase };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/wrappers/ListCmsEntryBlockingReviews/abstractions.js","sources":["../../../../src/features/wrappers/ListCmsEntryBlockingReviews/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { WorkflowBlockingReview } from \"@webiny/api-workflows/domain/workflow/types.js\";\nimport type { WorkflowPersistenceError } from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport type {\n ReviewPersistenceError,\n ReviewValidationError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\nimport type { WorkflowsNotAuthenticatedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\n\n/** The most entry ids one call checks (R265); the admin sends chunks of this size. */\nexport const BLOCKING_REVIEWS_MAX_IDS = 200;\n\nexport interface ListCmsEntryBlockingReviewsInput {\n /** The model id, without the `cms.` prefix. */\n modelId: string;\n /** Entry ids, not revision ids. At most `BLOCKING_REVIEWS_MAX_IDS`. */\n entryIds: string[];\n}\n\nexport interface IListCmsEntryBlockingReviewsUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n validation: ReviewValidationError;\n persistence: ReviewPersistenceError;\n bindingPersistence: WorkflowPersistenceError;\n}\n\ntype UseCaseError =\n IListCmsEntryBlockingReviewsUseCaseErrors[keyof IListCmsEntryBlockingReviewsUseCaseErrors];\n\nexport interface IListCmsEntryBlockingReviewsUseCase {\n execute(\n input: ListCmsEntryBlockingReviewsInput\n ): Promise<Result<WorkflowBlockingReview[], UseCaseError>>;\n}\n\n/**\n * The reviews in progress of a list of entries, for the admin's bulk trash of all loaded rows\n * (R265, D164): only entries the viewer can read are considered, so the answer never names a\n * review of content the viewer cannot see. Everything unreadable or unbound answers an empty list.\n */\nexport const ListCmsEntryBlockingReviewsUseCase =\n createAbstraction<IListCmsEntryBlockingReviewsUseCase>(\"ListCmsEntryBlockingReviewsUseCase\");\n\nexport namespace ListCmsEntryBlockingReviewsUseCase {\n export type Interface = IListCmsEntryBlockingReviewsUseCase;\n export type Input = ListCmsEntryBlockingReviewsInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<WorkflowBlockingReview[], UseCaseError>>;\n}\n"],"names":["BLOCKING_REVIEWS_MAX_IDS","ListCmsEntryBlockingReviewsUseCase","createAbstraction"],"mappings":";AAUO,MAAMA,2BAA2B;AA8BjC,MAAMC,qCACTC,kBAAuD"}
@@ -0,0 +1,4 @@
1
+ export declare const ListCmsEntryBlockingReviewsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };