@strapi/content-releases 0.0.0-next.f6dca5adf05ef6bed9605a1535999ab0bbbf063e → 0.0.0-next.f86041c89a8c1545c6437a881dc613e98bc52bd7
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 +13 -0
- 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 -1984
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +24 -1964
- 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 +15 -10
- 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/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 +11 -10
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/release-action.d.ts +3 -7
- 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 +8 -2
- 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 +23 -21
- package/dist/_chunks/App-BKB1esYS.js +0 -1395
- package/dist/_chunks/App-BKB1esYS.js.map +0 -1
- package/dist/_chunks/App-Cne--1Z8.mjs +0 -1374
- package/dist/_chunks/App-Cne--1Z8.mjs.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-C1WwGWIH.mjs +0 -178
- package/dist/_chunks/ReleasesSettingsPage-C1WwGWIH.mjs.map +0 -1
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js +0 -178
- package/dist/_chunks/ReleasesSettingsPage-kuXIwpWp.js.map +0 -1
- package/dist/_chunks/en-CmYoEnA7.js +0 -93
- package/dist/_chunks/en-CmYoEnA7.js.map +0 -1
- package/dist/_chunks/en-D0yVZFqf.mjs +0 -93
- package/dist/_chunks/en-D0yVZFqf.mjs.map +0 -1
- package/dist/_chunks/index-5Odi61vw.js +0 -1381
- package/dist/_chunks/index-5Odi61vw.js.map +0 -1
- package/dist/_chunks/index-Cy7qwpaU.mjs +0 -1362
- package/dist/_chunks/index-Cy7qwpaU.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 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":"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"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
import { RELEASE_MODEL_UID } from '../constants.mjs';
|
|
3
|
+
import { validatefindByDocumentAttachedParams, validateRelease } from './validation/release.mjs';
|
|
4
|
+
import { getService } from '../utils/index.mjs';
|
|
5
|
+
|
|
6
|
+
const releaseController = {
|
|
7
|
+
/**
|
|
8
|
+
* Find releases based on documents attached or not to the release.
|
|
9
|
+
* If `hasEntryAttached` is true, it will return all releases that have the entry attached.
|
|
10
|
+
* If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.
|
|
11
|
+
*/ async findByDocumentAttached (ctx) {
|
|
12
|
+
const permissionsManager = strapi.service('admin::permission').createPermissionsManager({
|
|
13
|
+
ability: ctx.state.userAbility,
|
|
14
|
+
model: RELEASE_MODEL_UID
|
|
15
|
+
});
|
|
16
|
+
await permissionsManager.validateQuery(ctx.query);
|
|
17
|
+
const releaseService = getService('release', {
|
|
18
|
+
strapi
|
|
19
|
+
});
|
|
20
|
+
const query = await permissionsManager.sanitizeQuery(ctx.query);
|
|
21
|
+
await validatefindByDocumentAttachedParams(query);
|
|
22
|
+
// If entry is a singleType, we need to manually add the entryDocumentId to the query
|
|
23
|
+
const model = strapi.getModel(query.contentType);
|
|
24
|
+
if (model.kind && model.kind === 'singleType') {
|
|
25
|
+
const document = await strapi.db.query(model.uid).findOne({
|
|
26
|
+
select: [
|
|
27
|
+
'documentId'
|
|
28
|
+
]
|
|
29
|
+
});
|
|
30
|
+
if (!document) {
|
|
31
|
+
throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);
|
|
32
|
+
}
|
|
33
|
+
query.entryDocumentId = document.documentId;
|
|
34
|
+
}
|
|
35
|
+
const { contentType, hasEntryAttached, entryDocumentId, locale } = query;
|
|
36
|
+
const isEntryAttached = typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;
|
|
37
|
+
if (isEntryAttached) {
|
|
38
|
+
const releases = await releaseService.findMany({
|
|
39
|
+
where: {
|
|
40
|
+
releasedAt: null,
|
|
41
|
+
actions: {
|
|
42
|
+
contentType,
|
|
43
|
+
entryDocumentId: entryDocumentId ?? null,
|
|
44
|
+
locale: locale ?? null
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
populate: {
|
|
48
|
+
actions: {
|
|
49
|
+
fields: [
|
|
50
|
+
'type'
|
|
51
|
+
],
|
|
52
|
+
filters: {
|
|
53
|
+
contentType,
|
|
54
|
+
entryDocumentId: entryDocumentId ?? null,
|
|
55
|
+
locale: locale ?? null
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
ctx.body = {
|
|
61
|
+
data: releases
|
|
62
|
+
};
|
|
63
|
+
} else {
|
|
64
|
+
const relatedReleases = await releaseService.findMany({
|
|
65
|
+
where: {
|
|
66
|
+
releasedAt: null,
|
|
67
|
+
actions: {
|
|
68
|
+
contentType,
|
|
69
|
+
entryDocumentId: entryDocumentId ?? null,
|
|
70
|
+
locale: locale ?? null
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const releases = await releaseService.findMany({
|
|
75
|
+
where: {
|
|
76
|
+
$or: [
|
|
77
|
+
{
|
|
78
|
+
id: {
|
|
79
|
+
$notIn: relatedReleases.map((release)=>release.id)
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
actions: null
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
releasedAt: null
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
ctx.body = {
|
|
90
|
+
data: releases
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
async findPage (ctx) {
|
|
95
|
+
const permissionsManager = strapi.service('admin::permission').createPermissionsManager({
|
|
96
|
+
ability: ctx.state.userAbility,
|
|
97
|
+
model: RELEASE_MODEL_UID
|
|
98
|
+
});
|
|
99
|
+
await permissionsManager.validateQuery(ctx.query);
|
|
100
|
+
const releaseService = getService('release', {
|
|
101
|
+
strapi
|
|
102
|
+
});
|
|
103
|
+
const query = await permissionsManager.sanitizeQuery(ctx.query);
|
|
104
|
+
const { results, pagination } = await releaseService.findPage(query);
|
|
105
|
+
const data = results.map((release)=>{
|
|
106
|
+
const { actions, ...releaseData } = release;
|
|
107
|
+
return {
|
|
108
|
+
...releaseData,
|
|
109
|
+
actions: {
|
|
110
|
+
meta: {
|
|
111
|
+
count: actions.count
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({
|
|
117
|
+
where: {
|
|
118
|
+
releasedAt: null
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
ctx.body = {
|
|
122
|
+
data,
|
|
123
|
+
meta: {
|
|
124
|
+
pagination,
|
|
125
|
+
pendingReleasesCount
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
async findOne (ctx) {
|
|
130
|
+
const id = ctx.params.id;
|
|
131
|
+
const releaseService = getService('release', {
|
|
132
|
+
strapi
|
|
133
|
+
});
|
|
134
|
+
const releaseActionService = getService('release-action', {
|
|
135
|
+
strapi
|
|
136
|
+
});
|
|
137
|
+
const release = await releaseService.findOne(id, {
|
|
138
|
+
populate: [
|
|
139
|
+
'createdBy'
|
|
140
|
+
]
|
|
141
|
+
});
|
|
142
|
+
if (!release) {
|
|
143
|
+
throw new errors.NotFoundError(`Release not found for id: ${id}`);
|
|
144
|
+
}
|
|
145
|
+
const count = await releaseActionService.countActions({
|
|
146
|
+
filters: {
|
|
147
|
+
release: id
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
const sanitizedRelease = {
|
|
151
|
+
...release,
|
|
152
|
+
createdBy: release.createdBy ? strapi.service('admin::user').sanitizeUser(release.createdBy) : null
|
|
153
|
+
};
|
|
154
|
+
// Format the data object
|
|
155
|
+
const data = {
|
|
156
|
+
...sanitizedRelease,
|
|
157
|
+
actions: {
|
|
158
|
+
meta: {
|
|
159
|
+
count
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
ctx.body = {
|
|
164
|
+
data
|
|
165
|
+
};
|
|
166
|
+
},
|
|
167
|
+
async mapEntriesToReleases (ctx) {
|
|
168
|
+
const { contentTypeUid, documentIds, locale } = ctx.query;
|
|
169
|
+
if (!contentTypeUid || !documentIds) {
|
|
170
|
+
throw new errors.ValidationError('Missing required query parameters');
|
|
171
|
+
}
|
|
172
|
+
const releaseService = getService('release', {
|
|
173
|
+
strapi
|
|
174
|
+
});
|
|
175
|
+
const releasesWithActions = await releaseService.findMany({
|
|
176
|
+
where: {
|
|
177
|
+
releasedAt: null,
|
|
178
|
+
actions: {
|
|
179
|
+
contentType: contentTypeUid,
|
|
180
|
+
entryDocumentId: {
|
|
181
|
+
$in: documentIds
|
|
182
|
+
},
|
|
183
|
+
locale
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
populate: {
|
|
187
|
+
actions: true
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
const mappedEntriesInReleases = releasesWithActions.reduce((acc, release)=>{
|
|
191
|
+
release.actions.forEach((action)=>{
|
|
192
|
+
if (action.contentType !== contentTypeUid) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (locale && action.locale !== locale) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (!acc[action.entryDocumentId]) {
|
|
199
|
+
acc[action.entryDocumentId] = [
|
|
200
|
+
{
|
|
201
|
+
id: release.id,
|
|
202
|
+
name: release.name
|
|
203
|
+
}
|
|
204
|
+
];
|
|
205
|
+
} else {
|
|
206
|
+
acc[action.entryDocumentId].push({
|
|
207
|
+
id: release.id,
|
|
208
|
+
name: release.name
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
return acc;
|
|
213
|
+
}, {});
|
|
214
|
+
ctx.body = {
|
|
215
|
+
data: mappedEntriesInReleases
|
|
216
|
+
};
|
|
217
|
+
},
|
|
218
|
+
async create (ctx) {
|
|
219
|
+
const user = ctx.state.user;
|
|
220
|
+
const releaseArgs = ctx.request.body;
|
|
221
|
+
await validateRelease(releaseArgs);
|
|
222
|
+
const releaseService = getService('release', {
|
|
223
|
+
strapi
|
|
224
|
+
});
|
|
225
|
+
const release = await releaseService.create(releaseArgs, {
|
|
226
|
+
user
|
|
227
|
+
});
|
|
228
|
+
const permissionsManager = strapi.service('admin::permission').createPermissionsManager({
|
|
229
|
+
ability: ctx.state.userAbility,
|
|
230
|
+
model: RELEASE_MODEL_UID
|
|
231
|
+
});
|
|
232
|
+
ctx.created({
|
|
233
|
+
data: await permissionsManager.sanitizeOutput(release)
|
|
234
|
+
});
|
|
235
|
+
},
|
|
236
|
+
async update (ctx) {
|
|
237
|
+
const user = ctx.state.user;
|
|
238
|
+
const releaseArgs = ctx.request.body;
|
|
239
|
+
const id = ctx.params.id;
|
|
240
|
+
await validateRelease(releaseArgs);
|
|
241
|
+
const releaseService = getService('release', {
|
|
242
|
+
strapi
|
|
243
|
+
});
|
|
244
|
+
const release = await releaseService.update(id, releaseArgs, {
|
|
245
|
+
user
|
|
246
|
+
});
|
|
247
|
+
const permissionsManager = strapi.service('admin::permission').createPermissionsManager({
|
|
248
|
+
ability: ctx.state.userAbility,
|
|
249
|
+
model: RELEASE_MODEL_UID
|
|
250
|
+
});
|
|
251
|
+
ctx.body = {
|
|
252
|
+
data: await permissionsManager.sanitizeOutput(release)
|
|
253
|
+
};
|
|
254
|
+
},
|
|
255
|
+
async delete (ctx) {
|
|
256
|
+
const id = ctx.params.id;
|
|
257
|
+
const releaseService = getService('release', {
|
|
258
|
+
strapi
|
|
259
|
+
});
|
|
260
|
+
const release = await releaseService.delete(id);
|
|
261
|
+
ctx.body = {
|
|
262
|
+
data: release
|
|
263
|
+
};
|
|
264
|
+
},
|
|
265
|
+
async publish (ctx) {
|
|
266
|
+
const id = ctx.params.id;
|
|
267
|
+
const releaseService = getService('release', {
|
|
268
|
+
strapi
|
|
269
|
+
});
|
|
270
|
+
const releaseActionService = getService('release-action', {
|
|
271
|
+
strapi
|
|
272
|
+
});
|
|
273
|
+
const release = await releaseService.publish(id);
|
|
274
|
+
const [countPublishActions, countUnpublishActions] = await Promise.all([
|
|
275
|
+
releaseActionService.countActions({
|
|
276
|
+
filters: {
|
|
277
|
+
release: id,
|
|
278
|
+
type: 'publish'
|
|
279
|
+
}
|
|
280
|
+
}),
|
|
281
|
+
releaseActionService.countActions({
|
|
282
|
+
filters: {
|
|
283
|
+
release: id,
|
|
284
|
+
type: 'unpublish'
|
|
285
|
+
}
|
|
286
|
+
})
|
|
287
|
+
]);
|
|
288
|
+
ctx.body = {
|
|
289
|
+
data: release,
|
|
290
|
+
meta: {
|
|
291
|
+
totalEntries: countPublishActions + countUnpublishActions,
|
|
292
|
+
totalPublishedEntries: countPublishActions,
|
|
293
|
+
totalUnpublishedEntries: countUnpublishActions
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
export { releaseController as default };
|
|
300
|
+
//# sourceMappingURL=release.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.mjs","sources":["../../../server/src/controllers/release.ts"],"sourcesContent":["import type Koa from 'koa';\nimport { errors } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\nimport { RELEASE_MODEL_UID } from '../constants';\nimport { validateRelease, validatefindByDocumentAttachedParams } from './validation/release';\nimport type {\n CreateRelease,\n UpdateRelease,\n PublishRelease,\n GetRelease,\n Release,\n DeleteRelease,\n GetReleases,\n MapEntriesToReleases,\n} from '../../../shared/contracts/releases';\nimport type { UserInfo } from '../../../shared/types';\nimport { getService } from '../utils';\n\ntype ReleaseWithPopulatedActions = Release & { actions: { count: number } };\n\nconst releaseController = {\n /**\n * Find releases based on documents attached or not to the release.\n * If `hasEntryAttached` is true, it will return all releases that have the entry attached.\n * If `hasEntryAttached` is false, it will return all releases that don't have the entry attached.\n */\n async findByDocumentAttached(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n await permissionsManager.validateQuery(ctx.query);\n const releaseService = getService('release', { strapi });\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n await validatefindByDocumentAttachedParams(query);\n\n // If entry is a singleType, we need to manually add the entryDocumentId to the query\n const model = strapi.getModel(query.contentType) as Schema.ContentType;\n if (model.kind && model.kind === 'singleType') {\n const document = await strapi.db.query(model.uid).findOne({ select: ['documentId'] });\n\n if (!document) {\n throw new errors.NotFoundError(`No entry found for contentType ${query.contentType}`);\n }\n\n query.entryDocumentId = document.documentId;\n }\n\n const { contentType, hasEntryAttached, entryDocumentId, locale } = query;\n const isEntryAttached =\n typeof hasEntryAttached === 'string' ? Boolean(JSON.parse(hasEntryAttached)) : false;\n\n if (isEntryAttached) {\n const releases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n populate: {\n actions: {\n fields: ['type'],\n filters: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n },\n });\n\n ctx.body = { data: releases };\n } else {\n const relatedReleases = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType,\n entryDocumentId: entryDocumentId ?? null,\n locale: locale ?? null,\n },\n },\n });\n\n const releases = await releaseService.findMany({\n where: {\n $or: [\n {\n id: {\n $notIn: relatedReleases.map((release: any) => release.id),\n },\n },\n {\n actions: null,\n },\n ],\n releasedAt: null,\n },\n });\n ctx.body = { data: releases };\n }\n },\n\n async findPage(ctx: Koa.Context) {\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n await permissionsManager.validateQuery(ctx.query);\n\n const releaseService = getService('release', { strapi });\n\n const query: GetReleases.Request['query'] = await permissionsManager.sanitizeQuery(ctx.query);\n const { results, pagination } = await releaseService.findPage(query);\n\n const data = results.map((release: ReleaseWithPopulatedActions) => {\n const { actions, ...releaseData } = release;\n\n return {\n ...releaseData,\n actions: {\n meta: {\n count: actions.count,\n },\n },\n };\n });\n\n const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({\n where: {\n releasedAt: null,\n },\n });\n\n ctx.body = { data, meta: { pagination, pendingReleasesCount } };\n },\n\n async findOne(ctx: Koa.Context) {\n const id: GetRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.findOne(id, { populate: ['createdBy'] });\n if (!release) {\n throw new errors.NotFoundError(`Release not found for id: ${id}`);\n }\n\n const count = await releaseActionService.countActions({\n filters: {\n release: id,\n },\n });\n const sanitizedRelease = {\n ...release,\n createdBy: release.createdBy\n ? strapi.service('admin::user').sanitizeUser(release.createdBy)\n : null,\n };\n\n // Format the data object\n const data = {\n ...sanitizedRelease,\n actions: {\n meta: {\n count,\n },\n },\n };\n\n ctx.body = { data };\n },\n\n async mapEntriesToReleases(ctx: Koa.Context) {\n const { contentTypeUid, documentIds, locale } = ctx.query;\n\n if (!contentTypeUid || !documentIds) {\n throw new errors.ValidationError('Missing required query parameters');\n }\n\n const releaseService = getService('release', { strapi });\n\n const releasesWithActions = await releaseService.findMany({\n where: {\n releasedAt: null,\n actions: {\n contentType: contentTypeUid,\n entryDocumentId: {\n $in: documentIds,\n },\n locale,\n },\n },\n populate: {\n actions: true,\n },\n });\n\n const mappedEntriesInReleases = releasesWithActions.reduce(\n (acc: MapEntriesToReleases.Response['data'], release: Release) => {\n release.actions.forEach((action) => {\n if (action.contentType !== contentTypeUid) {\n return;\n }\n\n if (locale && action.locale !== locale) {\n return;\n }\n\n if (!acc[action.entryDocumentId]) {\n acc[action.entryDocumentId] = [{ id: release.id, name: release.name }];\n } else {\n acc[action.entryDocumentId].push({ id: release.id, name: release.name });\n }\n });\n\n return acc;\n },\n {} as MapEntriesToReleases.Response['data']\n );\n\n ctx.body = {\n data: mappedEntriesInReleases,\n };\n },\n\n async create(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as CreateRelease.Request['body'];\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.create(releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.created({\n data: await permissionsManager.sanitizeOutput(release),\n });\n },\n\n async update(ctx: Koa.Context) {\n const user: UserInfo = ctx.state.user;\n const releaseArgs = ctx.request.body as UpdateRelease.Request['body'];\n const id: UpdateRelease.Request['params']['id'] = ctx.params.id;\n\n await validateRelease(releaseArgs);\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.update(id, releaseArgs, { user });\n\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_MODEL_UID,\n });\n\n ctx.body = {\n data: await permissionsManager.sanitizeOutput(release),\n };\n },\n\n async delete(ctx: Koa.Context) {\n const id: DeleteRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const release = await releaseService.delete(id);\n\n ctx.body = {\n data: release,\n };\n },\n\n async publish(ctx: Koa.Context) {\n const id: PublishRelease.Request['params']['id'] = ctx.params.id;\n\n const releaseService = getService('release', { strapi });\n const releaseActionService = getService('release-action', { strapi });\n const release = await releaseService.publish(id);\n\n const [countPublishActions, countUnpublishActions] = await Promise.all([\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'publish',\n },\n }),\n releaseActionService.countActions({\n filters: {\n release: id,\n type: 'unpublish',\n },\n }),\n ]);\n\n ctx.body = {\n data: release,\n meta: {\n totalEntries: countPublishActions + countUnpublishActions,\n totalPublishedEntries: countPublishActions,\n totalUnpublishedEntries: countUnpublishActions,\n },\n };\n },\n};\n\nexport default releaseController;\n"],"names":["releaseController","findByDocumentAttached","ctx","permissionsManager","strapi","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_MODEL_UID","validateQuery","query","releaseService","getService","sanitizeQuery","validatefindByDocumentAttachedParams","getModel","contentType","kind","document","db","uid","findOne","select","errors","NotFoundError","entryDocumentId","documentId","hasEntryAttached","locale","isEntryAttached","Boolean","JSON","parse","releases","findMany","where","releasedAt","actions","populate","fields","filters","body","data","relatedReleases","$or","id","$notIn","map","release","findPage","results","pagination","releaseData","meta","count","pendingReleasesCount","params","releaseActionService","countActions","sanitizedRelease","createdBy","sanitizeUser","mapEntriesToReleases","contentTypeUid","documentIds","ValidationError","releasesWithActions","$in","mappedEntriesInReleases","reduce","acc","forEach","action","name","push","create","user","releaseArgs","request","validateRelease","created","sanitizeOutput","update","delete","publish","countPublishActions","countUnpublishActions","Promise","all","type","totalEntries","totalPublishedEntries","totalUnpublishedEntries"],"mappings":";;;;;AAoBA,MAAMA,iBAAoB,GAAA;AACxB;;;;MAKA,MAAMC,wBAAuBC,GAAgB,EAAA;AAC3C,QAAA,MAAMC,qBAAqBC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtFC,OAASL,EAAAA,GAAAA,CAAIM,KAAK,CAACC,WAAW;YAC9BC,KAAOC,EAAAA;AACT,SAAA,CAAA;AACA,QAAA,MAAMR,kBAAmBS,CAAAA,aAAa,CAACV,GAAAA,CAAIW,KAAK,CAAA;QAChD,MAAMC,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACtD,QAAA,MAAMS,QAAQ,MAAMV,kBAAAA,CAAmBa,aAAa,CAACd,IAAIW,KAAK,CAAA;AAE9D,QAAA,MAAMI,oCAAqCJ,CAAAA,KAAAA,CAAAA;;AAG3C,QAAA,MAAMH,KAAQN,GAAAA,MAAAA,CAAOc,QAAQ,CAACL,MAAMM,WAAW,CAAA;AAC/C,QAAA,IAAIT,MAAMU,IAAI,IAAIV,KAAMU,CAAAA,IAAI,KAAK,YAAc,EAAA;YAC7C,MAAMC,QAAAA,GAAW,MAAMjB,MAAAA,CAAOkB,EAAE,CAACT,KAAK,CAACH,KAAMa,CAAAA,GAAG,CAAEC,CAAAA,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAC,oBAAA;AAAa;AAAC,aAAA,CAAA;AAEnF,YAAA,IAAI,CAACJ,QAAU,EAAA;gBACb,MAAM,IAAIK,OAAOC,aAAa,CAAC,CAAC,+BAA+B,EAAEd,KAAMM,CAAAA,WAAW,CAAE,CAAA,CAAA;AACtF;YAEAN,KAAMe,CAAAA,eAAe,GAAGP,QAAAA,CAASQ,UAAU;AAC7C;QAEA,MAAM,EAAEV,WAAW,EAAEW,gBAAgB,EAAEF,eAAe,EAAEG,MAAM,EAAE,GAAGlB,KAAAA;QACnE,MAAMmB,eAAAA,GACJ,OAAOF,gBAAqB,KAAA,QAAA,GAAWG,QAAQC,IAAKC,CAAAA,KAAK,CAACL,gBAAqB,CAAA,CAAA,GAAA,KAAA;AAEjF,QAAA,IAAIE,eAAiB,EAAA;AACnB,YAAA,MAAMI,QAAW,GAAA,MAAMtB,cAAeuB,CAAAA,QAAQ,CAAC;gBAC7CC,KAAO,EAAA;oBACLC,UAAY,EAAA,IAAA;oBACZC,OAAS,EAAA;AACPrB,wBAAAA,WAAAA;AACAS,wBAAAA,eAAAA,EAAiBA,eAAmB,IAAA,IAAA;AACpCG,wBAAAA,MAAAA,EAAQA,MAAU,IAAA;AACpB;AACF,iBAAA;gBACAU,QAAU,EAAA;oBACRD,OAAS,EAAA;wBACPE,MAAQ,EAAA;AAAC,4BAAA;AAAO,yBAAA;wBAChBC,OAAS,EAAA;AACPxB,4BAAAA,WAAAA;AACAS,4BAAAA,eAAAA,EAAiBA,eAAmB,IAAA,IAAA;AACpCG,4BAAAA,MAAAA,EAAQA,MAAU,IAAA;AACpB;AACF;AACF;AACF,aAAA,CAAA;AAEA7B,YAAAA,GAAAA,CAAI0C,IAAI,GAAG;gBAAEC,IAAMT,EAAAA;AAAS,aAAA;SACvB,MAAA;AACL,YAAA,MAAMU,eAAkB,GAAA,MAAMhC,cAAeuB,CAAAA,QAAQ,CAAC;gBACpDC,KAAO,EAAA;oBACLC,UAAY,EAAA,IAAA;oBACZC,OAAS,EAAA;AACPrB,wBAAAA,WAAAA;AACAS,wBAAAA,eAAAA,EAAiBA,eAAmB,IAAA,IAAA;AACpCG,wBAAAA,MAAAA,EAAQA,MAAU,IAAA;AACpB;AACF;AACF,aAAA,CAAA;AAEA,YAAA,MAAMK,QAAW,GAAA,MAAMtB,cAAeuB,CAAAA,QAAQ,CAAC;gBAC7CC,KAAO,EAAA;oBACLS,GAAK,EAAA;AACH,wBAAA;4BACEC,EAAI,EAAA;AACFC,gCAAAA,MAAAA,EAAQH,gBAAgBI,GAAG,CAAC,CAACC,OAAAA,GAAiBA,QAAQH,EAAE;AAC1D;AACF,yBAAA;AACA,wBAAA;4BACER,OAAS,EAAA;AACX;AACD,qBAAA;oBACDD,UAAY,EAAA;AACd;AACF,aAAA,CAAA;AACArC,YAAAA,GAAAA,CAAI0C,IAAI,GAAG;gBAAEC,IAAMT,EAAAA;AAAS,aAAA;AAC9B;AACF,KAAA;AAEA,IAAA,MAAMgB,UAASlD,GAAgB,EAAA;AAC7B,QAAA,MAAMC,qBAAqBC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtFC,OAASL,EAAAA,GAAAA,CAAIM,KAAK,CAACC,WAAW;YAC9BC,KAAOC,EAAAA;AACT,SAAA,CAAA;AAEA,QAAA,MAAMR,kBAAmBS,CAAAA,aAAa,CAACV,GAAAA,CAAIW,KAAK,CAAA;QAEhD,MAAMC,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AAEtD,QAAA,MAAMS,QAAsC,MAAMV,kBAAAA,CAAmBa,aAAa,CAACd,IAAIW,KAAK,CAAA;QAC5F,MAAM,EAAEwC,OAAO,EAAEC,UAAU,EAAE,GAAG,MAAMxC,cAAesC,CAAAA,QAAQ,CAACvC,KAAAA,CAAAA;AAE9D,QAAA,MAAMgC,IAAOQ,GAAAA,OAAAA,CAAQH,GAAG,CAAC,CAACC,OAAAA,GAAAA;AACxB,YAAA,MAAM,EAAEX,OAAO,EAAE,GAAGe,aAAa,GAAGJ,OAAAA;YAEpC,OAAO;AACL,gBAAA,GAAGI,WAAW;gBACdf,OAAS,EAAA;oBACPgB,IAAM,EAAA;AACJC,wBAAAA,KAAAA,EAAOjB,QAAQiB;AACjB;AACF;AACF,aAAA;AACF,SAAA,CAAA;QAEA,MAAMC,oBAAAA,GAAuB,MAAMtD,MAAOkB,CAAAA,EAAE,CAACT,KAAK,CAACF,iBAAmB8C,CAAAA,CAAAA,KAAK,CAAC;YAC1EnB,KAAO,EAAA;gBACLC,UAAY,EAAA;AACd;AACF,SAAA,CAAA;AAEArC,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;AAAEC,YAAAA,IAAAA;YAAMW,IAAM,EAAA;AAAEF,gBAAAA,UAAAA;AAAYI,gBAAAA;AAAqB;AAAE,SAAA;AAChE,KAAA;AAEA,IAAA,MAAMlC,SAAQtB,GAAgB,EAAA;AAC5B,QAAA,MAAM8C,EAAyC9C,GAAAA,GAAAA,CAAIyD,MAAM,CAACX,EAAE;QAE5D,MAAMlC,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;QACtD,MAAMwD,oBAAAA,GAAuB7C,WAAW,gBAAkB,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACnE,QAAA,MAAM+C,OAAU,GAAA,MAAMrC,cAAeU,CAAAA,OAAO,CAACwB,EAAI,EAAA;YAAEP,QAAU,EAAA;AAAC,gBAAA;AAAY;AAAC,SAAA,CAAA;AAC3E,QAAA,IAAI,CAACU,OAAS,EAAA;AACZ,YAAA,MAAM,IAAIzB,MAAOC,CAAAA,aAAa,CAAC,CAAC,0BAA0B,EAAEqB,EAAI,CAAA,CAAA,CAAA;AAClE;AAEA,QAAA,MAAMS,KAAQ,GAAA,MAAMG,oBAAqBC,CAAAA,YAAY,CAAC;YACpDlB,OAAS,EAAA;gBACPQ,OAASH,EAAAA;AACX;AACF,SAAA,CAAA;AACA,QAAA,MAAMc,gBAAmB,GAAA;AACvB,YAAA,GAAGX,OAAO;YACVY,SAAWZ,EAAAA,OAAAA,CAAQY,SAAS,GACxB3D,MAAOC,CAAAA,OAAO,CAAC,aAAA,CAAA,CAAe2D,YAAY,CAACb,OAAQY,CAAAA,SAAS,CAC5D,GAAA;AACN,SAAA;;AAGA,QAAA,MAAMlB,IAAO,GAAA;AACX,YAAA,GAAGiB,gBAAgB;YACnBtB,OAAS,EAAA;gBACPgB,IAAM,EAAA;AACJC,oBAAAA;AACF;AACF;AACF,SAAA;AAEAvD,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;AAAEC,YAAAA;AAAK,SAAA;AACpB,KAAA;AAEA,IAAA,MAAMoB,sBAAqB/D,GAAgB,EAAA;QACzC,MAAM,EAAEgE,cAAc,EAAEC,WAAW,EAAEpC,MAAM,EAAE,GAAG7B,GAAAA,CAAIW,KAAK;QAEzD,IAAI,CAACqD,cAAkB,IAAA,CAACC,WAAa,EAAA;YACnC,MAAM,IAAIzC,MAAO0C,CAAAA,eAAe,CAAC,mCAAA,CAAA;AACnC;QAEA,MAAMtD,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AAEtD,QAAA,MAAMiE,mBAAsB,GAAA,MAAMvD,cAAeuB,CAAAA,QAAQ,CAAC;YACxDC,KAAO,EAAA;gBACLC,UAAY,EAAA,IAAA;gBACZC,OAAS,EAAA;oBACPrB,WAAa+C,EAAAA,cAAAA;oBACbtC,eAAiB,EAAA;wBACf0C,GAAKH,EAAAA;AACP,qBAAA;AACApC,oBAAAA;AACF;AACF,aAAA;YACAU,QAAU,EAAA;gBACRD,OAAS,EAAA;AACX;AACF,SAAA,CAAA;AAEA,QAAA,MAAM+B,uBAA0BF,GAAAA,mBAAAA,CAAoBG,MAAM,CACxD,CAACC,GAA4CtB,EAAAA,OAAAA,GAAAA;AAC3CA,YAAAA,OAAAA,CAAQX,OAAO,CAACkC,OAAO,CAAC,CAACC,MAAAA,GAAAA;gBACvB,IAAIA,MAAAA,CAAOxD,WAAW,KAAK+C,cAAgB,EAAA;AACzC,oBAAA;AACF;AAEA,gBAAA,IAAInC,MAAU4C,IAAAA,MAAAA,CAAO5C,MAAM,KAAKA,MAAQ,EAAA;AACtC,oBAAA;AACF;AAEA,gBAAA,IAAI,CAAC0C,GAAG,CAACE,MAAO/C,CAAAA,eAAe,CAAC,EAAE;AAChC6C,oBAAAA,GAAG,CAACE,MAAAA,CAAO/C,eAAe,CAAC,GAAG;AAAC,wBAAA;AAAEoB,4BAAAA,EAAAA,EAAIG,QAAQH,EAAE;AAAE4B,4BAAAA,IAAAA,EAAMzB,QAAQyB;AAAK;AAAE,qBAAA;iBACjE,MAAA;AACLH,oBAAAA,GAAG,CAACE,MAAO/C,CAAAA,eAAe,CAAC,CAACiD,IAAI,CAAC;AAAE7B,wBAAAA,EAAAA,EAAIG,QAAQH,EAAE;AAAE4B,wBAAAA,IAAAA,EAAMzB,QAAQyB;AAAK,qBAAA,CAAA;AACxE;AACF,aAAA,CAAA;YAEA,OAAOH,GAAAA;AACT,SAAA,EACA,EAAC,CAAA;AAGHvE,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;YACTC,IAAM0B,EAAAA;AACR,SAAA;AACF,KAAA;AAEA,IAAA,MAAMO,QAAO5E,GAAgB,EAAA;AAC3B,QAAA,MAAM6E,IAAiB7E,GAAAA,GAAAA,CAAIM,KAAK,CAACuE,IAAI;AACrC,QAAA,MAAMC,WAAc9E,GAAAA,GAAAA,CAAI+E,OAAO,CAACrC,IAAI;AAEpC,QAAA,MAAMsC,eAAgBF,CAAAA,WAAAA,CAAAA;QAEtB,MAAMlE,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACtD,QAAA,MAAM+C,OAAU,GAAA,MAAMrC,cAAegE,CAAAA,MAAM,CAACE,WAAa,EAAA;AAAED,YAAAA;AAAK,SAAA,CAAA;AAEhE,QAAA,MAAM5E,qBAAqBC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtFC,OAASL,EAAAA,GAAAA,CAAIM,KAAK,CAACC,WAAW;YAC9BC,KAAOC,EAAAA;AACT,SAAA,CAAA;AAEAT,QAAAA,GAAAA,CAAIiF,OAAO,CAAC;YACVtC,IAAM,EAAA,MAAM1C,kBAAmBiF,CAAAA,cAAc,CAACjC,OAAAA;AAChD,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMkC,QAAOnF,GAAgB,EAAA;AAC3B,QAAA,MAAM6E,IAAiB7E,GAAAA,GAAAA,CAAIM,KAAK,CAACuE,IAAI;AACrC,QAAA,MAAMC,WAAc9E,GAAAA,GAAAA,CAAI+E,OAAO,CAACrC,IAAI;AACpC,QAAA,MAAMI,EAA4C9C,GAAAA,GAAAA,CAAIyD,MAAM,CAACX,EAAE;AAE/D,QAAA,MAAMkC,eAAgBF,CAAAA,WAAAA,CAAAA;QAEtB,MAAMlE,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACtD,QAAA,MAAM+C,UAAU,MAAMrC,cAAAA,CAAeuE,MAAM,CAACrC,IAAIgC,WAAa,EAAA;AAAED,YAAAA;AAAK,SAAA,CAAA;AAEpE,QAAA,MAAM5E,qBAAqBC,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBC,wBAAwB,CAAC;YACtFC,OAASL,EAAAA,GAAAA,CAAIM,KAAK,CAACC,WAAW;YAC9BC,KAAOC,EAAAA;AACT,SAAA,CAAA;AAEAT,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;YACTC,IAAM,EAAA,MAAM1C,kBAAmBiF,CAAAA,cAAc,CAACjC,OAAAA;AAChD,SAAA;AACF,KAAA;AAEA,IAAA,MAAMmC,QAAOpF,GAAgB,EAAA;AAC3B,QAAA,MAAM8C,EAA4C9C,GAAAA,GAAAA,CAAIyD,MAAM,CAACX,EAAE;QAE/D,MAAMlC,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACtD,QAAA,MAAM+C,OAAU,GAAA,MAAMrC,cAAewE,CAAAA,MAAM,CAACtC,EAAAA,CAAAA;AAE5C9C,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;YACTC,IAAMM,EAAAA;AACR,SAAA;AACF,KAAA;AAEA,IAAA,MAAMoC,SAAQrF,GAAgB,EAAA;AAC5B,QAAA,MAAM8C,EAA6C9C,GAAAA,GAAAA,CAAIyD,MAAM,CAACX,EAAE;QAEhE,MAAMlC,cAAAA,GAAiBC,WAAW,SAAW,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;QACtD,MAAMwD,oBAAAA,GAAuB7C,WAAW,gBAAkB,EAAA;AAAEX,YAAAA;AAAO,SAAA,CAAA;AACnE,QAAA,MAAM+C,OAAU,GAAA,MAAMrC,cAAeyE,CAAAA,OAAO,CAACvC,EAAAA,CAAAA;AAE7C,QAAA,MAAM,CAACwC,mBAAqBC,EAAAA,qBAAAA,CAAsB,GAAG,MAAMC,OAAAA,CAAQC,GAAG,CAAC;AACrE/B,YAAAA,oBAAAA,CAAqBC,YAAY,CAAC;gBAChClB,OAAS,EAAA;oBACPQ,OAASH,EAAAA,EAAAA;oBACT4C,IAAM,EAAA;AACR;AACF,aAAA,CAAA;AACAhC,YAAAA,oBAAAA,CAAqBC,YAAY,CAAC;gBAChClB,OAAS,EAAA;oBACPQ,OAASH,EAAAA,EAAAA;oBACT4C,IAAM,EAAA;AACR;AACF,aAAA;AACD,SAAA,CAAA;AAED1F,QAAAA,GAAAA,CAAI0C,IAAI,GAAG;YACTC,IAAMM,EAAAA,OAAAA;YACNK,IAAM,EAAA;AACJqC,gBAAAA,YAAAA,EAAcL,mBAAsBC,GAAAA,qBAAAA;gBACpCK,qBAAuBN,EAAAA,mBAAAA;gBACvBO,uBAAyBN,EAAAA;AAC3B;AACF,SAAA;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('../utils/index.js');
|
|
4
|
+
var settings = require('./validation/settings.js');
|
|
5
|
+
|
|
6
|
+
const settingsController = {
|
|
7
|
+
async find (ctx) {
|
|
8
|
+
// Get settings
|
|
9
|
+
const settingsService = index.getService('settings', {
|
|
10
|
+
strapi
|
|
11
|
+
});
|
|
12
|
+
const settings = await settingsService.find();
|
|
13
|
+
// Response
|
|
14
|
+
ctx.body = {
|
|
15
|
+
data: settings
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
async update (ctx) {
|
|
19
|
+
// Data validation
|
|
20
|
+
const settingsBody = ctx.request.body;
|
|
21
|
+
const settings$1 = await settings.validateSettings(settingsBody);
|
|
22
|
+
// Update
|
|
23
|
+
const settingsService = index.getService('settings', {
|
|
24
|
+
strapi
|
|
25
|
+
});
|
|
26
|
+
const updatedSettings = await settingsService.update({
|
|
27
|
+
settings: settings$1
|
|
28
|
+
});
|
|
29
|
+
// Response
|
|
30
|
+
ctx.body = {
|
|
31
|
+
data: updatedSettings
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
module.exports = settingsController;
|
|
37
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;;;AAUA,MAAMA,kBAAqB,GAAA;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,iBAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMF,EAAAA;AAAS,SAAA;AAC9B,KAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAeR,GAAAA,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,UAAAA,GAAY,MAAMM,yBAAiBF,CAAAA,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,iBAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAkB,GAAA,MAAMV,eAAgBM,CAAAA,MAAM,CAAC;AAAEH,sBAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMK,EAAAA;AAAgB,SAAA;AACrC;AACF;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getService } from '../utils/index.mjs';
|
|
2
|
+
import { validateSettings } from './validation/settings.mjs';
|
|
3
|
+
|
|
4
|
+
const settingsController = {
|
|
5
|
+
async find (ctx) {
|
|
6
|
+
// Get settings
|
|
7
|
+
const settingsService = getService('settings', {
|
|
8
|
+
strapi
|
|
9
|
+
});
|
|
10
|
+
const settings = await settingsService.find();
|
|
11
|
+
// Response
|
|
12
|
+
ctx.body = {
|
|
13
|
+
data: settings
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
async update (ctx) {
|
|
17
|
+
// Data validation
|
|
18
|
+
const settingsBody = ctx.request.body;
|
|
19
|
+
const settings = await validateSettings(settingsBody);
|
|
20
|
+
// Update
|
|
21
|
+
const settingsService = getService('settings', {
|
|
22
|
+
strapi
|
|
23
|
+
});
|
|
24
|
+
const updatedSettings = await settingsService.update({
|
|
25
|
+
settings
|
|
26
|
+
});
|
|
27
|
+
// Response
|
|
28
|
+
ctx.body = {
|
|
29
|
+
data: updatedSettings
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { settingsController as default };
|
|
35
|
+
//# sourceMappingURL=settings.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.mjs","sources":["../../../server/src/controllers/settings.ts"],"sourcesContent":["/**\n * Used to store user configurations related to releases.\n * E.g the default timezone for the release schedule.\n */\nimport type Koa from 'koa';\n\nimport type { GetSettings, UpdateSettings, Settings } from '../../../shared/contracts/settings';\nimport { getService } from '../utils';\nimport { validateSettings } from './validation/settings';\n\nconst settingsController = {\n async find(ctx: Koa.Context) {\n // Get settings\n const settingsService = getService('settings', { strapi });\n const settings = await settingsService.find();\n\n // Response\n ctx.body = { data: settings } satisfies GetSettings.Response;\n },\n\n async update(ctx: Koa.Context) {\n // Data validation\n const settingsBody = ctx.request.body;\n const settings = (await validateSettings(settingsBody)) as Settings;\n\n // Update\n const settingsService = getService('settings', { strapi });\n const updatedSettings = await settingsService.update({ settings });\n\n // Response\n ctx.body = { data: updatedSettings } satisfies UpdateSettings.Response;\n },\n};\n\nexport default settingsController;\n"],"names":["settingsController","find","ctx","settingsService","getService","strapi","settings","body","data","update","settingsBody","request","validateSettings","updatedSettings"],"mappings":";;;AAUA,MAAMA,kBAAqB,GAAA;AACzB,IAAA,MAAMC,MAAKC,GAAgB,EAAA;;QAEzB,MAAMC,eAAAA,GAAkBC,WAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;QACxD,MAAMC,QAAAA,GAAW,MAAMH,eAAAA,CAAgBF,IAAI,EAAA;;AAG3CC,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMF,EAAAA;AAAS,SAAA;AAC9B,KAAA;AAEA,IAAA,MAAMG,QAAOP,GAAgB,EAAA;;AAE3B,QAAA,MAAMQ,YAAeR,GAAAA,GAAAA,CAAIS,OAAO,CAACJ,IAAI;QACrC,MAAMD,QAAAA,GAAY,MAAMM,gBAAiBF,CAAAA,YAAAA,CAAAA;;QAGzC,MAAMP,eAAAA,GAAkBC,WAAW,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA,CAAA;AACxD,QAAA,MAAMQ,eAAkB,GAAA,MAAMV,eAAgBM,CAAAA,MAAM,CAAC;AAAEH,YAAAA;AAAS,SAAA,CAAA;;AAGhEJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG;YAAEC,IAAMK,EAAAA;AAAgB,SAAA;AACrC;AACF;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
|
|
5
|
+
const RELEASE_ACTION_SCHEMA = utils.yup.object().shape({
|
|
6
|
+
contentType: utils.yup.string().required(),
|
|
7
|
+
entryDocumentId: utils.yup.strapiID(),
|
|
8
|
+
locale: utils.yup.string(),
|
|
9
|
+
type: utils.yup.string().oneOf([
|
|
10
|
+
'publish',
|
|
11
|
+
'unpublish'
|
|
12
|
+
]).required()
|
|
13
|
+
});
|
|
14
|
+
const RELEASE_ACTION_UPDATE_SCHEMA = utils.yup.object().shape({
|
|
15
|
+
type: utils.yup.string().oneOf([
|
|
16
|
+
'publish',
|
|
17
|
+
'unpublish'
|
|
18
|
+
]).required()
|
|
19
|
+
});
|
|
20
|
+
const FIND_MANY_ACTIONS_PARAMS = utils.yup.object().shape({
|
|
21
|
+
groupBy: utils.yup.string().oneOf([
|
|
22
|
+
'action',
|
|
23
|
+
'contentType',
|
|
24
|
+
'locale'
|
|
25
|
+
])
|
|
26
|
+
});
|
|
27
|
+
const validateReleaseAction = utils.validateYupSchema(RELEASE_ACTION_SCHEMA);
|
|
28
|
+
const validateReleaseActionUpdateSchema = utils.validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);
|
|
29
|
+
const validateFindManyActionsParams = utils.validateYupSchema(FIND_MANY_ACTIONS_PARAMS);
|
|
30
|
+
|
|
31
|
+
exports.validateFindManyActionsParams = validateFindManyActionsParams;
|
|
32
|
+
exports.validateReleaseAction = validateReleaseAction;
|
|
33
|
+
exports.validateReleaseActionUpdateSchema = validateReleaseActionUpdateSchema;
|
|
34
|
+
//# sourceMappingURL=release-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-action.js","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;;;AAEA,MAAMA,qBAAwBC,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAaH,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,UAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,UAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAA+BX,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAA2BZ,GAAAA,SAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,SAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAwBC,GAAAA,uBAAAA,CAAkBhB,qBAAuB;AACvE,MAAMiB,iCAAoCD,GAAAA,uBAAAA,CAAkBJ,4BAA8B;AAC1F,MAAMM,6BAAgCF,GAAAA,uBAAAA,CAAkBH,wBAA0B;;;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { yup, validateYupSchema } from '@strapi/utils';
|
|
2
|
+
|
|
3
|
+
const RELEASE_ACTION_SCHEMA = yup.object().shape({
|
|
4
|
+
contentType: yup.string().required(),
|
|
5
|
+
entryDocumentId: yup.strapiID(),
|
|
6
|
+
locale: yup.string(),
|
|
7
|
+
type: yup.string().oneOf([
|
|
8
|
+
'publish',
|
|
9
|
+
'unpublish'
|
|
10
|
+
]).required()
|
|
11
|
+
});
|
|
12
|
+
const RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({
|
|
13
|
+
type: yup.string().oneOf([
|
|
14
|
+
'publish',
|
|
15
|
+
'unpublish'
|
|
16
|
+
]).required()
|
|
17
|
+
});
|
|
18
|
+
const FIND_MANY_ACTIONS_PARAMS = yup.object().shape({
|
|
19
|
+
groupBy: yup.string().oneOf([
|
|
20
|
+
'action',
|
|
21
|
+
'contentType',
|
|
22
|
+
'locale'
|
|
23
|
+
])
|
|
24
|
+
});
|
|
25
|
+
const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);
|
|
26
|
+
const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);
|
|
27
|
+
const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);
|
|
28
|
+
|
|
29
|
+
export { validateFindManyActionsParams, validateReleaseAction, validateReleaseActionUpdateSchema };
|
|
30
|
+
//# sourceMappingURL=release-action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-action.mjs","sources":["../../../../server/src/controllers/validation/release-action.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst RELEASE_ACTION_SCHEMA = yup.object().shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.strapiID(),\n locale: yup.string(),\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst RELEASE_ACTION_UPDATE_SCHEMA = yup.object().shape({\n type: yup.string().oneOf(['publish', 'unpublish']).required(),\n});\n\nconst FIND_MANY_ACTIONS_PARAMS = yup.object().shape({\n groupBy: yup.string().oneOf(['action', 'contentType', 'locale']),\n});\n\nexport const validateReleaseAction = validateYupSchema(RELEASE_ACTION_SCHEMA);\nexport const validateReleaseActionUpdateSchema = validateYupSchema(RELEASE_ACTION_UPDATE_SCHEMA);\nexport const validateFindManyActionsParams = validateYupSchema(FIND_MANY_ACTIONS_PARAMS);\n"],"names":["RELEASE_ACTION_SCHEMA","yup","object","shape","contentType","string","required","entryDocumentId","strapiID","locale","type","oneOf","RELEASE_ACTION_UPDATE_SCHEMA","FIND_MANY_ACTIONS_PARAMS","groupBy","validateReleaseAction","validateYupSchema","validateReleaseActionUpdateSchema","validateFindManyActionsParams"],"mappings":";;AAEA,MAAMA,qBAAwBC,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC/CC,WAAaH,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAClCC,IAAAA,eAAAA,EAAiBN,IAAIO,QAAQ,EAAA;AAC7BC,IAAAA,MAAAA,EAAQR,IAAII,MAAM,EAAA;AAClBK,IAAAA,IAAAA,EAAMT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMM,4BAA+BX,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AACtDO,IAAAA,IAAAA,EAAMT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,SAAA;AAAW,QAAA;AAAY,KAAA,CAAA,CAAEL,QAAQ;AAC7D,CAAA,CAAA;AAEA,MAAMO,wBAA2BZ,GAAAA,GAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAClDW,IAAAA,OAAAA,EAASb,GAAII,CAAAA,MAAM,EAAGM,CAAAA,KAAK,CAAC;AAAC,QAAA,QAAA;AAAU,QAAA,aAAA;AAAe,QAAA;AAAS,KAAA;AACjE,CAAA,CAAA;AAEO,MAAMI,qBAAwBC,GAAAA,iBAAAA,CAAkBhB,qBAAuB;AACvE,MAAMiB,iCAAoCD,GAAAA,iBAAAA,CAAkBJ,4BAA8B;AAC1F,MAAMM,6BAAgCF,GAAAA,iBAAAA,CAAkBH,wBAA0B;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
|
|
5
|
+
const RELEASE_SCHEMA = utils.yup.object().shape({
|
|
6
|
+
name: utils.yup.string().trim().required(),
|
|
7
|
+
scheduledAt: utils.yup.string().nullable(),
|
|
8
|
+
timezone: utils.yup.string().when('scheduledAt', {
|
|
9
|
+
is: (value)=>value !== null && value !== undefined,
|
|
10
|
+
then: utils.yup.string().required(),
|
|
11
|
+
otherwise: utils.yup.string().nullable()
|
|
12
|
+
})
|
|
13
|
+
}).required().noUnknown();
|
|
14
|
+
const FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = utils.yup.object().shape({
|
|
15
|
+
contentType: utils.yup.string().required(),
|
|
16
|
+
entryDocumentId: utils.yup.string().nullable(),
|
|
17
|
+
hasEntryAttached: utils.yup.string().nullable(),
|
|
18
|
+
locale: utils.yup.string().nullable()
|
|
19
|
+
}).required().noUnknown();
|
|
20
|
+
const validateRelease = utils.validateYupSchema(RELEASE_SCHEMA);
|
|
21
|
+
const validatefindByDocumentAttachedParams = utils.validateYupSchema(FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA);
|
|
22
|
+
|
|
23
|
+
exports.RELEASE_SCHEMA = RELEASE_SCHEMA;
|
|
24
|
+
exports.validateRelease = validateRelease;
|
|
25
|
+
exports.validatefindByDocumentAttachedParams = validatefindByDocumentAttachedParams;
|
|
26
|
+
//# sourceMappingURL=release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;;;MAEaA,cAAiBC,GAAAA,SAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,SAAII,CAAAA,MAAM,EAAGC,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAaP,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,SAAII,CAAAA,MAAM,EAAGM,CAAAA,IAAI,CAAC,aAAe,EAAA;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAU,KAAA,IAAA,IAAQA,KAAUC,KAAAA,SAAAA;QAChDC,IAAMd,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAWf,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CACCF,CAAAA,CAAAA,QAAQ,EACRU,CAAAA,SAAS;AAEZ,MAAMC,uCAA0CjB,GAAAA,SAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAalB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAiBnB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAkBpB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAQrB,EAAAA,SAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CACCF,CAAAA,CAAAA,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAkBC,GAAAA,uBAAAA,CAAkBxB,cAAgB;AAE1D,MAAMyB,oCAAuCD,GAAAA,uBAAAA,CAClDN,uCACA;;;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { yup, validateYupSchema } from '@strapi/utils';
|
|
2
|
+
|
|
3
|
+
const RELEASE_SCHEMA = yup.object().shape({
|
|
4
|
+
name: yup.string().trim().required(),
|
|
5
|
+
scheduledAt: yup.string().nullable(),
|
|
6
|
+
timezone: yup.string().when('scheduledAt', {
|
|
7
|
+
is: (value)=>value !== null && value !== undefined,
|
|
8
|
+
then: yup.string().required(),
|
|
9
|
+
otherwise: yup.string().nullable()
|
|
10
|
+
})
|
|
11
|
+
}).required().noUnknown();
|
|
12
|
+
const FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup.object().shape({
|
|
13
|
+
contentType: yup.string().required(),
|
|
14
|
+
entryDocumentId: yup.string().nullable(),
|
|
15
|
+
hasEntryAttached: yup.string().nullable(),
|
|
16
|
+
locale: yup.string().nullable()
|
|
17
|
+
}).required().noUnknown();
|
|
18
|
+
const validateRelease = validateYupSchema(RELEASE_SCHEMA);
|
|
19
|
+
const validatefindByDocumentAttachedParams = validateYupSchema(FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA);
|
|
20
|
+
|
|
21
|
+
export { RELEASE_SCHEMA, validateRelease, validatefindByDocumentAttachedParams };
|
|
22
|
+
//# sourceMappingURL=release.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.mjs","sources":["../../../../server/src/controllers/validation/release.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(),\n scheduledAt: yup.string().nullable(),\n timezone: yup.string().when('scheduledAt', {\n is: (value: any) => value !== null && value !== undefined,\n then: yup.string().required(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nconst FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup\n .object()\n .shape({\n contentType: yup.string().required(),\n entryDocumentId: yup.string().nullable(),\n hasEntryAttached: yup.string().nullable(),\n locale: yup.string().nullable(),\n })\n .required()\n .noUnknown();\n\nexport const validateRelease = validateYupSchema(RELEASE_SCHEMA);\n\nexport const validatefindByDocumentAttachedParams = validateYupSchema(\n FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA\n);\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","scheduledAt","nullable","timezone","when","is","value","undefined","then","otherwise","noUnknown","FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA","contentType","entryDocumentId","hasEntryAttached","locale","validateRelease","validateYupSchema","validatefindByDocumentAttachedParams"],"mappings":";;MAEaA,cAAiBC,GAAAA,GAAAA,CAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,GAAII,CAAAA,MAAM,EAAGC,CAAAA,IAAI,GAAGC,QAAQ,EAAA;IAClCC,WAAaP,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAClCC,IAAAA,QAAAA,EAAUT,GAAII,CAAAA,MAAM,EAAGM,CAAAA,IAAI,CAAC,aAAe,EAAA;AACzCC,QAAAA,EAAAA,EAAI,CAACC,KAAAA,GAAeA,KAAU,KAAA,IAAA,IAAQA,KAAUC,KAAAA,SAAAA;QAChDC,IAAMd,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;QAC3BS,SAAWf,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAClC,KAAA;AACF,CACCF,CAAAA,CAAAA,QAAQ,EACRU,CAAAA,SAAS;AAEZ,MAAMC,uCAA0CjB,GAAAA,GAAAA,CAC7CC,MAAM,EAAA,CACNC,KAAK,CAAC;IACLgB,WAAalB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,EAAA;IAClCa,eAAiBnB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACtCY,gBAAkBpB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;IACvCa,MAAQrB,EAAAA,GAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ;AAC/B,CACCF,CAAAA,CAAAA,QAAQ,GACRU,SAAS,EAAA;AAEL,MAAMM,eAAkBC,GAAAA,iBAAAA,CAAkBxB,cAAgB;AAE1D,MAAMyB,oCAAuCD,GAAAA,iBAAAA,CAClDN,uCACA;;;;"}
|