@akbarsafari00/bonyan-content-releases 5.52.1-fa.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 (397) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +9 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.jpg.js +6 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -0
  5. package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs +4 -0
  6. package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.jpg.js +6 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -0
  9. package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs +4 -0
  10. package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -0
  11. package/dist/admin/components/EntryValidationPopover.js +310 -0
  12. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  13. package/dist/admin/components/EntryValidationPopover.mjs +308 -0
  14. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  15. package/dist/admin/components/RelativeTime.js +77 -0
  16. package/dist/admin/components/RelativeTime.js.map +1 -0
  17. package/dist/admin/components/RelativeTime.mjs +55 -0
  18. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  19. package/dist/admin/components/ReleaseAction.js +203 -0
  20. package/dist/admin/components/ReleaseAction.js.map +1 -0
  21. package/dist/admin/components/ReleaseAction.mjs +201 -0
  22. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  23. package/dist/admin/components/ReleaseActionMenu.js +194 -0
  24. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  25. package/dist/admin/components/ReleaseActionMenu.mjs +172 -0
  26. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  27. package/dist/admin/components/ReleaseActionModal.js +269 -0
  28. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  29. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  30. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  31. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  32. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  33. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  34. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  35. package/dist/admin/components/ReleaseListCell.js +109 -0
  36. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  37. package/dist/admin/components/ReleaseListCell.mjs +106 -0
  38. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  39. package/dist/admin/components/ReleaseModal.js +332 -0
  40. package/dist/admin/components/ReleaseModal.js.map +1 -0
  41. package/dist/admin/components/ReleaseModal.mjs +310 -0
  42. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  43. package/dist/admin/components/ReleasesPanel.js +138 -0
  44. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  45. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  46. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  47. package/dist/admin/components/Widgets.js +122 -0
  48. package/dist/admin/components/Widgets.js.map +1 -0
  49. package/dist/admin/components/Widgets.mjs +120 -0
  50. package/dist/admin/components/Widgets.mjs.map +1 -0
  51. package/dist/admin/constants.js +79 -0
  52. package/dist/admin/constants.js.map +1 -0
  53. package/dist/admin/constants.mjs +76 -0
  54. package/dist/admin/constants.mjs.map +1 -0
  55. package/dist/admin/index.js +155 -0
  56. package/dist/admin/index.js.map +1 -0
  57. package/dist/admin/index.mjs +151 -0
  58. package/dist/admin/index.mjs.map +1 -0
  59. package/dist/admin/modules/hooks.js +8 -0
  60. package/dist/admin/modules/hooks.js.map +1 -0
  61. package/dist/admin/modules/hooks.mjs +6 -0
  62. package/dist/admin/modules/hooks.mjs.map +1 -0
  63. package/dist/admin/pages/App.js +29 -0
  64. package/dist/admin/pages/App.js.map +1 -0
  65. package/dist/admin/pages/App.mjs +27 -0
  66. package/dist/admin/pages/App.mjs.map +1 -0
  67. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  68. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  69. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  70. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  71. package/dist/admin/pages/ReleaseDetailsPage.js +780 -0
  72. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  73. package/dist/admin/pages/ReleaseDetailsPage.mjs +755 -0
  74. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  75. package/dist/admin/pages/ReleasesPage.js +407 -0
  76. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  77. package/dist/admin/pages/ReleasesPage.mjs +384 -0
  78. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  79. package/dist/admin/pages/ReleasesSettingsPage.js +226 -0
  80. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  81. package/dist/admin/pages/ReleasesSettingsPage.mjs +224 -0
  82. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  83. package/dist/admin/pluginId.js +6 -0
  84. package/dist/admin/pluginId.js.map +1 -0
  85. package/dist/admin/pluginId.mjs +4 -0
  86. package/dist/admin/pluginId.mjs.map +1 -0
  87. package/dist/admin/services/homepage.js +24 -0
  88. package/dist/admin/services/homepage.js.map +1 -0
  89. package/dist/admin/services/homepage.mjs +22 -0
  90. package/dist/admin/services/homepage.mjs.map +1 -0
  91. package/dist/admin/services/release.js +473 -0
  92. package/dist/admin/services/release.js.map +1 -0
  93. package/dist/admin/services/release.mjs +456 -0
  94. package/dist/admin/services/release.mjs.map +1 -0
  95. package/dist/admin/src/components/EntryValidationPopover.d.ts +13 -0
  96. package/dist/admin/src/components/RelativeTime.d.ts +28 -0
  97. package/dist/admin/src/components/ReleaseAction.d.ts +3 -0
  98. package/dist/admin/src/components/ReleaseActionMenu.d.ts +26 -0
  99. package/dist/admin/src/components/ReleaseActionModal.d.ts +24 -0
  100. package/dist/admin/src/components/ReleaseActionOptions.d.ts +9 -0
  101. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  102. package/dist/admin/src/components/ReleaseModal.d.ts +17 -0
  103. package/dist/admin/src/components/ReleasesPanel.d.ts +3 -0
  104. package/dist/admin/src/components/Widgets.d.ts +2 -0
  105. package/dist/admin/src/constants.d.ts +77 -0
  106. package/dist/admin/src/index.d.ts +3 -0
  107. package/dist/admin/src/modules/hooks.d.ts +7 -0
  108. package/dist/admin/src/pages/App.d.ts +1 -0
  109. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +2 -0
  110. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +2 -0
  111. package/dist/admin/src/pages/ReleasesPage.d.ts +8 -0
  112. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  113. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +181 -0
  114. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +39 -0
  115. package/dist/admin/src/pluginId.d.ts +1 -0
  116. package/dist/admin/src/services/homepage.d.ts +9 -0
  117. package/dist/admin/src/services/release.d.ts +112 -0
  118. package/dist/admin/src/store/hooks.d.ts +7 -0
  119. package/dist/admin/src/utils/api.d.ts +6 -0
  120. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  121. package/dist/admin/src/utils/time.d.ts +10 -0
  122. package/dist/admin/src/validation/schemas.d.ts +6 -0
  123. package/dist/admin/store/hooks.js +8 -0
  124. package/dist/admin/store/hooks.js.map +1 -0
  125. package/dist/admin/store/hooks.mjs +6 -0
  126. package/dist/admin/store/hooks.mjs.map +1 -0
  127. package/dist/admin/translations/cs.json.js +111 -0
  128. package/dist/admin/translations/cs.json.js.map +1 -0
  129. package/dist/admin/translations/cs.json.mjs +109 -0
  130. package/dist/admin/translations/cs.json.mjs.map +1 -0
  131. package/dist/admin/translations/en.json.js +111 -0
  132. package/dist/admin/translations/en.json.js.map +1 -0
  133. package/dist/admin/translations/en.json.mjs +109 -0
  134. package/dist/admin/translations/en.json.mjs.map +1 -0
  135. package/dist/admin/translations/es.json.js +103 -0
  136. package/dist/admin/translations/es.json.js.map +1 -0
  137. package/dist/admin/translations/es.json.mjs +101 -0
  138. package/dist/admin/translations/es.json.mjs.map +1 -0
  139. package/dist/admin/translations/fa.json.js +111 -0
  140. package/dist/admin/translations/fa.json.js.map +1 -0
  141. package/dist/admin/translations/fa.json.mjs +109 -0
  142. package/dist/admin/translations/fa.json.mjs.map +1 -0
  143. package/dist/admin/translations/ja.json.js +111 -0
  144. package/dist/admin/translations/ja.json.js.map +1 -0
  145. package/dist/admin/translations/ja.json.mjs +109 -0
  146. package/dist/admin/translations/ja.json.mjs.map +1 -0
  147. package/dist/admin/translations/ko.json.js +111 -0
  148. package/dist/admin/translations/ko.json.js.map +1 -0
  149. package/dist/admin/translations/ko.json.mjs +109 -0
  150. package/dist/admin/translations/ko.json.mjs.map +1 -0
  151. package/dist/admin/translations/nl.json.js +111 -0
  152. package/dist/admin/translations/nl.json.js.map +1 -0
  153. package/dist/admin/translations/nl.json.mjs +109 -0
  154. package/dist/admin/translations/nl.json.mjs.map +1 -0
  155. package/dist/admin/translations/pl.json.js +111 -0
  156. package/dist/admin/translations/pl.json.js.map +1 -0
  157. package/dist/admin/translations/pl.json.mjs +109 -0
  158. package/dist/admin/translations/pl.json.mjs.map +1 -0
  159. package/dist/admin/translations/sk.json.js +111 -0
  160. package/dist/admin/translations/sk.json.js.map +1 -0
  161. package/dist/admin/translations/sk.json.mjs +109 -0
  162. package/dist/admin/translations/sk.json.mjs.map +1 -0
  163. package/dist/admin/translations/uk.json.js +103 -0
  164. package/dist/admin/translations/uk.json.js.map +1 -0
  165. package/dist/admin/translations/uk.json.mjs +101 -0
  166. package/dist/admin/translations/uk.json.mjs.map +1 -0
  167. package/dist/admin/utils/api.js +8 -0
  168. package/dist/admin/utils/api.js.map +1 -0
  169. package/dist/admin/utils/api.mjs +6 -0
  170. package/dist/admin/utils/api.mjs.map +1 -0
  171. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  172. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  173. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  174. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  175. package/dist/admin/utils/time.js +42 -0
  176. package/dist/admin/utils/time.js.map +1 -0
  177. package/dist/admin/utils/time.mjs +39 -0
  178. package/dist/admin/utils/time.mjs.map +1 -0
  179. package/dist/admin/validation/schemas.js +66 -0
  180. package/dist/admin/validation/schemas.js.map +1 -0
  181. package/dist/admin/validation/schemas.mjs +43 -0
  182. package/dist/admin/validation/schemas.mjs.map +1 -0
  183. package/dist/server/bootstrap.js +68 -0
  184. package/dist/server/bootstrap.js.map +1 -0
  185. package/dist/server/bootstrap.mjs +66 -0
  186. package/dist/server/bootstrap.mjs.map +1 -0
  187. package/dist/server/constants.js +74 -0
  188. package/dist/server/constants.js.map +1 -0
  189. package/dist/server/constants.mjs +69 -0
  190. package/dist/server/constants.mjs.map +1 -0
  191. package/dist/server/content-types/index.js +12 -0
  192. package/dist/server/content-types/index.js.map +1 -0
  193. package/dist/server/content-types/index.mjs +10 -0
  194. package/dist/server/content-types/index.mjs.map +1 -0
  195. package/dist/server/content-types/release/index.js +10 -0
  196. package/dist/server/content-types/release/index.js.map +1 -0
  197. package/dist/server/content-types/release/index.mjs +8 -0
  198. package/dist/server/content-types/release/index.mjs.map +1 -0
  199. package/dist/server/content-types/release/schema.js +58 -0
  200. package/dist/server/content-types/release/schema.js.map +1 -0
  201. package/dist/server/content-types/release/schema.mjs +56 -0
  202. package/dist/server/content-types/release/schema.mjs.map +1 -0
  203. package/dist/server/content-types/release-action/index.js +10 -0
  204. package/dist/server/content-types/release-action/index.js.map +1 -0
  205. package/dist/server/content-types/release-action/index.mjs +8 -0
  206. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  207. package/dist/server/content-types/release-action/schema.js +55 -0
  208. package/dist/server/content-types/release-action/schema.js.map +1 -0
  209. package/dist/server/content-types/release-action/schema.mjs +53 -0
  210. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  211. package/dist/server/controllers/homepage.js +15 -0
  212. package/dist/server/controllers/homepage.js.map +1 -0
  213. package/dist/server/controllers/homepage.mjs +13 -0
  214. package/dist/server/controllers/homepage.mjs.map +1 -0
  215. package/dist/server/controllers/index.js +16 -0
  216. package/dist/server/controllers/index.js.map +1 -0
  217. package/dist/server/controllers/index.mjs +14 -0
  218. package/dist/server/controllers/index.mjs.map +1 -0
  219. package/dist/server/controllers/release-action.js +150 -0
  220. package/dist/server/controllers/release-action.js.map +1 -0
  221. package/dist/server/controllers/release-action.mjs +148 -0
  222. package/dist/server/controllers/release-action.mjs.map +1 -0
  223. package/dist/server/controllers/release.js +302 -0
  224. package/dist/server/controllers/release.js.map +1 -0
  225. package/dist/server/controllers/release.mjs +300 -0
  226. package/dist/server/controllers/release.mjs.map +1 -0
  227. package/dist/server/controllers/settings.js +37 -0
  228. package/dist/server/controllers/settings.js.map +1 -0
  229. package/dist/server/controllers/settings.mjs +35 -0
  230. package/dist/server/controllers/settings.mjs.map +1 -0
  231. package/dist/server/controllers/validation/release-action.js +34 -0
  232. package/dist/server/controllers/validation/release-action.js.map +1 -0
  233. package/dist/server/controllers/validation/release-action.mjs +30 -0
  234. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  235. package/dist/server/controllers/validation/release.js +26 -0
  236. package/dist/server/controllers/validation/release.js.map +1 -0
  237. package/dist/server/controllers/validation/release.mjs +22 -0
  238. package/dist/server/controllers/validation/release.mjs.map +1 -0
  239. package/dist/server/controllers/validation/settings.js +33 -0
  240. package/dist/server/controllers/validation/settings.js.map +1 -0
  241. package/dist/server/controllers/validation/settings.mjs +10 -0
  242. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  243. package/dist/server/destroy.js +15 -0
  244. package/dist/server/destroy.js.map +1 -0
  245. package/dist/server/destroy.mjs +13 -0
  246. package/dist/server/destroy.mjs.map +1 -0
  247. package/dist/server/index.js +33 -0
  248. package/dist/server/index.js.map +1 -0
  249. package/dist/server/index.mjs +31 -0
  250. package/dist/server/index.mjs.map +1 -0
  251. package/dist/server/middlewares/documents.js +104 -0
  252. package/dist/server/middlewares/documents.js.map +1 -0
  253. package/dist/server/middlewares/documents.mjs +101 -0
  254. package/dist/server/middlewares/documents.mjs.map +1 -0
  255. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  256. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  257. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  258. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  259. package/dist/server/migrations/index.js +209 -0
  260. package/dist/server/migrations/index.js.map +1 -0
  261. package/dist/server/migrations/index.mjs +198 -0
  262. package/dist/server/migrations/index.mjs.map +1 -0
  263. package/dist/server/register.js +23 -0
  264. package/dist/server/register.js.map +1 -0
  265. package/dist/server/register.mjs +21 -0
  266. package/dist/server/register.mjs.map +1 -0
  267. package/dist/server/routes/homepage.js +25 -0
  268. package/dist/server/routes/homepage.js.map +1 -0
  269. package/dist/server/routes/homepage.mjs +23 -0
  270. package/dist/server/routes/homepage.mjs.map +1 -0
  271. package/dist/server/routes/index.js +16 -0
  272. package/dist/server/routes/index.js.map +1 -0
  273. package/dist/server/routes/index.mjs +14 -0
  274. package/dist/server/routes/index.mjs.map +1 -0
  275. package/dist/server/routes/release-action.js +100 -0
  276. package/dist/server/routes/release-action.js.map +1 -0
  277. package/dist/server/routes/release-action.mjs +98 -0
  278. package/dist/server/routes/release-action.mjs.map +1 -0
  279. package/dist/server/routes/release.js +154 -0
  280. package/dist/server/routes/release.js.map +1 -0
  281. package/dist/server/routes/release.mjs +152 -0
  282. package/dist/server/routes/release.mjs.map +1 -0
  283. package/dist/server/routes/settings.js +46 -0
  284. package/dist/server/routes/settings.js.map +1 -0
  285. package/dist/server/routes/settings.mjs +44 -0
  286. package/dist/server/routes/settings.mjs.map +1 -0
  287. package/dist/server/services/homepage.js +31 -0
  288. package/dist/server/services/homepage.js.map +1 -0
  289. package/dist/server/services/homepage.mjs +29 -0
  290. package/dist/server/services/homepage.mjs.map +1 -0
  291. package/dist/server/services/index.js +20 -0
  292. package/dist/server/services/index.js.map +1 -0
  293. package/dist/server/services/index.mjs +18 -0
  294. package/dist/server/services/index.mjs.map +1 -0
  295. package/dist/server/services/release-action.js +328 -0
  296. package/dist/server/services/release-action.js.map +1 -0
  297. package/dist/server/services/release-action.mjs +322 -0
  298. package/dist/server/services/release-action.mjs.map +1 -0
  299. package/dist/server/services/release.js +337 -0
  300. package/dist/server/services/release.js.map +1 -0
  301. package/dist/server/services/release.mjs +335 -0
  302. package/dist/server/services/release.mjs.map +1 -0
  303. package/dist/server/services/scheduling.js +71 -0
  304. package/dist/server/services/scheduling.js.map +1 -0
  305. package/dist/server/services/scheduling.mjs +69 -0
  306. package/dist/server/services/scheduling.mjs.map +1 -0
  307. package/dist/server/services/settings.js +34 -0
  308. package/dist/server/services/settings.js.map +1 -0
  309. package/dist/server/services/settings.mjs +32 -0
  310. package/dist/server/services/settings.mjs.map +1 -0
  311. package/dist/server/services/validation.js +91 -0
  312. package/dist/server/services/validation.js.map +1 -0
  313. package/dist/server/services/validation.mjs +86 -0
  314. package/dist/server/services/validation.mjs.map +1 -0
  315. package/dist/server/src/bootstrap.d.ts +5 -0
  316. package/dist/server/src/bootstrap.d.ts.map +1 -0
  317. package/dist/server/src/constants.d.ts +21 -0
  318. package/dist/server/src/constants.d.ts.map +1 -0
  319. package/dist/server/src/content-types/index.d.ts +97 -0
  320. package/dist/server/src/content-types/index.d.ts.map +1 -0
  321. package/dist/server/src/content-types/release/index.d.ts +48 -0
  322. package/dist/server/src/content-types/release/index.d.ts.map +1 -0
  323. package/dist/server/src/content-types/release/schema.d.ts +47 -0
  324. package/dist/server/src/content-types/release/schema.d.ts.map +1 -0
  325. package/dist/server/src/content-types/release-action/index.d.ts +48 -0
  326. package/dist/server/src/content-types/release-action/index.d.ts.map +1 -0
  327. package/dist/server/src/content-types/release-action/schema.d.ts +47 -0
  328. package/dist/server/src/content-types/release-action/schema.d.ts.map +1 -0
  329. package/dist/server/src/controllers/homepage.d.ts +6 -0
  330. package/dist/server/src/controllers/homepage.d.ts.map +1 -0
  331. package/dist/server/src/controllers/index.d.ts +27 -0
  332. package/dist/server/src/controllers/index.d.ts.map +1 -0
  333. package/dist/server/src/controllers/release-action.d.ts +10 -0
  334. package/dist/server/src/controllers/release-action.d.ts.map +1 -0
  335. package/dist/server/src/controllers/release.d.ts +18 -0
  336. package/dist/server/src/controllers/release.d.ts.map +1 -0
  337. package/dist/server/src/controllers/settings.d.ts +11 -0
  338. package/dist/server/src/controllers/settings.d.ts.map +1 -0
  339. package/dist/server/src/controllers/validation/release-action.d.ts +14 -0
  340. package/dist/server/src/controllers/validation/release-action.d.ts.map +1 -0
  341. package/dist/server/src/controllers/validation/release.d.ts +4 -0
  342. package/dist/server/src/controllers/validation/release.d.ts.map +1 -0
  343. package/dist/server/src/controllers/validation/settings.d.ts +3 -0
  344. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -0
  345. package/dist/server/src/destroy.d.ts +5 -0
  346. package/dist/server/src/destroy.d.ts.map +1 -0
  347. package/dist/server/src/index.d.ts +372 -0
  348. package/dist/server/src/index.d.ts.map +1 -0
  349. package/dist/server/src/middlewares/documents.d.ts +6 -0
  350. package/dist/server/src/middlewares/documents.d.ts.map +1 -0
  351. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts +9 -0
  352. package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -0
  353. package/dist/server/src/migrations/index.d.ts +13 -0
  354. package/dist/server/src/migrations/index.d.ts.map +1 -0
  355. package/dist/server/src/register.d.ts +5 -0
  356. package/dist/server/src/register.d.ts.map +1 -0
  357. package/dist/server/src/routes/homepage.d.ts +4 -0
  358. package/dist/server/src/routes/homepage.d.ts.map +1 -0
  359. package/dist/server/src/routes/index.d.ts +54 -0
  360. package/dist/server/src/routes/index.d.ts.map +1 -0
  361. package/dist/server/src/routes/release-action.d.ts +18 -0
  362. package/dist/server/src/routes/release-action.d.ts.map +1 -0
  363. package/dist/server/src/routes/release.d.ts +18 -0
  364. package/dist/server/src/routes/release.d.ts.map +1 -0
  365. package/dist/server/src/routes/settings.d.ts +18 -0
  366. package/dist/server/src/routes/settings.d.ts.map +1 -0
  367. package/dist/server/src/services/homepage.d.ts +9 -0
  368. package/dist/server/src/services/homepage.d.ts.map +1 -0
  369. package/dist/server/src/services/index.d.ts +80 -0
  370. package/dist/server/src/services/index.d.ts.map +1 -0
  371. package/dist/server/src/services/release-action.d.ts +33 -0
  372. package/dist/server/src/services/release-action.d.ts.map +1 -0
  373. package/dist/server/src/services/release.d.ts +31 -0
  374. package/dist/server/src/services/release.d.ts.map +1 -0
  375. package/dist/server/src/services/scheduling.d.ts +17 -0
  376. package/dist/server/src/services/scheduling.d.ts.map +1 -0
  377. package/dist/server/src/services/settings.d.ts +13 -0
  378. package/dist/server/src/services/settings.d.ts.map +1 -0
  379. package/dist/server/src/services/validation.d.ts +18 -0
  380. package/dist/server/src/services/validation.d.ts.map +1 -0
  381. package/dist/server/src/utils/index.d.ts +51 -0
  382. package/dist/server/src/utils/index.d.ts.map +1 -0
  383. package/dist/server/utils/index.js +195 -0
  384. package/dist/server/utils/index.js.map +1 -0
  385. package/dist/server/utils/index.mjs +188 -0
  386. package/dist/server/utils/index.mjs.map +1 -0
  387. package/dist/shared/contracts/homepage.d.ts +11 -0
  388. package/dist/shared/contracts/homepage.d.ts.map +1 -0
  389. package/dist/shared/contracts/release-actions.d.ts +137 -0
  390. package/dist/shared/contracts/release-actions.d.ts.map +1 -0
  391. package/dist/shared/contracts/releases.d.ts +182 -0
  392. package/dist/shared/contracts/releases.d.ts.map +1 -0
  393. package/dist/shared/contracts/settings.d.ts +38 -0
  394. package/dist/shared/contracts/settings.d.ts.map +1 -0
  395. package/dist/shared/types.d.ts +24 -0
  396. package/dist/shared/types.d.ts.map +1 -0
  397. package/package.json +87 -0
@@ -0,0 +1,188 @@
1
+ import { contentTypes } from '@strapi/utils';
2
+
3
+ const getService = (name, { strapi: strapi1 })=>{
4
+ return strapi1.plugin('content-releases').service(name);
5
+ };
6
+ const getDraftEntryValidStatus = async ({ contentType, documentId, locale }, { strapi: strapi1 })=>{
7
+ const populateBuilderService = strapi1.plugin('content-manager').service('populate-builder');
8
+ // @ts-expect-error - populateBuilderService should be a function but is returning service
9
+ const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();
10
+ const entry = await getEntry({
11
+ contentType,
12
+ documentId,
13
+ locale,
14
+ populate
15
+ }, {
16
+ strapi: strapi1
17
+ });
18
+ return isEntryValid(contentType, entry, {
19
+ strapi: strapi1
20
+ });
21
+ };
22
+ const isEntryValid = async (contentTypeUid, entry, { strapi: strapi1 })=>{
23
+ try {
24
+ // Mirror the document-service publish path: when `api.documents.strictRelations`
25
+ // is on, required media/relations are enforced on non-draft writes. Reading the
26
+ // flag here keeps the release "valid" badge consistent with what publish will
27
+ // actually accept (otherwise the UI can mark an entry valid that publish rejects).
28
+ const rawStrictRelations = strapi1.config.get('api.documents.strictRelations', undefined);
29
+ const strictRelations = rawStrictRelations === true;
30
+ // @TODO: When documents service has validateEntityCreation method, use it instead
31
+ await strapi1.entityValidator.validateEntityCreation(strapi1.getModel(contentTypeUid), entry, {
32
+ isDraft: false,
33
+ locale: entry?.locale,
34
+ strictRelations
35
+ }, // @ts-expect-error - FIXME: entity here is unnecessary
36
+ entry);
37
+ const workflowsService = strapi1.plugin('review-workflows').service('workflows');
38
+ // Workflows service may not be available depending on the license
39
+ const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {
40
+ populate: 'stageRequiredToPublish'
41
+ });
42
+ if (workflow?.stageRequiredToPublish) {
43
+ return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;
44
+ }
45
+ return true;
46
+ } catch {
47
+ return false;
48
+ }
49
+ };
50
+ const getEntry = async ({ contentType, documentId, locale, populate, status = 'draft' }, { strapi: strapi1 })=>{
51
+ if (documentId) {
52
+ // Try to get an existing draft or published document
53
+ const entry = await strapi1.documents(contentType).findOne({
54
+ documentId,
55
+ locale,
56
+ populate,
57
+ status
58
+ });
59
+ // The document isn't published yet, but the action is to publish it, fetch the draft
60
+ if (status === 'published' && !entry) {
61
+ return strapi1.documents(contentType).findOne({
62
+ documentId,
63
+ locale,
64
+ populate,
65
+ status: 'draft'
66
+ });
67
+ }
68
+ return entry;
69
+ }
70
+ return strapi1.documents(contentType).findFirst({
71
+ locale,
72
+ populate,
73
+ status
74
+ });
75
+ };
76
+ const getEntryStatus = async (contentType, entry)=>{
77
+ if (entry.publishedAt) {
78
+ return 'published';
79
+ }
80
+ const publishedEntry = await strapi.documents(contentType).findOne({
81
+ documentId: entry.documentId,
82
+ locale: entry.locale,
83
+ status: 'published',
84
+ fields: [
85
+ 'updatedAt'
86
+ ]
87
+ });
88
+ if (!publishedEntry) {
89
+ return 'draft';
90
+ }
91
+ const entryUpdatedAt = new Date(entry.updatedAt).getTime();
92
+ const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();
93
+ if (entryUpdatedAt > publishedEntryUpdatedAt) {
94
+ return 'modified';
95
+ }
96
+ return 'published';
97
+ };
98
+ /**
99
+ * Recursively collects content type UIDs that a model (content type or component) has relations to.
100
+ * Go through component and dynamic zone attributes to find nested relations.
101
+ */ const collectRelationTargets = (modelUid, strapi1, visited = new Set())=>{
102
+ const targets = new Set();
103
+ if (visited.has(modelUid)) {
104
+ return targets;
105
+ }
106
+ visited.add(modelUid);
107
+ const model = strapi1.getModel(modelUid);
108
+ if (!model?.attributes) {
109
+ return targets;
110
+ }
111
+ for (const attribute of Object.values(model.attributes)){
112
+ if (attribute?.type === 'relation' && attribute.target) {
113
+ targets.add(attribute.target);
114
+ }
115
+ if (attribute?.type === 'component' && attribute.component) {
116
+ for (const t of collectRelationTargets(attribute.component, strapi1, visited)){
117
+ targets.add(t);
118
+ }
119
+ }
120
+ if (attribute?.type === 'dynamiczone' && attribute.components) {
121
+ for (const compUid of attribute.components){
122
+ for (const t of collectRelationTargets(compUid, strapi1, visited)){
123
+ targets.add(t);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return targets;
129
+ };
130
+ /**
131
+ * Returns content type UIDs sorted by relation dependency order for publishing.
132
+ * When content type A has a relation to content type B (both with draft & publish),
133
+ * B will appear before A in the result. This ensures that when publishing a release,
134
+ * related entities are published first, so that relation IDs can be correctly
135
+ * resolved (published target must exist when publishing source).
136
+ *
137
+ * Relations in components (nested or not) and dynamic zones are also considered.
138
+ *
139
+ * @param contentTypeUids - Content type UIDs that will be published in the release
140
+ * @param strapi - Strapi instance
141
+ * @returns Content type UIDs in publish order (dependencies first)
142
+ */ const getPublishOrderForContentTypes = (contentTypeUids, { strapi: strapi1 })=>{
143
+ const uidSet = new Set(contentTypeUids);
144
+ // Build dependency graph: source depends on target (source must be published after target)
145
+ const dependencies = new Map();
146
+ for (const uid of contentTypeUids){
147
+ const model = strapi1.getModel(uid);
148
+ if (model && contentTypes.hasDraftAndPublish(model)) {
149
+ const relationTargets = collectRelationTargets(uid, strapi1);
150
+ for (const targetUid of relationTargets){
151
+ const targetContentTypeUid = targetUid;
152
+ const isTargetInRelease = uidSet.has(targetContentTypeUid) && targetContentTypeUid in strapi1.contentTypes;
153
+ const targetModel = strapi1.getModel(targetContentTypeUid);
154
+ const targetHasDraftAndPublish = targetModel && contentTypes.hasDraftAndPublish(targetModel);
155
+ if (isTargetInRelease && targetHasDraftAndPublish) {
156
+ let dependencySet = dependencies.get(uid);
157
+ if (!dependencySet) {
158
+ dependencySet = new Set();
159
+ dependencies.set(uid, dependencySet);
160
+ }
161
+ dependencySet.add(targetContentTypeUid);
162
+ }
163
+ }
164
+ }
165
+ }
166
+ // Topological sort: dependencies first
167
+ const sorted = [];
168
+ const visited = new Set();
169
+ const visiting = new Set();
170
+ const visit = (uid)=>{
171
+ if (visited.has(uid)) return;
172
+ if (visiting.has(uid)) return; // No cycle in valid schemas
173
+ visiting.add(uid);
174
+ for (const dep of dependencies.get(uid) ?? []){
175
+ visit(dep);
176
+ }
177
+ visiting.delete(uid);
178
+ visited.add(uid);
179
+ sorted.push(uid);
180
+ };
181
+ for (const uid of contentTypeUids){
182
+ visit(uid);
183
+ }
184
+ return sorted;
185
+ };
186
+
187
+ export { getDraftEntryValidStatus, getEntry, getEntryStatus, getPublishOrderForContentTypes, getService, isEntryValid };
188
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../server/src/utils/index.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\r\n\r\nimport type { UID, Data, Core } from '@strapi/types';\r\n\r\nimport type { SettingsService } from '../services/settings';\r\nimport type { ReleaseService } from '../services/release';\r\nimport type { ReleaseActionService } from '../services/release-action';\r\n\r\ntype Services = {\r\n release: ReleaseService;\r\n 'release-validation': any;\r\n scheduling: any;\r\n 'release-action': ReleaseActionService;\r\n 'event-manager': any;\r\n settings: SettingsService;\r\n};\r\n\r\ninterface Action {\r\n contentType: UID.ContentType;\r\n documentId?: Data.DocumentID;\r\n locale?: string;\r\n}\r\n\r\nexport const getService = <TName extends keyof Services>(\r\n name: TName,\r\n { strapi }: { strapi: Core.Strapi }\r\n): Services[TName] => {\r\n return strapi.plugin('content-releases').service(name);\r\n};\r\n\r\nexport const getDraftEntryValidStatus = async (\r\n { contentType, documentId, locale }: Action,\r\n { strapi }: { strapi: Core.Strapi }\r\n) => {\r\n const populateBuilderService = strapi.plugin('content-manager').service('populate-builder');\r\n // @ts-expect-error - populateBuilderService should be a function but is returning service\r\n const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();\r\n\r\n const entry = await getEntry({ contentType, documentId, locale, populate }, { strapi });\r\n\r\n return isEntryValid(contentType, entry, { strapi });\r\n};\r\n\r\nexport const isEntryValid = async (\r\n contentTypeUid: string,\r\n entry: any,\r\n { strapi }: { strapi: Core.Strapi }\r\n) => {\r\n try {\r\n // Mirror the document-service publish path: when `api.documents.strictRelations`\r\n // is on, required media/relations are enforced on non-draft writes. Reading the\r\n // flag here keeps the release \"valid\" badge consistent with what publish will\r\n // actually accept (otherwise the UI can mark an entry valid that publish rejects).\r\n const rawStrictRelations: unknown = strapi.config.get(\r\n 'api.documents.strictRelations',\r\n undefined\r\n );\r\n const strictRelations = rawStrictRelations === true;\r\n\r\n // @TODO: When documents service has validateEntityCreation method, use it instead\r\n await strapi.entityValidator.validateEntityCreation(\r\n strapi.getModel(contentTypeUid as UID.ContentType),\r\n entry,\r\n { isDraft: false, locale: entry?.locale, strictRelations },\r\n // @ts-expect-error - FIXME: entity here is unnecessary\r\n entry\r\n );\r\n\r\n const workflowsService = strapi.plugin('review-workflows').service('workflows');\r\n // Workflows service may not be available depending on the license\r\n const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {\r\n populate: 'stageRequiredToPublish',\r\n });\r\n\r\n if (workflow?.stageRequiredToPublish) {\r\n return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;\r\n }\r\n\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getEntry = async (\r\n {\r\n contentType,\r\n documentId,\r\n locale,\r\n populate,\r\n status = 'draft',\r\n }: Action & { status?: 'draft' | 'published'; populate: any },\r\n { strapi }: { strapi: Core.Strapi }\r\n) => {\r\n if (documentId) {\r\n // Try to get an existing draft or published document\r\n const entry = await strapi\r\n .documents(contentType)\r\n .findOne({ documentId, locale, populate, status });\r\n\r\n // The document isn't published yet, but the action is to publish it, fetch the draft\r\n if (status === 'published' && !entry) {\r\n return strapi\r\n .documents(contentType)\r\n .findOne({ documentId, locale, populate, status: 'draft' });\r\n }\r\n\r\n return entry;\r\n }\r\n\r\n return strapi.documents(contentType).findFirst({ locale, populate, status });\r\n};\r\n\r\nexport const getEntryStatus = async (contentType: UID.ContentType, entry: Data.ContentType) => {\r\n if (entry.publishedAt) {\r\n return 'published';\r\n }\r\n\r\n const publishedEntry = await strapi.documents(contentType).findOne({\r\n documentId: entry.documentId,\r\n locale: entry.locale,\r\n status: 'published',\r\n fields: ['updatedAt'],\r\n });\r\n\r\n if (!publishedEntry) {\r\n return 'draft';\r\n }\r\n\r\n const entryUpdatedAt = new Date(entry.updatedAt).getTime();\r\n const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();\r\n\r\n if (entryUpdatedAt > publishedEntryUpdatedAt) {\r\n return 'modified';\r\n }\r\n\r\n return 'published';\r\n};\r\n\r\n/**\r\n * Recursively collects content type UIDs that a model (content type or component) has relations to.\r\n * Go through component and dynamic zone attributes to find nested relations.\r\n */\r\nconst collectRelationTargets = (\r\n modelUid: string,\r\n strapi: Core.Strapi,\r\n visited = new Set<string>()\r\n): Set<string> => {\r\n const targets = new Set<string>();\r\n if (visited.has(modelUid)) {\r\n return targets;\r\n }\r\n visited.add(modelUid);\r\n\r\n const model = strapi.getModel(modelUid as UID.Schema);\r\n if (!model?.attributes) {\r\n return targets;\r\n }\r\n\r\n for (const attribute of Object.values(model.attributes) as Array<{\r\n type?: string;\r\n target?: string;\r\n component?: string;\r\n components?: string[];\r\n }>) {\r\n if (attribute?.type === 'relation' && attribute.target) {\r\n targets.add(attribute.target);\r\n }\r\n if (attribute?.type === 'component' && attribute.component) {\r\n for (const t of collectRelationTargets(attribute.component, strapi, visited)) {\r\n targets.add(t);\r\n }\r\n }\r\n if (attribute?.type === 'dynamiczone' && attribute.components) {\r\n for (const compUid of attribute.components) {\r\n for (const t of collectRelationTargets(compUid, strapi, visited)) {\r\n targets.add(t);\r\n }\r\n }\r\n }\r\n }\r\n return targets;\r\n};\r\n\r\n/**\r\n * Returns content type UIDs sorted by relation dependency order for publishing.\r\n * When content type A has a relation to content type B (both with draft & publish),\r\n * B will appear before A in the result. This ensures that when publishing a release,\r\n * related entities are published first, so that relation IDs can be correctly\r\n * resolved (published target must exist when publishing source).\r\n *\r\n * Relations in components (nested or not) and dynamic zones are also considered.\r\n *\r\n * @param contentTypeUids - Content type UIDs that will be published in the release\r\n * @param strapi - Strapi instance\r\n * @returns Content type UIDs in publish order (dependencies first)\r\n */\r\nexport const getPublishOrderForContentTypes = (\r\n contentTypeUids: UID.ContentType[],\r\n { strapi }: { strapi: Core.Strapi }\r\n): UID.ContentType[] => {\r\n const uidSet = new Set(contentTypeUids);\r\n\r\n // Build dependency graph: source depends on target (source must be published after target)\r\n const dependencies = new Map<UID.ContentType, Set<UID.ContentType>>();\r\n\r\n for (const uid of contentTypeUids) {\r\n const model = strapi.getModel(uid);\r\n if (model && contentTypesUtils.hasDraftAndPublish(model)) {\r\n const relationTargets = collectRelationTargets(uid, strapi);\r\n\r\n for (const targetUid of relationTargets) {\r\n const targetContentTypeUid = targetUid as UID.ContentType;\r\n const isTargetInRelease =\r\n uidSet.has(targetContentTypeUid) && targetContentTypeUid in strapi.contentTypes;\r\n const targetModel = strapi.getModel(targetContentTypeUid);\r\n const targetHasDraftAndPublish =\r\n targetModel && contentTypesUtils.hasDraftAndPublish(targetModel);\r\n\r\n if (isTargetInRelease && targetHasDraftAndPublish) {\r\n let dependencySet = dependencies.get(uid);\r\n if (!dependencySet) {\r\n dependencySet = new Set();\r\n dependencies.set(uid, dependencySet);\r\n }\r\n dependencySet.add(targetContentTypeUid);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Topological sort: dependencies first\r\n const sorted: UID.ContentType[] = [];\r\n const visited = new Set<UID.ContentType>();\r\n const visiting = new Set<UID.ContentType>();\r\n\r\n const visit = (uid: UID.ContentType) => {\r\n if (visited.has(uid)) return;\r\n if (visiting.has(uid)) return; // No cycle in valid schemas\r\n\r\n visiting.add(uid);\r\n for (const dep of dependencies.get(uid) ?? []) {\r\n visit(dep);\r\n }\r\n visiting.delete(uid);\r\n visited.add(uid);\r\n sorted.push(uid);\r\n };\r\n\r\n for (const uid of contentTypeUids) {\r\n visit(uid);\r\n }\r\n\r\n return sorted;\r\n};\r\n"],"names":["getService","name","strapi","plugin","service","getDraftEntryValidStatus","contentType","documentId","locale","populateBuilderService","populate","populateDeep","Infinity","build","entry","getEntry","isEntryValid","contentTypeUid","rawStrictRelations","config","get","undefined","strictRelations","entityValidator","validateEntityCreation","getModel","isDraft","workflowsService","workflow","getAssignedWorkflow","stageRequiredToPublish","strapi_stage","id","status","documents","findOne","findFirst","getEntryStatus","publishedAt","publishedEntry","fields","entryUpdatedAt","Date","updatedAt","getTime","publishedEntryUpdatedAt","collectRelationTargets","modelUid","visited","Set","targets","has","add","model","attributes","attribute","Object","values","type","target","component","t","components","compUid","getPublishOrderForContentTypes","contentTypeUids","uidSet","dependencies","Map","uid","contentTypesUtils","hasDraftAndPublish","relationTargets","targetUid","targetContentTypeUid","isTargetInRelease","contentTypes","targetModel","targetHasDraftAndPublish","dependencySet","set","sorted","visiting","visit","dep","delete","push"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { errors } from '@strapi/utils';
2
+ import { Release } from './releases';
3
+ export declare namespace GetUpcomingReleases {
4
+ interface Request {
5
+ body: {};
6
+ }
7
+ interface Response {
8
+ data: Release[];
9
+ error?: errors.ApplicationError;
10
+ }
11
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../shared/contracts/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;KACV;IAED,UAAiB,QAAQ;QACvB,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC;CACF"}
@@ -0,0 +1,137 @@
1
+ import type { Schema, Modules, UID, Struct } from '@strapi/types';
2
+ import type { errors } from '@strapi/utils';
3
+ import type { Release, Pagination } from './releases';
4
+ import type { Entity } from '../types';
5
+ export type ReleaseActionEntryType = 'single-types' | 'collection-types';
6
+ export type ReleaseActionEntry = Modules.Documents.AnyDocument & {
7
+ [key: string]: Schema.Attribute.AnyAttribute;
8
+ } & {
9
+ locale?: string;
10
+ };
11
+ export interface ReleaseAction extends Entity {
12
+ type: 'publish' | 'unpublish';
13
+ entry: ReleaseActionEntry;
14
+ contentType: UID.ContentType;
15
+ entryDocumentId: ReleaseActionEntry['documentId'];
16
+ locale?: string;
17
+ release: Release;
18
+ isEntryValid: boolean;
19
+ status: 'draft' | 'published' | 'modified';
20
+ }
21
+ export interface FormattedReleaseAction extends Entity {
22
+ type: 'publish' | 'unpublish';
23
+ entry: ReleaseActionEntry;
24
+ contentType: {
25
+ uid: UID.ContentType;
26
+ mainFieldValue?: string;
27
+ displayName: string;
28
+ };
29
+ locale?: {
30
+ name: string;
31
+ code: string;
32
+ };
33
+ release: Release;
34
+ status: 'draft' | 'published' | 'modified';
35
+ }
36
+ /**
37
+ * POST /content-releases/:releaseId/actions - Create a release action
38
+ */
39
+ export declare namespace CreateReleaseAction {
40
+ interface Request {
41
+ params: {
42
+ releaseId: Release['id'];
43
+ };
44
+ body: {
45
+ type: ReleaseAction['type'];
46
+ contentType: UID.ContentType;
47
+ entryDocumentId?: ReleaseActionEntry['documentId'];
48
+ locale?: ReleaseActionEntry['locale'];
49
+ };
50
+ }
51
+ interface Response {
52
+ data: ReleaseAction;
53
+ error?: errors.ApplicationError | errors.ValidationError | errors.NotFoundError;
54
+ }
55
+ }
56
+ /**
57
+ * POST /content-releases/:releaseId/actions/bulk - Create multiple release actions
58
+ */
59
+ export declare namespace CreateManyReleaseActions {
60
+ interface Request {
61
+ params: {
62
+ releaseId: Release['id'];
63
+ };
64
+ body: Array<{
65
+ type: ReleaseAction['type'];
66
+ contentType: UID.ContentType;
67
+ entryDocumentId: ReleaseActionEntry['documentId'];
68
+ locale?: ReleaseActionEntry['locale'];
69
+ }>;
70
+ }
71
+ interface Response {
72
+ data: Array<ReleaseAction>;
73
+ meta: {
74
+ totalEntries: number;
75
+ entriesAlreadyInRelease: number;
76
+ };
77
+ error?: errors.ApplicationError | errors.ValidationError | errors.NotFoundError;
78
+ }
79
+ }
80
+ /**
81
+ * GET /content-releases/:id/actions - Get all release actions
82
+ */
83
+ export interface Stage extends Entity {
84
+ color: string;
85
+ name: string;
86
+ }
87
+ export type ReleaseActionGroupBy = 'contentType' | 'action' | 'locale';
88
+ export declare namespace GetReleaseActions {
89
+ interface Request {
90
+ params: {
91
+ releaseId: Release['id'];
92
+ };
93
+ query?: Partial<Pick<Pagination, 'page' | 'pageSize'>> & {
94
+ groupBy?: ReleaseActionGroupBy;
95
+ };
96
+ }
97
+ interface Response {
98
+ data: {
99
+ [key: string]: Array<FormattedReleaseAction>;
100
+ };
101
+ meta: {
102
+ pagination: Pagination;
103
+ contentTypes: Record<Struct.ContentTypeSchema['uid'], Struct.ContentTypeSchema & {
104
+ hasReviewWorkflow: boolean;
105
+ stageRequiredToPublish?: Stage;
106
+ }>;
107
+ components: Record<Struct.ComponentSchema['uid'], Struct.ComponentSchema>;
108
+ };
109
+ }
110
+ }
111
+ export declare namespace DeleteReleaseAction {
112
+ interface Request {
113
+ params: {
114
+ actionId: ReleaseAction['id'];
115
+ releaseId: Release['id'];
116
+ };
117
+ }
118
+ interface Response {
119
+ data: ReleaseAction;
120
+ error?: errors.ApplicationError | errors.NotFoundError;
121
+ }
122
+ }
123
+ export declare namespace UpdateReleaseAction {
124
+ interface Request {
125
+ params: {
126
+ actionId: ReleaseAction['id'];
127
+ releaseId: ReleaseAction['id'];
128
+ };
129
+ body: {
130
+ type: ReleaseAction['type'];
131
+ };
132
+ }
133
+ interface Response {
134
+ data: ReleaseAction;
135
+ error?: errors.ApplicationError | errors.ValidationError | errors.NotFoundError;
136
+ }
137
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-actions.d.ts","sourceRoot":"","sources":["../../../shared/contracts/release-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ import { errors } from '@strapi/utils';
2
+ import type { SanitizedAdminUser } from '@strapi/admin/strapi-admin';
3
+ import type { Entity, UserInfo } from '../types';
4
+ import type { ReleaseAction } from './release-actions';
5
+ export interface Release extends Entity {
6
+ name: string;
7
+ releasedAt: string | null;
8
+ scheduledAt: string | null;
9
+ status: 'ready' | 'blocked' | 'failed' | 'done' | 'empty';
10
+ timezone: string | null;
11
+ actions: ReleaseAction[];
12
+ }
13
+ export type Pagination = {
14
+ page: number;
15
+ pageSize: number;
16
+ pageCount: number;
17
+ total: number;
18
+ };
19
+ export interface ReleaseDataResponse extends Omit<Release, 'actions'> {
20
+ actions: {
21
+ meta: {
22
+ count: number;
23
+ };
24
+ };
25
+ createdBy: SanitizedAdminUser;
26
+ }
27
+ export interface ReleaseForContentTypeEntryDataResponse extends Omit<Release, 'actions'> {
28
+ actions: ReleaseAction[];
29
+ }
30
+ /**
31
+ * GET /content-releases/ - Get releases paginated
32
+ */
33
+ export declare namespace GetReleases {
34
+ interface Request {
35
+ state: {
36
+ userAbility: {};
37
+ };
38
+ query?: Partial<Pick<Pagination, 'page' | 'pageSize'>>;
39
+ }
40
+ interface Response {
41
+ data: ReleaseDataResponse[];
42
+ meta: {
43
+ pagination?: Pagination;
44
+ pendingReleasesCount?: number;
45
+ };
46
+ error?: errors.ApplicationError;
47
+ }
48
+ }
49
+ /**
50
+ * GET /content-releases/findByDocumentAttached - Get releases paginated
51
+ */
52
+ export declare namespace GetReleasesByDocumentAttached {
53
+ interface Request {
54
+ state: {
55
+ userAbility: {};
56
+ };
57
+ query: {
58
+ contentType: string;
59
+ entryDocumentId: ReleaseAction['entry']['entryDocumentId'];
60
+ locale?: string;
61
+ hasEntryAttached?: boolean;
62
+ };
63
+ }
64
+ interface Response {
65
+ data: ReleaseForContentTypeEntryDataResponse[];
66
+ error?: errors.ApplicationError;
67
+ }
68
+ }
69
+ /**
70
+ * GET /content-releases/mapEntriesToReleases - Map entries to releases
71
+ */
72
+ export declare namespace MapEntriesToReleases {
73
+ interface Request {
74
+ query: {
75
+ contentTypeUid: ReleaseAction['contentType'];
76
+ documentIds: ReleaseAction['entryDocumentId'][];
77
+ locale?: ReleaseAction['locale'];
78
+ };
79
+ }
80
+ interface Response {
81
+ data: {
82
+ [documentId: ReleaseAction['entryDocumentId']]: Pick<Release, 'id' | 'name'>[];
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * GET /content-releases/:id - Get a single release
88
+ */
89
+ export declare namespace GetRelease {
90
+ interface Request {
91
+ state: {
92
+ userAbility: {};
93
+ };
94
+ params: {
95
+ id: Release['id'];
96
+ };
97
+ }
98
+ interface Response {
99
+ data: ReleaseDataResponse;
100
+ error?: errors.ApplicationError | errors.NotFoundError;
101
+ }
102
+ }
103
+ /**
104
+ * POST /content-releases/ - Create a release
105
+ */
106
+ export declare namespace CreateRelease {
107
+ interface Request {
108
+ state: {
109
+ user: UserInfo;
110
+ };
111
+ body: {
112
+ name: string;
113
+ scheduledAt: Date | null;
114
+ timezone: string | null;
115
+ };
116
+ }
117
+ interface Response {
118
+ data: ReleaseDataResponse;
119
+ error?: errors.ApplicationError | errors.ValidationError;
120
+ }
121
+ }
122
+ /**
123
+ * PUT /content-releases/:id - Update a release
124
+ */
125
+ export declare namespace UpdateRelease {
126
+ interface Request {
127
+ state: {
128
+ user: UserInfo;
129
+ };
130
+ params: {
131
+ id: Release['id'];
132
+ };
133
+ body: {
134
+ name: string;
135
+ scheduledAt?: Date | null;
136
+ timezone?: string | null;
137
+ };
138
+ }
139
+ interface Response {
140
+ data: ReleaseDataResponse;
141
+ error?: errors.ApplicationError | errors.ValidationError;
142
+ }
143
+ }
144
+ /**
145
+ * DELETE /content-releases/:id - Delete a release
146
+ */
147
+ export declare namespace DeleteRelease {
148
+ interface Request {
149
+ state: {
150
+ user: UserInfo;
151
+ };
152
+ params: {
153
+ id: Release['id'];
154
+ };
155
+ }
156
+ interface Response {
157
+ data: ReleaseDataResponse;
158
+ error?: errors.ApplicationError | errors.NotFoundError;
159
+ }
160
+ }
161
+ /**
162
+ * POST /content-releases/:releaseId/publish - Publish a release
163
+ */
164
+ export declare namespace PublishRelease {
165
+ interface Request {
166
+ state: {
167
+ user: UserInfo;
168
+ };
169
+ params: {
170
+ id: Release['id'];
171
+ };
172
+ }
173
+ interface Response {
174
+ data: ReleaseDataResponse;
175
+ meta: {
176
+ totalEntries: number;
177
+ totalPublishedEntries: number;
178
+ totalUnpublishedEntries: number;
179
+ };
180
+ error?: errors.ApplicationError | errors.ValidationError;
181
+ }
182
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releases.d.ts","sourceRoot":"","sources":["../../../shared/contracts/releases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Used to store user configurations related to releases.
3
+ * E.g the default timezone for the release schedule.
4
+ */
5
+ import { errors } from '@strapi/utils';
6
+ import type { Utils } from '@strapi/types';
7
+ export interface Settings {
8
+ defaultTimezone: string | null | undefined;
9
+ }
10
+ /**
11
+ * GET /content-releases/settings
12
+ *
13
+ * Return the stored settings. If not set,
14
+ * it will return an object with null values
15
+ */
16
+ export declare namespace GetSettings {
17
+ interface Request {
18
+ query?: {};
19
+ }
20
+ interface Response {
21
+ data: Settings;
22
+ }
23
+ }
24
+ /**
25
+ * PUT /content-releases/settings
26
+ *
27
+ * Update the stored settings
28
+ */
29
+ export declare namespace UpdateSettings {
30
+ interface Request {
31
+ body: Settings;
32
+ }
33
+ type Response = Utils.OneOf<{
34
+ data: Settings;
35
+ }, {
36
+ error?: errors.ApplicationError | errors.ValidationError;
37
+ }>;
38
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../shared/contracts/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,QAAQ;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,UAAiB,OAAO;QACtB,KAAK,CAAC,EAAE,EAAE,CAAC;KACZ;IAED,UAAiB,QAAQ;QACvB,IAAI,EAAE,QAAQ,CAAC;KAChB;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,UAAiB,OAAO;QACtB,IAAI,EAAE,QAAQ,CAAC;KAChB;IAED,KAAY,QAAQ,GAAG,KAAK,CAAC,KAAK,CAChC;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,EAClB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAA;KAAE,CAC7D,CAAC;CACH"}
@@ -0,0 +1,24 @@
1
+ import type { Data } from '@strapi/types';
2
+ interface RoleInfo extends Omit<Entity, 'createdAt' | 'updatedAt'> {
3
+ name: string;
4
+ code: string;
5
+ description?: string;
6
+ usersCount?: number;
7
+ }
8
+ export interface UserInfo extends Entity {
9
+ firstname: string;
10
+ lastname?: string;
11
+ username?: null | string;
12
+ email: string;
13
+ isActive: boolean;
14
+ blocked: boolean;
15
+ preferedLanguage: null | string;
16
+ roles: RoleInfo[];
17
+ }
18
+ export interface Entity {
19
+ documentId: string;
20
+ id: Data.ID;
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ }
24
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,UAAU,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,IAAI,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}