@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,91 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@strapi/utils');
6
+ var constants = require('../constants.js');
7
+
8
+ class AlreadyOnReleaseError extends utils.errors.ApplicationError {
9
+ constructor(message){
10
+ super(message);
11
+ this.name = 'AlreadyOnReleaseError';
12
+ }
13
+ }
14
+ const createReleaseValidationService = ({ strapi })=>({
15
+ async validateUniqueEntry (releaseId, releaseActionArgs) {
16
+ /**
17
+ * Asserting the type, otherwise TS complains: 'release.actions' is of type 'unknown', even though the types come through for non-populated fields...
18
+ * Possibly related to the comment on GetValues: https://github.com/strapi/strapi/blob/main/packages/core/types/src/modules/entity-service/result.ts
19
+ */ const release = await strapi.db.query(constants.RELEASE_MODEL_UID).findOne({
20
+ where: {
21
+ id: releaseId
22
+ },
23
+ populate: {
24
+ actions: true
25
+ }
26
+ });
27
+ if (!release) {
28
+ throw new utils.errors.NotFoundError(`No release found for id ${releaseId}`);
29
+ }
30
+ const isEntryInRelease = release.actions.some((action)=>action.entryDocumentId === releaseActionArgs.entryDocumentId && action.contentType === releaseActionArgs.contentType && (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true));
31
+ if (isEntryInRelease) {
32
+ throw new AlreadyOnReleaseError(`Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ''} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`);
33
+ }
34
+ },
35
+ validateEntryData (contentTypeUid, entryDocumentId) {
36
+ const contentType = strapi.contentType(contentTypeUid);
37
+ if (!contentType) {
38
+ throw new utils.errors.NotFoundError(`No content type found for uid ${contentTypeUid}`);
39
+ }
40
+ if (!utils.contentTypes.hasDraftAndPublish(contentType)) {
41
+ throw new utils.errors.ValidationError(`Content type with uid ${contentTypeUid} does not have draftAndPublish enabled`);
42
+ }
43
+ if (contentType.kind === 'collectionType' && !entryDocumentId) {
44
+ throw new utils.errors.ValidationError('Document id is required for collection type');
45
+ }
46
+ },
47
+ async validatePendingReleasesLimit () {
48
+ // Use the maximum releases option if it exists, otherwise default to 3
49
+ const featureCfg = strapi.ee.features.get('cms-content-releases');
50
+ const maximumPendingReleases = typeof featureCfg === 'object' && featureCfg?.options?.maximumReleases || 3;
51
+ const [, pendingReleasesCount] = await strapi.db.query(constants.RELEASE_MODEL_UID).findWithCount({
52
+ filters: {
53
+ releasedAt: {
54
+ $null: true
55
+ }
56
+ }
57
+ });
58
+ // Unlimited is a number that will never be reached like 9999
59
+ if (pendingReleasesCount >= maximumPendingReleases) {
60
+ throw new utils.errors.ValidationError('You have reached the maximum number of pending releases');
61
+ }
62
+ },
63
+ async validateUniqueNameForPendingRelease (name, id) {
64
+ const pendingReleases = await strapi.db.query(constants.RELEASE_MODEL_UID).findMany({
65
+ where: {
66
+ releasedAt: {
67
+ $null: true
68
+ },
69
+ name,
70
+ ...id && {
71
+ id: {
72
+ $ne: id
73
+ }
74
+ }
75
+ }
76
+ });
77
+ const isNameUnique = pendingReleases.length === 0;
78
+ if (!isNameUnique) {
79
+ throw new utils.errors.ValidationError(`Release with name ${name} already exists`);
80
+ }
81
+ },
82
+ async validateScheduledAtIsLaterThanNow (scheduledAt) {
83
+ if (scheduledAt && new Date(scheduledAt) <= new Date()) {
84
+ throw new utils.errors.ValidationError('Scheduled at must be later than now');
85
+ }
86
+ }
87
+ });
88
+
89
+ exports.AlreadyOnReleaseError = AlreadyOnReleaseError;
90
+ exports.default = createReleaseValidationService;
91
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sources":["../../../server/src/services/validation.ts"],"sourcesContent":["import { errors, contentTypes } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\nimport type { Release, CreateRelease, UpdateRelease } from '../../../shared/contracts/releases';\nimport type { CreateReleaseAction } from '../../../shared/contracts/release-actions';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nexport class AlreadyOnReleaseError extends errors.ApplicationError<'AlreadyOnReleaseError'> {\n constructor(message: string) {\n super(message);\n this.name = 'AlreadyOnReleaseError';\n }\n}\n\nconst createReleaseValidationService = ({ strapi }: { strapi: Core.Strapi }) => ({\n async validateUniqueEntry(\n releaseId: CreateReleaseAction.Request['params']['releaseId'],\n releaseActionArgs: CreateReleaseAction.Request['body']\n ) {\n /**\n * Asserting the type, otherwise TS complains: 'release.actions' is of type 'unknown', even though the types come through for non-populated fields...\n * Possibly related to the comment on GetValues: https://github.com/strapi/strapi/blob/main/packages/core/types/src/modules/entity-service/result.ts\n */\n const release = (await strapi.db.query(RELEASE_MODEL_UID).findOne({\n where: {\n id: releaseId,\n },\n populate: {\n actions: true,\n },\n })) as Release | null;\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const isEntryInRelease = release.actions.some(\n (action) =>\n action.entryDocumentId === releaseActionArgs.entryDocumentId &&\n action.contentType === releaseActionArgs.contentType &&\n (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true)\n );\n\n if (isEntryInRelease) {\n throw new AlreadyOnReleaseError(\n `Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ''} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`\n );\n }\n },\n validateEntryData(\n contentTypeUid: CreateReleaseAction.Request['body']['contentType'],\n entryDocumentId: CreateReleaseAction.Request['body']['entryDocumentId']\n ) {\n const contentType = strapi.contentType(contentTypeUid as UID.ContentType);\n\n if (!contentType) {\n throw new errors.NotFoundError(`No content type found for uid ${contentTypeUid}`);\n }\n\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n throw new errors.ValidationError(\n `Content type with uid ${contentTypeUid} does not have draftAndPublish enabled`\n );\n }\n\n if (contentType.kind === 'collectionType' && !entryDocumentId) {\n throw new errors.ValidationError('Document id is required for collection type');\n }\n },\n async validatePendingReleasesLimit() {\n // Use the maximum releases option if it exists, otherwise default to 3\n const featureCfg = strapi.ee.features.get('cms-content-releases');\n\n const maximumPendingReleases =\n (typeof featureCfg === 'object' && featureCfg?.options?.maximumReleases) || 3;\n\n const [, pendingReleasesCount] = await strapi.db.query(RELEASE_MODEL_UID).findWithCount({\n filters: {\n releasedAt: {\n $null: true,\n },\n },\n });\n\n // Unlimited is a number that will never be reached like 9999\n if (pendingReleasesCount >= maximumPendingReleases) {\n throw new errors.ValidationError('You have reached the maximum number of pending releases');\n }\n },\n async validateUniqueNameForPendingRelease(\n name: CreateRelease.Request['body']['name'],\n id?: UpdateRelease.Request['params']['id']\n ) {\n const pendingReleases = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: {\n $null: true,\n },\n name,\n ...(id && { id: { $ne: id } }),\n },\n })) as Release[];\n\n const isNameUnique = pendingReleases.length === 0;\n\n if (!isNameUnique) {\n throw new errors.ValidationError(`Release with name ${name} already exists`);\n }\n },\n async validateScheduledAtIsLaterThanNow(\n scheduledAt: CreateRelease.Request['body']['scheduledAt']\n ) {\n if (scheduledAt && new Date(scheduledAt) <= new Date()) {\n throw new errors.ValidationError('Scheduled at must be later than now');\n }\n },\n});\n\nexport default createReleaseValidationService;\n"],"names":["AlreadyOnReleaseError","errors","ApplicationError","constructor","message","name","createReleaseValidationService","strapi","validateUniqueEntry","releaseId","releaseActionArgs","release","db","query","RELEASE_MODEL_UID","findOne","where","id","populate","actions","NotFoundError","isEntryInRelease","some","action","entryDocumentId","contentType","locale","validateEntryData","contentTypeUid","contentTypes","hasDraftAndPublish","ValidationError","kind","validatePendingReleasesLimit","featureCfg","ee","features","get","maximumPendingReleases","options","maximumReleases","pendingReleasesCount","findWithCount","filters","releasedAt","$null","validateUniqueNameForPendingRelease","pendingReleases","findMany","$ne","isNameUnique","length","validateScheduledAtIsLaterThanNow","scheduledAt","Date"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { errors, contentTypes } from '@strapi/utils';
2
+ import { RELEASE_MODEL_UID } from '../constants.mjs';
3
+
4
+ class AlreadyOnReleaseError extends errors.ApplicationError {
5
+ constructor(message){
6
+ super(message);
7
+ this.name = 'AlreadyOnReleaseError';
8
+ }
9
+ }
10
+ const createReleaseValidationService = ({ strapi })=>({
11
+ async validateUniqueEntry (releaseId, releaseActionArgs) {
12
+ /**
13
+ * Asserting the type, otherwise TS complains: 'release.actions' is of type 'unknown', even though the types come through for non-populated fields...
14
+ * Possibly related to the comment on GetValues: https://github.com/strapi/strapi/blob/main/packages/core/types/src/modules/entity-service/result.ts
15
+ */ const release = await strapi.db.query(RELEASE_MODEL_UID).findOne({
16
+ where: {
17
+ id: releaseId
18
+ },
19
+ populate: {
20
+ actions: true
21
+ }
22
+ });
23
+ if (!release) {
24
+ throw new errors.NotFoundError(`No release found for id ${releaseId}`);
25
+ }
26
+ const isEntryInRelease = release.actions.some((action)=>action.entryDocumentId === releaseActionArgs.entryDocumentId && action.contentType === releaseActionArgs.contentType && (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true));
27
+ if (isEntryInRelease) {
28
+ throw new AlreadyOnReleaseError(`Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ''} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`);
29
+ }
30
+ },
31
+ validateEntryData (contentTypeUid, entryDocumentId) {
32
+ const contentType = strapi.contentType(contentTypeUid);
33
+ if (!contentType) {
34
+ throw new errors.NotFoundError(`No content type found for uid ${contentTypeUid}`);
35
+ }
36
+ if (!contentTypes.hasDraftAndPublish(contentType)) {
37
+ throw new errors.ValidationError(`Content type with uid ${contentTypeUid} does not have draftAndPublish enabled`);
38
+ }
39
+ if (contentType.kind === 'collectionType' && !entryDocumentId) {
40
+ throw new errors.ValidationError('Document id is required for collection type');
41
+ }
42
+ },
43
+ async validatePendingReleasesLimit () {
44
+ // Use the maximum releases option if it exists, otherwise default to 3
45
+ const featureCfg = strapi.ee.features.get('cms-content-releases');
46
+ const maximumPendingReleases = typeof featureCfg === 'object' && featureCfg?.options?.maximumReleases || 3;
47
+ const [, pendingReleasesCount] = await strapi.db.query(RELEASE_MODEL_UID).findWithCount({
48
+ filters: {
49
+ releasedAt: {
50
+ $null: true
51
+ }
52
+ }
53
+ });
54
+ // Unlimited is a number that will never be reached like 9999
55
+ if (pendingReleasesCount >= maximumPendingReleases) {
56
+ throw new errors.ValidationError('You have reached the maximum number of pending releases');
57
+ }
58
+ },
59
+ async validateUniqueNameForPendingRelease (name, id) {
60
+ const pendingReleases = await strapi.db.query(RELEASE_MODEL_UID).findMany({
61
+ where: {
62
+ releasedAt: {
63
+ $null: true
64
+ },
65
+ name,
66
+ ...id && {
67
+ id: {
68
+ $ne: id
69
+ }
70
+ }
71
+ }
72
+ });
73
+ const isNameUnique = pendingReleases.length === 0;
74
+ if (!isNameUnique) {
75
+ throw new errors.ValidationError(`Release with name ${name} already exists`);
76
+ }
77
+ },
78
+ async validateScheduledAtIsLaterThanNow (scheduledAt) {
79
+ if (scheduledAt && new Date(scheduledAt) <= new Date()) {
80
+ throw new errors.ValidationError('Scheduled at must be later than now');
81
+ }
82
+ }
83
+ });
84
+
85
+ export { AlreadyOnReleaseError, createReleaseValidationService as default };
86
+ //# sourceMappingURL=validation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.mjs","sources":["../../../server/src/services/validation.ts"],"sourcesContent":["import { errors, contentTypes } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\nimport type { Release, CreateRelease, UpdateRelease } from '../../../shared/contracts/releases';\nimport type { CreateReleaseAction } from '../../../shared/contracts/release-actions';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nexport class AlreadyOnReleaseError extends errors.ApplicationError<'AlreadyOnReleaseError'> {\n constructor(message: string) {\n super(message);\n this.name = 'AlreadyOnReleaseError';\n }\n}\n\nconst createReleaseValidationService = ({ strapi }: { strapi: Core.Strapi }) => ({\n async validateUniqueEntry(\n releaseId: CreateReleaseAction.Request['params']['releaseId'],\n releaseActionArgs: CreateReleaseAction.Request['body']\n ) {\n /**\n * Asserting the type, otherwise TS complains: 'release.actions' is of type 'unknown', even though the types come through for non-populated fields...\n * Possibly related to the comment on GetValues: https://github.com/strapi/strapi/blob/main/packages/core/types/src/modules/entity-service/result.ts\n */\n const release = (await strapi.db.query(RELEASE_MODEL_UID).findOne({\n where: {\n id: releaseId,\n },\n populate: {\n actions: true,\n },\n })) as Release | null;\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const isEntryInRelease = release.actions.some(\n (action) =>\n action.entryDocumentId === releaseActionArgs.entryDocumentId &&\n action.contentType === releaseActionArgs.contentType &&\n (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true)\n );\n\n if (isEntryInRelease) {\n throw new AlreadyOnReleaseError(\n `Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ''} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`\n );\n }\n },\n validateEntryData(\n contentTypeUid: CreateReleaseAction.Request['body']['contentType'],\n entryDocumentId: CreateReleaseAction.Request['body']['entryDocumentId']\n ) {\n const contentType = strapi.contentType(contentTypeUid as UID.ContentType);\n\n if (!contentType) {\n throw new errors.NotFoundError(`No content type found for uid ${contentTypeUid}`);\n }\n\n if (!contentTypes.hasDraftAndPublish(contentType)) {\n throw new errors.ValidationError(\n `Content type with uid ${contentTypeUid} does not have draftAndPublish enabled`\n );\n }\n\n if (contentType.kind === 'collectionType' && !entryDocumentId) {\n throw new errors.ValidationError('Document id is required for collection type');\n }\n },\n async validatePendingReleasesLimit() {\n // Use the maximum releases option if it exists, otherwise default to 3\n const featureCfg = strapi.ee.features.get('cms-content-releases');\n\n const maximumPendingReleases =\n (typeof featureCfg === 'object' && featureCfg?.options?.maximumReleases) || 3;\n\n const [, pendingReleasesCount] = await strapi.db.query(RELEASE_MODEL_UID).findWithCount({\n filters: {\n releasedAt: {\n $null: true,\n },\n },\n });\n\n // Unlimited is a number that will never be reached like 9999\n if (pendingReleasesCount >= maximumPendingReleases) {\n throw new errors.ValidationError('You have reached the maximum number of pending releases');\n }\n },\n async validateUniqueNameForPendingRelease(\n name: CreateRelease.Request['body']['name'],\n id?: UpdateRelease.Request['params']['id']\n ) {\n const pendingReleases = (await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n releasedAt: {\n $null: true,\n },\n name,\n ...(id && { id: { $ne: id } }),\n },\n })) as Release[];\n\n const isNameUnique = pendingReleases.length === 0;\n\n if (!isNameUnique) {\n throw new errors.ValidationError(`Release with name ${name} already exists`);\n }\n },\n async validateScheduledAtIsLaterThanNow(\n scheduledAt: CreateRelease.Request['body']['scheduledAt']\n ) {\n if (scheduledAt && new Date(scheduledAt) <= new Date()) {\n throw new errors.ValidationError('Scheduled at must be later than now');\n }\n },\n});\n\nexport default createReleaseValidationService;\n"],"names":["AlreadyOnReleaseError","errors","ApplicationError","constructor","message","name","createReleaseValidationService","strapi","validateUniqueEntry","releaseId","releaseActionArgs","release","db","query","RELEASE_MODEL_UID","findOne","where","id","populate","actions","NotFoundError","isEntryInRelease","some","action","entryDocumentId","contentType","locale","validateEntryData","contentTypeUid","contentTypes","hasDraftAndPublish","ValidationError","kind","validatePendingReleasesLimit","featureCfg","ee","features","get","maximumPendingReleases","options","maximumReleases","pendingReleasesCount","findWithCount","filters","releasedAt","$null","validateUniqueNameForPendingRelease","pendingReleases","findMany","$ne","isNameUnique","length","validateScheduledAtIsLaterThanNow","scheduledAt","Date"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Core } from '@strapi/types';
2
+ export declare const bootstrap: ({ strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => Promise<void>;
5
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;AA6BxD,eAAO,MAAM,SAAS,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAoDlE,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare const RELEASE_MODEL_UID = "plugin::content-releases.release";
2
+ export declare const RELEASE_ACTION_MODEL_UID = "plugin::content-releases.release-action";
3
+ export declare const ACTIONS: ({
4
+ section: string;
5
+ displayName: string;
6
+ uid: string;
7
+ pluginName: string;
8
+ category?: undefined;
9
+ subCategory?: undefined;
10
+ } | {
11
+ uid: string;
12
+ section: string;
13
+ displayName: string;
14
+ category: string;
15
+ subCategory: string;
16
+ pluginName: string;
17
+ })[];
18
+ export declare const ALLOWED_WEBHOOK_EVENTS: {
19
+ RELEASES_PUBLISH: string;
20
+ };
21
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../server/src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,qCAAqC,CAAC;AACpE,eAAO,MAAM,wBAAwB,4CAA4C,CAAC;AAElF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;IA8DnB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAElC,CAAC"}
@@ -0,0 +1,97 @@
1
+ export declare const contentTypes: {
2
+ release: {
3
+ schema: {
4
+ collectionName: string;
5
+ info: {
6
+ singularName: string;
7
+ pluralName: string;
8
+ displayName: string;
9
+ };
10
+ options: {
11
+ draftAndPublish: boolean;
12
+ };
13
+ pluginOptions: {
14
+ 'content-manager': {
15
+ visible: boolean;
16
+ };
17
+ 'content-type-builder': {
18
+ visible: boolean;
19
+ };
20
+ };
21
+ attributes: {
22
+ name: {
23
+ type: string;
24
+ required: boolean;
25
+ };
26
+ releasedAt: {
27
+ type: string;
28
+ };
29
+ scheduledAt: {
30
+ type: string;
31
+ };
32
+ timezone: {
33
+ type: string;
34
+ };
35
+ status: {
36
+ type: string;
37
+ enum: string[];
38
+ required: boolean;
39
+ };
40
+ actions: {
41
+ type: string;
42
+ relation: string;
43
+ target: string;
44
+ mappedBy: string;
45
+ };
46
+ };
47
+ };
48
+ };
49
+ 'release-action': {
50
+ schema: {
51
+ collectionName: string;
52
+ info: {
53
+ singularName: string;
54
+ pluralName: string;
55
+ displayName: string;
56
+ };
57
+ options: {
58
+ draftAndPublish: boolean;
59
+ };
60
+ pluginOptions: {
61
+ 'content-manager': {
62
+ visible: boolean;
63
+ };
64
+ 'content-type-builder': {
65
+ visible: boolean;
66
+ };
67
+ };
68
+ attributes: {
69
+ type: {
70
+ type: string;
71
+ enum: string[];
72
+ required: boolean;
73
+ };
74
+ contentType: {
75
+ type: string;
76
+ required: boolean;
77
+ };
78
+ entryDocumentId: {
79
+ type: string;
80
+ };
81
+ locale: {
82
+ type: string;
83
+ };
84
+ release: {
85
+ type: string;
86
+ relation: string;
87
+ target: string;
88
+ inversedBy: string;
89
+ };
90
+ isEntryValid: {
91
+ type: string;
92
+ };
93
+ };
94
+ };
95
+ };
96
+ };
97
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/content-types/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGxB,CAAC"}
@@ -0,0 +1,48 @@
1
+ export declare const release: {
2
+ schema: {
3
+ collectionName: string;
4
+ info: {
5
+ singularName: string;
6
+ pluralName: string;
7
+ displayName: string;
8
+ };
9
+ options: {
10
+ draftAndPublish: boolean;
11
+ };
12
+ pluginOptions: {
13
+ 'content-manager': {
14
+ visible: boolean;
15
+ };
16
+ 'content-type-builder': {
17
+ visible: boolean;
18
+ };
19
+ };
20
+ attributes: {
21
+ name: {
22
+ type: string;
23
+ required: boolean;
24
+ };
25
+ releasedAt: {
26
+ type: string;
27
+ };
28
+ scheduledAt: {
29
+ type: string;
30
+ };
31
+ timezone: {
32
+ type: string;
33
+ };
34
+ status: {
35
+ type: string;
36
+ enum: string[];
37
+ required: boolean;
38
+ };
39
+ actions: {
40
+ type: string;
41
+ relation: string;
42
+ target: string;
43
+ mappedBy: string;
44
+ };
45
+ };
46
+ };
47
+ };
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server/src/content-types/release/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEnB,CAAC"}
@@ -0,0 +1,47 @@
1
+ declare const _default: {
2
+ collectionName: string;
3
+ info: {
4
+ singularName: string;
5
+ pluralName: string;
6
+ displayName: string;
7
+ };
8
+ options: {
9
+ draftAndPublish: boolean;
10
+ };
11
+ pluginOptions: {
12
+ 'content-manager': {
13
+ visible: boolean;
14
+ };
15
+ 'content-type-builder': {
16
+ visible: boolean;
17
+ };
18
+ };
19
+ attributes: {
20
+ name: {
21
+ type: string;
22
+ required: boolean;
23
+ };
24
+ releasedAt: {
25
+ type: string;
26
+ };
27
+ scheduledAt: {
28
+ type: string;
29
+ };
30
+ timezone: {
31
+ type: string;
32
+ };
33
+ status: {
34
+ type: string;
35
+ enum: string[];
36
+ required: boolean;
37
+ };
38
+ actions: {
39
+ type: string;
40
+ relation: string;
41
+ target: string;
42
+ mappedBy: string;
43
+ };
44
+ };
45
+ };
46
+ export default _default;
47
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../server/src/content-types/release/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBA4CE"}
@@ -0,0 +1,48 @@
1
+ export declare const releaseAction: {
2
+ schema: {
3
+ collectionName: string;
4
+ info: {
5
+ singularName: string;
6
+ pluralName: string;
7
+ displayName: string;
8
+ };
9
+ options: {
10
+ draftAndPublish: boolean;
11
+ };
12
+ pluginOptions: {
13
+ 'content-manager': {
14
+ visible: boolean;
15
+ };
16
+ 'content-type-builder': {
17
+ visible: boolean;
18
+ };
19
+ };
20
+ attributes: {
21
+ type: {
22
+ type: string;
23
+ enum: string[];
24
+ required: boolean;
25
+ };
26
+ contentType: {
27
+ type: string;
28
+ required: boolean;
29
+ };
30
+ entryDocumentId: {
31
+ type: string;
32
+ };
33
+ locale: {
34
+ type: string;
35
+ };
36
+ release: {
37
+ type: string;
38
+ relation: string;
39
+ target: string;
40
+ inversedBy: string;
41
+ };
42
+ isEntryValid: {
43
+ type: string;
44
+ };
45
+ };
46
+ };
47
+ };
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server/src/content-types/release-action/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEzB,CAAC"}
@@ -0,0 +1,47 @@
1
+ declare const _default: {
2
+ collectionName: string;
3
+ info: {
4
+ singularName: string;
5
+ pluralName: string;
6
+ displayName: string;
7
+ };
8
+ options: {
9
+ draftAndPublish: boolean;
10
+ };
11
+ pluginOptions: {
12
+ 'content-manager': {
13
+ visible: boolean;
14
+ };
15
+ 'content-type-builder': {
16
+ visible: boolean;
17
+ };
18
+ };
19
+ attributes: {
20
+ type: {
21
+ type: string;
22
+ enum: string[];
23
+ required: boolean;
24
+ };
25
+ contentType: {
26
+ type: string;
27
+ required: boolean;
28
+ };
29
+ entryDocumentId: {
30
+ type: string;
31
+ };
32
+ locale: {
33
+ type: string;
34
+ };
35
+ release: {
36
+ type: string;
37
+ relation: string;
38
+ target: string;
39
+ inversedBy: string;
40
+ };
41
+ isEntryValid: {
42
+ type: string;
43
+ };
44
+ };
45
+ };
46
+ export default _default;
47
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../server/src/content-types/release-action/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBA4CE"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="koa" />
2
+ export declare const controllers: {
3
+ release: {
4
+ findByDocumentAttached(ctx: import("koa").Context): Promise<void>;
5
+ findPage(ctx: import("koa").Context): Promise<void>;
6
+ findOne(ctx: import("koa").Context): Promise<void>;
7
+ mapEntriesToReleases(ctx: import("koa").Context): Promise<void>;
8
+ create(ctx: import("koa").Context): Promise<void>;
9
+ update(ctx: import("koa").Context): Promise<void>;
10
+ delete(ctx: import("koa").Context): Promise<void>;
11
+ publish(ctx: import("koa").Context): Promise<void>;
12
+ };
13
+ 'release-action': {
14
+ create(ctx: import("koa").Context): Promise<void>;
15
+ createMany(ctx: import("koa").Context): Promise<void>;
16
+ findMany(ctx: import("koa").Context): Promise<void>;
17
+ update(ctx: import("koa").Context): Promise<void>;
18
+ delete(ctx: import("koa").Context): Promise<void>;
19
+ };
20
+ settings: {
21
+ find(ctx: import("koa").Context): Promise<void>;
22
+ update(ctx: import("koa").Context): Promise<void>;
23
+ };
24
+ };
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/index.ts"],"names":[],"mappings":";AAIA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CAIvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type Koa from 'koa';
2
+ declare const releaseActionController: {
3
+ create(ctx: Koa.Context): Promise<void>;
4
+ createMany(ctx: Koa.Context): Promise<void>;
5
+ findMany(ctx: Koa.Context): Promise<void>;
6
+ update(ctx: Koa.Context): Promise<void>;
7
+ delete(ctx: Koa.Context): Promise<void>;
8
+ };
9
+ export default releaseActionController;
10
+ //# sourceMappingURL=release-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-action.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/release-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAmB3B,QAAA,MAAM,uBAAuB;gBACT,IAAI,OAAO;oBAcP,IAAI,OAAO;kBA8Cb,IAAI,OAAO;gBA2Eb,IAAI,OAAO;gBAoBX,IAAI,OAAO;CAY9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type Koa from 'koa';
2
+ declare const releaseController: {
3
+ /**
4
+ * Find releases based on documents attached or not to the release.
5
+ * If `hasEntryAttached` is true, it will return all releases that have the entry attached.
6
+ * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.
7
+ */
8
+ findByDocumentAttached(ctx: Koa.Context): Promise<void>;
9
+ findPage(ctx: Koa.Context): Promise<void>;
10
+ findOne(ctx: Koa.Context): Promise<void>;
11
+ mapEntriesToReleases(ctx: Koa.Context): Promise<void>;
12
+ create(ctx: Koa.Context): Promise<void>;
13
+ update(ctx: Koa.Context): Promise<void>;
14
+ delete(ctx: Koa.Context): Promise<void>;
15
+ publish(ctx: Koa.Context): Promise<void>;
16
+ };
17
+ export default releaseController;
18
+ //# sourceMappingURL=release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/release.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAoB3B,QAAA,MAAM,iBAAiB;IACrB;;;;OAIG;gCAC+B,IAAI,OAAO;kBAiFzB,IAAI,OAAO;iBAmCZ,IAAI,OAAO;8BAmCE,IAAI,OAAO;gBAqDzB,IAAI,OAAO;gBAmBX,IAAI,OAAO;gBAoBX,IAAI,OAAO;iBAWV,IAAI,OAAO;CA+B/B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Used to store user configurations related to releases.
3
+ * E.g the default timezone for the release schedule.
4
+ */
5
+ import type Koa from 'koa';
6
+ declare const settingsController: {
7
+ find(ctx: Koa.Context): Promise<void>;
8
+ update(ctx: Koa.Context): Promise<void>;
9
+ };
10
+ export default settingsController;
11
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAM3B,QAAA,MAAM,kBAAkB;cACN,IAAI,OAAO;gBAST,IAAI,OAAO;CAY9B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}