@strapi/content-releases 0.0.0-next.f8af92b375dc730ba47ed2117f25df893aae696c → 0.0.0-next.fb92031f3d90f3d2a2d191ba65725b6c8e329a5d

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 (351) hide show
  1. package/LICENSE +17 -1
  2. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  5. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  6. package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
  9. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  10. package/dist/admin/components/EntryValidationPopover.js +344 -0
  11. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  12. package/dist/admin/components/EntryValidationPopover.mjs +342 -0
  13. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  14. package/dist/admin/components/RelativeTime.js +76 -0
  15. package/dist/admin/components/RelativeTime.js.map +1 -0
  16. package/dist/admin/components/RelativeTime.mjs +55 -0
  17. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  18. package/dist/admin/components/ReleaseAction.js +201 -0
  19. package/dist/admin/components/ReleaseAction.js.map +1 -0
  20. package/dist/admin/components/ReleaseAction.mjs +199 -0
  21. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  22. package/dist/admin/components/ReleaseActionMenu.js +243 -0
  23. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  24. package/dist/admin/components/ReleaseActionMenu.mjs +222 -0
  25. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  26. package/dist/admin/components/ReleaseActionModal.js +268 -0
  27. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  28. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  29. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  30. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  31. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  32. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  33. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  34. package/dist/admin/components/ReleaseListCell.js +103 -0
  35. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  36. package/dist/admin/components/ReleaseListCell.mjs +100 -0
  37. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  38. package/dist/admin/components/ReleaseModal.js +323 -0
  39. package/dist/admin/components/ReleaseModal.js.map +1 -0
  40. package/dist/admin/components/ReleaseModal.mjs +302 -0
  41. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  42. package/dist/admin/components/ReleasesPanel.js +138 -0
  43. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  44. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  45. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  46. package/dist/admin/constants.js +77 -0
  47. package/dist/admin/constants.js.map +1 -0
  48. package/dist/admin/constants.mjs +75 -0
  49. package/dist/admin/constants.mjs.map +1 -0
  50. package/dist/admin/index.js +125 -18
  51. package/dist/admin/index.js.map +1 -1
  52. package/dist/admin/index.mjs +120 -18
  53. package/dist/admin/index.mjs.map +1 -1
  54. package/dist/admin/modules/hooks.js +8 -0
  55. package/dist/admin/modules/hooks.js.map +1 -0
  56. package/dist/admin/modules/hooks.mjs +6 -0
  57. package/dist/admin/modules/hooks.mjs.map +1 -0
  58. package/dist/admin/pages/App.js +29 -0
  59. package/dist/admin/pages/App.js.map +1 -0
  60. package/dist/admin/pages/App.mjs +27 -0
  61. package/dist/admin/pages/App.mjs.map +1 -0
  62. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  63. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  64. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  65. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  66. package/dist/admin/pages/ReleaseDetailsPage.js +821 -0
  67. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  68. package/dist/admin/pages/ReleaseDetailsPage.mjs +800 -0
  69. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  70. package/dist/admin/pages/ReleasesPage.js +397 -0
  71. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  72. package/dist/admin/pages/ReleasesPage.mjs +375 -0
  73. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  74. package/dist/admin/pages/ReleasesSettingsPage.js +199 -0
  75. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  76. package/dist/admin/pages/ReleasesSettingsPage.mjs +197 -0
  77. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  78. package/dist/admin/pluginId.js +6 -0
  79. package/dist/admin/pluginId.js.map +1 -0
  80. package/dist/admin/pluginId.mjs +4 -0
  81. package/dist/admin/pluginId.mjs.map +1 -0
  82. package/dist/admin/services/release.js +464 -0
  83. package/dist/admin/services/release.js.map +1 -0
  84. package/dist/admin/services/release.mjs +447 -0
  85. package/dist/admin/services/release.mjs.map +1 -0
  86. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  87. package/dist/admin/src/components/RelativeTime.d.ts +28 -0
  88. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  89. package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
  90. package/dist/admin/src/components/ReleaseActionModal.d.ts +24 -0
  91. package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
  92. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  93. package/dist/admin/src/components/ReleaseModal.d.ts +17 -0
  94. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  95. package/dist/admin/src/constants.d.ts +76 -0
  96. package/dist/admin/src/index.d.ts +3 -0
  97. package/dist/admin/src/modules/hooks.d.ts +7 -0
  98. package/dist/admin/src/pages/App.d.ts +1 -0
  99. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
  100. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
  101. package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
  102. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  103. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
  104. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
  105. package/dist/admin/src/pluginId.d.ts +1 -0
  106. package/dist/admin/src/services/release.d.ts +112 -0
  107. package/dist/admin/src/store/hooks.d.ts +7 -0
  108. package/dist/admin/src/utils/api.d.ts +6 -0
  109. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  110. package/dist/admin/src/utils/time.d.ts +10 -0
  111. package/dist/admin/src/validation/schemas.d.ts +6 -0
  112. package/dist/admin/store/hooks.js +8 -0
  113. package/dist/admin/store/hooks.js.map +1 -0
  114. package/dist/admin/store/hooks.mjs +6 -0
  115. package/dist/admin/store/hooks.mjs.map +1 -0
  116. package/dist/admin/translations/en.json.js +108 -0
  117. package/dist/admin/translations/en.json.js.map +1 -0
  118. package/dist/admin/translations/en.json.mjs +106 -0
  119. package/dist/admin/translations/en.json.mjs.map +1 -0
  120. package/dist/admin/translations/uk.json.js +103 -0
  121. package/dist/admin/translations/uk.json.js.map +1 -0
  122. package/dist/admin/translations/uk.json.mjs +101 -0
  123. package/dist/admin/translations/uk.json.mjs.map +1 -0
  124. package/dist/admin/utils/api.js +8 -0
  125. package/dist/admin/utils/api.js.map +1 -0
  126. package/dist/admin/utils/api.mjs +6 -0
  127. package/dist/admin/utils/api.mjs.map +1 -0
  128. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  129. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  130. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  131. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  132. package/dist/admin/utils/time.js +42 -0
  133. package/dist/admin/utils/time.js.map +1 -0
  134. package/dist/admin/utils/time.mjs +39 -0
  135. package/dist/admin/utils/time.mjs.map +1 -0
  136. package/dist/admin/validation/schemas.js +65 -0
  137. package/dist/admin/validation/schemas.js.map +1 -0
  138. package/dist/admin/validation/schemas.mjs +43 -0
  139. package/dist/admin/validation/schemas.mjs.map +1 -0
  140. package/dist/server/bootstrap.js +68 -0
  141. package/dist/server/bootstrap.js.map +1 -0
  142. package/dist/server/bootstrap.mjs +66 -0
  143. package/dist/server/bootstrap.mjs.map +1 -0
  144. package/dist/server/constants.js +74 -0
  145. package/dist/server/constants.js.map +1 -0
  146. package/dist/server/constants.mjs +69 -0
  147. package/dist/server/constants.mjs.map +1 -0
  148. package/dist/server/content-types/index.js +12 -0
  149. package/dist/server/content-types/index.js.map +1 -0
  150. package/dist/server/content-types/index.mjs +10 -0
  151. package/dist/server/content-types/index.mjs.map +1 -0
  152. package/dist/server/content-types/release/index.js +10 -0
  153. package/dist/server/content-types/release/index.js.map +1 -0
  154. package/dist/server/content-types/release/index.mjs +8 -0
  155. package/dist/server/content-types/release/index.mjs.map +1 -0
  156. package/dist/server/content-types/release/schema.js +58 -0
  157. package/dist/server/content-types/release/schema.js.map +1 -0
  158. package/dist/server/content-types/release/schema.mjs +56 -0
  159. package/dist/server/content-types/release/schema.mjs.map +1 -0
  160. package/dist/server/content-types/release-action/index.js +10 -0
  161. package/dist/server/content-types/release-action/index.js.map +1 -0
  162. package/dist/server/content-types/release-action/index.mjs +8 -0
  163. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  164. package/dist/server/content-types/release-action/schema.js +55 -0
  165. package/dist/server/content-types/release-action/schema.js.map +1 -0
  166. package/dist/server/content-types/release-action/schema.mjs +53 -0
  167. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  168. package/dist/server/controllers/index.js +14 -0
  169. package/dist/server/controllers/index.js.map +1 -0
  170. package/dist/server/controllers/index.mjs +12 -0
  171. package/dist/server/controllers/index.mjs.map +1 -0
  172. package/dist/server/controllers/release-action.js +150 -0
  173. package/dist/server/controllers/release-action.js.map +1 -0
  174. package/dist/server/controllers/release-action.mjs +148 -0
  175. package/dist/server/controllers/release-action.mjs.map +1 -0
  176. package/dist/server/controllers/release.js +302 -0
  177. package/dist/server/controllers/release.js.map +1 -0
  178. package/dist/server/controllers/release.mjs +300 -0
  179. package/dist/server/controllers/release.mjs.map +1 -0
  180. package/dist/server/controllers/settings.js +37 -0
  181. package/dist/server/controllers/settings.js.map +1 -0
  182. package/dist/server/controllers/settings.mjs +35 -0
  183. package/dist/server/controllers/settings.mjs.map +1 -0
  184. package/dist/server/controllers/validation/release-action.js +34 -0
  185. package/dist/server/controllers/validation/release-action.js.map +1 -0
  186. package/dist/server/controllers/validation/release-action.mjs +30 -0
  187. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  188. package/dist/server/controllers/validation/release.js +26 -0
  189. package/dist/server/controllers/validation/release.js.map +1 -0
  190. package/dist/server/controllers/validation/release.mjs +22 -0
  191. package/dist/server/controllers/validation/release.mjs.map +1 -0
  192. package/dist/server/controllers/validation/settings.js +32 -0
  193. package/dist/server/controllers/validation/settings.js.map +1 -0
  194. package/dist/server/controllers/validation/settings.mjs +10 -0
  195. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  196. package/dist/server/destroy.js +15 -0
  197. package/dist/server/destroy.js.map +1 -0
  198. package/dist/server/destroy.mjs +13 -0
  199. package/dist/server/destroy.mjs.map +1 -0
  200. package/dist/server/index.js +25 -1331
  201. package/dist/server/index.js.map +1 -1
  202. package/dist/server/index.mjs +24 -1311
  203. package/dist/server/index.mjs.map +1 -1
  204. package/dist/server/middlewares/documents.js +104 -0
  205. package/dist/server/middlewares/documents.js.map +1 -0
  206. package/dist/server/middlewares/documents.mjs +101 -0
  207. package/dist/server/middlewares/documents.mjs.map +1 -0
  208. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  209. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  210. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  211. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  212. package/dist/server/migrations/index.js +205 -0
  213. package/dist/server/migrations/index.js.map +1 -0
  214. package/dist/server/migrations/index.mjs +198 -0
  215. package/dist/server/migrations/index.mjs.map +1 -0
  216. package/dist/server/register.js +23 -0
  217. package/dist/server/register.js.map +1 -0
  218. package/dist/server/register.mjs +21 -0
  219. package/dist/server/register.mjs.map +1 -0
  220. package/dist/server/routes/index.js +14 -0
  221. package/dist/server/routes/index.js.map +1 -0
  222. package/dist/server/routes/index.mjs +12 -0
  223. package/dist/server/routes/index.mjs.map +1 -0
  224. package/dist/server/routes/release-action.js +100 -0
  225. package/dist/server/routes/release-action.js.map +1 -0
  226. package/dist/server/routes/release-action.mjs +98 -0
  227. package/dist/server/routes/release-action.mjs.map +1 -0
  228. package/dist/server/routes/release.js +154 -0
  229. package/dist/server/routes/release.js.map +1 -0
  230. package/dist/server/routes/release.mjs +152 -0
  231. package/dist/server/routes/release.mjs.map +1 -0
  232. package/dist/server/routes/settings.js +46 -0
  233. package/dist/server/routes/settings.js.map +1 -0
  234. package/dist/server/routes/settings.mjs +44 -0
  235. package/dist/server/routes/settings.mjs.map +1 -0
  236. package/dist/server/services/index.js +18 -0
  237. package/dist/server/services/index.js.map +1 -0
  238. package/dist/server/services/index.mjs +16 -0
  239. package/dist/server/services/index.mjs.map +1 -0
  240. package/dist/server/services/release-action.js +323 -0
  241. package/dist/server/services/release-action.js.map +1 -0
  242. package/dist/server/services/release-action.mjs +321 -0
  243. package/dist/server/services/release-action.mjs.map +1 -0
  244. package/dist/server/services/release.js +324 -0
  245. package/dist/server/services/release.js.map +1 -0
  246. package/dist/server/services/release.mjs +322 -0
  247. package/dist/server/services/release.mjs.map +1 -0
  248. package/dist/server/services/scheduling.js +70 -0
  249. package/dist/server/services/scheduling.js.map +1 -0
  250. package/dist/server/services/scheduling.mjs +68 -0
  251. package/dist/server/services/scheduling.mjs.map +1 -0
  252. package/dist/server/services/settings.js +34 -0
  253. package/dist/server/services/settings.js.map +1 -0
  254. package/dist/server/services/settings.mjs +32 -0
  255. package/dist/server/services/settings.mjs.map +1 -0
  256. package/dist/server/services/validation.js +91 -0
  257. package/dist/server/services/validation.js.map +1 -0
  258. package/dist/server/services/validation.mjs +86 -0
  259. package/dist/server/services/validation.mjs.map +1 -0
  260. package/dist/server/src/bootstrap.d.ts +5 -0
  261. package/dist/server/src/bootstrap.d.ts.map +1 -0
  262. package/dist/server/src/constants.d.ts +21 -0
  263. package/dist/server/src/constants.d.ts.map +1 -0
  264. package/dist/server/src/content-types/index.d.ts +97 -0
  265. package/dist/server/src/content-types/index.d.ts.map +1 -0
  266. package/dist/server/src/content-types/release/index.d.ts +48 -0
  267. package/dist/server/src/content-types/release/index.d.ts.map +1 -0
  268. package/dist/server/src/content-types/release/schema.d.ts +47 -0
  269. package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
  270. package/dist/server/src/content-types/release-action/index.d.ts +48 -0
  271. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
  272. package/dist/server/src/content-types/release-action/schema.d.ts +47 -0
  273. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
  274. package/dist/server/src/controllers/index.d.ts +25 -0
  275. package/dist/server/src/controllers/index.d.ts.map +1 -0
  276. package/dist/server/src/controllers/release-action.d.ts +10 -0
  277. package/dist/server/src/controllers/release-action.d.ts.map +1 -0
  278. package/dist/server/src/controllers/release.d.ts +18 -0
  279. package/dist/server/src/controllers/release.d.ts.map +1 -0
  280. package/dist/server/src/controllers/settings.d.ts +11 -0
  281. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  282. package/dist/server/src/controllers/validation/release-action.d.ts +14 -0
  283. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
  284. package/dist/server/src/controllers/validation/release.d.ts +4 -0
  285. package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
  286. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  287. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  288. package/dist/server/src/destroy.d.ts +5 -0
  289. package/dist/server/src/destroy.d.ts.map +1 -0
  290. package/dist/server/src/index.d.ts +2111 -0
  291. package/dist/server/src/index.d.ts.map +1 -0
  292. package/dist/server/src/middlewares/documents.d.ts +6 -0
  293. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  294. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  295. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  296. package/dist/server/src/migrations/index.d.ts +13 -0
  297. package/dist/server/src/migrations/index.d.ts.map +1 -0
  298. package/dist/server/src/register.d.ts +5 -0
  299. package/dist/server/src/register.d.ts.map +1 -0
  300. package/dist/server/src/routes/index.d.ts +51 -0
  301. package/dist/server/src/routes/index.d.ts.map +1 -0
  302. package/dist/server/src/routes/release-action.d.ts +18 -0
  303. package/dist/server/src/routes/release-action.d.ts.map +1 -0
  304. package/dist/server/src/routes/release.d.ts +18 -0
  305. package/dist/server/src/routes/release.d.ts.map +1 -0
  306. package/dist/server/src/routes/settings.d.ts +18 -0
  307. package/dist/server/src/routes/settings.d.ts.map +1 -0
  308. package/dist/server/src/services/index.d.ts +1824 -0
  309. package/dist/server/src/services/index.d.ts.map +1 -0
  310. package/dist/server/src/services/release-action.d.ts +34 -0
  311. package/dist/server/src/services/release-action.d.ts.map +1 -0
  312. package/dist/server/src/services/release.d.ts +31 -0
  313. package/dist/server/src/services/release.d.ts.map +1 -0
  314. package/dist/server/src/services/scheduling.d.ts +18 -0
  315. package/dist/server/src/services/scheduling.d.ts.map +1 -0
  316. package/dist/server/src/services/settings.d.ts +13 -0
  317. package/dist/server/src/services/settings.d.ts.map +1 -0
  318. package/dist/server/src/services/validation.d.ts +18 -0
  319. package/dist/server/src/services/validation.d.ts.map +1 -0
  320. package/dist/server/src/utils/index.d.ts +35 -0
  321. package/dist/server/src/utils/index.d.ts.map +1 -0
  322. package/dist/server/utils/index.js +93 -0
  323. package/dist/server/utils/index.js.map +1 -0
  324. package/dist/server/utils/index.mjs +87 -0
  325. package/dist/server/utils/index.mjs.map +1 -0
  326. package/dist/shared/contracts/release-actions.d.ts +136 -0
  327. package/dist/shared/contracts/release-actions.d.ts.map +1 -0
  328. package/dist/shared/contracts/releases.d.ts +183 -0
  329. package/dist/shared/contracts/releases.d.ts.map +1 -0
  330. package/dist/shared/contracts/settings.d.ts +38 -0
  331. package/dist/shared/contracts/settings.d.ts.map +1 -0
  332. package/dist/shared/types.d.ts +23 -0
  333. package/dist/shared/types.d.ts.map +1 -0
  334. package/package.json +40 -42
  335. package/dist/_chunks/App-OK4Xac-O.js +0 -1315
  336. package/dist/_chunks/App-OK4Xac-O.js.map +0 -1
  337. package/dist/_chunks/App-xAkiD42p.mjs +0 -1292
  338. package/dist/_chunks/App-xAkiD42p.mjs.map +0 -1
  339. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs +0 -51
  340. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
  341. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js +0 -51
  342. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
  343. package/dist/_chunks/en-r0otWaln.js +0 -77
  344. package/dist/_chunks/en-r0otWaln.js.map +0 -1
  345. package/dist/_chunks/en-veqvqeEr.mjs +0 -77
  346. package/dist/_chunks/en-veqvqeEr.mjs.map +0 -1
  347. package/dist/_chunks/index-JvA2_26n.js +0 -1015
  348. package/dist/_chunks/index-JvA2_26n.js.map +0 -1
  349. package/dist/_chunks/index-exoiSU3V.mjs +0 -994
  350. package/dist/_chunks/index-exoiSU3V.mjs.map +0 -1
  351. package/strapi-server.js +0 -3
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@strapi/utils');
4
+ var isEqual = require('lodash/isEqual');
5
+ var lodash = require('lodash');
6
+ var constants = require('../constants.js');
7
+ var index = require('../utils/index.js');
8
+
9
+ async function deleteActionsOnDisableDraftAndPublish({ oldContentTypes, contentTypes }) {
10
+ if (!oldContentTypes) {
11
+ return;
12
+ }
13
+ for(const uid in contentTypes){
14
+ if (!oldContentTypes[uid]) {
15
+ continue;
16
+ }
17
+ const oldContentType = oldContentTypes[uid];
18
+ const contentType = contentTypes[uid];
19
+ if (utils.contentTypes.hasDraftAndPublish(oldContentType) && !utils.contentTypes.hasDraftAndPublish(contentType)) {
20
+ await strapi.db?.queryBuilder(constants.RELEASE_ACTION_MODEL_UID).delete().where({
21
+ contentType: uid
22
+ }).execute();
23
+ }
24
+ }
25
+ }
26
+ async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }) {
27
+ const deletedContentTypes = lodash.difference(lodash.keys(oldContentTypes), lodash.keys(contentTypes)) ?? [];
28
+ if (deletedContentTypes.length) {
29
+ await utils.async.map(deletedContentTypes, async (deletedContentTypeUID)=>{
30
+ return strapi.db?.queryBuilder(constants.RELEASE_ACTION_MODEL_UID).delete().where({
31
+ contentType: deletedContentTypeUID
32
+ }).execute();
33
+ });
34
+ }
35
+ }
36
+ async function migrateIsValidAndStatusReleases() {
37
+ const releasesWithoutStatus = await strapi.db.query(constants.RELEASE_MODEL_UID).findMany({
38
+ where: {
39
+ status: null,
40
+ releasedAt: null
41
+ },
42
+ populate: {
43
+ actions: {
44
+ populate: {
45
+ entry: true
46
+ }
47
+ }
48
+ }
49
+ });
50
+ utils.async.map(releasesWithoutStatus, async (release)=>{
51
+ const actions = release.actions;
52
+ const notValidatedActions = actions.filter((action)=>action.isEntryValid === null);
53
+ for (const action of notValidatedActions){
54
+ // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case
55
+ // example: users could make changes directly to their database, or data could be lost
56
+ if (action.entry) {
57
+ const isEntryValid = index.getDraftEntryValidStatus({
58
+ contentType: action.contentType,
59
+ documentId: action.entryDocumentId,
60
+ locale: action.locale
61
+ }, {
62
+ strapi
63
+ });
64
+ await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).update({
65
+ where: {
66
+ id: action.id
67
+ },
68
+ data: {
69
+ isEntryValid
70
+ }
71
+ });
72
+ }
73
+ }
74
+ return index.getService('release', {
75
+ strapi
76
+ }).updateReleaseStatus(release.id);
77
+ });
78
+ const publishedReleases = await strapi.db.query(constants.RELEASE_MODEL_UID).findMany({
79
+ where: {
80
+ status: null,
81
+ releasedAt: {
82
+ $notNull: true
83
+ }
84
+ }
85
+ });
86
+ utils.async.map(publishedReleases, async (release)=>{
87
+ return strapi.db.query(constants.RELEASE_MODEL_UID).update({
88
+ where: {
89
+ id: release.id
90
+ },
91
+ data: {
92
+ status: 'done'
93
+ }
94
+ });
95
+ });
96
+ }
97
+ async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }) {
98
+ if (oldContentTypes !== undefined && contentTypes !== undefined) {
99
+ const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter((uid)=>oldContentTypes[uid]?.options?.draftAndPublish);
100
+ const releasesAffected = new Set();
101
+ utils.async.map(contentTypesWithDraftAndPublish, async (contentTypeUID)=>{
102
+ const oldContentType = oldContentTypes[contentTypeUID];
103
+ const contentType = contentTypes[contentTypeUID];
104
+ // If attributes have changed, we need to revalidate actions because maybe validations rules are different
105
+ if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {
106
+ const actions = await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).findMany({
107
+ where: {
108
+ contentType: contentTypeUID
109
+ },
110
+ populate: {
111
+ entry: true,
112
+ release: true
113
+ }
114
+ });
115
+ await utils.async.map(actions, async (action)=>{
116
+ if (action.entry && action.release && action.type === 'publish') {
117
+ const isEntryValid = await index.getDraftEntryValidStatus({
118
+ contentType: contentTypeUID,
119
+ documentId: action.entryDocumentId,
120
+ locale: action.locale
121
+ }, {
122
+ strapi
123
+ });
124
+ releasesAffected.add(action.release.id);
125
+ await strapi.db.query(constants.RELEASE_ACTION_MODEL_UID).update({
126
+ where: {
127
+ id: action.id
128
+ },
129
+ data: {
130
+ isEntryValid
131
+ }
132
+ });
133
+ }
134
+ });
135
+ }
136
+ }).then(()=>{
137
+ // We need to update the status of the releases affected
138
+ utils.async.map(releasesAffected, async (releaseId)=>{
139
+ return index.getService('release', {
140
+ strapi
141
+ }).updateReleaseStatus(releaseId);
142
+ });
143
+ });
144
+ }
145
+ }
146
+ async function disableContentTypeLocalized({ oldContentTypes, contentTypes }) {
147
+ if (!oldContentTypes) {
148
+ return;
149
+ }
150
+ const i18nPlugin = strapi.plugin('i18n');
151
+ if (!i18nPlugin) {
152
+ return;
153
+ }
154
+ for(const uid in contentTypes){
155
+ if (!oldContentTypes[uid]) {
156
+ continue;
157
+ }
158
+ const oldContentType = oldContentTypes[uid];
159
+ const contentType = contentTypes[uid];
160
+ const { isLocalizedContentType } = i18nPlugin.service('content-types');
161
+ // if i18N is disabled remove non default locales before sync
162
+ if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {
163
+ await strapi.db.queryBuilder(constants.RELEASE_ACTION_MODEL_UID).update({
164
+ locale: null
165
+ }).where({
166
+ contentType: uid
167
+ }).execute();
168
+ }
169
+ }
170
+ }
171
+ async function enableContentTypeLocalized({ oldContentTypes, contentTypes }) {
172
+ if (!oldContentTypes) {
173
+ return;
174
+ }
175
+ const i18nPlugin = strapi.plugin('i18n');
176
+ if (!i18nPlugin) {
177
+ return;
178
+ }
179
+ for(const uid in contentTypes){
180
+ if (!oldContentTypes[uid]) {
181
+ continue;
182
+ }
183
+ const oldContentType = oldContentTypes[uid];
184
+ const contentType = contentTypes[uid];
185
+ const { isLocalizedContentType } = i18nPlugin.service('content-types');
186
+ const { getDefaultLocale } = i18nPlugin.service('locales');
187
+ // if i18N is enabled remove non default locales before sync
188
+ if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {
189
+ const defaultLocale = await getDefaultLocale();
190
+ await strapi.db.queryBuilder(constants.RELEASE_ACTION_MODEL_UID).update({
191
+ locale: defaultLocale
192
+ }).where({
193
+ contentType: uid
194
+ }).execute();
195
+ }
196
+ }
197
+ }
198
+
199
+ exports.deleteActionsOnDeleteContentType = deleteActionsOnDeleteContentType;
200
+ exports.deleteActionsOnDisableDraftAndPublish = deleteActionsOnDisableDraftAndPublish;
201
+ exports.disableContentTypeLocalized = disableContentTypeLocalized;
202
+ exports.enableContentTypeLocalized = enableContentTypeLocalized;
203
+ exports.migrateIsValidAndStatusReleases = migrateIsValidAndStatusReleases;
204
+ exports.revalidateChangedContentTypes = revalidateChangedContentTypes;
205
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = 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,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":";;;;;;;;AAeO,eAAeA,qCAAsC,CAAA,EAC1DC,eAAe,EACfC,YAAY,EACN,EAAA;AACN,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,IAAK,MAAME,OAAOD,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACE,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBH,eAAe,CAACE,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcH,YAAY,CAACC,GAAI,CAAA;QAErC,IACEG,kBAAAA,CAAkBC,kBAAkB,CAACH,cAAAA,CAAAA,IACrC,CAACE,kBAAkBC,CAAAA,kBAAkB,CAACF,WACtC,CAAA,EAAA;AACA,YAAA,MAAMG,OAAOC,EAAE,EACXC,YAAaC,CAAAA,kCAAAA,CAAAA,CACdC,SACAC,KAAM,CAAA;gBAAER,WAAaF,EAAAA;aACrBW,CAAAA,CAAAA,OAAAA,EAAAA;AACL;AACF;AACF;AAEO,eAAeC,gCAAiC,CAAA,EAAEd,eAAe,EAAEC,YAAY,EAAS,EAAA;AAC7F,IAAA,MAAMc,sBAAsBC,iBAAWC,CAAAA,WAAAA,CAAKjB,eAAkBiB,CAAAA,EAAAA,WAAAA,CAAKhB,kBAAkB,EAAE;IAEvF,IAAIc,mBAAAA,CAAoBG,MAAM,EAAE;AAC9B,QAAA,MAAMC,WAAMC,CAAAA,GAAG,CAACL,mBAAAA,EAAqB,OAAOM,qBAAAA,GAAAA;AAC1C,YAAA,OAAOd,OAAOC,EAAE,EACZC,YAAaC,CAAAA,kCAAAA,CAAAA,CACdC,SACAC,KAAM,CAAA;gBAAER,WAAaiB,EAAAA;aACrBR,CAAAA,CAAAA,OAAAA,EAAAA;AACL,SAAA,CAAA;AACF;AACF;AAEO,eAAeS,+BAAAA,GAAAA;IACpB,MAAMC,qBAAAA,GAAyB,MAAMhB,MAAOC,CAAAA,EAAE,CAACgB,KAAK,CAACC,2BAAmBC,CAAAA,CAAAA,QAAQ,CAAC;QAC/Ed,KAAO,EAAA;YACLe,MAAQ,EAAA,IAAA;YACRC,UAAY,EAAA;AACd,SAAA;QACAC,QAAU,EAAA;YACRC,OAAS,EAAA;gBACPD,QAAU,EAAA;oBACRE,KAAO,EAAA;AACT;AACF;AACF;AACF,KAAA,CAAA;IAEAZ,WAAMC,CAAAA,GAAG,CAACG,qBAAAA,EAAuB,OAAOS,OAAAA,GAAAA;QACtC,MAAMF,OAAAA,GAAUE,QAAQF,OAAO;QAE/B,MAAMG,mBAAAA,GAAsBH,QAAQI,MAAM,CAAC,CAACC,MAAWA,GAAAA,MAAAA,CAAOC,YAAY,KAAK,IAAA,CAAA;QAE/E,KAAK,MAAMD,UAAUF,mBAAqB,CAAA;;;YAGxC,IAAIE,MAAAA,CAAOJ,KAAK,EAAE;AAChB,gBAAA,MAAMK,eAAeC,8BACnB,CAAA;AACEjC,oBAAAA,WAAAA,EAAa+B,OAAO/B,WAAW;AAC/BkC,oBAAAA,UAAAA,EAAYH,OAAOI,eAAe;AAClCC,oBAAAA,MAAAA,EAAQL,OAAOK;iBAEjB,EAAA;AAAEjC,oBAAAA;AAAO,iBAAA,CAAA;AAGX,gBAAA,MAAMA,OAAOC,EAAE,CAACgB,KAAK,CAACd,kCAAAA,CAAAA,CAA0B+B,MAAM,CAAC;oBACrD7B,KAAO,EAAA;AACL8B,wBAAAA,EAAAA,EAAIP,OAAOO;AACb,qBAAA;oBACAC,IAAM,EAAA;AACJP,wBAAAA;AACF;AACF,iBAAA,CAAA;AACF;AACF;AAEA,QAAA,OAAOQ,iBAAW,SAAW,EAAA;AAAErC,YAAAA;SAAUsC,CAAAA,CAAAA,mBAAmB,CAACb,OAAAA,CAAQU,EAAE,CAAA;AACzE,KAAA,CAAA;IAEA,MAAMI,iBAAAA,GAAoB,MAAMvC,MAAOC,CAAAA,EAAE,CAACgB,KAAK,CAACC,2BAAmBC,CAAAA,CAAAA,QAAQ,CAAC;QAC1Ed,KAAO,EAAA;YACLe,MAAQ,EAAA,IAAA;YACRC,UAAY,EAAA;gBACVmB,QAAU,EAAA;AACZ;AACF;AACF,KAAA,CAAA;IAEA5B,WAAMC,CAAAA,GAAG,CAAC0B,iBAAAA,EAAmB,OAAOd,OAAAA,GAAAA;AAClC,QAAA,OAAOzB,OAAOC,EAAE,CAACgB,KAAK,CAACC,2BAAAA,CAAAA,CAAmBgB,MAAM,CAAC;YAC/C7B,KAAO,EAAA;AACL8B,gBAAAA,EAAAA,EAAIV,QAAQU;AACd,aAAA;YACAC,IAAM,EAAA;gBACJhB,MAAQ,EAAA;AACV;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AACF;AAEO,eAAeqB,6BAA8B,CAAA,EAAEhD,eAAe,EAAEC,YAAY,EAAS,EAAA;IAC1F,IAAID,eAAAA,KAAoBiD,SAAahD,IAAAA,YAAAA,KAAiBgD,SAAW,EAAA;AAC/D,QAAA,MAAMC,+BAAkCC,GAAAA,MAAAA,CAAOlC,IAAI,CAACjB,eAAiBkC,CAAAA,CAAAA,MAAM,CACzE,CAAChC,GAAQF,GAAAA,eAAe,CAACE,GAAAA,CAAI,EAAEkD,OAASC,EAAAA,eAAAA,CAAAA;AAE1C,QAAA,MAAMC,mBAAmB,IAAIC,GAAAA,EAAAA;QAE7BpC,WACGC,CAAAA,GAAG,CAAC8B,+BAAAA,EAAiC,OAAOM,cAAAA,GAAAA;YAC3C,MAAMrD,cAAAA,GAAiBH,eAAe,CAACwD,cAAe,CAAA;YACtD,MAAMpD,WAAAA,GAAcH,YAAY,CAACuD,cAAe,CAAA;;AAGhD,YAAA,IAAI,CAACC,OAAAA,CAAQtD,cAAgBuD,EAAAA,UAAAA,EAAYtD,aAAasD,UAAa,CAAA,EAAA;gBACjE,MAAM5B,OAAAA,GAAU,MAAMvB,MAAOC,CAAAA,EAAE,CAACgB,KAAK,CAACd,kCAA0BgB,CAAAA,CAAAA,QAAQ,CAAC;oBACvEd,KAAO,EAAA;wBACLR,WAAaoD,EAAAA;AACf,qBAAA;oBACA3B,QAAU,EAAA;wBACRE,KAAO,EAAA,IAAA;wBACPC,OAAS,EAAA;AACX;AACF,iBAAA,CAAA;AAEA,gBAAA,MAAMb,WAAMC,CAAAA,GAAG,CAACU,OAAAA,EAAS,OAAOK,MAAAA,GAAAA;oBAC9B,IAAIA,MAAAA,CAAOJ,KAAK,IAAII,MAAAA,CAAOH,OAAO,IAAIG,MAAAA,CAAOwB,IAAI,KAAK,SAAW,EAAA;wBAC/D,MAAMvB,YAAAA,GAAe,MAAMC,8BACzB,CAAA;4BACEjC,WAAaoD,EAAAA,cAAAA;AACblB,4BAAAA,UAAAA,EAAYH,OAAOI,eAAe;AAClCC,4BAAAA,MAAAA,EAAQL,OAAOK;yBAEjB,EAAA;AAAEjC,4BAAAA;AAAO,yBAAA,CAAA;AAGX+C,wBAAAA,gBAAAA,CAAiBM,GAAG,CAACzB,MAAOH,CAAAA,OAAO,CAACU,EAAE,CAAA;AAEtC,wBAAA,MAAMnC,OAAOC,EAAE,CAACgB,KAAK,CAACd,kCAAAA,CAAAA,CAA0B+B,MAAM,CAAC;4BACrD7B,KAAO,EAAA;AACL8B,gCAAAA,EAAAA,EAAIP,OAAOO;AACb,6BAAA;4BACAC,IAAM,EAAA;AACJP,gCAAAA;AACF;AACF,yBAAA,CAAA;AACF;AACF,iBAAA,CAAA;AACF;AACF,SAAA,CAAA,CACCyB,IAAI,CAAC,IAAA;;YAEJ1C,WAAMC,CAAAA,GAAG,CAACkC,gBAAAA,EAAkB,OAAOQ,SAAAA,GAAAA;AACjC,gBAAA,OAAOlB,iBAAW,SAAW,EAAA;AAAErC,oBAAAA;AAAO,iBAAA,CAAA,CAAGsC,mBAAmB,CAACiB,SAAAA,CAAAA;AAC/D,aAAA,CAAA;AACF,SAAA,CAAA;AACJ;AACF;AAEO,eAAeC,2BAA4B,CAAA,EAAE/D,eAAe,EAAEC,YAAY,EAAS,EAAA;AACxF,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,MAAMgE,UAAAA,GAAazD,MAAO0D,CAAAA,MAAM,CAAC,MAAA,CAAA;AACjC,IAAA,IAAI,CAACD,UAAY,EAAA;AACf,QAAA;AACF;IAEA,IAAK,MAAM9D,OAAOD,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACE,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBH,eAAe,CAACE,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcH,YAAY,CAACC,GAAI,CAAA;AAErC,QAAA,MAAM,EAAEgE,sBAAsB,EAAE,GAAGF,UAAAA,CAAWG,OAAO,CAAC,eAAA,CAAA;;AAGtD,QAAA,IAAID,sBAAuB/D,CAAAA,cAAAA,CAAAA,IAAmB,CAAC+D,sBAAAA,CAAuB9D,WAAc,CAAA,EAAA;AAClF,YAAA,MAAMG,OAAOC,EAAE,CACZC,YAAY,CAACC,kCAAAA,CAAAA,CACb+B,MAAM,CAAC;gBACND,MAAQ,EAAA;AACV,aAAA,CAAA,CACC5B,KAAK,CAAC;gBAAER,WAAaF,EAAAA;AAAI,aAAA,CAAA,CACzBW,OAAO,EAAA;AACZ;AACF;AACF;AAEO,eAAeuD,0BAA2B,CAAA,EAAEpE,eAAe,EAAEC,YAAY,EAAS,EAAA;AACvF,IAAA,IAAI,CAACD,eAAiB,EAAA;AACpB,QAAA;AACF;IAEA,MAAMgE,UAAAA,GAAazD,MAAO0D,CAAAA,MAAM,CAAC,MAAA,CAAA;AACjC,IAAA,IAAI,CAACD,UAAY,EAAA;AACf,QAAA;AACF;IAEA,IAAK,MAAM9D,OAAOD,YAAc,CAAA;AAC9B,QAAA,IAAI,CAACD,eAAe,CAACE,GAAAA,CAAI,EAAE;AACzB,YAAA;AACF;QAEA,MAAMC,cAAAA,GAAiBH,eAAe,CAACE,GAAI,CAAA;QAC3C,MAAME,WAAAA,GAAcH,YAAY,CAACC,GAAI,CAAA;AAErC,QAAA,MAAM,EAAEgE,sBAAsB,EAAE,GAAGF,UAAAA,CAAWG,OAAO,CAAC,eAAA,CAAA;AACtD,QAAA,MAAM,EAAEE,gBAAgB,EAAE,GAAGL,UAAAA,CAAWG,OAAO,CAAC,SAAA,CAAA;;AAGhD,QAAA,IAAI,CAACD,sBAAAA,CAAuB/D,cAAmB+D,CAAAA,IAAAA,sBAAAA,CAAuB9D,WAAc,CAAA,EAAA;AAClF,YAAA,MAAMkE,gBAAgB,MAAMD,gBAAAA,EAAAA;AAE5B,YAAA,MAAM9D,OAAOC,EAAE,CACZC,YAAY,CAACC,kCAAAA,CAAAA,CACb+B,MAAM,CAAC;gBACND,MAAQ8B,EAAAA;AACV,aAAA,CAAA,CACC1D,KAAK,CAAC;gBAAER,WAAaF,EAAAA;AAAI,aAAA,CAAA,CACzBW,OAAO,EAAA;AACZ;AACF;AACF;;;;;;;;;"}
@@ -0,0 +1,198 @@
1
+ import { contentTypes, async } from '@strapi/utils';
2
+ import isEqual from 'lodash/isEqual';
3
+ import { difference, keys } from 'lodash';
4
+ import { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants.mjs';
5
+ import { getDraftEntryValidStatus, getService } from '../utils/index.mjs';
6
+
7
+ async function deleteActionsOnDisableDraftAndPublish({ oldContentTypes, contentTypes: contentTypes$1 }) {
8
+ if (!oldContentTypes) {
9
+ return;
10
+ }
11
+ for(const uid in contentTypes$1){
12
+ if (!oldContentTypes[uid]) {
13
+ continue;
14
+ }
15
+ const oldContentType = oldContentTypes[uid];
16
+ const contentType = contentTypes$1[uid];
17
+ if (contentTypes.hasDraftAndPublish(oldContentType) && !contentTypes.hasDraftAndPublish(contentType)) {
18
+ await strapi.db?.queryBuilder(RELEASE_ACTION_MODEL_UID).delete().where({
19
+ contentType: uid
20
+ }).execute();
21
+ }
22
+ }
23
+ }
24
+ async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }) {
25
+ const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];
26
+ if (deletedContentTypes.length) {
27
+ await async.map(deletedContentTypes, async (deletedContentTypeUID)=>{
28
+ return strapi.db?.queryBuilder(RELEASE_ACTION_MODEL_UID).delete().where({
29
+ contentType: deletedContentTypeUID
30
+ }).execute();
31
+ });
32
+ }
33
+ }
34
+ async function migrateIsValidAndStatusReleases() {
35
+ const releasesWithoutStatus = await strapi.db.query(RELEASE_MODEL_UID).findMany({
36
+ where: {
37
+ status: null,
38
+ releasedAt: null
39
+ },
40
+ populate: {
41
+ actions: {
42
+ populate: {
43
+ entry: true
44
+ }
45
+ }
46
+ }
47
+ });
48
+ async.map(releasesWithoutStatus, async (release)=>{
49
+ const actions = release.actions;
50
+ const notValidatedActions = actions.filter((action)=>action.isEntryValid === null);
51
+ for (const action of notValidatedActions){
52
+ // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case
53
+ // example: users could make changes directly to their database, or data could be lost
54
+ if (action.entry) {
55
+ const isEntryValid = getDraftEntryValidStatus({
56
+ contentType: action.contentType,
57
+ documentId: action.entryDocumentId,
58
+ locale: action.locale
59
+ }, {
60
+ strapi
61
+ });
62
+ await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({
63
+ where: {
64
+ id: action.id
65
+ },
66
+ data: {
67
+ isEntryValid
68
+ }
69
+ });
70
+ }
71
+ }
72
+ return getService('release', {
73
+ strapi
74
+ }).updateReleaseStatus(release.id);
75
+ });
76
+ const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({
77
+ where: {
78
+ status: null,
79
+ releasedAt: {
80
+ $notNull: true
81
+ }
82
+ }
83
+ });
84
+ async.map(publishedReleases, async (release)=>{
85
+ return strapi.db.query(RELEASE_MODEL_UID).update({
86
+ where: {
87
+ id: release.id
88
+ },
89
+ data: {
90
+ status: 'done'
91
+ }
92
+ });
93
+ });
94
+ }
95
+ async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }) {
96
+ if (oldContentTypes !== undefined && contentTypes !== undefined) {
97
+ const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter((uid)=>oldContentTypes[uid]?.options?.draftAndPublish);
98
+ const releasesAffected = new Set();
99
+ async.map(contentTypesWithDraftAndPublish, async (contentTypeUID)=>{
100
+ const oldContentType = oldContentTypes[contentTypeUID];
101
+ const contentType = contentTypes[contentTypeUID];
102
+ // If attributes have changed, we need to revalidate actions because maybe validations rules are different
103
+ if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {
104
+ const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({
105
+ where: {
106
+ contentType: contentTypeUID
107
+ },
108
+ populate: {
109
+ entry: true,
110
+ release: true
111
+ }
112
+ });
113
+ await async.map(actions, async (action)=>{
114
+ if (action.entry && action.release && action.type === 'publish') {
115
+ const isEntryValid = await getDraftEntryValidStatus({
116
+ contentType: contentTypeUID,
117
+ documentId: action.entryDocumentId,
118
+ locale: action.locale
119
+ }, {
120
+ strapi
121
+ });
122
+ releasesAffected.add(action.release.id);
123
+ await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({
124
+ where: {
125
+ id: action.id
126
+ },
127
+ data: {
128
+ isEntryValid
129
+ }
130
+ });
131
+ }
132
+ });
133
+ }
134
+ }).then(()=>{
135
+ // We need to update the status of the releases affected
136
+ async.map(releasesAffected, async (releaseId)=>{
137
+ return getService('release', {
138
+ strapi
139
+ }).updateReleaseStatus(releaseId);
140
+ });
141
+ });
142
+ }
143
+ }
144
+ async function disableContentTypeLocalized({ oldContentTypes, contentTypes }) {
145
+ if (!oldContentTypes) {
146
+ return;
147
+ }
148
+ const i18nPlugin = strapi.plugin('i18n');
149
+ if (!i18nPlugin) {
150
+ return;
151
+ }
152
+ for(const uid in contentTypes){
153
+ if (!oldContentTypes[uid]) {
154
+ continue;
155
+ }
156
+ const oldContentType = oldContentTypes[uid];
157
+ const contentType = contentTypes[uid];
158
+ const { isLocalizedContentType } = i18nPlugin.service('content-types');
159
+ // if i18N is disabled remove non default locales before sync
160
+ if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {
161
+ await strapi.db.queryBuilder(RELEASE_ACTION_MODEL_UID).update({
162
+ locale: null
163
+ }).where({
164
+ contentType: uid
165
+ }).execute();
166
+ }
167
+ }
168
+ }
169
+ async function enableContentTypeLocalized({ oldContentTypes, contentTypes }) {
170
+ if (!oldContentTypes) {
171
+ return;
172
+ }
173
+ const i18nPlugin = strapi.plugin('i18n');
174
+ if (!i18nPlugin) {
175
+ return;
176
+ }
177
+ for(const uid in contentTypes){
178
+ if (!oldContentTypes[uid]) {
179
+ continue;
180
+ }
181
+ const oldContentType = oldContentTypes[uid];
182
+ const contentType = contentTypes[uid];
183
+ const { isLocalizedContentType } = i18nPlugin.service('content-types');
184
+ const { getDefaultLocale } = i18nPlugin.service('locales');
185
+ // if i18N is enabled remove non default locales before sync
186
+ if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {
187
+ const defaultLocale = await getDefaultLocale();
188
+ await strapi.db.queryBuilder(RELEASE_ACTION_MODEL_UID).update({
189
+ locale: defaultLocale
190
+ }).where({
191
+ contentType: uid
192
+ }).execute();
193
+ }
194
+ }
195
+ }
196
+
197
+ export { deleteActionsOnDeleteContentType, deleteActionsOnDisableDraftAndPublish, disableContentTypeLocalized, enableContentTypeLocalized, migrateIsValidAndStatusReleases, revalidateChangedContentTypes };
198
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/migrations/index.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\nimport { contentTypes as contentTypesUtils, async } from '@strapi/utils';\nimport isEqual from 'lodash/isEqual';\n\nimport { difference, keys } from 'lodash';\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID } from '../constants';\nimport { getDraftEntryValidStatus, getService } from '../utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { ReleaseAction } from '../../../shared/contracts/release-actions';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nexport async function deleteActionsOnDisableDraftAndPublish({\n oldContentTypes,\n contentTypes,\n}: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes }: Input) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n return strapi.db\n ?.queryBuilder(RELEASE_ACTION_MODEL_UID)\n .delete()\n .where({ contentType: deletedContentTypeUID })\n .execute();\n });\n }\n}\n\nexport async function migrateIsValidAndStatusReleases() {\n const releasesWithoutStatus = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: null,\n },\n populate: {\n actions: {\n populate: {\n entry: true,\n },\n },\n },\n })) as Release[];\n\n async.map(releasesWithoutStatus, async (release: Release) => {\n const actions = release.actions;\n\n const notValidatedActions = actions.filter((action) => action.isEntryValid === null);\n\n for (const action of notValidatedActions) {\n // We need to check the Action is related to a valid entry because we can't assume this is gonna be always the case\n // example: users could make changes directly to their database, or data could be lost\n if (action.entry) {\n const isEntryValid = 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,\n },\n });\n }\n }\n\n return getService('release', { strapi }).updateReleaseStatus(release.id);\n });\n\n const publishedReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n status: null,\n releasedAt: {\n $notNull: true,\n },\n },\n });\n\n async.map(publishedReleases, async (release: Release) => {\n return strapi.db.query(RELEASE_MODEL_UID).update({\n where: {\n id: release.id,\n },\n data: {\n status: 'done',\n },\n });\n });\n}\n\nexport async function revalidateChangedContentTypes({ oldContentTypes, contentTypes }: Input) {\n if (oldContentTypes !== undefined && contentTypes !== undefined) {\n const contentTypesWithDraftAndPublish = Object.keys(oldContentTypes).filter(\n (uid) => oldContentTypes[uid]?.options?.draftAndPublish\n );\n const releasesAffected = new Set();\n\n async\n .map(contentTypesWithDraftAndPublish, async (contentTypeUID: UID.ContentType) => {\n const oldContentType = oldContentTypes[contentTypeUID];\n const contentType = contentTypes[contentTypeUID];\n\n // If attributes have changed, we need to revalidate actions because maybe validations rules are different\n if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {\n const actions = await strapi.db.query(RELEASE_ACTION_MODEL_UID).findMany({\n where: {\n contentType: contentTypeUID,\n },\n populate: {\n entry: true,\n release: true,\n },\n });\n\n await async.map(actions, async (action: ReleaseAction) => {\n if (action.entry && action.release && action.type === 'publish') {\n const isEntryValid = await getDraftEntryValidStatus(\n {\n contentType: contentTypeUID,\n documentId: action.entryDocumentId,\n locale: action.locale,\n },\n { strapi }\n );\n\n releasesAffected.add(action.release.id);\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).update({\n where: {\n id: action.id,\n },\n data: {\n isEntryValid,\n },\n });\n }\n });\n }\n })\n .then(() => {\n // We need to update the status of the releases affected\n async.map(releasesAffected, async (releaseId: Release['id']) => {\n return getService('release', { strapi }).updateReleaseStatus(releaseId);\n });\n });\n }\n}\n\nexport async function disableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n\n // if i18N is disabled remove non default locales before sync\n if (isLocalizedContentType(oldContentType) && !isLocalizedContentType(contentType)) {\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: null,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n\nexport async function enableContentTypeLocalized({ oldContentTypes, contentTypes }: Input) {\n if (!oldContentTypes) {\n return;\n }\n\n const i18nPlugin = strapi.plugin('i18n');\n if (!i18nPlugin) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n const { isLocalizedContentType } = i18nPlugin.service('content-types');\n const { getDefaultLocale } = i18nPlugin.service('locales');\n\n // if i18N is enabled remove non default locales before sync\n if (!isLocalizedContentType(oldContentType) && isLocalizedContentType(contentType)) {\n const defaultLocale = await getDefaultLocale();\n\n await strapi.db\n .queryBuilder(RELEASE_ACTION_MODEL_UID)\n .update({\n locale: defaultLocale,\n })\n .where({ contentType: uid })\n .execute();\n }\n }\n}\n"],"names":["deleteActionsOnDisableDraftAndPublish","oldContentTypes","contentTypes","uid","oldContentType","contentType","contentTypesUtils","hasDraftAndPublish","strapi","db","queryBuilder","RELEASE_ACTION_MODEL_UID","delete","where","execute","deleteActionsOnDeleteContentType","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","migrateIsValidAndStatusReleases","releasesWithoutStatus","query","RELEASE_MODEL_UID","findMany","status","releasedAt","populate","actions","entry","release","notValidatedActions","filter","action","isEntryValid","getDraftEntryValidStatus","documentId","entryDocumentId","locale","update","id","data","getService","updateReleaseStatus","publishedReleases","$notNull","revalidateChangedContentTypes","undefined","contentTypesWithDraftAndPublish","Object","options","draftAndPublish","releasesAffected","Set","contentTypeUID","isEqual","attributes","type","add","then","releaseId","disableContentTypeLocalized","i18nPlugin","plugin","isLocalizedContentType","service","enableContentTypeLocalized","getDefaultLocale","defaultLocale"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.js');
4
+ var index = require('./migrations/index.js');
5
+ var _5_0_0DocumentIdInActions = require('./migrations/database/5.0.0-document-id-in-actions.js');
6
+
7
+ const register = async ({ strapi })=>{
8
+ if (strapi.ee.features.isEnabled('cms-content-releases')) {
9
+ await strapi.service('admin::permission').actionProvider.registerMany(constants.ACTIONS);
10
+ strapi.db.migrations.providers.internal.register(_5_0_0DocumentIdInActions.addEntryDocumentToReleaseActions);
11
+ strapi.hook('strapi::content-types.beforeSync').register(index.disableContentTypeLocalized).register(index.deleteActionsOnDisableDraftAndPublish);
12
+ strapi.hook('strapi::content-types.afterSync').register(index.deleteActionsOnDeleteContentType).register(index.enableContentTypeLocalized).register(index.revalidateChangedContentTypes).register(index.migrateIsValidAndStatusReleases);
13
+ }
14
+ if (strapi.plugin('graphql')) {
15
+ const graphqlExtensionService = strapi.plugin('graphql').service('extension');
16
+ // Exclude the release and release action models from the GraphQL schema
17
+ graphqlExtensionService.shadowCRUD(constants.RELEASE_MODEL_UID).disable();
18
+ graphqlExtensionService.shadowCRUD(constants.RELEASE_ACTION_MODEL_UID).disable();
19
+ }
20
+ };
21
+
22
+ exports.register = register;
23
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;;;AAcaA,MAAAA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,iBAAAA,CAAAA;QAEtEP,MAAOQ,CAAAA,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,0DAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,iCAAAA,CAAAA,CACTf,QAAQ,CAACgB,2CAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCACLd,CAAAA,CAAAA,QAAQ,CAACiB,sCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,gCACTlB,CAAAA,CAAAA,QAAQ,CAACmB,mCAAAA,CAAAA,CACTnB,QAAQ,CAACoB,qCAAAA,CAAAA;AACd;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAY,CAAA,EAAA;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAOoB,CAAAA,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAwBC,CAAAA,UAAU,CAACC,2BAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAwBC,CAAAA,UAAU,CAACG,kCAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE;AACF;;;;"}
@@ -0,0 +1,21 @@
1
+ import { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants.mjs';
2
+ import { disableContentTypeLocalized, deleteActionsOnDisableDraftAndPublish, deleteActionsOnDeleteContentType, enableContentTypeLocalized, revalidateChangedContentTypes, migrateIsValidAndStatusReleases } from './migrations/index.mjs';
3
+ import { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions.mjs';
4
+
5
+ const register = async ({ strapi })=>{
6
+ if (strapi.ee.features.isEnabled('cms-content-releases')) {
7
+ await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);
8
+ strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);
9
+ strapi.hook('strapi::content-types.beforeSync').register(disableContentTypeLocalized).register(deleteActionsOnDisableDraftAndPublish);
10
+ strapi.hook('strapi::content-types.afterSync').register(deleteActionsOnDeleteContentType).register(enableContentTypeLocalized).register(revalidateChangedContentTypes).register(migrateIsValidAndStatusReleases);
11
+ }
12
+ if (strapi.plugin('graphql')) {
13
+ const graphqlExtensionService = strapi.plugin('graphql').service('extension');
14
+ // Exclude the release and release action models from the GraphQL schema
15
+ graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();
16
+ graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();
17
+ }
18
+ };
19
+
20
+ export { register };
21
+ //# sourceMappingURL=register.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.mjs","sources":["../../server/src/register.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core } from '@strapi/types';\n\nimport { ACTIONS, RELEASE_MODEL_UID, RELEASE_ACTION_MODEL_UID } from './constants';\nimport {\n deleteActionsOnDeleteContentType,\n deleteActionsOnDisableDraftAndPublish,\n migrateIsValidAndStatusReleases,\n revalidateChangedContentTypes,\n disableContentTypeLocalized,\n enableContentTypeLocalized,\n} from './migrations';\nimport { addEntryDocumentToReleaseActions } from './migrations/database/5.0.0-document-id-in-actions';\n\nexport const register = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n await strapi.service('admin::permission').actionProvider.registerMany(ACTIONS);\n\n strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);\n\n strapi\n .hook('strapi::content-types.beforeSync')\n .register(disableContentTypeLocalized)\n .register(deleteActionsOnDisableDraftAndPublish);\n\n strapi\n .hook('strapi::content-types.afterSync')\n .register(deleteActionsOnDeleteContentType)\n .register(enableContentTypeLocalized)\n .register(revalidateChangedContentTypes)\n .register(migrateIsValidAndStatusReleases);\n }\n\n if (strapi.plugin('graphql')) {\n const graphqlExtensionService = strapi.plugin('graphql').service('extension');\n // Exclude the release and release action models from the GraphQL schema\n graphqlExtensionService.shadowCRUD(RELEASE_MODEL_UID).disable();\n graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();\n }\n};\n"],"names":["register","strapi","ee","features","isEnabled","service","actionProvider","registerMany","ACTIONS","db","migrations","providers","internal","addEntryDocumentToReleaseActions","hook","disableContentTypeLocalized","deleteActionsOnDisableDraftAndPublish","deleteActionsOnDeleteContentType","enableContentTypeLocalized","revalidateChangedContentTypes","migrateIsValidAndStatusReleases","plugin","graphqlExtensionService","shadowCRUD","RELEASE_MODEL_UID","disable","RELEASE_ACTION_MODEL_UID"],"mappings":";;;;AAcaA,MAAAA,QAAAA,GAAW,OAAO,EAAEC,MAAM,EAA2B,GAAA;AAChE,IAAA,IAAIA,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAyB,CAAA,EAAA;AACxD,QAAA,MAAMH,OAAOI,OAAO,CAAC,qBAAqBC,cAAc,CAACC,YAAY,CAACC,OAAAA,CAAAA;QAEtEP,MAAOQ,CAAAA,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACZ,QAAQ,CAACa,gCAAAA,CAAAA;AAEjDZ,QAAAA,MAAAA,CACGa,IAAI,CAAC,kCAAA,CAAA,CACLd,QAAQ,CAACe,2BAAAA,CAAAA,CACTf,QAAQ,CAACgB,qCAAAA,CAAAA;AAEZf,QAAAA,MAAAA,CACGa,IAAI,CAAC,iCACLd,CAAAA,CAAAA,QAAQ,CAACiB,gCAAAA,CAAAA,CACTjB,QAAQ,CAACkB,0BACTlB,CAAAA,CAAAA,QAAQ,CAACmB,6BAAAA,CAAAA,CACTnB,QAAQ,CAACoB,+BAAAA,CAAAA;AACd;IAEA,IAAInB,MAAAA,CAAOoB,MAAM,CAAC,SAAY,CAAA,EAAA;AAC5B,QAAA,MAAMC,0BAA0BrB,MAAOoB,CAAAA,MAAM,CAAC,SAAA,CAAA,CAAWhB,OAAO,CAAC,WAAA,CAAA;;QAEjEiB,uBAAwBC,CAAAA,UAAU,CAACC,iBAAAA,CAAAA,CAAmBC,OAAO,EAAA;QAC7DH,uBAAwBC,CAAAA,UAAU,CAACG,wBAAAA,CAAAA,CAA0BD,OAAO,EAAA;AACtE;AACF;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var release = require('./release.js');
4
+ var releaseAction = require('./release-action.js');
5
+ var settings = require('./settings.js');
6
+
7
+ const routes = {
8
+ settings,
9
+ release,
10
+ 'release-action': releaseAction
11
+ };
12
+
13
+ exports.routes = routes;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","settings","release","releaseAction"],"mappings":";;;;;;MAIaA,MAAS,GAAA;AACpBC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAkBC,EAAAA;AACpB;;;;"}
@@ -0,0 +1,12 @@
1
+ import release from './release.mjs';
2
+ import releaseAction from './release-action.mjs';
3
+ import settings from './settings.mjs';
4
+
5
+ const routes = {
6
+ settings,
7
+ release,
8
+ 'release-action': releaseAction
9
+ };
10
+
11
+ export { routes };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/routes/index.ts"],"sourcesContent":["import release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const routes = {\n settings,\n release,\n 'release-action': releaseAction,\n};\n"],"names":["routes","settings","release","releaseAction"],"mappings":";;;;MAIaA,MAAS,GAAA;AACpBC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAkBC,EAAAA;AACpB;;;;"}