@strapi/content-releases 5.37.1 → 5.38.0
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.map +1 -1
- package/dist/admin/assets/purchase-page-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/assets/purchase-page-illustration-light.jpg.js.map +1 -1
- package/dist/admin/assets/purchase-page-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/components/EntryValidationPopover.js.map +1 -1
- package/dist/admin/components/EntryValidationPopover.mjs +1 -1
- package/dist/admin/components/EntryValidationPopover.mjs.map +1 -1
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/components/ReleaseAction.js.map +1 -1
- package/dist/admin/components/ReleaseAction.mjs +1 -1
- package/dist/admin/components/ReleaseAction.mjs.map +1 -1
- package/dist/admin/components/ReleaseActionMenu.js.map +1 -1
- package/dist/admin/components/ReleaseActionMenu.mjs +3 -3
- package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -1
- package/dist/admin/components/ReleaseActionModal.js.map +1 -1
- package/dist/admin/components/ReleaseActionModal.mjs +2 -2
- package/dist/admin/components/ReleaseActionModal.mjs.map +1 -1
- package/dist/admin/components/ReleaseActionOptions.js.map +1 -1
- package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -1
- package/dist/admin/components/ReleaseListCell.js.map +1 -1
- package/dist/admin/components/ReleaseListCell.mjs.map +1 -1
- package/dist/admin/components/ReleaseModal.js.map +1 -1
- package/dist/admin/components/ReleaseModal.mjs.map +1 -1
- package/dist/admin/components/ReleasesPanel.js.map +1 -1
- package/dist/admin/components/ReleasesPanel.mjs.map +1 -1
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +1 -1
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/modules/hooks.js.map +1 -1
- package/dist/admin/modules/hooks.mjs.map +1 -1
- package/dist/admin/pages/App.js.map +1 -1
- package/dist/admin/pages/App.mjs.map +1 -1
- package/dist/admin/pages/PurchaseContentReleases.js.map +1 -1
- package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -1
- package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -1
- package/dist/admin/pages/ReleaseDetailsPage.mjs +2 -2
- package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -1
- package/dist/admin/pages/ReleasesPage.js.map +1 -1
- package/dist/admin/pages/ReleasesPage.mjs +1 -1
- package/dist/admin/pages/ReleasesPage.mjs.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.mjs +1 -1
- package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -1
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/services/release.js.map +1 -1
- package/dist/admin/services/release.mjs.map +1 -1
- package/dist/admin/store/hooks.js.map +1 -1
- package/dist/admin/store/hooks.mjs.map +1 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/time.js.map +1 -1
- package/dist/admin/utils/time.mjs.map +1 -1
- package/dist/admin/validation/schemas.js.map +1 -1
- package/dist/admin/validation/schemas.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/constants.js.map +1 -1
- package/dist/server/constants.mjs.map +1 -1
- package/dist/server/content-types/index.js +4 -4
- package/dist/server/content-types/index.js.map +1 -1
- package/dist/server/content-types/index.mjs.map +1 -1
- package/dist/server/content-types/release/index.js.map +1 -1
- package/dist/server/content-types/release/index.mjs.map +1 -1
- package/dist/server/content-types/release/schema.js.map +1 -1
- package/dist/server/content-types/release/schema.mjs.map +1 -1
- package/dist/server/content-types/release-action/index.js.map +1 -1
- package/dist/server/content-types/release-action/index.mjs.map +1 -1
- package/dist/server/content-types/release-action/schema.js.map +1 -1
- package/dist/server/content-types/release-action/schema.mjs.map +1 -1
- package/dist/server/controllers/homepage.js.map +1 -1
- package/dist/server/controllers/homepage.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/release-action.js.map +1 -1
- package/dist/server/controllers/release-action.mjs +1 -1
- package/dist/server/controllers/release-action.mjs.map +1 -1
- package/dist/server/controllers/release.js.map +1 -1
- package/dist/server/controllers/release.mjs +1 -1
- package/dist/server/controllers/release.mjs.map +1 -1
- package/dist/server/controllers/settings.js.map +1 -1
- package/dist/server/controllers/settings.mjs.map +1 -1
- package/dist/server/controllers/validation/release-action.js.map +1 -1
- package/dist/server/controllers/validation/release-action.mjs.map +1 -1
- package/dist/server/controllers/validation/release.js.map +1 -1
- package/dist/server/controllers/validation/release.mjs.map +1 -1
- package/dist/server/controllers/validation/settings.js.map +1 -1
- package/dist/server/controllers/validation/settings.mjs.map +1 -1
- package/dist/server/destroy.js.map +1 -1
- package/dist/server/destroy.mjs.map +1 -1
- package/dist/server/index.js +9 -9
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/middlewares/documents.js.map +1 -1
- package/dist/server/middlewares/documents.mjs +1 -1
- package/dist/server/middlewares/documents.mjs.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -1
- package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -1
- package/dist/server/migrations/index.js.map +1 -1
- package/dist/server/migrations/index.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/homepage.js.map +1 -1
- package/dist/server/routes/homepage.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/routes/release-action.js.map +1 -1
- package/dist/server/routes/release-action.mjs.map +1 -1
- package/dist/server/routes/release.js.map +1 -1
- package/dist/server/routes/release.mjs.map +1 -1
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/settings.mjs.map +1 -1
- package/dist/server/services/homepage.js.map +1 -1
- package/dist/server/services/homepage.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/release-action.js.map +1 -1
- package/dist/server/services/release-action.mjs +3 -3
- package/dist/server/services/release-action.mjs.map +1 -1
- package/dist/server/services/release.js.map +1 -1
- package/dist/server/services/release.mjs +2 -2
- package/dist/server/services/release.mjs.map +1 -1
- package/dist/server/services/scheduling.js.map +1 -1
- package/dist/server/services/scheduling.mjs.map +1 -1
- package/dist/server/services/settings.js.map +1 -1
- package/dist/server/services/settings.mjs.map +1 -1
- package/dist/server/services/validation.js.map +1 -1
- package/dist/server/services/validation.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.mjs","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch (error) {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","error","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":"AAAO,MAAMA,
|
|
1
|
+
{"version":3,"file":"time.mjs","sources":["../../../admin/src/utils/time.ts"],"sourcesContent":["export const getTimezoneOffset = (timezone: string, date: Date) => {\n try {\n const offsetPart = new Intl.DateTimeFormat('en', {\n timeZone: timezone,\n timeZoneName: 'longOffset',\n })\n .formatToParts(date)\n .find((part) => part.type === 'timeZoneName');\n\n const offset = offsetPart ? offsetPart.value : '';\n\n // We want to show time based on UTC, not GMT so we swap that.\n let utcOffset = offset.replace('GMT', 'UTC');\n\n // For perfect UTC (UTC+0:00) we only get the string UTC, So we need to append the 0's.\n if (!utcOffset.includes('+') && !utcOffset.includes('-')) {\n utcOffset = `${utcOffset}+00:00`;\n }\n\n return utcOffset;\n } catch (error) {\n // When timezone is invalid we catch the error and return empty to don't break the app\n return '';\n }\n};\n\ninterface ITimezoneOption {\n offset: string;\n value: string;\n}\n\nexport const getTimezones = (selectedDate: Date) => {\n const timezoneList: ITimezoneOption[] = Intl.supportedValuesOf('timeZone').map((timezone) => {\n // Timezone will be in the format GMT${OFFSET} where offset could be nothing,\n // a four digit string e.g. +05:00 or -08:00\n const utcOffset = getTimezoneOffset(timezone, selectedDate);\n\n // Offset and timezone are concatenated with '&', so to split and save the required timezone in DB\n return { offset: utcOffset, value: `${utcOffset}&${timezone}` } satisfies ITimezoneOption;\n });\n\n const systemTimezone = timezoneList.find(\n (timezone) => timezone.value.split('&')[1] === Intl.DateTimeFormat().resolvedOptions().timeZone\n );\n\n return { timezoneList, systemTimezone };\n};\n"],"names":["getTimezoneOffset","timezone","date","offsetPart","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","find","part","type","offset","value","utcOffset","replace","includes","error","getTimezones","selectedDate","timezoneList","supportedValuesOf","map","systemTimezone","split","resolvedOptions"],"mappings":"AAAO,MAAMA,iBAAAA,GAAoB,CAACC,QAAAA,EAAkBC,IAAAA,GAAAA;IAClD,IAAI;AACF,QAAA,MAAMC,UAAAA,GAAa,IAAIC,IAAAA,CAAKC,cAAc,CAAC,IAAA,EAAM;YAC/CC,QAAAA,EAAUL,QAAAA;YACVM,YAAAA,EAAc;SAChB,CAAA,CACGC,aAAa,CAACN,IAAAA,CAAAA,CACdO,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKC,IAAI,KAAK,cAAA,CAAA;AAEhC,QAAA,MAAMC,MAAAA,GAAST,UAAAA,GAAaA,UAAAA,CAAWU,KAAK,GAAG,EAAA;;AAG/C,QAAA,IAAIC,SAAAA,GAAYF,MAAAA,CAAOG,OAAO,CAAC,KAAA,EAAO,KAAA,CAAA;;QAGtC,IAAI,CAACD,UAAUE,QAAQ,CAAC,QAAQ,CAACF,SAAAA,CAAUE,QAAQ,CAAC,GAAA,CAAA,EAAM;YACxDF,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAU,MAAM,CAAC;AAClC,QAAA;QAEA,OAAOA,SAAAA;AACT,IAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;;QAEd,OAAO,EAAA;AACT,IAAA;AACF;AAOO,MAAMC,eAAe,CAACC,YAAAA,GAAAA;AAC3B,IAAA,MAAMC,eAAkChB,IAAAA,CAAKiB,iBAAiB,CAAC,UAAA,CAAA,CAAYC,GAAG,CAAC,CAACrB,QAAAA,GAAAA;;;QAG9E,MAAMa,SAAAA,GAAYd,kBAAkBC,QAAAA,EAAUkB,YAAAA,CAAAA;;QAG9C,OAAO;YAAEP,MAAAA,EAAQE,SAAAA;AAAWD,YAAAA,KAAAA,EAAO,CAAA,EAAGC,SAAAA,CAAU,CAAC,EAAEb,QAAAA,CAAAA;AAAW,SAAA;AAChE,IAAA,CAAA,CAAA;IAEA,MAAMsB,cAAAA,GAAiBH,aAAaX,IAAI,CACtC,CAACR,QAAAA,GAAaA,QAAAA,CAASY,KAAK,CAACW,KAAK,CAAC,GAAA,CAAI,CAAC,EAAE,KAAKpB,IAAAA,CAAKC,cAAc,EAAA,CAAGoB,eAAe,GAAGnB,QAAQ,CAAA;IAGjG,OAAO;AAAEc,QAAAA,YAAAA;AAAcG,QAAAA;AAAe,KAAA;AACxC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sources":["../../../admin/src/validation/schemas.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport * as yup from 'yup';\n\n/**\n * FormikErrors type enforce us to always return a string as error.\n * We need these errors to be translated, so we need to create a hook to be able to use the formatMessage function.\n */\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(translatedErrors.required.id).nullable(),\n scheduledAt: yup.string().nullable(),\n isScheduled: yup.boolean().optional(),\n time: yup\n .string()\n .when('isScheduled', {\n is: true,\n then: yup.string().trim().required(translatedErrors.required.id),\n otherwise: yup.string().nullable(),\n })\n .test(\n 'time-in-future-if-today',\n 'content-releases.modal.form.time.has-passed',\n function (time) {\n const { date, timezone } = this.parent;\n\n if (!date || !timezone || !time) {\n return true;\n }\n\n // Timezone is in format \"UTC&Europe/Paris\", so we get the region part for the dates functions\n const region = timezone.split('&')[1];\n\n const selectedTime = zonedTimeToUtc(`${date} ${time}`, region);\n const now = new Date();\n\n return selectedTime > now;\n }\n ),\n timezone: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n date: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","translatedErrors","id","nullable","scheduledAt","isScheduled","boolean","optional","time","when","is","then","otherwise","test","date","timezone","parent","region","split","selectedTime","zonedTimeToUtc","now","Date","noUnknown","SETTINGS_SCHEMA","defaultTimezone","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;AAGC,
|
|
1
|
+
{"version":3,"file":"schemas.js","sources":["../../../admin/src/validation/schemas.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport * as yup from 'yup';\n\n/**\n * FormikErrors type enforce us to always return a string as error.\n * We need these errors to be translated, so we need to create a hook to be able to use the formatMessage function.\n */\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(translatedErrors.required.id).nullable(),\n scheduledAt: yup.string().nullable(),\n isScheduled: yup.boolean().optional(),\n time: yup\n .string()\n .when('isScheduled', {\n is: true,\n then: yup.string().trim().required(translatedErrors.required.id),\n otherwise: yup.string().nullable(),\n })\n .test(\n 'time-in-future-if-today',\n 'content-releases.modal.form.time.has-passed',\n function (time) {\n const { date, timezone } = this.parent;\n\n if (!date || !timezone || !time) {\n return true;\n }\n\n // Timezone is in format \"UTC&Europe/Paris\", so we get the region part for the dates functions\n const region = timezone.split('&')[1];\n\n const selectedTime = zonedTimeToUtc(`${date} ${time}`, region);\n const now = new Date();\n\n return selectedTime > now;\n }\n ),\n timezone: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n date: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","translatedErrors","id","nullable","scheduledAt","isScheduled","boolean","optional","time","when","is","then","otherwise","test","date","timezone","parent","region","split","selectedTime","zonedTimeToUtc","now","Date","noUnknown","SETTINGS_SCHEMA","defaultTimezone","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;AAGC,IACM,MAAMA,cAAAA,GAAiBC,eAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,cAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,4BAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;IACzEC,WAAAA,EAAaV,cAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA;IAClCE,WAAAA,EAAaX,cAAAA,CAAIY,OAAO,EAAA,CAAGC,QAAQ,EAAA;AACnCC,IAAAA,IAAAA,EAAMd,cAAAA,CACHI,MAAM,EAAA,CACNW,IAAI,CAAC,aAAA,EAAe;QACnBC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,cAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,4BAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA;QAC/DU,SAAAA,EAAWlB,cAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA,CACCU,IAAI,CACH,yBAAA,EACA,6CAAA,EACA,SAAUL,IAAI,EAAA;QACZ,MAAM,EAAEM,IAAI,EAAEC,QAAQ,EAAE,GAAG,IAAI,CAACC,MAAM;AAEtC,QAAA,IAAI,CAACF,IAAAA,IAAQ,CAACC,QAAAA,IAAY,CAACP,IAAAA,EAAM;YAC/B,OAAO,IAAA;AACT,QAAA;;AAGA,QAAA,MAAMS,SAASF,QAAAA,CAASG,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;AAErC,QAAA,MAAMC,eAAeC,wBAAAA,CAAe,CAAA,EAAGN,KAAK,CAAC,EAAEN,MAAM,EAAES,MAAAA,CAAAA;AACvD,QAAA,MAAMI,MAAM,IAAIC,IAAAA,EAAAA;AAEhB,QAAA,OAAOH,YAAAA,GAAeE,GAAAA;AACxB,IAAA,CAAA,CAAA;AAEJN,IAAAA,QAAAA,EAAUrB,cAAAA,CAAII,MAAM,EAAA,CAAGW,IAAI,CAAC,aAAA,EAAe;QACzCC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,cAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,6BAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAAA,EAAWlB,cAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA;AACAW,IAAAA,IAAAA,EAAMpB,cAAAA,CAAII,MAAM,EAAA,CAAGW,IAAI,CAAC,aAAA,EAAe;QACrCC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,cAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,6BAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAAA,EAAWlB,cAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA;AACF,CAAA,CAAA,CACCH,QAAQ,EAAA,CACRuB,SAAS;MAECC,eAAAA,GAAkB9B,cAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACL6B,IAAAA,eAAAA,EAAiB/B,eAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAGuB,OAAO,CAAC,IAAA;AACnD,CAAA,CAAA,CACC1B,QAAQ,EAAA,CACRuB,SAAS;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.mjs","sources":["../../../admin/src/validation/schemas.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport * as yup from 'yup';\n\n/**\n * FormikErrors type enforce us to always return a string as error.\n * We need these errors to be translated, so we need to create a hook to be able to use the formatMessage function.\n */\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(translatedErrors.required.id).nullable(),\n scheduledAt: yup.string().nullable(),\n isScheduled: yup.boolean().optional(),\n time: yup\n .string()\n .when('isScheduled', {\n is: true,\n then: yup.string().trim().required(translatedErrors.required.id),\n otherwise: yup.string().nullable(),\n })\n .test(\n 'time-in-future-if-today',\n 'content-releases.modal.form.time.has-passed',\n function (time) {\n const { date, timezone } = this.parent;\n\n if (!date || !timezone || !time) {\n return true;\n }\n\n // Timezone is in format \"UTC&Europe/Paris\", so we get the region part for the dates functions\n const region = timezone.split('&')[1];\n\n const selectedTime = zonedTimeToUtc(`${date} ${time}`, region);\n const now = new Date();\n\n return selectedTime > now;\n }\n ),\n timezone: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n date: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","translatedErrors","id","nullable","scheduledAt","isScheduled","boolean","optional","time","when","is","then","otherwise","test","date","timezone","parent","region","split","selectedTime","zonedTimeToUtc","now","Date","noUnknown","SETTINGS_SCHEMA","defaultTimezone","default"],"mappings":";;;;AAIA;;;AAGC,
|
|
1
|
+
{"version":3,"file":"schemas.mjs","sources":["../../../admin/src/validation/schemas.ts"],"sourcesContent":["import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport * as yup from 'yup';\n\n/**\n * FormikErrors type enforce us to always return a string as error.\n * We need these errors to be translated, so we need to create a hook to be able to use the formatMessage function.\n */\nexport const RELEASE_SCHEMA = yup\n .object()\n .shape({\n name: yup.string().trim().required(translatedErrors.required.id).nullable(),\n scheduledAt: yup.string().nullable(),\n isScheduled: yup.boolean().optional(),\n time: yup\n .string()\n .when('isScheduled', {\n is: true,\n then: yup.string().trim().required(translatedErrors.required.id),\n otherwise: yup.string().nullable(),\n })\n .test(\n 'time-in-future-if-today',\n 'content-releases.modal.form.time.has-passed',\n function (time) {\n const { date, timezone } = this.parent;\n\n if (!date || !timezone || !time) {\n return true;\n }\n\n // Timezone is in format \"UTC&Europe/Paris\", so we get the region part for the dates functions\n const region = timezone.split('&')[1];\n\n const selectedTime = zonedTimeToUtc(`${date} ${time}`, region);\n const now = new Date();\n\n return selectedTime > now;\n }\n ),\n timezone: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n date: yup.string().when('isScheduled', {\n is: true,\n then: yup.string().required(translatedErrors.required.id).nullable(),\n otherwise: yup.string().nullable(),\n }),\n })\n .required()\n .noUnknown();\n\nexport const SETTINGS_SCHEMA = yup\n .object()\n .shape({\n defaultTimezone: yup.string().nullable().default(null),\n })\n .required()\n .noUnknown();\n"],"names":["RELEASE_SCHEMA","yup","object","shape","name","string","trim","required","translatedErrors","id","nullable","scheduledAt","isScheduled","boolean","optional","time","when","is","then","otherwise","test","date","timezone","parent","region","split","selectedTime","zonedTimeToUtc","now","Date","noUnknown","SETTINGS_SCHEMA","defaultTimezone","default"],"mappings":";;;;AAIA;;;AAGC,IACM,MAAMA,cAAAA,GAAiBC,IAC3BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,GAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,gBAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;IACzEC,WAAAA,EAAaV,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA;IAClCE,WAAAA,EAAaX,GAAAA,CAAIY,OAAO,EAAA,CAAGC,QAAQ,EAAA;AACnCC,IAAAA,IAAAA,EAAMd,GAAAA,CACHI,MAAM,EAAA,CACNW,IAAI,CAAC,aAAA,EAAe;QACnBC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,GAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,gBAAAA,CAAiBD,QAAQ,CAACE,EAAE,CAAA;QAC/DU,SAAAA,EAAWlB,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA,CACCU,IAAI,CACH,yBAAA,EACA,6CAAA,EACA,SAAUL,IAAI,EAAA;QACZ,MAAM,EAAEM,IAAI,EAAEC,QAAQ,EAAE,GAAG,IAAI,CAACC,MAAM;AAEtC,QAAA,IAAI,CAACF,IAAAA,IAAQ,CAACC,QAAAA,IAAY,CAACP,IAAAA,EAAM;YAC/B,OAAO,IAAA;AACT,QAAA;;AAGA,QAAA,MAAMS,SAASF,QAAAA,CAASG,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;AAErC,QAAA,MAAMC,eAAeC,cAAAA,CAAe,CAAA,EAAGN,KAAK,CAAC,EAAEN,MAAM,EAAES,MAAAA,CAAAA;AACvD,QAAA,MAAMI,MAAM,IAAIC,IAAAA,EAAAA;AAEhB,QAAA,OAAOH,YAAAA,GAAeE,GAAAA;AACxB,IAAA,CAAA,CAAA;AAEJN,IAAAA,QAAAA,EAAUrB,GAAAA,CAAII,MAAM,EAAA,CAAGW,IAAI,CAAC,aAAA,EAAe;QACzCC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,iBAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAAA,EAAWlB,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA,CAAA;AACAW,IAAAA,IAAAA,EAAMpB,GAAAA,CAAII,MAAM,EAAA,CAAGW,IAAI,CAAC,aAAA,EAAe;QACrCC,EAAAA,EAAI,IAAA;QACJC,IAAAA,EAAMjB,GAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAACC,iBAAiBD,QAAQ,CAACE,EAAE,CAAA,CAAEC,QAAQ,EAAA;QAClES,SAAAA,EAAWlB,GAAAA,CAAII,MAAM,EAAA,CAAGK,QAAQ;AAClC,KAAA;AACF,CAAA,CAAA,CACCH,QAAQ,EAAA,CACRuB,SAAS;MAECC,eAAAA,GAAkB9B,GAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACL6B,IAAAA,eAAAA,EAAiB/B,IAAII,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAGuB,OAAO,CAAC,IAAA;AACnD,CAAA,CAAA,CACC1B,QAAQ,EAAA,CACRuB,SAAS;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core, UID, Modules } from '@strapi/types';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from './constants';\nimport { getService } from './utils';\nimport { deleteActionsOnDelete, updateActionsOnUpdate } from './middlewares/documents';\n\ninterface DeleteManyParams {\n contentType: UID.ContentType;\n locale: string | null;\n entryDocumentId?: Modules.Documents.ID;\n}\n\nconst deleteReleasesActionsAndUpdateReleaseStatus = async (params: DeleteManyParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n // We update the status of each release after delete the actions\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const contentTypesWithDraftAndPublish = Object.keys(strapi.contentTypes).filter(\n (uid: any) => strapi.contentTypes[uid]?.options?.draftAndPublish\n );\n\n strapi.db.lifecycles.subscribe({\n models: contentTypesWithDraftAndPublish,\n\n /**\n * deleteMany is still used outside documents service, for example when deleting a locale\n */\n async afterDeleteMany(event) {\n try {\n const model = strapi.getModel(event.model.uid as UID.Schema);\n // @ts-expect-error TODO: lifecycles types looks like are not 100% finished\n if (model.kind === 'collectionType' && model.options?.draftAndPublish) {\n const { where } = event.params;\n\n deleteReleasesActionsAndUpdateReleaseStatus({\n contentType: model.uid,\n locale: where?.locale ?? null,\n ...(where?.documentId && { entryDocumentId: where.documentId }),\n });\n }\n } catch (error) {\n // If an error happens we don't want to block the delete entry flow, but we log the error\n strapi.log.error('Error while deleting release actions after entry deleteMany', {\n error,\n });\n }\n },\n });\n\n // We register middleware to handle ReleaseActions when changes on documents are made\n strapi.documents.use(deleteActionsOnDelete);\n strapi.documents.use(updateActionsOnUpdate);\n\n getService('scheduling', { strapi })\n .syncFromDatabase()\n .catch((err: Error) => {\n strapi.log.error(\n 'Error while syncing scheduled jobs from the database in the content-releases plugin. This could lead to errors in the releases scheduling.'\n );\n\n throw err;\n });\n\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n }\n};\n"],"names":["deleteReleasesActionsAndUpdateReleaseStatus","params","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","actions","RELEASE_ACTION_MODEL_UID","deleteMany","release","getService","updateReleaseStatus","id","bootstrap","ee","features","isEnabled","contentTypesWithDraftAndPublish","Object","keys","contentTypes","filter","uid","options","draftAndPublish","lifecycles","subscribe","models","afterDeleteMany","event","model","getModel","kind","contentType","locale","documentId","entryDocumentId","error","log","documents","use","deleteActionsOnDelete","updateActionsOnUpdate","syncFromDatabase","catch","err","entries","ALLOWED_WEBHOOK_EVENTS","forEach","key","value","get","addAllowedEvent"],"mappings":";;;;;;AAaA,MAAMA,8CAA8C,OAAOC,MAAAA,GAAAA;IACzD,MAAMC,QAAAA,GAAW,MAAMC,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core, UID, Modules } from '@strapi/types';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from './constants';\nimport { getService } from './utils';\nimport { deleteActionsOnDelete, updateActionsOnUpdate } from './middlewares/documents';\n\ninterface DeleteManyParams {\n contentType: UID.ContentType;\n locale: string | null;\n entryDocumentId?: Modules.Documents.ID;\n}\n\nconst deleteReleasesActionsAndUpdateReleaseStatus = async (params: DeleteManyParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n // We update the status of each release after delete the actions\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const contentTypesWithDraftAndPublish = Object.keys(strapi.contentTypes).filter(\n (uid: any) => strapi.contentTypes[uid]?.options?.draftAndPublish\n );\n\n strapi.db.lifecycles.subscribe({\n models: contentTypesWithDraftAndPublish,\n\n /**\n * deleteMany is still used outside documents service, for example when deleting a locale\n */\n async afterDeleteMany(event) {\n try {\n const model = strapi.getModel(event.model.uid as UID.Schema);\n // @ts-expect-error TODO: lifecycles types looks like are not 100% finished\n if (model.kind === 'collectionType' && model.options?.draftAndPublish) {\n const { where } = event.params;\n\n deleteReleasesActionsAndUpdateReleaseStatus({\n contentType: model.uid,\n locale: where?.locale ?? null,\n ...(where?.documentId && { entryDocumentId: where.documentId }),\n });\n }\n } catch (error) {\n // If an error happens we don't want to block the delete entry flow, but we log the error\n strapi.log.error('Error while deleting release actions after entry deleteMany', {\n error,\n });\n }\n },\n });\n\n // We register middleware to handle ReleaseActions when changes on documents are made\n strapi.documents.use(deleteActionsOnDelete);\n strapi.documents.use(updateActionsOnUpdate);\n\n getService('scheduling', { strapi })\n .syncFromDatabase()\n .catch((err: Error) => {\n strapi.log.error(\n 'Error while syncing scheduled jobs from the database in the content-releases plugin. This could lead to errors in the releases scheduling.'\n );\n\n throw err;\n });\n\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n }\n};\n"],"names":["deleteReleasesActionsAndUpdateReleaseStatus","params","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","actions","RELEASE_ACTION_MODEL_UID","deleteMany","release","getService","updateReleaseStatus","id","bootstrap","ee","features","isEnabled","contentTypesWithDraftAndPublish","Object","keys","contentTypes","filter","uid","options","draftAndPublish","lifecycles","subscribe","models","afterDeleteMany","event","model","getModel","kind","contentType","locale","documentId","entryDocumentId","error","log","documents","use","deleteActionsOnDelete","updateActionsOnUpdate","syncFromDatabase","catch","err","entries","ALLOWED_WEBHOOK_EVENTS","forEach","key","value","get","addAllowedEvent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core, UID, Modules } from '@strapi/types';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from './constants';\nimport { getService } from './utils';\nimport { deleteActionsOnDelete, updateActionsOnUpdate } from './middlewares/documents';\n\ninterface DeleteManyParams {\n contentType: UID.ContentType;\n locale: string | null;\n entryDocumentId?: Modules.Documents.ID;\n}\n\nconst deleteReleasesActionsAndUpdateReleaseStatus = async (params: DeleteManyParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n // We update the status of each release after delete the actions\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const contentTypesWithDraftAndPublish = Object.keys(strapi.contentTypes).filter(\n (uid: any) => strapi.contentTypes[uid]?.options?.draftAndPublish\n );\n\n strapi.db.lifecycles.subscribe({\n models: contentTypesWithDraftAndPublish,\n\n /**\n * deleteMany is still used outside documents service, for example when deleting a locale\n */\n async afterDeleteMany(event) {\n try {\n const model = strapi.getModel(event.model.uid as UID.Schema);\n // @ts-expect-error TODO: lifecycles types looks like are not 100% finished\n if (model.kind === 'collectionType' && model.options?.draftAndPublish) {\n const { where } = event.params;\n\n deleteReleasesActionsAndUpdateReleaseStatus({\n contentType: model.uid,\n locale: where?.locale ?? null,\n ...(where?.documentId && { entryDocumentId: where.documentId }),\n });\n }\n } catch (error) {\n // If an error happens we don't want to block the delete entry flow, but we log the error\n strapi.log.error('Error while deleting release actions after entry deleteMany', {\n error,\n });\n }\n },\n });\n\n // We register middleware to handle ReleaseActions when changes on documents are made\n strapi.documents.use(deleteActionsOnDelete);\n strapi.documents.use(updateActionsOnUpdate);\n\n getService('scheduling', { strapi })\n .syncFromDatabase()\n .catch((err: Error) => {\n strapi.log.error(\n 'Error while syncing scheduled jobs from the database in the content-releases plugin. This could lead to errors in the releases scheduling.'\n );\n\n throw err;\n });\n\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n }\n};\n"],"names":["deleteReleasesActionsAndUpdateReleaseStatus","params","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","actions","RELEASE_ACTION_MODEL_UID","deleteMany","release","getService","updateReleaseStatus","id","bootstrap","ee","features","isEnabled","contentTypesWithDraftAndPublish","Object","keys","contentTypes","filter","uid","options","draftAndPublish","lifecycles","subscribe","models","afterDeleteMany","event","model","getModel","kind","contentType","locale","documentId","entryDocumentId","error","log","documents","use","deleteActionsOnDelete","updateActionsOnUpdate","syncFromDatabase","catch","err","entries","ALLOWED_WEBHOOK_EVENTS","forEach","key","value","get","addAllowedEvent"],"mappings":";;;;AAaA,MAAMA,8CAA8C,OAAOC,MAAAA,GAAAA;IACzD,MAAMC,QAAAA,GAAW,MAAMC,
|
|
1
|
+
{"version":3,"file":"bootstrap.mjs","sources":["../../server/src/bootstrap.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport type { Core, UID, Modules } from '@strapi/types';\n\nimport { RELEASE_ACTION_MODEL_UID, RELEASE_MODEL_UID, ALLOWED_WEBHOOK_EVENTS } from './constants';\nimport { getService } from './utils';\nimport { deleteActionsOnDelete, updateActionsOnUpdate } from './middlewares/documents';\n\ninterface DeleteManyParams {\n contentType: UID.ContentType;\n locale: string | null;\n entryDocumentId?: Modules.Documents.ID;\n}\n\nconst deleteReleasesActionsAndUpdateReleaseStatus = async (params: DeleteManyParams) => {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n actions: params,\n },\n });\n\n await strapi.db.query(RELEASE_ACTION_MODEL_UID).deleteMany({\n where: params,\n });\n\n // We update the status of each release after delete the actions\n for (const release of releases) {\n getService('release', { strapi }).updateReleaseStatus(release.id);\n }\n};\n\nexport const bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const contentTypesWithDraftAndPublish = Object.keys(strapi.contentTypes).filter(\n (uid: any) => strapi.contentTypes[uid]?.options?.draftAndPublish\n );\n\n strapi.db.lifecycles.subscribe({\n models: contentTypesWithDraftAndPublish,\n\n /**\n * deleteMany is still used outside documents service, for example when deleting a locale\n */\n async afterDeleteMany(event) {\n try {\n const model = strapi.getModel(event.model.uid as UID.Schema);\n // @ts-expect-error TODO: lifecycles types looks like are not 100% finished\n if (model.kind === 'collectionType' && model.options?.draftAndPublish) {\n const { where } = event.params;\n\n deleteReleasesActionsAndUpdateReleaseStatus({\n contentType: model.uid,\n locale: where?.locale ?? null,\n ...(where?.documentId && { entryDocumentId: where.documentId }),\n });\n }\n } catch (error) {\n // If an error happens we don't want to block the delete entry flow, but we log the error\n strapi.log.error('Error while deleting release actions after entry deleteMany', {\n error,\n });\n }\n },\n });\n\n // We register middleware to handle ReleaseActions when changes on documents are made\n strapi.documents.use(deleteActionsOnDelete);\n strapi.documents.use(updateActionsOnUpdate);\n\n getService('scheduling', { strapi })\n .syncFromDatabase()\n .catch((err: Error) => {\n strapi.log.error(\n 'Error while syncing scheduled jobs from the database in the content-releases plugin. This could lead to errors in the releases scheduling.'\n );\n\n throw err;\n });\n\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n strapi.get('webhookStore').addAllowedEvent(key, value);\n });\n }\n};\n"],"names":["deleteReleasesActionsAndUpdateReleaseStatus","params","releases","strapi","db","query","RELEASE_MODEL_UID","findMany","where","actions","RELEASE_ACTION_MODEL_UID","deleteMany","release","getService","updateReleaseStatus","id","bootstrap","ee","features","isEnabled","contentTypesWithDraftAndPublish","Object","keys","contentTypes","filter","uid","options","draftAndPublish","lifecycles","subscribe","models","afterDeleteMany","event","model","getModel","kind","contentType","locale","documentId","entryDocumentId","error","log","documents","use","deleteActionsOnDelete","updateActionsOnUpdate","syncFromDatabase","catch","err","entries","ALLOWED_WEBHOOK_EVENTS","forEach","key","value","get","addAllowedEvent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../server/src/constants.ts"],"sourcesContent":["export const RELEASE_MODEL_UID = 'plugin::content-releases.release';\nexport const RELEASE_ACTION_MODEL_UID = 'plugin::content-releases.release-action';\n\nexport const ACTIONS = [\n {\n section: 'plugins',\n displayName: 'Read',\n uid: 'read',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Create',\n uid: 'create',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'update',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Delete',\n uid: 'delete',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Publish',\n uid: 'publish',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Remove an entry from a release',\n uid: 'delete-action',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Add an entry to a release',\n uid: 'create-action',\n pluginName: 'content-releases',\n },\n\n // Settings\n {\n uid: 'settings.read',\n section: 'settings',\n displayName: 'Read',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n\n {\n uid: 'settings.update',\n section: 'settings',\n displayName: 'Edit',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n];\n\nexport const ALLOWED_WEBHOOK_EVENTS = {\n RELEASES_PUBLISH: 'releases.publish',\n};\n"],"names":["RELEASE_MODEL_UID","RELEASE_ACTION_MODEL_UID","ACTIONS","section","displayName","uid","pluginName","category","subCategory","ALLOWED_WEBHOOK_EVENTS","RELEASES_PUBLISH"],"mappings":";;AAAO,MAAMA,oBAAoB;AAC1B,MAAMC,2BAA2B;MAE3BC,
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../server/src/constants.ts"],"sourcesContent":["export const RELEASE_MODEL_UID = 'plugin::content-releases.release';\nexport const RELEASE_ACTION_MODEL_UID = 'plugin::content-releases.release-action';\n\nexport const ACTIONS = [\n {\n section: 'plugins',\n displayName: 'Read',\n uid: 'read',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Create',\n uid: 'create',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'update',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Delete',\n uid: 'delete',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Publish',\n uid: 'publish',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Remove an entry from a release',\n uid: 'delete-action',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Add an entry to a release',\n uid: 'create-action',\n pluginName: 'content-releases',\n },\n\n // Settings\n {\n uid: 'settings.read',\n section: 'settings',\n displayName: 'Read',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n\n {\n uid: 'settings.update',\n section: 'settings',\n displayName: 'Edit',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n];\n\nexport const ALLOWED_WEBHOOK_EVENTS = {\n RELEASES_PUBLISH: 'releases.publish',\n};\n"],"names":["RELEASE_MODEL_UID","RELEASE_ACTION_MODEL_UID","ACTIONS","section","displayName","uid","pluginName","category","subCategory","ALLOWED_WEBHOOK_EVENTS","RELEASES_PUBLISH"],"mappings":";;AAAO,MAAMA,oBAAoB;AAC1B,MAAMC,2BAA2B;MAE3BC,OAAAA,GAAU;AACrB,IAAA;QACEC,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,MAAA;QACbC,GAAAA,EAAK,MAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,QAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,MAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,QAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,SAAA;QACbC,GAAAA,EAAK,SAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,gCAAA;QACbC,GAAAA,EAAK,eAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,2BAAA;QACbC,GAAAA,EAAK,eAAA;QACLC,UAAAA,EAAY;AACd,KAAA;;AAGA,IAAA;QACED,GAAAA,EAAK,eAAA;QACLF,OAAAA,EAAS,UAAA;QACTC,WAAAA,EAAa,MAAA;QACbG,QAAAA,EAAU,kBAAA;QACVC,WAAAA,EAAa,SAAA;QACbF,UAAAA,EAAY;AACd,KAAA;AAEA,IAAA;QACED,GAAAA,EAAK,iBAAA;QACLF,OAAAA,EAAS,UAAA;QACTC,WAAAA,EAAa,MAAA;QACbG,QAAAA,EAAU,kBAAA;QACVC,WAAAA,EAAa,SAAA;QACbF,UAAAA,EAAY;AACd;;MAGWG,sBAAAA,GAAyB;IACpCC,gBAAAA,EAAkB;AACpB;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../server/src/constants.ts"],"sourcesContent":["export const RELEASE_MODEL_UID = 'plugin::content-releases.release';\nexport const RELEASE_ACTION_MODEL_UID = 'plugin::content-releases.release-action';\n\nexport const ACTIONS = [\n {\n section: 'plugins',\n displayName: 'Read',\n uid: 'read',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Create',\n uid: 'create',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'update',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Delete',\n uid: 'delete',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Publish',\n uid: 'publish',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Remove an entry from a release',\n uid: 'delete-action',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Add an entry to a release',\n uid: 'create-action',\n pluginName: 'content-releases',\n },\n\n // Settings\n {\n uid: 'settings.read',\n section: 'settings',\n displayName: 'Read',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n\n {\n uid: 'settings.update',\n section: 'settings',\n displayName: 'Edit',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n];\n\nexport const ALLOWED_WEBHOOK_EVENTS = {\n RELEASES_PUBLISH: 'releases.publish',\n};\n"],"names":["RELEASE_MODEL_UID","RELEASE_ACTION_MODEL_UID","ACTIONS","section","displayName","uid","pluginName","category","subCategory","ALLOWED_WEBHOOK_EVENTS","RELEASES_PUBLISH"],"mappings":"AAAO,MAAMA,oBAAoB;AAC1B,MAAMC,2BAA2B;MAE3BC,
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../server/src/constants.ts"],"sourcesContent":["export const RELEASE_MODEL_UID = 'plugin::content-releases.release';\nexport const RELEASE_ACTION_MODEL_UID = 'plugin::content-releases.release-action';\n\nexport const ACTIONS = [\n {\n section: 'plugins',\n displayName: 'Read',\n uid: 'read',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Create',\n uid: 'create',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'update',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Delete',\n uid: 'delete',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Publish',\n uid: 'publish',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Remove an entry from a release',\n uid: 'delete-action',\n pluginName: 'content-releases',\n },\n {\n section: 'plugins',\n displayName: 'Add an entry to a release',\n uid: 'create-action',\n pluginName: 'content-releases',\n },\n\n // Settings\n {\n uid: 'settings.read',\n section: 'settings',\n displayName: 'Read',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n\n {\n uid: 'settings.update',\n section: 'settings',\n displayName: 'Edit',\n category: 'content releases',\n subCategory: 'options',\n pluginName: 'content-releases',\n },\n];\n\nexport const ALLOWED_WEBHOOK_EVENTS = {\n RELEASES_PUBLISH: 'releases.publish',\n};\n"],"names":["RELEASE_MODEL_UID","RELEASE_ACTION_MODEL_UID","ACTIONS","section","displayName","uid","pluginName","category","subCategory","ALLOWED_WEBHOOK_EVENTS","RELEASES_PUBLISH"],"mappings":"AAAO,MAAMA,oBAAoB;AAC1B,MAAMC,2BAA2B;MAE3BC,OAAAA,GAAU;AACrB,IAAA;QACEC,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,MAAA;QACbC,GAAAA,EAAK,MAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,QAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,MAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,QAAA;QACbC,GAAAA,EAAK,QAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,SAAA;QACbC,GAAAA,EAAK,SAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,gCAAA;QACbC,GAAAA,EAAK,eAAA;QACLC,UAAAA,EAAY;AACd,KAAA;AACA,IAAA;QACEH,OAAAA,EAAS,SAAA;QACTC,WAAAA,EAAa,2BAAA;QACbC,GAAAA,EAAK,eAAA;QACLC,UAAAA,EAAY;AACd,KAAA;;AAGA,IAAA;QACED,GAAAA,EAAK,eAAA;QACLF,OAAAA,EAAS,UAAA;QACTC,WAAAA,EAAa,MAAA;QACbG,QAAAA,EAAU,kBAAA;QACVC,WAAAA,EAAa,SAAA;QACbF,UAAAA,EAAY;AACd,KAAA;AAEA,IAAA;QACED,GAAAA,EAAK,iBAAA;QACLF,OAAAA,EAAS,UAAA;QACTC,WAAAA,EAAa,MAAA;QACbG,QAAAA,EAAU,kBAAA;QACVC,WAAAA,EAAa,SAAA;QACbF,UAAAA,EAAY;AACd;;MAGWG,sBAAAA,GAAyB;IACpCC,gBAAAA,EAAkB;AACpB;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./release/index.js');
|
|
4
|
-
var index
|
|
3
|
+
var index$1 = require('./release/index.js');
|
|
4
|
+
var index = require('./release-action/index.js');
|
|
5
5
|
|
|
6
6
|
const contentTypes = {
|
|
7
|
-
release: index.release,
|
|
8
|
-
'release-action': index
|
|
7
|
+
release: index$1.release,
|
|
8
|
+
'release-action': index.releaseAction
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
exports.contentTypes = contentTypes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import { release } from './release';\nimport { releaseAction } from './release-action';\n\nexport const contentTypes = {\n release,\n 'release-action': releaseAction,\n};\n"],"names":["contentTypes","release","releaseAction"],"mappings":";;;;;MAGaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import { release } from './release';\nimport { releaseAction } from './release-action';\n\nexport const contentTypes = {\n release,\n 'release-action': releaseAction,\n};\n"],"names":["contentTypes","release","releaseAction"],"mappings":";;;;;MAGaA,YAAAA,GAAe;AAC1BC,aAAAA,eAAAA;IACA,gBAAA,EAAkBC;AACpB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import { release } from './release';\nimport { releaseAction } from './release-action';\n\nexport const contentTypes = {\n release,\n 'release-action': releaseAction,\n};\n"],"names":["contentTypes","release","releaseAction"],"mappings":";;;MAGaA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/content-types/index.ts"],"sourcesContent":["import { release } from './release';\nimport { releaseAction } from './release-action';\n\nexport const contentTypes = {\n release,\n 'release-action': releaseAction,\n};\n"],"names":["contentTypes","release","releaseAction"],"mappings":";;;MAGaA,YAAAA,GAAe;AAC1BC,IAAAA,OAAAA;IACA,gBAAA,EAAkBC;AACpB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../server/src/content-types/release/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const release = {\n schema,\n};\n"],"names":["release","schema"],"mappings":";;;;MAEaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/content-types/release/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const release = {\n schema,\n};\n"],"names":["release","schema"],"mappings":";;;;MAEaA,OAAAA,GAAU;AACrBC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../server/src/content-types/release/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const release = {\n schema,\n};\n"],"names":["release","schema"],"mappings":";;MAEaA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../server/src/content-types/release/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const release = {\n schema,\n};\n"],"names":["release","schema"],"mappings":";;MAEaA,OAAAA,GAAU;AACrBC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sources":["../../../../server/src/content-types/release/schema.ts"],"sourcesContent":["import { RELEASE_ACTION_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_releases',\n info: {\n singularName: 'release',\n pluralName: 'releases',\n displayName: 'Release',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n required: true,\n },\n releasedAt: {\n type: 'datetime',\n },\n scheduledAt: {\n type: 'datetime',\n },\n timezone: {\n type: 'string',\n },\n status: {\n type: 'enumeration',\n enum: ['ready', 'blocked', 'failed', 'done', 'empty'],\n required: true,\n },\n actions: {\n type: 'relation',\n relation: 'oneToMany',\n target: RELEASE_ACTION_MODEL_UID,\n mappedBy: 'release',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","name","type","required","releasedAt","scheduledAt","timezone","status","enum","actions","relation","target","RELEASE_ACTION_MODEL_UID","mappedBy"],"mappings":";;;;AAEA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../../../server/src/content-types/release/schema.ts"],"sourcesContent":["import { RELEASE_ACTION_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_releases',\n info: {\n singularName: 'release',\n pluralName: 'releases',\n displayName: 'Release',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n required: true,\n },\n releasedAt: {\n type: 'datetime',\n },\n scheduledAt: {\n type: 'datetime',\n },\n timezone: {\n type: 'string',\n },\n status: {\n type: 'enumeration',\n enum: ['ready', 'blocked', 'failed', 'done', 'empty'],\n required: true,\n },\n actions: {\n type: 'relation',\n relation: 'oneToMany',\n target: RELEASE_ACTION_MODEL_UID,\n mappedBy: 'release',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","name","type","required","releasedAt","scheduledAt","timezone","status","enum","actions","relation","target","RELEASE_ACTION_MODEL_UID","mappedBy"],"mappings":";;;;AAEA,aAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU;AACZ,SAAA;QACAC,UAAAA,EAAY;YACVF,IAAAA,EAAM;AACR,SAAA;QACAG,WAAAA,EAAa;YACXH,IAAAA,EAAM;AACR,SAAA;QACAI,QAAAA,EAAU;YACRJ,IAAAA,EAAM;AACR,SAAA;QACAK,MAAAA,EAAQ;YACNL,IAAAA,EAAM,aAAA;YACNM,IAAAA,EAAM;AAAC,gBAAA,OAAA;AAAS,gBAAA,SAAA;AAAW,gBAAA,QAAA;AAAU,gBAAA,MAAA;AAAQ,gBAAA;AAAQ,aAAA;YACrDL,QAAAA,EAAU;AACZ,SAAA;QACAM,OAAAA,EAAS;YACPP,IAAAA,EAAM,UAAA;YACNQ,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQC,kCAAAA;YACRC,QAAAA,EAAU;AACZ;AACF;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","sources":["../../../../server/src/content-types/release/schema.ts"],"sourcesContent":["import { RELEASE_ACTION_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_releases',\n info: {\n singularName: 'release',\n pluralName: 'releases',\n displayName: 'Release',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n required: true,\n },\n releasedAt: {\n type: 'datetime',\n },\n scheduledAt: {\n type: 'datetime',\n },\n timezone: {\n type: 'string',\n },\n status: {\n type: 'enumeration',\n enum: ['ready', 'blocked', 'failed', 'done', 'empty'],\n required: true,\n },\n actions: {\n type: 'relation',\n relation: 'oneToMany',\n target: RELEASE_ACTION_MODEL_UID,\n mappedBy: 'release',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","name","type","required","releasedAt","scheduledAt","timezone","status","enum","actions","relation","target","RELEASE_ACTION_MODEL_UID","mappedBy"],"mappings":";;AAEA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"schema.mjs","sources":["../../../../server/src/content-types/release/schema.ts"],"sourcesContent":["import { RELEASE_ACTION_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_releases',\n info: {\n singularName: 'release',\n pluralName: 'releases',\n displayName: 'Release',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n required: true,\n },\n releasedAt: {\n type: 'datetime',\n },\n scheduledAt: {\n type: 'datetime',\n },\n timezone: {\n type: 'string',\n },\n status: {\n type: 'enumeration',\n enum: ['ready', 'blocked', 'failed', 'done', 'empty'],\n required: true,\n },\n actions: {\n type: 'relation',\n relation: 'oneToMany',\n target: RELEASE_ACTION_MODEL_UID,\n mappedBy: 'release',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","name","type","required","releasedAt","scheduledAt","timezone","status","enum","actions","relation","target","RELEASE_ACTION_MODEL_UID","mappedBy"],"mappings":";;AAEA,aAAe;IACbA,cAAAA,EAAgB,iBAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,SAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJC,IAAAA,EAAM,QAAA;YACNC,QAAAA,EAAU;AACZ,SAAA;QACAC,UAAAA,EAAY;YACVF,IAAAA,EAAM;AACR,SAAA;QACAG,WAAAA,EAAa;YACXH,IAAAA,EAAM;AACR,SAAA;QACAI,QAAAA,EAAU;YACRJ,IAAAA,EAAM;AACR,SAAA;QACAK,MAAAA,EAAQ;YACNL,IAAAA,EAAM,aAAA;YACNM,IAAAA,EAAM;AAAC,gBAAA,OAAA;AAAS,gBAAA,SAAA;AAAW,gBAAA,QAAA;AAAU,gBAAA,MAAA;AAAQ,gBAAA;AAAQ,aAAA;YACrDL,QAAAA,EAAU;AACZ,SAAA;QACAM,OAAAA,EAAS;YACPP,IAAAA,EAAM,UAAA;YACNQ,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQC,wBAAAA;YACRC,QAAAA,EAAU;AACZ;AACF;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../server/src/content-types/release-action/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const releaseAction = {\n schema,\n};\n"],"names":["releaseAction","schema"],"mappings":";;;;MAEaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/content-types/release-action/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const releaseAction = {\n schema,\n};\n"],"names":["releaseAction","schema"],"mappings":";;;;MAEaA,aAAAA,GAAgB;AAC3BC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../server/src/content-types/release-action/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const releaseAction = {\n schema,\n};\n"],"names":["releaseAction","schema"],"mappings":";;MAEaA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../server/src/content-types/release-action/index.ts"],"sourcesContent":["import schema from './schema';\n\nexport const releaseAction = {\n schema,\n};\n"],"names":["releaseAction","schema"],"mappings":";;MAEaA,aAAAA,GAAgB;AAC3BC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sources":["../../../../server/src/content-types/release-action/schema.ts"],"sourcesContent":["import { RELEASE_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_release_actions',\n info: {\n singularName: 'release-action',\n pluralName: 'release-actions',\n displayName: 'Release Action',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n type: {\n type: 'enumeration',\n enum: ['publish', 'unpublish'],\n required: true,\n },\n contentType: {\n type: 'string',\n required: true,\n },\n entryDocumentId: {\n type: 'string',\n },\n locale: {\n type: 'string',\n },\n release: {\n type: 'relation',\n relation: 'manyToOne',\n target: RELEASE_MODEL_UID,\n inversedBy: 'actions',\n },\n isEntryValid: {\n type: 'boolean',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","type","enum","required","contentType","entryDocumentId","locale","release","relation","target","RELEASE_MODEL_UID","inversedBy","isEntryValid"],"mappings":";;;;AAEA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../../../server/src/content-types/release-action/schema.ts"],"sourcesContent":["import { RELEASE_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_release_actions',\n info: {\n singularName: 'release-action',\n pluralName: 'release-actions',\n displayName: 'Release Action',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n type: {\n type: 'enumeration',\n enum: ['publish', 'unpublish'],\n required: true,\n },\n contentType: {\n type: 'string',\n required: true,\n },\n entryDocumentId: {\n type: 'string',\n },\n locale: {\n type: 'string',\n },\n release: {\n type: 'relation',\n relation: 'manyToOne',\n target: RELEASE_MODEL_UID,\n inversedBy: 'actions',\n },\n isEntryValid: {\n type: 'boolean',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","type","enum","required","contentType","entryDocumentId","locale","release","relation","target","RELEASE_MODEL_UID","inversedBy","isEntryValid"],"mappings":";;;;AAEA,aAAe;IACbA,cAAAA,EAAgB,wBAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,gBAAA;QACdC,UAAAA,EAAY,iBAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJA,IAAAA,EAAM,aAAA;YACNC,IAAAA,EAAM;AAAC,gBAAA,SAAA;AAAW,gBAAA;AAAY,aAAA;YAC9BC,QAAAA,EAAU;AACZ,SAAA;QACAC,WAAAA,EAAa;YACXH,IAAAA,EAAM,QAAA;YACNE,QAAAA,EAAU;AACZ,SAAA;QACAE,eAAAA,EAAiB;YACfJ,IAAAA,EAAM;AACR,SAAA;QACAK,MAAAA,EAAQ;YACNL,IAAAA,EAAM;AACR,SAAA;QACAM,OAAAA,EAAS;YACPN,IAAAA,EAAM,UAAA;YACNO,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQC,2BAAAA;YACRC,UAAAA,EAAY;AACd,SAAA;QACAC,YAAAA,EAAc;YACZX,IAAAA,EAAM;AACR;AACF;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","sources":["../../../../server/src/content-types/release-action/schema.ts"],"sourcesContent":["import { RELEASE_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_release_actions',\n info: {\n singularName: 'release-action',\n pluralName: 'release-actions',\n displayName: 'Release Action',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n type: {\n type: 'enumeration',\n enum: ['publish', 'unpublish'],\n required: true,\n },\n contentType: {\n type: 'string',\n required: true,\n },\n entryDocumentId: {\n type: 'string',\n },\n locale: {\n type: 'string',\n },\n release: {\n type: 'relation',\n relation: 'manyToOne',\n target: RELEASE_MODEL_UID,\n inversedBy: 'actions',\n },\n isEntryValid: {\n type: 'boolean',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","type","enum","required","contentType","entryDocumentId","locale","release","relation","target","RELEASE_MODEL_UID","inversedBy","isEntryValid"],"mappings":";;AAEA,aAAe;IACbA,
|
|
1
|
+
{"version":3,"file":"schema.mjs","sources":["../../../../server/src/content-types/release-action/schema.ts"],"sourcesContent":["import { RELEASE_MODEL_UID } from '../../constants';\n\nexport default {\n collectionName: 'strapi_release_actions',\n info: {\n singularName: 'release-action',\n pluralName: 'release-actions',\n displayName: 'Release Action',\n },\n options: {\n draftAndPublish: false,\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n type: {\n type: 'enumeration',\n enum: ['publish', 'unpublish'],\n required: true,\n },\n contentType: {\n type: 'string',\n required: true,\n },\n entryDocumentId: {\n type: 'string',\n },\n locale: {\n type: 'string',\n },\n release: {\n type: 'relation',\n relation: 'manyToOne',\n target: RELEASE_MODEL_UID,\n inversedBy: 'actions',\n },\n isEntryValid: {\n type: 'boolean',\n },\n },\n};\n"],"names":["collectionName","info","singularName","pluralName","displayName","options","draftAndPublish","pluginOptions","visible","attributes","type","enum","required","contentType","entryDocumentId","locale","release","relation","target","RELEASE_MODEL_UID","inversedBy","isEntryValid"],"mappings":";;AAEA,aAAe;IACbA,cAAAA,EAAgB,wBAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,gBAAA;QACdC,UAAAA,EAAY,iBAAA;QACZC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJA,IAAAA,EAAM,aAAA;YACNC,IAAAA,EAAM;AAAC,gBAAA,SAAA;AAAW,gBAAA;AAAY,aAAA;YAC9BC,QAAAA,EAAU;AACZ,SAAA;QACAC,WAAAA,EAAa;YACXH,IAAAA,EAAM,QAAA;YACNE,QAAAA,EAAU;AACZ,SAAA;QACAE,eAAAA,EAAiB;YACfJ,IAAAA,EAAM;AACR,SAAA;QACAK,MAAAA,EAAQ;YACNL,IAAAA,EAAM;AACR,SAAA;QACAM,OAAAA,EAAS;YACPN,IAAAA,EAAM,UAAA;YACNO,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQC,iBAAAA;YACRC,UAAAA,EAAY;AACd,SAAA;QACAC,YAAAA,EAAc;YACZX,IAAAA,EAAM;AACR;AACF;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.js","sources":["../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetUpcomingReleases } from '../../../shared/contracts/homepage';\n\nconst homepageController = () => {\n const homepageService = strapi.plugin('content-releases').service('homepage');\n\n return {\n async getUpcomingReleases(): Promise<GetUpcomingReleases.Response> {\n return { data: await homepageService.getUpcomingReleases() };\n },\n } satisfies Core.Controller;\n};\n\nexport default homepageController;\n"],"names":["homepageController","homepageService","strapi","plugin","service","getUpcomingReleases","data"],"mappings":";;AAGA,MAAMA,
|
|
1
|
+
{"version":3,"file":"homepage.js","sources":["../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetUpcomingReleases } from '../../../shared/contracts/homepage';\n\nconst homepageController = () => {\n const homepageService = strapi.plugin('content-releases').service('homepage');\n\n return {\n async getUpcomingReleases(): Promise<GetUpcomingReleases.Response> {\n return { data: await homepageService.getUpcomingReleases() };\n },\n } satisfies Core.Controller;\n};\n\nexport default homepageController;\n"],"names":["homepageController","homepageService","strapi","plugin","service","getUpcomingReleases","data"],"mappings":";;AAGA,MAAMA,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,kBAAkBC,MAAAA,CAAOC,MAAM,CAAC,kBAAA,CAAA,CAAoBC,OAAO,CAAC,UAAA,CAAA;IAElE,OAAO;QACL,MAAMC,mBAAAA,CAAAA,GAAAA;YACJ,OAAO;gBAAEC,IAAAA,EAAM,MAAML,gBAAgBI,mBAAmB;AAAG,aAAA;AAC7D,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.mjs","sources":["../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetUpcomingReleases } from '../../../shared/contracts/homepage';\n\nconst homepageController = () => {\n const homepageService = strapi.plugin('content-releases').service('homepage');\n\n return {\n async getUpcomingReleases(): Promise<GetUpcomingReleases.Response> {\n return { data: await homepageService.getUpcomingReleases() };\n },\n } satisfies Core.Controller;\n};\n\nexport default homepageController;\n"],"names":["homepageController","homepageService","strapi","plugin","service","getUpcomingReleases","data"],"mappings":"AAGA,MAAMA,
|
|
1
|
+
{"version":3,"file":"homepage.mjs","sources":["../../../server/src/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetUpcomingReleases } from '../../../shared/contracts/homepage';\n\nconst homepageController = () => {\n const homepageService = strapi.plugin('content-releases').service('homepage');\n\n return {\n async getUpcomingReleases(): Promise<GetUpcomingReleases.Response> {\n return { data: await homepageService.getUpcomingReleases() };\n },\n } satisfies Core.Controller;\n};\n\nexport default homepageController;\n"],"names":["homepageController","homepageService","strapi","plugin","service","getUpcomingReleases","data"],"mappings":"AAGA,MAAMA,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,kBAAkBC,MAAAA,CAAOC,MAAM,CAAC,kBAAA,CAAA,CAAoBC,OAAO,CAAC,UAAA,CAAA;IAElE,OAAO;QACL,MAAMC,mBAAAA,CAAAA,GAAAA;YACJ,OAAO;gBAAEC,IAAAA,EAAM,MAAML,gBAAgBI,mBAAmB;AAAG,aAAA;AAC7D,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const controllers = {\n homepage,\n release,\n 'release-action': releaseAction,\n settings,\n};\n"],"names":["controllers","homepage","release","releaseAction","settings"],"mappings":";;;;;;;MAKaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const controllers = {\n homepage,\n release,\n 'release-action': releaseAction,\n settings,\n};\n"],"names":["controllers","homepage","release","releaseAction","settings"],"mappings":";;;;;;;MAKaA,WAAAA,GAAc;AACzBC,IAAAA,QAAAA;AACAC,IAAAA,OAAAA;IACA,gBAAA,EAAkBC,aAAAA;AAClBC,IAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const controllers = {\n homepage,\n release,\n 'release-action': releaseAction,\n settings,\n};\n"],"names":["controllers","homepage","release","releaseAction","settings"],"mappings":";;;;;MAKaA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import homepage from './homepage';\nimport release from './release';\nimport releaseAction from './release-action';\nimport settings from './settings';\n\nexport const controllers = {\n homepage,\n release,\n 'release-action': releaseAction,\n settings,\n};\n"],"names":["controllers","homepage","release","releaseAction","settings"],"mappings":";;;;;MAKaA,WAAAA,GAAc;AACzBC,cAAAA,kBAAAA;AACAC,aAAAA,iBAAAA;IACA,gBAAA,EAAkBC,uBAAAA;AAClBC,cAAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-action.js","sources":["../../../server/src/controllers/release-action.ts"],"sourcesContent":["import type Koa from 'koa';\n\nimport { async } from '@strapi/utils';\nimport {\n validateReleaseAction,\n validateReleaseActionUpdateSchema,\n validateFindManyActionsParams,\n} from './validation/release-action';\nimport type {\n CreateReleaseAction,\n CreateManyReleaseActions,\n GetReleaseActions,\n UpdateReleaseAction,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\nimport { getService } from '../utils';\nimport { RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { AlreadyOnReleaseError } from '../services/validation';\n\nconst releaseActionController = {\n async create(ctx: Koa.Context) {\n const releaseId: CreateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionArgs = ctx.request.body as CreateReleaseAction.Request['body'];\n\n await validateReleaseAction(releaseActionArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseAction = await releaseActionService.create(releaseId, releaseActionArgs);\n\n ctx.created({\n data: releaseAction,\n });\n },\n\n async createMany(ctx: Koa.Context) {\n const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];\n\n await Promise.all(\n releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))\n );\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseService = getService('release', { strapi });\n\n const releaseActions = await strapi.db.transaction(async () => {\n const releaseActions = await Promise.all(\n releaseActionsArgs.map(async (releaseActionArgs) => {\n try {\n const action = await releaseActionService.create(releaseId, releaseActionArgs, {\n disableUpdateReleaseStatus: true,\n });\n return action;\n } catch (error) {\n // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it\n if (error instanceof AlreadyOnReleaseError) {\n return null;\n }\n throw error;\n }\n })\n );\n return releaseActions;\n });\n\n const newReleaseActions = releaseActions.filter((action) => action !== null);\n\n if (newReleaseActions.length > 0) {\n releaseService.updateReleaseStatus(releaseId);\n }\n\n ctx.created({\n data: newReleaseActions,\n meta: {\n entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,\n totalEntries: releaseActions.length,\n },\n });\n },\n\n async findMany(ctx: Koa.Context) {\n const releaseId: GetReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_ACTION_MODEL_UID,\n });\n\n await validateFindManyActionsParams(ctx.query);\n\n if (ctx.query.groupBy) {\n if (!['action', 'contentType', 'locale'].includes(ctx.query.groupBy as string)) {\n ctx.badRequest('Invalid groupBy parameter');\n }\n }\n\n ctx.query.sort = ctx.query.groupBy === 'action' ? 'type' : ctx.query.groupBy;\n delete ctx.query.groupBy;\n\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const releaseActionService = getService('release-action', { strapi });\n const { results, pagination } = await releaseActionService.findPage(releaseId, {\n ...query,\n });\n\n /**\n * Release actions can be related to entries of different content types.\n * We need to sanitize the entry output according to that content type.\n * So, we group the sanitized output function by content type.\n */\n const contentTypeOutputSanitizers = results.reduce((acc: Record<string, any>, action: any) => {\n if (acc[action.contentType]) {\n return acc;\n }\n\n const contentTypePermissionsManager = strapi\n .service('admin::permission')\n .createPermissionsManager({\n ability: ctx.state.userAbility,\n model: action.contentType,\n });\n\n acc[action.contentType] = contentTypePermissionsManager.sanitizeOutput;\n\n return acc;\n }, {});\n\n /**\n * sanitizeOutput doesn't work if you use it directly on the Release Action model, it doesn't sanitize the entries\n * So, we need to sanitize manually each entry inside a Release Action\n */\n const sanitizedResults = await async.map(results, async (action: any) => ({\n ...action,\n entry: action.entry\n ? await contentTypeOutputSanitizers[action.contentType](action.entry)\n : {},\n }));\n\n const groupedData = await releaseActionService.groupActions(sanitizedResults, query.sort);\n\n const contentTypes = await releaseActionService.getContentTypeModelsFromActions(results);\n\n const releaseService = getService('release', { strapi });\n const components = await releaseService.getAllComponents();\n\n ctx.body = {\n data: groupedData,\n meta: {\n pagination,\n contentTypes,\n components,\n },\n };\n },\n\n async update(ctx: Koa.Context) {\n const actionId: UpdateReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: UpdateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionUpdateArgs = ctx.request.body as UpdateReleaseAction.Request['body'];\n\n await validateReleaseActionUpdateSchema(releaseActionUpdateArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n\n const updatedAction = await releaseActionService.update(\n actionId,\n releaseId,\n releaseActionUpdateArgs\n );\n\n ctx.body = {\n data: updatedAction,\n };\n },\n\n async delete(ctx: Koa.Context) {\n const actionId: DeleteReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: DeleteReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n\n const releaseActionService = getService('release-action', { strapi });\n\n const deletedReleaseAction = await releaseActionService.delete(actionId, releaseId);\n\n ctx.body = {\n data: deletedReleaseAction,\n };\n },\n};\n\nexport default releaseActionController;\n"],"names":["releaseActionController","create","ctx","releaseId","params","releaseActionArgs","request","body","validateReleaseAction","releaseActionService","getService","strapi","releaseAction","created","data","createMany","releaseActionsArgs","Promise","all","map","releaseService","releaseActions","db","transaction","action","disableUpdateReleaseStatus","error","AlreadyOnReleaseError","newReleaseActions","filter","length","updateReleaseStatus","meta","entriesAlreadyInRelease","totalEntries","findMany","permissionsManager","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_ACTION_MODEL_UID","validateFindManyActionsParams","query","groupBy","includes","badRequest","sort","sanitizeQuery","results","pagination","findPage","contentTypeOutputSanitizers","reduce","acc","contentType","contentTypePermissionsManager","sanitizeOutput","sanitizedResults","async","entry","groupedData","groupActions","contentTypes","getContentTypeModelsFromActions","components","getAllComponents","update","actionId","releaseActionUpdateArgs","validateReleaseActionUpdateSchema","updatedAction","delete","deletedReleaseAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-action.js","sources":["../../../server/src/controllers/release-action.ts"],"sourcesContent":["import type Koa from 'koa';\n\nimport { async } from '@strapi/utils';\nimport {\n validateReleaseAction,\n validateReleaseActionUpdateSchema,\n validateFindManyActionsParams,\n} from './validation/release-action';\nimport type {\n CreateReleaseAction,\n CreateManyReleaseActions,\n GetReleaseActions,\n UpdateReleaseAction,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\nimport { getService } from '../utils';\nimport { RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { AlreadyOnReleaseError } from '../services/validation';\n\nconst releaseActionController = {\n async create(ctx: Koa.Context) {\n const releaseId: CreateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionArgs = ctx.request.body as CreateReleaseAction.Request['body'];\n\n await validateReleaseAction(releaseActionArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseAction = await releaseActionService.create(releaseId, releaseActionArgs);\n\n ctx.created({\n data: releaseAction,\n });\n },\n\n async createMany(ctx: Koa.Context) {\n const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];\n\n await Promise.all(\n releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))\n );\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseService = getService('release', { strapi });\n\n const releaseActions = await strapi.db.transaction(async () => {\n const releaseActions = await Promise.all(\n releaseActionsArgs.map(async (releaseActionArgs) => {\n try {\n const action = await releaseActionService.create(releaseId, releaseActionArgs, {\n disableUpdateReleaseStatus: true,\n });\n return action;\n } catch (error) {\n // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it\n if (error instanceof AlreadyOnReleaseError) {\n return null;\n }\n throw error;\n }\n })\n );\n return releaseActions;\n });\n\n const newReleaseActions = releaseActions.filter((action) => action !== null);\n\n if (newReleaseActions.length > 0) {\n releaseService.updateReleaseStatus(releaseId);\n }\n\n ctx.created({\n data: newReleaseActions,\n meta: {\n entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,\n totalEntries: releaseActions.length,\n },\n });\n },\n\n async findMany(ctx: Koa.Context) {\n const releaseId: GetReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_ACTION_MODEL_UID,\n });\n\n await validateFindManyActionsParams(ctx.query);\n\n if (ctx.query.groupBy) {\n if (!['action', 'contentType', 'locale'].includes(ctx.query.groupBy as string)) {\n ctx.badRequest('Invalid groupBy parameter');\n }\n }\n\n ctx.query.sort = ctx.query.groupBy === 'action' ? 'type' : ctx.query.groupBy;\n delete ctx.query.groupBy;\n\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const releaseActionService = getService('release-action', { strapi });\n const { results, pagination } = await releaseActionService.findPage(releaseId, {\n ...query,\n });\n\n /**\n * Release actions can be related to entries of different content types.\n * We need to sanitize the entry output according to that content type.\n * So, we group the sanitized output function by content type.\n */\n const contentTypeOutputSanitizers = results.reduce((acc: Record<string, any>, action: any) => {\n if (acc[action.contentType]) {\n return acc;\n }\n\n const contentTypePermissionsManager = strapi\n .service('admin::permission')\n .createPermissionsManager({\n ability: ctx.state.userAbility,\n model: action.contentType,\n });\n\n acc[action.contentType] = contentTypePermissionsManager.sanitizeOutput;\n\n return acc;\n }, {});\n\n /**\n * sanitizeOutput doesn't work if you use it directly on the Release Action model, it doesn't sanitize the entries\n * So, we need to sanitize manually each entry inside a Release Action\n */\n const sanitizedResults = await async.map(results, async (action: any) => ({\n ...action,\n entry: action.entry\n ? await contentTypeOutputSanitizers[action.contentType](action.entry)\n : {},\n }));\n\n const groupedData = await releaseActionService.groupActions(sanitizedResults, query.sort);\n\n const contentTypes = await releaseActionService.getContentTypeModelsFromActions(results);\n\n const releaseService = getService('release', { strapi });\n const components = await releaseService.getAllComponents();\n\n ctx.body = {\n data: groupedData,\n meta: {\n pagination,\n contentTypes,\n components,\n },\n };\n },\n\n async update(ctx: Koa.Context) {\n const actionId: UpdateReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: UpdateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionUpdateArgs = ctx.request.body as UpdateReleaseAction.Request['body'];\n\n await validateReleaseActionUpdateSchema(releaseActionUpdateArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n\n const updatedAction = await releaseActionService.update(\n actionId,\n releaseId,\n releaseActionUpdateArgs\n );\n\n ctx.body = {\n data: updatedAction,\n };\n },\n\n async delete(ctx: Koa.Context) {\n const actionId: DeleteReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: DeleteReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n\n const releaseActionService = getService('release-action', { strapi });\n\n const deletedReleaseAction = await releaseActionService.delete(actionId, releaseId);\n\n ctx.body = {\n data: deletedReleaseAction,\n };\n },\n};\n\nexport default releaseActionController;\n"],"names":["releaseActionController","create","ctx","releaseId","params","releaseActionArgs","request","body","validateReleaseAction","releaseActionService","getService","strapi","releaseAction","created","data","createMany","releaseActionsArgs","Promise","all","map","releaseService","releaseActions","db","transaction","action","disableUpdateReleaseStatus","error","AlreadyOnReleaseError","newReleaseActions","filter","length","updateReleaseStatus","meta","entriesAlreadyInRelease","totalEntries","findMany","permissionsManager","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_ACTION_MODEL_UID","validateFindManyActionsParams","query","groupBy","includes","badRequest","sort","sanitizeQuery","results","pagination","findPage","contentTypeOutputSanitizers","reduce","acc","contentType","contentTypePermissionsManager","sanitizeOutput","sanitizedResults","async","entry","groupedData","groupActions","contentTypes","getContentTypeModelsFromActions","components","getAllComponents","update","actionId","releaseActionUpdateArgs","validateReleaseActionUpdateSchema","updatedAction","delete","deletedReleaseAction"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { async } from '@strapi/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { validateReleaseActionUpdateSchema, validateFindManyActionsParams, validateReleaseAction } from './validation/release-action.mjs';
|
|
3
3
|
import { getService } from '../utils/index.mjs';
|
|
4
4
|
import { RELEASE_ACTION_MODEL_UID } from '../constants.mjs';
|
|
5
5
|
import { AlreadyOnReleaseError } from '../services/validation.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-action.mjs","sources":["../../../server/src/controllers/release-action.ts"],"sourcesContent":["import type Koa from 'koa';\n\nimport { async } from '@strapi/utils';\nimport {\n validateReleaseAction,\n validateReleaseActionUpdateSchema,\n validateFindManyActionsParams,\n} from './validation/release-action';\nimport type {\n CreateReleaseAction,\n CreateManyReleaseActions,\n GetReleaseActions,\n UpdateReleaseAction,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\nimport { getService } from '../utils';\nimport { RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { AlreadyOnReleaseError } from '../services/validation';\n\nconst releaseActionController = {\n async create(ctx: Koa.Context) {\n const releaseId: CreateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionArgs = ctx.request.body as CreateReleaseAction.Request['body'];\n\n await validateReleaseAction(releaseActionArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseAction = await releaseActionService.create(releaseId, releaseActionArgs);\n\n ctx.created({\n data: releaseAction,\n });\n },\n\n async createMany(ctx: Koa.Context) {\n const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];\n\n await Promise.all(\n releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))\n );\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseService = getService('release', { strapi });\n\n const releaseActions = await strapi.db.transaction(async () => {\n const releaseActions = await Promise.all(\n releaseActionsArgs.map(async (releaseActionArgs) => {\n try {\n const action = await releaseActionService.create(releaseId, releaseActionArgs, {\n disableUpdateReleaseStatus: true,\n });\n return action;\n } catch (error) {\n // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it\n if (error instanceof AlreadyOnReleaseError) {\n return null;\n }\n throw error;\n }\n })\n );\n return releaseActions;\n });\n\n const newReleaseActions = releaseActions.filter((action) => action !== null);\n\n if (newReleaseActions.length > 0) {\n releaseService.updateReleaseStatus(releaseId);\n }\n\n ctx.created({\n data: newReleaseActions,\n meta: {\n entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,\n totalEntries: releaseActions.length,\n },\n });\n },\n\n async findMany(ctx: Koa.Context) {\n const releaseId: GetReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_ACTION_MODEL_UID,\n });\n\n await validateFindManyActionsParams(ctx.query);\n\n if (ctx.query.groupBy) {\n if (!['action', 'contentType', 'locale'].includes(ctx.query.groupBy as string)) {\n ctx.badRequest('Invalid groupBy parameter');\n }\n }\n\n ctx.query.sort = ctx.query.groupBy === 'action' ? 'type' : ctx.query.groupBy;\n delete ctx.query.groupBy;\n\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const releaseActionService = getService('release-action', { strapi });\n const { results, pagination } = await releaseActionService.findPage(releaseId, {\n ...query,\n });\n\n /**\n * Release actions can be related to entries of different content types.\n * We need to sanitize the entry output according to that content type.\n * So, we group the sanitized output function by content type.\n */\n const contentTypeOutputSanitizers = results.reduce((acc: Record<string, any>, action: any) => {\n if (acc[action.contentType]) {\n return acc;\n }\n\n const contentTypePermissionsManager = strapi\n .service('admin::permission')\n .createPermissionsManager({\n ability: ctx.state.userAbility,\n model: action.contentType,\n });\n\n acc[action.contentType] = contentTypePermissionsManager.sanitizeOutput;\n\n return acc;\n }, {});\n\n /**\n * sanitizeOutput doesn't work if you use it directly on the Release Action model, it doesn't sanitize the entries\n * So, we need to sanitize manually each entry inside a Release Action\n */\n const sanitizedResults = await async.map(results, async (action: any) => ({\n ...action,\n entry: action.entry\n ? await contentTypeOutputSanitizers[action.contentType](action.entry)\n : {},\n }));\n\n const groupedData = await releaseActionService.groupActions(sanitizedResults, query.sort);\n\n const contentTypes = await releaseActionService.getContentTypeModelsFromActions(results);\n\n const releaseService = getService('release', { strapi });\n const components = await releaseService.getAllComponents();\n\n ctx.body = {\n data: groupedData,\n meta: {\n pagination,\n contentTypes,\n components,\n },\n };\n },\n\n async update(ctx: Koa.Context) {\n const actionId: UpdateReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: UpdateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionUpdateArgs = ctx.request.body as UpdateReleaseAction.Request['body'];\n\n await validateReleaseActionUpdateSchema(releaseActionUpdateArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n\n const updatedAction = await releaseActionService.update(\n actionId,\n releaseId,\n releaseActionUpdateArgs\n );\n\n ctx.body = {\n data: updatedAction,\n };\n },\n\n async delete(ctx: Koa.Context) {\n const actionId: DeleteReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: DeleteReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n\n const releaseActionService = getService('release-action', { strapi });\n\n const deletedReleaseAction = await releaseActionService.delete(actionId, releaseId);\n\n ctx.body = {\n data: deletedReleaseAction,\n };\n },\n};\n\nexport default releaseActionController;\n"],"names":["releaseActionController","create","ctx","releaseId","params","releaseActionArgs","request","body","validateReleaseAction","releaseActionService","getService","strapi","releaseAction","created","data","createMany","releaseActionsArgs","Promise","all","map","releaseService","releaseActions","db","transaction","action","disableUpdateReleaseStatus","error","AlreadyOnReleaseError","newReleaseActions","filter","length","updateReleaseStatus","meta","entriesAlreadyInRelease","totalEntries","findMany","permissionsManager","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_ACTION_MODEL_UID","validateFindManyActionsParams","query","groupBy","includes","badRequest","sort","sanitizeQuery","results","pagination","findPage","contentTypeOutputSanitizers","reduce","acc","contentType","contentTypePermissionsManager","sanitizeOutput","sanitizedResults","async","entry","groupedData","groupActions","contentTypes","getContentTypeModelsFromActions","components","getAllComponents","update","actionId","releaseActionUpdateArgs","validateReleaseActionUpdateSchema","updatedAction","delete","deletedReleaseAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-action.mjs","sources":["../../../server/src/controllers/release-action.ts"],"sourcesContent":["import type Koa from 'koa';\n\nimport { async } from '@strapi/utils';\nimport {\n validateReleaseAction,\n validateReleaseActionUpdateSchema,\n validateFindManyActionsParams,\n} from './validation/release-action';\nimport type {\n CreateReleaseAction,\n CreateManyReleaseActions,\n GetReleaseActions,\n UpdateReleaseAction,\n DeleteReleaseAction,\n} from '../../../shared/contracts/release-actions';\nimport { getService } from '../utils';\nimport { RELEASE_ACTION_MODEL_UID } from '../constants';\nimport { AlreadyOnReleaseError } from '../services/validation';\n\nconst releaseActionController = {\n async create(ctx: Koa.Context) {\n const releaseId: CreateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionArgs = ctx.request.body as CreateReleaseAction.Request['body'];\n\n await validateReleaseAction(releaseActionArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseAction = await releaseActionService.create(releaseId, releaseActionArgs);\n\n ctx.created({\n data: releaseAction,\n });\n },\n\n async createMany(ctx: Koa.Context) {\n const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];\n\n await Promise.all(\n releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))\n );\n\n const releaseActionService = getService('release-action', { strapi });\n const releaseService = getService('release', { strapi });\n\n const releaseActions = await strapi.db.transaction(async () => {\n const releaseActions = await Promise.all(\n releaseActionsArgs.map(async (releaseActionArgs) => {\n try {\n const action = await releaseActionService.create(releaseId, releaseActionArgs, {\n disableUpdateReleaseStatus: true,\n });\n return action;\n } catch (error) {\n // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it\n if (error instanceof AlreadyOnReleaseError) {\n return null;\n }\n throw error;\n }\n })\n );\n return releaseActions;\n });\n\n const newReleaseActions = releaseActions.filter((action) => action !== null);\n\n if (newReleaseActions.length > 0) {\n releaseService.updateReleaseStatus(releaseId);\n }\n\n ctx.created({\n data: newReleaseActions,\n meta: {\n entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,\n totalEntries: releaseActions.length,\n },\n });\n },\n\n async findMany(ctx: Koa.Context) {\n const releaseId: GetReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;\n const permissionsManager = strapi.service('admin::permission').createPermissionsManager({\n ability: ctx.state.userAbility,\n model: RELEASE_ACTION_MODEL_UID,\n });\n\n await validateFindManyActionsParams(ctx.query);\n\n if (ctx.query.groupBy) {\n if (!['action', 'contentType', 'locale'].includes(ctx.query.groupBy as string)) {\n ctx.badRequest('Invalid groupBy parameter');\n }\n }\n\n ctx.query.sort = ctx.query.groupBy === 'action' ? 'type' : ctx.query.groupBy;\n delete ctx.query.groupBy;\n\n const query = await permissionsManager.sanitizeQuery(ctx.query);\n\n const releaseActionService = getService('release-action', { strapi });\n const { results, pagination } = await releaseActionService.findPage(releaseId, {\n ...query,\n });\n\n /**\n * Release actions can be related to entries of different content types.\n * We need to sanitize the entry output according to that content type.\n * So, we group the sanitized output function by content type.\n */\n const contentTypeOutputSanitizers = results.reduce((acc: Record<string, any>, action: any) => {\n if (acc[action.contentType]) {\n return acc;\n }\n\n const contentTypePermissionsManager = strapi\n .service('admin::permission')\n .createPermissionsManager({\n ability: ctx.state.userAbility,\n model: action.contentType,\n });\n\n acc[action.contentType] = contentTypePermissionsManager.sanitizeOutput;\n\n return acc;\n }, {});\n\n /**\n * sanitizeOutput doesn't work if you use it directly on the Release Action model, it doesn't sanitize the entries\n * So, we need to sanitize manually each entry inside a Release Action\n */\n const sanitizedResults = await async.map(results, async (action: any) => ({\n ...action,\n entry: action.entry\n ? await contentTypeOutputSanitizers[action.contentType](action.entry)\n : {},\n }));\n\n const groupedData = await releaseActionService.groupActions(sanitizedResults, query.sort);\n\n const contentTypes = await releaseActionService.getContentTypeModelsFromActions(results);\n\n const releaseService = getService('release', { strapi });\n const components = await releaseService.getAllComponents();\n\n ctx.body = {\n data: groupedData,\n meta: {\n pagination,\n contentTypes,\n components,\n },\n };\n },\n\n async update(ctx: Koa.Context) {\n const actionId: UpdateReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: UpdateReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n const releaseActionUpdateArgs = ctx.request.body as UpdateReleaseAction.Request['body'];\n\n await validateReleaseActionUpdateSchema(releaseActionUpdateArgs);\n\n const releaseActionService = getService('release-action', { strapi });\n\n const updatedAction = await releaseActionService.update(\n actionId,\n releaseId,\n releaseActionUpdateArgs\n );\n\n ctx.body = {\n data: updatedAction,\n };\n },\n\n async delete(ctx: Koa.Context) {\n const actionId: DeleteReleaseAction.Request['params']['actionId'] = ctx.params.actionId;\n const releaseId: DeleteReleaseAction.Request['params']['releaseId'] = ctx.params.releaseId;\n\n const releaseActionService = getService('release-action', { strapi });\n\n const deletedReleaseAction = await releaseActionService.delete(actionId, releaseId);\n\n ctx.body = {\n data: deletedReleaseAction,\n };\n },\n};\n\nexport default releaseActionController;\n"],"names":["releaseActionController","create","ctx","releaseId","params","releaseActionArgs","request","body","validateReleaseAction","releaseActionService","getService","strapi","releaseAction","created","data","createMany","releaseActionsArgs","Promise","all","map","releaseService","releaseActions","db","transaction","action","disableUpdateReleaseStatus","error","AlreadyOnReleaseError","newReleaseActions","filter","length","updateReleaseStatus","meta","entriesAlreadyInRelease","totalEntries","findMany","permissionsManager","service","createPermissionsManager","ability","state","userAbility","model","RELEASE_ACTION_MODEL_UID","validateFindManyActionsParams","query","groupBy","includes","badRequest","sort","sanitizeQuery","results","pagination","findPage","contentTypeOutputSanitizers","reduce","acc","contentType","contentTypePermissionsManager","sanitizeOutput","sanitizedResults","async","entry","groupedData","groupActions","contentTypes","getContentTypeModelsFromActions","components","getAllComponents","update","actionId","releaseActionUpdateArgs","validateReleaseActionUpdateSchema","updatedAction","delete","deletedReleaseAction"],"mappings":"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"}
|