@webiny/app-website-builder-workflows 0.0.0-unstable.0156a4c312

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 (402) hide show
  1. package/Components/ContentReviews/WbContentReviews.d.ts +2 -0
  2. package/Components/ContentReviews/WbContentReviews.js +41 -0
  3. package/Components/ContentReviews/WbContentReviews.js.map +1 -0
  4. package/Components/ContentReviews/WbContentReviews.smoke.test.d.ts +1 -0
  5. package/Components/ContentReviews/WbContentReviews.smoke.test.js +59 -0
  6. package/Components/ContentReviews/WbContentReviews.smoke.test.js.map +1 -0
  7. package/Components/ContentReviews/WbContentReviews.test.d.ts +1 -0
  8. package/Components/ContentReviews/WbContentReviews.test.js +80 -0
  9. package/Components/ContentReviews/WbContentReviews.test.js.map +1 -0
  10. package/Components/ContentReviews/WbContentReviewsSidebarItem.d.ts +2 -0
  11. package/Components/ContentReviews/WbContentReviewsSidebarItem.js +18 -0
  12. package/Components/ContentReviews/WbContentReviewsSidebarItem.js.map +1 -0
  13. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.d.ts +1 -0
  14. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js +67 -0
  15. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js.map +1 -0
  16. package/Components/PageEditor/DisabledPublishButton.d.ts +6 -0
  17. package/Components/PageEditor/DisabledPublishButton.js +17 -0
  18. package/Components/PageEditor/DisabledPublishButton.js.map +1 -0
  19. package/Components/PageEditor/DisabledPublishButton.test.d.ts +1 -0
  20. package/Components/PageEditor/DisabledPublishButton.test.js +67 -0
  21. package/Components/PageEditor/DisabledPublishButton.test.js.map +1 -0
  22. package/Components/PageEditor/PageBasePublishDecorator.d.ts +2 -0
  23. package/Components/PageEditor/PageBasePublishDecorator.js +23 -0
  24. package/Components/PageEditor/PageBasePublishDecorator.js.map +1 -0
  25. package/Components/PageEditor/PageEditorAutoSave.d.ts +2 -0
  26. package/Components/PageEditor/PageEditorAutoSave.js +23 -0
  27. package/Components/PageEditor/PageEditorAutoSave.js.map +1 -0
  28. package/Components/PageEditor/PageEditorAutoSave.test.d.ts +1 -0
  29. package/Components/PageEditor/PageEditorAutoSave.test.js +111 -0
  30. package/Components/PageEditor/PageEditorAutoSave.test.js.map +1 -0
  31. package/Components/PageEditor/PageEditorConfig.d.ts +2 -0
  32. package/Components/PageEditor/PageEditorConfig.js +13 -0
  33. package/Components/PageEditor/PageEditorConfig.js.map +1 -0
  34. package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
  35. package/Components/PageEditor/PageEditorLayout.js +10 -0
  36. package/Components/PageEditor/PageEditorLayout.js.map +1 -0
  37. package/Components/PageEditor/PageEditorLayout.test.d.ts +1 -0
  38. package/Components/PageEditor/PageEditorLayout.test.js +121 -0
  39. package/Components/PageEditor/PageEditorLayout.test.js.map +1 -0
  40. package/Components/PageEditor/PageEditorTopBar.d.ts +2 -0
  41. package/Components/PageEditor/PageEditorTopBar.js +10 -0
  42. package/Components/PageEditor/PageEditorTopBar.js.map +1 -0
  43. package/Components/PageEditor/PageEditorTopBar.test.d.ts +1 -0
  44. package/Components/PageEditor/PageEditorTopBar.test.js +175 -0
  45. package/Components/PageEditor/PageEditorTopBar.test.js.map +1 -0
  46. package/Components/PageEditor/PageNewRevisionDecorator.d.ts +2 -0
  47. package/Components/PageEditor/PageNewRevisionDecorator.js +24 -0
  48. package/Components/PageEditor/PageNewRevisionDecorator.js.map +1 -0
  49. package/Components/PageEditor/PageNewRevisionDecorator.test.d.ts +1 -0
  50. package/Components/PageEditor/PageNewRevisionDecorator.test.js +107 -0
  51. package/Components/PageEditor/PageNewRevisionDecorator.test.js.map +1 -0
  52. package/Components/PageEditor/PageReadOnlySync.d.ts +3 -0
  53. package/Components/PageEditor/PageReadOnlySync.js +23 -0
  54. package/Components/PageEditor/PageReadOnlySync.js.map +1 -0
  55. package/Components/PageEditor/PageReviewBar.d.ts +4 -0
  56. package/Components/PageEditor/PageReviewBar.js +93 -0
  57. package/Components/PageEditor/PageReviewBar.js.map +1 -0
  58. package/Components/PageEditor/PageReviewBar.test.d.ts +1 -0
  59. package/Components/PageEditor/PageReviewBar.test.js +135 -0
  60. package/Components/PageEditor/PageReviewBar.test.js.map +1 -0
  61. package/Components/PageEditor/PageReviewPublishAction.d.ts +2 -0
  62. package/Components/PageEditor/PageReviewPublishAction.js +15 -0
  63. package/Components/PageEditor/PageReviewPublishAction.js.map +1 -0
  64. package/Components/PageEditor/PageReviewPublishButton.d.ts +4 -0
  65. package/Components/PageEditor/PageReviewPublishButton.js +23 -0
  66. package/Components/PageEditor/PageReviewPublishButton.js.map +1 -0
  67. package/Components/PageEditor/PageScheduleDecorator.d.ts +2 -0
  68. package/Components/PageEditor/PageScheduleDecorator.js +23 -0
  69. package/Components/PageEditor/PageScheduleDecorator.js.map +1 -0
  70. package/Components/PageEditor/PageScheduleDecorator.test.d.ts +1 -0
  71. package/Components/PageEditor/PageScheduleDecorator.test.js +75 -0
  72. package/Components/PageEditor/PageScheduleDecorator.test.js.map +1 -0
  73. package/Components/PageEditor/getPageReadOnlyReason.d.ts +4 -0
  74. package/Components/PageEditor/getPageReadOnlyReason.js +20 -0
  75. package/Components/PageEditor/getPageReadOnlyReason.js.map +1 -0
  76. package/Components/PageEditor/getPageReadOnlyReason.test.d.ts +1 -0
  77. package/Components/PageEditor/getPageReadOnlyReason.test.js +122 -0
  78. package/Components/PageEditor/getPageReadOnlyReason.test.js.map +1 -0
  79. package/Components/PageEditor/getPageReviewContext.d.ts +9 -0
  80. package/Components/PageEditor/getPageReviewContext.js +13 -0
  81. package/Components/PageEditor/getPageReviewContext.js.map +1 -0
  82. package/Components/PageEditor/getPageReviewContext.test.d.ts +1 -0
  83. package/Components/PageEditor/getPageReviewContext.test.js +42 -0
  84. package/Components/PageEditor/getPageReviewContext.test.js.map +1 -0
  85. package/Components/PageEditor/pageEditorDocument.d.ts +17 -0
  86. package/Components/PageEditor/pageEditorDocument.js +0 -0
  87. package/Components/PageEditor/pageReviewMatrix.test.d.ts +1 -0
  88. package/Components/PageEditor/pageReviewMatrix.test.js +223 -0
  89. package/Components/PageEditor/pageReviewMatrix.test.js.map +1 -0
  90. package/Components/PageEditor/publishMatrix.test.d.ts +1 -0
  91. package/Components/PageEditor/publishMatrix.test.js +313 -0
  92. package/Components/PageEditor/publishMatrix.test.js.map +1 -0
  93. package/Components/PagesList/PageListReviewGatedActions.d.ts +2 -0
  94. package/Components/PagesList/PageListReviewGatedActions.js +27 -0
  95. package/Components/PagesList/PageListReviewGatedActions.js.map +1 -0
  96. package/Components/PagesList/PageListReviewGatedActions.test.d.ts +1 -0
  97. package/Components/PagesList/PageListReviewGatedActions.test.js +94 -0
  98. package/Components/PagesList/PageListReviewGatedActions.test.js.map +1 -0
  99. package/Components/PagesList/PagesList.d.ts +2 -0
  100. package/Components/PagesList/PagesList.js +8 -0
  101. package/Components/PagesList/PagesList.js.map +1 -0
  102. package/Components/PagesList/PagesList.test.d.ts +1 -0
  103. package/Components/PagesList/PagesList.test.js +47 -0
  104. package/Components/PagesList/PagesList.test.js.map +1 -0
  105. package/Components/PagesList/index.d.ts +1 -0
  106. package/Components/PagesList/index.js +1 -0
  107. package/Components/index.d.ts +2 -0
  108. package/Components/index.js +2 -0
  109. package/LICENSE +21 -0
  110. package/README.md +11 -0
  111. package/Routes/WebsiteBuilderWorkflowsMenu.d.ts +2 -0
  112. package/Routes/WebsiteBuilderWorkflowsMenu.js +23 -0
  113. package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -0
  114. package/Routes/WebsiteBuilderWorkflowsMenu.test.d.ts +1 -0
  115. package/Routes/WebsiteBuilderWorkflowsMenu.test.js +141 -0
  116. package/Routes/WebsiteBuilderWorkflowsMenu.test.js.map +1 -0
  117. package/Routes/index.d.ts +1 -0
  118. package/Routes/index.js +1 -0
  119. package/constants.d.ts +1 -0
  120. package/constants.js +4 -0
  121. package/constants.js.map +1 -0
  122. package/editorGlue.wiring.test.d.ts +1 -0
  123. package/editorGlue.wiring.test.js +128 -0
  124. package/editorGlue.wiring.test.js.map +1 -0
  125. package/features/cache/WbReviewCacheSyncHandler.d.ts +8 -0
  126. package/features/cache/WbReviewCacheSyncHandler.js +14 -0
  127. package/features/cache/WbReviewCacheSyncHandler.js.map +1 -0
  128. package/features/cache/WbReviewPageCacheWriter.d.ts +17 -0
  129. package/features/cache/WbReviewPageCacheWriter.js +39 -0
  130. package/features/cache/WbReviewPageCacheWriter.js.map +1 -0
  131. package/features/cache/WbReviewPageCacheWriter.test.d.ts +1 -0
  132. package/features/cache/WbReviewPageCacheWriter.test.js +115 -0
  133. package/features/cache/WbReviewPageCacheWriter.test.js.map +1 -0
  134. package/features/cache/abstractions.d.ts +5 -0
  135. package/features/cache/abstractions.js +5 -0
  136. package/features/cache/abstractions.js.map +1 -0
  137. package/features/cache/feature.d.ts +1 -0
  138. package/features/cache/feature.js +13 -0
  139. package/features/cache/feature.js.map +1 -0
  140. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.d.ts +25 -0
  141. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js +112 -0
  142. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js.map +1 -0
  143. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.d.ts +1 -0
  144. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js +632 -0
  145. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js.map +1 -0
  146. package/features/editorGateway/feature.d.ts +1 -0
  147. package/features/editorGateway/feature.js +11 -0
  148. package/features/editorGateway/feature.js.map +1 -0
  149. package/features/editorGateway/feature.test.d.ts +1 -0
  150. package/features/editorGateway/feature.test.js +244 -0
  151. package/features/editorGateway/feature.test.js.map +1 -0
  152. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.d.ts +1 -0
  153. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js +19 -0
  154. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js.map +1 -0
  155. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.d.ts +1 -0
  156. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js +19 -0
  157. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js.map +1 -0
  158. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.d.ts +1 -0
  159. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js +19 -0
  160. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js.map +1 -0
  161. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.d.ts +1 -0
  162. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js +23 -0
  163. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js.map +1 -0
  164. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.d.ts +1 -0
  165. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js +19 -0
  166. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js.map +1 -0
  167. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.d.ts +1 -0
  168. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js +16 -0
  169. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js.map +1 -0
  170. package/features/editorMounting/WbWorkflowEditorAppAdapter.d.ts +21 -0
  171. package/features/editorMounting/WbWorkflowEditorAppAdapter.js +45 -0
  172. package/features/editorMounting/WbWorkflowEditorAppAdapter.js.map +1 -0
  173. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.d.ts +1 -0
  174. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js +115 -0
  175. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js.map +1 -0
  176. package/features/editorMounting/abstractions.d.ts +5 -0
  177. package/features/editorMounting/abstractions.js +5 -0
  178. package/features/editorMounting/abstractions.js.map +1 -0
  179. package/features/editorMounting/feature.d.ts +3 -0
  180. package/features/editorMounting/feature.js +19 -0
  181. package/features/editorMounting/feature.js.map +1 -0
  182. package/features/editorMounting/feature.test.d.ts +1 -0
  183. package/features/editorMounting/feature.test.js +93 -0
  184. package/features/editorMounting/feature.test.js.map +1 -0
  185. package/features/editorReview/WbPageContentReloader.d.ts +12 -0
  186. package/features/editorReview/WbPageContentReloader.js +40 -0
  187. package/features/editorReview/WbPageContentReloader.js.map +1 -0
  188. package/features/editorReview/WbPageContentReloader.test.d.ts +1 -0
  189. package/features/editorReview/WbPageContentReloader.test.js +222 -0
  190. package/features/editorReview/WbPageContentReloader.test.js.map +1 -0
  191. package/features/editorReview/WbPageReview.d.ts +8 -0
  192. package/features/editorReview/WbPageReview.js +14 -0
  193. package/features/editorReview/WbPageReview.js.map +1 -0
  194. package/features/editorReview/WbPageUnsavedChanges.d.ts +8 -0
  195. package/features/editorReview/WbPageUnsavedChanges.js +12 -0
  196. package/features/editorReview/WbPageUnsavedChanges.js.map +1 -0
  197. package/features/editorReview/WbPageUnsavedChanges.test.d.ts +1 -0
  198. package/features/editorReview/WbPageUnsavedChanges.test.js +33 -0
  199. package/features/editorReview/WbPageUnsavedChanges.test.js.map +1 -0
  200. package/features/editorReview/abstractions.d.ts +5 -0
  201. package/features/editorReview/abstractions.js +5 -0
  202. package/features/editorReview/abstractions.js.map +1 -0
  203. package/features/editorReview/feature.d.ts +3 -0
  204. package/features/editorReview/feature.js +17 -0
  205. package/features/editorReview/feature.js.map +1 -0
  206. package/features/gateway/WbReviewChangeMessageHandler.d.ts +8 -0
  207. package/features/gateway/WbReviewChangeMessageHandler.js +16 -0
  208. package/features/gateway/WbReviewChangeMessageHandler.js.map +1 -0
  209. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.d.ts +13 -0
  210. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js +35 -0
  211. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js.map +1 -0
  212. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.d.ts +1 -0
  213. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js +47 -0
  214. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js.map +1 -0
  215. package/features/gateway/WbReviewContentAdapter/abstractions.d.ts +5 -0
  216. package/features/gateway/WbReviewContentAdapter/abstractions.js +5 -0
  217. package/features/gateway/WbReviewContentAdapter/abstractions.js.map +1 -0
  218. package/features/gateway/WbReviewGateway/WbReviewGateway.d.ts +51 -0
  219. package/features/gateway/WbReviewGateway/WbReviewGateway.js +216 -0
  220. package/features/gateway/WbReviewGateway/WbReviewGateway.js.map +1 -0
  221. package/features/gateway/WbReviewGateway/WbReviewGateway.test.d.ts +1 -0
  222. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js +647 -0
  223. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js.map +1 -0
  224. package/features/gateway/WbReviewNotificationHandler.d.ts +8 -0
  225. package/features/gateway/WbReviewNotificationHandler.js +16 -0
  226. package/features/gateway/WbReviewNotificationHandler.js.map +1 -0
  227. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.d.ts +8 -0
  228. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js +14 -0
  229. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js.map +1 -0
  230. package/features/gateway/WbReviewRowProvider/abstractions.d.ts +5 -0
  231. package/features/gateway/WbReviewRowProvider/abstractions.js +5 -0
  232. package/features/gateway/WbReviewRowProvider/abstractions.js.map +1 -0
  233. package/features/gateway/assertWbPageNamespace.d.ts +1 -0
  234. package/features/gateway/assertWbPageNamespace.js +7 -0
  235. package/features/gateway/assertWbPageNamespace.js.map +1 -0
  236. package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
  237. package/features/gateway/contentReviewsBindings.test.js +159 -0
  238. package/features/gateway/contentReviewsBindings.test.js.map +1 -0
  239. package/features/gateway/feature.d.ts +4 -0
  240. package/features/gateway/feature.js +27 -0
  241. package/features/gateway/feature.js.map +1 -0
  242. package/features/gateway/feature.test.d.ts +1 -0
  243. package/features/gateway/feature.test.js +85 -0
  244. package/features/gateway/feature.test.js.map +1 -0
  245. package/features/gateway/graphql/WbOperationResponse.d.ts +3 -0
  246. package/features/gateway/graphql/WbOperationResponse.js +0 -0
  247. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.d.ts +1 -0
  248. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js +22 -0
  249. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js.map +1 -0
  250. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.d.ts +1 -0
  251. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js +18 -0
  252. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js.map +1 -0
  253. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.d.ts +1 -0
  254. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js +26 -0
  255. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js.map +1 -0
  256. package/features/gateway/graphql/getWebsiteBuilderPageReview.d.ts +1 -0
  257. package/features/gateway/graphql/getWebsiteBuilderPageReview.js +18 -0
  258. package/features/gateway/graphql/getWebsiteBuilderPageReview.js.map +1 -0
  259. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.d.ts +1 -0
  260. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js +18 -0
  261. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js.map +1 -0
  262. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.d.ts +1 -0
  263. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js +18 -0
  264. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js.map +1 -0
  265. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.d.ts +1 -0
  266. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js +18 -0
  267. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js.map +1 -0
  268. package/features/gateway/graphql/listWebsiteBuilderPageReviews.d.ts +1 -0
  269. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js +34 -0
  270. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js.map +1 -0
  271. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.d.ts +1 -0
  272. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js +22 -0
  273. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js.map +1 -0
  274. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.d.ts +1 -0
  275. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js +18 -0
  276. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js.map +1 -0
  277. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.d.ts +1 -0
  278. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js +22 -0
  279. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js.map +1 -0
  280. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.d.ts +1 -0
  281. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js +22 -0
  282. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js.map +1 -0
  283. package/features/gateway/graphql/requestWebsiteBuilderPageReview.d.ts +1 -0
  284. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js +26 -0
  285. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js.map +1 -0
  286. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.d.ts +1 -0
  287. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js +18 -0
  288. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js.map +1 -0
  289. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.d.ts +1 -0
  290. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js +18 -0
  291. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js.map +1 -0
  292. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.d.ts +1 -0
  293. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js +26 -0
  294. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js.map +1 -0
  295. package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +14 -0
  296. package/features/trash/BulkDeletePresenterReviewDecorator.js +27 -0
  297. package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
  298. package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
  299. package/features/trash/BulkDeletePresenterReviewDecorator.test.js +234 -0
  300. package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
  301. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.d.ts +13 -0
  302. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js +23 -0
  303. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js.map +1 -0
  304. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.d.ts +1 -0
  305. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js +114 -0
  306. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js.map +1 -0
  307. package/features/trash/DeletePageUseCaseReviewDecorator.d.ts +13 -0
  308. package/features/trash/DeletePageUseCaseReviewDecorator.js +23 -0
  309. package/features/trash/DeletePageUseCaseReviewDecorator.js.map +1 -0
  310. package/features/trash/DeletePageUseCaseReviewDecorator.test.d.ts +1 -0
  311. package/features/trash/DeletePageUseCaseReviewDecorator.test.js +134 -0
  312. package/features/trash/DeletePageUseCaseReviewDecorator.test.js.map +1 -0
  313. package/features/trash/feature.d.ts +1 -0
  314. package/features/trash/feature.js +15 -0
  315. package/features/trash/feature.js.map +1 -0
  316. package/features/trash/feature.test.d.ts +1 -0
  317. package/features/trash/feature.test.js +183 -0
  318. package/features/trash/feature.test.js.map +1 -0
  319. package/hooks/usePage.d.ts +5 -0
  320. package/hooks/usePage.js +15 -0
  321. package/hooks/usePage.js.map +1 -0
  322. package/hooks/usePage.test.d.ts +1 -0
  323. package/hooks/usePage.test.js +49 -0
  324. package/hooks/usePage.test.js.map +1 -0
  325. package/index.d.ts +2 -0
  326. package/index.js +40 -0
  327. package/index.js.map +1 -0
  328. package/index.mount.test.d.ts +1 -0
  329. package/index.mount.test.js +50 -0
  330. package/index.mount.test.js.map +1 -0
  331. package/index.test.d.ts +1 -0
  332. package/index.test.js +523 -0
  333. package/index.test.js.map +1 -0
  334. package/package.json +54 -0
  335. package/pageListChangeStatus.wiring.test.d.ts +1 -0
  336. package/pageListChangeStatus.wiring.test.js +175 -0
  337. package/pageListChangeStatus.wiring.test.js.map +1 -0
  338. package/pageListGlue.wiring.test.d.ts +1 -0
  339. package/pageListGlue.wiring.test.js +220 -0
  340. package/pageListGlue.wiring.test.js.map +1 -0
  341. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.d.ts +8 -0
  342. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js +16 -0
  343. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js.map +1 -0
  344. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.d.ts +1 -0
  345. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js +19 -0
  346. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js.map +1 -0
  347. package/presentation/page/PageGet/feature.d.ts +1 -0
  348. package/presentation/page/PageGet/feature.js +11 -0
  349. package/presentation/page/PageGet/feature.js.map +1 -0
  350. package/presentation/page/PageList/WbReviewListPagesFieldSelection.d.ts +8 -0
  351. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js +16 -0
  352. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js.map +1 -0
  353. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.d.ts +1 -0
  354. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js +19 -0
  355. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js.map +1 -0
  356. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.d.ts +12 -0
  357. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js +24 -0
  358. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js.map +1 -0
  359. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.d.ts +1 -0
  360. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js +70 -0
  361. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js.map +1 -0
  362. package/presentation/page/PageList/feature.d.ts +1 -0
  363. package/presentation/page/PageList/feature.js +13 -0
  364. package/presentation/page/PageList/feature.js.map +1 -0
  365. package/presentation/page/RevisionList/RevisionListPresenterDecorator.d.ts +15 -0
  366. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js +36 -0
  367. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js.map +1 -0
  368. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.d.ts +1 -0
  369. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js +119 -0
  370. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js.map +1 -0
  371. package/presentation/page/RevisionList/feature.d.ts +1 -0
  372. package/presentation/page/RevisionList/feature.js +11 -0
  373. package/presentation/page/RevisionList/feature.js.map +1 -0
  374. package/presentation/page/wbReviewPageSelection.d.ts +1 -0
  375. package/presentation/page/wbReviewPageSelection.js +9 -0
  376. package/presentation/page/wbReviewPageSelection.js.map +1 -0
  377. package/publishAutosave.wiring.test.d.ts +1 -0
  378. package/publishAutosave.wiring.test.js +162 -0
  379. package/publishAutosave.wiring.test.js.map +1 -0
  380. package/routes.d.ts +9 -0
  381. package/routes.js +19 -0
  382. package/routes.js.map +1 -0
  383. package/testing/WbEditorHarness.d.ts +11 -0
  384. package/testing/WbEditorHarness.js +22 -0
  385. package/testing/WbEditorHarness.js.map +1 -0
  386. package/testing/createFakeSession.d.ts +9 -0
  387. package/testing/createFakeSession.js +29 -0
  388. package/testing/createFakeSession.js.map +1 -0
  389. package/testing/createFakeVm.d.ts +3 -0
  390. package/testing/createFakeVm.js +51 -0
  391. package/testing/createFakeVm.js.map +1 -0
  392. package/testing/createFolder.d.ts +2 -0
  393. package/testing/createFolder.js +13 -0
  394. package/testing/createFolder.js.map +1 -0
  395. package/testing/createPageEditor.d.ts +4 -0
  396. package/testing/createPageEditor.js +26 -0
  397. package/testing/createPageEditor.js.map +1 -0
  398. package/testing/registerPageContent.d.ts +20 -0
  399. package/testing/registerPageContent.js +28 -0
  400. package/testing/registerPageContent.js.map +1 -0
  401. package/types.d.ts +9 -0
  402. package/types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/trash/DeletePageUseCaseReviewDecorator.test.js","sources":["../../../src/features/trash/DeletePageUseCaseReviewDecorator.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { GraphQLOperationError } from \"@webiny/app/errors/index.js\";\nimport { Confirmation } from \"@webiny/app-admin/features/confirmation/abstractions.js\";\nimport { Notifications } from \"@webiny/app-admin/features/notifications/abstractions.js\";\nimport { DeletePageUseCase } from \"@webiny/app-website-builder/features/pages/deletePage/abstractions.js\";\nimport { ReviewErrorCode } from \"@webiny/app-workflows/review/domain/ReviewErrorCode.js\";\nimport { ActiveReviewBlockCollector } from \"@webiny/app-workflows/review/trash/ActiveReviewBlockCollector/ActiveReviewBlockCollector.js\";\nimport { ActiveReviewGuard } from \"@webiny/app-workflows/review/trash/ActiveReviewGuard/ActiveReviewGuard.js\";\nimport { createTrashUseCaseFakes } from \"@webiny/app-workflows/review/testing/createTrashUseCaseFakes.js\";\nimport { registerTrashUseCaseFakes } from \"@webiny/app-workflows/review/testing/registerTrashUseCaseFakes.js\";\nimport { DeletePageUseCaseReviewDecorator } from \"./DeletePageUseCaseReviewDecorator.js\";\n\nfunction createRefusal() {\n return new GraphQLOperationError({\n message: \"This content has a review in progress.\",\n code: ReviewErrorCode.ActiveReviewOnTrash,\n data: {\n model: \"wb.page\",\n action: \"trash\",\n reviews: [\n {\n reviewId: \"review-1\",\n model: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0002\",\n title: \"Home page\",\n stepPosition: 1,\n stepCount: 2,\n stepName: \"Editor\"\n }\n ]\n }\n });\n}\n\nfunction setup(decision: \"confirm\" | \"dismiss\" = \"confirm\") {\n const confirm = vi.fn(\n async (_name: string, _params: unknown, execute?: (data: unknown) => Promise<unknown>) => {\n if (decision === \"dismiss\") {\n return false;\n }\n return execute ? execute(undefined) : undefined;\n }\n );\n const decoratee = { execute: vi.fn() };\n const useCases = createTrashUseCaseFakes();\n\n const container = new Container();\n container.registerInstance(Confirmation, { confirm } as unknown as Confirmation.Interface);\n container.registerInstance(Notifications, {\n notify: vi.fn(),\n success: vi.fn(),\n warning: vi.fn()\n } as unknown as Notifications.Interface);\n container.register(ActiveReviewBlockCollector).inSingletonScope();\n container.register(ActiveReviewGuard).inSingletonScope();\n registerTrashUseCaseFakes(container, useCases);\n container.registerInstance(DeletePageUseCase, decoratee);\n container.registerDecorator(DeletePageUseCaseReviewDecorator);\n\n return { confirm, decoratee, useCases, useCase: container.resolve(DeletePageUseCase) };\n}\n\ndescribe(\"DeletePageUseCaseReviewDecorator\", () => {\n it(\"passes through to the decoratee when the trash succeeds\", async () => {\n const { confirm, decoratee, useCases, useCase } = setup();\n decoratee.execute.mockResolvedValue(true);\n\n const result = await useCase.execute({ id: \"page-1#0002\", permanently: false });\n\n expect(result).toBe(true);\n expect(decoratee.execute).toHaveBeenCalledWith({ id: \"page-1#0002\", permanently: false });\n expect(confirm).not.toHaveBeenCalled();\n expect(useCases.cancelReviewsForDelete.execute).not.toHaveBeenCalled();\n });\n\n it(\"on the server refusal warns, cancels every revision of the page once and repeats the trash\", async () => {\n const { confirm, decoratee, useCases, useCase } = setup();\n decoratee.execute.mockRejectedValueOnce(createRefusal()).mockResolvedValueOnce(true);\n\n const result = await useCase.execute({ id: \"page-1#0002\", permanently: false });\n\n expect(result).toBe(true);\n expect(confirm).toHaveBeenCalledTimes(1);\n expect(useCases.cancelReviewsForDelete.execute).toHaveBeenCalledTimes(1);\n expect(useCases.cancelReviewsForDelete.execute).toHaveBeenCalledWith({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: null,\n action: \"trash\"\n });\n expect(decoratee.execute).toHaveBeenCalledTimes(2);\n });\n\n it(\"resolves false when the warning is dismissed, with nothing cancelled or repeated\", async () => {\n const { decoratee, useCases, useCase } = setup(\"dismiss\");\n decoratee.execute.mockRejectedValue(createRefusal());\n\n const result = await useCase.execute({ id: \"page-1#0002\", permanently: false });\n\n expect(result).toBe(false);\n expect(useCases.cancelReviewsForDelete.execute).not.toHaveBeenCalled();\n expect(decoratee.execute).toHaveBeenCalledTimes(1);\n });\n\n it(\"rethrows any other error unchanged\", async () => {\n const { confirm, decoratee, useCase } = setup();\n const failure = new Error(\"Network down\");\n decoratee.execute.mockRejectedValue(failure);\n\n const error = await useCase\n .execute({ id: \"page-1#0002\", permanently: false })\n .catch(e => e);\n\n expect(error).toBe(failure);\n expect(confirm).not.toHaveBeenCalled();\n });\n\n it(\"propagates a second refusal after the repeat\", async () => {\n const { confirm, decoratee, useCase } = setup();\n const second = createRefusal();\n decoratee.execute.mockRejectedValueOnce(createRefusal()).mockRejectedValueOnce(second);\n\n const error = await useCase\n .execute({ id: \"page-1#0002\", permanently: false })\n .catch(e => e);\n\n expect(error).toBe(second);\n expect(confirm).toHaveBeenCalledTimes(1);\n });\n});\n"],"names":["createRefusal","GraphQLOperationError","ReviewErrorCode","setup","decision","confirm","vi","_name","_params","execute","undefined","decoratee","useCases","createTrashUseCaseFakes","container","Container","Confirmation","Notifications","ActiveReviewBlockCollector","ActiveReviewGuard","registerTrashUseCaseFakes","DeletePageUseCase","DeletePageUseCaseReviewDecorator","describe","it","useCase","result","expect","failure","Error","error","e","second"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const WbReviewTrashFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,15 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { DeletePageUseCaseReviewDecorator } from "./DeletePageUseCaseReviewDecorator.js";
3
+ import { DeletePageRevisionUseCaseReviewDecorator } from "./DeletePageRevisionUseCaseReviewDecorator.js";
4
+ import { BulkDeletePresenterReviewDecorator } from "./BulkDeletePresenterReviewDecorator.js";
5
+ const WbReviewTrashFeature = createFeature({
6
+ name: "WebsiteBuilderWorkflows/Trash",
7
+ register (container) {
8
+ container.registerDecorator(DeletePageUseCaseReviewDecorator);
9
+ container.registerDecorator(DeletePageRevisionUseCaseReviewDecorator);
10
+ container.registerDecorator(BulkDeletePresenterReviewDecorator);
11
+ }
12
+ });
13
+ export { WbReviewTrashFeature };
14
+
15
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/trash/feature.js","sources":["../../../src/features/trash/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { DeletePageUseCaseReviewDecorator } from \"./DeletePageUseCaseReviewDecorator.js\";\nimport { DeletePageRevisionUseCaseReviewDecorator } from \"./DeletePageRevisionUseCaseReviewDecorator.js\";\nimport { BulkDeletePresenterReviewDecorator } from \"./BulkDeletePresenterReviewDecorator.js\";\n\nexport const WbReviewTrashFeature = createFeature({\n name: \"WebsiteBuilderWorkflows/Trash\",\n register(container) {\n container.registerDecorator(DeletePageUseCaseReviewDecorator);\n container.registerDecorator(DeletePageRevisionUseCaseReviewDecorator);\n container.registerDecorator(BulkDeletePresenterReviewDecorator);\n }\n});\n"],"names":["WbReviewTrashFeature","createFeature","container","DeletePageUseCaseReviewDecorator","DeletePageRevisionUseCaseReviewDecorator","BulkDeletePresenterReviewDecorator"],"mappings":";;;;AAKO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,iBAAiB,CAACC;QAC5BD,UAAU,iBAAiB,CAACE;QAC5BF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,183 @@
1
+ import react from "react";
2
+ import { describe, expect, it, vi } from "vitest";
3
+ import { render } from "@testing-library/react";
4
+ import { Container } from "@webiny/di";
5
+ import { DiContainerProvider } from "@webiny/app/shared/di/DiContainerProvider.js";
6
+ import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/abstractions.js";
7
+ import { FeatureFlagsService } from "@webiny/app-admin/features/featureFlags/abstractions.js";
8
+ import { FeatureFlags } from "@webiny/feature-flags";
9
+ import { Page } from "@webiny/app-website-builder/domain/Page/Page.js";
10
+ import { DeletePageUseCase } from "@webiny/app-website-builder/features/pages/deletePage/abstractions.js";
11
+ import { DeletePageRevisionUseCase } from "@webiny/app-website-builder/features/pages/deletePageRevision/abstractions.js";
12
+ import { BulkDeletePresenter } from "@webiny/app-website-builder/presentation/pages/bulkActions/abstractions.js";
13
+ import { ReviewNotificationService } from "@webiny/app-workflows/review/notifications/abstractions.js";
14
+ import { ActiveReviewGuard } from "@webiny/app-workflows/review/trash/ActiveReviewGuard/abstractions.js";
15
+ import { createTrashUseCaseFakes } from "@webiny/app-workflows/review/testing/createTrashUseCaseFakes.js";
16
+ import { registerTrashUseCaseFakes } from "@webiny/app-workflows/review/testing/registerTrashUseCaseFakes.js";
17
+ import { WebsiteBuilderWorkflows } from "../../index.js";
18
+ import { WbReviewTrashFeature } from "./feature.js";
19
+ vi.mock("~/Routes/index.js", ()=>({
20
+ WebsiteBuilderWorkflowsMenu: ()=>null
21
+ }));
22
+ vi.mock("~/Components/index.js", ()=>({
23
+ PageEditorConfig: ()=>null,
24
+ PagesList: ()=>null
25
+ }));
26
+ vi.mock("~/Components/ContentReviews/WbContentReviews.js", ()=>({
27
+ WbContentReviews: ()=>null
28
+ }));
29
+ vi.mock("~/presentation/page/PageList/feature.js", ()=>({
30
+ PageListWorkflowsFeature: {
31
+ name: "Mock",
32
+ register: ()=>void 0,
33
+ resolve: ()=>void 0
34
+ }
35
+ }));
36
+ vi.mock("~/presentation/page/PageGet/feature.js", ()=>({
37
+ PageGetWorkflowsFeature: {
38
+ name: "Mock",
39
+ register: ()=>void 0,
40
+ resolve: ()=>void 0
41
+ }
42
+ }));
43
+ describe("WebsiteBuilderWorkflows (composition root)", ()=>{
44
+ const createContainer = (isEnabled)=>{
45
+ const flagsService = {
46
+ getFlags: ()=>new FeatureFlags({
47
+ advancedPublishingWorkflow: isEnabled
48
+ }),
49
+ isLoaded: ()=>true,
50
+ loadFlags: async ()=>void 0
51
+ };
52
+ const guard = {
53
+ run: vi.fn(async (params)=>params.action()),
54
+ runBulk: vi.fn(async (params)=>params.run(params.items, false))
55
+ };
56
+ const deletePage = {
57
+ execute: vi.fn(async ()=>true)
58
+ };
59
+ const deleteRevision = {
60
+ execute: vi.fn(async ()=>true)
61
+ };
62
+ const bulk = {
63
+ vm: {
64
+ processing: false,
65
+ results: []
66
+ },
67
+ execute: vi.fn(async ()=>void 0)
68
+ };
69
+ const container = new Container();
70
+ container.registerInstance(FeatureFlagsService, flagsService);
71
+ container.registerInstance(MainGraphQLClient, {
72
+ execute: vi.fn()
73
+ });
74
+ container.registerInstance(ReviewNotificationService, {
75
+ handle: vi.fn()
76
+ });
77
+ container.registerInstance(ActiveReviewGuard, guard);
78
+ container.registerInstance(DeletePageUseCase, deletePage);
79
+ container.registerInstance(DeletePageRevisionUseCase, deleteRevision);
80
+ container.registerInstance(BulkDeletePresenter, bulk);
81
+ return {
82
+ container,
83
+ guard,
84
+ deletePage,
85
+ deleteRevision,
86
+ bulk
87
+ };
88
+ };
89
+ const exercise = async (container)=>{
90
+ await container.resolve(DeletePageUseCase).execute({
91
+ id: "p1#0001",
92
+ permanently: false
93
+ });
94
+ await container.resolve(DeletePageRevisionUseCase).execute({
95
+ id: "p1#0002"
96
+ });
97
+ await container.resolve(BulkDeletePresenter).execute([
98
+ Page.create({
99
+ id: "p1#0001",
100
+ entryId: "p1"
101
+ })
102
+ ]);
103
+ };
104
+ it("wraps the page delete, revision delete and bulk delete with the guard when the flag is on", async ()=>{
105
+ const { container, guard, deletePage, deleteRevision } = createContainer(true);
106
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
107
+ container: container
108
+ }, /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflows, null)));
109
+ await exercise(container);
110
+ expect(guard.run).toHaveBeenCalledTimes(2);
111
+ expect(guard.runBulk).toHaveBeenCalledTimes(1);
112
+ expect(deletePage.execute).toHaveBeenCalledTimes(1);
113
+ expect(deleteRevision.execute).toHaveBeenCalledTimes(1);
114
+ });
115
+ it("leaves all three unwrapped when the flag is off", async ()=>{
116
+ const { container, guard, deletePage, deleteRevision, bulk } = createContainer(false);
117
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
118
+ container: container
119
+ }, /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflows, null)));
120
+ await exercise(container);
121
+ expect(guard.run).not.toHaveBeenCalled();
122
+ expect(guard.runBulk).not.toHaveBeenCalled();
123
+ expect(deletePage.execute).toHaveBeenCalledTimes(1);
124
+ expect(deleteRevision.execute).toHaveBeenCalledTimes(1);
125
+ expect(bulk.execute).toHaveBeenCalledTimes(1);
126
+ });
127
+ });
128
+ describe("WbReviewTrashFeature", ()=>{
129
+ function setup() {
130
+ const guard = {
131
+ run: vi.fn(async (params)=>params.action()),
132
+ runBulk: vi.fn(async (params)=>params.run(params.items, false))
133
+ };
134
+ const useCases = createTrashUseCaseFakes();
135
+ const container = new Container();
136
+ container.registerInstance(ActiveReviewGuard, guard);
137
+ registerTrashUseCaseFakes(container, useCases);
138
+ container.registerInstance(DeletePageUseCase, {
139
+ execute: vi.fn(async ()=>true)
140
+ });
141
+ container.registerInstance(DeletePageRevisionUseCase, {
142
+ execute: vi.fn(async ()=>true)
143
+ });
144
+ container.registerInstance(BulkDeletePresenter, {
145
+ vm: {
146
+ processing: false,
147
+ results: []
148
+ },
149
+ execute: vi.fn(async ()=>void 0)
150
+ });
151
+ WbReviewTrashFeature.register(container);
152
+ return {
153
+ container,
154
+ guard,
155
+ useCases
156
+ };
157
+ }
158
+ it("decorates the two delete use cases and the bulk presenter", async ()=>{
159
+ const { container, guard } = setup();
160
+ await container.resolve(DeletePageUseCase).execute({
161
+ id: "page-1#0001",
162
+ permanently: false
163
+ });
164
+ await container.resolve(DeletePageRevisionUseCase).execute({
165
+ id: "page-1#0002"
166
+ });
167
+ await container.resolve(BulkDeletePresenter).execute([
168
+ Page.create({
169
+ id: "p1#0001",
170
+ entryId: "p1"
171
+ })
172
+ ]);
173
+ expect(guard.run).toHaveBeenCalledTimes(2);
174
+ expect(guard.run.mock.calls.map((call)=>call[0].revisionId)).toEqual([
175
+ null,
176
+ "page-1#0002"
177
+ ]);
178
+ expect(guard.run.mock.calls.every((call)=>!("useCases" in call[0]))).toBe(true);
179
+ expect(guard.runBulk).toHaveBeenCalledTimes(1);
180
+ });
181
+ });
182
+
183
+ //# sourceMappingURL=feature.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/trash/feature.test.js","sources":["../../../src/features/trash/feature.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { render } from \"@testing-library/react\";\nimport { Container } from \"@webiny/di\";\nimport { DiContainerProvider } from \"@webiny/app/shared/di/DiContainerProvider.js\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/abstractions.js\";\nimport { FeatureFlagsService } from \"@webiny/app-admin/features/featureFlags/abstractions.js\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\nimport { Page } from \"@webiny/app-website-builder/domain/Page/Page.js\";\nimport { DeletePageUseCase } from \"@webiny/app-website-builder/features/pages/deletePage/abstractions.js\";\nimport { DeletePageRevisionUseCase } from \"@webiny/app-website-builder/features/pages/deletePageRevision/abstractions.js\";\nimport { BulkDeletePresenter } from \"@webiny/app-website-builder/presentation/pages/bulkActions/abstractions.js\";\nimport { ReviewNotificationService } from \"@webiny/app-workflows/review/notifications/abstractions.js\";\nimport { ActiveReviewGuard } from \"@webiny/app-workflows/review/trash/ActiveReviewGuard/abstractions.js\";\nimport { createTrashUseCaseFakes } from \"@webiny/app-workflows/review/testing/createTrashUseCaseFakes.js\";\nimport { registerTrashUseCaseFakes } from \"@webiny/app-workflows/review/testing/registerTrashUseCaseFakes.js\";\nimport { WebsiteBuilderWorkflows } from \"~/index.js\";\nimport { WbReviewTrashFeature } from \"./feature.js\";\n\n// The composition root also mounts the other WB workflow features; they are stubbed as in `src/index.test.tsx`.\nvi.mock(\"~/Routes/index.js\", () => {\n return { WebsiteBuilderWorkflowsMenu: () => null };\n});\n\nvi.mock(\"~/Components/index.js\", () => {\n return {\n PageEditorConfig: () => null,\n PagesList: () => null\n };\n});\n\nvi.mock(\"~/Components/ContentReviews/WbContentReviews.js\", () => {\n return { WbContentReviews: () => null };\n});\n\nvi.mock(\"~/presentation/page/PageList/feature.js\", () => {\n return {\n PageListWorkflowsFeature: {\n name: \"Mock\",\n register: () => undefined,\n resolve: () => undefined\n }\n };\n});\n\nvi.mock(\"~/presentation/page/PageGet/feature.js\", () => {\n return {\n PageGetWorkflowsFeature: {\n name: \"Mock\",\n register: () => undefined,\n resolve: () => undefined\n }\n };\n});\n\ndescribe(\"WebsiteBuilderWorkflows (composition root)\", () => {\n const createContainer = (isEnabled: boolean) => {\n const flagsService: FeatureFlagsService.Interface = {\n getFlags: () => new FeatureFlags({ advancedPublishingWorkflow: isEnabled }),\n isLoaded: () => true,\n loadFlags: async () => undefined\n };\n const guard = {\n run: vi.fn(async <TResult,>(params: ActiveReviewGuard.Params<TResult>) =>\n params.action()\n ),\n runBulk: vi.fn(async <TItem,>(params: ActiveReviewGuard.BulkParams<TItem>) =>\n params.run(params.items, false)\n )\n };\n const deletePage = { execute: vi.fn(async () => true) };\n const deleteRevision = { execute: vi.fn(async () => true) };\n const bulk = {\n vm: { processing: false, results: [] },\n execute: vi.fn(async () => undefined)\n };\n const container = new Container();\n container.registerInstance(FeatureFlagsService, flagsService);\n container.registerInstance(MainGraphQLClient, { execute: vi.fn() });\n container.registerInstance(ReviewNotificationService, { handle: vi.fn() });\n container.registerInstance(\n ActiveReviewGuard,\n guard as unknown as ActiveReviewGuard.Interface\n );\n container.registerInstance(DeletePageUseCase, deletePage);\n container.registerInstance(DeletePageRevisionUseCase, deleteRevision);\n container.registerInstance(BulkDeletePresenter, bulk);\n return { container, guard, deletePage, deleteRevision, bulk };\n };\n\n const exercise = async (container: Container) => {\n await container.resolve(DeletePageUseCase).execute({ id: \"p1#0001\", permanently: false });\n await container.resolve(DeletePageRevisionUseCase).execute({ id: \"p1#0002\" });\n await container\n .resolve(BulkDeletePresenter)\n .execute([Page.create({ id: \"p1#0001\", entryId: \"p1\" })]);\n };\n\n it(\"wraps the page delete, revision delete and bulk delete with the guard when the flag is on\", async () => {\n const { container, guard, deletePage, deleteRevision } = createContainer(true);\n\n render(\n <DiContainerProvider container={container}>\n <WebsiteBuilderWorkflows />\n </DiContainerProvider>\n );\n await exercise(container);\n\n expect(guard.run).toHaveBeenCalledTimes(2);\n expect(guard.runBulk).toHaveBeenCalledTimes(1);\n expect(deletePage.execute).toHaveBeenCalledTimes(1);\n expect(deleteRevision.execute).toHaveBeenCalledTimes(1);\n });\n\n it(\"leaves all three unwrapped when the flag is off\", async () => {\n const { container, guard, deletePage, deleteRevision, bulk } = createContainer(false);\n\n render(\n <DiContainerProvider container={container}>\n <WebsiteBuilderWorkflows />\n </DiContainerProvider>\n );\n await exercise(container);\n\n expect(guard.run).not.toHaveBeenCalled();\n expect(guard.runBulk).not.toHaveBeenCalled();\n expect(deletePage.execute).toHaveBeenCalledTimes(1);\n expect(deleteRevision.execute).toHaveBeenCalledTimes(1);\n expect(bulk.execute).toHaveBeenCalledTimes(1);\n });\n});\n\ndescribe(\"WbReviewTrashFeature\", () => {\n function setup() {\n const guard = {\n run: vi.fn(async <TResult,>(params: ActiveReviewGuard.Params<TResult>) =>\n params.action()\n ),\n runBulk: vi.fn(async <TItem,>(params: ActiveReviewGuard.BulkParams<TItem>) =>\n params.run(params.items, false)\n )\n };\n const useCases = createTrashUseCaseFakes();\n const container = new Container();\n container.registerInstance(\n ActiveReviewGuard,\n guard as unknown as ActiveReviewGuard.Interface\n );\n registerTrashUseCaseFakes(container, useCases);\n container.registerInstance(DeletePageUseCase, { execute: vi.fn(async () => true) });\n container.registerInstance(DeletePageRevisionUseCase, { execute: vi.fn(async () => true) });\n container.registerInstance(BulkDeletePresenter, {\n vm: { processing: false, results: [] },\n execute: vi.fn(async () => undefined)\n });\n WbReviewTrashFeature.register(container);\n return { container, guard, useCases };\n }\n\n it(\"decorates the two delete use cases and the bulk presenter\", async () => {\n const { container, guard } = setup();\n\n await container\n .resolve(DeletePageUseCase)\n .execute({ id: \"page-1#0001\", permanently: false });\n await container.resolve(DeletePageRevisionUseCase).execute({ id: \"page-1#0002\" });\n await container\n .resolve(BulkDeletePresenter)\n .execute([Page.create({ id: \"p1#0001\", entryId: \"p1\" })]);\n\n expect(guard.run).toHaveBeenCalledTimes(2);\n expect(guard.run.mock.calls.map(call => call[0].revisionId)).toEqual([null, \"page-1#0002\"]);\n expect(guard.run.mock.calls.every(call => !(\"useCases\" in call[0]))).toBe(true);\n expect(guard.runBulk).toHaveBeenCalledTimes(1);\n });\n});\n"],"names":["vi","undefined","describe","createContainer","isEnabled","flagsService","FeatureFlags","guard","params","deletePage","deleteRevision","bulk","container","Container","FeatureFlagsService","MainGraphQLClient","ReviewNotificationService","ActiveReviewGuard","DeletePageUseCase","DeletePageRevisionUseCase","BulkDeletePresenter","exercise","Page","it","render","DiContainerProvider","WebsiteBuilderWorkflows","expect","setup","useCases","createTrashUseCaseFakes","registerTrashUseCaseFakes","WbReviewTrashFeature","call"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PageDto } from "@webiny/app-website-builder/domain/Page/index.js";
2
+ import type { WithWorkflows } from "../types.js";
3
+ export declare const usePage: () => {
4
+ page: WithWorkflows<PageDto>;
5
+ };
@@ -0,0 +1,15 @@
1
+ import { usePage } from "@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js";
2
+ const decoratePage = (page)=>({
3
+ ...page,
4
+ workflow: page.system?.workflow ?? null
5
+ });
6
+ const usePage_usePage = ()=>{
7
+ const usage = usePage();
8
+ return {
9
+ ...usage,
10
+ page: decoratePage(usage.page)
11
+ };
12
+ };
13
+ export { usePage_usePage as usePage };
14
+
15
+ //# sourceMappingURL=usePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks/usePage.js","sources":["../../src/hooks/usePage.ts"],"sourcesContent":["import { usePage as baseUsePage } from \"@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js\";\nimport type { PageDto } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport type { WithWorkflows } from \"~/types.js\";\n\nconst decoratePage = (page: PageDto): WithWorkflows<PageDto> => {\n return {\n ...page,\n workflow: page.system?.workflow ?? null\n };\n};\n\nexport const usePage = () => {\n const usage = baseUsePage();\n\n return {\n ...usage,\n page: decoratePage(usage.page)\n };\n};\n"],"names":["decoratePage","page","usePage","usage","baseUsePage"],"mappings":";AAIA,MAAMA,eAAe,CAACC,OACX;QACH,GAAGA,IAAI;QACP,UAAUA,KAAK,MAAM,EAAE,YAAY;IACvC;AAGG,MAAMC,kBAAU;IACnB,MAAMC,QAAQC;IAEd,OAAO;QACH,GAAGD,KAAK;QACR,MAAMH,aAAaG,MAAM,IAAI;IACjC;AACJ"}
@@ -0,0 +1 @@
1
+ import "~/types.js";
@@ -0,0 +1,49 @@
1
+ import react from "react";
2
+ import { renderHook } from "@testing-library/react";
3
+ import { describe, expect, it } from "vitest";
4
+ import { Page, PageDtoMapper } from "@webiny/app-website-builder/domain/Page/index.js";
5
+ import { PageProvider } from "@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js";
6
+ import { ReviewState } from "@webiny/app-workflows/review/domain/ReviewState.js";
7
+ import { StepState } from "@webiny/app-workflows/review/domain/StepState.js";
8
+ import "../types.js";
9
+ import { usePage } from "./usePage.js";
10
+ const WORKFLOW = {
11
+ workflowId: "workflow-1",
12
+ reviewState: ReviewState.Approved,
13
+ stepId: "step-2",
14
+ stepName: "Legal",
15
+ stepState: StepState.Approved
16
+ };
17
+ const createWrapper = (system)=>{
18
+ const page = Page.create({
19
+ id: "page-1#0001",
20
+ entryId: "page-1",
21
+ system
22
+ });
23
+ const dto = PageDtoMapper.toDTO(page);
24
+ return function({ children }) {
25
+ return /*#__PURE__*/ react.createElement(PageProvider, {
26
+ page: dto
27
+ }, children);
28
+ };
29
+ };
30
+ describe("usePage", ()=>{
31
+ it("exposes system.workflow as page.workflow", ()=>{
32
+ const wrapper = createWrapper({
33
+ workflow: WORKFLOW
34
+ });
35
+ const { result } = renderHook(()=>usePage(), {
36
+ wrapper
37
+ });
38
+ expect(result.current.page.workflow).toEqual(WORKFLOW);
39
+ });
40
+ it("is null when the page has no workflow", ()=>{
41
+ const wrapper = createWrapper(null);
42
+ const { result } = renderHook(()=>usePage(), {
43
+ wrapper
44
+ });
45
+ expect(result.current.page.workflow).toBeNull();
46
+ });
47
+ });
48
+
49
+ //# sourceMappingURL=usePage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks/usePage.test.js","sources":["../../src/hooks/usePage.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { renderHook } from \"@testing-library/react\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { Page } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { PageDtoMapper } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { PageProvider } from \"@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js\";\nimport { ReviewState } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport { StepState } from \"@webiny/app-workflows/review/domain/StepState.js\";\nimport type { SystemWorkflowValue } from \"@webiny/app-workflows/review/domain/types.js\";\nimport \"~/types.js\";\nimport { usePage } from \"./usePage.js\";\n\ninterface ChildrenProps {\n children: React.ReactNode;\n}\n\nconst WORKFLOW: SystemWorkflowValue = {\n workflowId: \"workflow-1\",\n reviewState: ReviewState.Approved,\n stepId: \"step-2\",\n stepName: \"Legal\",\n stepState: StepState.Approved\n};\n\nconst createWrapper = (system: Page[\"system\"]) => {\n const page = Page.create({ id: \"page-1#0001\", entryId: \"page-1\", system });\n const dto = PageDtoMapper.toDTO(page);\n\n return function PageWrapper({ children }: ChildrenProps) {\n return <PageProvider page={dto}>{children}</PageProvider>;\n };\n};\n\ndescribe(\"usePage\", () => {\n it(\"exposes system.workflow as page.workflow\", () => {\n const wrapper = createWrapper({ workflow: WORKFLOW });\n\n const { result } = renderHook(() => usePage(), { wrapper });\n\n expect(result.current.page.workflow).toEqual(WORKFLOW);\n });\n\n it(\"is null when the page has no workflow\", () => {\n const wrapper = createWrapper(null);\n\n const { result } = renderHook(() => usePage(), { wrapper });\n\n expect(result.current.page.workflow).toBeNull();\n });\n});\n"],"names":["WORKFLOW","ReviewState","StepState","createWrapper","system","page","Page","dto","PageDtoMapper","children","PageProvider","describe","it","wrapper","result","renderHook","usePage","expect"],"mappings":";;;;;;;;;AAkBA,MAAMA,WAAgC;IAClC,YAAY;IACZ,aAAaC,YAAY,QAAQ;IACjC,QAAQ;IACR,UAAU;IACV,WAAWC,UAAU,QAAQ;AACjC;AAEA,MAAMC,gBAAgB,CAACC;IACnB,MAAMC,OAAOC,KAAK,MAAM,CAAC;QAAE,IAAI;QAAe,SAAS;QAAUF;IAAO;IACxE,MAAMG,MAAMC,cAAc,KAAK,CAACH;IAEhC,OAAO,SAAqB,EAAEI,QAAQ,EAAiB;QACnD,OAAO,WAAP,GAAO,oBAACC,cAAYA;YAAC,MAAMH;WAAME;IACrC;AACJ;AAEAE,SAAS,WAAW;IAChBC,GAAG,4CAA4C;QAC3C,MAAMC,UAAUV,cAAc;YAAE,UAAUH;QAAS;QAEnD,MAAM,EAAEc,MAAM,EAAE,GAAGC,WAAW,IAAMC,WAAW;YAAEH;QAAQ;QAEzDI,OAAOH,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAACd;IACjD;IAEAY,GAAG,yCAAyC;QACxC,MAAMC,UAAUV,cAAc;QAE9B,MAAM,EAAEW,MAAM,EAAE,GAAGC,WAAW,IAAMC,WAAW;YAAEH;QAAQ;QAEzDI,OAAOH,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ;IACjD;AACJ"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WebsiteBuilderWorkflows: () => React.JSX.Element | null;
package/index.js ADDED
@@ -0,0 +1,40 @@
1
+ import react from "react";
2
+ import { RegisterFeature, useFeatureFlags } from "@webiny/app-admin";
3
+ import { WbContentReviews } from "./Components/ContentReviews/WbContentReviews.js";
4
+ import { WebsiteBuilderWorkflowsMenu } from "./Routes/index.js";
5
+ import { PageEditorConfig, PagesList } from "./Components/index.js";
6
+ import { PageListWorkflowsFeature } from "./presentation/page/PageList/feature.js";
7
+ import { PageGetWorkflowsFeature } from "./presentation/page/PageGet/feature.js";
8
+ import { WbPageReviewFeature } from "./features/editorReview/feature.js";
9
+ import { WbReviewFeature } from "./features/gateway/feature.js";
10
+ import { WbWorkflowEditorMountingFeature } from "./features/editorMounting/feature.js";
11
+ import { WbWorkflowEditorFeature } from "./features/editorGateway/feature.js";
12
+ import { WbReviewCacheFeature } from "./features/cache/feature.js";
13
+ import { WbReviewTrashFeature } from "./features/trash/feature.js";
14
+ import { RevisionListWorkflowsFeature } from "./presentation/page/RevisionList/feature.js";
15
+ const WebsiteBuilderWorkflows = ()=>{
16
+ const featureFlags = useFeatureFlags();
17
+ if (!featureFlags.isEnabled("advancedPublishingWorkflow")) return null;
18
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
19
+ feature: WbReviewFeature
20
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
21
+ feature: WbWorkflowEditorFeature
22
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
23
+ feature: WbWorkflowEditorMountingFeature
24
+ }), /*#__PURE__*/ react.createElement(WbContentReviews, null), /*#__PURE__*/ react.createElement(RegisterFeature, {
25
+ feature: PageListWorkflowsFeature
26
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
27
+ feature: PageGetWorkflowsFeature
28
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
29
+ feature: WbPageReviewFeature
30
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
31
+ feature: WbReviewCacheFeature
32
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
33
+ feature: WbReviewTrashFeature
34
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
35
+ feature: RevisionListWorkflowsFeature
36
+ }), /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflowsMenu, null), /*#__PURE__*/ react.createElement(PageEditorConfig, null), /*#__PURE__*/ react.createElement(PagesList, null));
37
+ };
38
+ export { WebsiteBuilderWorkflows };
39
+
40
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, useFeatureFlags } from \"@webiny/app-admin\";\nimport { WbContentReviews } from \"~/Components/ContentReviews/WbContentReviews.js\";\nimport { WebsiteBuilderWorkflowsMenu } from \"~/Routes/index.js\";\nimport { PageEditorConfig, PagesList } from \"~/Components/index.js\";\nimport { PageListWorkflowsFeature } from \"~/presentation/page/PageList/feature.js\";\nimport { PageGetWorkflowsFeature } from \"~/presentation/page/PageGet/feature.js\";\nimport { WbPageReviewFeature } from \"~/features/editorReview/feature.js\";\nimport { WbReviewFeature } from \"~/features/gateway/feature.js\";\nimport { WbWorkflowEditorMountingFeature } from \"~/features/editorMounting/feature.js\";\nimport { WbWorkflowEditorFeature } from \"~/features/editorGateway/feature.js\";\nimport { WbReviewCacheFeature } from \"~/features/cache/feature.js\";\nimport { WbReviewTrashFeature } from \"~/features/trash/feature.js\";\nimport { RevisionListWorkflowsFeature } from \"~/presentation/page/RevisionList/feature.js\";\n\nexport const WebsiteBuilderWorkflows = () => {\n const featureFlags = useFeatureFlags();\n\n if (!featureFlags.isEnabled(\"advancedPublishingWorkflow\")) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={WbReviewFeature} />\n <RegisterFeature feature={WbWorkflowEditorFeature} />\n <RegisterFeature feature={WbWorkflowEditorMountingFeature} />\n <WbContentReviews />\n <RegisterFeature feature={PageListWorkflowsFeature} />\n <RegisterFeature feature={PageGetWorkflowsFeature} />\n <RegisterFeature feature={WbPageReviewFeature} />\n <RegisterFeature feature={WbReviewCacheFeature} />\n <RegisterFeature feature={WbReviewTrashFeature} />\n <RegisterFeature feature={RevisionListWorkflowsFeature} />\n <WebsiteBuilderWorkflowsMenu />\n <PageEditorConfig />\n <PagesList />\n </>\n );\n};\n"],"names":["WebsiteBuilderWorkflows","featureFlags","useFeatureFlags","RegisterFeature","WbReviewFeature","WbWorkflowEditorFeature","WbWorkflowEditorMountingFeature","WbContentReviews","PageListWorkflowsFeature","PageGetWorkflowsFeature","WbPageReviewFeature","WbReviewCacheFeature","WbReviewTrashFeature","RevisionListWorkflowsFeature","WebsiteBuilderWorkflowsMenu","PageEditorConfig","PagesList"],"mappings":";;;;;;;;;;;;;;AAeO,MAAMA,0BAA0B;IACnC,MAAMC,eAAeC;IAErB,IAAI,CAACD,aAAa,SAAS,CAAC,+BACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACJ,iBAAeA;QAAC,SAASK;sBAC1B,oBAACL,iBAAeA;QAAC,SAASM;sBAC1B,oBAACN,iBAAeA;QAAC,SAASO;sBAC1B,oBAACP,iBAAeA;QAAC,SAASQ;sBAC1B,oBAACR,iBAAeA;QAAC,SAASS;sBAC1B,oBAACT,iBAAeA;QAAC,SAASU;sBAC1B,oBAACC,6BAA2BA,OAAAA,WAAAA,GAC5B,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,WAASA;AAGtB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ import react from "react";
2
+ import { describe, expect, it, vi } from "vitest";
3
+ import { WebsiteBuilderWorkflows } from "./index.js";
4
+ vi.mock("@webiny/app-admin", async (importOriginal)=>{
5
+ const original = await importOriginal();
6
+ const RegisterFeature = ()=>null;
7
+ const useFeatureFlags = ()=>({
8
+ isEnabled: ()=>true
9
+ });
10
+ return {
11
+ ...original,
12
+ RegisterFeature,
13
+ useFeatureFlags
14
+ };
15
+ });
16
+ const getTypeName = (type)=>{
17
+ if ("string" == typeof type) return type;
18
+ if (type === react.Fragment) return "Fragment";
19
+ const named = type;
20
+ return named.displayName || named.name || "Anonymous";
21
+ };
22
+ const collectTree = (node, entries)=>{
23
+ react.Children.forEach(node, (child)=>{
24
+ if (!/*#__PURE__*/ react.isValidElement(child)) return;
25
+ const featureName = child.props.feature ? child.props.feature.name : null;
26
+ entries.push({
27
+ typeName: getTypeName(child.type),
28
+ featureName
29
+ });
30
+ collectTree(child.props.children, entries);
31
+ });
32
+ };
33
+ const renderRoot = ()=>{
34
+ const entries = [];
35
+ collectTree(WebsiteBuilderWorkflows(), entries);
36
+ return entries;
37
+ };
38
+ describe("WebsiteBuilderWorkflows root", ()=>{
39
+ it("mounts the editor menu and the page editor config and registers the mounting feature", ()=>{
40
+ const entries = renderRoot();
41
+ const typeNames = entries.map((entry)=>entry.typeName);
42
+ const featureNames = entries.map((entry)=>entry.featureName).filter((name)=>null !== name);
43
+ expect(typeNames).toContain("WebsiteBuilderWorkflowsMenu");
44
+ expect(typeNames).toContain("PageEditorConfig");
45
+ expect(featureNames).toContain("WebsiteBuilderWorkflows/EditorMounting");
46
+ expect(featureNames).toContain("RevisionListWorkflows");
47
+ });
48
+ });
49
+
50
+ //# sourceMappingURL=index.mount.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mount.test.js","sources":["../src/index.mount.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { WebsiteBuilderWorkflows } from \"~/index.js\";\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const original = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n const RegisterFeature = () => null;\n const useFeatureFlags = () => {\n return { isEnabled: () => true };\n };\n return { ...original, RegisterFeature, useFeatureFlags };\n});\n\ninterface TreeProps {\n children?: React.ReactNode;\n feature?: { name: string };\n}\n\ninterface NamedType {\n displayName?: string;\n name?: string;\n}\n\ninterface TreeEntry {\n typeName: string;\n featureName: string | null;\n}\n\nconst getTypeName = (type: React.ReactElement[\"type\"]): string => {\n if (typeof type === \"string\") {\n return type;\n }\n if (type === React.Fragment) {\n return \"Fragment\";\n }\n const named = type as NamedType;\n return named.displayName || named.name || \"Anonymous\";\n};\n\nconst collectTree = (node: React.ReactNode, entries: TreeEntry[]): void => {\n React.Children.forEach(node, child => {\n if (!React.isValidElement<TreeProps>(child)) {\n return;\n }\n const featureName = child.props.feature ? child.props.feature.name : null;\n entries.push({ typeName: getTypeName(child.type), featureName });\n collectTree(child.props.children, entries);\n });\n};\n\nconst renderRoot = (): TreeEntry[] => {\n const entries: TreeEntry[] = [];\n collectTree(WebsiteBuilderWorkflows(), entries);\n return entries;\n};\n\ndescribe(\"WebsiteBuilderWorkflows root\", () => {\n it(\"mounts the editor menu and the page editor config and registers the mounting feature\", () => {\n const entries = renderRoot();\n const typeNames = entries.map(entry => entry.typeName);\n const featureNames = entries.map(entry => entry.featureName).filter(name => name !== null);\n\n expect(typeNames).toContain(\"WebsiteBuilderWorkflowsMenu\");\n expect(typeNames).toContain(\"PageEditorConfig\");\n expect(featureNames).toContain(\"WebsiteBuilderWorkflows/EditorMounting\");\n // The feature that gates Publish in the revisions drawer.\n expect(featureNames).toContain(\"RevisionListWorkflows\");\n });\n});\n"],"names":["vi","importOriginal","original","RegisterFeature","useFeatureFlags","getTypeName","type","React","named","collectTree","node","entries","child","featureName","renderRoot","WebsiteBuilderWorkflows","describe","it","typeNames","entry","featureNames","name","expect"],"mappings":";;;AAOAA,GAAG,IAAI,CAAC,qBAAqB,OAAMC;IAC/B,MAAMC,WAAW,MAAMD;IACvB,MAAME,kBAAkB,IAAM;IAC9B,MAAMC,kBAAkB,IACb;YAAE,WAAW,IAAM;QAAK;IAEnC,OAAO;QAAE,GAAGF,QAAQ;QAAEC;QAAiBC;IAAgB;AAC3D;AAiBA,MAAMC,cAAc,CAACC;IACjB,IAAI,AAAgB,YAAhB,OAAOA,MACP,OAAOA;IAEX,IAAIA,SAASC,MAAAA,QAAc,EACvB,OAAO;IAEX,MAAMC,QAAQF;IACd,OAAOE,MAAM,WAAW,IAAIA,MAAM,IAAI,IAAI;AAC9C;AAEA,MAAMC,cAAc,CAACC,MAAuBC;IACxCJ,MAAAA,QAAAA,CAAAA,OAAsB,CAACG,MAAME,CAAAA;QACzB,IAAI,CAAC,WAAD,GAACL,MAAAA,cAAoB,CAAYK,QACjC;QAEJ,MAAMC,cAAcD,MAAM,KAAK,CAAC,OAAO,GAAGA,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG;QACrED,QAAQ,IAAI,CAAC;YAAE,UAAUN,YAAYO,MAAM,IAAI;YAAGC;QAAY;QAC9DJ,YAAYG,MAAM,KAAK,CAAC,QAAQ,EAAED;IACtC;AACJ;AAEA,MAAMG,aAAa;IACf,MAAMH,UAAuB,EAAE;IAC/BF,YAAYM,2BAA2BJ;IACvC,OAAOA;AACX;AAEAK,SAAS,gCAAgC;IACrCC,GAAG,wFAAwF;QACvF,MAAMN,UAAUG;QAChB,MAAMI,YAAYP,QAAQ,GAAG,CAACQ,CAAAA,QAASA,MAAM,QAAQ;QACrD,MAAMC,eAAeT,QAAQ,GAAG,CAACQ,CAAAA,QAASA,MAAM,WAAW,EAAE,MAAM,CAACE,CAAAA,OAAQA,AAAS,SAATA;QAE5EC,OAAOJ,WAAW,SAAS,CAAC;QAC5BI,OAAOJ,WAAW,SAAS,CAAC;QAC5BI,OAAOF,cAAc,SAAS,CAAC;QAE/BE,OAAOF,cAAc,SAAS,CAAC;IACnC;AACJ"}
@@ -0,0 +1 @@
1
+ export {};