@strapi/content-releases 5.0.0-rc.0 → 5.0.0-rc.10

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 (67) hide show
  1. package/dist/_chunks/{App-6gbM0io-.mjs → App-DMILern_.mjs} +152 -100
  2. package/dist/_chunks/App-DMILern_.mjs.map +1 -0
  3. package/dist/_chunks/{App-zzUitryC.js → App-fAgiijnc.js} +148 -96
  4. package/dist/_chunks/App-fAgiijnc.js.map +1 -0
  5. package/dist/_chunks/{SettingsPage-CTOl3Qtw.js → ReleasesSettingsPage-YVZJH-oN.js} +35 -14
  6. package/dist/_chunks/ReleasesSettingsPage-YVZJH-oN.js.map +1 -0
  7. package/dist/_chunks/{SettingsPage-CuSH193e.mjs → ReleasesSettingsPage-dwoRuXB-.mjs} +35 -14
  8. package/dist/_chunks/ReleasesSettingsPage-dwoRuXB-.mjs.map +1 -0
  9. package/dist/_chunks/{en-1_1re1mc.js → en-CmYoEnA7.js} +3 -1
  10. package/dist/_chunks/en-CmYoEnA7.js.map +1 -0
  11. package/dist/_chunks/{en-C3sq5KNP.mjs → en-D0yVZFqf.mjs} +3 -1
  12. package/dist/_chunks/en-D0yVZFqf.mjs.map +1 -0
  13. package/dist/_chunks/{index-BxRiXenX.js → index--_NWfuDG.js} +251 -11
  14. package/dist/_chunks/index--_NWfuDG.js.map +1 -0
  15. package/dist/_chunks/{index-CuchqQ4_.mjs → index-CYsQToWs.mjs} +265 -25
  16. package/dist/_chunks/index-CYsQToWs.mjs.map +1 -0
  17. package/dist/_chunks/schemas-63pFihNF.mjs +44 -0
  18. package/dist/_chunks/schemas-63pFihNF.mjs.map +1 -0
  19. package/dist/_chunks/{validation-schemas-bib1fBc7.js → schemas-z5zp-_Gd.js} +21 -6
  20. package/dist/_chunks/schemas-z5zp-_Gd.js.map +1 -0
  21. package/dist/admin/index.js +1 -1
  22. package/dist/admin/index.mjs +1 -1
  23. package/dist/admin/src/components/ReleaseListCell.d.ts +28 -0
  24. package/dist/admin/src/constants.d.ts +18 -0
  25. package/dist/admin/src/modules/hooks.d.ts +7 -0
  26. package/dist/admin/src/pages/ReleasesSettingsPage.d.ts +1 -0
  27. package/dist/admin/src/services/release.d.ts +6 -4
  28. package/dist/admin/src/validation/schemas.d.ts +6 -0
  29. package/dist/server/index.js +83 -94
  30. package/dist/server/index.js.map +1 -1
  31. package/dist/server/index.mjs +83 -94
  32. package/dist/server/index.mjs.map +1 -1
  33. package/dist/server/src/controllers/index.d.ts +2 -0
  34. package/dist/server/src/controllers/index.d.ts.map +1 -1
  35. package/dist/server/src/controllers/release-action.d.ts +1 -0
  36. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  37. package/dist/server/src/controllers/release.d.ts +1 -0
  38. package/dist/server/src/controllers/release.d.ts.map +1 -1
  39. package/dist/server/src/controllers/validation/release.d.ts +1 -0
  40. package/dist/server/src/controllers/validation/release.d.ts.map +1 -1
  41. package/dist/server/src/controllers/validation/settings.d.ts +1 -0
  42. package/dist/server/src/controllers/validation/settings.d.ts.map +1 -1
  43. package/dist/server/src/index.d.ts +2 -0
  44. package/dist/server/src/index.d.ts.map +1 -1
  45. package/dist/server/src/routes/release-action.d.ts.map +1 -1
  46. package/dist/server/src/routes/release.d.ts.map +1 -1
  47. package/dist/shared/contracts/release-actions.d.ts +3 -5
  48. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  49. package/dist/shared/contracts/releases.d.ts +3 -2
  50. package/dist/shared/contracts/releases.d.ts.map +1 -1
  51. package/dist/shared/contracts/settings.d.ts +1 -1
  52. package/dist/shared/contracts/settings.d.ts.map +1 -1
  53. package/package.json +10 -10
  54. package/dist/_chunks/App-6gbM0io-.mjs.map +0 -1
  55. package/dist/_chunks/App-zzUitryC.js.map +0 -1
  56. package/dist/_chunks/SettingsPage-CTOl3Qtw.js.map +0 -1
  57. package/dist/_chunks/SettingsPage-CuSH193e.mjs.map +0 -1
  58. package/dist/_chunks/en-1_1re1mc.js.map +0 -1
  59. package/dist/_chunks/en-C3sq5KNP.mjs.map +0 -1
  60. package/dist/_chunks/index-BxRiXenX.js.map +0 -1
  61. package/dist/_chunks/index-CuchqQ4_.mjs.map +0 -1
  62. package/dist/_chunks/validation-schemas-C7P2rhPu.mjs +0 -29
  63. package/dist/_chunks/validation-schemas-C7P2rhPu.mjs.map +0 -1
  64. package/dist/_chunks/validation-schemas-bib1fBc7.js.map +0 -1
  65. package/dist/admin/src/pages/SettingsPage.d.ts +0 -1
  66. package/dist/shared/validation-schemas.d.ts +0 -3
  67. package/dist/shared/validation-schemas.d.ts.map +0 -1
@@ -1112,11 +1112,11 @@ const createReleaseValidationService = ({ strapi: strapi2 }) => ({
1112
1112
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
1113
1113
  }
1114
1114
  const isEntryInRelease = release2.actions.some(
1115
- (action) => Number(action.entryDocumentId) === Number(releaseActionArgs.entryDocumentId) && action.contentType === releaseActionArgs.contentType && action.locale === releaseActionArgs.locale
1115
+ (action) => action.entryDocumentId === releaseActionArgs.entryDocumentId && action.contentType === releaseActionArgs.contentType && (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true)
1116
1116
  );
1117
1117
  if (isEntryInRelease) {
1118
1118
  throw new AlreadyOnReleaseError(
1119
- `Entry with documentId ${releaseActionArgs.entryDocumentId} ${releaseActionArgs.locale ? `(${releaseActionArgs.locale})` : ""} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`
1119
+ `Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ""} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`
1120
1120
  );
1121
1121
  }
1122
1122
  },
@@ -1249,29 +1249,15 @@ const services = {
1249
1249
  scheduling: createSchedulingService,
1250
1250
  settings: createSettingsService
1251
1251
  };
1252
- const RELEASE_SCHEMA = yup.object().shape({
1253
- name: yup.string().trim().required(),
1254
- scheduledAt: yup.string().nullable(),
1255
- isScheduled: yup.boolean().optional(),
1256
- time: yup.string().when("isScheduled", {
1257
- is: true,
1258
- then: yup.string().trim().required(),
1259
- otherwise: yup.string().nullable()
1260
- }),
1261
- timezone: yup.string().when("isScheduled", {
1262
- is: true,
1263
- then: yup.string().required().nullable(),
1264
- otherwise: yup.string().nullable()
1265
- }),
1266
- date: yup.string().when("isScheduled", {
1267
- is: true,
1268
- then: yup.string().required().nullable(),
1269
- otherwise: yup.string().nullable()
1252
+ const RELEASE_SCHEMA = yup$1.object().shape({
1253
+ name: yup$1.string().trim().required(),
1254
+ scheduledAt: yup$1.string().nullable(),
1255
+ timezone: yup$1.string().when("scheduledAt", {
1256
+ is: (value) => value !== null && value !== void 0,
1257
+ then: yup$1.string().required(),
1258
+ otherwise: yup$1.string().nullable()
1270
1259
  })
1271
1260
  }).required().noUnknown();
1272
- const SETTINGS_SCHEMA = yup.object().shape({
1273
- defaultTimezone: yup.string().nullable().default(null)
1274
- }).required().noUnknown();
1275
1261
  const FIND_BY_DOCUMENT_ATTACHED_PARAMS_SCHEMA = yup$1.object().shape({
1276
1262
  contentType: yup$1.string().required(),
1277
1263
  entryDocumentId: yup$1.string().nullable(),
@@ -1399,43 +1385,50 @@ const releaseController = {
1399
1385
  };
1400
1386
  ctx.body = { data };
1401
1387
  },
1402
- /* @TODO: Migrate to new api
1403
- async mapEntriesToReleases(ctx: Koa.Context) {
1404
- const { contentTypeUid, entriesIds } = ctx.query;
1405
-
1406
- if (!contentTypeUid || !entriesIds) {
1407
- throw new errors.ValidationError('Missing required query parameters');
1388
+ async mapEntriesToReleases(ctx) {
1389
+ const { contentTypeUid, documentIds, locale } = ctx.query;
1390
+ if (!contentTypeUid || !documentIds) {
1391
+ throw new errors.ValidationError("Missing required query parameters");
1392
+ }
1393
+ const releaseService = getService("release", { strapi });
1394
+ const releasesWithActions = await releaseService.findMany({
1395
+ where: {
1396
+ releasedAt: null,
1397
+ actions: {
1398
+ contentType: contentTypeUid,
1399
+ entryDocumentId: {
1400
+ $in: documentIds
1401
+ },
1402
+ locale
1403
+ }
1404
+ },
1405
+ populate: {
1406
+ actions: true
1408
1407
  }
1409
-
1410
- const releaseService = getService('release', { strapi });
1411
-
1412
- const releasesWithActions = await releaseService.findMany(
1413
- contentTypeUid,
1414
- entriesIds
1415
- );
1416
-
1417
- const mappedEntriesInReleases = releasesWithActions.reduce(
1418
- // TODO: Fix for v5 removed mappedEntriedToRelease
1419
- (acc: MapEntriesToReleases.Response['data'], release: Release) => {
1420
- release.actions.forEach((action) => {
1421
- if (!acc[action.entry.id]) {
1422
- acc[action.entry.id] = [{ id: release.id, name: release.name }];
1423
- } else {
1424
- acc[action.entry.id].push({ id: release.id, name: release.name });
1425
- }
1426
- });
1427
-
1428
- return acc;
1429
- },
1430
- // TODO: Fix for v5 removed mappedEntriedToRelease
1431
- {} as MapEntriesToReleases.Response['data']
1432
- );
1433
-
1434
- ctx.body = {
1435
- data: mappedEntriesInReleases,
1436
- };
1437
- },
1438
- */
1408
+ });
1409
+ const mappedEntriesInReleases = releasesWithActions.reduce(
1410
+ (acc, release2) => {
1411
+ release2.actions.forEach((action) => {
1412
+ if (action.contentType !== contentTypeUid) {
1413
+ return;
1414
+ }
1415
+ if (locale && action.locale !== locale) {
1416
+ return;
1417
+ }
1418
+ if (!acc[action.entryDocumentId]) {
1419
+ acc[action.entryDocumentId] = [{ id: release2.id, name: release2.name }];
1420
+ } else {
1421
+ acc[action.entryDocumentId].push({ id: release2.id, name: release2.name });
1422
+ }
1423
+ });
1424
+ return acc;
1425
+ },
1426
+ {}
1427
+ );
1428
+ ctx.body = {
1429
+ data: mappedEntriesInReleases
1430
+ };
1431
+ },
1439
1432
  async create(ctx) {
1440
1433
  const user = ctx.state.user;
1441
1434
  const releaseArgs = ctx.request.body;
@@ -1528,22 +1521,20 @@ const releaseActionController = {
1528
1521
  data: releaseAction2
1529
1522
  });
1530
1523
  },
1531
- /*
1532
- async createMany(ctx: Koa.Context) {
1533
- const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;
1534
- const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];
1524
+ async createMany(ctx) {
1525
+ const releaseId = ctx.params.releaseId;
1526
+ const releaseActionsArgs = ctx.request.body;
1535
1527
  await Promise.all(
1536
1528
  releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))
1537
1529
  );
1538
- const releaseActionService = getService('release-action', { strapi });
1530
+ const releaseActionService = getService("release-action", { strapi });
1539
1531
  const releaseActions = await strapi.db.transaction(async () => {
1540
- const releaseActions = await Promise.all(
1532
+ const releaseActions2 = await Promise.all(
1541
1533
  releaseActionsArgs.map(async (releaseActionArgs) => {
1542
1534
  try {
1543
1535
  const action = await releaseActionService.create(releaseId, releaseActionArgs);
1544
1536
  return action;
1545
1537
  } catch (error) {
1546
- // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it
1547
1538
  if (error instanceof AlreadyOnReleaseError) {
1548
1539
  return null;
1549
1540
  }
@@ -1551,18 +1542,17 @@ const releaseActionController = {
1551
1542
  }
1552
1543
  })
1553
1544
  );
1554
- return releaseActions;
1545
+ return releaseActions2;
1555
1546
  });
1556
1547
  const newReleaseActions = releaseActions.filter((action) => action !== null);
1557
1548
  ctx.created({
1558
1549
  data: newReleaseActions,
1559
1550
  meta: {
1560
1551
  entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,
1561
- totalEntries: releaseActions.length,
1562
- },
1552
+ totalEntries: releaseActions.length
1553
+ }
1563
1554
  });
1564
1555
  },
1565
- */
1566
1556
  async findMany(ctx) {
1567
1557
  const releaseId = ctx.params.releaseId;
1568
1558
  const permissionsManager = strapi.service("admin::permission").createPermissionsManager({
@@ -1635,6 +1625,9 @@ const releaseActionController = {
1635
1625
  };
1636
1626
  }
1637
1627
  };
1628
+ const SETTINGS_SCHEMA = yup.object().shape({
1629
+ defaultTimezone: yup.string().nullable().default(null)
1630
+ }).required().noUnknown();
1638
1631
  const validateSettings = validateYupSchema(SETTINGS_SCHEMA);
1639
1632
  const settingsController = {
1640
1633
  async find(ctx) {
@@ -1658,24 +1651,22 @@ const controllers = {
1658
1651
  const release = {
1659
1652
  type: "admin",
1660
1653
  routes: [
1661
- /*
1662
1654
  {
1663
- method: 'GET',
1664
- path: '/mapEntriesToReleases',
1665
- handler: 'release.mapEntriesToReleases',
1655
+ method: "GET",
1656
+ path: "/mapEntriesToReleases",
1657
+ handler: "release.mapEntriesToReleases",
1666
1658
  config: {
1667
1659
  policies: [
1668
- 'admin::isAuthenticatedAdmin',
1660
+ "admin::isAuthenticatedAdmin",
1669
1661
  {
1670
- name: 'admin::hasPermissions',
1662
+ name: "admin::hasPermissions",
1671
1663
  config: {
1672
- actions: ['plugin::content-releases.read'],
1673
- },
1674
- },
1675
- ],
1676
- },
1664
+ actions: ["plugin::content-releases.read"]
1665
+ }
1666
+ }
1667
+ ]
1668
+ }
1677
1669
  },
1678
- */
1679
1670
  {
1680
1671
  method: "GET",
1681
1672
  path: "/getByDocumentAttached",
@@ -1809,24 +1800,22 @@ const releaseAction = {
1809
1800
  ]
1810
1801
  }
1811
1802
  },
1812
- /*
1813
1803
  {
1814
- method: 'POST',
1815
- path: '/:releaseId/actions/bulk',
1816
- handler: 'release-action.createMany',
1804
+ method: "POST",
1805
+ path: "/:releaseId/actions/bulk",
1806
+ handler: "release-action.createMany",
1817
1807
  config: {
1818
1808
  policies: [
1819
- 'admin::isAuthenticatedAdmin',
1809
+ "admin::isAuthenticatedAdmin",
1820
1810
  {
1821
- name: 'admin::hasPermissions',
1811
+ name: "admin::hasPermissions",
1822
1812
  config: {
1823
- actions: ['plugin::content-releases.create-action'],
1824
- },
1825
- },
1826
- ],
1827
- },
1813
+ actions: ["plugin::content-releases.create-action"]
1814
+ }
1815
+ }
1816
+ ]
1817
+ }
1828
1818
  },
1829
- */
1830
1819
  {
1831
1820
  method: "GET",
1832
1821
  path: "/:releaseId/actions",