@strapi/content-releases 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca → 0.0.0-experimental.d5b46d578a5c055b8dcc66939e1b5d540976fafb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/_chunks/{App-1LckaIGY.js → App-OP70yd5M.js} +210 -224
  2. package/dist/_chunks/App-OP70yd5M.js.map +1 -0
  3. package/dist/_chunks/{App-X01LBg5V.mjs → App-x6Tjj3HN.mjs} +202 -216
  4. package/dist/_chunks/App-x6Tjj3HN.mjs.map +1 -0
  5. package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-3tRbmbY3.mjs} +2 -2
  6. package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
  7. package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-bpIYXOfu.js} +2 -2
  8. package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
  9. package/dist/_chunks/{en-faJDuv3q.js → en-3SGjiVyR.js} +10 -2
  10. package/dist/_chunks/en-3SGjiVyR.js.map +1 -0
  11. package/dist/_chunks/{en-RdapH-9X.mjs → en-bpHsnU0n.mjs} +10 -2
  12. package/dist/_chunks/en-bpHsnU0n.mjs.map +1 -0
  13. package/dist/_chunks/{index-OD9AlD-6.mjs → index-1ejXLtzt.mjs} +273 -103
  14. package/dist/_chunks/index-1ejXLtzt.mjs.map +1 -0
  15. package/dist/_chunks/{index-cYWov2wa.js → index-ydocdaZ0.js} +270 -100
  16. package/dist/_chunks/index-ydocdaZ0.js.map +1 -0
  17. package/dist/admin/index.js +15 -1
  18. package/dist/admin/index.js.map +1 -1
  19. package/dist/admin/index.mjs +16 -2
  20. package/dist/admin/index.mjs.map +1 -1
  21. package/dist/server/index.js +62 -60
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/server/index.mjs +62 -61
  24. package/dist/server/index.mjs.map +1 -1
  25. package/package.json +28 -21
  26. package/dist/_chunks/App-1LckaIGY.js.map +0 -1
  27. package/dist/_chunks/App-X01LBg5V.mjs.map +0 -1
  28. package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
  29. package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
  30. package/dist/_chunks/en-RdapH-9X.mjs.map +0 -1
  31. package/dist/_chunks/en-faJDuv3q.js.map +0 -1
  32. package/dist/_chunks/index-OD9AlD-6.mjs.map +0 -1
  33. package/dist/_chunks/index-cYWov2wa.js.map +0 -1
  34. package/dist/admin/src/components/CMReleasesContainer.d.ts +0 -1
  35. package/dist/admin/src/components/RelativeTime.d.ts +0 -28
  36. package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
  37. package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
  38. package/dist/admin/src/components/ReleaseModal.d.ts +0 -16
  39. package/dist/admin/src/constants.d.ts +0 -58
  40. package/dist/admin/src/index.d.ts +0 -3
  41. package/dist/admin/src/pages/App.d.ts +0 -1
  42. package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
  43. package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
  44. package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
  45. package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
  46. package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
  47. package/dist/admin/src/pluginId.d.ts +0 -1
  48. package/dist/admin/src/services/axios.d.ts +0 -29
  49. package/dist/admin/src/services/release.d.ts +0 -369
  50. package/dist/admin/src/store/hooks.d.ts +0 -7
  51. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  52. package/dist/admin/src/utils/time.d.ts +0 -1
  53. package/dist/server/src/bootstrap.d.ts +0 -5
  54. package/dist/server/src/bootstrap.d.ts.map +0 -1
  55. package/dist/server/src/constants.d.ts +0 -12
  56. package/dist/server/src/constants.d.ts.map +0 -1
  57. package/dist/server/src/content-types/index.d.ts +0 -99
  58. package/dist/server/src/content-types/index.d.ts.map +0 -1
  59. package/dist/server/src/content-types/release/index.d.ts +0 -48
  60. package/dist/server/src/content-types/release/index.d.ts.map +0 -1
  61. package/dist/server/src/content-types/release/schema.d.ts +0 -47
  62. package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
  63. package/dist/server/src/content-types/release-action/index.d.ts +0 -50
  64. package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
  65. package/dist/server/src/content-types/release-action/schema.d.ts +0 -49
  66. package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
  67. package/dist/server/src/controllers/index.d.ts +0 -19
  68. package/dist/server/src/controllers/index.d.ts.map +0 -1
  69. package/dist/server/src/controllers/release-action.d.ts +0 -10
  70. package/dist/server/src/controllers/release-action.d.ts.map +0 -1
  71. package/dist/server/src/controllers/release.d.ts +0 -11
  72. package/dist/server/src/controllers/release.d.ts.map +0 -1
  73. package/dist/server/src/controllers/validation/release-action.d.ts +0 -8
  74. package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
  75. package/dist/server/src/controllers/validation/release.d.ts +0 -2
  76. package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
  77. package/dist/server/src/destroy.d.ts +0 -5
  78. package/dist/server/src/destroy.d.ts.map +0 -1
  79. package/dist/server/src/index.d.ts +0 -2095
  80. package/dist/server/src/index.d.ts.map +0 -1
  81. package/dist/server/src/migrations/index.d.ts +0 -13
  82. package/dist/server/src/migrations/index.d.ts.map +0 -1
  83. package/dist/server/src/register.d.ts +0 -5
  84. package/dist/server/src/register.d.ts.map +0 -1
  85. package/dist/server/src/routes/index.d.ts +0 -35
  86. package/dist/server/src/routes/index.d.ts.map +0 -1
  87. package/dist/server/src/routes/release-action.d.ts +0 -18
  88. package/dist/server/src/routes/release-action.d.ts.map +0 -1
  89. package/dist/server/src/routes/release.d.ts +0 -18
  90. package/dist/server/src/routes/release.d.ts.map +0 -1
  91. package/dist/server/src/services/index.d.ts +0 -1826
  92. package/dist/server/src/services/index.d.ts.map +0 -1
  93. package/dist/server/src/services/release.d.ts +0 -66
  94. package/dist/server/src/services/release.d.ts.map +0 -1
  95. package/dist/server/src/services/scheduling.d.ts +0 -18
  96. package/dist/server/src/services/scheduling.d.ts.map +0 -1
  97. package/dist/server/src/services/validation.d.ts +0 -18
  98. package/dist/server/src/services/validation.d.ts.map +0 -1
  99. package/dist/server/src/utils/index.d.ts +0 -14
  100. package/dist/server/src/utils/index.d.ts.map +0 -1
  101. package/dist/shared/contracts/release-actions.d.ts +0 -131
  102. package/dist/shared/contracts/release-actions.d.ts.map +0 -1
  103. package/dist/shared/contracts/releases.d.ts +0 -166
  104. package/dist/shared/contracts/releases.d.ts.map +0 -1
  105. package/dist/shared/types.d.ts +0 -24
  106. package/dist/shared/types.d.ts.map +0 -1
  107. package/dist/shared/validation-schemas.d.ts +0 -2
  108. package/dist/shared/validation-schemas.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
- import { contentTypes as contentTypes$1, async, setCreatorFields, errors, validateYupSchema, yup as yup$1 } from "@strapi/utils";
1
+ import { contentTypes as contentTypes$1, mapAsync, setCreatorFields, errors, validateYupSchema, yup as yup$1 } from "@strapi/utils";
2
2
  import isEqual from "lodash/isEqual";
3
3
  import { difference, keys } from "lodash";
4
4
  import _ from "lodash/fp";
5
+ import EE from "@strapi/strapi/dist/utils/ee";
5
6
  import { scheduleJob } from "node-schedule";
6
7
  import * as yup from "yup";
7
8
  const RELEASE_MODEL_UID = "plugin::content-releases.release";
@@ -59,10 +60,7 @@ const getService = (name, { strapi: strapi2 } = { strapi: global.strapi }) => {
59
60
  const getPopulatedEntry = async (contentTypeUid, entryId, { strapi: strapi2 } = { strapi: global.strapi }) => {
60
61
  const populateBuilderService = strapi2.plugin("content-manager").service("populate-builder");
61
62
  const populate = await populateBuilderService(contentTypeUid).populateDeep(Infinity).build();
62
- const entry = await strapi2.db.query(contentTypeUid).findOne({
63
- where: { id: entryId },
64
- populate
65
- });
63
+ const entry = await strapi2.entityService.findOne(contentTypeUid, entryId, { populate });
66
64
  return entry;
67
65
  };
68
66
  const getEntryValidStatus = async (contentTypeUid, entry, { strapi: strapi2 } = { strapi: global.strapi }) => {
@@ -100,7 +98,7 @@ async function deleteActionsOnDisableDraftAndPublish({
100
98
  async function deleteActionsOnDeleteContentType({ oldContentTypes, contentTypes: contentTypes2 }) {
101
99
  const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes2)) ?? [];
102
100
  if (deletedContentTypes.length) {
103
- await async.map(deletedContentTypes, async (deletedContentTypeUID) => {
101
+ await mapAsync(deletedContentTypes, async (deletedContentTypeUID) => {
104
102
  return strapi.db?.queryBuilder(RELEASE_ACTION_MODEL_UID).delete().where({ contentType: deletedContentTypeUID }).execute();
105
103
  });
106
104
  }
@@ -119,7 +117,7 @@ async function migrateIsValidAndStatusReleases() {
119
117
  }
120
118
  }
121
119
  });
122
- async.map(releasesWithoutStatus, async (release2) => {
120
+ mapAsync(releasesWithoutStatus, async (release2) => {
123
121
  const actions = release2.actions;
124
122
  const notValidatedActions = actions.filter((action) => action.isEntryValid === null);
125
123
  for (const action of notValidatedActions) {
@@ -150,7 +148,7 @@ async function migrateIsValidAndStatusReleases() {
150
148
  }
151
149
  }
152
150
  });
153
- async.map(publishedReleases, async (release2) => {
151
+ mapAsync(publishedReleases, async (release2) => {
154
152
  return strapi.db.query(RELEASE_MODEL_UID).update({
155
153
  where: {
156
154
  id: release2.id
@@ -167,7 +165,7 @@ async function revalidateChangedContentTypes({ oldContentTypes, contentTypes: co
167
165
  (uid) => oldContentTypes[uid]?.options?.draftAndPublish
168
166
  );
169
167
  const releasesAffected = /* @__PURE__ */ new Set();
170
- async.map(contentTypesWithDraftAndPublish, async (contentTypeUID) => {
168
+ mapAsync(contentTypesWithDraftAndPublish, async (contentTypeUID) => {
171
169
  const oldContentType = oldContentTypes[contentTypeUID];
172
170
  const contentType = contentTypes2[contentTypeUID];
173
171
  if (!isEqual(oldContentType?.attributes, contentType?.attributes)) {
@@ -180,7 +178,7 @@ async function revalidateChangedContentTypes({ oldContentTypes, contentTypes: co
180
178
  release: true
181
179
  }
182
180
  });
183
- await async.map(actions, async (action) => {
181
+ await mapAsync(actions, async (action) => {
184
182
  if (action.entry && action.release) {
185
183
  const populatedEntry = await getPopulatedEntry(contentTypeUID, action.entry.id, {
186
184
  strapi
@@ -203,7 +201,7 @@ async function revalidateChangedContentTypes({ oldContentTypes, contentTypes: co
203
201
  });
204
202
  }
205
203
  }).then(() => {
206
- async.map(releasesAffected, async (releaseId) => {
204
+ mapAsync(releasesAffected, async (releaseId) => {
207
205
  return getService("release", { strapi }).updateReleaseStatus(releaseId);
208
206
  });
209
207
  });
@@ -249,10 +247,11 @@ async function enableContentTypeLocalized({ oldContentTypes, contentTypes: conte
249
247
  }
250
248
  }
251
249
  }
250
+ const { features: features$2 } = require("@strapi/strapi/dist/utils/ee");
252
251
  const register = async ({ strapi: strapi2 }) => {
253
- if (strapi2.ee.features.isEnabled("cms-content-releases")) {
252
+ if (features$2.isEnabled("cms-content-releases")) {
254
253
  await strapi2.admin.services.permission.actionProvider.registerMany(ACTIONS);
255
- strapi2.hook("strapi::content-types.beforeSync").register(disableContentTypeLocalized).register(deleteActionsOnDisableDraftAndPublish);
254
+ strapi2.hook("strapi::content-types.beforeSync").register(deleteActionsOnDisableDraftAndPublish).register(disableContentTypeLocalized);
256
255
  strapi2.hook("strapi::content-types.afterSync").register(deleteActionsOnDeleteContentType).register(enableContentTypeLocalized).register(revalidateChangedContentTypes).register(migrateIsValidAndStatusReleases);
257
256
  }
258
257
  if (strapi2.plugin("graphql")) {
@@ -261,8 +260,9 @@ const register = async ({ strapi: strapi2 }) => {
261
260
  graphqlExtensionService.shadowCRUD(RELEASE_ACTION_MODEL_UID).disable();
262
261
  }
263
262
  };
263
+ const { features: features$1 } = require("@strapi/strapi/dist/utils/ee");
264
264
  const bootstrap = async ({ strapi: strapi2 }) => {
265
- if (strapi2.ee.features.isEnabled("cms-content-releases")) {
265
+ if (features$1.isEnabled("cms-content-releases")) {
266
266
  const contentTypesWithDraftAndPublish = Object.keys(strapi2.contentTypes).filter(
267
267
  (uid) => strapi2.contentTypes[uid]?.options?.draftAndPublish
268
268
  );
@@ -321,7 +321,9 @@ const bootstrap = async ({ strapi: strapi2 }) => {
321
321
  actions: {
322
322
  target_type: model.uid,
323
323
  target_id: {
324
- $in: entriesToDelete.map((entry) => entry.id)
324
+ $in: entriesToDelete.map(
325
+ (entry) => entry.id
326
+ )
325
327
  }
326
328
  }
327
329
  }
@@ -348,9 +350,13 @@ const bootstrap = async ({ strapi: strapi2 }) => {
348
350
  try {
349
351
  const { model, result } = event;
350
352
  if (model.kind === "collectionType" && model.options?.draftAndPublish) {
351
- const isEntryValid = await getEntryValidStatus(model.uid, result, {
352
- strapi: strapi2
353
- });
353
+ const isEntryValid = await getEntryValidStatus(
354
+ model.uid,
355
+ result,
356
+ {
357
+ strapi: strapi2
358
+ }
359
+ );
354
360
  await strapi2.db.query(RELEASE_ACTION_MODEL_UID).update({
355
361
  where: {
356
362
  target_type: model.uid,
@@ -619,7 +625,7 @@ const createReleaseService = ({ strapi: strapi2 }) => {
619
625
  validateUniqueNameForPendingRelease(releaseWithCreatorFields.name),
620
626
  validateScheduledAtIsLaterThanNow(releaseWithCreatorFields.scheduledAt)
621
627
  ]);
622
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).create({
628
+ const release2 = await strapi2.entityService.create(RELEASE_MODEL_UID, {
623
629
  data: {
624
630
  ...releaseWithCreatorFields,
625
631
  status: "empty"
@@ -633,19 +639,17 @@ const createReleaseService = ({ strapi: strapi2 }) => {
633
639
  return release2;
634
640
  },
635
641
  async findOne(id, query = {}) {
636
- const dbQuery = strapi2.get("query-params").transform(RELEASE_MODEL_UID, query);
637
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({
638
- ...dbQuery,
639
- where: { id }
642
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, id, {
643
+ ...query
640
644
  });
641
645
  return release2;
642
646
  },
643
647
  findPage(query) {
644
- const dbQuery = strapi2.get("query-params").transform(RELEASE_MODEL_UID, query ?? {});
645
- return strapi2.db.query(RELEASE_MODEL_UID).findPage({
646
- ...dbQuery,
648
+ return strapi2.entityService.findPage(RELEASE_MODEL_UID, {
649
+ ...query,
647
650
  populate: {
648
651
  actions: {
652
+ // @ts-expect-error Ignore missing properties
649
653
  count: true
650
654
  }
651
655
  }
@@ -737,15 +741,19 @@ const createReleaseService = ({ strapi: strapi2 }) => {
737
741
  validateUniqueNameForPendingRelease(releaseWithCreatorFields.name, id),
738
742
  validateScheduledAtIsLaterThanNow(releaseWithCreatorFields.scheduledAt)
739
743
  ]);
740
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({ where: { id } });
744
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, id);
741
745
  if (!release2) {
742
746
  throw new errors.NotFoundError(`No release found for id ${id}`);
743
747
  }
744
748
  if (release2.releasedAt) {
745
749
  throw new errors.ValidationError("Release already published");
746
750
  }
747
- const updatedRelease = await strapi2.db.query(RELEASE_MODEL_UID).update({
748
- where: { id },
751
+ const updatedRelease = await strapi2.entityService.update(RELEASE_MODEL_UID, id, {
752
+ /*
753
+ * The type returned from the entity service: Partial<Input<"plugin::content-releases.release">>
754
+ * is not compatible with the type we are passing here: UpdateRelease.Request['body']
755
+ */
756
+ // @ts-expect-error see above
749
757
  data: releaseWithCreatorFields
750
758
  });
751
759
  const schedulingService = getService("scheduling", { strapi: strapi2 });
@@ -766,7 +774,7 @@ const createReleaseService = ({ strapi: strapi2 }) => {
766
774
  validateEntryContentType(action.entry.contentType),
767
775
  validateUniqueEntry(releaseId, action)
768
776
  ]);
769
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({ where: { id: releaseId } });
777
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, releaseId);
770
778
  if (!release2) {
771
779
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
772
780
  }
@@ -776,7 +784,7 @@ const createReleaseService = ({ strapi: strapi2 }) => {
776
784
  const { entry, type } = action;
777
785
  const populatedEntry = await getPopulatedEntry(entry.contentType, entry.id, { strapi: strapi2 });
778
786
  const isEntryValid = await getEntryValidStatus(entry.contentType, populatedEntry, { strapi: strapi2 });
779
- const releaseAction2 = await strapi2.db.query(RELEASE_ACTION_MODEL_UID).create({
787
+ const releaseAction2 = await strapi2.entityService.create(RELEASE_ACTION_MODEL_UID, {
780
788
  data: {
781
789
  type,
782
790
  contentType: entry.contentType,
@@ -789,35 +797,32 @@ const createReleaseService = ({ strapi: strapi2 }) => {
789
797
  },
790
798
  release: releaseId
791
799
  },
792
- populate: { release: { select: ["id"] }, entry: { select: ["id"] } }
800
+ populate: { release: { fields: ["id"] }, entry: { fields: ["id"] } }
793
801
  });
794
802
  this.updateReleaseStatus(releaseId);
795
803
  return releaseAction2;
796
804
  },
797
805
  async findActions(releaseId, query) {
798
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({
799
- where: { id: releaseId },
800
- select: ["id"]
806
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, releaseId, {
807
+ fields: ["id"]
801
808
  });
802
809
  if (!release2) {
803
810
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
804
811
  }
805
- const dbQuery = strapi2.get("query-params").transform(RELEASE_ACTION_MODEL_UID, query ?? {});
806
- return strapi2.db.query(RELEASE_ACTION_MODEL_UID).findPage({
807
- ...dbQuery,
812
+ return strapi2.entityService.findPage(RELEASE_ACTION_MODEL_UID, {
813
+ ...query,
808
814
  populate: {
809
815
  entry: {
810
816
  populate: "*"
811
817
  }
812
818
  },
813
- where: {
819
+ filters: {
814
820
  release: releaseId
815
821
  }
816
822
  });
817
823
  },
818
824
  async countActions(query) {
819
- const dbQuery = strapi2.get("query-params").transform(RELEASE_ACTION_MODEL_UID, query ?? {});
820
- return strapi2.db.query(RELEASE_ACTION_MODEL_UID).count(dbQuery);
825
+ return strapi2.entityService.count(RELEASE_ACTION_MODEL_UID, query);
821
826
  },
822
827
  async groupActions(actions, groupBy) {
823
828
  const contentTypeUids = actions.reduce((acc, action) => {
@@ -898,11 +903,10 @@ const createReleaseService = ({ strapi: strapi2 }) => {
898
903
  return componentsMap;
899
904
  },
900
905
  async delete(releaseId) {
901
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({
902
- where: { id: releaseId },
906
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, releaseId, {
903
907
  populate: {
904
908
  actions: {
905
- select: ["id"]
909
+ fields: ["id"]
906
910
  }
907
911
  }
908
912
  });
@@ -920,11 +924,7 @@ const createReleaseService = ({ strapi: strapi2 }) => {
920
924
  }
921
925
  }
922
926
  });
923
- await strapi2.db.query(RELEASE_MODEL_UID).delete({
924
- where: {
925
- id: releaseId
926
- }
927
- });
927
+ await strapi2.entityService.delete(RELEASE_MODEL_UID, releaseId);
928
928
  });
929
929
  if (release2.scheduledAt) {
930
930
  const schedulingService = getService("scheduling", { strapi: strapi2 });
@@ -995,7 +995,7 @@ const createReleaseService = ({ strapi: strapi2 }) => {
995
995
  };
996
996
  }
997
997
  });
998
- if (error instanceof Error) {
998
+ if (error) {
999
999
  throw error;
1000
1000
  }
1001
1001
  return release2;
@@ -1093,11 +1093,8 @@ class AlreadyOnReleaseError extends errors.ApplicationError {
1093
1093
  }
1094
1094
  const createReleaseValidationService = ({ strapi: strapi2 }) => ({
1095
1095
  async validateUniqueEntry(releaseId, releaseActionArgs) {
1096
- const release2 = await strapi2.db.query(RELEASE_MODEL_UID).findOne({
1097
- where: {
1098
- id: releaseId
1099
- },
1100
- populate: { actions: { populate: { entry: { select: ["id"] } } } }
1096
+ const release2 = await strapi2.entityService.findOne(RELEASE_MODEL_UID, releaseId, {
1097
+ populate: { actions: { populate: { entry: { fields: ["id"] } } } }
1101
1098
  });
1102
1099
  if (!release2) {
1103
1100
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
@@ -1123,7 +1120,10 @@ const createReleaseValidationService = ({ strapi: strapi2 }) => ({
1123
1120
  }
1124
1121
  },
1125
1122
  async validatePendingReleasesLimit() {
1126
- const maximumPendingReleases = strapi2.ee.features.get("cms-content-releases")?.options?.maximumReleases || 3;
1123
+ const maximumPendingReleases = (
1124
+ // @ts-expect-error - options is not typed into features
1125
+ EE.features.get("cms-content-releases")?.options?.maximumReleases || 3
1126
+ );
1127
1127
  const [, pendingReleasesCount] = await strapi2.db.query(RELEASE_MODEL_UID).findWithCount({
1128
1128
  filters: {
1129
1129
  releasedAt: {
@@ -1136,8 +1136,8 @@ const createReleaseValidationService = ({ strapi: strapi2 }) => ({
1136
1136
  }
1137
1137
  },
1138
1138
  async validateUniqueNameForPendingRelease(name, id) {
1139
- const pendingReleases = await strapi2.db.query(RELEASE_MODEL_UID).findMany({
1140
- where: {
1139
+ const pendingReleases = await strapi2.entityService.findMany(RELEASE_MODEL_UID, {
1140
+ filters: {
1141
1141
  releasedAt: {
1142
1142
  $null: true
1143
1143
  },
@@ -1264,7 +1264,7 @@ const releaseController = {
1264
1264
  }
1265
1265
  };
1266
1266
  });
1267
- const pendingReleasesCount = await strapi.db.query(RELEASE_MODEL_UID).count({
1267
+ const pendingReleasesCount = await strapi.query(RELEASE_MODEL_UID).count({
1268
1268
  where: {
1269
1269
  releasedAt: null
1270
1270
  }
@@ -1442,7 +1442,7 @@ const releaseActionController = {
1442
1442
  acc[action.contentType] = contentTypePermissionsManager.sanitizeOutput;
1443
1443
  return acc;
1444
1444
  }, {});
1445
- const sanitizedResults = await async.map(results, async (action) => ({
1445
+ const sanitizedResults = await mapAsync(results, async (action) => ({
1446
1446
  ...action,
1447
1447
  entry: await contentTypeOutputSanitizers[action.contentType](action.entry)
1448
1448
  }));
@@ -1674,8 +1674,9 @@ const routes = {
1674
1674
  release,
1675
1675
  "release-action": releaseAction
1676
1676
  };
1677
+ const { features } = require("@strapi/strapi/dist/utils/ee");
1677
1678
  const getPlugin = () => {
1678
- if (strapi.ee.features.isEnabled("cms-content-releases")) {
1679
+ if (features.isEnabled("cms-content-releases")) {
1679
1680
  return {
1680
1681
  register,
1681
1682
  bootstrap,