@strapi/content-releases 5.12.1 → 5.12.2

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 (259) hide show
  1. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  2. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  5. package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
  6. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  9. package/dist/admin/components/EntryValidationPopover.js +344 -0
  10. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  11. package/dist/admin/components/EntryValidationPopover.mjs +342 -0
  12. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  13. package/dist/admin/components/RelativeTime.js +76 -0
  14. package/dist/admin/components/RelativeTime.js.map +1 -0
  15. package/dist/admin/components/RelativeTime.mjs +55 -0
  16. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  17. package/dist/admin/components/ReleaseAction.js +201 -0
  18. package/dist/admin/components/ReleaseAction.js.map +1 -0
  19. package/dist/admin/components/ReleaseAction.mjs +199 -0
  20. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  21. package/dist/admin/components/ReleaseActionMenu.js +243 -0
  22. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  23. package/dist/admin/components/ReleaseActionMenu.mjs +222 -0
  24. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  25. package/dist/admin/components/ReleaseActionModal.js +268 -0
  26. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  27. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  28. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  29. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  30. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  31. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  32. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  33. package/dist/admin/components/ReleaseListCell.js +103 -0
  34. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  35. package/dist/admin/components/ReleaseListCell.mjs +100 -0
  36. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  37. package/dist/admin/components/ReleaseModal.js +323 -0
  38. package/dist/admin/components/ReleaseModal.js.map +1 -0
  39. package/dist/admin/components/ReleaseModal.mjs +302 -0
  40. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  41. package/dist/admin/components/ReleasesPanel.js +138 -0
  42. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  43. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  44. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  45. package/dist/admin/constants.js +77 -0
  46. package/dist/admin/constants.js.map +1 -0
  47. package/dist/admin/constants.mjs +75 -0
  48. package/dist/admin/constants.mjs.map +1 -0
  49. package/dist/admin/index.js +120 -14
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/admin/index.mjs +121 -13
  52. package/dist/admin/index.mjs.map +1 -1
  53. package/dist/admin/{chunks/hooks-DA5VbUAp.js → modules/hooks.js} +1 -1
  54. package/dist/admin/modules/hooks.js.map +1 -0
  55. package/dist/admin/{chunks/hooks-CFk_8Q0b.mjs → modules/hooks.mjs} +2 -2
  56. package/dist/admin/modules/hooks.mjs.map +1 -0
  57. package/dist/admin/pages/App.js +29 -0
  58. package/dist/admin/pages/App.js.map +1 -0
  59. package/dist/admin/pages/App.mjs +27 -0
  60. package/dist/admin/pages/App.mjs.map +1 -0
  61. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  62. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  63. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  64. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  65. package/dist/admin/pages/ReleaseDetailsPage.js +821 -0
  66. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  67. package/dist/admin/pages/ReleaseDetailsPage.mjs +800 -0
  68. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  69. package/dist/admin/pages/ReleasesPage.js +397 -0
  70. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  71. package/dist/admin/pages/ReleasesPage.mjs +375 -0
  72. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  73. package/dist/admin/{chunks/ReleasesSettingsPage-KRcoI1bC.js → pages/ReleasesSettingsPage.js} +9 -17
  74. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  75. package/dist/admin/{chunks/ReleasesSettingsPage-DUKdFdvx.mjs → pages/ReleasesSettingsPage.mjs} +5 -13
  76. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  77. package/dist/admin/pluginId.js +6 -0
  78. package/dist/admin/pluginId.js.map +1 -0
  79. package/dist/admin/pluginId.mjs +4 -0
  80. package/dist/admin/pluginId.mjs.map +1 -0
  81. package/dist/admin/services/release.js +464 -0
  82. package/dist/admin/services/release.js.map +1 -0
  83. package/dist/admin/services/release.mjs +447 -0
  84. package/dist/admin/services/release.mjs.map +1 -0
  85. package/dist/admin/store/hooks.js +8 -0
  86. package/dist/admin/store/hooks.js.map +1 -0
  87. package/dist/admin/store/hooks.mjs +6 -0
  88. package/dist/admin/store/hooks.mjs.map +1 -0
  89. package/dist/admin/{chunks/en-BOpqX2t_.js → translations/en.json.js} +2 -2
  90. package/dist/admin/translations/en.json.js.map +1 -0
  91. package/dist/admin/{chunks/en-aQo8Bn_U.mjs → translations/en.json.mjs} +1 -1
  92. package/dist/admin/translations/en.json.mjs.map +1 -0
  93. package/dist/admin/{chunks/uk-9T9su-bj.js → translations/uk.json.js} +2 -2
  94. package/dist/admin/translations/uk.json.js.map +1 -0
  95. package/dist/admin/{chunks/uk-Bp9HotPq.mjs → translations/uk.json.mjs} +1 -1
  96. package/dist/admin/translations/uk.json.mjs.map +1 -0
  97. package/dist/admin/utils/api.js +8 -0
  98. package/dist/admin/utils/api.js.map +1 -0
  99. package/dist/admin/utils/api.mjs +6 -0
  100. package/dist/admin/utils/api.mjs.map +1 -0
  101. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  102. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  103. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  104. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  105. package/dist/admin/utils/time.js +42 -0
  106. package/dist/admin/utils/time.js.map +1 -0
  107. package/dist/admin/utils/time.mjs +39 -0
  108. package/dist/admin/utils/time.mjs.map +1 -0
  109. package/dist/admin/{chunks/schemas-DS7NeFDN.js → validation/schemas.js} +1 -1
  110. package/dist/admin/validation/schemas.js.map +1 -0
  111. package/dist/admin/{chunks/schemas-DMt8h1z-.mjs → validation/schemas.mjs} +2 -2
  112. package/dist/admin/validation/schemas.mjs.map +1 -0
  113. package/dist/server/bootstrap.js +68 -0
  114. package/dist/server/bootstrap.js.map +1 -0
  115. package/dist/server/bootstrap.mjs +66 -0
  116. package/dist/server/bootstrap.mjs.map +1 -0
  117. package/dist/server/constants.js +74 -0
  118. package/dist/server/constants.js.map +1 -0
  119. package/dist/server/constants.mjs +69 -0
  120. package/dist/server/constants.mjs.map +1 -0
  121. package/dist/server/content-types/index.js +12 -0
  122. package/dist/server/content-types/index.js.map +1 -0
  123. package/dist/server/content-types/index.mjs +10 -0
  124. package/dist/server/content-types/index.mjs.map +1 -0
  125. package/dist/server/content-types/release/index.js +10 -0
  126. package/dist/server/content-types/release/index.js.map +1 -0
  127. package/dist/server/content-types/release/index.mjs +8 -0
  128. package/dist/server/content-types/release/index.mjs.map +1 -0
  129. package/dist/server/content-types/release/schema.js +58 -0
  130. package/dist/server/content-types/release/schema.js.map +1 -0
  131. package/dist/server/content-types/release/schema.mjs +56 -0
  132. package/dist/server/content-types/release/schema.mjs.map +1 -0
  133. package/dist/server/content-types/release-action/index.js +10 -0
  134. package/dist/server/content-types/release-action/index.js.map +1 -0
  135. package/dist/server/content-types/release-action/index.mjs +8 -0
  136. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  137. package/dist/server/content-types/release-action/schema.js +55 -0
  138. package/dist/server/content-types/release-action/schema.js.map +1 -0
  139. package/dist/server/content-types/release-action/schema.mjs +53 -0
  140. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  141. package/dist/server/controllers/index.js +14 -0
  142. package/dist/server/controllers/index.js.map +1 -0
  143. package/dist/server/controllers/index.mjs +12 -0
  144. package/dist/server/controllers/index.mjs.map +1 -0
  145. package/dist/server/controllers/release-action.js +150 -0
  146. package/dist/server/controllers/release-action.js.map +1 -0
  147. package/dist/server/controllers/release-action.mjs +148 -0
  148. package/dist/server/controllers/release-action.mjs.map +1 -0
  149. package/dist/server/controllers/release.js +302 -0
  150. package/dist/server/controllers/release.js.map +1 -0
  151. package/dist/server/controllers/release.mjs +300 -0
  152. package/dist/server/controllers/release.mjs.map +1 -0
  153. package/dist/server/controllers/settings.js +37 -0
  154. package/dist/server/controllers/settings.js.map +1 -0
  155. package/dist/server/controllers/settings.mjs +35 -0
  156. package/dist/server/controllers/settings.mjs.map +1 -0
  157. package/dist/server/controllers/validation/release-action.js +34 -0
  158. package/dist/server/controllers/validation/release-action.js.map +1 -0
  159. package/dist/server/controllers/validation/release-action.mjs +30 -0
  160. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  161. package/dist/server/controllers/validation/release.js +26 -0
  162. package/dist/server/controllers/validation/release.js.map +1 -0
  163. package/dist/server/controllers/validation/release.mjs +22 -0
  164. package/dist/server/controllers/validation/release.mjs.map +1 -0
  165. package/dist/server/controllers/validation/settings.js +32 -0
  166. package/dist/server/controllers/validation/settings.js.map +1 -0
  167. package/dist/server/controllers/validation/settings.mjs +10 -0
  168. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  169. package/dist/server/destroy.js +15 -0
  170. package/dist/server/destroy.js.map +1 -0
  171. package/dist/server/destroy.mjs +13 -0
  172. package/dist/server/destroy.mjs.map +1 -0
  173. package/dist/server/index.js +16 -2336
  174. package/dist/server/index.js.map +1 -1
  175. package/dist/server/index.mjs +7 -2308
  176. package/dist/server/index.mjs.map +1 -1
  177. package/dist/server/middlewares/documents.js +104 -0
  178. package/dist/server/middlewares/documents.js.map +1 -0
  179. package/dist/server/middlewares/documents.mjs +101 -0
  180. package/dist/server/middlewares/documents.mjs.map +1 -0
  181. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  182. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  183. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  184. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  185. package/dist/server/migrations/index.js +205 -0
  186. package/dist/server/migrations/index.js.map +1 -0
  187. package/dist/server/migrations/index.mjs +198 -0
  188. package/dist/server/migrations/index.mjs.map +1 -0
  189. package/dist/server/register.js +23 -0
  190. package/dist/server/register.js.map +1 -0
  191. package/dist/server/register.mjs +21 -0
  192. package/dist/server/register.mjs.map +1 -0
  193. package/dist/server/routes/index.js +14 -0
  194. package/dist/server/routes/index.js.map +1 -0
  195. package/dist/server/routes/index.mjs +12 -0
  196. package/dist/server/routes/index.mjs.map +1 -0
  197. package/dist/server/routes/release-action.js +100 -0
  198. package/dist/server/routes/release-action.js.map +1 -0
  199. package/dist/server/routes/release-action.mjs +98 -0
  200. package/dist/server/routes/release-action.mjs.map +1 -0
  201. package/dist/server/routes/release.js +154 -0
  202. package/dist/server/routes/release.js.map +1 -0
  203. package/dist/server/routes/release.mjs +152 -0
  204. package/dist/server/routes/release.mjs.map +1 -0
  205. package/dist/server/routes/settings.js +46 -0
  206. package/dist/server/routes/settings.js.map +1 -0
  207. package/dist/server/routes/settings.mjs +44 -0
  208. package/dist/server/routes/settings.mjs.map +1 -0
  209. package/dist/server/services/index.js +18 -0
  210. package/dist/server/services/index.js.map +1 -0
  211. package/dist/server/services/index.mjs +16 -0
  212. package/dist/server/services/index.mjs.map +1 -0
  213. package/dist/server/services/release-action.js +323 -0
  214. package/dist/server/services/release-action.js.map +1 -0
  215. package/dist/server/services/release-action.mjs +321 -0
  216. package/dist/server/services/release-action.mjs.map +1 -0
  217. package/dist/server/services/release.js +324 -0
  218. package/dist/server/services/release.js.map +1 -0
  219. package/dist/server/services/release.mjs +322 -0
  220. package/dist/server/services/release.mjs.map +1 -0
  221. package/dist/server/services/scheduling.js +70 -0
  222. package/dist/server/services/scheduling.js.map +1 -0
  223. package/dist/server/services/scheduling.mjs +68 -0
  224. package/dist/server/services/scheduling.mjs.map +1 -0
  225. package/dist/server/services/settings.js +34 -0
  226. package/dist/server/services/settings.js.map +1 -0
  227. package/dist/server/services/settings.mjs +32 -0
  228. package/dist/server/services/settings.mjs.map +1 -0
  229. package/dist/server/services/validation.js +91 -0
  230. package/dist/server/services/validation.js.map +1 -0
  231. package/dist/server/services/validation.mjs +86 -0
  232. package/dist/server/services/validation.mjs.map +1 -0
  233. package/dist/server/utils/index.js +93 -0
  234. package/dist/server/utils/index.js.map +1 -0
  235. package/dist/server/utils/index.mjs +87 -0
  236. package/dist/server/utils/index.mjs.map +1 -0
  237. package/package.json +7 -7
  238. package/dist/admin/chunks/App-BkWgp5q_.mjs +0 -1845
  239. package/dist/admin/chunks/App-BkWgp5q_.mjs.map +0 -1
  240. package/dist/admin/chunks/App-CJiqPP7-.js +0 -1866
  241. package/dist/admin/chunks/App-CJiqPP7-.js.map +0 -1
  242. package/dist/admin/chunks/PurchaseContentReleases-CzayeVUD.mjs +0 -193
  243. package/dist/admin/chunks/PurchaseContentReleases-CzayeVUD.mjs.map +0 -1
  244. package/dist/admin/chunks/PurchaseContentReleases-Z9uEPb5b.js +0 -195
  245. package/dist/admin/chunks/PurchaseContentReleases-Z9uEPb5b.js.map +0 -1
  246. package/dist/admin/chunks/ReleasesSettingsPage-DUKdFdvx.mjs.map +0 -1
  247. package/dist/admin/chunks/ReleasesSettingsPage-KRcoI1bC.js.map +0 -1
  248. package/dist/admin/chunks/en-BOpqX2t_.js.map +0 -1
  249. package/dist/admin/chunks/en-aQo8Bn_U.mjs.map +0 -1
  250. package/dist/admin/chunks/hooks-CFk_8Q0b.mjs.map +0 -1
  251. package/dist/admin/chunks/hooks-DA5VbUAp.js.map +0 -1
  252. package/dist/admin/chunks/index-DBUaMD56.mjs +0 -1619
  253. package/dist/admin/chunks/index-DBUaMD56.mjs.map +0 -1
  254. package/dist/admin/chunks/index-vjWrvGN3.js +0 -1658
  255. package/dist/admin/chunks/index-vjWrvGN3.js.map +0 -1
  256. package/dist/admin/chunks/schemas-DMt8h1z-.mjs.map +0 -1
  257. package/dist/admin/chunks/schemas-DS7NeFDN.js.map +0 -1
  258. package/dist/admin/chunks/uk-9T9su-bj.js.map +0 -1
  259. package/dist/admin/chunks/uk-Bp9HotPq.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sources":["../../../server/src/routes/settings.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/settings',\n handler: 'settings.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.read'],\n },\n },\n ],\n },\n },\n\n {\n method: 'PUT',\n path: '/settings',\n handler: 'settings.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.update'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,eAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,eAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AAEA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAA2C;AACvD;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
@@ -0,0 +1,44 @@
1
+ var settings = {
2
+ type: 'admin',
3
+ routes: [
4
+ {
5
+ method: 'GET',
6
+ path: '/settings',
7
+ handler: 'settings.find',
8
+ config: {
9
+ policies: [
10
+ 'admin::isAuthenticatedAdmin',
11
+ {
12
+ name: 'admin::hasPermissions',
13
+ config: {
14
+ actions: [
15
+ 'plugin::content-releases.settings.read'
16
+ ]
17
+ }
18
+ }
19
+ ]
20
+ }
21
+ },
22
+ {
23
+ method: 'PUT',
24
+ path: '/settings',
25
+ handler: 'settings.update',
26
+ config: {
27
+ policies: [
28
+ 'admin::isAuthenticatedAdmin',
29
+ {
30
+ name: 'admin::hasPermissions',
31
+ config: {
32
+ actions: [
33
+ 'plugin::content-releases.settings.update'
34
+ ]
35
+ }
36
+ }
37
+ ]
38
+ }
39
+ }
40
+ ]
41
+ };
42
+
43
+ export { settings as default };
44
+ //# sourceMappingURL=settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.mjs","sources":["../../../server/src/routes/settings.ts"],"sourcesContent":["export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/settings',\n handler: 'settings.find',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.read'],\n },\n },\n ],\n },\n },\n\n {\n method: 'PUT',\n path: '/settings',\n handler: 'settings.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::content-releases.settings.update'],\n },\n },\n ],\n },\n },\n ],\n};\n"],"names":["type","routes","method","path","handler","config","policies","name","actions"],"mappings":"AAAA,eAAe;IACbA,IAAM,EAAA,OAAA;IACNC,MAAQ,EAAA;AACN,QAAA;YACEC,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,eAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAAyC;AACrD;AACF;AACD;AACH;AACF,SAAA;AAEA,QAAA;YACEN,MAAQ,EAAA,KAAA;YACRC,IAAM,EAAA,WAAA;YACNC,OAAS,EAAA,iBAAA;YACTC,MAAQ,EAAA;gBACNC,QAAU,EAAA;AACR,oBAAA,6BAAA;AACA,oBAAA;wBACEC,IAAM,EAAA,uBAAA;wBACNF,MAAQ,EAAA;4BACNG,OAAS,EAAA;AAAC,gCAAA;AAA2C;AACvD;AACF;AACD;AACH;AACF;AACD;AACH,CAAE;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var release = require('./release.js');
4
+ var releaseAction = require('./release-action.js');
5
+ var validation = require('./validation.js');
6
+ var scheduling = require('./scheduling.js');
7
+ var settings = require('./settings.js');
8
+
9
+ const services = {
10
+ release,
11
+ 'release-action': releaseAction,
12
+ 'release-validation': validation.default,
13
+ scheduling,
14
+ settings
15
+ };
16
+
17
+ exports.services = services;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import release from './release';\nimport releaseAction from './release-action';\nimport releaseValidation from './validation';\nimport scheduling from './scheduling';\nimport settings from './settings';\n\nexport const services = {\n release,\n 'release-action': releaseAction,\n 'release-validation': releaseValidation,\n scheduling,\n settings,\n};\n"],"names":["services","release","releaseAction","releaseValidation","scheduling","settings"],"mappings":";;;;;;;;MAMaA,QAAW,GAAA;AACtBC,IAAAA,OAAAA;IACA,gBAAkBC,EAAAA,aAAAA;IAClB,oBAAsBC,EAAAA,kBAAAA;AACtBC,IAAAA,UAAAA;AACAC,IAAAA;AACF;;;;"}
@@ -0,0 +1,16 @@
1
+ import createReleaseService from './release.mjs';
2
+ import createReleaseActionService from './release-action.mjs';
3
+ import createReleaseValidationService from './validation.mjs';
4
+ import createSchedulingService from './scheduling.mjs';
5
+ import createSettingsService from './settings.mjs';
6
+
7
+ const services = {
8
+ release: createReleaseService,
9
+ 'release-action': createReleaseActionService,
10
+ 'release-validation': createReleaseValidationService,
11
+ scheduling: createSchedulingService,
12
+ settings: createSettingsService
13
+ };
14
+
15
+ export { services };
16
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import release from './release';\nimport releaseAction from './release-action';\nimport releaseValidation from './validation';\nimport scheduling from './scheduling';\nimport settings from './settings';\n\nexport const services = {\n release,\n 'release-action': releaseAction,\n 'release-validation': releaseValidation,\n scheduling,\n settings,\n};\n"],"names":["services","release","releaseAction","releaseValidation","scheduling","settings"],"mappings":";;;;;;MAMaA,QAAW,GAAA;AACtBC,aAAAA,oBAAAA;IACA,gBAAkBC,EAAAA,0BAAAA;IAClB,oBAAsBC,EAAAA,8BAAAA;AACtBC,gBAAAA,uBAAAA;AACAC,cAAAA;AACF;;;;"}
@@ -0,0 +1,323 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@strapi/utils');
4
+ var _ = require('lodash/fp');
5
+ var constants = require('../constants.js');
6
+ var index = require('../utils/index.js');
7
+
8
+ const getGroupName = (queryValue)=>{
9
+ switch(queryValue){
10
+ case 'contentType':
11
+ return 'contentType.displayName';
12
+ case 'type':
13
+ return 'type';
14
+ case 'locale':
15
+ return _.getOr('No locale', 'locale.name');
16
+ default:
17
+ return 'contentType.displayName';
18
+ }
19
+ };
20
+ const createReleaseActionService = ({ strapi })=>{
21
+ const getLocalesDataForActions = async ()=>{
22
+ if (!strapi.plugin('i18n')) {
23
+ return {};
24
+ }
25
+ const allLocales = await strapi.plugin('i18n').service('locales').find() || [];
26
+ return allLocales.reduce((acc, locale)=>{
27
+ acc[locale.code] = {
28
+ name: locale.name,
29
+ code: locale.code
30
+ };
31
+ return acc;
32
+ }, {});
33
+ };
34
+ const getContentTypesDataForActions = async (contentTypesUids)=>{
35
+ const contentManagerContentTypeService = strapi.plugin('content-manager').service('content-types');
36
+ const contentTypesData = {};
37
+ for (const contentTypeUid of contentTypesUids){
38
+ const contentTypeConfig = await contentManagerContentTypeService.findConfiguration({
39
+ uid: contentTypeUid
40
+ });
41
+ contentTypesData[contentTypeUid] = {
42
+ mainField: contentTypeConfig.settings.mainField,
43
+ displayName: strapi.getModel(contentTypeUid).info.displayName
44
+ };
45
+ }
46
+ return contentTypesData;
47
+ };
48
+ return {
49
+ async create (releaseId, action, { disableUpdateReleaseStatus = false } = {}) {
50
+ const { validateEntryData, validateUniqueEntry } = index.getService('release-validation', {
51
+ strapi
52
+ });
53
+ await Promise.all([
54
+ validateEntryData(action.contentType, action.entryDocumentId),
55
+ validateUniqueEntry(releaseId, action)
56
+ ]);
57
+ // If we are adding a singleType, we need to append the documentId of that singleType
58
+ const model = strapi.contentType(action.contentType);
59
+ if (model.kind === 'singleType') {
60
+ const document = await strapi.db.query(model.uid).findOne({
61
+ select: [
62
+ 'documentId'
63
+ ]
64
+ });
65
+ if (!document) {
66
+ throw new utils.errors.NotFoundError(`No entry found for contentType ${action.contentType}`);
67
+ }
68
+ action.entryDocumentId = document.documentId;
69
+ }
70
+ const release = await strapi.db.query(constants.RELEASE_MODEL_UID).findOne({
71
+ where: {
72
+ id: releaseId
73
+ }
74
+ });
75
+ if (!release) {
76
+ throw new utils.errors.NotFoundError(`No release found for id ${releaseId}`);
77
+ }
78
+ if (release.releasedAt) {
79
+ throw new utils.errors.ValidationError('Release already published');
80
+ }
81
+ // If the action is a publish, check if the entry is valid
82
+ // If the action is an unpublish, skip the validation
83
+ const actionStatus = action.type === 'publish' ? await index.getDraftEntryValidStatus({
84
+ contentType: action.contentType,
85
+ documentId: action.entryDocumentId,
86
+ locale: action.locale
87
+ }, {
88
+ strapi
89
+ }) : true;
90
+ const releaseAction = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).create({
91
+ data: {
92
+ ...action,
93
+ release: release.id,
94
+ isEntryValid: actionStatus
95
+ },
96
+ populate: {
97
+ release: {
98
+ select: [
99
+ 'id'
100
+ ]
101
+ }
102
+ }
103
+ });
104
+ if (!disableUpdateReleaseStatus) {
105
+ index.getService('release', {
106
+ strapi
107
+ }).updateReleaseStatus(release.id);
108
+ }
109
+ return releaseAction;
110
+ },
111
+ async findPage (releaseId, query) {
112
+ const release = await strapi.db.query(constants.RELEASE_MODEL_UID).findOne({
113
+ where: {
114
+ id: releaseId
115
+ },
116
+ select: [
117
+ 'id'
118
+ ]
119
+ });
120
+ if (!release) {
121
+ throw new utils.errors.NotFoundError(`No release found for id ${releaseId}`);
122
+ }
123
+ const dbQuery = strapi.get('query-params').transform(constants.RELEASE_ACTION_MODEL_UID, query ?? {});
124
+ const { results: actions, pagination } = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).findPage({
125
+ ...dbQuery,
126
+ where: {
127
+ release: releaseId
128
+ }
129
+ });
130
+ // For each contentType on the release, we create a custom populate object for nested relations
131
+ const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');
132
+ const actionsWithEntry = await utils.async.map(actions, async (action)=>{
133
+ // @ts-expect-error - Core.Service type is not a function
134
+ const populate = await populateBuilderService(action.contentType).populateDeep(Infinity).build();
135
+ const entry = await index.getEntry({
136
+ contentType: action.contentType,
137
+ documentId: action.entryDocumentId,
138
+ locale: action.locale,
139
+ populate,
140
+ status: action.type === 'publish' ? 'draft' : 'published'
141
+ }, {
142
+ strapi
143
+ });
144
+ return {
145
+ ...action,
146
+ entry,
147
+ status: entry ? await index.getEntryStatus(action.contentType, entry) : null
148
+ };
149
+ });
150
+ return {
151
+ results: actionsWithEntry,
152
+ pagination
153
+ };
154
+ },
155
+ async groupActions (actions, groupBy) {
156
+ const contentTypeUids = actions.reduce((acc, action)=>{
157
+ if (!acc.includes(action.contentType)) {
158
+ acc.push(action.contentType);
159
+ }
160
+ return acc;
161
+ }, []);
162
+ const allReleaseContentTypesDictionary = await getContentTypesDataForActions(contentTypeUids);
163
+ const allLocalesDictionary = await getLocalesDataForActions();
164
+ const formattedData = actions.map((action)=>{
165
+ const { mainField, displayName } = allReleaseContentTypesDictionary[action.contentType];
166
+ return {
167
+ ...action,
168
+ locale: action.locale ? allLocalesDictionary[action.locale] : null,
169
+ contentType: {
170
+ displayName,
171
+ mainFieldValue: action.entry[mainField],
172
+ uid: action.contentType
173
+ }
174
+ };
175
+ });
176
+ const groupName = getGroupName(groupBy);
177
+ return _.groupBy(groupName)(formattedData);
178
+ },
179
+ async getContentTypeModelsFromActions (actions) {
180
+ const contentTypeUids = actions.reduce((acc, action)=>{
181
+ if (!acc.includes(action.contentType)) {
182
+ acc.push(action.contentType);
183
+ }
184
+ return acc;
185
+ }, []);
186
+ const workflowsService = strapi.plugin('review-workflows').service('workflows');
187
+ const contentTypeModelsMap = await utils.async.reduce(contentTypeUids)(async (accPromise, contentTypeUid)=>{
188
+ const acc = await accPromise;
189
+ const contentTypeModel = strapi.getModel(contentTypeUid);
190
+ const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {
191
+ populate: 'stageRequiredToPublish'
192
+ });
193
+ acc[contentTypeUid] = {
194
+ ...contentTypeModel,
195
+ hasReviewWorkflow: !!workflow,
196
+ stageRequiredToPublish: workflow?.stageRequiredToPublish
197
+ };
198
+ return acc;
199
+ }, {});
200
+ return contentTypeModelsMap;
201
+ },
202
+ async countActions (query) {
203
+ const dbQuery = strapi.get('query-params').transform(constants.RELEASE_ACTION_MODEL_UID, query ?? {});
204
+ return strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).count(dbQuery);
205
+ },
206
+ async update (actionId, releaseId, update) {
207
+ const action = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).findOne({
208
+ where: {
209
+ id: actionId,
210
+ release: {
211
+ id: releaseId,
212
+ releasedAt: {
213
+ $null: true
214
+ }
215
+ }
216
+ }
217
+ });
218
+ if (!action) {
219
+ throw new utils.errors.NotFoundError(`Action with id ${actionId} not found in release with id ${releaseId} or it is already published`);
220
+ }
221
+ const actionStatus = update.type === 'publish' ? await index.getDraftEntryValidStatus({
222
+ contentType: action.contentType,
223
+ documentId: action.entryDocumentId,
224
+ locale: action.locale
225
+ }, {
226
+ strapi
227
+ }) : true;
228
+ const updatedAction = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).update({
229
+ where: {
230
+ id: actionId,
231
+ release: {
232
+ id: releaseId,
233
+ releasedAt: {
234
+ $null: true
235
+ }
236
+ }
237
+ },
238
+ data: {
239
+ ...update,
240
+ isEntryValid: actionStatus
241
+ }
242
+ });
243
+ index.getService('release', {
244
+ strapi
245
+ }).updateReleaseStatus(releaseId);
246
+ return updatedAction;
247
+ },
248
+ async delete (actionId, releaseId) {
249
+ const deletedAction = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).delete({
250
+ where: {
251
+ id: actionId,
252
+ release: {
253
+ id: releaseId,
254
+ releasedAt: {
255
+ $null: true
256
+ }
257
+ }
258
+ }
259
+ });
260
+ if (!deletedAction) {
261
+ throw new utils.errors.NotFoundError(`Action with id ${actionId} not found in release with id ${releaseId} or it is already published`);
262
+ }
263
+ index.getService('release', {
264
+ strapi
265
+ }).updateReleaseStatus(releaseId);
266
+ return deletedAction;
267
+ },
268
+ async validateActionsByContentTypes (contentTypeUids) {
269
+ const actions = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).findMany({
270
+ where: {
271
+ contentType: {
272
+ $in: contentTypeUids
273
+ },
274
+ // We only want to validate actions that are going to be published
275
+ type: 'publish',
276
+ release: {
277
+ releasedAt: {
278
+ $null: true
279
+ }
280
+ }
281
+ },
282
+ populate: {
283
+ release: true
284
+ }
285
+ });
286
+ const releasesUpdated = [];
287
+ await utils.async.map(actions, async (action)=>{
288
+ const isValid = await index.getDraftEntryValidStatus({
289
+ contentType: action.contentType,
290
+ documentId: action.entryDocumentId,
291
+ locale: action.locale
292
+ }, {
293
+ strapi
294
+ });
295
+ await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).update({
296
+ where: {
297
+ id: action.id
298
+ },
299
+ data: {
300
+ isEntryValid: isValid
301
+ }
302
+ });
303
+ if (!releasesUpdated.includes(action.release.id)) {
304
+ releasesUpdated.push(action.release.id);
305
+ }
306
+ return {
307
+ id: action.id,
308
+ isEntryValid: isValid
309
+ };
310
+ });
311
+ if (releasesUpdated.length > 0) {
312
+ await utils.async.map(releasesUpdated, async (releaseId)=>{
313
+ await index.getService('release', {
314
+ strapi
315
+ }).updateReleaseStatus(releaseId);
316
+ });
317
+ }
318
+ }
319
+ };
320
+ };
321
+
322
+ module.exports = createReleaseActionService;
323
+ //# sourceMappingURL=release-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-action.js","sources":["../../../server/src/services/release-action.ts"],"sourcesContent":["import { errors, async } from '@strapi/utils';\n\nimport type { Core, Internal, Modules, UID, Data } from '@strapi/types';\n\nimport _ from 'lodash/fp';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\n\nimport type {\n CreateReleaseAction,\n GetReleaseActions,\n ReleaseAction,\n ReleaseActionGroupBy,\n UpdateReleaseAction,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\nimport type { Entity } from '../../../shared/types';\nimport { getService, getDraftEntryValidStatus, getEntry, getEntryStatus } from '../utils';\n\nconst getGroupName = (queryValue: string) => {\n switch (queryValue) {\n case 'contentType':\n return 'contentType.displayName';\n case 'type':\n return 'type';\n case 'locale':\n return _.getOr('No locale', 'locale.name');\n default:\n return 'contentType.displayName';\n }\n};\n\nexport interface Locale extends Entity {\n name: string;\n code: string;\n}\n\ntype LocaleDictionary = {\n [key: Locale['code']]: Pick<Locale, 'name' | 'code'>;\n};\n\nconst createReleaseActionService = ({ strapi }: { strapi: Core.Strapi }) => {\n const getLocalesDataForActions = async () => {\n if (!strapi.plugin('i18n')) {\n return {};\n }\n\n const allLocales: Locale[] = (await strapi.plugin('i18n').service('locales').find()) || [];\n return allLocales.reduce<LocaleDictionary>((acc, locale) => {\n acc[locale.code] = { name: locale.name, code: locale.code };\n\n return acc;\n }, {});\n };\n\n const getContentTypesDataForActions = async (\n contentTypesUids: ReleaseAction['contentType'][]\n ) => {\n const contentManagerContentTypeService = strapi\n .plugin('content-manager')\n .service('content-types');\n\n const contentTypesData: Record<\n Internal.UID.ContentType,\n { mainField: string; displayName: string }\n > = {};\n for (const contentTypeUid of contentTypesUids) {\n const contentTypeConfig = await contentManagerContentTypeService.findConfiguration({\n uid: contentTypeUid,\n });\n\n contentTypesData[contentTypeUid] = {\n mainField: contentTypeConfig.settings.mainField,\n displayName: strapi.getModel(contentTypeUid).info.displayName,\n };\n }\n\n return contentTypesData;\n };\n\n return {\n async create(\n releaseId: CreateReleaseAction.Request['params']['releaseId'],\n action: CreateReleaseAction.Request['body'],\n { disableUpdateReleaseStatus = false }: { disableUpdateReleaseStatus?: boolean } = {}\n ) {\n const { validateEntryData, validateUniqueEntry } = getService('release-validation', {\n strapi,\n });\n\n await Promise.all([\n validateEntryData(action.contentType, action.entryDocumentId),\n validateUniqueEntry(releaseId, action),\n ]);\n\n // If we are adding a singleType, we need to append the documentId of that singleType\n const model = strapi.contentType(action.contentType);\n if (model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${action.contentType}`);\n }\n\n action.entryDocumentId = document.documentId;\n }\n\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n if (release.releasedAt) {\n throw new errors.ValidationError('Release already published');\n }\n\n // If the action is a publish, check if the entry is valid\n // If the action is an unpublish, skip the validation\n const actionStatus =\n action.type === 'publish'\n ? await getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n {\n strapi,\n }\n )\n : true;\n\n const releaseAction = await strapi.db.query(RELEASE_ACTION_MODEL_UID).create({\n data: {\n ...action,\n release: release.id,\n isEntryValid: actionStatus,\n },\n populate: { release: { select: ['id'] } },\n });\n\n if (!disableUpdateReleaseStatus) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n\n return releaseAction;\n },\n\n async findPage(\n releaseId: GetReleaseActions.Request['params']['releaseId'],\n query?: GetReleaseActions.Request['query']\n ) {\n const release = await strapi.db.query(RELEASE_MODEL_UID).findOne({\n where: { id: releaseId },\n select: ['id'],\n });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const dbQuery = strapi.get('query-params').transform(RELEASE_ACTION_MODEL_UID, query ?? {});\n const { results: actions, pagination } = await strapi.db\n .query(RELEASE_ACTION_MODEL_UID)\n .findPage({\n ...dbQuery,\n where: {\n release: releaseId,\n },\n });\n\n // For each contentType on the release, we create a custom populate object for nested relations\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\n\n const actionsWithEntry = await async.map(actions, async (action: ReleaseAction) => {\n // @ts-expect-error - Core.Service type is not a function\n const populate = await populateBuilderService(action.contentType)\n .populateDeep(Infinity)\n .build();\n\n const entry = await getEntry(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n populate,\n status: action.type === 'publish' ? 'draft' : 'published',\n },\n { strapi }\n );\n\n return {\n ...action,\n entry,\n status: entry ? await getEntryStatus(action.contentType, entry) : null,\n };\n });\n\n return {\n results: actionsWithEntry,\n pagination,\n };\n },\n\n async groupActions(actions: ReleaseAction[], groupBy: ReleaseActionGroupBy) {\n const contentTypeUids = actions.reduce<ReleaseAction['contentType'][]>((acc, action) => {\n if (!acc.includes(action.contentType)) {\n acc.push(action.contentType);\n }\n\n return acc;\n }, []);\n const allReleaseContentTypesDictionary = await getContentTypesDataForActions(contentTypeUids);\n const allLocalesDictionary = await getLocalesDataForActions();\n\n const formattedData = actions.map((action: ReleaseAction) => {\n const { mainField, displayName } = allReleaseContentTypesDictionary[action.contentType];\n\n return {\n ...action,\n locale: action.locale ? allLocalesDictionary[action.locale] : null,\n contentType: {\n displayName,\n mainFieldValue: action.entry[mainField],\n uid: action.contentType,\n },\n };\n });\n\n const groupName = getGroupName(groupBy);\n return _.groupBy(groupName)(formattedData);\n },\n\n async getContentTypeModelsFromActions(actions: ReleaseAction[]) {\n const contentTypeUids = actions.reduce<ReleaseAction['contentType'][]>((acc, action) => {\n if (!acc.includes(action.contentType)) {\n acc.push(action.contentType);\n }\n\n return acc;\n }, []);\n\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\n\n const contentTypeModelsMap = await async.reduce(contentTypeUids)(\n async (\n accPromise: Promise<GetReleaseActions.Response['meta']['contentTypes']>,\n contentTypeUid: ReleaseAction['contentType']\n ) => {\n const acc = await accPromise;\n const contentTypeModel = strapi.getModel(contentTypeUid);\n\n const workflow = await workflowsService.getAssignedWorkflow(contentTypeUid, {\n populate: 'stageRequiredToPublish',\n });\n\n acc[contentTypeUid] = {\n ...contentTypeModel,\n hasReviewWorkflow: !!workflow,\n stageRequiredToPublish: workflow?.stageRequiredToPublish,\n };\n\n return acc;\n },\n {}\n );\n\n return contentTypeModelsMap;\n },\n\n async countActions(\n query: Modules.EntityService.Params.Pick<typeof RELEASE_ACTION_MODEL_UID, 'filters'>\n ) {\n const dbQuery = strapi.get('query-params').transform(RELEASE_ACTION_MODEL_UID, query ?? {});\n\n return strapi.db.query(RELEASE_ACTION_MODEL_UID).count(dbQuery);\n },\n\n async update(\n actionId: UpdateReleaseAction.Request['params']['actionId'],\n releaseId: UpdateReleaseAction.Request['params']['releaseId'],\n update: UpdateReleaseAction.Request['body']\n ) {\n const action = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findOne({\n where: {\n id: actionId,\n release: {\n id: releaseId,\n releasedAt: {\n $null: true,\n },\n },\n },\n });\n\n if (!action) {\n throw new errors.NotFoundError(\n `Action with id ${actionId} not found in release with id ${releaseId} or it is already published`\n );\n }\n\n const actionStatus =\n update.type === 'publish'\n ? await getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n {\n strapi,\n }\n )\n : true;\n\n const updatedAction = await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: actionId,\n release: {\n id: releaseId,\n releasedAt: {\n $null: true,\n },\n },\n },\n data: {\n ...update,\n isEntryValid: actionStatus,\n },\n });\n\n getService('release', { strapi }).updateReleaseStatus(releaseId);\n\n return updatedAction;\n },\n\n async delete(\n actionId: DeleteReleaseAction.Request['params']['actionId'],\n releaseId: DeleteReleaseAction.Request['params']['releaseId']\n ) {\n const deletedAction = await strapi.db.query(RELEASE_ACTION_MODEL_UID).delete({\n where: {\n id: actionId,\n release: {\n id: releaseId,\n releasedAt: {\n $null: true,\n },\n },\n },\n });\n\n if (!deletedAction) {\n throw new errors.NotFoundError(\n `Action with id ${actionId} not found in release with id ${releaseId} or it is already published`\n );\n }\n\n getService('release', { strapi }).updateReleaseStatus(releaseId);\n\n return deletedAction;\n },\n\n async validateActionsByContentTypes(contentTypeUids: UID.ContentType[]) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: {\n $in: contentTypeUids,\n },\n // We only want to validate actions that are going to be published\n type: 'publish',\n release: {\n releasedAt: {\n $null: true,\n },\n },\n },\n populate: { release: true },\n });\n\n const releasesUpdated: Data.ID[] = [];\n\n await async.map(actions, async (action: ReleaseAction) => {\n const isValid = await getDraftEntryValidStatus(\n {\n contentType: action.contentType,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid: isValid,\n },\n });\n\n if (!releasesUpdated.includes(action.release.id)) {\n releasesUpdated.push(action.release.id);\n }\n\n return {\n id: action.id,\n isEntryValid: isValid,\n };\n });\n\n if (releasesUpdated.length > 0) {\n await async.map(releasesUpdated, async (releaseId: number) => {\n await getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n }\n },\n };\n};\n\nexport type ReleaseActionService = ReturnType<typeof createReleaseActionService>;\n\nexport default createReleaseActionService;\n"],"names":["getGroupName","queryValue","_","getOr","createReleaseActionService","strapi","getLocalesDataForActions","plugin","allLocales","service","find","reduce","acc","locale","code","name","getContentTypesDataForActions","contentTypesUids","contentManagerContentTypeService","contentTypesData","contentTypeUid","contentTypeConfig","findConfiguration","uid","mainField","settings","displayName","getModel","info","create","releaseId","action","disableUpdateReleaseStatus","validateEntryData","validateUniqueEntry","getService","Promise","all","contentType","entryDocumentId","model","kind","document","db","query","findOne","select","errors","NotFoundError","documentId","release","RELEASE_MODEL_UID","where","id","releasedAt","ValidationError","actionStatus","type","getDraftEntryValidStatus","releaseAction","RELEASE_ACTION_MODEL_UID","data","isEntryValid","populate","updateReleaseStatus","findPage","dbQuery","get","transform","results","actions","pagination","populateBuilderService","actionsWithEntry","async","map","populateDeep","Infinity","build","entry","getEntry","status","getEntryStatus","groupActions","groupBy","contentTypeUids","includes","push","allReleaseContentTypesDictionary","allLocalesDictionary","formattedData","mainFieldValue","groupName","getContentTypeModelsFromActions","workflowsService","contentTypeModelsMap","accPromise","contentTypeModel","workflow","getAssignedWorkflow","hasReviewWorkflow","stageRequiredToPublish","countActions","count","update","actionId","$null","updatedAction","delete","deletedAction","validateActionsByContentTypes","findMany","$in","releasesUpdated","isValid","length"],"mappings":"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"}