@strapi/content-releases 5.0.0-rc.2 → 5.0.0-rc.20

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 (60) hide show
  1. package/dist/_chunks/{App-CKoteEu-.js → App-BFo3ibui.js} +156 -101
  2. package/dist/_chunks/App-BFo3ibui.js.map +1 -0
  3. package/dist/_chunks/{App-CwBi9wFK.mjs → App-JwN_xBnA.mjs} +161 -106
  4. package/dist/_chunks/App-JwN_xBnA.mjs.map +1 -0
  5. package/dist/_chunks/{ReleasesSettingsPage-U9Ud3HzH.js → ReleasesSettingsPage-BanjZwEc.js} +4 -4
  6. package/dist/_chunks/ReleasesSettingsPage-BanjZwEc.js.map +1 -0
  7. package/dist/_chunks/{ReleasesSettingsPage-Be1qEgcA.mjs → ReleasesSettingsPage-CNMXGcZC.mjs} +4 -4
  8. package/dist/_chunks/ReleasesSettingsPage-CNMXGcZC.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-VB3t7pBK.mjs → index-C_e6DQb0.mjs} +254 -11
  14. package/dist/_chunks/index-C_e6DQb0.mjs.map +1 -0
  15. package/dist/_chunks/{index-JLkDg3pp.js → index-Em3KctMx.js} +251 -8
  16. package/dist/_chunks/index-Em3KctMx.js.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/{schemas-3o-6hwUE.js → schemas-z5zp-_Gd.js} +20 -18
  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/services/release.d.ts +6 -4
  25. package/dist/admin/src/validation/schemas.d.ts +4 -0
  26. package/dist/server/index.js +84 -76
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/index.mjs +84 -76
  29. package/dist/server/index.mjs.map +1 -1
  30. package/dist/server/src/controllers/index.d.ts +2 -0
  31. package/dist/server/src/controllers/index.d.ts.map +1 -1
  32. package/dist/server/src/controllers/release-action.d.ts +1 -0
  33. package/dist/server/src/controllers/release-action.d.ts.map +1 -1
  34. package/dist/server/src/controllers/release.d.ts +1 -0
  35. package/dist/server/src/controllers/release.d.ts.map +1 -1
  36. package/dist/server/src/index.d.ts +4 -0
  37. package/dist/server/src/index.d.ts.map +1 -1
  38. package/dist/server/src/routes/release-action.d.ts.map +1 -1
  39. package/dist/server/src/routes/release.d.ts.map +1 -1
  40. package/dist/server/src/services/index.d.ts +2 -0
  41. package/dist/server/src/services/index.d.ts.map +1 -1
  42. package/dist/server/src/services/release-action.d.ts +3 -1
  43. package/dist/server/src/services/release-action.d.ts.map +1 -1
  44. package/dist/shared/contracts/release-actions.d.ts +3 -5
  45. package/dist/shared/contracts/release-actions.d.ts.map +1 -1
  46. package/dist/shared/contracts/releases.d.ts +3 -2
  47. package/dist/shared/contracts/releases.d.ts.map +1 -1
  48. package/package.json +12 -11
  49. package/dist/_chunks/App-CKoteEu-.js.map +0 -1
  50. package/dist/_chunks/App-CwBi9wFK.mjs.map +0 -1
  51. package/dist/_chunks/ReleasesSettingsPage-Be1qEgcA.mjs.map +0 -1
  52. package/dist/_chunks/ReleasesSettingsPage-U9Ud3HzH.js.map +0 -1
  53. package/dist/_chunks/en-1_1re1mc.js.map +0 -1
  54. package/dist/_chunks/en-C3sq5KNP.mjs.map +0 -1
  55. package/dist/_chunks/index-JLkDg3pp.js.map +0 -1
  56. package/dist/_chunks/index-VB3t7pBK.mjs.map +0 -1
  57. package/dist/_chunks/schemas-3o-6hwUE.js.map +0 -1
  58. package/dist/_chunks/schemas-CBVqXur2.mjs +0 -42
  59. package/dist/_chunks/schemas-CBVqXur2.mjs.map +0 -1
  60. package/strapi-server.js +0 -3
@@ -906,7 +906,7 @@ const createReleaseActionService = ({ strapi: strapi2 }) => {
906
906
  return contentTypesData;
907
907
  };
908
908
  return {
909
- async create(releaseId, action) {
909
+ async create(releaseId, action, { disableUpdateReleaseStatus = false } = {}) {
910
910
  const { validateEntryData, validateUniqueEntry } = getService("release-validation", {
911
911
  strapi: strapi2
912
912
  });
@@ -939,7 +939,9 @@ const createReleaseActionService = ({ strapi: strapi2 }) => {
939
939
  },
940
940
  populate: { release: { select: ["id"] } }
941
941
  });
942
- getService("release", { strapi: strapi2 }).updateReleaseStatus(release2.id);
942
+ if (!disableUpdateReleaseStatus) {
943
+ getService("release", { strapi: strapi2 }).updateReleaseStatus(release2.id);
944
+ }
943
945
  return releaseAction2;
944
946
  },
945
947
  async findPage(releaseId, query) {
@@ -1112,11 +1114,11 @@ const createReleaseValidationService = ({ strapi: strapi2 }) => ({
1112
1114
  throw new errors.NotFoundError(`No release found for id ${releaseId}`);
1113
1115
  }
1114
1116
  const isEntryInRelease = release2.actions.some(
1115
- (action) => Number(action.entryDocumentId) === Number(releaseActionArgs.entryDocumentId) && action.contentType === releaseActionArgs.contentType && action.locale === releaseActionArgs.locale
1117
+ (action) => action.entryDocumentId === releaseActionArgs.entryDocumentId && action.contentType === releaseActionArgs.contentType && (releaseActionArgs.locale ? action.locale === releaseActionArgs.locale : true)
1116
1118
  );
1117
1119
  if (isEntryInRelease) {
1118
1120
  throw new AlreadyOnReleaseError(
1119
- `Entry with documentId ${releaseActionArgs.entryDocumentId} ${releaseActionArgs.locale ? `(${releaseActionArgs.locale})` : ""} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`
1121
+ `Entry with documentId ${releaseActionArgs.entryDocumentId}${releaseActionArgs.locale ? `( ${releaseActionArgs.locale})` : ""} and contentType ${releaseActionArgs.contentType} already exists in release with id ${releaseId}`
1120
1122
  );
1121
1123
  }
1122
1124
  },
@@ -1385,43 +1387,50 @@ const releaseController = {
1385
1387
  };
1386
1388
  ctx.body = { data };
1387
1389
  },
1388
- /* @TODO: Migrate to new api
1389
- async mapEntriesToReleases(ctx: Koa.Context) {
1390
- const { contentTypeUid, entriesIds } = ctx.query;
1391
-
1392
- if (!contentTypeUid || !entriesIds) {
1393
- throw new errors.ValidationError('Missing required query parameters');
1390
+ async mapEntriesToReleases(ctx) {
1391
+ const { contentTypeUid, documentIds, locale } = ctx.query;
1392
+ if (!contentTypeUid || !documentIds) {
1393
+ throw new errors.ValidationError("Missing required query parameters");
1394
+ }
1395
+ const releaseService = getService("release", { strapi });
1396
+ const releasesWithActions = await releaseService.findMany({
1397
+ where: {
1398
+ releasedAt: null,
1399
+ actions: {
1400
+ contentType: contentTypeUid,
1401
+ entryDocumentId: {
1402
+ $in: documentIds
1403
+ },
1404
+ locale
1405
+ }
1406
+ },
1407
+ populate: {
1408
+ actions: true
1394
1409
  }
1395
-
1396
- const releaseService = getService('release', { strapi });
1397
-
1398
- const releasesWithActions = await releaseService.findMany(
1399
- contentTypeUid,
1400
- entriesIds
1401
- );
1402
-
1403
- const mappedEntriesInReleases = releasesWithActions.reduce(
1404
- // TODO: Fix for v5 removed mappedEntriedToRelease
1405
- (acc: MapEntriesToReleases.Response['data'], release: Release) => {
1406
- release.actions.forEach((action) => {
1407
- if (!acc[action.entry.id]) {
1408
- acc[action.entry.id] = [{ id: release.id, name: release.name }];
1409
- } else {
1410
- acc[action.entry.id].push({ id: release.id, name: release.name });
1411
- }
1412
- });
1413
-
1414
- return acc;
1415
- },
1416
- // TODO: Fix for v5 removed mappedEntriedToRelease
1417
- {} as MapEntriesToReleases.Response['data']
1418
- );
1419
-
1420
- ctx.body = {
1421
- data: mappedEntriesInReleases,
1422
- };
1423
- },
1424
- */
1410
+ });
1411
+ const mappedEntriesInReleases = releasesWithActions.reduce(
1412
+ (acc, release2) => {
1413
+ release2.actions.forEach((action) => {
1414
+ if (action.contentType !== contentTypeUid) {
1415
+ return;
1416
+ }
1417
+ if (locale && action.locale !== locale) {
1418
+ return;
1419
+ }
1420
+ if (!acc[action.entryDocumentId]) {
1421
+ acc[action.entryDocumentId] = [{ id: release2.id, name: release2.name }];
1422
+ } else {
1423
+ acc[action.entryDocumentId].push({ id: release2.id, name: release2.name });
1424
+ }
1425
+ });
1426
+ return acc;
1427
+ },
1428
+ {}
1429
+ );
1430
+ ctx.body = {
1431
+ data: mappedEntriesInReleases
1432
+ };
1433
+ },
1425
1434
  async create(ctx) {
1426
1435
  const user = ctx.state.user;
1427
1436
  const releaseArgs = ctx.request.body;
@@ -1514,22 +1523,23 @@ const releaseActionController = {
1514
1523
  data: releaseAction2
1515
1524
  });
1516
1525
  },
1517
- /*
1518
- async createMany(ctx: Koa.Context) {
1519
- const releaseId: CreateManyReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId;
1520
- const releaseActionsArgs = ctx.request.body as CreateManyReleaseActions.Request['body'];
1526
+ async createMany(ctx) {
1527
+ const releaseId = ctx.params.releaseId;
1528
+ const releaseActionsArgs = ctx.request.body;
1521
1529
  await Promise.all(
1522
1530
  releaseActionsArgs.map((releaseActionArgs) => validateReleaseAction(releaseActionArgs))
1523
1531
  );
1524
- const releaseActionService = getService('release-action', { strapi });
1532
+ const releaseActionService = getService("release-action", { strapi });
1533
+ const releaseService = getService("release", { strapi });
1525
1534
  const releaseActions = await strapi.db.transaction(async () => {
1526
- const releaseActions = await Promise.all(
1535
+ const releaseActions2 = await Promise.all(
1527
1536
  releaseActionsArgs.map(async (releaseActionArgs) => {
1528
1537
  try {
1529
- const action = await releaseActionService.create(releaseId, releaseActionArgs);
1538
+ const action = await releaseActionService.create(releaseId, releaseActionArgs, {
1539
+ disableUpdateReleaseStatus: true
1540
+ });
1530
1541
  return action;
1531
1542
  } catch (error) {
1532
- // If the entry is already in the release, we don't want to throw an error, so we catch and ignore it
1533
1543
  if (error instanceof AlreadyOnReleaseError) {
1534
1544
  return null;
1535
1545
  }
@@ -1537,18 +1547,20 @@ const releaseActionController = {
1537
1547
  }
1538
1548
  })
1539
1549
  );
1540
- return releaseActions;
1550
+ return releaseActions2;
1541
1551
  });
1542
1552
  const newReleaseActions = releaseActions.filter((action) => action !== null);
1553
+ if (newReleaseActions.length > 0) {
1554
+ releaseService.updateReleaseStatus(releaseId);
1555
+ }
1543
1556
  ctx.created({
1544
1557
  data: newReleaseActions,
1545
1558
  meta: {
1546
1559
  entriesAlreadyInRelease: releaseActions.length - newReleaseActions.length,
1547
- totalEntries: releaseActions.length,
1548
- },
1560
+ totalEntries: releaseActions.length
1561
+ }
1549
1562
  });
1550
1563
  },
1551
- */
1552
1564
  async findMany(ctx) {
1553
1565
  const releaseId = ctx.params.releaseId;
1554
1566
  const permissionsManager = strapi.service("admin::permission").createPermissionsManager({
@@ -1647,24 +1659,22 @@ const controllers = {
1647
1659
  const release = {
1648
1660
  type: "admin",
1649
1661
  routes: [
1650
- /*
1651
1662
  {
1652
- method: 'GET',
1653
- path: '/mapEntriesToReleases',
1654
- handler: 'release.mapEntriesToReleases',
1663
+ method: "GET",
1664
+ path: "/mapEntriesToReleases",
1665
+ handler: "release.mapEntriesToReleases",
1655
1666
  config: {
1656
1667
  policies: [
1657
- 'admin::isAuthenticatedAdmin',
1668
+ "admin::isAuthenticatedAdmin",
1658
1669
  {
1659
- name: 'admin::hasPermissions',
1670
+ name: "admin::hasPermissions",
1660
1671
  config: {
1661
- actions: ['plugin::content-releases.read'],
1662
- },
1663
- },
1664
- ],
1665
- },
1672
+ actions: ["plugin::content-releases.read"]
1673
+ }
1674
+ }
1675
+ ]
1676
+ }
1666
1677
  },
1667
- */
1668
1678
  {
1669
1679
  method: "GET",
1670
1680
  path: "/getByDocumentAttached",
@@ -1798,24 +1808,22 @@ const releaseAction = {
1798
1808
  ]
1799
1809
  }
1800
1810
  },
1801
- /*
1802
1811
  {
1803
- method: 'POST',
1804
- path: '/:releaseId/actions/bulk',
1805
- handler: 'release-action.createMany',
1812
+ method: "POST",
1813
+ path: "/:releaseId/actions/bulk",
1814
+ handler: "release-action.createMany",
1806
1815
  config: {
1807
1816
  policies: [
1808
- 'admin::isAuthenticatedAdmin',
1817
+ "admin::isAuthenticatedAdmin",
1809
1818
  {
1810
- name: 'admin::hasPermissions',
1819
+ name: "admin::hasPermissions",
1811
1820
  config: {
1812
- actions: ['plugin::content-releases.create-action'],
1813
- },
1814
- },
1815
- ],
1816
- },
1821
+ actions: ["plugin::content-releases.create-action"]
1822
+ }
1823
+ }
1824
+ ]
1825
+ }
1817
1826
  },
1818
- */
1819
1827
  {
1820
1828
  method: "GET",
1821
1829
  path: "/:releaseId/actions",