@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
@@ -10,8 +10,7 @@ const qs = require("qs");
10
10
  const slugify = require("@sindresorhus/slugify");
11
11
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
12
12
  function _interopNamespace(e) {
13
- if (e && e.__esModule)
14
- return e;
13
+ if (e && e.__esModule) return e;
15
14
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
16
15
  if (e) {
17
16
  for (const k in e) {
@@ -167,8 +166,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
167
166
  };
168
167
  const getRelationRestoreValue = async (versionRelationData, attribute) => {
169
168
  if (Array.isArray(versionRelationData)) {
170
- if (versionRelationData.length === 0)
171
- return versionRelationData;
169
+ if (versionRelationData.length === 0) return versionRelationData;
172
170
  const existingAndMissingRelations = await Promise.all(
173
171
  versionRelationData.map((relation) => {
174
172
  return strapi2.documents(attribute.target).findOne({
@@ -203,8 +201,7 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
203
201
  const getDefaultLocale = async () => localesService ? localesService.getDefaultLocale() : null;
204
202
  const isLocalizedContentType = (model) => i18nContentTypeService ? i18nContentTypeService.isLocalizedContentType(model) : false;
205
203
  const getLocaleDictionary = async () => {
206
- if (!localesService)
207
- return {};
204
+ if (!localesService) return {};
208
205
  const locales = await localesService.find() || [];
209
206
  return locales.reduce(
210
207
  (acc, locale) => {
@@ -617,15 +614,19 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
617
614
  });
618
615
  return result;
619
616
  });
620
- state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
617
+ state.deleteExpiredJob = nodeSchedule.scheduleJob("historyDaily", "0 0 * * *", () => {
621
618
  const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1e3;
622
619
  const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);
623
620
  strapi2.db.query(HISTORY_VERSION_UID).deleteMany({
624
621
  where: {
625
622
  created_at: {
626
- $lt: expirationDate.toISOString()
623
+ $lt: expirationDate
627
624
  }
628
625
  }
626
+ }).catch((error) => {
627
+ if (error instanceof Error) {
628
+ strapi2.log.error("Error deleting expired history versions", error.message);
629
+ }
629
630
  });
630
631
  });
631
632
  state.isInitialized = true;
@@ -736,14 +737,6 @@ const getFeature$1 = () => {
736
737
  };
737
738
  };
738
739
  const history = getFeature$1();
739
- const register = async ({ strapi: strapi2 }) => {
740
- await history.register?.({ strapi: strapi2 });
741
- };
742
- const ALLOWED_WEBHOOK_EVENTS = {
743
- ENTRY_PUBLISH: "entry.publish",
744
- ENTRY_UNPUBLISH: "entry.unpublish"
745
- };
746
- const FEATURE_ID = "preview";
747
740
  const info = { pluginName: "content-manager", type: "admin" };
748
741
  const previewRouter = {
749
742
  type: "admin",
@@ -752,7 +745,7 @@ const previewRouter = {
752
745
  method: "GET",
753
746
  info,
754
747
  path: "/preview/url/:contentType",
755
- handler: "preview.getPreviewURL",
748
+ handler: "preview.getPreviewUrl",
756
749
  config: {
757
750
  policies: ["admin::isAuthenticatedAdmin"]
758
751
  }
@@ -762,12 +755,56 @@ const previewRouter = {
762
755
  const routes$1 = {
763
756
  preview: previewRouter
764
757
  };
758
+ function getService(strapi2, name) {
759
+ return strapi2.service(`plugin::content-manager.${name}`);
760
+ }
761
+ const getPreviewUrlSchema = yup__namespace.object().shape({
762
+ // Will be undefined for single types
763
+ documentId: yup__namespace.string(),
764
+ locale: yup__namespace.string().nullable(),
765
+ status: yup__namespace.string()
766
+ }).required();
767
+ const validatePreviewUrl = async (strapi2, uid2, params) => {
768
+ await strapiUtils.validateYupSchema(getPreviewUrlSchema)(params);
769
+ const newParams = fp.pick(["documentId", "locale", "status"], params);
770
+ const model = strapi2.getModel(uid2);
771
+ if (!model || model.modelType !== "contentType") {
772
+ throw new strapiUtils.errors.ValidationError("Invalid content type");
773
+ }
774
+ const isSingleType = model?.kind === "singleType";
775
+ if (!isSingleType && !params.documentId) {
776
+ throw new strapiUtils.errors.ValidationError("documentId is required for Collection Types");
777
+ }
778
+ if (isSingleType) {
779
+ const doc = await strapi2.documents(uid2).findFirst();
780
+ if (!doc) {
781
+ throw new strapiUtils.errors.NotFoundError("Document not found");
782
+ }
783
+ newParams.documentId = doc?.documentId;
784
+ }
785
+ if (!newParams.status) {
786
+ const isDPEnabled = model?.options?.draftAndPublish;
787
+ newParams.status = isDPEnabled ? "draft" : "published";
788
+ }
789
+ return newParams;
790
+ };
765
791
  const createPreviewController = () => {
766
792
  return {
767
- async getPreviewURL(ctx) {
768
- ctx.request;
793
+ /**
794
+ * Transforms an entry into a preview URL, so that it can be previewed
795
+ * in the Content Manager.
796
+ */
797
+ async getPreviewUrl(ctx) {
798
+ const uid2 = ctx.params.contentType;
799
+ const query = ctx.request.query;
800
+ const params = await validatePreviewUrl(strapi, uid2, query);
801
+ const previewService = getService(strapi, "preview");
802
+ const url = await previewService.getPreviewUrl(uid2, params);
803
+ if (!url) {
804
+ ctx.status = 204;
805
+ }
769
806
  return {
770
- data: { url: "" }
807
+ data: { url }
771
808
  };
772
809
  }
773
810
  };
@@ -779,10 +816,63 @@ const controllers$1 = {
779
816
  * passing a controller factory as the value, instead of a controller object directly
780
817
  */
781
818
  };
782
- const createPreviewService = () => {
819
+ const createPreviewService = ({ strapi: strapi2 }) => {
820
+ const config = getService(strapi2, "preview-config");
821
+ return {
822
+ async getPreviewUrl(uid2, params) {
823
+ const handler = config.getPreviewHandler();
824
+ try {
825
+ return handler(uid2, params);
826
+ } catch (error) {
827
+ strapi2.log.error(`Failed to get preview URL: ${error}`);
828
+ throw new strapiUtils.errors.ApplicationError("Failed to get preview URL");
829
+ }
830
+ return;
831
+ }
832
+ };
833
+ };
834
+ const extendMiddlewareConfiguration = (middleware = { name: "", config: {} }) => {
835
+ const middlewares = strapi.config.get("middlewares");
836
+ const configuredMiddlewares = middlewares.map((currentMiddleware) => {
837
+ if (currentMiddleware === middleware.name) {
838
+ return middleware;
839
+ }
840
+ if (currentMiddleware.name === middleware.name) {
841
+ return fp.mergeWith(
842
+ (objValue, srcValue) => {
843
+ if (Array.isArray(objValue)) {
844
+ return objValue.concat(srcValue);
845
+ }
846
+ return void 0;
847
+ },
848
+ currentMiddleware,
849
+ middleware
850
+ );
851
+ }
852
+ return currentMiddleware;
853
+ });
854
+ strapi.config.set("middlewares", configuredMiddlewares);
783
855
  };
784
856
  const createPreviewConfigService = ({ strapi: strapi2 }) => {
785
857
  return {
858
+ register() {
859
+ if (!this.isEnabled()) {
860
+ return;
861
+ }
862
+ const config = strapi2.config.get("admin.preview");
863
+ if (config.config?.allowedOrigins) {
864
+ extendMiddlewareConfiguration({
865
+ name: "strapi::security",
866
+ config: {
867
+ contentSecurityPolicy: {
868
+ directives: {
869
+ "frame-src": config.config.allowedOrigins
870
+ }
871
+ }
872
+ }
873
+ });
874
+ }
875
+ },
786
876
  isEnabled() {
787
877
  const config = strapi2.config.get("admin.preview");
788
878
  if (!config) {
@@ -823,18 +913,14 @@ const services$1 = {
823
913
  preview: createPreviewService,
824
914
  "preview-config": createPreviewConfigService
825
915
  };
826
- function getService(strapi2, name) {
827
- return strapi2.service(`plugin::content-manager.${name}`);
828
- }
829
916
  const getFeature = () => {
830
- if (!strapi.features.future.isEnabled(FEATURE_ID)) {
831
- return {};
832
- }
833
917
  return {
834
- bootstrap() {
835
- console.log("Bootstrapping preview server");
918
+ register() {
836
919
  const config = getService(strapi, "preview-config");
837
920
  config.validate();
921
+ config.register();
922
+ },
923
+ bootstrap() {
838
924
  },
839
925
  routes: routes$1,
840
926
  controllers: controllers$1,
@@ -842,6 +928,14 @@ const getFeature = () => {
842
928
  };
843
929
  };
844
930
  const preview = getFeature();
931
+ const register = async ({ strapi: strapi2 }) => {
932
+ await history.register?.({ strapi: strapi2 });
933
+ await preview.register?.({ strapi: strapi2 });
934
+ };
935
+ const ALLOWED_WEBHOOK_EVENTS = {
936
+ ENTRY_PUBLISH: "entry.publish",
937
+ ENTRY_UNPUBLISH: "entry.unpublish"
938
+ };
845
939
  const bootstrap = async () => {
846
940
  Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
847
941
  strapi.get("webhookStore").addAllowedEvent(key, value);
@@ -1405,8 +1499,7 @@ const isSortable = (schema, name) => {
1405
1499
  if (!___default.default.has(schema.attributes, name)) {
1406
1500
  return false;
1407
1501
  }
1408
- if (schema.modelType === "component" && name === "id")
1409
- return false;
1502
+ if (schema.modelType === "component" && name === "id") return false;
1410
1503
  const attribute = schema.attributes[name];
1411
1504
  if (NON_SORTABLES.includes(attribute.type)) {
1412
1505
  return false;
@@ -1551,8 +1644,7 @@ const createDefaultSettings = async (schema) => {
1551
1644
  };
1552
1645
  };
1553
1646
  const syncSettings = async (configuration, schema) => {
1554
- if (fp.isEmpty(configuration.settings))
1555
- return createDefaultSettings(schema);
1647
+ if (fp.isEmpty(configuration.settings)) return createDefaultSettings(schema);
1556
1648
  const defaultField = getDefaultMainField(schema);
1557
1649
  const { mainField = defaultField, defaultSortBy = defaultField } = configuration.settings || {};
1558
1650
  return {
@@ -1728,8 +1820,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
1728
1820
  }
1729
1821
  switch (attribute.type) {
1730
1822
  case "relation": {
1731
- if (canCreate(attributePath))
1732
- return body2;
1823
+ if (canCreate(attributePath)) return body2;
1733
1824
  return fp.set(attributePath, { set: [] }, body2);
1734
1825
  }
1735
1826
  case "component": {
@@ -1739,8 +1830,7 @@ const excludeNotCreatableFields = (uid2, permissionChecker2) => (body, path = []
1739
1830
  ]);
1740
1831
  }
1741
1832
  default: {
1742
- if (canCreate(attributePath))
1743
- return body2;
1833
+ if (canCreate(attributePath)) return body2;
1744
1834
  return fp.set(attributePath, null, body2);
1745
1835
  }
1746
1836
  }
@@ -2533,8 +2623,7 @@ const validateStatus = (sourceUid, status) => {
2533
2623
  const sourceModel = strapi.getModel(sourceUid);
2534
2624
  const isDP = strapiUtils.contentTypes.hasDraftAndPublish;
2535
2625
  const isSourceDP = isDP(sourceModel);
2536
- if (!isSourceDP)
2537
- return { status: void 0 };
2626
+ if (!isSourceDP) return { status: void 0 };
2538
2627
  switch (status) {
2539
2628
  case "published":
2540
2629
  return { status: "published" };
@@ -3179,18 +3268,15 @@ async function syncMetadatas(configuration, schema) {
3179
3268
  ___default.default.set(updatedMeta, ["list", "searchable"], false);
3180
3269
  ___default.default.set(acc, [key], updatedMeta);
3181
3270
  }
3182
- if (!___default.default.has(edit, "mainField"))
3183
- return acc;
3271
+ if (!___default.default.has(edit, "mainField")) return acc;
3184
3272
  if (!isRelation$1(attr)) {
3185
3273
  ___default.default.set(updatedMeta, "edit", ___default.default.omit(edit, ["mainField"]));
3186
3274
  ___default.default.set(acc, [key], updatedMeta);
3187
3275
  return acc;
3188
3276
  }
3189
- if (edit.mainField === "id")
3190
- return acc;
3277
+ if (edit.mainField === "id") return acc;
3191
3278
  const targetSchema = getTargetSchema(attr.targetModel);
3192
- if (!targetSchema)
3193
- return acc;
3279
+ if (!targetSchema) return acc;
3194
3280
  if (!isSortable(targetSchema, edit.mainField) && !isListable(targetSchema, edit.mainField)) {
3195
3281
  ___default.default.set(updatedMeta, ["edit", "mainField"], getDefaultMainField(targetSchema));
3196
3282
  ___default.default.set(acc, [key], updatedMeta);
@@ -3235,8 +3321,7 @@ function createDefaultEditLayout(schema) {
3235
3321
  return appendToEditLayout([], keys2, schema);
3236
3322
  }
3237
3323
  function syncLayouts(configuration, schema) {
3238
- if (___default.default.isEmpty(configuration.layouts))
3239
- return createDefaultLayouts(schema);
3324
+ if (___default.default.isEmpty(configuration.layouts)) return createDefaultLayouts(schema);
3240
3325
  const { list = [], editRelations = [], edit = [] } = configuration.layouts || {};
3241
3326
  let cleanList = list.filter((attr) => isListable(schema, attr));
3242
3327
  const cleanEditRelations = editRelations.filter(
@@ -3247,8 +3332,7 @@ function syncLayouts(configuration, schema) {
3247
3332
  for (const row of edit) {
3248
3333
  const newRow = [];
3249
3334
  for (const el of row) {
3250
- if (!hasEditableAttribute(schema, el.name))
3251
- continue;
3335
+ if (!hasEditableAttribute(schema, el.name)) continue;
3252
3336
  const { hasFieldSize } = getService$2("field-sizes");
3253
3337
  const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
3254
3338
  if (!isAllowedFieldSize(fieldType, el.size)) {
@@ -3279,8 +3363,7 @@ function syncLayouts(configuration, schema) {
3279
3363
  };
3280
3364
  }
3281
3365
  const appendToEditLayout = (layout = [], keysToAppend, schema) => {
3282
- if (keysToAppend.length === 0)
3283
- return layout;
3366
+ if (keysToAppend.length === 0) return layout;
3284
3367
  let currentRowIndex = Math.max(layout.length - 1, 0);
3285
3368
  if (!layout[currentRowIndex]) {
3286
3369
  layout[currentRowIndex] = [];
@@ -4271,8 +4354,7 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4271
4354
  const matchStatus = status === "published" ? v.publishedAt !== null : v.publishedAt === null;
4272
4355
  return matchLocale && matchStatus;
4273
4356
  });
4274
- if (!availableStatus)
4275
- return availableStatus;
4357
+ if (!availableStatus) return availableStatus;
4276
4358
  return fp.pick(AVAILABLE_STATUS_FIELDS, availableStatus);
4277
4359
  },
4278
4360
  /**
@@ -4282,8 +4364,7 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4282
4364
  * @returns
4283
4365
  */
4284
4366
  async getManyAvailableStatus(uid2, documents) {
4285
- if (!documents.length)
4286
- return [];
4367
+ if (!documents.length) return [];
4287
4368
  const status = documents[0].publishedAt !== null ? "published" : "draft";
4288
4369
  const locale = documents[0]?.locale;
4289
4370
  const otherStatus = status === "published" ? "draft" : "published";
@@ -4310,10 +4391,8 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
4310
4391
  } else if (otherVersion) {
4311
4392
  draftVersion = otherVersion;
4312
4393
  }
4313
- if (!draftVersion)
4314
- return CONTENT_MANAGER_STATUS.PUBLISHED;
4315
- if (!publishedVersion)
4316
- return CONTENT_MANAGER_STATUS.DRAFT;
4394
+ if (!draftVersion) return CONTENT_MANAGER_STATUS.PUBLISHED;
4395
+ if (!publishedVersion) return CONTENT_MANAGER_STATUS.DRAFT;
4317
4396
  const isDraftModified = getIsVersionLatestModification(draftVersion, publishedVersion);
4318
4397
  return isDraftModified ? CONTENT_MANAGER_STATUS.MODIFIED : CONTENT_MANAGER_STATUS.PUBLISHED;
4319
4398
  },