@strapi/content-manager 0.0.0-experimental.2bad311ac375d1115d085a9cee4fdbe11a455caf → 0.0.0-experimental.2e2b694fbeb6a64dd7504ce6bccecf956e9eaf03

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 (106) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-7-qB29e7.mjs → ComponentConfigurationPage-CIjXcRAB.mjs} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-7-qB29e7.mjs.map → ComponentConfigurationPage-CIjXcRAB.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-DP7AC0UU.js → ComponentConfigurationPage-gsCd80MU.js} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-DP7AC0UU.js.map → ComponentConfigurationPage-gsCd80MU.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-CI4XoymK.mjs → EditConfigurationPage-BglmD_BF.mjs} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-CI4XoymK.mjs.map → EditConfigurationPage-BglmD_BF.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-DITVliEI.js → EditConfigurationPage-DHDQKBzw.js} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-DITVliEI.js.map → EditConfigurationPage-DHDQKBzw.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-CUS2EAhB.js → EditViewPage-C4iTxUPU.js} +10 -4
  10. package/dist/_chunks/EditViewPage-C4iTxUPU.js.map +1 -0
  11. package/dist/_chunks/{EditViewPage-Dzpno8xI.mjs → EditViewPage-CiwVPMaK.mjs} +10 -4
  12. package/dist/_chunks/EditViewPage-CiwVPMaK.mjs.map +1 -0
  13. package/dist/_chunks/{Field-B_jG_EV9.mjs → Field-DIjL1b5d.mjs} +42 -10
  14. package/dist/_chunks/Field-DIjL1b5d.mjs.map +1 -0
  15. package/dist/_chunks/{Field-CtUU1Fg8.js → Field-DhXEK8y1.js} +42 -10
  16. package/dist/_chunks/Field-DhXEK8y1.js.map +1 -0
  17. package/dist/_chunks/{Form-BXHao2mZ.mjs → Form-CmNesrvR.mjs} +3 -3
  18. package/dist/_chunks/Form-CmNesrvR.mjs.map +1 -0
  19. package/dist/_chunks/{Form-DTqO0ymI.js → Form-CwmJ4sWe.js} +3 -3
  20. package/dist/_chunks/Form-CwmJ4sWe.js.map +1 -0
  21. package/dist/_chunks/{History-C_uSGzO5.js → History-BLCCNgCt.js} +24 -11
  22. package/dist/_chunks/History-BLCCNgCt.js.map +1 -0
  23. package/dist/_chunks/{History-2Ah2CQ4T.mjs → History-D-99Wh30.mjs} +25 -12
  24. package/dist/_chunks/History-D-99Wh30.mjs.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-nyuP7OSy.js → ListConfigurationPage-DxWpeZrO.js} +3 -3
  26. package/dist/_chunks/{ListConfigurationPage-nyuP7OSy.js.map → ListConfigurationPage-DxWpeZrO.js.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-BjSJlaoC.mjs → ListConfigurationPage-JPWZz7Kg.mjs} +3 -3
  28. package/dist/_chunks/{ListConfigurationPage-BjSJlaoC.mjs.map → ListConfigurationPage-JPWZz7Kg.mjs.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-DHgHD8Xg.js → ListViewPage-CIQekSFz.js} +15 -4
  30. package/dist/_chunks/ListViewPage-CIQekSFz.js.map +1 -0
  31. package/dist/_chunks/{ListViewPage-B75x3nz2.mjs → ListViewPage-DSK3f0ST.mjs} +15 -4
  32. package/dist/_chunks/{ListViewPage-B75x3nz2.mjs.map → ListViewPage-DSK3f0ST.mjs.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-CDUKdZ7d.js → NoContentTypePage-C5cxKvC2.js} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-CDUKdZ7d.js.map → NoContentTypePage-C5cxKvC2.js.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-DUacQSyF.mjs → NoContentTypePage-D99LU1YP.mjs} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-DUacQSyF.mjs.map → NoContentTypePage-D99LU1YP.mjs.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-SFllMekk.mjs → NoPermissionsPage-DBrBw-0y.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-SFllMekk.mjs.map → NoPermissionsPage-DBrBw-0y.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-zwIZydDI.js → NoPermissionsPage-Oy4tmUrW.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-zwIZydDI.js.map → NoPermissionsPage-Oy4tmUrW.js.map} +1 -1
  41. package/dist/_chunks/{Relations-D2NRW8fC.mjs → Relations-BBmhcWFV.mjs} +62 -33
  42. package/dist/_chunks/Relations-BBmhcWFV.mjs.map +1 -0
  43. package/dist/_chunks/{Relations-NFLaRNPr.js → Relations-eG-9p_qS.js} +61 -32
  44. package/dist/_chunks/Relations-eG-9p_qS.js.map +1 -0
  45. package/dist/_chunks/{en-BlhnxQfj.js → en-Bm0D0IWz.js} +7 -7
  46. package/dist/_chunks/{en-BlhnxQfj.js.map → en-Bm0D0IWz.js.map} +1 -1
  47. package/dist/_chunks/{en-C8YBvRrK.mjs → en-DKV44jRb.mjs} +7 -7
  48. package/dist/_chunks/{en-C8YBvRrK.mjs.map → en-DKV44jRb.mjs.map} +1 -1
  49. package/dist/_chunks/{index-ovJRE1FM.js → index-BIWDoFLK.js} +119 -83
  50. package/dist/_chunks/index-BIWDoFLK.js.map +1 -0
  51. package/dist/_chunks/{index-C9HxCo5R.mjs → index-BrUzbQ30.mjs} +119 -84
  52. package/dist/_chunks/index-BrUzbQ30.mjs.map +1 -0
  53. package/dist/_chunks/{layout-DaUjDiWQ.mjs → layout-_5-cXs34.mjs} +3 -3
  54. package/dist/_chunks/{layout-DaUjDiWQ.mjs.map → layout-_5-cXs34.mjs.map} +1 -1
  55. package/dist/_chunks/{layout-UNWstw_s.js → layout-lMc9i1-Z.js} +3 -3
  56. package/dist/_chunks/{layout-UNWstw_s.js.map → layout-lMc9i1-Z.js.map} +1 -1
  57. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  58. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  59. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  60. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  61. package/dist/_chunks/{relations-NN3coOG5.js → relations-BRHithi8.js} +3 -7
  62. package/dist/_chunks/relations-BRHithi8.js.map +1 -0
  63. package/dist/_chunks/{relations-D8iFAeRu.mjs → relations-B_VLk-DD.mjs} +3 -7
  64. package/dist/_chunks/relations-B_VLk-DD.mjs.map +1 -0
  65. package/dist/admin/index.js +1 -1
  66. package/dist/admin/index.mjs +1 -1
  67. package/dist/admin/src/preview/constants.d.ts +1 -0
  68. package/dist/admin/src/preview/index.d.ts +4 -0
  69. package/dist/server/index.js +72 -26
  70. package/dist/server/index.js.map +1 -1
  71. package/dist/server/index.mjs +72 -26
  72. package/dist/server/index.mjs.map +1 -1
  73. package/dist/server/src/bootstrap.d.ts.map +1 -1
  74. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  75. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  76. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  77. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  78. package/dist/server/src/history/services/history.d.ts.map +1 -1
  79. package/dist/server/src/index.d.ts +4 -4
  80. package/dist/server/src/preview/constants.d.ts +2 -0
  81. package/dist/server/src/preview/constants.d.ts.map +1 -0
  82. package/dist/server/src/preview/index.d.ts +4 -0
  83. package/dist/server/src/preview/index.d.ts.map +1 -0
  84. package/dist/server/src/services/document-metadata.d.ts +8 -8
  85. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  86. package/dist/server/src/services/index.d.ts +4 -4
  87. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  88. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  89. package/dist/server/src/utils/index.d.ts +2 -0
  90. package/dist/server/src/utils/index.d.ts.map +1 -1
  91. package/package.json +7 -7
  92. package/dist/_chunks/EditViewPage-CUS2EAhB.js.map +0 -1
  93. package/dist/_chunks/EditViewPage-Dzpno8xI.mjs.map +0 -1
  94. package/dist/_chunks/Field-B_jG_EV9.mjs.map +0 -1
  95. package/dist/_chunks/Field-CtUU1Fg8.js.map +0 -1
  96. package/dist/_chunks/Form-BXHao2mZ.mjs.map +0 -1
  97. package/dist/_chunks/Form-DTqO0ymI.js.map +0 -1
  98. package/dist/_chunks/History-2Ah2CQ4T.mjs.map +0 -1
  99. package/dist/_chunks/History-C_uSGzO5.js.map +0 -1
  100. package/dist/_chunks/ListViewPage-DHgHD8Xg.js.map +0 -1
  101. package/dist/_chunks/Relations-D2NRW8fC.mjs.map +0 -1
  102. package/dist/_chunks/Relations-NFLaRNPr.js.map +0 -1
  103. package/dist/_chunks/index-C9HxCo5R.mjs.map +0 -1
  104. package/dist/_chunks/index-ovJRE1FM.js.map +0 -1
  105. package/dist/_chunks/relations-D8iFAeRu.mjs.map +0 -1
  106. package/dist/_chunks/relations-NN3coOG5.js.map +0 -1
@@ -367,7 +367,12 @@ const createHistoryService = ({ strapi: strapi2 }) => {
367
367
  if (userToPopulate == null) {
368
368
  return null;
369
369
  }
370
- return strapi2.query("admin::user").findOne({ where: { id: userToPopulate.id } });
370
+ return strapi2.query("admin::user").findOne({
371
+ where: {
372
+ ...userToPopulate.id ? { id: userToPopulate.id } : {},
373
+ ...userToPopulate.documentId ? { documentId: userToPopulate.documentId } : {}
374
+ }
375
+ });
371
376
  })
372
377
  );
373
378
  return {
@@ -664,7 +669,7 @@ const historyVersion = {
664
669
  }
665
670
  }
666
671
  };
667
- const getFeature = () => {
672
+ const getFeature$1 = () => {
668
673
  if (strapi.ee.features.isEnabled("cms-content-history")) {
669
674
  return {
670
675
  register({ strapi: strapi2 }) {
@@ -687,7 +692,7 @@ const getFeature = () => {
687
692
  }
688
693
  };
689
694
  };
690
- const history = getFeature();
695
+ const history = getFeature$1();
691
696
  const register = async ({ strapi: strapi2 }) => {
692
697
  await history.register?.({ strapi: strapi2 });
693
698
  };
@@ -695,6 +700,18 @@ const ALLOWED_WEBHOOK_EVENTS = {
695
700
  ENTRY_PUBLISH: "entry.publish",
696
701
  ENTRY_UNPUBLISH: "entry.unpublish"
697
702
  };
703
+ const FEATURE_ID = "preview";
704
+ const getFeature = () => {
705
+ if (!strapi.features.future.isEnabled(FEATURE_ID)) {
706
+ return {};
707
+ }
708
+ return {
709
+ bootstrap() {
710
+ console.log("Bootstrapping preview server");
711
+ }
712
+ };
713
+ };
714
+ const preview = getFeature();
698
715
  const bootstrap = async () => {
699
716
  Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
700
717
  strapi.get("webhookStore").addAllowedEvent(key, value);
@@ -704,6 +721,7 @@ const bootstrap = async () => {
704
721
  await getService$1("content-types").syncConfigurations();
705
722
  await getService$1("permission").registerPermissions();
706
723
  await history.bootstrap?.({ strapi });
724
+ await preview.bootstrap?.({ strapi });
707
725
  };
708
726
  const destroy = async ({ strapi: strapi2 }) => {
709
727
  await history.destroy?.({ strapi: strapi2 });
@@ -1689,7 +1707,7 @@ const updateDocument = async (ctx, opts) => {
1689
1707
  throw new errors.ForbiddenError();
1690
1708
  }
1691
1709
  const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
1692
- const setCreator = setCreatorFields({ user, isEdition: true });
1710
+ const setCreator = documentVersion ? setCreatorFields({ user, isEdition: true }) : setCreatorFields({ user });
1693
1711
  const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
1694
1712
  const sanitizedBody = await sanitizeFn(body);
1695
1713
  return documentManager2.update(documentVersion?.documentId || id, model, {
@@ -2333,15 +2351,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
2333
2351
  }
2334
2352
  return mainField;
2335
2353
  };
2336
- const addStatusToRelations = async (uid2, relations2) => {
2337
- if (!contentTypes$1.hasDraftAndPublish(strapi.contentTypes[uid2])) {
2354
+ const addStatusToRelations = async (targetUid, relations2) => {
2355
+ if (!contentTypes$1.hasDraftAndPublish(strapi.getModel(targetUid))) {
2338
2356
  return relations2;
2339
2357
  }
2340
2358
  const documentMetadata2 = getService$1("document-metadata");
2341
- const documentsAvailableStatus = await documentMetadata2.getManyAvailableStatus(uid2, relations2);
2359
+ if (!relations2.length) {
2360
+ return relations2;
2361
+ }
2362
+ const firstRelation = relations2[0];
2363
+ const filters = {
2364
+ documentId: { $in: relations2.map((r) => r.documentId) },
2365
+ // NOTE: find the "opposite" status
2366
+ publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
2367
+ };
2368
+ const availableStatus = await strapi.query(targetUid).findMany({
2369
+ select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
2370
+ filters
2371
+ });
2342
2372
  return relations2.map((relation) => {
2343
- const availableStatuses = documentsAvailableStatus.filter(
2344
- (availableDocument) => availableDocument.documentId === relation.documentId
2373
+ const availableStatuses = availableStatus.filter(
2374
+ (availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
2345
2375
  );
2346
2376
  return {
2347
2377
  ...relation,
@@ -2362,11 +2392,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
2362
2392
  const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
2363
2393
  const isSourceLocalized = isLocalized(sourceModel);
2364
2394
  const isTargetLocalized = isLocalized(targetModel);
2365
- let validatedLocale = locale;
2366
- if (!targetModel || !isTargetLocalized)
2367
- validatedLocale = void 0;
2368
2395
  return {
2369
- locale: validatedLocale,
2396
+ locale,
2370
2397
  isSourceLocalized,
2371
2398
  isTargetLocalized
2372
2399
  };
@@ -2469,7 +2496,7 @@ const relations = {
2469
2496
  attribute,
2470
2497
  fieldsToSelect,
2471
2498
  mainField,
2472
- source: { schema: sourceSchema },
2499
+ source: { schema: sourceSchema, isLocalized: isSourceLocalized },
2473
2500
  target: { schema: targetSchema, isLocalized: isTargetLocalized },
2474
2501
  sourceSchema,
2475
2502
  targetSchema,
@@ -2491,7 +2518,8 @@ const relations = {
2491
2518
  fieldsToSelect,
2492
2519
  mainField,
2493
2520
  source: {
2494
- schema: { uid: sourceUid, modelType: sourceModelType }
2521
+ schema: { uid: sourceUid, modelType: sourceModelType },
2522
+ isLocalized: isSourceLocalized
2495
2523
  },
2496
2524
  target: {
2497
2525
  schema: { uid: targetUid },
@@ -2533,9 +2561,12 @@ const relations = {
2533
2561
  if (!isEmpty(publishedAt)) {
2534
2562
  where[`${alias}.published_at`] = publishedAt;
2535
2563
  }
2536
- if (filterByLocale) {
2564
+ if (isTargetLocalized && locale) {
2537
2565
  where[`${alias}.locale`] = locale;
2538
2566
  }
2567
+ if (isSourceLocalized && locale) {
2568
+ where.locale = locale;
2569
+ }
2539
2570
  if ((idsToInclude?.length ?? 0) !== 0) {
2540
2571
  where[`${alias}.id`].$notIn = idsToInclude;
2541
2572
  }
@@ -2553,7 +2584,8 @@ const relations = {
2553
2584
  id: { $notIn: uniq(idsToOmit) }
2554
2585
  });
2555
2586
  }
2556
- const res = await strapi.db.query(targetUid).findPage(strapi.get("query-params").transform(targetUid, queryParams));
2587
+ const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
2588
+ const res = await strapi.db.query(targetUid).findPage(dbQuery);
2557
2589
  ctx.body = {
2558
2590
  ...res,
2559
2591
  results: await addStatusToRelations(targetUid, res.results)
@@ -2568,21 +2600,33 @@ const relations = {
2568
2600
  attribute,
2569
2601
  targetField,
2570
2602
  fieldsToSelect,
2571
- source: {
2572
- schema: { uid: sourceUid }
2573
- },
2574
- target: {
2575
- schema: { uid: targetUid }
2576
- }
2603
+ status,
2604
+ source: { schema: sourceSchema },
2605
+ target: { schema: targetSchema }
2577
2606
  } = await this.extractAndValidateRequestInfo(ctx, id);
2607
+ const { uid: sourceUid } = sourceSchema;
2608
+ const { uid: targetUid } = targetSchema;
2578
2609
  const permissionQuery = await getService$1("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
2579
2610
  const dbQuery = strapi.db.query(sourceUid);
2580
2611
  const loadRelations = relations$1.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
2612
+ const filters = {};
2613
+ if (sourceSchema?.options?.draftAndPublish) {
2614
+ if (targetSchema?.options?.draftAndPublish) {
2615
+ if (status === "published") {
2616
+ filters.publishedAt = { $notNull: true };
2617
+ } else {
2618
+ filters.publishedAt = { $null: true };
2619
+ }
2620
+ }
2621
+ } else if (targetSchema?.options?.draftAndPublish) {
2622
+ filters.publishedAt = { $null: true };
2623
+ }
2581
2624
  const res = await loadRelations({ id: entryId }, targetField, {
2582
- select: ["id", "documentId", "locale", "publishedAt"],
2625
+ select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
2583
2626
  ordering: "desc",
2584
2627
  page: ctx.request.query.page,
2585
- pageSize: ctx.request.query.pageSize
2628
+ pageSize: ctx.request.query.pageSize,
2629
+ filters
2586
2630
  });
2587
2631
  const loadedIds = res.results.map((item) => item.id);
2588
2632
  addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
@@ -4046,7 +4090,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4046
4090
  */
4047
4091
  async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
4048
4092
  const versionsByLocale = groupBy("locale", allVersions);
4049
- delete versionsByLocale[version.locale];
4093
+ if (version.locale) {
4094
+ delete versionsByLocale[version.locale];
4095
+ }
4050
4096
  const model = strapi2.getModel(uid2);
4051
4097
  const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
4052
4098
  const traversalFunction = async (localeVersion) => traverseEntity(