@strapi/content-releases 5.50.1 → 5.51.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.
@@ -17,6 +17,7 @@ function __variableDynamicImportRuntime4__(path) {
17
17
  case './translations/en.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/en.json.js')); });
18
18
  case './translations/es.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/es.json.js')); });
19
19
  case './translations/ja.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ja.json.js')); });
20
+ case './translations/ko.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ko.json.js')); });
20
21
  case './translations/nl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/nl.json.js')); });
21
22
  case './translations/pl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/pl.json.js')); });
22
23
  case './translations/sk.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/sk.json.js')); });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -13,6 +13,7 @@ function __variableDynamicImportRuntime4__(path) {
13
13
  case './translations/en.json': return import('./translations/en.json.mjs');
14
14
  case './translations/es.json': return import('./translations/es.json.mjs');
15
15
  case './translations/ja.json': return import('./translations/ja.json.mjs');
16
+ case './translations/ko.json': return import('./translations/ko.json.mjs');
16
17
  case './translations/nl.json': return import('./translations/nl.json.mjs');
17
18
  case './translations/pl.json': return import('./translations/pl.json.mjs');
18
19
  case './translations/sk.json': return import('./translations/sk.json.mjs');
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { PaperPlane } from '@strapi/icons';\n\nimport { ReleaseAction } from './components/ReleaseAction';\nimport { ReleaseActionModalForm } from './components/ReleaseActionModal';\nimport { addColumnToTableHook } from './components/ReleaseListCell';\nimport { Panel as ReleasesPanel } from './components/ReleasesPanel';\nimport { PERMISSIONS, PLUGIN_ID } from './constants';\nimport { pluginId } from './pluginId';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type {\n DocumentActionComponent,\n BulkActionComponent,\n} from '@strapi/content-manager/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\n// eslint-disable-next-line import/no-default-export\nconst admin: Plugin.Config.AdminInput = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register(app: StrapiApp) {\n /**\n * Hook that adds the locale column in the Release Details table\n * @constant\n * @type {string}\n */\n app.createHook('ContentReleases/pages/ReleaseDetails/add-locale-in-releases');\n\n if (window.strapi.features.isEnabled('cms-content-releases')) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: PaperPlane,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n Component: () => import('./pages/App').then((mod) => ({ default: mod.App })),\n permissions: PERMISSIONS.main,\n position: 2,\n });\n\n // Insert the releases container into the CM's sidebar on the Edit View\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([ReleasesPanel]);\n }\n\n // Insert the \"add to release\" action into the CM's Edit View\n if (\n 'addDocumentAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addDocumentAction === 'function'\n ) {\n contentManagerPluginApis.addDocumentAction((actions: DocumentActionComponent[]) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'unpublish');\n actions.splice(indexOfDeleteAction, 0, ReleaseActionModalForm);\n return actions;\n });\n }\n\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./pages/ReleasesSettingsPage').then((mod) => ({\n default: mod.ProtectedReleasesSettingsPage,\n }));\n },\n });\n\n if (\n 'addBulkAction' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addBulkAction === 'function'\n ) {\n contentManagerPluginApis.addBulkAction((actions: BulkActionComponent[]) => {\n // We want to add this action to just before the delete action all the time\n const deleteActionIndex = actions.findIndex((action) => action.type === 'delete');\n\n actions.splice(deleteActionIndex, 0, ReleaseAction);\n return actions;\n });\n }\n\n // Hook that adds a column into the CM's LV table\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n\n app.widgets.register([\n {\n icon: PaperPlane,\n title: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.title`,\n defaultMessage: 'Upcoming releases',\n },\n component: async () => {\n const { UpcomingReleasesWidget } = await import('./components/Widgets');\n return UpcomingReleasesWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'upcoming-releases',\n link: {\n label: {\n id: `${PLUGIN_ID}.widget.upcoming-releases.link`,\n defaultMessage: 'Open Releases',\n },\n href: '/plugins/content-releases',\n },\n },\n ]);\n } else if (\n !window.strapi.features.isEnabled('cms-content-releases') &&\n window.strapi?.flags?.promoteEE\n ) {\n app.addSettingsLink('global', {\n id: pluginId,\n to: 'purchase-content-releases',\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Releases',\n },\n permissions: [],\n Component() {\n return import('./pages/PurchaseContentReleases').then((mod) => ({\n default: mod.PurchaseContentReleases,\n }));\n },\n licenseOnly: true,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'content-releases'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","createHook","window","strapi","features","isEnabled","addMenuLink","to","pluginId","icon","PaperPlane","intlLabel","id","defaultMessage","Component","then","mod","default","App","permissions","PERMISSIONS","main","position","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","ReleasesPanel","addDocumentAction","actions","indexOfDeleteAction","findIndex","action","type","splice","ReleaseActionModalForm","addSettingsLink","licenseOnly","ProtectedReleasesSettingsPage","addBulkAction","deleteActionIndex","ReleaseAction","registerHook","addColumnToTableHook","widgets","title","PLUGIN_ID","component","UpcomingReleasesWidget","link","label","href","flags","promoteEE","PurchaseContentReleases","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ 'use strict';
2
+
3
+ var ko = {
4
+ "content-manager-edit-view.add-to-release.select-label": "릴리스 선택",
5
+ "content-manager-edit-view.add-to-release.select-placeholder": "선택",
6
+ "content-manager-edit-view.add-to-release.action-type-label": "이 항목으로 무엇을 하시겠습니까?",
7
+ "content-manager-edit-view.add-to-release.cancel-button": "취소",
8
+ "content-manager-edit-view.add-to-release.continue-button": "계속",
9
+ "content-manager-edit-view.add-to-release": "릴리스에 추가",
10
+ "content-manager-edit-view.add-to-release.notification.success": "항목이 릴리스에 추가되었습니다",
11
+ "content-manager-edit-view.add-to-release.no-releases-message": "사용 가능한 릴리스가 없습니다. 릴리스 목록을 열어 새 릴리스를 생성하세요.",
12
+ "content-manager-edit-view.add-to-release.redirect-button": "릴리스 목록 열기",
13
+ "content-manager-edit-view.list-releases.title": "{isPublish, select, true {배포 예정} other {배포 취소 예정}}",
14
+ "content-manager-edit-view.remove-from-release": "릴리스에서 제거",
15
+ "content-manager-edit-view.scheduled.date": "{date} {time} ({offset})",
16
+ "content-manager-edit-view.edit-release": "릴리스 수정",
17
+ "content-releases.content-manager-edit-view.edit-entry": "항목 수정",
18
+ "content-manager-edit-view.remove-from-release.notification.success": "항목이 릴리스에서 제거되었습니다",
19
+ "content-manager-edit-view.release-action-menu": "릴리스 작업 옵션",
20
+ "content-manager.list-view.releases.header": "릴리스 예정",
21
+ "content-manager-list-view.add-to-release": "릴리스에 추가",
22
+ "content-manager-list-view.add-to-release.cancel-button": "취소",
23
+ "content-manager-list-view.add-to-release.continue-button": "계속",
24
+ "content-manager-list-view.add-to-release.select-label": "릴리스 선택",
25
+ "content-manager-list-view.add-to-release.select-placeholder": "선택",
26
+ "content-manager-list-view.add-to-release.action-type-label": "이 항목들로 무엇을 하시겠습니까?",
27
+ "content-manager-list-view.add-to-release.notification.success.title": "릴리스에 추가되었습니다.",
28
+ "content-manager-list-view.add-to-release.notification.success.message": "{totalEntries}개 항목 중 {entriesAlreadyInRelease}개는 이미 릴리스에 포함되어 있었습니다.",
29
+ "content-manager.notification.entry-error": "항목 데이터를 가져오지 못했습니다",
30
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {릴리스} other {릴리스}}",
31
+ "plugin.name": "릴리스",
32
+ "pages.Releases.title": "릴리스",
33
+ "pages.Releases.header-subtitle": "콘텐츠 업데이트를 생성하고 관리하세요",
34
+ "pages.Releases.max-limit-reached.title": "대기 중인 {number} {number, plural, one {릴리스} other {릴리스}} 한도에 도달했습니다.",
35
+ "pages.Releases.max-limit-reached.message": "업그레이드하여 무제한으로 릴리스를 관리하세요.",
36
+ "pages.Releases.max-limit-reached.action": "요금제 보기",
37
+ "pages.PurchaseRelease.subTitle": "콘텐츠 업데이트와 릴리스를 관리하세요.",
38
+ "pages.PurchaseRelease.not-available": "릴리스는 유료 요금제에서만 사용할 수 있습니다. 업그레이드하여 릴리스를 생성하고 관리하세요.",
39
+ "pages.PurchaseRelease.description": "콘텐츠를 그룹화하여 업데이트를 한 번에 배포하세요",
40
+ "pages.PurchaseRelease.perks1": "여러 항목을 릴리스에 추가",
41
+ "pages.PurchaseRelease.perks2": "오류가 있는 항목을 빠르게 확인",
42
+ "pages.PurchaseRelease.perks3": "배포 일정을 예약하거나 직접 배포",
43
+ "header.actions.add-release": "새 릴리스",
44
+ "header.actions.refresh": "새로고침",
45
+ "header.actions.publish": "배포",
46
+ "header.actions.open-release-actions": "릴리스 수정 및 삭제 메뉴",
47
+ "header.actions.edit": "수정",
48
+ "header.actions.delete": "삭제",
49
+ "header.actions.created": "생성됨",
50
+ "header.actions.created.description": "{hasCreatedByUser, select, true { (작성자: {createdBy})} other { (작성자: 삭제된 사용자)}}",
51
+ "modal.release-created-notification-success": "릴리스가 생성되었습니다",
52
+ "modal.release-updated-notification-success": "릴리스가 수정되었습니다",
53
+ "modal.title": "{isCreatingRelease, select, true {새 릴리스} other {릴리스 수정}}",
54
+ "modal.form.input.label.release-name": "이름",
55
+ "modal.form.input.label.schedule-release": "릴리스 예약",
56
+ "modal.form.input.label.date": "날짜",
57
+ "modal.form.input.label.time": "시간",
58
+ "modal.form.input.label.timezone": "시간대",
59
+ "modal.form.input.clearLabel": "지우기",
60
+ "modal.form.button.submit": "{isCreatingRelease, select, true {계속} other {저장}}",
61
+ "modal.form.time.has-passed": "선택한 시간이 이미 지났습니다.",
62
+ "pages.Details.header-subtitle": "{number, plural, =0 {항목 없음} one {항목 #개} other {항목 #개}}",
63
+ "pages.Releases.tab-group.label": "릴리스 목록",
64
+ "pages.Releases.tab.pending": "대기 중 ({count})",
65
+ "pages.Releases.tab.done": "완료",
66
+ "page.Releases.tab.emptyEntries": "릴리스 없음",
67
+ "pages.Details.tab.emptyEntries": "이 릴리스는 비어 있습니다. 콘텐츠 관리자를 열어 항목을 선택한 다음 릴리스에 추가하세요.",
68
+ "page.ReleaseDetails.table.header.label.name": "이름",
69
+ "page.ReleaseDetails.table.header.label.locale": "로케일",
70
+ "page.ReleaseDetails.table.header.label.content-type": "콘텐츠 타입",
71
+ "page.ReleaseDetails.table.header.label.action": "작업",
72
+ "content-releases.page.ReleaseDetails.table.header.label.status": "상태",
73
+ "page.ReleaseDetails.table.action-published": "이 항목은 <b>{isPublish, select, true {배포} other {배포 취소}}</b>되었습니다.",
74
+ "pages.ReleaseDetails.publish-notification-success": "릴리스가 성공적으로 배포되었습니다.",
75
+ "dialog.confirmation-message": "이 릴리스를 삭제하시겠습니까?",
76
+ "page.Details.button.openContentManager": "콘텐츠 관리자 열기",
77
+ "pages.Releases.notification.error.title": "요청을 처리할 수 없습니다.",
78
+ "pages.Releases.notification.error.message": "다시 시도하거나 다른 릴리스를 열어 보세요.",
79
+ "pages.Releases.not-scheduled": "예약되지 않음",
80
+ "pages.ReleaseDetails.groupBy.label": "{groupBy}별로 그룹화",
81
+ "pages.ReleaseDetails.groupBy.aria-label": "그룹화 기준",
82
+ "pages.ReleaseDetails.entry-validation.already-published": "이미 배포됨",
83
+ "pages.ReleaseDetails.entry-validation.ready-to-publish": "배포 준비 완료",
84
+ "pages.ReleaseDetails.entry-validation.modified": "변경 사항 배포 준비 완료",
85
+ "pages.ReleaseDetails.entry-validation.already-unpublished": "이미 배포 취소됨",
86
+ "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "배포 취소 준비 완료",
87
+ "pages.ReleaseDetails.entry-validation.not-ready": "배포 준비 안 됨",
88
+ "pages.ReleaseDetails.groupBy.option.content-type": "콘텐츠 타입",
89
+ "pages.ReleaseDetails.groupBy.option.locales": "로케일",
90
+ "pages.ReleaseDetails.groupBy.option.actions": "작업",
91
+ "pages.ReleaseDetails.header-subtitle.scheduled": "{date} {time} ({offset})에 예약됨",
92
+ "pages.ReleaseDetails.entry-validation.fields": "필드",
93
+ "pages.Settings.releases.description": "콘텐츠 업데이트를 생성하고 관리하세요",
94
+ "pages.Settings.releases.preferences.title": "환경설정",
95
+ "pages.Settings.releases.timezone.label": "기본 시간대",
96
+ "pages.Settings.releases.timezone.hint": "각 릴리스의 시간대는 개별적으로 변경할 수 있습니다.",
97
+ "pages.Settings.releases.setting.default-timezone-notification-success": "기본 시간대가 업데이트되었습니다.",
98
+ "pages.ReleaseDetails.entry-validation.fields.error": "필드에 오류 {errors}개.",
99
+ "pages.ReleaseDetails.entry-validation.fields.success": "모든 필드가 올바르게 입력되었습니다.",
100
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "오류 보기",
101
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "이 항목은 어떤 워크플로우에도 연결되어 있지 않습니다.",
102
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "이 항목이 배포에 필요한 단계에 있지 않습니다. ({stageName})",
103
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "이 항목이 배포에 필요한 단계에 있습니다. ({stageName})",
104
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "배포에 필요한 단계가 없습니다.",
105
+ "widget.upcoming-releases.link": "릴리스 열기",
106
+ "widget.upcoming-releases.title": "예정된 릴리스",
107
+ "widget.upcoming-releases.no-data": "릴리스 없음"
108
+ };
109
+
110
+ module.exports = ko;
111
+ //# sourceMappingURL=ko.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ko.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,109 @@
1
+ var ko = {
2
+ "content-manager-edit-view.add-to-release.select-label": "릴리스 선택",
3
+ "content-manager-edit-view.add-to-release.select-placeholder": "선택",
4
+ "content-manager-edit-view.add-to-release.action-type-label": "이 항목으로 무엇을 하시겠습니까?",
5
+ "content-manager-edit-view.add-to-release.cancel-button": "취소",
6
+ "content-manager-edit-view.add-to-release.continue-button": "계속",
7
+ "content-manager-edit-view.add-to-release": "릴리스에 추가",
8
+ "content-manager-edit-view.add-to-release.notification.success": "항목이 릴리스에 추가되었습니다",
9
+ "content-manager-edit-view.add-to-release.no-releases-message": "사용 가능한 릴리스가 없습니다. 릴리스 목록을 열어 새 릴리스를 생성하세요.",
10
+ "content-manager-edit-view.add-to-release.redirect-button": "릴리스 목록 열기",
11
+ "content-manager-edit-view.list-releases.title": "{isPublish, select, true {배포 예정} other {배포 취소 예정}}",
12
+ "content-manager-edit-view.remove-from-release": "릴리스에서 제거",
13
+ "content-manager-edit-view.scheduled.date": "{date} {time} ({offset})",
14
+ "content-manager-edit-view.edit-release": "릴리스 수정",
15
+ "content-releases.content-manager-edit-view.edit-entry": "항목 수정",
16
+ "content-manager-edit-view.remove-from-release.notification.success": "항목이 릴리스에서 제거되었습니다",
17
+ "content-manager-edit-view.release-action-menu": "릴리스 작업 옵션",
18
+ "content-manager.list-view.releases.header": "릴리스 예정",
19
+ "content-manager-list-view.add-to-release": "릴리스에 추가",
20
+ "content-manager-list-view.add-to-release.cancel-button": "취소",
21
+ "content-manager-list-view.add-to-release.continue-button": "계속",
22
+ "content-manager-list-view.add-to-release.select-label": "릴리스 선택",
23
+ "content-manager-list-view.add-to-release.select-placeholder": "선택",
24
+ "content-manager-list-view.add-to-release.action-type-label": "이 항목들로 무엇을 하시겠습니까?",
25
+ "content-manager-list-view.add-to-release.notification.success.title": "릴리스에 추가되었습니다.",
26
+ "content-manager-list-view.add-to-release.notification.success.message": "{totalEntries}개 항목 중 {entriesAlreadyInRelease}개는 이미 릴리스에 포함되어 있었습니다.",
27
+ "content-manager.notification.entry-error": "항목 데이터를 가져오지 못했습니다",
28
+ "content-manager.list-view.releases-number": "{number} {number, plural, one {릴리스} other {릴리스}}",
29
+ "plugin.name": "릴리스",
30
+ "pages.Releases.title": "릴리스",
31
+ "pages.Releases.header-subtitle": "콘텐츠 업데이트를 생성하고 관리하세요",
32
+ "pages.Releases.max-limit-reached.title": "대기 중인 {number} {number, plural, one {릴리스} other {릴리스}} 한도에 도달했습니다.",
33
+ "pages.Releases.max-limit-reached.message": "업그레이드하여 무제한으로 릴리스를 관리하세요.",
34
+ "pages.Releases.max-limit-reached.action": "요금제 보기",
35
+ "pages.PurchaseRelease.subTitle": "콘텐츠 업데이트와 릴리스를 관리하세요.",
36
+ "pages.PurchaseRelease.not-available": "릴리스는 유료 요금제에서만 사용할 수 있습니다. 업그레이드하여 릴리스를 생성하고 관리하세요.",
37
+ "pages.PurchaseRelease.description": "콘텐츠를 그룹화하여 업데이트를 한 번에 배포하세요",
38
+ "pages.PurchaseRelease.perks1": "여러 항목을 릴리스에 추가",
39
+ "pages.PurchaseRelease.perks2": "오류가 있는 항목을 빠르게 확인",
40
+ "pages.PurchaseRelease.perks3": "배포 일정을 예약하거나 직접 배포",
41
+ "header.actions.add-release": "새 릴리스",
42
+ "header.actions.refresh": "새로고침",
43
+ "header.actions.publish": "배포",
44
+ "header.actions.open-release-actions": "릴리스 수정 및 삭제 메뉴",
45
+ "header.actions.edit": "수정",
46
+ "header.actions.delete": "삭제",
47
+ "header.actions.created": "생성됨",
48
+ "header.actions.created.description": "{hasCreatedByUser, select, true { (작성자: {createdBy})} other { (작성자: 삭제된 사용자)}}",
49
+ "modal.release-created-notification-success": "릴리스가 생성되었습니다",
50
+ "modal.release-updated-notification-success": "릴리스가 수정되었습니다",
51
+ "modal.title": "{isCreatingRelease, select, true {새 릴리스} other {릴리스 수정}}",
52
+ "modal.form.input.label.release-name": "이름",
53
+ "modal.form.input.label.schedule-release": "릴리스 예약",
54
+ "modal.form.input.label.date": "날짜",
55
+ "modal.form.input.label.time": "시간",
56
+ "modal.form.input.label.timezone": "시간대",
57
+ "modal.form.input.clearLabel": "지우기",
58
+ "modal.form.button.submit": "{isCreatingRelease, select, true {계속} other {저장}}",
59
+ "modal.form.time.has-passed": "선택한 시간이 이미 지났습니다.",
60
+ "pages.Details.header-subtitle": "{number, plural, =0 {항목 없음} one {항목 #개} other {항목 #개}}",
61
+ "pages.Releases.tab-group.label": "릴리스 목록",
62
+ "pages.Releases.tab.pending": "대기 중 ({count})",
63
+ "pages.Releases.tab.done": "완료",
64
+ "page.Releases.tab.emptyEntries": "릴리스 없음",
65
+ "pages.Details.tab.emptyEntries": "이 릴리스는 비어 있습니다. 콘텐츠 관리자를 열어 항목을 선택한 다음 릴리스에 추가하세요.",
66
+ "page.ReleaseDetails.table.header.label.name": "이름",
67
+ "page.ReleaseDetails.table.header.label.locale": "로케일",
68
+ "page.ReleaseDetails.table.header.label.content-type": "콘텐츠 타입",
69
+ "page.ReleaseDetails.table.header.label.action": "작업",
70
+ "content-releases.page.ReleaseDetails.table.header.label.status": "상태",
71
+ "page.ReleaseDetails.table.action-published": "이 항목은 <b>{isPublish, select, true {배포} other {배포 취소}}</b>되었습니다.",
72
+ "pages.ReleaseDetails.publish-notification-success": "릴리스가 성공적으로 배포되었습니다.",
73
+ "dialog.confirmation-message": "이 릴리스를 삭제하시겠습니까?",
74
+ "page.Details.button.openContentManager": "콘텐츠 관리자 열기",
75
+ "pages.Releases.notification.error.title": "요청을 처리할 수 없습니다.",
76
+ "pages.Releases.notification.error.message": "다시 시도하거나 다른 릴리스를 열어 보세요.",
77
+ "pages.Releases.not-scheduled": "예약되지 않음",
78
+ "pages.ReleaseDetails.groupBy.label": "{groupBy}별로 그룹화",
79
+ "pages.ReleaseDetails.groupBy.aria-label": "그룹화 기준",
80
+ "pages.ReleaseDetails.entry-validation.already-published": "이미 배포됨",
81
+ "pages.ReleaseDetails.entry-validation.ready-to-publish": "배포 준비 완료",
82
+ "pages.ReleaseDetails.entry-validation.modified": "변경 사항 배포 준비 완료",
83
+ "pages.ReleaseDetails.entry-validation.already-unpublished": "이미 배포 취소됨",
84
+ "pages.ReleaseDetails.entry-validation.ready-to-unpublish": "배포 취소 준비 완료",
85
+ "pages.ReleaseDetails.entry-validation.not-ready": "배포 준비 안 됨",
86
+ "pages.ReleaseDetails.groupBy.option.content-type": "콘텐츠 타입",
87
+ "pages.ReleaseDetails.groupBy.option.locales": "로케일",
88
+ "pages.ReleaseDetails.groupBy.option.actions": "작업",
89
+ "pages.ReleaseDetails.header-subtitle.scheduled": "{date} {time} ({offset})에 예약됨",
90
+ "pages.ReleaseDetails.entry-validation.fields": "필드",
91
+ "pages.Settings.releases.description": "콘텐츠 업데이트를 생성하고 관리하세요",
92
+ "pages.Settings.releases.preferences.title": "환경설정",
93
+ "pages.Settings.releases.timezone.label": "기본 시간대",
94
+ "pages.Settings.releases.timezone.hint": "각 릴리스의 시간대는 개별적으로 변경할 수 있습니다.",
95
+ "pages.Settings.releases.setting.default-timezone-notification-success": "기본 시간대가 업데이트되었습니다.",
96
+ "pages.ReleaseDetails.entry-validation.fields.error": "필드에 오류 {errors}개.",
97
+ "pages.ReleaseDetails.entry-validation.fields.success": "모든 필드가 올바르게 입력되었습니다.",
98
+ "pages.ReleaseDetails.entry-validation.fields.see-errors": "오류 보기",
99
+ "pages.ReleaseDetails.entry-validation.review-stage.not-enabled": "이 항목은 어떤 워크플로우에도 연결되어 있지 않습니다.",
100
+ "pages.ReleaseDetails.entry-validation.review-stage.not-ready": "이 항목이 배포에 필요한 단계에 있지 않습니다. ({stageName})",
101
+ "pages.ReleaseDetails.entry-validation.review-stage.ready": "이 항목이 배포에 필요한 단계에 있습니다. ({stageName})",
102
+ "pages.ReleaseDetails.entry-validation.review-stage.stage-not-required": "배포에 필요한 단계가 없습니다.",
103
+ "widget.upcoming-releases.link": "릴리스 열기",
104
+ "widget.upcoming-releases.title": "예정된 릴리스",
105
+ "widget.upcoming-releases.no-data": "릴리스 없음"
106
+ };
107
+
108
+ export { ko as default };
109
+ //# sourceMappingURL=ko.json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ko.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -8,6 +8,7 @@ const createSchedulingService = ({ strapi })=>{
8
8
  const scheduledJobs = new Map();
9
9
  return {
10
10
  async set (releaseId, scheduleDate) {
11
+ const id = String(releaseId); // callers pass both numeric (db row) and string (ctx.params) ids
11
12
  const release = await strapi.db.query(constants.RELEASE_MODEL_UID).findOne({
12
13
  where: {
13
14
  id: releaseId,
@@ -17,7 +18,7 @@ const createSchedulingService = ({ strapi })=>{
17
18
  if (!release) {
18
19
  throw new utils.errors.NotFoundError(`No release found for id ${releaseId}`);
19
20
  }
20
- const taskName = `publishRelease_${releaseId}`;
21
+ const taskName = `publishRelease_${id}`;
21
22
  strapi.cron.add({
22
23
  [taskName]: {
23
24
  async task () {
@@ -28,16 +29,17 @@ const createSchedulingService = ({ strapi })=>{
28
29
  options: scheduleDate
29
30
  }
30
31
  });
31
- if (scheduledJobs.has(releaseId)) {
32
- this.cancel(releaseId);
32
+ if (scheduledJobs.has(id)) {
33
+ this.cancel(id);
33
34
  }
34
- scheduledJobs.set(releaseId, taskName);
35
+ scheduledJobs.set(id, taskName);
35
36
  return scheduledJobs;
36
37
  },
37
38
  cancel (releaseId) {
38
- if (scheduledJobs.has(releaseId)) {
39
- strapi.cron.remove(scheduledJobs.get(releaseId));
40
- scheduledJobs.delete(releaseId);
39
+ const id = String(releaseId); // normalise to match key from set()
40
+ if (scheduledJobs.has(id)) {
41
+ strapi.cron.remove(scheduledJobs.get(id));
42
+ scheduledJobs.delete(id);
41
43
  }
42
44
  return scheduledJobs;
43
45
  },
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.js","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], string>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const taskName = `publishRelease_${releaseId}`;\n\n strapi.cron.add({\n [taskName]: {\n async task() {\n await getService('release', { strapi }).publish(releaseId);\n },\n options: scheduleDate,\n },\n });\n\n if (scheduledJobs.has(releaseId)) {\n this.cancel(releaseId);\n }\n\n scheduledJobs.set(releaseId, taskName);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n if (scheduledJobs.has(releaseId)) {\n strapi.cron.remove(scheduledJobs.get(releaseId)!);\n scheduledJobs.delete(releaseId);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","release","db","query","RELEASE_MODEL_UID","findOne","where","id","releasedAt","errors","NotFoundError","taskName","cron","add","task","getService","publish","options","has","cancel","remove","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;;;AAOA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,OAAAA,GAAU,MAAMN,MAAAA,CAAOO,EAAE,CAC5BC,KAAK,CAACC,2BAAAA,CAAAA,CACNC,OAAO,CAAC;gBAAEC,KAAAA,EAAO;oBAAEC,EAAAA,EAAIR,SAAAA;oBAAWS,UAAAA,EAAY;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,gBAAA,MAAM,IAAIQ,YAAAA,CAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEX,SAAAA,CAAAA,CAAW,CAAA;AACvE,YAAA;AAEA,YAAA,MAAMY,QAAAA,GAAW,CAAC,eAAe,EAAEZ,SAAAA,CAAAA,CAAW;YAE9CJ,MAAAA,CAAOiB,IAAI,CAACC,GAAG,CAAC;AACd,gBAAA,CAACF,WAAW;oBACV,MAAMG,IAAAA,CAAAA,GAAAA;AACJ,wBAAA,MAAMC,iBAAW,SAAA,EAAW;AAAEpB,4BAAAA;AAAO,yBAAA,CAAA,CAAGqB,OAAO,CAACjB,SAAAA,CAAAA;AAClD,oBAAA,CAAA;oBACAkB,OAAAA,EAASjB;AACX;AACF,aAAA,CAAA;YAEA,IAAIJ,aAAAA,CAAcsB,GAAG,CAACnB,SAAAA,CAAAA,EAAY;gBAChC,IAAI,CAACoB,MAAM,CAACpB,SAAAA,CAAAA;AACd,YAAA;YAEAH,aAAAA,CAAcE,GAAG,CAACC,SAAAA,EAAWY,QAAAA,CAAAA;YAE7B,OAAOf,aAAAA;AACT,QAAA,CAAA;AAEAuB,QAAAA,MAAAA,CAAAA,CAAOpB,SAAwB,EAAA;YAC7B,IAAIH,aAAAA,CAAcsB,GAAG,CAACnB,SAAAA,CAAAA,EAAY;AAChCJ,gBAAAA,MAAAA,CAAOiB,IAAI,CAACQ,MAAM,CAACxB,aAAAA,CAAcyB,GAAG,CAACtB,SAAAA,CAAAA,CAAAA;AACrCH,gBAAAA,aAAAA,CAAc0B,MAAM,CAACvB,SAAAA,CAAAA;AACvB,YAAA;YAEA,OAAOH,aAAAA;AACT,QAAA,CAAA;AAEA2B,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAO3B,aAAAA;AACT,QAAA,CAAA;AAEA;;;;AAIC,QACD,MAAM4B,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM9B,MAAAA,CAAOO,EAAE,CAACC,KAAK,CAACC,2BAAAA,CAAAA,CAAmBsB,QAAQ,CAAC;gBACjEpB,KAAAA,EAAO;oBACLqB,WAAAA,EAAa;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACArB,UAAAA,EAAY;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMP,WAAWwB,QAAAA,CAAU;AAC9B,gBAAA,IAAI,CAAC3B,GAAG,CAACG,QAAQM,EAAE,EAAEN,QAAQ0B,WAAW,CAAA;AAC1C,YAAA;YAEA,OAAO/B,aAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"scheduling.js","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], string>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const id = String(releaseId); // callers pass both numeric (db row) and string (ctx.params) ids\n\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const taskName = `publishRelease_${id}`;\n\n strapi.cron.add({\n [taskName]: {\n async task() {\n await getService('release', { strapi }).publish(releaseId);\n },\n options: scheduleDate,\n },\n });\n\n if (scheduledJobs.has(id)) {\n this.cancel(id);\n }\n\n scheduledJobs.set(id, taskName);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n const id = String(releaseId); // normalise to match key from set()\n\n if (scheduledJobs.has(id)) {\n strapi.cron.remove(scheduledJobs.get(id)!);\n scheduledJobs.delete(id);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","id","String","release","db","query","RELEASE_MODEL_UID","findOne","where","releasedAt","errors","NotFoundError","taskName","cron","add","task","getService","publish","options","has","cancel","remove","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;;;AAOA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,EAAAA,GAAKC,MAAAA,CAAOH,SAAAA,CAAAA,CAAAA;YAElB,MAAMI,OAAAA,GAAU,MAAMR,MAAAA,CAAOS,EAAE,CAC5BC,KAAK,CAACC,2BAAAA,CAAAA,CACNC,OAAO,CAAC;gBAAEC,KAAAA,EAAO;oBAAEP,EAAAA,EAAIF,SAAAA;oBAAWU,UAAAA,EAAY;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACN,OAAAA,EAAS;AACZ,gBAAA,MAAM,IAAIO,YAAAA,CAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEZ,SAAAA,CAAAA,CAAW,CAAA;AACvE,YAAA;AAEA,YAAA,MAAMa,QAAAA,GAAW,CAAC,eAAe,EAAEX,EAAAA,CAAAA,CAAI;YAEvCN,MAAAA,CAAOkB,IAAI,CAACC,GAAG,CAAC;AACd,gBAAA,CAACF,WAAW;oBACV,MAAMG,IAAAA,CAAAA,GAAAA;AACJ,wBAAA,MAAMC,iBAAW,SAAA,EAAW;AAAErB,4BAAAA;AAAO,yBAAA,CAAA,CAAGsB,OAAO,CAAClB,SAAAA,CAAAA;AAClD,oBAAA,CAAA;oBACAmB,OAAAA,EAASlB;AACX;AACF,aAAA,CAAA;YAEA,IAAIJ,aAAAA,CAAcuB,GAAG,CAAClB,EAAAA,CAAAA,EAAK;gBACzB,IAAI,CAACmB,MAAM,CAACnB,EAAAA,CAAAA;AACd,YAAA;YAEAL,aAAAA,CAAcE,GAAG,CAACG,EAAAA,EAAIW,QAAAA,CAAAA;YAEtB,OAAOhB,aAAAA;AACT,QAAA,CAAA;AAEAwB,QAAAA,MAAAA,CAAAA,CAAOrB,SAAwB,EAAA;YAC7B,MAAME,EAAAA,GAAKC,MAAAA,CAAOH,SAAAA,CAAAA,CAAAA;YAElB,IAAIH,aAAAA,CAAcuB,GAAG,CAAClB,EAAAA,CAAAA,EAAK;AACzBN,gBAAAA,MAAAA,CAAOkB,IAAI,CAACQ,MAAM,CAACzB,aAAAA,CAAc0B,GAAG,CAACrB,EAAAA,CAAAA,CAAAA;AACrCL,gBAAAA,aAAAA,CAAc2B,MAAM,CAACtB,EAAAA,CAAAA;AACvB,YAAA;YAEA,OAAOL,aAAAA;AACT,QAAA,CAAA;AAEA4B,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAO5B,aAAAA;AACT,QAAA,CAAA;AAEA;;;;AAIC,QACD,MAAM6B,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM/B,MAAAA,CAAOS,EAAE,CAACC,KAAK,CAACC,2BAAAA,CAAAA,CAAmBqB,QAAQ,CAAC;gBACjEnB,KAAAA,EAAO;oBACLoB,WAAAA,EAAa;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACArB,UAAAA,EAAY;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMN,WAAWuB,QAAAA,CAAU;AAC9B,gBAAA,IAAI,CAAC5B,GAAG,CAACK,QAAQF,EAAE,EAAEE,QAAQyB,WAAW,CAAA;AAC1C,YAAA;YAEA,OAAOhC,aAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -6,6 +6,7 @@ const createSchedulingService = ({ strapi })=>{
6
6
  const scheduledJobs = new Map();
7
7
  return {
8
8
  async set (releaseId, scheduleDate) {
9
+ const id = String(releaseId); // callers pass both numeric (db row) and string (ctx.params) ids
9
10
  const release = await strapi.db.query(RELEASE_MODEL_UID).findOne({
10
11
  where: {
11
12
  id: releaseId,
@@ -15,7 +16,7 @@ const createSchedulingService = ({ strapi })=>{
15
16
  if (!release) {
16
17
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
17
18
  }
18
- const taskName = `publishRelease_${releaseId}`;
19
+ const taskName = `publishRelease_${id}`;
19
20
  strapi.cron.add({
20
21
  [taskName]: {
21
22
  async task () {
@@ -26,16 +27,17 @@ const createSchedulingService = ({ strapi })=>{
26
27
  options: scheduleDate
27
28
  }
28
29
  });
29
- if (scheduledJobs.has(releaseId)) {
30
- this.cancel(releaseId);
30
+ if (scheduledJobs.has(id)) {
31
+ this.cancel(id);
31
32
  }
32
- scheduledJobs.set(releaseId, taskName);
33
+ scheduledJobs.set(id, taskName);
33
34
  return scheduledJobs;
34
35
  },
35
36
  cancel (releaseId) {
36
- if (scheduledJobs.has(releaseId)) {
37
- strapi.cron.remove(scheduledJobs.get(releaseId));
38
- scheduledJobs.delete(releaseId);
37
+ const id = String(releaseId); // normalise to match key from set()
38
+ if (scheduledJobs.has(id)) {
39
+ strapi.cron.remove(scheduledJobs.get(id));
40
+ scheduledJobs.delete(id);
39
41
  }
40
42
  return scheduledJobs;
41
43
  },
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.mjs","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], string>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const taskName = `publishRelease_${releaseId}`;\n\n strapi.cron.add({\n [taskName]: {\n async task() {\n await getService('release', { strapi }).publish(releaseId);\n },\n options: scheduleDate,\n },\n });\n\n if (scheduledJobs.has(releaseId)) {\n this.cancel(releaseId);\n }\n\n scheduledJobs.set(releaseId, taskName);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n if (scheduledJobs.has(releaseId)) {\n strapi.cron.remove(scheduledJobs.get(releaseId)!);\n scheduledJobs.delete(releaseId);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","release","db","query","RELEASE_MODEL_UID","findOne","where","id","releasedAt","errors","NotFoundError","taskName","cron","add","task","getService","publish","options","has","cancel","remove","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;AAOA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,OAAAA,GAAU,MAAMN,MAAAA,CAAOO,EAAE,CAC5BC,KAAK,CAACC,iBAAAA,CAAAA,CACNC,OAAO,CAAC;gBAAEC,KAAAA,EAAO;oBAAEC,EAAAA,EAAIR,SAAAA;oBAAWS,UAAAA,EAAY;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACP,OAAAA,EAAS;AACZ,gBAAA,MAAM,IAAIQ,MAAAA,CAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEX,SAAAA,CAAAA,CAAW,CAAA;AACvE,YAAA;AAEA,YAAA,MAAMY,QAAAA,GAAW,CAAC,eAAe,EAAEZ,SAAAA,CAAAA,CAAW;YAE9CJ,MAAAA,CAAOiB,IAAI,CAACC,GAAG,CAAC;AACd,gBAAA,CAACF,WAAW;oBACV,MAAMG,IAAAA,CAAAA,GAAAA;AACJ,wBAAA,MAAMC,WAAW,SAAA,EAAW;AAAEpB,4BAAAA;AAAO,yBAAA,CAAA,CAAGqB,OAAO,CAACjB,SAAAA,CAAAA;AAClD,oBAAA,CAAA;oBACAkB,OAAAA,EAASjB;AACX;AACF,aAAA,CAAA;YAEA,IAAIJ,aAAAA,CAAcsB,GAAG,CAACnB,SAAAA,CAAAA,EAAY;gBAChC,IAAI,CAACoB,MAAM,CAACpB,SAAAA,CAAAA;AACd,YAAA;YAEAH,aAAAA,CAAcE,GAAG,CAACC,SAAAA,EAAWY,QAAAA,CAAAA;YAE7B,OAAOf,aAAAA;AACT,QAAA,CAAA;AAEAuB,QAAAA,MAAAA,CAAAA,CAAOpB,SAAwB,EAAA;YAC7B,IAAIH,aAAAA,CAAcsB,GAAG,CAACnB,SAAAA,CAAAA,EAAY;AAChCJ,gBAAAA,MAAAA,CAAOiB,IAAI,CAACQ,MAAM,CAACxB,aAAAA,CAAcyB,GAAG,CAACtB,SAAAA,CAAAA,CAAAA;AACrCH,gBAAAA,aAAAA,CAAc0B,MAAM,CAACvB,SAAAA,CAAAA;AACvB,YAAA;YAEA,OAAOH,aAAAA;AACT,QAAA,CAAA;AAEA2B,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAO3B,aAAAA;AACT,QAAA,CAAA;AAEA;;;;AAIC,QACD,MAAM4B,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM9B,MAAAA,CAAOO,EAAE,CAACC,KAAK,CAACC,iBAAAA,CAAAA,CAAmBsB,QAAQ,CAAC;gBACjEpB,KAAAA,EAAO;oBACLqB,WAAAA,EAAa;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACArB,UAAAA,EAAY;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMP,WAAWwB,QAAAA,CAAU;AAC9B,gBAAA,IAAI,CAAC3B,GAAG,CAACG,QAAQM,EAAE,EAAEN,QAAQ0B,WAAW,CAAA;AAC1C,YAAA;YAEA,OAAO/B,aAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"scheduling.mjs","sources":["../../../server/src/services/scheduling.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { errors } from '@strapi/utils';\nimport { Release } from '../../../shared/contracts/releases';\nimport { getService } from '../utils';\nimport { RELEASE_MODEL_UID } from '../constants';\n\nconst createSchedulingService = ({ strapi }: { strapi: Core.Strapi }) => {\n const scheduledJobs = new Map<Release['id'], string>();\n\n return {\n async set(releaseId: Release['id'], scheduleDate: Date) {\n const id = String(releaseId); // callers pass both numeric (db row) and string (ctx.params) ids\n\n const release = await strapi.db\n .query(RELEASE_MODEL_UID)\n .findOne({ where: { id: releaseId, releasedAt: null } });\n\n if (!release) {\n throw new errors.NotFoundError(`No release found for id ${releaseId}`);\n }\n\n const taskName = `publishRelease_${id}`;\n\n strapi.cron.add({\n [taskName]: {\n async task() {\n await getService('release', { strapi }).publish(releaseId);\n },\n options: scheduleDate,\n },\n });\n\n if (scheduledJobs.has(id)) {\n this.cancel(id);\n }\n\n scheduledJobs.set(id, taskName);\n\n return scheduledJobs;\n },\n\n cancel(releaseId: Release['id']) {\n const id = String(releaseId); // normalise to match key from set()\n\n if (scheduledJobs.has(id)) {\n strapi.cron.remove(scheduledJobs.get(id)!);\n scheduledJobs.delete(id);\n }\n\n return scheduledJobs;\n },\n\n getAll() {\n return scheduledJobs;\n },\n\n /**\n * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released\n * This is useful in case the server was restarted and the scheduled jobs were lost\n * This also could be used to sync different Strapi instances in case of a cluster\n */\n async syncFromDatabase() {\n const releases = await strapi.db.query(RELEASE_MODEL_UID).findMany({\n where: {\n scheduledAt: {\n $gte: new Date(),\n },\n releasedAt: null,\n },\n });\n\n for (const release of releases) {\n this.set(release.id, release.scheduledAt);\n }\n\n return scheduledJobs;\n },\n };\n};\n\nexport default createSchedulingService;\n"],"names":["createSchedulingService","strapi","scheduledJobs","Map","set","releaseId","scheduleDate","id","String","release","db","query","RELEASE_MODEL_UID","findOne","where","releasedAt","errors","NotFoundError","taskName","cron","add","task","getService","publish","options","has","cancel","remove","get","delete","getAll","syncFromDatabase","releases","findMany","scheduledAt","$gte","Date"],"mappings":";;;;AAOA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAClE,IAAA,MAAMC,gBAAgB,IAAIC,GAAAA,EAAAA;IAE1B,OAAO;QACL,MAAMC,GAAAA,CAAAA,CAAIC,SAAwB,EAAEC,YAAkB,EAAA;YACpD,MAAMC,EAAAA,GAAKC,MAAAA,CAAOH,SAAAA,CAAAA,CAAAA;YAElB,MAAMI,OAAAA,GAAU,MAAMR,MAAAA,CAAOS,EAAE,CAC5BC,KAAK,CAACC,iBAAAA,CAAAA,CACNC,OAAO,CAAC;gBAAEC,KAAAA,EAAO;oBAAEP,EAAAA,EAAIF,SAAAA;oBAAWU,UAAAA,EAAY;AAAK;AAAE,aAAA,CAAA;AAExD,YAAA,IAAI,CAACN,OAAAA,EAAS;AACZ,gBAAA,MAAM,IAAIO,MAAAA,CAAOC,aAAa,CAAC,CAAC,wBAAwB,EAAEZ,SAAAA,CAAAA,CAAW,CAAA;AACvE,YAAA;AAEA,YAAA,MAAMa,QAAAA,GAAW,CAAC,eAAe,EAAEX,EAAAA,CAAAA,CAAI;YAEvCN,MAAAA,CAAOkB,IAAI,CAACC,GAAG,CAAC;AACd,gBAAA,CAACF,WAAW;oBACV,MAAMG,IAAAA,CAAAA,GAAAA;AACJ,wBAAA,MAAMC,WAAW,SAAA,EAAW;AAAErB,4BAAAA;AAAO,yBAAA,CAAA,CAAGsB,OAAO,CAAClB,SAAAA,CAAAA;AAClD,oBAAA,CAAA;oBACAmB,OAAAA,EAASlB;AACX;AACF,aAAA,CAAA;YAEA,IAAIJ,aAAAA,CAAcuB,GAAG,CAAClB,EAAAA,CAAAA,EAAK;gBACzB,IAAI,CAACmB,MAAM,CAACnB,EAAAA,CAAAA;AACd,YAAA;YAEAL,aAAAA,CAAcE,GAAG,CAACG,EAAAA,EAAIW,QAAAA,CAAAA;YAEtB,OAAOhB,aAAAA;AACT,QAAA,CAAA;AAEAwB,QAAAA,MAAAA,CAAAA,CAAOrB,SAAwB,EAAA;YAC7B,MAAME,EAAAA,GAAKC,MAAAA,CAAOH,SAAAA,CAAAA,CAAAA;YAElB,IAAIH,aAAAA,CAAcuB,GAAG,CAAClB,EAAAA,CAAAA,EAAK;AACzBN,gBAAAA,MAAAA,CAAOkB,IAAI,CAACQ,MAAM,CAACzB,aAAAA,CAAc0B,GAAG,CAACrB,EAAAA,CAAAA,CAAAA;AACrCL,gBAAAA,aAAAA,CAAc2B,MAAM,CAACtB,EAAAA,CAAAA;AACvB,YAAA;YAEA,OAAOL,aAAAA;AACT,QAAA,CAAA;AAEA4B,QAAAA,MAAAA,CAAAA,GAAAA;YACE,OAAO5B,aAAAA;AACT,QAAA,CAAA;AAEA;;;;AAIC,QACD,MAAM6B,gBAAAA,CAAAA,GAAAA;YACJ,MAAMC,QAAAA,GAAW,MAAM/B,MAAAA,CAAOS,EAAE,CAACC,KAAK,CAACC,iBAAAA,CAAAA,CAAmBqB,QAAQ,CAAC;gBACjEnB,KAAAA,EAAO;oBACLoB,WAAAA,EAAa;AACXC,wBAAAA,IAAAA,EAAM,IAAIC,IAAAA;AACZ,qBAAA;oBACArB,UAAAA,EAAY;AACd;AACF,aAAA,CAAA;YAEA,KAAK,MAAMN,WAAWuB,QAAAA,CAAU;AAC9B,gBAAA,IAAI,CAAC5B,GAAG,CAACK,QAAQF,EAAE,EAAEE,QAAQyB,WAAW,CAAA;AAC1C,YAAA;YAEA,OAAOhC,aAAAA;AACT,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,12 +1,12 @@
1
1
  declare const _default: {
2
2
  register: ({ strapi }: {
3
- strapi: import("@strapi/types/dist/core").Strapi;
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
4
  }) => Promise<void>;
5
5
  bootstrap: ({ strapi }: {
6
- strapi: import("@strapi/types/dist/core").Strapi;
6
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
7
7
  }) => Promise<void>;
8
8
  destroy: ({ strapi }: {
9
- strapi: import("@strapi/types/dist/core").Strapi;
9
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
10
10
  }) => Promise<void>;
11
11
  contentTypes: {
12
12
  release: {
@@ -106,12 +106,12 @@ declare const _default: {
106
106
  };
107
107
  services: {
108
108
  homepage: ({ strapi }: {
109
- strapi: import("@strapi/types/dist/core").Strapi;
109
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
110
110
  }) => {
111
111
  getUpcomingReleases(): Promise<import("../../shared/contracts/homepage").GetUpcomingReleases.Response["data"]>;
112
112
  };
113
113
  release: ({ strapi }: {
114
- strapi: import("@strapi/types/dist/core").Strapi;
114
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
115
115
  }) => {
116
116
  create(releaseData: import("../../shared/contracts/releases").CreateRelease.Request["body"], { user }: {
117
117
  user: import("../../shared/types").UserInfo;
@@ -127,7 +127,7 @@ declare const _default: {
127
127
  };
128
128
  }>;
129
129
  findMany(query?: any): Promise<any[]>;
130
- update(id: import("@strapi/types/dist/data").ID, releaseData: import("../../shared/contracts/releases").UpdateRelease.Request["body"], { user }: {
130
+ update(id: import("@strapi/types/dist/data/constants.js").ID, releaseData: import("../../shared/contracts/releases").UpdateRelease.Request["body"], { user }: {
131
131
  user: import("../../shared/types").UserInfo;
132
132
  }): Promise<any>;
133
133
  getAllComponents(): Promise<any>;
@@ -136,7 +136,7 @@ declare const _default: {
136
136
  updateReleaseStatus(releaseId: import("../../shared/contracts/releases").Release["id"]): Promise<any>;
137
137
  };
138
138
  'release-action': ({ strapi }: {
139
- strapi: import("@strapi/types/dist/core").Strapi;
139
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
140
140
  }) => {
141
141
  create(releaseId: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], action: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["body"], { disableUpdateReleaseStatus }?: {
142
142
  disableUpdateReleaseStatus?: boolean;
@@ -152,13 +152,13 @@ declare const _default: {
152
152
  }>;
153
153
  groupActions(actions: import("../../shared/contracts/release-actions").ReleaseAction[], groupBy: import("../../shared/contracts/release-actions").ReleaseActionGroupBy): Promise<import("lodash").Dictionary<(null | undefined)[]>>;
154
154
  getContentTypeModelsFromActions(actions: import("../../shared/contracts/release-actions").ReleaseAction[]): Promise<{} | undefined>;
155
- countActions(query: import("@strapi/types/dist/modules/entity-service/params").Pick<typeof import("./constants").RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
155
+ countActions(query: import("@strapi/types/dist/modules/entity-service/params/index.js").Pick<typeof import("./constants").RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
156
156
  update(actionId: import("../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["actionId"], releaseId: import("../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["releaseId"], update: import("../../shared/contracts/release-actions").UpdateReleaseAction.Request["body"]): Promise<any>;
157
157
  delete(actionId: import("../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["actionId"], releaseId: import("../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["releaseId"]): Promise<any>;
158
- validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid").ContentType[]): Promise<void>;
158
+ validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid/index.js").ContentType[]): Promise<void>;
159
159
  };
160
160
  'release-validation': ({ strapi }: {
161
- strapi: import("@strapi/types/dist/core").Strapi;
161
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
162
162
  }) => {
163
163
  validateUniqueEntry(releaseId: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], releaseActionArgs: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]): Promise<void>;
164
164
  validateEntryData(contentTypeUid: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["contentType"], entryDocumentId: import("../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["entryDocumentId"]): void;
@@ -167,15 +167,15 @@ declare const _default: {
167
167
  validateScheduledAtIsLaterThanNow(scheduledAt: import("../../shared/contracts/releases").CreateRelease.Request["body"]["scheduledAt"]): Promise<void>;
168
168
  };
169
169
  scheduling: ({ strapi }: {
170
- strapi: import("@strapi/types/dist/core").Strapi;
170
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
171
171
  }) => {
172
- set(releaseId: import("../../shared/contracts/releases").Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
173
- cancel(releaseId: import("../../shared/contracts/releases").Release["id"]): Map<import("@strapi/types/dist/data").ID, string>;
174
- getAll(): Map<import("@strapi/types/dist/data").ID, string>;
175
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
172
+ set(releaseId: import("../../shared/contracts/releases").Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
173
+ cancel(releaseId: import("../../shared/contracts/releases").Release["id"]): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
174
+ getAll(): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
175
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
176
176
  };
177
177
  settings: ({ strapi }: {
178
- strapi: import("@strapi/types/dist/core").Strapi;
178
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
179
179
  }) => {
180
180
  update({ settings }: {
181
181
  settings: import("../../shared/contracts/settings").Settings;
@@ -210,7 +210,9 @@ declare const _default: {
210
210
  };
211
211
  };
212
212
  routes: {
213
- homepage: import("@strapi/types/dist/core").Router;
213
+ homepage: import("@strapi/types/dist/core/router.js").Router | ((params: {
214
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
215
+ }) => import("@strapi/types/dist/core/router.js").Router);
214
216
  settings: {
215
217
  type: string;
216
218
  routes: {
@@ -262,7 +264,7 @@ declare const _default: {
262
264
  };
263
265
  } | {
264
266
  register: ({ strapi }: {
265
- strapi: import("@strapi/types/dist/core").Strapi;
267
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
266
268
  }) => Promise<void>;
267
269
  contentTypes: {
268
270
  release: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+BylF,sEAA6B;;;;;;;;;;;;;;;8BAA2gG,yEAAgC;+BAAuxC,0EAAiC;;;;;;8BAAlgL,sFAAsC;0CAA4I,CAAC;;gCAAmiE,oFAAoC;;;;;;;;;;;;6BAAkvI,sFAAsC,yBAA8B,sFAAsC;6BAA63C,sFAAsC,yBAA8B,sFAAsC;;;;;;2CAPzgT,sFACwB;8CAMysC,oFAAoC,kCAAqC,oFAAoC;;sDAAi2C,uEAA8B,eAAkB,yEAAgC;2DAAse,uEAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAD9wG,wBAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+BylF,sEAA6B;;;;;;;;;;;;;;;8BAA2gG,yEAAgC;+BAAuxC,0EAAiC;;;;;;8BAAlgL,sFAAsC;0CAA4I,CAAC;;gCAAmiE,oFAAoC;;;;;;;;;;;;6BAAkvI,sFAAsC,yBAA8B,sFAAsC;6BAA63C,sFAAsC,yBAA8B,sFAAsC;;;;;;2CAPzgT,sFACwB;8CAMysC,oFAAoC,kCAAqC,oFAAoC;;sDAAi2C,uEAA8B,eAAkB,yEAAgC;2DAAse,uEAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAD9wG,wBAA2B"}
@@ -1,5 +1,7 @@
1
1
  export declare const routes: {
2
- homepage: import("@strapi/types/dist/core").Router;
2
+ homepage: import("@strapi/types/dist/core/router.js").Router | ((params: {
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
+ }) => import("@strapi/types/dist/core/router.js").Router);
3
5
  settings: {
4
6
  type: string;
5
7
  routes: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  export declare const services: {
2
2
  homepage: ({ strapi }: {
3
- strapi: import("@strapi/types/dist/core").Strapi;
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
4
  }) => {
5
5
  getUpcomingReleases(): Promise<import("../../../shared/contracts/homepage").GetUpcomingReleases.Response["data"]>;
6
6
  };
7
7
  release: ({ strapi }: {
8
- strapi: import("@strapi/types/dist/core").Strapi;
8
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
9
9
  }) => {
10
10
  create(releaseData: import("../../../shared/contracts/releases").CreateRelease.Request["body"], { user }: {
11
11
  user: import("../../../shared/types").UserInfo;
@@ -21,7 +21,7 @@ export declare const services: {
21
21
  };
22
22
  }>;
23
23
  findMany(query?: any): Promise<any[]>;
24
- update(id: import("@strapi/types/dist/data").ID, releaseData: import("../../../shared/contracts/releases").UpdateRelease.Request["body"], { user }: {
24
+ update(id: import("@strapi/types/dist/data/constants.js").ID, releaseData: import("../../../shared/contracts/releases").UpdateRelease.Request["body"], { user }: {
25
25
  user: import("../../../shared/types").UserInfo;
26
26
  }): Promise<any>;
27
27
  getAllComponents(): Promise<any>;
@@ -30,7 +30,7 @@ export declare const services: {
30
30
  updateReleaseStatus(releaseId: import("../../../shared/contracts/releases").Release["id"]): Promise<any>;
31
31
  };
32
32
  'release-action': ({ strapi }: {
33
- strapi: import("@strapi/types/dist/core").Strapi;
33
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
34
34
  }) => {
35
35
  create(releaseId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], action: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"], { disableUpdateReleaseStatus }?: {
36
36
  disableUpdateReleaseStatus?: boolean;
@@ -46,13 +46,13 @@ export declare const services: {
46
46
  }>;
47
47
  groupActions(actions: import("../../../shared/contracts/release-actions").ReleaseAction[], groupBy: import("../../../shared/contracts/release-actions").ReleaseActionGroupBy): Promise<import("lodash").Dictionary<(null | undefined)[]>>;
48
48
  getContentTypeModelsFromActions(actions: import("../../../shared/contracts/release-actions").ReleaseAction[]): Promise<{} | undefined>;
49
- countActions(query: import("@strapi/types/dist/modules/entity-service/params").Pick<typeof import("../constants").RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
49
+ countActions(query: import("@strapi/types/dist/modules/entity-service/params/index.js").Pick<typeof import("../constants").RELEASE_ACTION_MODEL_UID, "filters">): Promise<number>;
50
50
  update(actionId: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["actionId"], releaseId: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["params"]["releaseId"], update: import("../../../shared/contracts/release-actions").UpdateReleaseAction.Request["body"]): Promise<any>;
51
51
  delete(actionId: import("../../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["actionId"], releaseId: import("../../../shared/contracts/release-actions").DeleteReleaseAction.Request["params"]["releaseId"]): Promise<any>;
52
- validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid").ContentType[]): Promise<void>;
52
+ validateActionsByContentTypes(contentTypeUids: import("@strapi/types/dist/uid/index.js").ContentType[]): Promise<void>;
53
53
  };
54
54
  'release-validation': ({ strapi }: {
55
- strapi: import("@strapi/types/dist/core").Strapi;
55
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
56
56
  }) => {
57
57
  validateUniqueEntry(releaseId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["params"]["releaseId"], releaseActionArgs: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]): Promise<void>;
58
58
  validateEntryData(contentTypeUid: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["contentType"], entryDocumentId: import("../../../shared/contracts/release-actions").CreateReleaseAction.Request["body"]["entryDocumentId"]): void;
@@ -61,15 +61,15 @@ export declare const services: {
61
61
  validateScheduledAtIsLaterThanNow(scheduledAt: import("../../../shared/contracts/releases").CreateRelease.Request["body"]["scheduledAt"]): Promise<void>;
62
62
  };
63
63
  scheduling: ({ strapi }: {
64
- strapi: import("@strapi/types/dist/core").Strapi;
64
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
65
65
  }) => {
66
- set(releaseId: import("../../../shared/contracts/releases").Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
67
- cancel(releaseId: import("../../../shared/contracts/releases").Release["id"]): Map<import("@strapi/types/dist/data").ID, string>;
68
- getAll(): Map<import("@strapi/types/dist/data").ID, string>;
69
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
66
+ set(releaseId: import("../../../shared/contracts/releases").Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
67
+ cancel(releaseId: import("../../../shared/contracts/releases").Release["id"]): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
68
+ getAll(): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
69
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
70
70
  };
71
71
  settings: ({ strapi }: {
72
- strapi: import("@strapi/types/dist/core").Strapi;
72
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
73
73
  }) => {
74
74
  update({ settings }: {
75
75
  settings: import("../../../shared/contracts/settings").Settings;
@@ -3,15 +3,15 @@ import { Release } from '../../../shared/contracts/releases';
3
3
  declare const createSchedulingService: ({ strapi }: {
4
4
  strapi: Core.Strapi;
5
5
  }) => {
6
- set(releaseId: Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
7
- cancel(releaseId: Release["id"]): Map<import("@strapi/types/dist/data").ID, string>;
8
- getAll(): Map<import("@strapi/types/dist/data").ID, string>;
6
+ set(releaseId: Release["id"], scheduleDate: Date): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
7
+ cancel(releaseId: Release["id"]): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
8
+ getAll(): Map<import("@strapi/types/dist/data/constants.js").ID, string>;
9
9
  /**
10
10
  * On bootstrap, we can use this function to make sure to sync the scheduled jobs from the database that are not yet released
11
11
  * This is useful in case the server was restarted and the scheduled jobs were lost
12
12
  * This also could be used to sync different Strapi instances in case of a cluster
13
13
  */
14
- syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data").ID, string>>;
14
+ syncFromDatabase(): Promise<Map<import("@strapi/types/dist/data/constants.js").ID, string>>;
15
15
  };
16
16
  export default createSchedulingService;
17
17
  //# sourceMappingURL=scheduling.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,QAAA,MAAM,uBAAuB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBA6BpC,OAAO,CAAC,IAAI,CAAC;;IAa/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../server/src/services/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAI7D,QAAA,MAAM,uBAAuB,GAAI,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;mBAI3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI;sBA+BpC,OAAO,CAAC,IAAI,CAAC;;IAe/B;;;;OAIG;;CAkBN,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -29,7 +29,7 @@ export declare const getEntry: ({ contentType, documentId, locale, populate, sta
29
29
  populate: any;
30
30
  }, { strapi }: {
31
31
  strapi: Core.Strapi;
32
- }) => Promise<import("@strapi/types/dist/modules/documents").AnyDocument | null>;
32
+ }) => Promise<import("@strapi/types/dist/modules/documents/index.js").AnyDocument | null>;
33
33
  export declare const getEntryStatus: (contentType: UID.ContentType, entry: Data.ContentType) => Promise<"draft" | "published" | "modified">;
34
34
  /**
35
35
  * Returns content type UIDs sorted by relation dependency order for publishing.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,UAAU,MAAM;IACd,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,QAAQ,EACrD,MAAM,KAAK,EACX,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,qCAAqC,MAAM,EAC3C,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,gBAAgB,MAAM,EACtB,OAAO,GAAG,EACV,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBA0BpC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,wDAMG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EAC7D,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,+EAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,gDAwBzF,CAAC;AA+CF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,8BAA8B,GACzC,iBAAiB,GAAG,CAAC,WAAW,EAAE,EAClC,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,GAAG,CAAC,WAAW,EAsDjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,UAAU,MAAM;IACd,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,MAAM,QAAQ,EACrD,MAAM,KAAK,EACX,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,QAAQ,CAAC,KAAK,CAEhB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,qCAAqC,MAAM,EAC3C,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBASpC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,gBAAgB,MAAM,EACtB,OAAO,GAAG,EACV,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,qBA0BpC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,wDAMG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EAC7D,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,wFAmBpC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,gDAwBzF,CAAC;AA+CF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,8BAA8B,GACzC,iBAAiB,GAAG,CAAC,WAAW,EAAE,EAClC,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,KAClC,GAAG,CAAC,WAAW,EAsDjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-releases",
3
- "version": "5.50.1",
3
+ "version": "5.51.0",
4
4
  "description": "Strapi plugin for organizing and releasing content",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -52,7 +52,7 @@
52
52
  "build:types:server": "run -T tsc -p server/tsconfig.build.json --emitDeclarationOnly",
53
53
  "build:types:admin": "run -T tsc -p admin/tsconfig.build.json --emitDeclarationOnly",
54
54
  "clean": "run -T rimraf ./dist",
55
- "lint": "run -T eslint .",
55
+ "lint": "run -T eslint . --max-warnings=0",
56
56
  "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
57
57
  "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
58
58
  "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
@@ -64,14 +64,14 @@
64
64
  },
65
65
  "dependencies": {
66
66
  "@reduxjs/toolkit": "1.9.7",
67
- "@strapi/database": "5.50.1",
68
- "@strapi/design-system": "2.2.1",
69
- "@strapi/icons": "2.2.1",
70
- "@strapi/types": "5.50.1",
71
- "@strapi/utils": "5.50.1",
67
+ "@strapi/database": "5.51.0",
68
+ "@strapi/design-system": "2.2.3",
69
+ "@strapi/icons": "2.2.3",
70
+ "@strapi/types": "5.51.0",
71
+ "@strapi/utils": "5.51.0",
72
72
  "date-fns": "2.30.0",
73
73
  "date-fns-tz": "2.0.1",
74
- "formik": "2.4.5",
74
+ "formik": "2.4.9",
75
75
  "lodash": "4.18.1",
76
76
  "qs": "6.15.3",
77
77
  "react-intl": "6.6.2",
@@ -79,13 +79,17 @@
79
79
  "yup": "0.32.9"
80
80
  },
81
81
  "devDependencies": {
82
- "@strapi/admin": "5.50.1",
83
- "@strapi/admin-test-utils": "5.50.1",
84
- "@strapi/content-manager": "5.50.1",
82
+ "@strapi/admin": "5.51.0",
83
+ "@strapi/admin-test-utils": "5.51.0",
84
+ "@strapi/content-manager": "5.51.0",
85
85
  "@testing-library/dom": "10.4.1",
86
+ "@testing-library/jest-dom": "6.9.1",
86
87
  "@testing-library/react": "16.3.2",
87
88
  "@testing-library/user-event": "14.6.1",
89
+ "@types/jest": "29.5.2",
88
90
  "@types/koa": "2.15.2",
91
+ "@types/node": "20.19.41",
92
+ "jest": "29.6.0",
89
93
  "koa": "2.16.4",
90
94
  "msw": "2.13.4",
91
95
  "react": "18.3.1",