@strapi/content-manager 0.0.0-next.55dabf6295dfb7987fcab8a6b40212555f0e684c → 0.0.0-next.62c4d48d34e826c6c9f6fbe5cf6e858546239e40

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 (113) hide show
  1. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs → ComponentConfigurationPage-CIjXcRAB.mjs} +4 -4
  2. package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs.map → ComponentConfigurationPage-CIjXcRAB.mjs.map} +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js → ComponentConfigurationPage-gsCd80MU.js} +4 -4
  4. package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js.map → ComponentConfigurationPage-gsCd80MU.js.map} +1 -1
  5. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs → EditConfigurationPage-BglmD_BF.mjs} +4 -4
  6. package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs.map → EditConfigurationPage-BglmD_BF.mjs.map} +1 -1
  7. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js → EditConfigurationPage-DHDQKBzw.js} +4 -4
  8. package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js.map → EditConfigurationPage-DHDQKBzw.js.map} +1 -1
  9. package/dist/_chunks/{EditViewPage-DlxEHhUt.js → EditViewPage-C4iTxUPU.js} +3 -3
  10. package/dist/_chunks/EditViewPage-C4iTxUPU.js.map +1 -0
  11. package/dist/_chunks/{EditViewPage-B82x_x1b.mjs → EditViewPage-CiwVPMaK.mjs} +3 -3
  12. package/dist/_chunks/EditViewPage-CiwVPMaK.mjs.map +1 -0
  13. package/dist/_chunks/{Field-DufHXW17.mjs → Field-DIjL1b5d.mjs} +4 -4
  14. package/dist/_chunks/{Field-DufHXW17.mjs.map → Field-DIjL1b5d.mjs.map} +1 -1
  15. package/dist/_chunks/{Field-COL25JiC.js → Field-DhXEK8y1.js} +4 -4
  16. package/dist/_chunks/{Field-COL25JiC.js.map → Field-DhXEK8y1.js.map} +1 -1
  17. package/dist/_chunks/{Form-u_kAOhwB.mjs → Form-CmNesrvR.mjs} +2 -2
  18. package/dist/_chunks/{Form-u_kAOhwB.mjs.map → Form-CmNesrvR.mjs.map} +1 -1
  19. package/dist/_chunks/{Form-BssUwrTO.js → Form-CwmJ4sWe.js} +2 -2
  20. package/dist/_chunks/{Form-BssUwrTO.js.map → Form-CwmJ4sWe.js.map} +1 -1
  21. package/dist/_chunks/{History-C9t9UqpO.js → History-BLCCNgCt.js} +5 -5
  22. package/dist/_chunks/History-BLCCNgCt.js.map +1 -0
  23. package/dist/_chunks/{History-DRwA3oMM.mjs → History-D-99Wh30.mjs} +5 -5
  24. package/dist/_chunks/History-D-99Wh30.mjs.map +1 -0
  25. package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js → ListConfigurationPage-DxWpeZrO.js} +3 -3
  26. package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js.map → ListConfigurationPage-DxWpeZrO.js.map} +1 -1
  27. package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs → ListConfigurationPage-JPWZz7Kg.mjs} +3 -3
  28. package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs.map → ListConfigurationPage-JPWZz7Kg.mjs.map} +1 -1
  29. package/dist/_chunks/{ListViewPage-D2VD8Szg.js → ListViewPage-CIQekSFz.js} +15 -4
  30. package/dist/_chunks/ListViewPage-CIQekSFz.js.map +1 -0
  31. package/dist/_chunks/{ListViewPage-CELx2ysp.mjs → ListViewPage-DSK3f0ST.mjs} +15 -4
  32. package/dist/_chunks/{ListViewPage-CELx2ysp.mjs.map → ListViewPage-DSK3f0ST.mjs.map} +1 -1
  33. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js → NoContentTypePage-C5cxKvC2.js} +2 -2
  34. package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js.map → NoContentTypePage-C5cxKvC2.js.map} +1 -1
  35. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs → NoContentTypePage-D99LU1YP.mjs} +2 -2
  36. package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs.map → NoContentTypePage-D99LU1YP.mjs.map} +1 -1
  37. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs → NoPermissionsPage-DBrBw-0y.mjs} +2 -2
  38. package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs.map → NoPermissionsPage-DBrBw-0y.mjs.map} +1 -1
  39. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js → NoPermissionsPage-Oy4tmUrW.js} +2 -2
  40. package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js.map → NoPermissionsPage-Oy4tmUrW.js.map} +1 -1
  41. package/dist/_chunks/{Relations-BTcf5xaw.mjs → Relations-BBmhcWFV.mjs} +41 -17
  42. package/dist/_chunks/Relations-BBmhcWFV.mjs.map +1 -0
  43. package/dist/_chunks/{Relations-DR7EUgyC.js → Relations-eG-9p_qS.js} +40 -16
  44. package/dist/_chunks/Relations-eG-9p_qS.js.map +1 -0
  45. package/dist/_chunks/{index-BdMf2lfT.js → index-BIWDoFLK.js} +45 -21
  46. package/dist/_chunks/index-BIWDoFLK.js.map +1 -0
  47. package/dist/_chunks/{index-wnqzm4Q8.mjs → index-BrUzbQ30.mjs} +44 -21
  48. package/dist/_chunks/index-BrUzbQ30.mjs.map +1 -0
  49. package/dist/_chunks/{layout-2CfjL0T9.mjs → layout-_5-cXs34.mjs} +3 -3
  50. package/dist/_chunks/{layout-2CfjL0T9.mjs.map → layout-_5-cXs34.mjs.map} +1 -1
  51. package/dist/_chunks/{layout-B2MyZU-_.js → layout-lMc9i1-Z.js} +3 -3
  52. package/dist/_chunks/{layout-B2MyZU-_.js.map → layout-lMc9i1-Z.js.map} +1 -1
  53. package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
  54. package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
  55. package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
  56. package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
  57. package/dist/_chunks/{relations-BH7JJGGe.js → relations-BRHithi8.js} +3 -7
  58. package/dist/_chunks/relations-BRHithi8.js.map +1 -0
  59. package/dist/_chunks/{relations-C0w0GcXi.mjs → relations-B_VLk-DD.mjs} +3 -7
  60. package/dist/_chunks/relations-B_VLk-DD.mjs.map +1 -0
  61. package/dist/admin/index.js +1 -1
  62. package/dist/admin/index.mjs +1 -1
  63. package/dist/admin/src/preview/constants.d.ts +1 -0
  64. package/dist/admin/src/preview/index.d.ts +4 -0
  65. package/dist/server/index.js +114 -28
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/server/index.mjs +114 -28
  68. package/dist/server/index.mjs.map +1 -1
  69. package/dist/server/src/bootstrap.d.ts.map +1 -1
  70. package/dist/server/src/controllers/index.d.ts.map +1 -1
  71. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  72. package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
  73. package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
  74. package/dist/server/src/index.d.ts +4 -4
  75. package/dist/server/src/preview/constants.d.ts +2 -0
  76. package/dist/server/src/preview/constants.d.ts.map +1 -0
  77. package/dist/server/src/preview/controllers/index.d.ts +2 -0
  78. package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
  79. package/dist/server/src/preview/controllers/preview.d.ts +9 -0
  80. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
  81. package/dist/server/src/preview/index.d.ts +4 -0
  82. package/dist/server/src/preview/index.d.ts.map +1 -0
  83. package/dist/server/src/preview/routes/index.d.ts +8 -0
  84. package/dist/server/src/preview/routes/index.d.ts.map +1 -0
  85. package/dist/server/src/preview/routes/preview.d.ts +4 -0
  86. package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
  87. package/dist/server/src/preview/services/index.d.ts +4 -0
  88. package/dist/server/src/preview/services/index.d.ts.map +1 -0
  89. package/dist/server/src/preview/services/preview.d.ts +6 -0
  90. package/dist/server/src/preview/services/preview.d.ts.map +1 -0
  91. package/dist/server/src/preview/utils.d.ts +7 -0
  92. package/dist/server/src/preview/utils.d.ts.map +1 -0
  93. package/dist/server/src/routes/index.d.ts.map +1 -1
  94. package/dist/server/src/services/document-metadata.d.ts +8 -8
  95. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  96. package/dist/server/src/services/index.d.ts +4 -4
  97. package/dist/server/src/services/index.d.ts.map +1 -1
  98. package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
  99. package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
  100. package/dist/server/src/utils/index.d.ts +2 -0
  101. package/dist/server/src/utils/index.d.ts.map +1 -1
  102. package/package.json +6 -6
  103. package/dist/_chunks/EditViewPage-B82x_x1b.mjs.map +0 -1
  104. package/dist/_chunks/EditViewPage-DlxEHhUt.js.map +0 -1
  105. package/dist/_chunks/History-C9t9UqpO.js.map +0 -1
  106. package/dist/_chunks/History-DRwA3oMM.mjs.map +0 -1
  107. package/dist/_chunks/ListViewPage-D2VD8Szg.js.map +0 -1
  108. package/dist/_chunks/Relations-BTcf5xaw.mjs.map +0 -1
  109. package/dist/_chunks/Relations-DR7EUgyC.js.map +0 -1
  110. package/dist/_chunks/index-BdMf2lfT.js.map +0 -1
  111. package/dist/_chunks/index-wnqzm4Q8.mjs.map +0 -1
  112. package/dist/_chunks/relations-BH7JJGGe.js.map +0 -1
  113. package/dist/_chunks/relations-C0w0GcXi.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ export declare const FEATURE_ID = "preview";
@@ -0,0 +1,4 @@
1
+ declare const previewAdmin: {
2
+ bootstrap(app: Pick<import("@strapi/admin/strapi-admin").StrapiApp, "getPlugin" | "addSettingsLink" | "addSettingsLinks" | "registerHook">): {} | undefined;
3
+ };
4
+ export { previewAdmin };
@@ -121,7 +121,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
121
121
  }
122
122
  };
123
123
  };
124
- const controllers$1 = {
124
+ const controllers$2 = {
125
125
  "history-version": createHistoryVersionController
126
126
  /**
127
127
  * Casting is needed because the types aren't aware that Strapi supports
@@ -620,17 +620,17 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
620
620
  }
621
621
  };
622
622
  };
623
- const services$1 = {
623
+ const services$2 = {
624
624
  history: createHistoryService,
625
625
  lifecycles: createLifecyclesService
626
626
  };
627
- const info = { pluginName: "content-manager", type: "admin" };
627
+ const info$1 = { pluginName: "content-manager", type: "admin" };
628
628
  const historyVersionRouter = {
629
629
  type: "admin",
630
630
  routes: [
631
631
  {
632
632
  method: "GET",
633
- info,
633
+ info: info$1,
634
634
  path: "/history-versions",
635
635
  handler: "history-version.findMany",
636
636
  config: {
@@ -639,7 +639,7 @@ const historyVersionRouter = {
639
639
  },
640
640
  {
641
641
  method: "PUT",
642
- info,
642
+ info: info$1,
643
643
  path: "/history-versions/:versionId/restore",
644
644
  handler: "history-version.restoreVersion",
645
645
  config: {
@@ -648,7 +648,7 @@ const historyVersionRouter = {
648
648
  }
649
649
  ]
650
650
  };
651
- const routes$1 = {
651
+ const routes$2 = {
652
652
  "history-version": historyVersionRouter
653
653
  };
654
654
  const historyVersion = {
@@ -695,7 +695,7 @@ const historyVersion = {
695
695
  }
696
696
  }
697
697
  };
698
- const getFeature = () => {
698
+ const getFeature$1 = () => {
699
699
  if (strapi.ee.features.isEnabled("cms-content-history")) {
700
700
  return {
701
701
  register({ strapi: strapi2 }) {
@@ -707,9 +707,9 @@ const getFeature = () => {
707
707
  destroy({ strapi: strapi2 }) {
708
708
  getService(strapi2, "lifecycles").destroy();
709
709
  },
710
- controllers: controllers$1,
711
- services: services$1,
712
- routes: routes$1
710
+ controllers: controllers$2,
711
+ services: services$2,
712
+ routes: routes$2
713
713
  };
714
714
  }
715
715
  return {
@@ -718,7 +718,7 @@ const getFeature = () => {
718
718
  }
719
719
  };
720
720
  };
721
- const history = getFeature();
721
+ const history = getFeature$1();
722
722
  const register = async ({ strapi: strapi2 }) => {
723
723
  await history.register?.({ strapi: strapi2 });
724
724
  };
@@ -726,6 +726,62 @@ const ALLOWED_WEBHOOK_EVENTS = {
726
726
  ENTRY_PUBLISH: "entry.publish",
727
727
  ENTRY_UNPUBLISH: "entry.unpublish"
728
728
  };
729
+ const FEATURE_ID = "preview";
730
+ const info = { pluginName: "content-manager", type: "admin" };
731
+ const previewRouter = {
732
+ type: "admin",
733
+ routes: [
734
+ {
735
+ method: "GET",
736
+ info,
737
+ path: "/preview/url/:contentType",
738
+ handler: "preview.getPreviewURL",
739
+ config: {
740
+ policies: ["admin::isAuthenticatedAdmin"]
741
+ }
742
+ }
743
+ ]
744
+ };
745
+ const routes$1 = {
746
+ preview: previewRouter
747
+ };
748
+ const createPreviewController = () => {
749
+ return {
750
+ async getPreviewURL(ctx) {
751
+ ctx.request;
752
+ return {
753
+ data: { url: "" }
754
+ };
755
+ }
756
+ };
757
+ };
758
+ const controllers$1 = {
759
+ preview: createPreviewController
760
+ /**
761
+ * Casting is needed because the types aren't aware that Strapi supports
762
+ * passing a controller factory as the value, instead of a controller object directly
763
+ */
764
+ };
765
+ const createPreviewService = () => {
766
+ };
767
+ const services$1 = {
768
+ preview: createPreviewService
769
+ };
770
+ const getFeature = () => {
771
+ if (!strapi.features.future.isEnabled(FEATURE_ID)) {
772
+ return {};
773
+ }
774
+ return {
775
+ bootstrap() {
776
+ console.log("Bootstrapping preview server");
777
+ strapi.config.get("admin.preview");
778
+ },
779
+ routes: routes$1,
780
+ controllers: controllers$1,
781
+ services: services$1
782
+ };
783
+ };
784
+ const preview = getFeature();
729
785
  const bootstrap = async () => {
730
786
  Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
731
787
  strapi.get("webhookStore").addAllowedEvent(key, value);
@@ -735,6 +791,7 @@ const bootstrap = async () => {
735
791
  await getService$1("content-types").syncConfigurations();
736
792
  await getService$1("permission").registerPermissions();
737
793
  await history.bootstrap?.({ strapi });
794
+ await preview.bootstrap?.({ strapi });
738
795
  };
739
796
  const destroy = async ({ strapi: strapi2 }) => {
740
797
  await history.destroy?.({ strapi: strapi2 });
@@ -1224,7 +1281,8 @@ const admin = {
1224
1281
  };
1225
1282
  const routes = {
1226
1283
  admin,
1227
- ...history.routes ? history.routes : {}
1284
+ ...history.routes ? history.routes : {},
1285
+ ...preview.routes ? preview.routes : {}
1228
1286
  };
1229
1287
  const hasPermissionsSchema = strapiUtils.yup.object({
1230
1288
  actions: strapiUtils.yup.array().of(strapiUtils.yup.string()),
@@ -2364,15 +2422,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
2364
2422
  }
2365
2423
  return mainField;
2366
2424
  };
2367
- const addStatusToRelations = async (uid2, relations2) => {
2368
- if (!strapiUtils.contentTypes.hasDraftAndPublish(strapi.contentTypes[uid2])) {
2425
+ const addStatusToRelations = async (targetUid, relations2) => {
2426
+ if (!strapiUtils.contentTypes.hasDraftAndPublish(strapi.getModel(targetUid))) {
2369
2427
  return relations2;
2370
2428
  }
2371
2429
  const documentMetadata2 = getService$1("document-metadata");
2372
- const documentsAvailableStatus = await documentMetadata2.getManyAvailableStatus(uid2, relations2);
2430
+ if (!relations2.length) {
2431
+ return relations2;
2432
+ }
2433
+ const firstRelation = relations2[0];
2434
+ const filters = {
2435
+ documentId: { $in: relations2.map((r) => r.documentId) },
2436
+ // NOTE: find the "opposite" status
2437
+ publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
2438
+ };
2439
+ const availableStatus = await strapi.query(targetUid).findMany({
2440
+ select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
2441
+ filters
2442
+ });
2373
2443
  return relations2.map((relation) => {
2374
- const availableStatuses = documentsAvailableStatus.filter(
2375
- (availableDocument) => availableDocument.documentId === relation.documentId
2444
+ const availableStatuses = availableStatus.filter(
2445
+ (availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
2376
2446
  );
2377
2447
  return {
2378
2448
  ...relation,
@@ -2601,21 +2671,33 @@ const relations = {
2601
2671
  attribute,
2602
2672
  targetField,
2603
2673
  fieldsToSelect,
2604
- source: {
2605
- schema: { uid: sourceUid }
2606
- },
2607
- target: {
2608
- schema: { uid: targetUid }
2609
- }
2674
+ status,
2675
+ source: { schema: sourceSchema },
2676
+ target: { schema: targetSchema }
2610
2677
  } = await this.extractAndValidateRequestInfo(ctx, id);
2678
+ const { uid: sourceUid } = sourceSchema;
2679
+ const { uid: targetUid } = targetSchema;
2611
2680
  const permissionQuery = await getService$1("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
2612
2681
  const dbQuery = strapi.db.query(sourceUid);
2613
2682
  const loadRelations = strapiUtils.relations.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
2683
+ const filters = {};
2684
+ if (sourceSchema?.options?.draftAndPublish) {
2685
+ if (targetSchema?.options?.draftAndPublish) {
2686
+ if (status === "published") {
2687
+ filters.publishedAt = { $notNull: true };
2688
+ } else {
2689
+ filters.publishedAt = { $null: true };
2690
+ }
2691
+ }
2692
+ } else if (targetSchema?.options?.draftAndPublish) {
2693
+ filters.publishedAt = { $null: true };
2694
+ }
2614
2695
  const res = await loadRelations({ id: entryId }, targetField, {
2615
- select: ["id", "documentId", "locale", "publishedAt"],
2696
+ select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
2616
2697
  ordering: "desc",
2617
2698
  page: ctx.request.query.page,
2618
- pageSize: ctx.request.query.pageSize
2699
+ pageSize: ctx.request.query.pageSize,
2700
+ filters
2619
2701
  });
2620
2702
  const loadedIds = res.results.map((item) => item.id);
2621
2703
  addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
@@ -2907,7 +2989,8 @@ const controllers = {
2907
2989
  relations,
2908
2990
  "single-types": singleTypes,
2909
2991
  uid: uid$1,
2910
- ...history.controllers ? history.controllers : {}
2992
+ ...history.controllers ? history.controllers : {},
2993
+ ...preview.controllers ? preview.controllers : {}
2911
2994
  };
2912
2995
  const keys = {
2913
2996
  CONFIGURATION: "configuration"
@@ -4079,7 +4162,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4079
4162
  */
4080
4163
  async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
4081
4164
  const versionsByLocale = fp.groupBy("locale", allVersions);
4082
- delete versionsByLocale[version.locale];
4165
+ if (version.locale) {
4166
+ delete versionsByLocale[version.locale];
4167
+ }
4083
4168
  const model = strapi2.getModel(uid2);
4084
4169
  const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
4085
4170
  const traversalFunction = async (localeVersion) => strapiUtils.traverseEntity(
@@ -4435,7 +4520,8 @@ const services = {
4435
4520
  permission,
4436
4521
  "populate-builder": populateBuilder$1,
4437
4522
  uid,
4438
- ...history.services ? history.services : {}
4523
+ ...history.services ? history.services : {},
4524
+ ...preview.services ? preview.services : {}
4439
4525
  };
4440
4526
  const index = () => {
4441
4527
  return {