@strapi/content-manager 0.0.0-next.840550dc97a3782302ddf918d3a0d07e59dd11eb → 0.0.0-next.8414b837972392b1d362ae53b86b5da1eb2ad05c

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 (158) hide show
  1. package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
  2. package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
  3. package/dist/_chunks/{ComponentConfigurationPage-gsCd80MU.js → ComponentConfigurationPage-BTR_hQow.js} +4 -5
  4. package/dist/_chunks/{ComponentConfigurationPage-gsCd80MU.js.map → ComponentConfigurationPage-BTR_hQow.js.map} +1 -1
  5. package/dist/_chunks/{ComponentConfigurationPage-CIjXcRAB.mjs → ComponentConfigurationPage-bLQr82ce.mjs} +3 -3
  6. package/dist/_chunks/{ComponentConfigurationPage-CIjXcRAB.mjs.map → ComponentConfigurationPage-bLQr82ce.mjs.map} +1 -1
  7. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
  8. package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
  9. package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
  10. package/dist/_chunks/{EditConfigurationPage-BglmD_BF.mjs → EditConfigurationPage-BhRSnUsL.mjs} +3 -3
  11. package/dist/_chunks/{EditConfigurationPage-BglmD_BF.mjs.map → EditConfigurationPage-BhRSnUsL.mjs.map} +1 -1
  12. package/dist/_chunks/{EditConfigurationPage-DHDQKBzw.js → EditConfigurationPage-z39Wv3E6.js} +4 -5
  13. package/dist/_chunks/{EditConfigurationPage-DHDQKBzw.js.map → EditConfigurationPage-z39Wv3E6.js.map} +1 -1
  14. package/dist/_chunks/{EditViewPage-CiwVPMaK.mjs → EditViewPage-BCjNxNlY.mjs} +38 -8
  15. package/dist/_chunks/EditViewPage-BCjNxNlY.mjs.map +1 -0
  16. package/dist/_chunks/{EditViewPage-C4iTxUPU.js → EditViewPage-wujOq90c.js} +38 -9
  17. package/dist/_chunks/EditViewPage-wujOq90c.js.map +1 -0
  18. package/dist/_chunks/{Field-DhXEK8y1.js → Field-B5QXnctJ.js} +151 -72
  19. package/dist/_chunks/Field-B5QXnctJ.js.map +1 -0
  20. package/dist/_chunks/{Field-DIjL1b5d.mjs → Field-Byr3mPTl.mjs} +149 -70
  21. package/dist/_chunks/Field-Byr3mPTl.mjs.map +1 -0
  22. package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
  23. package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
  24. package/dist/_chunks/{Form-CmNesrvR.mjs → Form-BZgvE8C8.mjs} +3 -3
  25. package/dist/_chunks/{Form-CmNesrvR.mjs.map → Form-BZgvE8C8.mjs.map} +1 -1
  26. package/dist/_chunks/{Form-CwmJ4sWe.js → Form-D7mexvm3.js} +5 -6
  27. package/dist/_chunks/{Form-CwmJ4sWe.js.map → Form-D7mexvm3.js.map} +1 -1
  28. package/dist/_chunks/{History-D-99Wh30.mjs → History-CqNgxkqK.mjs} +22 -92
  29. package/dist/_chunks/History-CqNgxkqK.mjs.map +1 -0
  30. package/dist/_chunks/{History-BLCCNgCt.js → History-DYl2A8Z_.js} +22 -93
  31. package/dist/_chunks/History-DYl2A8Z_.js.map +1 -0
  32. package/dist/_chunks/{ListConfigurationPage-DxWpeZrO.js → ListConfigurationPage-BXnu_OoY.js} +6 -6
  33. package/dist/_chunks/ListConfigurationPage-BXnu_OoY.js.map +1 -0
  34. package/dist/_chunks/{ListConfigurationPage-JPWZz7Kg.mjs → ListConfigurationPage-BbQjzKkQ.mjs} +6 -5
  35. package/dist/_chunks/ListConfigurationPage-BbQjzKkQ.mjs.map +1 -0
  36. package/dist/_chunks/{ListViewPage-CIQekSFz.js → ListViewPage-BtSi8C1l.js} +64 -53
  37. package/dist/_chunks/ListViewPage-BtSi8C1l.js.map +1 -0
  38. package/dist/_chunks/{ListViewPage-DSK3f0ST.mjs → ListViewPage-D4ofkbjR.mjs} +63 -51
  39. package/dist/_chunks/ListViewPage-D4ofkbjR.mjs.map +1 -0
  40. package/dist/_chunks/{NoContentTypePage-C5cxKvC2.js → NoContentTypePage-CitJeOq4.js} +2 -2
  41. package/dist/_chunks/{NoContentTypePage-C5cxKvC2.js.map → NoContentTypePage-CitJeOq4.js.map} +1 -1
  42. package/dist/_chunks/{NoContentTypePage-D99LU1YP.mjs → NoContentTypePage-DyUx5mXh.mjs} +2 -2
  43. package/dist/_chunks/{NoContentTypePage-D99LU1YP.mjs.map → NoContentTypePage-DyUx5mXh.mjs.map} +1 -1
  44. package/dist/_chunks/{NoPermissionsPage-DBrBw-0y.mjs → NoPermissionsPage-DhIiyWkk.mjs} +2 -2
  45. package/dist/_chunks/{NoPermissionsPage-DBrBw-0y.mjs.map → NoPermissionsPage-DhIiyWkk.mjs.map} +1 -1
  46. package/dist/_chunks/{NoPermissionsPage-Oy4tmUrW.js → NoPermissionsPage-DzgWz0M-.js} +2 -2
  47. package/dist/_chunks/{NoPermissionsPage-Oy4tmUrW.js.map → NoPermissionsPage-DzgWz0M-.js.map} +1 -1
  48. package/dist/_chunks/Preview-BaYGJ0nb.mjs +293 -0
  49. package/dist/_chunks/Preview-BaYGJ0nb.mjs.map +1 -0
  50. package/dist/_chunks/Preview-DfNx8Ke-.js +311 -0
  51. package/dist/_chunks/Preview-DfNx8Ke-.js.map +1 -0
  52. package/dist/_chunks/{Relations-BBmhcWFV.mjs → Relations-DM2yUTST.mjs} +9 -8
  53. package/dist/_chunks/Relations-DM2yUTST.mjs.map +1 -0
  54. package/dist/_chunks/{Relations-eG-9p_qS.js → Relations-DuKCaXrv.js} +10 -10
  55. package/dist/_chunks/Relations-DuKCaXrv.js.map +1 -0
  56. package/dist/_chunks/{en-Bm0D0IWz.js → en-BK8Xyl5I.js} +16 -4
  57. package/dist/_chunks/{en-Bm0D0IWz.js.map → en-BK8Xyl5I.js.map} +1 -1
  58. package/dist/_chunks/{en-DKV44jRb.mjs → en-Dtk_ot79.mjs} +16 -4
  59. package/dist/_chunks/{en-DKV44jRb.mjs.map → en-Dtk_ot79.mjs.map} +1 -1
  60. package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
  61. package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
  62. package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
  63. package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
  64. package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
  65. package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
  66. package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
  67. package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
  68. package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
  69. package/dist/_chunks/{index-BIWDoFLK.js → index-BUWEmX8m.js} +324 -181
  70. package/dist/_chunks/index-BUWEmX8m.js.map +1 -0
  71. package/dist/_chunks/{index-BrUzbQ30.mjs → index-DVAIIsOs.mjs} +327 -183
  72. package/dist/_chunks/index-DVAIIsOs.mjs.map +1 -0
  73. package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
  74. package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
  75. package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
  76. package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
  77. package/dist/_chunks/{layout-_5-cXs34.mjs → layout-Bxsv5mP7.mjs} +4 -4
  78. package/dist/_chunks/{layout-_5-cXs34.mjs.map → layout-Bxsv5mP7.mjs.map} +1 -1
  79. package/dist/_chunks/{layout-lMc9i1-Z.js → layout-C3fN7Ejz.js} +5 -6
  80. package/dist/_chunks/{layout-lMc9i1-Z.js.map → layout-C3fN7Ejz.js.map} +1 -1
  81. package/dist/_chunks/objects-BcXOv6_9.js.map +1 -1
  82. package/dist/_chunks/objects-D6yBsdmx.mjs.map +1 -1
  83. package/dist/_chunks/{relations-BRHithi8.js → relations-BPZKAoEY.js} +6 -3
  84. package/dist/_chunks/relations-BPZKAoEY.js.map +1 -0
  85. package/dist/_chunks/{relations-B_VLk-DD.mjs → relations-o3pPhzY4.mjs} +6 -3
  86. package/dist/_chunks/relations-o3pPhzY4.mjs.map +1 -0
  87. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -1
  88. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -1
  89. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
  90. package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
  91. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
  92. package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
  93. package/dist/admin/index.js +1 -1
  94. package/dist/admin/index.mjs +4 -4
  95. package/dist/admin/src/content-manager.d.ts +3 -2
  96. package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
  97. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  98. package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
  99. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.d.ts +7 -0
  100. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
  101. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
  102. package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
  103. package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
  104. package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
  105. package/dist/admin/src/preview/index.d.ts +1 -1
  106. package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
  107. package/dist/admin/src/preview/routes.d.ts +3 -0
  108. package/dist/admin/src/preview/services/preview.d.ts +3 -0
  109. package/dist/admin/src/router.d.ts +1 -1
  110. package/dist/admin/src/services/documents.d.ts +0 -3
  111. package/dist/server/index.js +138 -59
  112. package/dist/server/index.js.map +1 -1
  113. package/dist/server/index.mjs +138 -58
  114. package/dist/server/index.mjs.map +1 -1
  115. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  116. package/dist/server/src/preview/controllers/preview.d.ts +6 -2
  117. package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
  118. package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
  119. package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
  120. package/dist/server/src/preview/index.d.ts.map +1 -1
  121. package/dist/server/src/preview/services/index.d.ts +6 -1
  122. package/dist/server/src/preview/services/index.d.ts.map +1 -1
  123. package/dist/server/src/preview/services/preview-config.d.ts +2 -0
  124. package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
  125. package/dist/server/src/preview/services/preview.d.ts +7 -1
  126. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  127. package/dist/server/src/preview/utils.d.ts +6 -1
  128. package/dist/server/src/preview/utils.d.ts.map +1 -1
  129. package/dist/server/src/register.d.ts.map +1 -1
  130. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  131. package/dist/shared/contracts/index.d.ts +1 -0
  132. package/dist/shared/contracts/index.d.ts.map +1 -1
  133. package/dist/shared/contracts/preview.d.ts +27 -0
  134. package/dist/shared/contracts/preview.d.ts.map +1 -0
  135. package/dist/shared/index.js +4 -0
  136. package/dist/shared/index.js.map +1 -1
  137. package/dist/shared/index.mjs +4 -0
  138. package/dist/shared/index.mjs.map +1 -1
  139. package/package.json +13 -11
  140. package/dist/_chunks/EditViewPage-C4iTxUPU.js.map +0 -1
  141. package/dist/_chunks/EditViewPage-CiwVPMaK.mjs.map +0 -1
  142. package/dist/_chunks/Field-DIjL1b5d.mjs.map +0 -1
  143. package/dist/_chunks/Field-DhXEK8y1.js.map +0 -1
  144. package/dist/_chunks/History-BLCCNgCt.js.map +0 -1
  145. package/dist/_chunks/History-D-99Wh30.mjs.map +0 -1
  146. package/dist/_chunks/ListConfigurationPage-DxWpeZrO.js.map +0 -1
  147. package/dist/_chunks/ListConfigurationPage-JPWZz7Kg.mjs.map +0 -1
  148. package/dist/_chunks/ListViewPage-CIQekSFz.js.map +0 -1
  149. package/dist/_chunks/ListViewPage-DSK3f0ST.mjs.map +0 -1
  150. package/dist/_chunks/Relations-BBmhcWFV.mjs.map +0 -1
  151. package/dist/_chunks/Relations-eG-9p_qS.js.map +0 -1
  152. package/dist/_chunks/index-BIWDoFLK.js.map +0 -1
  153. package/dist/_chunks/index-BrUzbQ30.mjs.map +0 -1
  154. package/dist/_chunks/relations-BRHithi8.js.map +0 -1
  155. package/dist/_chunks/relations-B_VLk-DD.mjs.map +0 -1
  156. package/dist/admin/src/preview/constants.d.ts +0 -1
  157. package/dist/server/src/preview/constants.d.ts +0 -2
  158. package/dist/server/src/preview/constants.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import strapiUtils, { validateYupSchema, errors, async, contentTypes as contentTypes$1, yup as yup$1, validateYupSchemaSync, policy, traverse, setCreatorFields, isOperatorOfType, relations as relations$1, traverseEntity, pagination } from "@strapi/utils";
2
- import { pick, omit, difference, castArray, intersection, pipe, propOr, isEqual, isEmpty, set, isNil as isNil$1, has, prop, assoc, mapValues, flow, uniq, uniqBy, concat, getOr, propEq, merge, groupBy } from "lodash/fp";
2
+ import { pick, omit, difference, castArray, mergeWith, intersection, pipe, propOr, isEqual, isEmpty, set, isNil as isNil$1, has, prop, assoc, mapValues, flow, uniq, uniqBy, concat, getOr, propEq, merge, groupBy } from "lodash/fp";
3
3
  import "@strapi/types";
4
4
  import * as yup from "yup";
5
5
  import { scheduleJob } from "node-schedule";
@@ -141,8 +141,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
141
141
  };
142
142
  const getRelationRestoreValue = async (versionRelationData, attribute) => {
143
143
  if (Array.isArray(versionRelationData)) {
144
- if (versionRelationData.length === 0)
145
- return versionRelationData;
144
+ if (versionRelationData.length === 0) return versionRelationData;
146
145
  const existingAndMissingRelations = await Promise.all(
147
146
  versionRelationData.map((relation) => {
148
147
  return strapi2.documents(attribute.target).findOne({
@@ -177,8 +176,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
177
176
  const getDefaultLocale = async () => localesService ? localesService.getDefaultLocale() : null;
178
177
  const isLocalizedContentType = (model) => i18nContentTypeService ? i18nContentTypeService.isLocalizedContentType(model) : false;
179
178
  const getLocaleDictionary = async () => {
180
- if (!localesService)
181
- return {};
179
+ if (!localesService) return {};
182
180
  const locales = await localesService.find() || [];
183
181
  return locales.reduce(
184
182
  (acc, locale) => {
@@ -591,15 +589,19 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
591
589
  });
592
590
  return result;
593
591
  });
594
- state.deleteExpiredJob = scheduleJob("0 0 * * *", () => {
592
+ state.deleteExpiredJob = scheduleJob("historyDaily", "0 0 * * *", () => {
595
593
  const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1e3;
596
594
  const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);
597
595
  strapi2.db.query(HISTORY_VERSION_UID).deleteMany({
598
596
  where: {
599
597
  created_at: {
600
- $lt: expirationDate.toISOString()
598
+ $lt: expirationDate
601
599
  }
602
600
  }
601
+ }).catch((error) => {
602
+ if (error instanceof Error) {
603
+ strapi2.log.error("Error deleting expired history versions", error.message);
604
+ }
603
605
  });
604
606
  });
605
607
  state.isInitialized = true;
@@ -710,14 +712,6 @@ const getFeature$1 = () => {
710
712
  };
711
713
  };
712
714
  const history = getFeature$1();
713
- const register = async ({ strapi: strapi2 }) => {
714
- await history.register?.({ strapi: strapi2 });
715
- };
716
- const ALLOWED_WEBHOOK_EVENTS = {
717
- ENTRY_PUBLISH: "entry.publish",
718
- ENTRY_UNPUBLISH: "entry.unpublish"
719
- };
720
- const FEATURE_ID = "preview";
721
715
  const info = { pluginName: "content-manager", type: "admin" };
722
716
  const previewRouter = {
723
717
  type: "admin",
@@ -726,7 +720,7 @@ const previewRouter = {
726
720
  method: "GET",
727
721
  info,
728
722
  path: "/preview/url/:contentType",
729
- handler: "preview.getPreviewURL",
723
+ handler: "preview.getPreviewUrl",
730
724
  config: {
731
725
  policies: ["admin::isAuthenticatedAdmin"]
732
726
  }
@@ -736,12 +730,56 @@ const previewRouter = {
736
730
  const routes$1 = {
737
731
  preview: previewRouter
738
732
  };
733
+ function getService(strapi2, name) {
734
+ return strapi2.service(`plugin::content-manager.${name}`);
735
+ }
736
+ const getPreviewUrlSchema = yup.object().shape({
737
+ // Will be undefined for single types
738
+ documentId: yup.string(),
739
+ locale: yup.string().nullable(),
740
+ status: yup.string()
741
+ }).required();
742
+ const validatePreviewUrl = async (strapi2, uid2, params) => {
743
+ await validateYupSchema(getPreviewUrlSchema)(params);
744
+ const newParams = pick(["documentId", "locale", "status"], params);
745
+ const model = strapi2.getModel(uid2);
746
+ if (!model || model.modelType !== "contentType") {
747
+ throw new errors.ValidationError("Invalid content type");
748
+ }
749
+ const isSingleType = model?.kind === "singleType";
750
+ if (!isSingleType && !params.documentId) {
751
+ throw new errors.ValidationError("documentId is required for Collection Types");
752
+ }
753
+ if (isSingleType) {
754
+ const doc = await strapi2.documents(uid2).findFirst();
755
+ if (!doc) {
756
+ throw new errors.NotFoundError("Document not found");
757
+ }
758
+ newParams.documentId = doc?.documentId;
759
+ }
760
+ if (!newParams.status) {
761
+ const isDPEnabled = model?.options?.draftAndPublish;
762
+ newParams.status = isDPEnabled ? "draft" : "published";
763
+ }
764
+ return newParams;
765
+ };
739
766
  const createPreviewController = () => {
740
767
  return {
741
- async getPreviewURL(ctx) {
742
- ctx.request;
768
+ /**
769
+ * Transforms an entry into a preview URL, so that it can be previewed
770
+ * in the Content Manager.
771
+ */
772
+ async getPreviewUrl(ctx) {
773
+ const uid2 = ctx.params.contentType;
774
+ const query = ctx.request.query;
775
+ const params = await validatePreviewUrl(strapi, uid2, query);
776
+ const previewService = getService(strapi, "preview");
777
+ const url = await previewService.getPreviewUrl(uid2, params);
778
+ if (!url) {
779
+ ctx.status = 204;
780
+ }
743
781
  return {
744
- data: { url: "" }
782
+ data: { url }
745
783
  };
746
784
  }
747
785
  };
@@ -753,10 +791,63 @@ const controllers$1 = {
753
791
  * passing a controller factory as the value, instead of a controller object directly
754
792
  */
755
793
  };
756
- const createPreviewService = () => {
794
+ const createPreviewService = ({ strapi: strapi2 }) => {
795
+ const config = getService(strapi2, "preview-config");
796
+ return {
797
+ async getPreviewUrl(uid2, params) {
798
+ const handler = config.getPreviewHandler();
799
+ try {
800
+ return handler(uid2, params);
801
+ } catch (error) {
802
+ strapi2.log.error(`Failed to get preview URL: ${error}`);
803
+ throw new errors.ApplicationError("Failed to get preview URL");
804
+ }
805
+ return;
806
+ }
807
+ };
808
+ };
809
+ const extendMiddlewareConfiguration = (middleware = { name: "", config: {} }) => {
810
+ const middlewares = strapi.config.get("middlewares");
811
+ const configuredMiddlewares = middlewares.map((currentMiddleware) => {
812
+ if (currentMiddleware === middleware.name) {
813
+ return middleware;
814
+ }
815
+ if (currentMiddleware.name === middleware.name) {
816
+ return mergeWith(
817
+ (objValue, srcValue) => {
818
+ if (Array.isArray(objValue)) {
819
+ return objValue.concat(srcValue);
820
+ }
821
+ return void 0;
822
+ },
823
+ currentMiddleware,
824
+ middleware
825
+ );
826
+ }
827
+ return currentMiddleware;
828
+ });
829
+ strapi.config.set("middlewares", configuredMiddlewares);
757
830
  };
758
831
  const createPreviewConfigService = ({ strapi: strapi2 }) => {
759
832
  return {
833
+ register() {
834
+ if (!this.isEnabled()) {
835
+ return;
836
+ }
837
+ const config = strapi2.config.get("admin.preview");
838
+ if (config.config?.allowedOrigins) {
839
+ extendMiddlewareConfiguration({
840
+ name: "strapi::security",
841
+ config: {
842
+ contentSecurityPolicy: {
843
+ directives: {
844
+ "frame-src": config.config.allowedOrigins
845
+ }
846
+ }
847
+ }
848
+ });
849
+ }
850
+ },
760
851
  isEnabled() {
761
852
  const config = strapi2.config.get("admin.preview");
762
853
  if (!config) {
@@ -797,18 +888,14 @@ const services$1 = {
797
888
  preview: createPreviewService,
798
889
  "preview-config": createPreviewConfigService
799
890
  };
800
- function getService(strapi2, name) {
801
- return strapi2.service(`plugin::content-manager.${name}`);
802
- }
803
891
  const getFeature = () => {
804
- if (!strapi.features.future.isEnabled(FEATURE_ID)) {
805
- return {};
806
- }
807
892
  return {
808
- bootstrap() {
809
- console.log("Bootstrapping preview server");
893
+ register() {
810
894
  const config = getService(strapi, "preview-config");
811
895
  config.validate();
896
+ config.register();
897
+ },
898
+ bootstrap() {
812
899
  },
813
900
  routes: routes$1,
814
901
  controllers: controllers$1,
@@ -816,6 +903,14 @@ const getFeature = () => {
816
903
  };
817
904
  };
818
905
  const preview = getFeature();
906
+ const register = async ({ strapi: strapi2 }) => {
907
+ await history.register?.({ strapi: strapi2 });
908
+ await preview.register?.({ strapi: strapi2 });
909
+ };
910
+ const ALLOWED_WEBHOOK_EVENTS = {
911
+ ENTRY_PUBLISH: "entry.publish",
912
+ ENTRY_UNPUBLISH: "entry.unpublish"
913
+ };
819
914
  const bootstrap = async () => {
820
915
  Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
821
916
  strapi.get("webhookStore").addAllowedEvent(key, value);
@@ -1379,8 +1474,7 @@ const isSortable = (schema, name) => {
1379
1474
  if (!_.has(schema.attributes, name)) {
1380
1475
  return false;
1381
1476
  }
1382
- if (schema.modelType === "component" && name === "id")
1383
- return false;
1477
+ if (schema.modelType === "component" && name === "id") return false;
1384
1478
  const attribute = schema.attributes[name];
1385
1479
  if (NON_SORTABLES.includes(attribute.type)) {
1386
1480
  return false;
@@ -1525,8 +1619,7 @@ const createDefaultSettings = async (schema) => {
1525
1619
  };
1526
1620
  };
1527
1621
  const syncSettings = async (configuration, schema) => {
1528
- if (isEmpty(configuration.settings))
1529
- return createDefaultSettings(schema);
1622
+ if (isEmpty(configuration.settings)) return createDefaultSettings(schema);
1530
1623
  const defaultField = getDefaultMainField(schema);
1531
1624
  const { mainField = defaultField, defaultSortBy = defaultField } = configuration.settings || {};
1532
1625
  return {
@@ -1702,8 +1795,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
1702
1795
  }
1703
1796
  switch (attribute.type) {
1704
1797
  case "relation": {
1705
- if (canCreate(attributePath))
1706
- return body2;
1798
+ if (canCreate(attributePath)) return body2;
1707
1799
  return set(attributePath, { set: [] }, body2);
1708
1800
  }
1709
1801
  case "component": {
@@ -1713,8 +1805,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
1713
1805
  ]);
1714
1806
  }
1715
1807
  default: {
1716
- if (canCreate(attributePath))
1717
- return body2;
1808
+ if (canCreate(attributePath)) return body2;
1718
1809
  return set(attributePath, null, body2);
1719
1810
  }
1720
1811
  }
@@ -2507,8 +2598,7 @@ const validateStatus = (sourceUid, status) => {
2507
2598
  const sourceModel = strapi.getModel(sourceUid);
2508
2599
  const isDP = contentTypes$1.hasDraftAndPublish;
2509
2600
  const isSourceDP = isDP(sourceModel);
2510
- if (!isSourceDP)
2511
- return { status: void 0 };
2601
+ if (!isSourceDP) return { status: void 0 };
2512
2602
  switch (status) {
2513
2603
  case "published":
2514
2604
  return { status: "published" };
@@ -3153,18 +3243,15 @@ async function syncMetadatas(configuration, schema) {
3153
3243
  _.set(updatedMeta, ["list", "searchable"], false);
3154
3244
  _.set(acc, [key], updatedMeta);
3155
3245
  }
3156
- if (!_.has(edit, "mainField"))
3157
- return acc;
3246
+ if (!_.has(edit, "mainField")) return acc;
3158
3247
  if (!isRelation$1(attr)) {
3159
3248
  _.set(updatedMeta, "edit", _.omit(edit, ["mainField"]));
3160
3249
  _.set(acc, [key], updatedMeta);
3161
3250
  return acc;
3162
3251
  }
3163
- if (edit.mainField === "id")
3164
- return acc;
3252
+ if (edit.mainField === "id") return acc;
3165
3253
  const targetSchema = getTargetSchema(attr.targetModel);
3166
- if (!targetSchema)
3167
- return acc;
3254
+ if (!targetSchema) return acc;
3168
3255
  if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {
3169
3256
  _.set(updatedMeta, ["edit", "mainField"], getDefaultMainField(targetSchema));
3170
3257
  _.set(acc, [key], updatedMeta);
@@ -3209,8 +3296,7 @@ function createDefaultEditLayout(schema) {
3209
3296
  return appendToEditLayout([], keys2, schema);
3210
3297
  }
3211
3298
  function syncLayouts(configuration, schema) {
3212
- if (_.isEmpty(configuration.layouts))
3213
- return createDefaultLayouts(schema);
3299
+ if (_.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);
3214
3300
  const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};
3215
3301
  let cleanList = list.filter((attr) => isListable(schema, attr));
3216
3302
  const cleanEditRelations = editRelations.filter(
@@ -3221,8 +3307,7 @@ function syncLayouts(configuration, schema) {
3221
3307
  for (const row of edit) {
3222
3308
  const newRow = [];
3223
3309
  for (const el of row) {
3224
- if (!hasEditableAttribute(schema, el.name))
3225
- continue;
3310
+ if (!hasEditableAttribute(schema, el.name)) continue;
3226
3311
  const { hasFieldSize } = getService$2("field-sizes");
3227
3312
  const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
3228
3313
  if (!isAllowedFieldSize(fieldType, el.size)) {
@@ -3253,8 +3338,7 @@ function syncLayouts(configuration, schema) {
3253
3338
  };
3254
3339
  }
3255
3340
  const appendToEditLayout = (layout = [], keysToAppend, schema) => {
3256
- if (keysToAppend.length === 0)
3257
- return layout;
3341
+ if (keysToAppend.length === 0) return layout;
3258
3342
  let currentRowIndex = Math.max(layout.length - 1, 0);
3259
3343
  if (!layout[currentRowIndex]) {
3260
3344
  layout[currentRowIndex] = [];
@@ -4245,8 +4329,7 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4245
4329
  const matchStatus = status === "published" ? v.publishedAt !== null : v.publishedAt === null;
4246
4330
  return matchLocale && matchStatus;
4247
4331
  });
4248
- if (!availableStatus)
4249
- return availableStatus;
4332
+ if (!availableStatus) return availableStatus;
4250
4333
  return pick(AVAILABLE_STATUS_FIELDS, availableStatus);
4251
4334
  },
4252
4335
  /**
@@ -4256,8 +4339,7 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4256
4339
  * @returns
4257
4340
  */
4258
4341
  async getManyAvailableStatus(uid2, documents) {
4259
- if (!documents.length)
4260
- return [];
4342
+ if (!documents.length) return [];
4261
4343
  const status = documents[0].publishedAt !== null ? "published" : "draft";
4262
4344
  const locale = documents[0]?.locale;
4263
4345
  const otherStatus = status === "published" ? "draft" : "published";
@@ -4284,10 +4366,8 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4284
4366
  } else if (otherVersion) {
4285
4367
  draftVersion = otherVersion;
4286
4368
  }
4287
- if (!draftVersion)
4288
- return CONTENT_MANAGER_STATUS.PUBLISHED;
4289
- if (!publishedVersion)
4290
- return CONTENT_MANAGER_STATUS.DRAFT;
4369
+ if (!draftVersion) return CONTENT_MANAGER_STATUS.PUBLISHED;
4370
+ if (!publishedVersion) return CONTENT_MANAGER_STATUS.DRAFT;
4291
4371
  const isDraftModified = getIsVersionLatestModification(draftVersion, publishedVersion);
4292
4372
  return isDraftModified ? CONTENT_MANAGER_STATUS.MODIFIED : CONTENT_MANAGER_STATUS.PUBLISHED;
4293
4373
  },