@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,80 @@
1
+ export declare const services: {
2
+ homepage: ({ strapi }: {
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
+ }) => {
5
+ getUpcomingReleases(): Promise<import("../../../shared/contracts/homepage").GetUpcomingReleases.Response["data"]>;
6
+ };
7
+ release: ({ strapi }: {
8
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
9
+ }) => {
10
+ create(releaseData: import("../../../shared/contracts/releases").CreateRelease.Request["body"], { user }: {
11
+ user: import("../../../shared/types").UserInfo;
12
+ }): Promise<any>;
13
+ findOne(id: import("../../../shared/contracts/releases").GetRelease.Request["params"]["id"], query?: {}): Promise<any>;
14
+ findPage(query?: import("../../../shared/contracts/releases").GetReleases.Request["query"]): Promise<{
15
+ results: any[];
16
+ pagination: {
17
+ page: number;
18
+ pageSize: number;
19
+ pageCount: number;
20
+ total: number;
21
+ };
22
+ }>;
23
+ findMany(query?: any): Promise<any[]>;
24
+ update(id: import("@strapi/types/dist/data/constants.js").ID, releaseData: import("../../../shared/contracts/releases").UpdateRelease.Request["body"], { user }: {
25
+ user: import("../../../shared/types").UserInfo;
26
+ }): Promise<any>;
27
+ getAllComponents(): Promise<any>;
28
+ delete(releaseId: import("../../../shared/contracts/releases").DeleteRelease.Request["params"]["id"]): Promise<import("../../../shared/contracts/releases").Release>;
29
+ publish(releaseId: import("../../../shared/contracts/releases").PublishRelease.Request["params"]["id"]): Promise<Pick<import("../../../shared/contracts/releases").Release, "id" | "releasedAt" | "status"> | null>;
30
+ updateReleaseStatus(releaseId: import("../../../shared/contracts/releases").Release["id"]): Promise<any>;
31
+ };
32
+ 'release-action': ({ strapi }: {
33
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
34
+ }) => {
35
+ create(releaseId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], action: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"], { disableUpdateReleaseStatus }?: {
36
+ disableUpdateReleaseStatus?: boolean;
37
+ }): Promise<any>;
38
+ findPage(releaseId: import("../../../shared/contracts/release-actions").GetReleaseActions.Request["params"]["releaseId"], query?: import("../../../shared/contracts/release-actions").GetReleaseActions.Request["query"]): Promise<{
39
+ results: any;
40
+ pagination: {
41
+ page: number;
42
+ pageSize: number;
43
+ pageCount: number;
44
+ total: number;
45
+ };
46
+ }>;
47
+ groupActions(actions: import("../../../shared/contracts/release-actions").ReleaseAction[], groupBy: import("../../../shared/contracts/release-actions").ReleaseActionGroupBy): Promise<import("lodash").Dictionary<(null | undefined)[]>>;
48
+ getContentTypeModelsFromActions(actions: import("../../../shared/contracts/release-actions").ReleaseAction[]): Promise<{} | undefined>;
49
+ countActions(query: import("@strapi/types/dist/modules/entity-service/params/index.js").Pick<typeof import("../constants").RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
50
+ update(actionId: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["actionId"], releaseId: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["releaseId"], update: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["body"]): Promise<any>;
51
+ delete(actionId: import("../../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["actionId"], releaseId: import("../../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["releaseId"]): Promise<any>;
52
+ validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid/index.js").ContentType[]): Promise<void>;
53
+ };
54
+ 'release-validation': ({ strapi }: {
55
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
56
+ }) => {
57
+ validateUniqueEntry(releaseId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], releaseActionArgs: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]): Promise<void>;
58
+ validateEntryData(contentTypeUid: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["contentType"], entryDocumentId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["entryDocumentId"]): void;
59
+ validatePendingReleasesLimit(): Promise<void>;
60
+ validateUniqueNameForPendingRelease(name: import("../../../shared/contracts/releases").CreateRelease.Request["body"]["name"], id?: import("../../../shared/contracts/releases").UpdateRelease.Request["params"]["id"]): Promise<void>;
61
+ validateScheduledAtIsLaterThanNow(scheduledAt: import("../../../shared/contracts/releases").CreateRelease.Request["body"]["scheduledAt"]): Promise<void>;
62
+ };
63
+ scheduling: ({ strapi }: {
64
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
65
+ }) => {
66
+ set(releaseId: import("../../../shared/contracts/releases").Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
67
+ cancel(releaseId: import("../../../shared/contracts/releases").Release["id"]): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
68
+ getAll(): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
69
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
70
+ };
71
+ settings: ({ strapi }: {
72
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
73
+ }) => {
74
+ update({ settings }: {
75
+ settings: import("../../../shared/contracts/settings").Settings;
76
+ }): Promise<import("../../../shared/contracts/settings").Settings>;
77
+ find(): Promise<import("../../../shared/contracts/settings").Settings>;
78
+ };
79
+ };
80
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ;;;;;;;;;;;;oBAQ2jG,yEAA6B;;;;;;;;;;;;;;;0BAAmnG,4EAAgC;2BAAq0C,6EAAiC;;;;;;0BAAprL,yFAAsC;sCAA8I,CAAC;;4BAAumE,uFAAoC;;;;;;;;;;;;yBAAq3I,yFAAsC,yBAA+B,yFAAsC;yBAAs7C,yFAAsC,yBAA+B,yFAAsC;;;;;;uCAAz+T,yFAAsC;0CAAs3C,uFAAoC,kCAAsC,uFAAoC;;kDAAw4C,0EAA8B,eAAmB,4EAAgC;uDAAyf,0EAA8B;;;;;;;;;;;;;;;;;;CADnwH,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { Core, Modules, UID } from '@strapi/types';
2
+ import { RELEASE_ACTION_MODEL_UID } from '../constants';
3
+ import type { CreateReleaseAction, GetReleaseActions, ReleaseAction, ReleaseActionGroupBy, UpdateReleaseAction, DeleteReleaseAction } from '../../../shared/contracts/release-actions';
4
+ import type { Entity } from '../../../shared/types';
5
+ export interface Locale extends Entity {
6
+ name: string;
7
+ code: string;
8
+ }
9
+ declare const createReleaseActionService: ({ strapi }: {
10
+ strapi: Core.Strapi;
11
+ }) => {
12
+ create(releaseId: CreateReleaseAction.Request["params"]["releaseId"], action: CreateReleaseAction.Request["body"], { disableUpdateReleaseStatus }?: {
13
+ disableUpdateReleaseStatus?: boolean;
14
+ }): Promise<any>;
15
+ findPage(releaseId: GetReleaseActions.Request["params"]["releaseId"], query?: GetReleaseActions.Request["query"]): Promise<{
16
+ results: any;
17
+ pagination: {
18
+ page: number;
19
+ pageSize: number;
20
+ pageCount: number;
21
+ total: number;
22
+ };
23
+ }>;
24
+ groupActions(actions: ReleaseAction[], groupBy: ReleaseActionGroupBy): Promise<import("lodash").Dictionary<(null | undefined)[]>>;
25
+ getContentTypeModelsFromActions(actions: ReleaseAction[]): Promise<{} | undefined>;
26
+ countActions(query: Modules.EntityService.Params.Pick<typeof RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
27
+ update(actionId: UpdateReleaseAction.Request["params"]["actionId"], releaseId: UpdateReleaseAction.Request["params"]["releaseId"], update: UpdateReleaseAction.Request["body"]): Promise<any>;
28
+ delete(actionId: DeleteReleaseAction.Request["params"]["actionId"], releaseId: DeleteReleaseAction.Request["params"]["releaseId"]): Promise<any>;
29
+ validateActionsByContentTypes(contentTypeUids: UID.ContentType[]): Promise<void>;
30
+ };
31
+ export type ReleaseActionService = ReturnType<typeof createReleaseActionService>;
32
+ export default createReleaseActionService;
33
+ //# sourceMappingURL=release-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-action.d.ts","sourceRoot":"","sources":["../../../../server/src/services/release-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAY,OAAO,EAAE,GAAG,EAAQ,MAAM,eAAe,CAAC;AAIxE,OAAO,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAE3E,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgBpD,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,QAAA,MAAM,0BAA0B,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;sBAyCtD,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,mCACH;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE;wBAoErE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACnD,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;0BAsDhB,aAAa,EAAE,WAAW,oBAAoB;6CA6B3B,aAAa,EAAE;wBAuCrD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,wBAAwB,EAAE,SAAS,CAAC;qBAQ1E,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;qBAwDjC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;mDAyBV,GAAG,CAAC,WAAW,EAAE;CAuDzE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Core, Data } from '@strapi/types';
2
+ import type { GetReleases, CreateRelease, UpdateRelease, PublishRelease, GetRelease, Release, DeleteRelease } from '../../../shared/contracts/releases';
3
+ import type { UserInfo } from '../../../shared/types';
4
+ declare const createReleaseService: ({ strapi }: {
5
+ strapi: Core.Strapi;
6
+ }) => {
7
+ create(releaseData: CreateRelease.Request["body"], { user }: {
8
+ user: UserInfo;
9
+ }): Promise<any>;
10
+ findOne(id: GetRelease.Request["params"]["id"], query?: {}): Promise<any>;
11
+ findPage(query?: GetReleases.Request["query"]): Promise<{
12
+ results: any[];
13
+ pagination: {
14
+ page: number;
15
+ pageSize: number;
16
+ pageCount: number;
17
+ total: number;
18
+ };
19
+ }>;
20
+ findMany(query?: any): Promise<any[]>;
21
+ update(id: Data.ID, releaseData: UpdateRelease.Request["body"], { user }: {
22
+ user: UserInfo;
23
+ }): Promise<any>;
24
+ getAllComponents(): Promise<any>;
25
+ delete(releaseId: DeleteRelease.Request["params"]["id"]): Promise<Release>;
26
+ publish(releaseId: PublishRelease.Request["params"]["id"]): Promise<Pick<Release, "id" | "releasedAt" | "status"> | null>;
27
+ updateReleaseStatus(releaseId: Release["id"]): Promise<any>;
28
+ };
29
+ export type ReleaseService = ReturnType<typeof createReleaseService>;
30
+ export default createReleaseService;
31
+ //# sourceMappingURL=release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../../../server/src/services/release.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAe,IAAI,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,OAAO,EACP,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,QAAA,MAAM,oBAAoB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;wBA2DnC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE;gBAiCnE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;qBAUnC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;qBAa5B,GAAG;eASd,IAAI,CAAC,EAAE,eACE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,YAChC;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE;;sBAsEN,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;uBA8CpC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;mCAiH1B,OAAO,CAAC,IAAI,CAAC;CAiDrD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Core } from '@strapi/types';
2
+ import { Release } from '../../../shared/contracts/releases';
3
+ declare const createSchedulingService: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => {
6
+ set(releaseId: Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
7
+ cancel(releaseId: Release["id"]): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
8
+ getAll(): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
9
+ /**
10
+ * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released
11
+ * This is useful in case the server was restarted and the scheduled jobs were lost
12
+ * This also could be used to sync different Strapi instances in case of a cluster
13
+ */
14
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
15
+ };
16
+ export default createSchedulingService;
17
+ //# sourceMappingURL=scheduling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,QAAA,MAAM,uBAAuB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBA+BpC,OAAO,CAAC,IAAI,CAAC;;IAe/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { Settings } from '../../../shared/contracts/settings';
3
+ declare const createSettingsService: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => {
6
+ update({ settings }: {
7
+ settings: Settings;
8
+ }): Promise<Settings>;
9
+ find(): Promise<Settings>;
10
+ };
11
+ export type SettingsService = ReturnType<typeof createSettingsService>;
12
+ export default createSettingsService;
13
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../server/src/services/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAMnE,QAAA,MAAM,qBAAqB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;yBAInC;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;YAKvD,OAAO,CAAC,QAAQ,CAAC;CAUlC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { errors } from '@strapi/utils';
2
+ import type { Core } from '@strapi/types';
3
+ import type { CreateRelease, UpdateRelease } from '../../../shared/contracts/releases';
4
+ import type { CreateReleaseAction } from '../../../shared/contracts/release-actions';
5
+ export declare class AlreadyOnReleaseError extends errors.ApplicationError<'AlreadyOnReleaseError'> {
6
+ constructor(message: string);
7
+ }
8
+ declare const createReleaseValidationService: ({ strapi }: {
9
+ strapi: Core.Strapi;
10
+ }) => {
11
+ validateUniqueEntry(releaseId: CreateReleaseAction.Request["params"]["releaseId"], releaseActionArgs: CreateReleaseAction.Request["body"]): Promise<void>;
12
+ validateEntryData(contentTypeUid: CreateReleaseAction.Request["body"]["contentType"], entryDocumentId: CreateReleaseAction.Request["body"]["entryDocumentId"]): void;
13
+ validatePendingReleasesLimit(): Promise<void>;
14
+ validateUniqueNameForPendingRelease(name: CreateRelease.Request["body"]["name"], id?: UpdateRelease.Request["params"]["id"]): Promise<void>;
15
+ validateScheduledAtIsLaterThanNow(scheduledAt: CreateRelease.Request["body"]["scheduledAt"]): Promise<void>;
16
+ };
17
+ export default createReleaseValidationService;
18
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../server/src/services/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAW,aAAa,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGrF,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;gBAC7E,OAAO,EAAE,MAAM;CAI5B;AAED,QAAA,MAAM,8BAA8B,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;mCAE5D,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,qBAC1C,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;sCAiCtC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,mBACjD,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC;;8CAuCjE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OACtC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;mDAmB7B,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;CAM3D,CAAC;AAEH,eAAe,8BAA8B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { UID, Data, Core } from '@strapi/types';
2
+ import type { SettingsService } from '../services/settings';
3
+ import type { ReleaseService } from '../services/release';
4
+ import type { ReleaseActionService } from '../services/release-action';
5
+ type Services = {
6
+ release: ReleaseService;
7
+ 'release-validation': any;
8
+ scheduling: any;
9
+ 'release-action': ReleaseActionService;
10
+ 'event-manager': any;
11
+ settings: SettingsService;
12
+ };
13
+ interface Action {
14
+ contentType: UID.ContentType;
15
+ documentId?: Data.DocumentID;
16
+ locale?: string;
17
+ }
18
+ export declare const getService: <TName extends keyof Services>(name: TName, { strapi }: {
19
+ strapi: Core.Strapi;
20
+ }) => Services[TName];
21
+ export declare const getDraftEntryValidStatus: ({ contentType, documentId, locale }: Action, { strapi }: {
22
+ strapi: Core.Strapi;
23
+ }) => Promise<boolean>;
24
+ export declare const isEntryValid: (contentTypeUid: string, entry: any, { strapi }: {
25
+ strapi: Core.Strapi;
26
+ }) => Promise<boolean>;
27
+ export declare const getEntry: ({ contentType, documentId, locale, populate, status, }: Action & {
28
+ status?: "draft" | "published";
29
+ populate: any;
30
+ }, { strapi }: {
31
+ strapi: Core.Strapi;
32
+ }) => Promise<import("@strapi/types/dist/modules/documents/index.js").AnyDocument | null>;
33
+ export declare const getEntryStatus: (contentType: UID.ContentType, entry: Data.ContentType) => Promise<"draft" | "published" | "modified">;
34
+ /**
35
+ * Returns content type UIDs sorted by relation dependency order for publishing.
36
+ * When content type A has a relation to content type B (both with draft & publish),
37
+ * B will appear before A in the result. This ensures that when publishing a release,
38
+ * related entities are published first, so that relation IDs can be correctly
39
+ * resolved (published target must exist when publishing source).
40
+ *
41
+ * Relations in components (nested or not) and dynamic zones are also considered.
42
+ *
43
+ * @param contentTypeUids - Content type UIDs that will be published in the release
44
+ * @param strapi - Strapi instance
45
+ * @returns Content type UIDs in publish order (dependencies first)
46
+ */
47
+ export declare const getPublishOrderForContentTypes: (contentTypeUids: UID.ContentType[], { strapi }: {
48
+ strapi: Core.Strapi;
49
+ }) => UID.ContentType[];
50
+ export {};
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,UAAU,MAAM;IACd,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,QAAQ,EACrD,MAAM,KAAK,EACX,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,qCAAqC,MAAM,EAC3C,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,gBAAgB,MAAM,EACtB,OAAO,GAAG,EACV,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBAoCpC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,wDAMG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EAC7D,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,wFAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,gDAwBzF,CAAC;AA+CF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,8BAA8B,GACzC,iBAAiB,GAAG,CAAC,WAAW,EAAE,EAClC,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,GAAG,CAAC,WAAW,EAsDjB,CAAC"}
@@ -0,0 +1,195 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@strapi/utils');
4
+
5
+ const getService = (name, { strapi: strapi1 })=>{
6
+ return strapi1.plugin('content-releases').service(name);
7
+ };
8
+ const getDraftEntryValidStatus = async ({ contentType, documentId, locale }, { strapi: strapi1 })=>{
9
+ const populateBuilderService = strapi1.plugin('content-manager').service('populate-builder');
10
+ // @ts-expect-error - populateBuilderService should be a function but is returning service
11
+ const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();
12
+ const entry = await getEntry({
13
+ contentType,
14
+ documentId,
15
+ locale,
16
+ populate
17
+ }, {
18
+ strapi: strapi1
19
+ });
20
+ return isEntryValid(contentType, entry, {
21
+ strapi: strapi1
22
+ });
23
+ };
24
+ const isEntryValid = async (contentTypeUid, entry, { strapi: strapi1 })=>{
25
+ try {
26
+ // Mirror the document-service publish path: when `api.documents.strictRelations`
27
+ // is on, required media/relations are enforced on non-draft writes. Reading the
28
+ // flag here keeps the release "valid" badge consistent with what publish will
29
+ // actually accept (otherwise the UI can mark an entry valid that publish rejects).
30
+ const rawStrictRelations = strapi1.config.get('api.documents.strictRelations', undefined);
31
+ const strictRelations = rawStrictRelations === true;
32
+ // @TODO: When documents service has validateEntityCreation method, use it instead
33
+ await strapi1.entityValidator.validateEntityCreation(strapi1.getModel(contentTypeUid), entry, {
34
+ isDraft: false,
35
+ locale: entry?.locale,
36
+ strictRelations
37
+ }, // @ts-expect-error - FIXME: entity here is unnecessary
38
+ entry);
39
+ const workflowsService = strapi1.plugin('review-workflows').service('workflows');
40
+ // Workflows service may not be available depending on the license
41
+ const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {
42
+ populate: 'stageRequiredToPublish'
43
+ });
44
+ if (workflow?.stageRequiredToPublish) {
45
+ return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;
46
+ }
47
+ return true;
48
+ } catch {
49
+ return false;
50
+ }
51
+ };
52
+ const getEntry = async ({ contentType, documentId, locale, populate, status = 'draft' }, { strapi: strapi1 })=>{
53
+ if (documentId) {
54
+ // Try to get an existing draft or published document
55
+ const entry = await strapi1.documents(contentType).findOne({
56
+ documentId,
57
+ locale,
58
+ populate,
59
+ status
60
+ });
61
+ // The document isn't published yet, but the action is to publish it, fetch the draft
62
+ if (status === 'published' && !entry) {
63
+ return strapi1.documents(contentType).findOne({
64
+ documentId,
65
+ locale,
66
+ populate,
67
+ status: 'draft'
68
+ });
69
+ }
70
+ return entry;
71
+ }
72
+ return strapi1.documents(contentType).findFirst({
73
+ locale,
74
+ populate,
75
+ status
76
+ });
77
+ };
78
+ const getEntryStatus = async (contentType, entry)=>{
79
+ if (entry.publishedAt) {
80
+ return 'published';
81
+ }
82
+ const publishedEntry = await strapi.documents(contentType).findOne({
83
+ documentId: entry.documentId,
84
+ locale: entry.locale,
85
+ status: 'published',
86
+ fields: [
87
+ 'updatedAt'
88
+ ]
89
+ });
90
+ if (!publishedEntry) {
91
+ return 'draft';
92
+ }
93
+ const entryUpdatedAt = new Date(entry.updatedAt).getTime();
94
+ const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();
95
+ if (entryUpdatedAt > publishedEntryUpdatedAt) {
96
+ return 'modified';
97
+ }
98
+ return 'published';
99
+ };
100
+ /**
101
+ * Recursively collects content type UIDs that a model (content type or component) has relations to.
102
+ * Go through component and dynamic zone attributes to find nested relations.
103
+ */ const collectRelationTargets = (modelUid, strapi1, visited = new Set())=>{
104
+ const targets = new Set();
105
+ if (visited.has(modelUid)) {
106
+ return targets;
107
+ }
108
+ visited.add(modelUid);
109
+ const model = strapi1.getModel(modelUid);
110
+ if (!model?.attributes) {
111
+ return targets;
112
+ }
113
+ for (const attribute of Object.values(model.attributes)){
114
+ if (attribute?.type === 'relation' && attribute.target) {
115
+ targets.add(attribute.target);
116
+ }
117
+ if (attribute?.type === 'component' && attribute.component) {
118
+ for (const t of collectRelationTargets(attribute.component, strapi1, visited)){
119
+ targets.add(t);
120
+ }
121
+ }
122
+ if (attribute?.type === 'dynamiczone' && attribute.components) {
123
+ for (const compUid of attribute.components){
124
+ for (const t of collectRelationTargets(compUid, strapi1, visited)){
125
+ targets.add(t);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ return targets;
131
+ };
132
+ /**
133
+ * Returns content type UIDs sorted by relation dependency order for publishing.
134
+ * When content type A has a relation to content type B (both with draft & publish),
135
+ * B will appear before A in the result. This ensures that when publishing a release,
136
+ * related entities are published first, so that relation IDs can be correctly
137
+ * resolved (published target must exist when publishing source).
138
+ *
139
+ * Relations in components (nested or not) and dynamic zones are also considered.
140
+ *
141
+ * @param contentTypeUids - Content type UIDs that will be published in the release
142
+ * @param strapi - Strapi instance
143
+ * @returns Content type UIDs in publish order (dependencies first)
144
+ */ const getPublishOrderForContentTypes = (contentTypeUids, { strapi: strapi1 })=>{
145
+ const uidSet = new Set(contentTypeUids);
146
+ // Build dependency graph: source depends on target (source must be published after target)
147
+ const dependencies = new Map();
148
+ for (const uid of contentTypeUids){
149
+ const model = strapi1.getModel(uid);
150
+ if (model && utils.contentTypes.hasDraftAndPublish(model)) {
151
+ const relationTargets = collectRelationTargets(uid, strapi1);
152
+ for (const targetUid of relationTargets){
153
+ const targetContentTypeUid = targetUid;
154
+ const isTargetInRelease = uidSet.has(targetContentTypeUid) && targetContentTypeUid in strapi1.contentTypes;
155
+ const targetModel = strapi1.getModel(targetContentTypeUid);
156
+ const targetHasDraftAndPublish = targetModel && utils.contentTypes.hasDraftAndPublish(targetModel);
157
+ if (isTargetInRelease && targetHasDraftAndPublish) {
158
+ let dependencySet = dependencies.get(uid);
159
+ if (!dependencySet) {
160
+ dependencySet = new Set();
161
+ dependencies.set(uid, dependencySet);
162
+ }
163
+ dependencySet.add(targetContentTypeUid);
164
+ }
165
+ }
166
+ }
167
+ }
168
+ // Topological sort: dependencies first
169
+ const sorted = [];
170
+ const visited = new Set();
171
+ const visiting = new Set();
172
+ const visit = (uid)=>{
173
+ if (visited.has(uid)) return;
174
+ if (visiting.has(uid)) return; // No cycle in valid schemas
175
+ visiting.add(uid);
176
+ for (const dep of dependencies.get(uid) ?? []){
177
+ visit(dep);
178
+ }
179
+ visiting.delete(uid);
180
+ visited.add(uid);
181
+ sorted.push(uid);
182
+ };
183
+ for (const uid of contentTypeUids){
184
+ visit(uid);
185
+ }
186
+ return sorted;
187
+ };
188
+
189
+ exports.getDraftEntryValidStatus = getDraftEntryValidStatus;
190
+ exports.getEntry = getEntry;
191
+ exports.getEntryStatus = getEntryStatus;
192
+ exports.getPublishOrderForContentTypes = getPublishOrderForContentTypes;
193
+ exports.getService = getService;
194
+ exports.isEntryValid = isEntryValid;
195
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","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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"}