@strapi/review-workflows 0.0.0-experimental.74c69aeafc770d59d5b3d5d37cd249934ef395ba → 0.0.0-experimental.75ad9f23733c38c3e329f29b5c2b442c7cccce33

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 (422) hide show
  1. package/LICENSE +12 -17
  2. package/dist/admin/assets/balloon.png.js +6 -0
  3. package/dist/admin/assets/balloon.png.js.map +1 -0
  4. package/dist/admin/assets/balloon.png.mjs +4 -0
  5. package/dist/admin/assets/balloon.png.mjs.map +1 -0
  6. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  7. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  8. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  9. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  10. package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
  11. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  12. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
  13. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  14. package/dist/admin/components/LimitsModal.js +122 -0
  15. package/dist/admin/components/LimitsModal.js.map +1 -0
  16. package/dist/admin/components/LimitsModal.mjs +120 -0
  17. package/dist/admin/components/LimitsModal.mjs.map +1 -0
  18. package/dist/admin/constants.js +18 -0
  19. package/dist/admin/constants.js.map +1 -0
  20. package/dist/admin/constants.mjs +12 -0
  21. package/dist/admin/constants.mjs.map +1 -0
  22. package/dist/admin/index.js +93 -0
  23. package/dist/admin/index.js.map +1 -0
  24. package/dist/admin/index.mjs +89 -0
  25. package/dist/admin/index.mjs.map +1 -0
  26. package/dist/admin/modules/hooks.js +8 -0
  27. package/dist/admin/modules/hooks.js.map +1 -0
  28. package/dist/admin/modules/hooks.mjs +6 -0
  29. package/dist/admin/modules/hooks.mjs.map +1 -0
  30. package/dist/admin/router.js +30 -0
  31. package/dist/admin/router.js.map +1 -0
  32. package/dist/admin/router.mjs +28 -0
  33. package/dist/admin/router.mjs.map +1 -0
  34. package/dist/admin/routes/content-manager/model/components/TableColumns.js +44 -0
  35. package/dist/admin/routes/content-manager/model/components/TableColumns.js.map +1 -0
  36. package/dist/admin/routes/content-manager/model/components/TableColumns.mjs +41 -0
  37. package/dist/admin/routes/content-manager/model/components/TableColumns.mjs.map +1 -0
  38. package/dist/admin/routes/content-manager/model/constants.js +60 -0
  39. package/dist/admin/routes/content-manager/model/constants.js.map +1 -0
  40. package/dist/admin/routes/content-manager/model/constants.mjs +58 -0
  41. package/dist/admin/routes/content-manager/model/constants.mjs.map +1 -0
  42. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js +169 -0
  43. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js.map +1 -0
  44. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs +148 -0
  45. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs.map +1 -0
  46. package/dist/admin/routes/content-manager/model/id/components/Header.js +31 -0
  47. package/dist/admin/routes/content-manager/model/id/components/Header.js.map +1 -0
  48. package/dist/admin/routes/content-manager/model/id/components/Header.mjs +29 -0
  49. package/dist/admin/routes/content-manager/model/id/components/Header.mjs.map +1 -0
  50. package/dist/admin/routes/content-manager/model/id/components/Panel.js +39 -0
  51. package/dist/admin/routes/content-manager/model/id/components/Panel.js.map +1 -0
  52. package/dist/admin/routes/content-manager/model/id/components/Panel.mjs +37 -0
  53. package/dist/admin/routes/content-manager/model/id/components/Panel.mjs.map +1 -0
  54. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js +329 -0
  55. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js.map +1 -0
  56. package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs +308 -0
  57. package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs.map +1 -0
  58. package/dist/admin/routes/content-manager/model/id/components/constants.js +8 -0
  59. package/dist/admin/routes/content-manager/model/id/components/constants.js.map +1 -0
  60. package/dist/admin/routes/content-manager/model/id/components/constants.mjs +5 -0
  61. package/dist/admin/routes/content-manager/model/id/components/constants.mjs.map +1 -0
  62. package/dist/admin/routes/purchase-review-workflows.js +194 -0
  63. package/dist/admin/routes/purchase-review-workflows.js.map +1 -0
  64. package/dist/admin/routes/purchase-review-workflows.mjs +192 -0
  65. package/dist/admin/routes/purchase-review-workflows.mjs.map +1 -0
  66. package/dist/admin/routes/settings/components/AddStage.js +51 -0
  67. package/dist/admin/routes/settings/components/AddStage.js.map +1 -0
  68. package/dist/admin/routes/settings/components/AddStage.mjs +49 -0
  69. package/dist/admin/routes/settings/components/AddStage.mjs.map +1 -0
  70. package/dist/admin/routes/settings/components/Layout.js +86 -0
  71. package/dist/admin/routes/settings/components/Layout.js.map +1 -0
  72. package/dist/admin/routes/settings/components/Layout.mjs +82 -0
  73. package/dist/admin/routes/settings/components/Layout.mjs.map +1 -0
  74. package/dist/admin/routes/settings/components/StageDragPreview.js +40 -0
  75. package/dist/admin/routes/settings/components/StageDragPreview.js.map +1 -0
  76. package/dist/admin/routes/settings/components/StageDragPreview.mjs +38 -0
  77. package/dist/admin/routes/settings/components/StageDragPreview.mjs.map +1 -0
  78. package/dist/admin/routes/settings/components/Stages.js +593 -0
  79. package/dist/admin/routes/settings/components/Stages.js.map +1 -0
  80. package/dist/admin/routes/settings/components/Stages.mjs +572 -0
  81. package/dist/admin/routes/settings/components/Stages.mjs.map +1 -0
  82. package/dist/admin/routes/settings/components/WorkflowAttributes.js +203 -0
  83. package/dist/admin/routes/settings/components/WorkflowAttributes.js.map +1 -0
  84. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs +201 -0
  85. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs.map +1 -0
  86. package/dist/admin/routes/settings/constants.js +8 -0
  87. package/dist/admin/routes/settings/constants.js.map +1 -0
  88. package/dist/admin/routes/settings/constants.mjs +6 -0
  89. package/dist/admin/routes/settings/constants.mjs.map +1 -0
  90. package/dist/admin/routes/settings/hooks/useDragAndDrop.js +193 -0
  91. package/dist/admin/routes/settings/hooks/useDragAndDrop.js.map +1 -0
  92. package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs +170 -0
  93. package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs.map +1 -0
  94. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js +94 -0
  95. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js.map +1 -0
  96. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs +73 -0
  97. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs.map +1 -0
  98. package/dist/admin/routes/settings/hooks/useReviewWorkflows.js +171 -0
  99. package/dist/admin/routes/settings/hooks/useReviewWorkflows.js.map +1 -0
  100. package/dist/admin/routes/settings/hooks/useReviewWorkflows.mjs +150 -0
  101. package/dist/admin/routes/settings/hooks/useReviewWorkflows.mjs.map +1 -0
  102. package/dist/admin/routes/settings/id.js +404 -0
  103. package/dist/admin/routes/settings/id.js.map +1 -0
  104. package/dist/admin/routes/settings/id.mjs +382 -0
  105. package/dist/admin/routes/settings/id.mjs.map +1 -0
  106. package/dist/admin/routes/settings/index.js +293 -0
  107. package/dist/admin/routes/settings/index.js.map +1 -0
  108. package/dist/admin/routes/settings/index.mjs +271 -0
  109. package/dist/admin/routes/settings/index.mjs.map +1 -0
  110. package/dist/admin/services/admin.js +23 -0
  111. package/dist/admin/services/admin.js.map +1 -0
  112. package/dist/admin/services/admin.mjs +21 -0
  113. package/dist/admin/services/admin.mjs.map +1 -0
  114. package/dist/admin/services/api.js +15 -0
  115. package/dist/admin/services/api.js.map +1 -0
  116. package/dist/admin/services/api.mjs +13 -0
  117. package/dist/admin/services/api.mjs.map +1 -0
  118. package/dist/admin/services/content-manager.js +101 -0
  119. package/dist/admin/services/content-manager.js.map +1 -0
  120. package/dist/admin/services/content-manager.mjs +96 -0
  121. package/dist/admin/services/content-manager.mjs.map +1 -0
  122. package/dist/admin/services/settings.js +123 -0
  123. package/dist/admin/services/settings.js.map +1 -0
  124. package/dist/admin/services/settings.mjs +118 -0
  125. package/dist/admin/services/settings.mjs.map +1 -0
  126. package/dist/admin/src/components/LimitsModal.d.ts +13 -0
  127. package/dist/admin/src/constants.d.ts +9 -0
  128. package/dist/admin/src/index.d.ts +3 -0
  129. package/dist/admin/src/modules/hooks.d.ts +7 -0
  130. package/dist/admin/src/router.d.ts +2 -0
  131. package/dist/admin/src/routes/content-manager/model/components/AssigneeFilter.d.ts +7 -0
  132. package/dist/admin/src/routes/content-manager/model/components/StageFilter.d.ts +8 -0
  133. package/dist/admin/src/routes/content-manager/model/components/TableColumns.d.ts +18 -0
  134. package/dist/admin/src/routes/content-manager/model/configure/constants.d.ts +7 -0
  135. package/dist/admin/src/routes/content-manager/model/constants.d.ts +71 -0
  136. package/dist/admin/src/routes/content-manager/model/id/components/AssigneeSelect.d.ts +4 -0
  137. package/dist/admin/src/routes/content-manager/model/id/components/Header.d.ts +5 -0
  138. package/dist/admin/src/routes/content-manager/model/id/components/Panel.d.ts +3 -0
  139. package/dist/admin/src/routes/content-manager/model/id/components/StageSelect.d.ts +3 -0
  140. package/dist/admin/src/routes/content-manager/model/id/components/constants.d.ts +2 -0
  141. package/dist/admin/src/routes/purchase-review-workflows.d.ts +2 -0
  142. package/dist/admin/src/routes/settings/components/AddStage.d.ts +2 -0
  143. package/dist/admin/src/routes/settings/components/Layout.d.ts +12 -0
  144. package/dist/admin/src/routes/settings/components/StageDragPreview.d.ts +6 -0
  145. package/dist/admin/src/routes/settings/components/Stages.d.ts +12 -0
  146. package/dist/admin/src/routes/settings/components/WorkflowAttributes.d.ts +6 -0
  147. package/dist/admin/src/routes/settings/constants.d.ts +2 -0
  148. package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +51 -0
  149. package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +14 -0
  150. package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +25 -0
  151. package/dist/admin/src/routes/settings/id.d.ts +2 -0
  152. package/dist/admin/src/routes/settings/index.d.ts +3 -0
  153. package/dist/admin/src/services/admin.d.ts +5 -0
  154. package/dist/admin/src/services/api.d.ts +2 -0
  155. package/dist/admin/src/services/content-manager.d.ts +38 -0
  156. package/dist/admin/src/services/settings.d.ts +1743 -0
  157. package/dist/admin/src/utils/api.d.ts +23 -0
  158. package/dist/admin/src/utils/cm-hooks.d.ts +46 -0
  159. package/dist/admin/src/utils/colors.d.ts +9 -0
  160. package/dist/admin/src/utils/translations.d.ts +3 -0
  161. package/dist/admin/src/utils/users.d.ts +6 -0
  162. package/dist/admin/translations/en.json.js +20 -0
  163. package/dist/admin/translations/en.json.js.map +1 -0
  164. package/dist/admin/translations/en.json.mjs +18 -0
  165. package/dist/admin/translations/en.json.mjs.map +1 -0
  166. package/dist/admin/translations/uk.json.js +16 -0
  167. package/dist/admin/translations/uk.json.js.map +1 -0
  168. package/dist/admin/translations/uk.json.mjs +14 -0
  169. package/dist/admin/translations/uk.json.mjs.map +1 -0
  170. package/dist/admin/utils/api.js +22 -0
  171. package/dist/admin/utils/api.js.map +1 -0
  172. package/dist/admin/utils/api.mjs +19 -0
  173. package/dist/admin/utils/api.mjs.map +1 -0
  174. package/dist/admin/utils/cm-hooks.js +23 -0
  175. package/dist/admin/utils/cm-hooks.js.map +1 -0
  176. package/dist/admin/utils/cm-hooks.mjs +21 -0
  177. package/dist/admin/utils/cm-hooks.mjs.map +1 -0
  178. package/dist/admin/utils/colors.js +50 -0
  179. package/dist/admin/utils/colors.js.map +1 -0
  180. package/dist/admin/utils/colors.mjs +47 -0
  181. package/dist/admin/utils/colors.mjs.map +1 -0
  182. package/dist/admin/utils/translations.js +11 -0
  183. package/dist/admin/utils/translations.js.map +1 -0
  184. package/dist/admin/utils/translations.mjs +9 -0
  185. package/dist/admin/utils/translations.mjs.map +1 -0
  186. package/dist/admin/utils/users.js +17 -0
  187. package/dist/admin/utils/users.js.map +1 -0
  188. package/dist/admin/utils/users.mjs +15 -0
  189. package/dist/admin/utils/users.mjs.map +1 -0
  190. package/dist/server/bootstrap.js +54 -0
  191. package/dist/server/bootstrap.js.map +1 -0
  192. package/dist/server/bootstrap.mjs +52 -0
  193. package/dist/server/bootstrap.mjs.map +1 -0
  194. package/dist/server/config/actions.js +47 -0
  195. package/dist/server/config/actions.js.map +1 -0
  196. package/dist/server/config/actions.mjs +45 -0
  197. package/dist/server/config/actions.mjs.map +1 -0
  198. package/dist/server/constants/default-stages.json.js +23 -0
  199. package/dist/server/constants/default-stages.json.js.map +1 -0
  200. package/dist/server/constants/default-stages.json.mjs +21 -0
  201. package/dist/server/constants/default-stages.json.mjs.map +1 -0
  202. package/dist/server/constants/default-workflow.json.js +12 -0
  203. package/dist/server/constants/default-workflow.json.js.map +1 -0
  204. package/dist/server/constants/default-workflow.json.mjs +7 -0
  205. package/dist/server/constants/default-workflow.json.mjs.map +1 -0
  206. package/dist/server/constants/webhook-events.js +12 -0
  207. package/dist/server/constants/webhook-events.js.map +1 -0
  208. package/dist/server/constants/webhook-events.mjs +7 -0
  209. package/dist/server/constants/webhook-events.mjs.map +1 -0
  210. package/dist/server/constants/workflows.js +53 -0
  211. package/dist/server/constants/workflows.js.map +1 -0
  212. package/dist/server/constants/workflows.mjs +42 -0
  213. package/dist/server/constants/workflows.mjs.map +1 -0
  214. package/dist/server/content-types/index.js +12 -0
  215. package/dist/server/content-types/index.js.map +1 -0
  216. package/dist/server/content-types/index.mjs +10 -0
  217. package/dist/server/content-types/index.mjs.map +1 -0
  218. package/dist/server/content-types/workflow/index.js +50 -0
  219. package/dist/server/content-types/workflow/index.js.map +1 -0
  220. package/dist/server/content-types/workflow/index.mjs +48 -0
  221. package/dist/server/content-types/workflow/index.mjs.map +1 -0
  222. package/dist/server/content-types/workflow-stage/index.js +54 -0
  223. package/dist/server/content-types/workflow-stage/index.js.map +1 -0
  224. package/dist/server/content-types/workflow-stage/index.mjs +52 -0
  225. package/dist/server/content-types/workflow-stage/index.mjs.map +1 -0
  226. package/dist/server/controllers/assignees.js +57 -0
  227. package/dist/server/controllers/assignees.js.map +1 -0
  228. package/dist/server/controllers/assignees.mjs +55 -0
  229. package/dist/server/controllers/assignees.mjs.map +1 -0
  230. package/dist/server/controllers/index.js +14 -0
  231. package/dist/server/controllers/index.js.map +1 -0
  232. package/dist/server/controllers/index.mjs +12 -0
  233. package/dist/server/controllers/index.mjs.map +1 -0
  234. package/dist/server/controllers/stages.js +167 -0
  235. package/dist/server/controllers/stages.js.map +1 -0
  236. package/dist/server/controllers/stages.mjs +165 -0
  237. package/dist/server/controllers/stages.mjs.map +1 -0
  238. package/dist/server/controllers/workflows.js +136 -0
  239. package/dist/server/controllers/workflows.js.map +1 -0
  240. package/dist/server/controllers/workflows.mjs +134 -0
  241. package/dist/server/controllers/workflows.mjs.map +1 -0
  242. package/dist/server/destroy.js +6 -0
  243. package/dist/server/destroy.js.map +1 -0
  244. package/dist/server/destroy.mjs +4 -0
  245. package/dist/server/destroy.mjs.map +1 -0
  246. package/dist/server/index.js +32 -0
  247. package/dist/server/index.js.map +1 -0
  248. package/dist/server/index.mjs +30 -0
  249. package/dist/server/index.mjs.map +1 -0
  250. package/dist/server/middlewares/review-workflows.js +42 -0
  251. package/dist/server/middlewares/review-workflows.js.map +1 -0
  252. package/dist/server/middlewares/review-workflows.mjs +37 -0
  253. package/dist/server/middlewares/review-workflows.mjs.map +1 -0
  254. package/dist/server/migrations/handle-deleted-ct-in-workflows.js +40 -0
  255. package/dist/server/migrations/handle-deleted-ct-in-workflows.js.map +1 -0
  256. package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs +38 -0
  257. package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs.map +1 -0
  258. package/dist/server/migrations/multiple-workflows.js +41 -0
  259. package/dist/server/migrations/multiple-workflows.js.map +1 -0
  260. package/dist/server/migrations/multiple-workflows.mjs +39 -0
  261. package/dist/server/migrations/multiple-workflows.mjs.map +1 -0
  262. package/dist/server/migrations/set-stages-default-color.js +22 -0
  263. package/dist/server/migrations/set-stages-default-color.js.map +1 -0
  264. package/dist/server/migrations/set-stages-default-color.mjs +20 -0
  265. package/dist/server/migrations/set-stages-default-color.mjs.map +1 -0
  266. package/dist/server/migrations/set-stages-roles.js +56 -0
  267. package/dist/server/migrations/set-stages-roles.js.map +1 -0
  268. package/dist/server/migrations/set-stages-roles.mjs +54 -0
  269. package/dist/server/migrations/set-stages-roles.mjs.map +1 -0
  270. package/dist/server/migrations/set-workflow-default-name.js +29 -0
  271. package/dist/server/migrations/set-workflow-default-name.js.map +1 -0
  272. package/dist/server/migrations/set-workflow-default-name.mjs +27 -0
  273. package/dist/server/migrations/set-workflow-default-name.mjs.map +1 -0
  274. package/dist/server/migrations/shorten-stage-attribute.js +45 -0
  275. package/dist/server/migrations/shorten-stage-attribute.js.map +1 -0
  276. package/dist/server/migrations/shorten-stage-attribute.mjs +43 -0
  277. package/dist/server/migrations/shorten-stage-attribute.mjs.map +1 -0
  278. package/dist/server/register.js +116 -0
  279. package/dist/server/register.js.map +1 -0
  280. package/dist/server/register.mjs +114 -0
  281. package/dist/server/register.mjs.map +1 -0
  282. package/dist/server/routes/index.js +10 -0
  283. package/dist/server/routes/index.js.map +1 -0
  284. package/dist/server/routes/index.mjs +8 -0
  285. package/dist/server/routes/index.mjs.map +1 -0
  286. package/dist/server/routes/review-workflows.js +186 -0
  287. package/dist/server/routes/review-workflows.js.map +1 -0
  288. package/dist/server/routes/review-workflows.mjs +184 -0
  289. package/dist/server/routes/review-workflows.mjs.map +1 -0
  290. package/dist/server/routes/utils.js +11 -0
  291. package/dist/server/routes/utils.js.map +1 -0
  292. package/dist/server/routes/utils.mjs +9 -0
  293. package/dist/server/routes/utils.mjs.map +1 -0
  294. package/dist/server/services/assignees.js +68 -0
  295. package/dist/server/services/assignees.js.map +1 -0
  296. package/dist/server/services/assignees.mjs +66 -0
  297. package/dist/server/services/assignees.mjs.map +1 -0
  298. package/dist/server/services/document-service-middleware.js +130 -0
  299. package/dist/server/services/document-service-middleware.js.map +1 -0
  300. package/dist/server/services/document-service-middleware.mjs +128 -0
  301. package/dist/server/services/document-service-middleware.mjs.map +1 -0
  302. package/dist/server/services/index.js +24 -0
  303. package/dist/server/services/index.js.map +1 -0
  304. package/dist/server/services/index.mjs +22 -0
  305. package/dist/server/services/index.mjs.map +1 -0
  306. package/dist/server/services/metrics/index.js +67 -0
  307. package/dist/server/services/metrics/index.js.map +1 -0
  308. package/dist/server/services/metrics/index.mjs +55 -0
  309. package/dist/server/services/metrics/index.mjs.map +1 -0
  310. package/dist/server/services/metrics/weekly-metrics.js +84 -0
  311. package/dist/server/services/metrics/weekly-metrics.js.map +1 -0
  312. package/dist/server/services/metrics/weekly-metrics.mjs +82 -0
  313. package/dist/server/services/metrics/weekly-metrics.mjs.map +1 -0
  314. package/dist/server/services/stage-permissions.js +59 -0
  315. package/dist/server/services/stage-permissions.js.map +1 -0
  316. package/dist/server/services/stage-permissions.mjs +57 -0
  317. package/dist/server/services/stage-permissions.mjs.map +1 -0
  318. package/dist/server/services/stages.js +353 -0
  319. package/dist/server/services/stages.js.map +1 -0
  320. package/dist/server/services/stages.mjs +351 -0
  321. package/dist/server/services/stages.mjs.map +1 -0
  322. package/dist/server/services/validation.js +69 -0
  323. package/dist/server/services/validation.js.map +1 -0
  324. package/dist/server/services/validation.mjs +67 -0
  325. package/dist/server/services/validation.mjs.map +1 -0
  326. package/dist/server/services/workflow-content-types.js +90 -0
  327. package/dist/server/services/workflow-content-types.js.map +1 -0
  328. package/dist/server/services/workflow-content-types.mjs +88 -0
  329. package/dist/server/services/workflow-content-types.mjs.map +1 -0
  330. package/dist/server/services/workflows.js +279 -0
  331. package/dist/server/services/workflows.js.map +1 -0
  332. package/dist/server/services/workflows.mjs +277 -0
  333. package/dist/server/services/workflows.mjs.map +1 -0
  334. package/dist/server/src/bootstrap.d.ts +3 -0
  335. package/dist/server/src/bootstrap.d.ts.map +1 -0
  336. package/dist/server/src/config/actions.d.ts +19 -0
  337. package/dist/server/src/config/actions.d.ts.map +1 -0
  338. package/dist/server/src/constants/webhook-events.d.ts +6 -0
  339. package/dist/server/src/constants/webhook-events.d.ts.map +1 -0
  340. package/dist/server/src/constants/workflows.d.ts +35 -0
  341. package/dist/server/src/constants/workflows.d.ts.map +1 -0
  342. package/dist/server/src/content-types/index.d.ts +96 -0
  343. package/dist/server/src/content-types/index.d.ts.map +1 -0
  344. package/dist/server/src/content-types/workflow/index.d.ts +47 -0
  345. package/dist/server/src/content-types/workflow/index.d.ts.map +1 -0
  346. package/dist/server/src/content-types/workflow-stage/index.d.ts +49 -0
  347. package/dist/server/src/content-types/workflow-stage/index.d.ts.map +1 -0
  348. package/dist/server/src/controllers/assignees.d.ts +19 -0
  349. package/dist/server/src/controllers/assignees.d.ts.map +1 -0
  350. package/dist/server/src/controllers/index.d.ts +20 -0
  351. package/dist/server/src/controllers/index.d.ts.map +1 -0
  352. package/dist/server/src/controllers/stages.d.ts +39 -0
  353. package/dist/server/src/controllers/stages.d.ts.map +1 -0
  354. package/dist/server/src/controllers/workflows.d.ts +25 -0
  355. package/dist/server/src/controllers/workflows.d.ts.map +1 -0
  356. package/dist/server/src/destroy.d.ts +6 -0
  357. package/dist/server/src/destroy.d.ts.map +1 -0
  358. package/dist/server/src/index.d.ts +343 -0
  359. package/dist/server/src/index.d.ts.map +1 -0
  360. package/dist/server/src/middlewares/review-workflows.d.ts +17 -0
  361. package/dist/server/src/middlewares/review-workflows.d.ts.map +1 -0
  362. package/dist/server/src/migrations/handle-deleted-ct-in-workflows.d.ts +6 -0
  363. package/dist/server/src/migrations/handle-deleted-ct-in-workflows.d.ts.map +1 -0
  364. package/dist/server/src/migrations/multiple-workflows.d.ts +3 -0
  365. package/dist/server/src/migrations/multiple-workflows.d.ts.map +1 -0
  366. package/dist/server/src/migrations/set-stages-default-color.d.ts +6 -0
  367. package/dist/server/src/migrations/set-stages-default-color.d.ts.map +1 -0
  368. package/dist/server/src/migrations/set-stages-roles.d.ts +6 -0
  369. package/dist/server/src/migrations/set-stages-roles.d.ts.map +1 -0
  370. package/dist/server/src/migrations/set-workflow-default-name.d.ts +7 -0
  371. package/dist/server/src/migrations/set-workflow-default-name.d.ts.map +1 -0
  372. package/dist/server/src/migrations/shorten-stage-attribute.d.ts +6 -0
  373. package/dist/server/src/migrations/shorten-stage-attribute.d.ts.map +1 -0
  374. package/dist/server/src/register.d.ts +6 -0
  375. package/dist/server/src/register.d.ts.map +1 -0
  376. package/dist/server/src/routes/index.d.ts +21 -0
  377. package/dist/server/src/routes/index.d.ts.map +1 -0
  378. package/dist/server/src/routes/review-workflows.d.ts +19 -0
  379. package/dist/server/src/routes/review-workflows.d.ts.map +1 -0
  380. package/dist/server/src/routes/utils.d.ts +2 -0
  381. package/dist/server/src/routes/utils.d.ts.map +1 -0
  382. package/dist/server/src/services/assignees.d.ts +17 -0
  383. package/dist/server/src/services/assignees.d.ts.map +1 -0
  384. package/dist/server/src/services/document-service-middleware.d.ts +8 -0
  385. package/dist/server/src/services/document-service-middleware.d.ts.map +1 -0
  386. package/dist/server/src/services/index.d.ts +102 -0
  387. package/dist/server/src/services/index.d.ts.map +1 -0
  388. package/dist/server/src/services/metrics/index.d.ts +21 -0
  389. package/dist/server/src/services/metrics/index.d.ts.map +1 -0
  390. package/dist/server/src/services/metrics/weekly-metrics.d.ts +16 -0
  391. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -0
  392. package/dist/server/src/services/stage-permissions.d.ts +11 -0
  393. package/dist/server/src/services/stage-permissions.d.ts.map +1 -0
  394. package/dist/server/src/services/stages.d.ts +46 -0
  395. package/dist/server/src/services/stages.d.ts.map +1 -0
  396. package/dist/server/src/services/validation.d.ts +26 -0
  397. package/dist/server/src/services/validation.d.ts.map +1 -0
  398. package/dist/server/src/services/workflow-content-types.d.ts +21 -0
  399. package/dist/server/src/services/workflow-content-types.d.ts.map +1 -0
  400. package/dist/server/src/services/workflows.d.ts +84 -0
  401. package/dist/server/src/services/workflows.d.ts.map +1 -0
  402. package/dist/server/src/utils/index.d.ts +17 -0
  403. package/dist/server/src/utils/index.d.ts.map +1 -0
  404. package/dist/server/src/utils/review-workflows.d.ts +31 -0
  405. package/dist/server/src/utils/review-workflows.d.ts.map +1 -0
  406. package/dist/server/src/validation/review-workflows.d.ts +35 -0
  407. package/dist/server/src/validation/review-workflows.d.ts.map +1 -0
  408. package/dist/server/utils/index.js +16 -0
  409. package/dist/server/utils/index.js.map +1 -0
  410. package/dist/server/utils/index.mjs +13 -0
  411. package/dist/server/utils/index.mjs.map +1 -0
  412. package/dist/server/utils/review-workflows.js +36 -0
  413. package/dist/server/utils/review-workflows.js.map +1 -0
  414. package/dist/server/utils/review-workflows.mjs +30 -0
  415. package/dist/server/utils/review-workflows.mjs.map +1 -0
  416. package/dist/server/validation/review-workflows.js +71 -0
  417. package/dist/server/validation/review-workflows.js.map +1 -0
  418. package/dist/server/validation/review-workflows.mjs +65 -0
  419. package/dist/server/validation/review-workflows.mjs.map +1 -0
  420. package/dist/shared/contracts/review-workflows.d.ts +143 -0
  421. package/dist/shared/contracts/review-workflows.d.ts.map +1 -0
  422. package/package.json +35 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../server/src/services/metrics/index.ts"],"sourcesContent":["import '@strapi/types';\n\nexport const sendDidCreateStage = async () => {\n strapi.telemetry.send('didCreateStage', {});\n};\n\nexport const sendDidEditStage = async () => {\n strapi.telemetry.send('didEditStage', {});\n};\n\nexport const sendDidDeleteStage = async () => {\n strapi.telemetry.send('didDeleteStage', {});\n};\n\nexport const sendDidChangeEntryStage = async () => {\n strapi.telemetry.send('didChangeEntryStage', {});\n};\n\nexport const sendDidCreateWorkflow = async (\n workflowId: string,\n hasRequiredStageToPublish: boolean\n) => {\n strapi.telemetry.send('didCreateWorkflow', { workflowId, hasRequiredStageToPublish });\n};\n\nexport const sendDidEditWorkflow = async (\n workflowId: string,\n hasRequiredStageToPublish: boolean\n) => {\n strapi.telemetry.send('didEditWorkflow', { workflowId, hasRequiredStageToPublish });\n};\n\nexport const sendDidEditAssignee = async (fromId: any, toId: any) => {\n strapi.telemetry.send('didEditAssignee', { from: fromId, to: toId });\n};\n\nexport const sendDidSendReviewWorkflowPropertiesOnceAWeek = async (\n numberOfActiveWorkflows: number,\n avgStagesCount: number,\n maxStagesCount: number,\n activatedContentTypes: number\n) => {\n strapi.telemetry.send('didSendReviewWorkflowPropertiesOnceAWeek', {\n groupProperties: {\n numberOfActiveWorkflows,\n avgStagesCount,\n maxStagesCount,\n activatedContentTypes,\n },\n });\n};\n\nexport default {\n sendDidCreateStage,\n sendDidEditStage,\n sendDidDeleteStage,\n sendDidChangeEntryStage,\n sendDidCreateWorkflow,\n sendDidEditWorkflow,\n sendDidSendReviewWorkflowPropertiesOnceAWeek,\n sendDidEditAssignee,\n};\n"],"names":["sendDidCreateStage","strapi","telemetry","send","sendDidEditStage","sendDidDeleteStage","sendDidChangeEntryStage","sendDidCreateWorkflow","workflowId","hasRequiredStageToPublish","sendDidEditWorkflow","sendDidEditAssignee","fromId","toId","from","to","sendDidSendReviewWorkflowPropertiesOnceAWeek","numberOfActiveWorkflows","avgStagesCount","maxStagesCount","activatedContentTypes","groupProperties"],"mappings":";;MAEaA,kBAAqB,GAAA,UAAA;AAChCC,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,kBAAkB,EAAC,CAAA;AAC3C;MAEaC,gBAAmB,GAAA,UAAA;AAC9BH,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,gBAAgB,EAAC,CAAA;AACzC;MAEaE,kBAAqB,GAAA,UAAA;AAChCJ,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,kBAAkB,EAAC,CAAA;AAC3C;MAEaG,uBAA0B,GAAA,UAAA;AACrCL,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,uBAAuB,EAAC,CAAA;AAChD;AAEO,MAAMI,qBAAwB,GAAA,OACnCC,UACAC,EAAAA,yBAAAA,GAAAA;AAEAR,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,mBAAqB,EAAA;AAAEK,QAAAA,UAAAA;AAAYC,QAAAA;AAA0B,KAAA,CAAA;AACrF;AAEO,MAAMC,mBAAsB,GAAA,OACjCF,UACAC,EAAAA,yBAAAA,GAAAA;AAEAR,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,iBAAmB,EAAA;AAAEK,QAAAA,UAAAA;AAAYC,QAAAA;AAA0B,KAAA,CAAA;AACnF;AAEO,MAAME,mBAAsB,GAAA,OAAOC,MAAaC,EAAAA,IAAAA,GAAAA;AACrDZ,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,iBAAmB,EAAA;QAAEW,IAAMF,EAAAA,MAAAA;QAAQG,EAAIF,EAAAA;AAAK,KAAA,CAAA;AACpE;AAEaG,MAAAA,4CAAAA,GAA+C,OAC1DC,uBAAAA,EACAC,gBACAC,cACAC,EAAAA,qBAAAA,GAAAA;AAEAnB,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,0CAA4C,EAAA;QAChEkB,eAAiB,EAAA;AACfJ,YAAAA,uBAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA;AACF;AACF,KAAA,CAAA;AACF;AAEA,6BAAe;AACbpB,IAAAA,kBAAAA;AACAI,IAAAA,gBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,uBAAAA;AACAC,IAAAA,qBAAAA;AACAG,IAAAA,mBAAAA;AACAM,IAAAA,4CAAAA;AACAL,IAAAA;AACF,CAAE;;;;"}
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var dateFns = require('date-fns');
5
+ var index = require('../../utils/index.js');
6
+
7
+ const ONE_WEEK = 7 * 24 * 60 * 60 * 1000;
8
+ const getWeeklyCronScheduleAt = (date)=>`${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`;
9
+ var reviewWorkflowsWeeklyMetrics = (({ strapi })=>{
10
+ const metrics = index.getService('workflow-metrics', {
11
+ strapi
12
+ });
13
+ const workflowsService = index.getService('workflows', {
14
+ strapi
15
+ });
16
+ const getMetricsStoreValue = async ()=>{
17
+ const value = await strapi.store.get({
18
+ type: 'plugin',
19
+ name: 'ee',
20
+ key: 'metrics'
21
+ });
22
+ return fp.defaultTo({}, value);
23
+ };
24
+ const setMetricsStoreValue = (value)=>strapi.store.set({
25
+ type: 'plugin',
26
+ name: 'ee',
27
+ key: 'metrics',
28
+ value
29
+ });
30
+ return {
31
+ async computeMetrics () {
32
+ // There will never be more than 200 workflow, so we can safely fetch them all
33
+ const workflows = await workflowsService.find({
34
+ populate: 'stages'
35
+ });
36
+ const stagesCount = fp.flow(fp.map('stages'), fp.map(fp.size))(workflows);
37
+ const contentTypesCount = fp.flow(fp.map('contentTypes'), fp.map(fp.size))(workflows);
38
+ return {
39
+ numberOfActiveWorkflows: fp.size(workflows),
40
+ avgStagesCount: fp.mean(stagesCount),
41
+ maxStagesCount: fp.max(stagesCount),
42
+ activatedContentTypes: fp.sum(contentTypesCount)
43
+ };
44
+ },
45
+ async sendMetrics () {
46
+ const computedMetrics = await this.computeMetrics();
47
+ metrics.sendDidSendReviewWorkflowPropertiesOnceAWeek(computedMetrics);
48
+ const metricsInfoStored = await getMetricsStoreValue();
49
+ // @ts-expect-error metricsInfoStored can use spread
50
+ await setMetricsStoreValue({
51
+ ...metricsInfoStored,
52
+ lastWeeklyUpdate: new Date().getTime()
53
+ });
54
+ },
55
+ async ensureWeeklyStoredCronSchedule () {
56
+ const metricsInfoStored = await getMetricsStoreValue();
57
+ const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;
58
+ const now = new Date();
59
+ let weeklySchedule = currentSchedule;
60
+ if (!currentSchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {
61
+ weeklySchedule = getWeeklyCronScheduleAt(dateFns.add(now, {
62
+ seconds: 15
63
+ }));
64
+ await setMetricsStoreValue({
65
+ ...metricsInfoStored,
66
+ weeklySchedule
67
+ });
68
+ }
69
+ return weeklySchedule;
70
+ },
71
+ async registerCron () {
72
+ const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();
73
+ strapi.cron.add({
74
+ reviewWorkflowsWeekly: {
75
+ task: this.sendMetrics.bind(this),
76
+ options: weeklySchedule
77
+ }
78
+ });
79
+ }
80
+ };
81
+ });
82
+
83
+ module.exports = reviewWorkflowsWeeklyMetrics;
84
+ //# sourceMappingURL=weekly-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekly-metrics.js","sources":["../../../../server/src/services/metrics/weekly-metrics.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { flow, map, sum, size, mean, max, defaultTo } from 'lodash/fp';\nimport { add } from 'date-fns';\nimport { getService } from '../../utils';\n\nconst ONE_WEEK = 7 * 24 * 60 * 60 * 1000;\n\nconst getWeeklyCronScheduleAt = (date: Date) =>\n `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const metrics = getService('workflow-metrics', { strapi });\n const workflowsService = getService('workflows', { strapi });\n\n const getMetricsStoreValue = async () => {\n const value = await strapi.store.get({ type: 'plugin', name: 'ee', key: 'metrics' });\n return defaultTo({}, value);\n };\n\n const setMetricsStoreValue = (value: unknown) =>\n strapi.store.set({ type: 'plugin', name: 'ee', key: 'metrics', value });\n\n return {\n async computeMetrics() {\n // There will never be more than 200 workflow, so we can safely fetch them all\n const workflows = await workflowsService.find({ populate: 'stages' });\n\n const stagesCount = flow(\n map('stages'), // Number of stages per workflow\n map(size)\n )(workflows);\n\n const contentTypesCount = flow(\n map('contentTypes'), // Number of content types per workflow\n map(size)\n )(workflows);\n\n return {\n numberOfActiveWorkflows: size(workflows),\n avgStagesCount: mean(stagesCount),\n maxStagesCount: max(stagesCount),\n activatedContentTypes: sum(contentTypesCount),\n };\n },\n\n async sendMetrics() {\n const computedMetrics = await this.computeMetrics();\n metrics.sendDidSendReviewWorkflowPropertiesOnceAWeek(computedMetrics);\n\n const metricsInfoStored = await getMetricsStoreValue();\n // @ts-expect-error metricsInfoStored can use spread\n await setMetricsStoreValue({ ...metricsInfoStored, lastWeeklyUpdate: new Date().getTime() });\n },\n\n async ensureWeeklyStoredCronSchedule() {\n const metricsInfoStored: any = await getMetricsStoreValue();\n const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;\n\n const now = new Date();\n let weeklySchedule = currentSchedule;\n\n if (!currentSchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {\n weeklySchedule = getWeeklyCronScheduleAt(add(now, { seconds: 15 }));\n await setMetricsStoreValue({ ...metricsInfoStored, weeklySchedule });\n }\n\n return weeklySchedule;\n },\n\n async registerCron() {\n const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();\n\n strapi.cron.add({\n reviewWorkflowsWeekly: {\n task: this.sendMetrics.bind(this),\n options: weeklySchedule,\n },\n });\n },\n };\n};\n"],"names":["ONE_WEEK","getWeeklyCronScheduleAt","date","getSeconds","getMinutes","getHours","getDay","strapi","metrics","getService","workflowsService","getMetricsStoreValue","value","store","get","type","name","key","defaultTo","setMetricsStoreValue","set","computeMetrics","workflows","find","populate","stagesCount","flow","map","size","contentTypesCount","numberOfActiveWorkflows","avgStagesCount","mean","maxStagesCount","max","activatedContentTypes","sum","sendMetrics","computedMetrics","sendDidSendReviewWorkflowPropertiesOnceAWeek","metricsInfoStored","lastWeeklyUpdate","Date","getTime","ensureWeeklyStoredCronSchedule","weeklySchedule","currentSchedule","now","add","seconds","registerCron","cron","reviewWorkflowsWeekly","task","bind","options"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { flow, map, size, mean, max, sum, defaultTo } from 'lodash/fp';
2
+ import { add } from 'date-fns';
3
+ import { getService } from '../../utils/index.mjs';
4
+
5
+ const ONE_WEEK = 7 * 24 * 60 * 60 * 1000;
6
+ const getWeeklyCronScheduleAt = (date)=>`${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`;
7
+ var reviewWorkflowsWeeklyMetrics = (({ strapi })=>{
8
+ const metrics = getService('workflow-metrics', {
9
+ strapi
10
+ });
11
+ const workflowsService = getService('workflows', {
12
+ strapi
13
+ });
14
+ const getMetricsStoreValue = async ()=>{
15
+ const value = await strapi.store.get({
16
+ type: 'plugin',
17
+ name: 'ee',
18
+ key: 'metrics'
19
+ });
20
+ return defaultTo({}, value);
21
+ };
22
+ const setMetricsStoreValue = (value)=>strapi.store.set({
23
+ type: 'plugin',
24
+ name: 'ee',
25
+ key: 'metrics',
26
+ value
27
+ });
28
+ return {
29
+ async computeMetrics () {
30
+ // There will never be more than 200 workflow, so we can safely fetch them all
31
+ const workflows = await workflowsService.find({
32
+ populate: 'stages'
33
+ });
34
+ const stagesCount = flow(map('stages'), map(size))(workflows);
35
+ const contentTypesCount = flow(map('contentTypes'), map(size))(workflows);
36
+ return {
37
+ numberOfActiveWorkflows: size(workflows),
38
+ avgStagesCount: mean(stagesCount),
39
+ maxStagesCount: max(stagesCount),
40
+ activatedContentTypes: sum(contentTypesCount)
41
+ };
42
+ },
43
+ async sendMetrics () {
44
+ const computedMetrics = await this.computeMetrics();
45
+ metrics.sendDidSendReviewWorkflowPropertiesOnceAWeek(computedMetrics);
46
+ const metricsInfoStored = await getMetricsStoreValue();
47
+ // @ts-expect-error metricsInfoStored can use spread
48
+ await setMetricsStoreValue({
49
+ ...metricsInfoStored,
50
+ lastWeeklyUpdate: new Date().getTime()
51
+ });
52
+ },
53
+ async ensureWeeklyStoredCronSchedule () {
54
+ const metricsInfoStored = await getMetricsStoreValue();
55
+ const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;
56
+ const now = new Date();
57
+ let weeklySchedule = currentSchedule;
58
+ if (!currentSchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {
59
+ weeklySchedule = getWeeklyCronScheduleAt(add(now, {
60
+ seconds: 15
61
+ }));
62
+ await setMetricsStoreValue({
63
+ ...metricsInfoStored,
64
+ weeklySchedule
65
+ });
66
+ }
67
+ return weeklySchedule;
68
+ },
69
+ async registerCron () {
70
+ const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();
71
+ strapi.cron.add({
72
+ reviewWorkflowsWeekly: {
73
+ task: this.sendMetrics.bind(this),
74
+ options: weeklySchedule
75
+ }
76
+ });
77
+ }
78
+ };
79
+ });
80
+
81
+ export { reviewWorkflowsWeeklyMetrics as default };
82
+ //# sourceMappingURL=weekly-metrics.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekly-metrics.mjs","sources":["../../../../server/src/services/metrics/weekly-metrics.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { flow, map, sum, size, mean, max, defaultTo } from 'lodash/fp';\nimport { add } from 'date-fns';\nimport { getService } from '../../utils';\n\nconst ONE_WEEK = 7 * 24 * 60 * 60 * 1000;\n\nconst getWeeklyCronScheduleAt = (date: Date) =>\n `${date.getSeconds()} ${date.getMinutes()} ${date.getHours()} * * ${date.getDay()}`;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const metrics = getService('workflow-metrics', { strapi });\n const workflowsService = getService('workflows', { strapi });\n\n const getMetricsStoreValue = async () => {\n const value = await strapi.store.get({ type: 'plugin', name: 'ee', key: 'metrics' });\n return defaultTo({}, value);\n };\n\n const setMetricsStoreValue = (value: unknown) =>\n strapi.store.set({ type: 'plugin', name: 'ee', key: 'metrics', value });\n\n return {\n async computeMetrics() {\n // There will never be more than 200 workflow, so we can safely fetch them all\n const workflows = await workflowsService.find({ populate: 'stages' });\n\n const stagesCount = flow(\n map('stages'), // Number of stages per workflow\n map(size)\n )(workflows);\n\n const contentTypesCount = flow(\n map('contentTypes'), // Number of content types per workflow\n map(size)\n )(workflows);\n\n return {\n numberOfActiveWorkflows: size(workflows),\n avgStagesCount: mean(stagesCount),\n maxStagesCount: max(stagesCount),\n activatedContentTypes: sum(contentTypesCount),\n };\n },\n\n async sendMetrics() {\n const computedMetrics = await this.computeMetrics();\n metrics.sendDidSendReviewWorkflowPropertiesOnceAWeek(computedMetrics);\n\n const metricsInfoStored = await getMetricsStoreValue();\n // @ts-expect-error metricsInfoStored can use spread\n await setMetricsStoreValue({ ...metricsInfoStored, lastWeeklyUpdate: new Date().getTime() });\n },\n\n async ensureWeeklyStoredCronSchedule() {\n const metricsInfoStored: any = await getMetricsStoreValue();\n const { weeklySchedule: currentSchedule, lastWeeklyUpdate } = metricsInfoStored;\n\n const now = new Date();\n let weeklySchedule = currentSchedule;\n\n if (!currentSchedule || !lastWeeklyUpdate || lastWeeklyUpdate + ONE_WEEK < now.getTime()) {\n weeklySchedule = getWeeklyCronScheduleAt(add(now, { seconds: 15 }));\n await setMetricsStoreValue({ ...metricsInfoStored, weeklySchedule });\n }\n\n return weeklySchedule;\n },\n\n async registerCron() {\n const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();\n\n strapi.cron.add({\n reviewWorkflowsWeekly: {\n task: this.sendMetrics.bind(this),\n options: weeklySchedule,\n },\n });\n },\n };\n};\n"],"names":["ONE_WEEK","getWeeklyCronScheduleAt","date","getSeconds","getMinutes","getHours","getDay","strapi","metrics","getService","workflowsService","getMetricsStoreValue","value","store","get","type","name","key","defaultTo","setMetricsStoreValue","set","computeMetrics","workflows","find","populate","stagesCount","flow","map","size","contentTypesCount","numberOfActiveWorkflows","avgStagesCount","mean","maxStagesCount","max","activatedContentTypes","sum","sendMetrics","computedMetrics","sendDidSendReviewWorkflowPropertiesOnceAWeek","metricsInfoStored","lastWeeklyUpdate","Date","getTime","ensureWeeklyStoredCronSchedule","weeklySchedule","currentSchedule","now","add","seconds","registerCron","cron","reviewWorkflowsWeekly","task","bind","options"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var utils = require('@strapi/utils');
5
+ var index = require('../utils/index.js');
6
+ var workflows = require('../constants/workflows.js');
7
+
8
+ const { ApplicationError } = utils.errors;
9
+ const validActions = [
10
+ workflows.STAGE_TRANSITION_UID
11
+ ];
12
+ var stagePermissions = (({ strapi })=>{
13
+ const roleService = index.getAdminService('role');
14
+ const permissionService = index.getAdminService('permission');
15
+ return {
16
+ async register ({ roleId, action, fromStage }) {
17
+ if (!validActions.includes(action)) {
18
+ throw new ApplicationError(`Invalid action ${action}`);
19
+ }
20
+ const permissions = await roleService.addPermissions(roleId, [
21
+ {
22
+ action,
23
+ actionParameters: {
24
+ from: fromStage
25
+ }
26
+ }
27
+ ]);
28
+ // TODO: Filter response
29
+ return permissions;
30
+ },
31
+ async registerMany (permissions) {
32
+ return utils.async.map(permissions, this.register);
33
+ },
34
+ async unregister (permissions) {
35
+ const permissionIds = permissions.map(fp.prop('id'));
36
+ await permissionService.deleteByIds(permissionIds);
37
+ },
38
+ can (action, fromStage) {
39
+ const requestState = strapi.requestContext.get()?.state;
40
+ if (!requestState) {
41
+ return false;
42
+ }
43
+ // Override permissions for super admin
44
+ const userRoles = requestState.user?.roles;
45
+ if (userRoles?.some((role)=>role.code === 'strapi-super-admin')) {
46
+ return true;
47
+ }
48
+ return requestState.userAbility.can({
49
+ name: action,
50
+ params: {
51
+ from: fromStage
52
+ }
53
+ });
54
+ }
55
+ };
56
+ });
57
+
58
+ module.exports = stagePermissions;
59
+ //# sourceMappingURL=stage-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-permissions.js","sources":["../../../server/src/services/stage-permissions.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { prop } from 'lodash/fp';\nimport { async, errors } from '@strapi/utils';\nimport { getService, getAdminService } from '../utils';\nimport { STAGE_TRANSITION_UID } from '../constants/workflows';\n\nconst { ApplicationError } = errors;\nconst validActions = [STAGE_TRANSITION_UID];\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const roleService = getAdminService('role');\n const permissionService = getAdminService('permission');\n\n return {\n async register({ roleId, action, fromStage }: any) {\n if (!validActions.includes(action)) {\n throw new ApplicationError(`Invalid action ${action}`);\n }\n const permissions = await roleService.addPermissions(roleId, [\n {\n action,\n actionParameters: {\n from: fromStage,\n },\n },\n ]);\n\n // TODO: Filter response\n return permissions;\n },\n async registerMany(permissions: any) {\n return async.map(permissions, this.register);\n },\n async unregister(permissions: any) {\n const permissionIds = permissions.map(prop('id'));\n await permissionService.deleteByIds(permissionIds);\n },\n can(action: any, fromStage: any) {\n const requestState = strapi.requestContext.get()?.state;\n\n if (!requestState) {\n return false;\n }\n\n // Override permissions for super admin\n const userRoles = requestState.user?.roles;\n if (userRoles?.some((role: any) => role.code === 'strapi-super-admin')) {\n return true;\n }\n\n return requestState.userAbility.can({\n name: action,\n params: { from: fromStage },\n });\n },\n };\n};\n"],"names":["ApplicationError","errors","validActions","STAGE_TRANSITION_UID","strapi","roleService","getAdminService","permissionService","register","roleId","action","fromStage","includes","permissions","addPermissions","actionParameters","from","registerMany","async","map","unregister","permissionIds","prop","deleteByIds","can","requestState","requestContext","get","state","userRoles","user","roles","some","role","code","userAbility","name","params"],"mappings":";;;;;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAC7B,MAAMC,YAAe,GAAA;AAACC,IAAAA;AAAqB,CAAA;AAE3C,uBAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAMC,cAAcC,qBAAgB,CAAA,MAAA,CAAA;AACpC,IAAA,MAAMC,oBAAoBD,qBAAgB,CAAA,YAAA,CAAA;IAE1C,OAAO;AACL,QAAA,MAAME,UAAS,EAAEC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAO,EAAA;AAC/C,YAAA,IAAI,CAACT,YAAAA,CAAaU,QAAQ,CAACF,MAAS,CAAA,EAAA;AAClC,gBAAA,MAAM,IAAIV,gBAAiB,CAAA,CAAC,eAAe,EAAEU,OAAO,CAAC,CAAA;AACvD;AACA,YAAA,MAAMG,WAAc,GAAA,MAAMR,WAAYS,CAAAA,cAAc,CAACL,MAAQ,EAAA;AAC3D,gBAAA;AACEC,oBAAAA,MAAAA;oBACAK,gBAAkB,EAAA;wBAChBC,IAAML,EAAAA;AACR;AACF;AACD,aAAA,CAAA;;YAGD,OAAOE,WAAAA;AACT,SAAA;AACA,QAAA,MAAMI,cAAaJ,WAAgB,EAAA;AACjC,YAAA,OAAOK,YAAMC,GAAG,CAACN,WAAa,EAAA,IAAI,CAACL,QAAQ,CAAA;AAC7C,SAAA;AACA,QAAA,MAAMY,YAAWP,WAAgB,EAAA;AAC/B,YAAA,MAAMQ,aAAgBR,GAAAA,WAAAA,CAAYM,GAAG,CAACG,OAAK,CAAA,IAAA,CAAA,CAAA;YAC3C,MAAMf,iBAAAA,CAAkBgB,WAAW,CAACF,aAAAA,CAAAA;AACtC,SAAA;QACAG,GAAId,CAAAA,CAAAA,MAAW,EAAEC,SAAc,EAAA;AAC7B,YAAA,MAAMc,YAAerB,GAAAA,MAAAA,CAAOsB,cAAc,CAACC,GAAG,EAAIC,EAAAA,KAAAA;AAElD,YAAA,IAAI,CAACH,YAAc,EAAA;gBACjB,OAAO,KAAA;AACT;;YAGA,MAAMI,SAAAA,GAAYJ,YAAaK,CAAAA,IAAI,EAAEC,KAAAA;AACrC,YAAA,IAAIF,WAAWG,IAAK,CAAA,CAACC,OAAcA,IAAKC,CAAAA,IAAI,KAAK,oBAAuB,CAAA,EAAA;gBACtE,OAAO,IAAA;AACT;AAEA,YAAA,OAAOT,YAAaU,CAAAA,WAAW,CAACX,GAAG,CAAC;gBAClCY,IAAM1B,EAAAA,MAAAA;gBACN2B,MAAQ,EAAA;oBAAErB,IAAML,EAAAA;AAAU;AAC5B,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
@@ -0,0 +1,57 @@
1
+ import { prop } from 'lodash/fp';
2
+ import { async, errors } from '@strapi/utils';
3
+ import { getAdminService } from '../utils/index.mjs';
4
+ import { STAGE_TRANSITION_UID } from '../constants/workflows.mjs';
5
+
6
+ const { ApplicationError } = errors;
7
+ const validActions = [
8
+ STAGE_TRANSITION_UID
9
+ ];
10
+ var stagePermissions = (({ strapi })=>{
11
+ const roleService = getAdminService('role');
12
+ const permissionService = getAdminService('permission');
13
+ return {
14
+ async register ({ roleId, action, fromStage }) {
15
+ if (!validActions.includes(action)) {
16
+ throw new ApplicationError(`Invalid action ${action}`);
17
+ }
18
+ const permissions = await roleService.addPermissions(roleId, [
19
+ {
20
+ action,
21
+ actionParameters: {
22
+ from: fromStage
23
+ }
24
+ }
25
+ ]);
26
+ // TODO: Filter response
27
+ return permissions;
28
+ },
29
+ async registerMany (permissions) {
30
+ return async.map(permissions, this.register);
31
+ },
32
+ async unregister (permissions) {
33
+ const permissionIds = permissions.map(prop('id'));
34
+ await permissionService.deleteByIds(permissionIds);
35
+ },
36
+ can (action, fromStage) {
37
+ const requestState = strapi.requestContext.get()?.state;
38
+ if (!requestState) {
39
+ return false;
40
+ }
41
+ // Override permissions for super admin
42
+ const userRoles = requestState.user?.roles;
43
+ if (userRoles?.some((role)=>role.code === 'strapi-super-admin')) {
44
+ return true;
45
+ }
46
+ return requestState.userAbility.can({
47
+ name: action,
48
+ params: {
49
+ from: fromStage
50
+ }
51
+ });
52
+ }
53
+ };
54
+ });
55
+
56
+ export { stagePermissions as default };
57
+ //# sourceMappingURL=stage-permissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-permissions.mjs","sources":["../../../server/src/services/stage-permissions.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { prop } from 'lodash/fp';\nimport { async, errors } from '@strapi/utils';\nimport { getService, getAdminService } from '../utils';\nimport { STAGE_TRANSITION_UID } from '../constants/workflows';\n\nconst { ApplicationError } = errors;\nconst validActions = [STAGE_TRANSITION_UID];\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const roleService = getAdminService('role');\n const permissionService = getAdminService('permission');\n\n return {\n async register({ roleId, action, fromStage }: any) {\n if (!validActions.includes(action)) {\n throw new ApplicationError(`Invalid action ${action}`);\n }\n const permissions = await roleService.addPermissions(roleId, [\n {\n action,\n actionParameters: {\n from: fromStage,\n },\n },\n ]);\n\n // TODO: Filter response\n return permissions;\n },\n async registerMany(permissions: any) {\n return async.map(permissions, this.register);\n },\n async unregister(permissions: any) {\n const permissionIds = permissions.map(prop('id'));\n await permissionService.deleteByIds(permissionIds);\n },\n can(action: any, fromStage: any) {\n const requestState = strapi.requestContext.get()?.state;\n\n if (!requestState) {\n return false;\n }\n\n // Override permissions for super admin\n const userRoles = requestState.user?.roles;\n if (userRoles?.some((role: any) => role.code === 'strapi-super-admin')) {\n return true;\n }\n\n return requestState.userAbility.can({\n name: action,\n params: { from: fromStage },\n });\n },\n };\n};\n"],"names":["ApplicationError","errors","validActions","STAGE_TRANSITION_UID","strapi","roleService","getAdminService","permissionService","register","roleId","action","fromStage","includes","permissions","addPermissions","actionParameters","from","registerMany","async","map","unregister","permissionIds","prop","deleteByIds","can","requestState","requestContext","get","state","userRoles","user","roles","some","role","code","userAbility","name","params"],"mappings":";;;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAC7B,MAAMC,YAAe,GAAA;AAACC,IAAAA;AAAqB,CAAA;AAE3C,uBAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAMC,cAAcC,eAAgB,CAAA,MAAA,CAAA;AACpC,IAAA,MAAMC,oBAAoBD,eAAgB,CAAA,YAAA,CAAA;IAE1C,OAAO;AACL,QAAA,MAAME,UAAS,EAAEC,MAAM,EAAEC,MAAM,EAAEC,SAAS,EAAO,EAAA;AAC/C,YAAA,IAAI,CAACT,YAAAA,CAAaU,QAAQ,CAACF,MAAS,CAAA,EAAA;AAClC,gBAAA,MAAM,IAAIV,gBAAiB,CAAA,CAAC,eAAe,EAAEU,OAAO,CAAC,CAAA;AACvD;AACA,YAAA,MAAMG,WAAc,GAAA,MAAMR,WAAYS,CAAAA,cAAc,CAACL,MAAQ,EAAA;AAC3D,gBAAA;AACEC,oBAAAA,MAAAA;oBACAK,gBAAkB,EAAA;wBAChBC,IAAML,EAAAA;AACR;AACF;AACD,aAAA,CAAA;;YAGD,OAAOE,WAAAA;AACT,SAAA;AACA,QAAA,MAAMI,cAAaJ,WAAgB,EAAA;AACjC,YAAA,OAAOK,MAAMC,GAAG,CAACN,WAAa,EAAA,IAAI,CAACL,QAAQ,CAAA;AAC7C,SAAA;AACA,QAAA,MAAMY,YAAWP,WAAgB,EAAA;AAC/B,YAAA,MAAMQ,aAAgBR,GAAAA,WAAAA,CAAYM,GAAG,CAACG,IAAK,CAAA,IAAA,CAAA,CAAA;YAC3C,MAAMf,iBAAAA,CAAkBgB,WAAW,CAACF,aAAAA,CAAAA;AACtC,SAAA;QACAG,GAAId,CAAAA,CAAAA,MAAW,EAAEC,SAAc,EAAA;AAC7B,YAAA,MAAMc,YAAerB,GAAAA,MAAAA,CAAOsB,cAAc,CAACC,GAAG,EAAIC,EAAAA,KAAAA;AAElD,YAAA,IAAI,CAACH,YAAc,EAAA;gBACjB,OAAO,KAAA;AACT;;YAGA,MAAMI,SAAAA,GAAYJ,YAAaK,CAAAA,IAAI,EAAEC,KAAAA;AACrC,YAAA,IAAIF,WAAWG,IAAK,CAAA,CAACC,OAAcA,IAAKC,CAAAA,IAAI,KAAK,oBAAuB,CAAA,EAAA;gBACtE,OAAO,IAAA;AACT;AAEA,YAAA,OAAOT,YAAaU,CAAAA,WAAW,CAACX,GAAG,CAAC;gBAClCY,IAAM1B,EAAAA,MAAAA;gBACN2B,MAAQ,EAAA;oBAAErB,IAAML,EAAAA;AAAU;AAC5B,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}