@strapi/content-releases 0.0.0-experimental.fdacf4285d1cada9d94ab4dcd756c5362cba1b54 → 0.0.0-experimental.fecf677921383be55c6ab62960f7a6ff1f1a2d5e
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.
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -0
- package/dist/admin/components/EntryValidationPopover.js +310 -0
- package/dist/admin/components/EntryValidationPopover.js.map +1 -0
- package/dist/admin/components/EntryValidationPopover.mjs +308 -0
- package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
- package/dist/admin/components/RelativeTime.js +76 -0
- package/dist/admin/components/RelativeTime.js.map +1 -0
- package/dist/admin/components/RelativeTime.mjs +55 -0
- package/dist/admin/components/RelativeTime.mjs.map +1 -0
- package/dist/admin/components/ReleaseAction.js +203 -0
- package/dist/admin/components/ReleaseAction.js.map +1 -0
- package/dist/admin/components/ReleaseAction.mjs +201 -0
- package/dist/admin/components/ReleaseAction.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.js +194 -0
- package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
- package/dist/admin/components/ReleaseActionMenu.mjs +173 -0
- package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionModal.js +268 -0
- package/dist/admin/components/ReleaseActionModal.js.map +1 -0
- package/dist/admin/components/ReleaseActionModal.mjs +244 -0
- package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.js +104 -0
- package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
- package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
- package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
- package/dist/admin/components/ReleaseListCell.js +103 -0
- package/dist/admin/components/ReleaseListCell.js.map +1 -0
- package/dist/admin/components/ReleaseListCell.mjs +100 -0
- package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
- package/dist/admin/components/ReleaseModal.js +331 -0
- package/dist/admin/components/ReleaseModal.js.map +1 -0
- package/dist/admin/components/ReleaseModal.mjs +310 -0
- package/dist/admin/components/ReleaseModal.mjs.map +1 -0
- package/dist/admin/components/ReleasesPanel.js +138 -0
- package/dist/admin/components/ReleasesPanel.js.map +1 -0
- package/dist/admin/components/ReleasesPanel.mjs +136 -0
- package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
- package/dist/admin/components/Widgets.js +122 -0
- package/dist/admin/components/Widgets.js.map +1 -0
- package/dist/admin/components/Widgets.mjs +120 -0
- package/dist/admin/components/Widgets.mjs.map +1 -0
- package/dist/admin/constants.js +79 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +76 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/index.js +148 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +143 -4
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/modules/hooks.js +8 -0
- package/dist/admin/modules/hooks.js.map +1 -0
- package/dist/admin/modules/hooks.mjs +6 -0
- package/dist/admin/modules/hooks.mjs.map +1 -0
- package/dist/admin/pages/App.js +29 -0
- package/dist/admin/pages/App.js.map +1 -0
- package/dist/admin/pages/App.mjs +27 -0
- package/dist/admin/pages/App.mjs.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.js +192 -0
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.js +774 -0
- package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs +753 -0
- package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
- package/dist/admin/pages/ReleasesPage.js +405 -0
- package/dist/admin/pages/ReleasesPage.js.map +1 -0
- package/dist/admin/pages/ReleasesPage.mjs +383 -0
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
- package/dist/admin/pages/ReleasesSettingsPage.js +225 -0
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
- package/dist/admin/pages/ReleasesSettingsPage.mjs +223 -0
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/services/homepage.js +24 -0
- package/dist/admin/services/homepage.js.map +1 -0
- package/dist/admin/services/homepage.mjs +22 -0
- package/dist/admin/services/homepage.mjs.map +1 -0
- package/dist/admin/services/release.js +473 -0
- package/dist/admin/services/release.js.map +1 -0
- package/dist/admin/services/release.mjs +456 -0
- package/dist/admin/services/release.mjs.map +1 -0
- package/dist/admin/src/components/EntryValidationPopover.d.ts +2 -1
- package/dist/admin/src/components/ReleaseListCell.d.ts +1 -1
- package/dist/admin/src/components/Widgets.d.ts +2 -0
- package/dist/admin/src/constants.d.ts +1 -0
- package/dist/admin/src/services/homepage.d.ts +9 -0
- package/dist/admin/src/services/release.d.ts +28 -28
- package/dist/admin/store/hooks.js +8 -0
- package/dist/admin/store/hooks.js.map +1 -0
- package/dist/admin/store/hooks.mjs +6 -0
- package/dist/admin/store/hooks.mjs.map +1 -0
- package/dist/admin/translations/en.json.js +111 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +109 -0
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/translations/uk.json.js +103 -0
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/translations/uk.json.mjs +101 -0
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/utils/api.js +8 -0
- package/dist/admin/utils/api.js.map +1 -0
- package/dist/admin/utils/api.mjs +6 -0
- package/dist/admin/utils/api.mjs.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.js +11 -0
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/utils/time.js +42 -0
- package/dist/admin/utils/time.js.map +1 -0
- package/dist/admin/utils/time.mjs +39 -0
- package/dist/admin/utils/time.mjs.map +1 -0
- package/dist/admin/validation/schemas.js +65 -0
- package/dist/admin/validation/schemas.js.map +1 -0
- package/dist/admin/validation/schemas.mjs +43 -0
- package/dist/admin/validation/schemas.mjs.map +1 -0
- package/dist/server/bootstrap.js +68 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +66 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/constants.js +74 -0
- package/dist/server/constants.js.map +1 -0
- package/dist/server/constants.mjs +69 -0
- package/dist/server/constants.mjs.map +1 -0
- package/dist/server/content-types/index.js +12 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +10 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/release/index.js +10 -0
- package/dist/server/content-types/release/index.js.map +1 -0
- package/dist/server/content-types/release/index.mjs +8 -0
- package/dist/server/content-types/release/index.mjs.map +1 -0
- package/dist/server/content-types/release/schema.js +58 -0
- package/dist/server/content-types/release/schema.js.map +1 -0
- package/dist/server/content-types/release/schema.mjs +56 -0
- package/dist/server/content-types/release/schema.mjs.map +1 -0
- package/dist/server/content-types/release-action/index.js +10 -0
- package/dist/server/content-types/release-action/index.js.map +1 -0
- package/dist/server/content-types/release-action/index.mjs +8 -0
- package/dist/server/content-types/release-action/index.mjs.map +1 -0
- package/dist/server/content-types/release-action/schema.js +55 -0
- package/dist/server/content-types/release-action/schema.js.map +1 -0
- package/dist/server/content-types/release-action/schema.mjs +53 -0
- package/dist/server/content-types/release-action/schema.mjs.map +1 -0
- package/dist/server/controllers/homepage.js +15 -0
- package/dist/server/controllers/homepage.js.map +1 -0
- package/dist/server/controllers/homepage.mjs +13 -0
- package/dist/server/controllers/homepage.mjs.map +1 -0
- package/dist/server/controllers/index.js +16 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +14 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/release-action.js +150 -0
- package/dist/server/controllers/release-action.js.map +1 -0
- package/dist/server/controllers/release-action.mjs +148 -0
- package/dist/server/controllers/release-action.mjs.map +1 -0
- package/dist/server/controllers/release.js +302 -0
- package/dist/server/controllers/release.js.map +1 -0
- package/dist/server/controllers/release.mjs +300 -0
- package/dist/server/controllers/release.mjs.map +1 -0
- package/dist/server/controllers/settings.js +37 -0
- package/dist/server/controllers/settings.js.map +1 -0
- package/dist/server/controllers/settings.mjs +35 -0
- package/dist/server/controllers/settings.mjs.map +1 -0
- package/dist/server/controllers/validation/release-action.js +34 -0
- package/dist/server/controllers/validation/release-action.js.map +1 -0
- package/dist/server/controllers/validation/release-action.mjs +30 -0
- package/dist/server/controllers/validation/release-action.mjs.map +1 -0
- package/dist/server/controllers/validation/release.js +26 -0
- package/dist/server/controllers/validation/release.js.map +1 -0
- package/dist/server/controllers/validation/release.mjs +22 -0
- package/dist/server/controllers/validation/release.mjs.map +1 -0
- package/dist/server/controllers/validation/settings.js +32 -0
- package/dist/server/controllers/validation/settings.js.map +1 -0
- package/dist/server/controllers/validation/settings.mjs +10 -0
- package/dist/server/controllers/validation/settings.mjs.map +1 -0
- package/dist/server/destroy.js +15 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/destroy.mjs +13 -0
- package/dist/server/destroy.mjs.map +1 -0
- package/dist/server/index.js +25 -1985
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +24 -1965
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/documents.js +104 -0
- package/dist/server/middlewares/documents.js.map +1 -0
- package/dist/server/middlewares/documents.mjs +101 -0
- package/dist/server/middlewares/documents.mjs.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
- package/dist/server/migrations/index.js +205 -0
- package/dist/server/migrations/index.js.map +1 -0
- package/dist/server/migrations/index.mjs +198 -0
- package/dist/server/migrations/index.mjs.map +1 -0
- package/dist/server/register.js +23 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +21 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/homepage.js +25 -0
- package/dist/server/routes/homepage.js.map +1 -0
- package/dist/server/routes/homepage.mjs +23 -0
- package/dist/server/routes/homepage.mjs.map +1 -0
- package/dist/server/routes/index.js +16 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +14 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/release-action.js +100 -0
- package/dist/server/routes/release-action.js.map +1 -0
- package/dist/server/routes/release-action.mjs +98 -0
- package/dist/server/routes/release-action.mjs.map +1 -0
- package/dist/server/routes/release.js +154 -0
- package/dist/server/routes/release.js.map +1 -0
- package/dist/server/routes/release.mjs +152 -0
- package/dist/server/routes/release.mjs.map +1 -0
- package/dist/server/routes/settings.js +46 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/settings.mjs +44 -0
- package/dist/server/routes/settings.mjs.map +1 -0
- package/dist/server/services/homepage.js +26 -0
- package/dist/server/services/homepage.js.map +1 -0
- package/dist/server/services/homepage.mjs +24 -0
- package/dist/server/services/homepage.mjs.map +1 -0
- package/dist/server/services/index.js +20 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +18 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/release-action.js +324 -0
- package/dist/server/services/release-action.js.map +1 -0
- package/dist/server/services/release-action.mjs +322 -0
- package/dist/server/services/release-action.mjs.map +1 -0
- package/dist/server/services/release.js +324 -0
- package/dist/server/services/release.js.map +1 -0
- package/dist/server/services/release.mjs +322 -0
- package/dist/server/services/release.mjs.map +1 -0
- package/dist/server/services/scheduling.js +74 -0
- package/dist/server/services/scheduling.js.map +1 -0
- package/dist/server/services/scheduling.mjs +72 -0
- package/dist/server/services/scheduling.mjs.map +1 -0
- package/dist/server/services/settings.js +34 -0
- package/dist/server/services/settings.js.map +1 -0
- package/dist/server/services/settings.mjs +32 -0
- package/dist/server/services/settings.mjs.map +1 -0
- package/dist/server/services/validation.js +91 -0
- package/dist/server/services/validation.js.map +1 -0
- package/dist/server/services/validation.mjs +86 -0
- package/dist/server/services/validation.mjs.map +1 -0
- package/dist/server/src/controllers/homepage.d.ts +6 -0
- package/dist/server/src/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +3 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/destroy.d.ts +1 -1
- package/dist/server/src/destroy.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +14 -4
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/documents.d.ts +1 -1
- package/dist/server/src/middlewares/documents.d.ts.map +1 -1
- package/dist/server/src/migrations/database/5.0.0-document-id-in-actions.d.ts.map +1 -1
- package/dist/server/src/routes/homepage.d.ts +4 -0
- package/dist/server/src/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts +9 -0
- package/dist/server/src/services/homepage.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +10 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +2 -1
- package/dist/server/src/services/release-action.d.ts.map +1 -1
- package/dist/server/src/services/scheduling.d.ts +5 -6
- package/dist/server/src/services/scheduling.d.ts.map +1 -1
- package/dist/server/src/services/validation.d.ts +1 -1
- package/dist/server/src/services/validation.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js +94 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +88 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/dist/shared/contracts/homepage.d.ts +11 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -0
- package/dist/shared/contracts/release-actions.d.ts +1 -1
- package/dist/shared/contracts/release-actions.d.ts.map +1 -1
- package/dist/shared/contracts/releases.d.ts +0 -1
- package/dist/shared/contracts/settings.d.ts +1 -2
- package/dist/shared/contracts/settings.d.ts.map +1 -1
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +25 -24
- package/dist/_chunks/App-B7XAvv8M.mjs +0 -1545
- package/dist/_chunks/App-B7XAvv8M.mjs.map +0 -1
- package/dist/_chunks/App-bh0od5o7.js +0 -1566
- package/dist/_chunks/App-bh0od5o7.js.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js +0 -52
- package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs +0 -52
- package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-DI0i3yzr.mjs +0 -178
- package/dist/_chunks/ReleasesSettingsPage-DI0i3yzr.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-DegTeuSf.js +0 -178
- package/dist/_chunks/ReleasesSettingsPage-DegTeuSf.js.map +0 -1
- package/dist/_chunks/en-BWPPsSH-.js +0 -102
- package/dist/_chunks/en-BWPPsSH-.js.map +0 -1
- package/dist/_chunks/en-D9Q4YW03.mjs +0 -102
- package/dist/_chunks/en-D9Q4YW03.mjs.map +0 -1
- package/dist/_chunks/index-B7aCK4-q.js +0 -1384
- package/dist/_chunks/index-B7aCK4-q.js.map +0 -1
- package/dist/_chunks/index-ok-2phdF.mjs +0 -1365
- package/dist/_chunks/index-ok-2phdF.mjs.map +0 -1
- package/dist/_chunks/schemas-BE1LxE9J.js +0 -62
- package/dist/_chunks/schemas-BE1LxE9J.js.map +0 -1
- package/dist/_chunks/schemas-DdA2ic2U.mjs +0 -44
- package/dist/_chunks/schemas-DdA2ic2U.mjs.map +0 -1
|
@@ -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","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","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":";;;AAMO,MAAMA,qBAA8BC,SAAAA,MAAAA,CAAOC,gBAAgB,CAAA;AAChE,IAAA,WAAA,CAAYC,OAAe,CAAE;AAC3B,QAAA,KAAK,CAACA,OAAAA,CAAAA;QACN,IAAI,CAACC,IAAI,GAAG,uBAAA;AACd;AACF;AAEA,MAAMC,iCAAiC,CAAC,EAAEC,MAAM,EAA2B,IAAM;QAC/E,MAAMC,mBAAAA,CAAAA,CACJC,SAA6D,EAC7DC,iBAAsD,EAAA;AAEtD;;;QAIA,MAAMC,OAAW,GAAA,MAAMJ,MAAOK,CAAAA,EAAE,CAACC,KAAK,CAACC,iBAAmBC,CAAAA,CAAAA,OAAO,CAAC;gBAChEC,KAAO,EAAA;oBACLC,EAAIR,EAAAA;AACN,iBAAA;gBACAS,QAAU,EAAA;oBACRC,OAAS,EAAA;AACX;AACF,aAAA,CAAA;AAEA,YAAA,IAAI,CAACR,OAAS,EAAA;AACZ,gBAAA,MAAM,IAAIT,MAAOkB,CAAAA,aAAa,CAAC,CAAC,wBAAwB,EAAEX,SAAW,CAAA,CAAA,CAAA;AACvE;AAEA,YAAA,MAAMY,gBAAmBV,GAAAA,OAAAA,CAAQQ,OAAO,CAACG,IAAI,CAC3C,CAACC,MAAAA,GACCA,MAAOC,CAAAA,eAAe,KAAKd,iBAAAA,CAAkBc,eAAe,IAC5DD,MAAAA,CAAOE,WAAW,KAAKf,iBAAkBe,CAAAA,WAAW,KACnDf,iBAAkBgB,CAAAA,MAAM,GAAGH,MAAAA,CAAOG,MAAM,KAAKhB,iBAAkBgB,CAAAA,MAAM,GAAG,IAAG,CAAA,CAAA;AAGhF,YAAA,IAAIL,gBAAkB,EAAA;AACpB,gBAAA,MAAM,IAAIpB,qBAAAA,CACR,CAAC,sBAAsB,EAAES,iBAAAA,CAAkBc,eAAe,CAAA,EAAGd,iBAAkBgB,CAAAA,MAAM,GAAG,CAAC,EAAE,EAAEhB,iBAAkBgB,CAAAA,MAAM,CAAC,CAAC,CAAC,GAAG,EAAG,CAAA,iBAAiB,EAAEhB,iBAAAA,CAAkBe,WAAW,CAAC,mCAAmC,EAAEhB,SAAW,CAAA,CAAA,CAAA;AAEnO;AACF,SAAA;QACAkB,iBACEC,CAAAA,CAAAA,cAAkE,EAClEJ,eAAuE,EAAA;YAEvE,MAAMC,WAAAA,GAAclB,MAAOkB,CAAAA,WAAW,CAACG,cAAAA,CAAAA;AAEvC,YAAA,IAAI,CAACH,WAAa,EAAA;AAChB,gBAAA,MAAM,IAAIvB,MAAOkB,CAAAA,aAAa,CAAC,CAAC,8BAA8B,EAAEQ,cAAgB,CAAA,CAAA,CAAA;AAClF;AAEA,YAAA,IAAI,CAACC,YAAAA,CAAaC,kBAAkB,CAACL,WAAc,CAAA,EAAA;gBACjD,MAAM,IAAIvB,OAAO6B,eAAe,CAC9B,CAAC,sBAAsB,EAAEH,cAAe,CAAA,sCAAsC,CAAC,CAAA;AAEnF;AAEA,YAAA,IAAIH,WAAYO,CAAAA,IAAI,KAAK,gBAAA,IAAoB,CAACR,eAAiB,EAAA;gBAC7D,MAAM,IAAItB,MAAO6B,CAAAA,eAAe,CAAC,6CAAA,CAAA;AACnC;AACF,SAAA;QACA,MAAME,4BAAAA,CAAAA,GAAAA;;AAEJ,YAAA,MAAMC,aAAa3B,MAAO4B,CAAAA,EAAE,CAACC,QAAQ,CAACC,GAAG,CAAC,sBAAA,CAAA;AAE1C,YAAA,MAAMC,yBACJ,OAAQJ,eAAe,QAAYA,IAAAA,UAAAA,EAAYK,SAASC,eAAoB,IAAA,CAAA;YAE9E,MAAM,GAAGC,oBAAqB,CAAA,GAAG,MAAMlC,MAAAA,CAAOK,EAAE,CAACC,KAAK,CAACC,iBAAmB4B,CAAAA,CAAAA,aAAa,CAAC;gBACtFC,OAAS,EAAA;oBACPC,UAAY,EAAA;wBACVC,KAAO,EAAA;AACT;AACF;AACF,aAAA,CAAA;;AAGA,YAAA,IAAIJ,wBAAwBH,sBAAwB,EAAA;gBAClD,MAAM,IAAIpC,MAAO6B,CAAAA,eAAe,CAAC,yDAAA,CAAA;AACnC;AACF,SAAA;QACA,MAAMe,mCAAAA,CAAAA,CACJzC,IAA2C,EAC3CY,EAA0C,EAAA;YAE1C,MAAM8B,eAAAA,GAAmB,MAAMxC,MAAOK,CAAAA,EAAE,CAACC,KAAK,CAACC,iBAAmBkC,CAAAA,CAAAA,QAAQ,CAAC;gBACzEhC,KAAO,EAAA;oBACL4B,UAAY,EAAA;wBACVC,KAAO,EAAA;AACT,qBAAA;AACAxC,oBAAAA,IAAAA;AACA,oBAAA,GAAIY,EAAM,IAAA;wBAAEA,EAAI,EAAA;4BAAEgC,GAAKhC,EAAAA;AAAG;;AAC5B;AACF,aAAA,CAAA;YAEA,MAAMiC,YAAAA,GAAeH,eAAgBI,CAAAA,MAAM,KAAK,CAAA;AAEhD,YAAA,IAAI,CAACD,YAAc,EAAA;gBACjB,MAAM,IAAIhD,OAAO6B,eAAe,CAAC,CAAC,kBAAkB,EAAE1B,IAAK,CAAA,eAAe,CAAC,CAAA;AAC7E;AACF,SAAA;AACA,QAAA,MAAM+C,mCACJC,WAAyD,EAAA;AAEzD,YAAA,IAAIA,WAAe,IAAA,IAAIC,IAAKD,CAAAA,WAAAA,CAAAA,IAAgB,IAAIC,IAAQ,EAAA,EAAA;gBACtD,MAAM,IAAIpD,MAAO6B,CAAAA,eAAe,CAAC,qCAAA,CAAA;AACnC;AACF;KACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/homepage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,kBAAkB;2BAIS,QAAQ,4BAA4B,CAAC;CAIrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/// <reference types="koa" />
|
|
2
2
|
export declare const controllers: {
|
|
3
|
+
homepage: () => {
|
|
4
|
+
getUpcomingReleases(): Promise<import("../../../shared/contracts/homepage").GetUpcomingReleases.Response>;
|
|
5
|
+
};
|
|
3
6
|
release: {
|
|
4
7
|
findByDocumentAttached(ctx: import("koa").Context): Promise<void>;
|
|
5
8
|
findPage(ctx: import("koa").Context): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/index.ts"],"names":[],"mappings":";AAKA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAKvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../../server/src/destroy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../../server/src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,eAAO,MAAM,OAAO,eAAsB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,kBAQhE,CAAC"}
|
|
@@ -107,6 +107,11 @@ declare const _default: {
|
|
|
107
107
|
};
|
|
108
108
|
};
|
|
109
109
|
services: {
|
|
110
|
+
homepage: ({ strapi }: {
|
|
111
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
112
|
+
}) => {
|
|
113
|
+
getUpcomingReleases(): Promise<import("../../shared/contracts/releases").Release[]>;
|
|
114
|
+
};
|
|
110
115
|
release: ({ strapi }: {
|
|
111
116
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
112
117
|
}) => {
|
|
@@ -1895,6 +1900,7 @@ declare const _default: {
|
|
|
1895
1900
|
type: "publish" | "unpublish";
|
|
1896
1901
|
}): Promise<any>;
|
|
1897
1902
|
delete(actionId: import("@strapi/types/dist/data").ID, releaseId: import("@strapi/types/dist/data").ID): Promise<any>;
|
|
1903
|
+
validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid").ContentType[]): Promise<void>;
|
|
1898
1904
|
};
|
|
1899
1905
|
'release-validation': ({ strapi }: {
|
|
1900
1906
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
@@ -1913,10 +1919,10 @@ declare const _default: {
|
|
|
1913
1919
|
scheduling: ({ strapi }: {
|
|
1914
1920
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
1915
1921
|
}) => {
|
|
1916
|
-
set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
1917
|
-
cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID,
|
|
1918
|
-
getAll(): Map<import("@strapi/types/dist/data").ID,
|
|
1919
|
-
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
1922
|
+
set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
1923
|
+
cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, string>;
|
|
1924
|
+
getAll(): Map<import("@strapi/types/dist/data").ID, string>;
|
|
1925
|
+
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
1920
1926
|
};
|
|
1921
1927
|
settings: ({ strapi }: {
|
|
1922
1928
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
@@ -1928,6 +1934,9 @@ declare const _default: {
|
|
|
1928
1934
|
};
|
|
1929
1935
|
};
|
|
1930
1936
|
controllers: {
|
|
1937
|
+
homepage: () => {
|
|
1938
|
+
getUpcomingReleases(): Promise<import("../../shared/contracts/homepage").GetUpcomingReleases.Response>;
|
|
1939
|
+
};
|
|
1931
1940
|
release: {
|
|
1932
1941
|
findByDocumentAttached(ctx: import("koa").Context): Promise<void>;
|
|
1933
1942
|
findPage(ctx: import("koa").Context): Promise<void>;
|
|
@@ -1951,6 +1960,7 @@ declare const _default: {
|
|
|
1951
1960
|
};
|
|
1952
1961
|
};
|
|
1953
1962
|
routes: {
|
|
1963
|
+
homepage: import("@strapi/types/dist/core").Router;
|
|
1954
1964
|
settings: {
|
|
1955
1965
|
type: string;
|
|
1956
1966
|
routes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,wBAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAO,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../server/src/middlewares/documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAO,MAAM,eAAe,CAAC;AAKlD,KAAK,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;AAyD1D,QAAA,MAAM,qBAAqB,EAAE,UA+B5B,CAAC;AAEF,QAAA,MAAM,qBAAqB,EAAE,UA0B5B,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5.0.0-document-id-in-actions.d.ts","sourceRoot":"","sources":["../../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,kBAAkB,CAAC;AAI5D;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,
|
|
1
|
+
{"version":3,"file":"5.0.0-document-id-in-actions.d.ts","sourceRoot":"","sources":["../../../../../server/src/migrations/database/5.0.0-document-id-in-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,kBAAkB,CAAC;AAI5D;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,SA6C9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAazD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
2
|
+
import type { GetUpcomingReleases } from '../../../shared/contracts/homepage';
|
|
3
|
+
declare const createHomepageService: ({ strapi }: {
|
|
4
|
+
strapi: Core.Strapi;
|
|
5
|
+
}) => {
|
|
6
|
+
getUpcomingReleases(): Promise<GetUpcomingReleases.Response['data']>;
|
|
7
|
+
};
|
|
8
|
+
export default createHomepageService;
|
|
9
|
+
//# sourceMappingURL=homepage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.d.ts","sourceRoot":"","sources":["../../../../server/src/services/homepage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,qBAAqB,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;2BAIjC,QAAQ,4BAA4B,CAAC,MAAM,CAAC,CAAC;CAc7E,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
2
|
export declare const services: {
|
|
3
|
+
homepage: ({ strapi }: {
|
|
4
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
5
|
+
}) => {
|
|
6
|
+
getUpcomingReleases(): Promise<import("../../../shared/contracts/releases").Release[]>;
|
|
7
|
+
};
|
|
3
8
|
release: ({ strapi }: {
|
|
4
9
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
5
10
|
}) => {
|
|
@@ -1788,6 +1793,7 @@ export declare const services: {
|
|
|
1788
1793
|
type: "publish" | "unpublish";
|
|
1789
1794
|
}): Promise<any>;
|
|
1790
1795
|
delete(actionId: import("@strapi/types/dist/data").ID, releaseId: import("@strapi/types/dist/data").ID): Promise<any>;
|
|
1796
|
+
validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid").ContentType[]): Promise<void>;
|
|
1791
1797
|
};
|
|
1792
1798
|
'release-validation': ({ strapi }: {
|
|
1793
1799
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
@@ -1806,10 +1812,10 @@ export declare const services: {
|
|
|
1806
1812
|
scheduling: ({ strapi }: {
|
|
1807
1813
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
1808
1814
|
}) => {
|
|
1809
|
-
set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
1810
|
-
cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID,
|
|
1811
|
-
getAll(): Map<import("@strapi/types/dist/data").ID,
|
|
1812
|
-
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
1815
|
+
set(releaseId: import("@strapi/types/dist/data").ID, scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
1816
|
+
cancel(releaseId: import("@strapi/types/dist/data").ID): Map<import("@strapi/types/dist/data").ID, string>;
|
|
1817
|
+
getAll(): Map<import("@strapi/types/dist/data").ID, string>;
|
|
1818
|
+
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
1813
1819
|
};
|
|
1814
1820
|
settings: ({ strapi }: {
|
|
1815
1821
|
strapi: import("@strapi/types/dist/core").Strapi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
|
-
import type { Core, Modules } from '@strapi/types';
|
|
2
|
+
import type { Core, Modules, UID } from '@strapi/types';
|
|
3
3
|
import { RELEASE_ACTION_MODEL_UID } from '../constants';
|
|
4
4
|
import type { CreateReleaseAction, GetReleaseActions, ReleaseAction, ReleaseActionGroupBy, UpdateReleaseAction, DeleteReleaseAction } from '../../../shared/contracts/release-actions';
|
|
5
5
|
import type { Entity } from '../../../shared/types';
|
|
@@ -27,6 +27,7 @@ declare const createReleaseActionService: ({ strapi }: {
|
|
|
27
27
|
countActions(query: Modules.EntityService.Params.Pick<typeof RELEASE_ACTION_MODEL_UID, 'filters'>): Promise<number>;
|
|
28
28
|
update(actionId: UpdateReleaseAction.Request['params']['actionId'], releaseId: UpdateReleaseAction.Request['params']['releaseId'], update: UpdateReleaseAction.Request['body']): Promise<any>;
|
|
29
29
|
delete(actionId: DeleteReleaseAction.Request['params']['actionId'], releaseId: DeleteReleaseAction.Request['params']['releaseId']): Promise<any>;
|
|
30
|
+
validateActionsByContentTypes(contentTypeUids: UID.ContentType[]): Promise<void>;
|
|
30
31
|
};
|
|
31
32
|
export type ReleaseActionService = ReturnType<typeof createReleaseActionService>;
|
|
32
33
|
export default createReleaseActionService;
|
|
@@ -1 +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,MAAM,eAAe,CAAC;
|
|
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,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;sBAyCtD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC,mCACH;QAAE,0BAA0B,CAAC,EAAE,OAAO,CAAA;KAAE;wBAoErE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACnD,yBAAyB,CAAC,OAAO,CAAC;;;;;;;;;0BAsDhB,aAAa,EAAE,WAAW,oBAAoB;6CA6B3B,aAAa,EAAE;wBAuCrD,QAAQ,aAAa,CAAC,MAAM,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC;qBAQ1E,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UACrD,2BAA2B,CAAC,MAAM,CAAC;qBAwDjC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAChD,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;mDAyBV,IAAI,WAAW,EAAE;CAuDzE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Core } from '@strapi/types';
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
3
2
|
import { Release } from '../../../shared/contracts/releases';
|
|
4
3
|
declare const createSchedulingService: ({ strapi }: {
|
|
5
4
|
strapi: Core.Strapi;
|
|
6
5
|
}) => {
|
|
7
|
-
set(releaseId: Release['id'], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
8
|
-
cancel(releaseId: Release['id']): Map<import("@strapi/types/dist/data").ID,
|
|
9
|
-
getAll(): Map<import("@strapi/types/dist/data").ID,
|
|
6
|
+
set(releaseId: Release['id'], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
7
|
+
cancel(releaseId: Release['id']): Map<import("@strapi/types/dist/data").ID, string>;
|
|
8
|
+
getAll(): Map<import("@strapi/types/dist/data").ID, string>;
|
|
10
9
|
/**
|
|
11
10
|
* On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released
|
|
12
11
|
* This is useful in case the server was restarted and the scheduled jobs were lost
|
|
13
12
|
* This also could be used to sync different Strapi instances in case of a cluster
|
|
14
13
|
*/
|
|
15
|
-
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID,
|
|
14
|
+
syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
|
|
16
15
|
};
|
|
17
16
|
export default createSchedulingService;
|
|
18
17
|
//# sourceMappingURL=scheduling.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBAkCpC,OAAO,CAAC,IAAI,CAAC;;IAa/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { errors } from '@strapi/utils';
|
|
2
|
-
import { Core } from '@strapi/types';
|
|
2
|
+
import type { Core } from '@strapi/types';
|
|
3
3
|
import type { CreateRelease, UpdateRelease } from '../../../shared/contracts/releases';
|
|
4
4
|
import type { CreateReleaseAction } from '../../../shared/contracts/release-actions';
|
|
5
5
|
export declare class AlreadyOnReleaseError extends errors.ApplicationError<'AlreadyOnReleaseError'> {
|
|
@@ -1 +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,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;
|
|
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,eAAgB;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;mCAE5D,2BAA2B,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,qBAC1C,2BAA2B,CAAC,MAAM,CAAC;sCAiCtC,2BAA2B,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,mBACjD,2BAA2B,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC;;8CAuCjE,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OACtC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;mDAmB7B,qBAAqB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;CAM3D,CAAC;AAEH,eAAe,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,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,uCACf,KAAK,cACC;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wCACE,MAAM,cAC/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,mBACP,MAAM,SACf,GAAG,cACE;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAAA,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,uCACf,KAAK,cACC;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wCACE,MAAM,cAC/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,mBACP,MAAM,SACf,GAAG,cACE;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,qBA0BpC,CAAC;AAEF,eAAO,MAAM,QAAQ,2DAOhB,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,cACjD;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE,+EAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,gBAAuB,IAAI,WAAW,SAAS,KAAK,WAAW,gDAwBzF,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const getService = (name, { strapi: strapi1 })=>{
|
|
4
|
+
return strapi1.plugin('content-releases').service(name);
|
|
5
|
+
};
|
|
6
|
+
const getDraftEntryValidStatus = async ({ contentType, documentId, locale }, { strapi: strapi1 })=>{
|
|
7
|
+
const populateBuilderService = strapi1.plugin('content-manager').service('populate-builder');
|
|
8
|
+
// @ts-expect-error - populateBuilderService should be a function but is returning service
|
|
9
|
+
const populate = await populateBuilderService(contentType).populateDeep(Infinity).build();
|
|
10
|
+
const entry = await getEntry({
|
|
11
|
+
contentType,
|
|
12
|
+
documentId,
|
|
13
|
+
locale,
|
|
14
|
+
populate
|
|
15
|
+
}, {
|
|
16
|
+
strapi: strapi1
|
|
17
|
+
});
|
|
18
|
+
return isEntryValid(contentType, entry, {
|
|
19
|
+
strapi: strapi1
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const isEntryValid = async (contentTypeUid, entry, { strapi: strapi1 })=>{
|
|
23
|
+
try {
|
|
24
|
+
// @TODO: When documents service has validateEntityCreation method, use it instead
|
|
25
|
+
await strapi1.entityValidator.validateEntityCreation(strapi1.getModel(contentTypeUid), entry, undefined, // @ts-expect-error - FIXME: entity here is unnecessary
|
|
26
|
+
entry);
|
|
27
|
+
const workflowsService = strapi1.plugin('review-workflows').service('workflows');
|
|
28
|
+
// Workflows service may not be available depending on the license
|
|
29
|
+
const workflow = await workflowsService?.getAssignedWorkflow(contentTypeUid, {
|
|
30
|
+
populate: 'stageRequiredToPublish'
|
|
31
|
+
});
|
|
32
|
+
if (workflow?.stageRequiredToPublish) {
|
|
33
|
+
return entry.strapi_stage.id === workflow.stageRequiredToPublish.id;
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
} catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const getEntry = async ({ contentType, documentId, locale, populate, status = 'draft' }, { strapi: strapi1 })=>{
|
|
41
|
+
if (documentId) {
|
|
42
|
+
// Try to get an existing draft or published document
|
|
43
|
+
const entry = await strapi1.documents(contentType).findOne({
|
|
44
|
+
documentId,
|
|
45
|
+
locale,
|
|
46
|
+
populate,
|
|
47
|
+
status
|
|
48
|
+
});
|
|
49
|
+
// The document isn't published yet, but the action is to publish it, fetch the draft
|
|
50
|
+
if (status === 'published' && !entry) {
|
|
51
|
+
return strapi1.documents(contentType).findOne({
|
|
52
|
+
documentId,
|
|
53
|
+
locale,
|
|
54
|
+
populate,
|
|
55
|
+
status: 'draft'
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return entry;
|
|
59
|
+
}
|
|
60
|
+
return strapi1.documents(contentType).findFirst({
|
|
61
|
+
locale,
|
|
62
|
+
populate,
|
|
63
|
+
status
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const getEntryStatus = async (contentType, entry)=>{
|
|
67
|
+
if (entry.publishedAt) {
|
|
68
|
+
return 'published';
|
|
69
|
+
}
|
|
70
|
+
const publishedEntry = await strapi.documents(contentType).findOne({
|
|
71
|
+
documentId: entry.documentId,
|
|
72
|
+
locale: entry.locale,
|
|
73
|
+
status: 'published',
|
|
74
|
+
fields: [
|
|
75
|
+
'updatedAt'
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
if (!publishedEntry) {
|
|
79
|
+
return 'draft';
|
|
80
|
+
}
|
|
81
|
+
const entryUpdatedAt = new Date(entry.updatedAt).getTime();
|
|
82
|
+
const publishedEntryUpdatedAt = new Date(publishedEntry.updatedAt).getTime();
|
|
83
|
+
if (entryUpdatedAt > publishedEntryUpdatedAt) {
|
|
84
|
+
return 'modified';
|
|
85
|
+
}
|
|
86
|
+
return 'published';
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
exports.getDraftEntryValidStatus = getDraftEntryValidStatus;
|
|
90
|
+
exports.getEntry = getEntry;
|
|
91
|
+
exports.getEntryStatus = getEntryStatus;
|
|
92
|
+
exports.getService = getService;
|
|
93
|
+
exports.isEntryValid = isEntryValid;
|
|
94
|
+
//# sourceMappingURL=index.js.map
|