@strapi/content-manager 5.0.6 → 5.1.1
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.
- package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js → ComponentConfigurationPage-CpJNPBgk.js} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-FqfsxQ1j.js.map → ComponentConfigurationPage-CpJNPBgk.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs → ComponentConfigurationPage-TYDPg5WG.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-DfFSZQxe.mjs.map → ComponentConfigurationPage-TYDPg5WG.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js → EditConfigurationPage-CFDe6SA1.js} +4 -4
- package/dist/_chunks/{EditConfigurationPage-Cn0e8t3I.js.map → EditConfigurationPage-CFDe6SA1.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs → EditConfigurationPage-DqL8Pq5r.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-DdPNAbl3.mjs.map → EditConfigurationPage-DqL8Pq5r.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-B82x_x1b.mjs → EditViewPage-RXrFLav2.mjs} +3 -3
- package/dist/_chunks/EditViewPage-RXrFLav2.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-DlxEHhUt.js → EditViewPage-khfP2CR3.js} +3 -3
- package/dist/_chunks/EditViewPage-khfP2CR3.js.map +1 -0
- package/dist/_chunks/{Field-DufHXW17.mjs → Field--rQeS6Zj.mjs} +5 -5
- package/dist/_chunks/Field--rQeS6Zj.mjs.map +1 -0
- package/dist/_chunks/{Field-COL25JiC.js → Field-C1ftmTe9.js} +5 -5
- package/dist/_chunks/Field-C1ftmTe9.js.map +1 -0
- package/dist/_chunks/{Form-u_kAOhwB.mjs → Form-COtGXyUE.mjs} +2 -2
- package/dist/_chunks/{Form-u_kAOhwB.mjs.map → Form-COtGXyUE.mjs.map} +1 -1
- package/dist/_chunks/{Form-BssUwrTO.js → Form-CwdX5oLw.js} +2 -2
- package/dist/_chunks/{Form-BssUwrTO.js.map → Form-CwdX5oLw.js.map} +1 -1
- package/dist/_chunks/{History-DRwA3oMM.mjs → History-BevwkPO1.mjs} +18 -34
- package/dist/_chunks/History-BevwkPO1.mjs.map +1 -0
- package/dist/_chunks/{History-C9t9UqpO.js → History-DKS2aqqM.js} +18 -34
- package/dist/_chunks/History-DKS2aqqM.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs → ListConfigurationPage-DNfZDtDA.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-BxfQJzPk.mjs.map → ListConfigurationPage-DNfZDtDA.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js → ListConfigurationPage-LSYSPZHH.js} +3 -3
- package/dist/_chunks/{ListConfigurationPage-BXYPohh-.js.map → ListConfigurationPage-LSYSPZHH.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-CELx2ysp.mjs → ListViewPage-C1PyuYRS.mjs} +15 -4
- package/dist/_chunks/{ListViewPage-CELx2ysp.mjs.map → ListViewPage-C1PyuYRS.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-D2VD8Szg.js → ListViewPage-DlUpqLIo.js} +15 -4
- package/dist/_chunks/ListViewPage-DlUpqLIo.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs → NoContentTypePage-C9q744z1.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DtJ9jcfk.mjs.map → NoContentTypePage-C9q744z1.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js → NoContentTypePage-m8wt3sf6.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BV9IjJSM.js.map → NoContentTypePage-m8wt3sf6.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs → NoPermissionsPage-8BM-LWta.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DWleVYK7.mjs.map → NoPermissionsPage-8BM-LWta.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js → NoPermissionsPage-DLfPsA0Q.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-Dp8NpF9I.js.map → NoPermissionsPage-DLfPsA0Q.js.map} +1 -1
- package/dist/_chunks/{Relations-BTcf5xaw.mjs → Relations-D25xRcFy.mjs} +44 -17
- package/dist/_chunks/Relations-D25xRcFy.mjs.map +1 -0
- package/dist/_chunks/{Relations-DR7EUgyC.js → Relations-OMriCP_L.js} +43 -16
- package/dist/_chunks/Relations-OMriCP_L.js.map +1 -0
- package/dist/_chunks/{en-Bm0D0IWz.js → en-Bdpa50w3.js} +6 -2
- package/dist/_chunks/{en-Bm0D0IWz.js.map → en-Bdpa50w3.js.map} +1 -1
- package/dist/_chunks/{en-DKV44jRb.mjs → en-CZw4xdPY.mjs} +6 -2
- package/dist/_chunks/{en-DKV44jRb.mjs.map → en-CZw4xdPY.mjs.map} +1 -1
- package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
- package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
- package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
- package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
- package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
- package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
- package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
- package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
- package/dist/_chunks/{index-wnqzm4Q8.mjs → index-BvGihCJp.mjs} +128 -23
- package/dist/_chunks/index-BvGihCJp.mjs.map +1 -0
- package/dist/_chunks/{index-BdMf2lfT.js → index-DqZnjo8F.js} +127 -21
- package/dist/_chunks/index-DqZnjo8F.js.map +1 -0
- package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
- package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
- package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
- package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
- package/dist/_chunks/{layout-B2MyZU-_.js → layout-CmaemAO3.js} +3 -3
- package/dist/_chunks/{layout-B2MyZU-_.js.map → layout-CmaemAO3.js.map} +1 -1
- package/dist/_chunks/{layout-2CfjL0T9.mjs → layout-ykHSe2KQ.mjs} +3 -3
- package/dist/_chunks/{layout-2CfjL0T9.mjs.map → layout-ykHSe2KQ.mjs.map} +1 -1
- package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
- package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
- package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
- package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
- package/dist/_chunks/{relations-BH7JJGGe.js → relations-D9fKsCLY.js} +3 -7
- package/dist/_chunks/relations-D9fKsCLY.js.map +1 -0
- package/dist/_chunks/{relations-C0w0GcXi.mjs → relations-u-Vz51Ea.mjs} +3 -7
- package/dist/_chunks/relations-u-Vz51Ea.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
- package/dist/admin/src/preview/constants.d.ts +1 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/admin/src/preview/services/preview.d.ts +3 -0
- package/dist/server/index.js +344 -144
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +344 -144
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +2 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/preview/constants.d.ts +2 -0
- package/dist/server/src/preview/constants.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/index.d.ts +2 -0
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/preview.d.ts +13 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts +4 -0
- package/dist/server/src/preview/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/index.d.ts +8 -0
- package/dist/server/src/preview/routes/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/preview.d.ts +4 -0
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
- package/dist/server/src/preview/services/index.d.ts +15 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts +30 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview.d.ts +12 -0
- package/dist/server/src/preview/services/preview.d.ts.map +1 -0
- package/dist/server/src/preview/utils.d.ts +18 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +8 -8
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/index.d.ts +1 -0
- package/dist/shared/contracts/index.d.ts.map +1 -1
- package/dist/shared/contracts/preview.d.ts +27 -0
- package/dist/shared/contracts/preview.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +4 -0
- package/dist/shared/index.mjs.map +1 -1
- package/package.json +6 -6
- package/dist/_chunks/EditViewPage-B82x_x1b.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-DlxEHhUt.js.map +0 -1
- package/dist/_chunks/Field-COL25JiC.js.map +0 -1
- package/dist/_chunks/Field-DufHXW17.mjs.map +0 -1
- package/dist/_chunks/History-C9t9UqpO.js.map +0 -1
- package/dist/_chunks/History-DRwA3oMM.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-D2VD8Szg.js.map +0 -1
- package/dist/_chunks/Relations-BTcf5xaw.mjs.map +0 -1
- package/dist/_chunks/Relations-DR7EUgyC.js.map +0 -1
- package/dist/_chunks/index-BdMf2lfT.js.map +0 -1
- package/dist/_chunks/index-wnqzm4Q8.mjs.map +0 -1
- package/dist/_chunks/relations-BH7JJGGe.js.map +0 -1
- package/dist/_chunks/relations-C0w0GcXi.mjs.map +0 -1
package/dist/server/index.js
CHANGED
@@ -33,10 +33,10 @@ const isNil__default = /* @__PURE__ */ _interopDefault(isNil);
|
|
33
33
|
const ___default = /* @__PURE__ */ _interopDefault(_);
|
34
34
|
const qs__default = /* @__PURE__ */ _interopDefault(qs);
|
35
35
|
const slugify__default = /* @__PURE__ */ _interopDefault(slugify);
|
36
|
-
const getService$
|
36
|
+
const getService$2 = (name) => {
|
37
37
|
return strapi.plugin("content-manager").service(name);
|
38
38
|
};
|
39
|
-
function getService(strapi2, name) {
|
39
|
+
function getService$1(strapi2, name) {
|
40
40
|
return strapi2.service(`plugin::content-manager.${name}`);
|
41
41
|
}
|
42
42
|
const historyRestoreVersionSchema = yup__namespace.object().shape({
|
@@ -72,7 +72,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
72
72
|
if (!isSingleType && (!contentTypeUid || !ctx.query.documentId)) {
|
73
73
|
throw new strapiUtils.errors.ForbiddenError("contentType and documentId are required");
|
74
74
|
}
|
75
|
-
const permissionChecker2 = getService$
|
75
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
76
76
|
userAbility: ctx.state.userAbility,
|
77
77
|
model: ctx.query.contentType
|
78
78
|
});
|
@@ -80,7 +80,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
80
80
|
return ctx.forbidden();
|
81
81
|
}
|
82
82
|
const query = await permissionChecker2.sanitizeQuery(ctx.query);
|
83
|
-
const { results, pagination } = await getService(strapi2, "history").findVersionsPage({
|
83
|
+
const { results, pagination } = await getService$1(strapi2, "history").findVersionsPage({
|
84
84
|
query: {
|
85
85
|
...query,
|
86
86
|
...getValidPagination({ page: query.page, pageSize: query.pageSize })
|
@@ -105,14 +105,14 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
105
105
|
async restoreVersion(ctx) {
|
106
106
|
const request = ctx.request;
|
107
107
|
await validateRestoreVersion(request.body, "contentType is required");
|
108
|
-
const permissionChecker2 = getService$
|
108
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
109
109
|
userAbility: ctx.state.userAbility,
|
110
110
|
model: request.body.contentType
|
111
111
|
});
|
112
112
|
if (permissionChecker2.cannot.update()) {
|
113
113
|
throw new strapiUtils.errors.ForbiddenError();
|
114
114
|
}
|
115
|
-
const restoredDocument = await getService(strapi2, "history").restoreVersion(
|
115
|
+
const restoredDocument = await getService$1(strapi2, "history").restoreVersion(
|
116
116
|
request.params.versionId
|
117
117
|
);
|
118
118
|
return {
|
@@ -121,7 +121,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
121
121
|
}
|
122
122
|
};
|
123
123
|
};
|
124
|
-
const controllers$
|
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
|
@@ -228,6 +228,17 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
228
228
|
const meta = await documentMetadataService.getMetadata(contentTypeUid, document);
|
229
229
|
return documentMetadataService.getStatus(document, meta.availableStatus);
|
230
230
|
};
|
231
|
+
const getComponentFields = (componentUID) => {
|
232
|
+
return Object.entries(strapi2.getModel(componentUID).attributes).reduce(
|
233
|
+
(fieldsAcc, [key, attribute]) => {
|
234
|
+
if (!["relation", "media", "component", "dynamiczone"].includes(attribute.type)) {
|
235
|
+
fieldsAcc.push(key);
|
236
|
+
}
|
237
|
+
return fieldsAcc;
|
238
|
+
},
|
239
|
+
[]
|
240
|
+
);
|
241
|
+
};
|
231
242
|
const getDeepPopulate2 = (uid2, useDatabaseSyntax = false) => {
|
232
243
|
const model = strapi2.getModel(uid2);
|
233
244
|
const attributes = Object.entries(model.attributes);
|
@@ -251,13 +262,19 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
251
262
|
}
|
252
263
|
case "component": {
|
253
264
|
const populate = getDeepPopulate2(attribute.component);
|
254
|
-
acc[attributeName] = {
|
265
|
+
acc[attributeName] = {
|
266
|
+
populate,
|
267
|
+
[fieldSelector]: getComponentFields(attribute.component)
|
268
|
+
};
|
255
269
|
break;
|
256
270
|
}
|
257
271
|
case "dynamiczone": {
|
258
272
|
const populatedComponents = (attribute.components || []).reduce(
|
259
273
|
(acc2, componentUID) => {
|
260
|
-
acc2[componentUID] = {
|
274
|
+
acc2[componentUID] = {
|
275
|
+
populate: getDeepPopulate2(componentUID),
|
276
|
+
[fieldSelector]: getComponentFields(componentUID)
|
277
|
+
};
|
261
278
|
return acc2;
|
262
279
|
},
|
263
280
|
{}
|
@@ -370,7 +387,7 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
370
387
|
const attributeValue = entry.data[attributeKey];
|
371
388
|
const attributeValues = Array.isArray(attributeValue) ? attributeValue : [attributeValue];
|
372
389
|
if (attributeSchema.type === "media") {
|
373
|
-
const permissionChecker2 = getService$
|
390
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
374
391
|
userAbility: params.state.userAbility,
|
375
392
|
model: "plugin::upload.file"
|
376
393
|
});
|
@@ -411,7 +428,7 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
411
428
|
[attributeKey]: adminUsers
|
412
429
|
};
|
413
430
|
}
|
414
|
-
const permissionChecker2 = getService$
|
431
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
415
432
|
userAbility: params.state.userAbility,
|
416
433
|
model: attributeSchema.target
|
417
434
|
});
|
@@ -587,7 +604,7 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
587
604
|
onCommit(async () => {
|
588
605
|
for (const entry of localeEntries) {
|
589
606
|
const status = await serviceUtils.getVersionStatus(uid2, entry);
|
590
|
-
await getService(strapi2, "history").createVersion({
|
607
|
+
await getService$1(strapi2, "history").createVersion({
|
591
608
|
contentType: uid2,
|
592
609
|
data: fp.omit(FIELDS_TO_IGNORE, entry),
|
593
610
|
relatedDocumentId: documentId,
|
@@ -600,15 +617,19 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
600
617
|
});
|
601
618
|
return result;
|
602
619
|
});
|
603
|
-
state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
|
620
|
+
state.deleteExpiredJob = nodeSchedule.scheduleJob("historyDaily", "0 0 * * *", () => {
|
604
621
|
const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1e3;
|
605
622
|
const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);
|
606
623
|
strapi2.db.query(HISTORY_VERSION_UID).deleteMany({
|
607
624
|
where: {
|
608
625
|
created_at: {
|
609
|
-
$lt: expirationDate
|
626
|
+
$lt: expirationDate
|
610
627
|
}
|
611
628
|
}
|
629
|
+
}).catch((error) => {
|
630
|
+
if (error instanceof Error) {
|
631
|
+
strapi2.log.error("Error deleting expired history versions", error.message);
|
632
|
+
}
|
612
633
|
});
|
613
634
|
});
|
614
635
|
state.isInitialized = true;
|
@@ -620,17 +641,17 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
620
641
|
}
|
621
642
|
};
|
622
643
|
};
|
623
|
-
const services$
|
644
|
+
const services$2 = {
|
624
645
|
history: createHistoryService,
|
625
646
|
lifecycles: createLifecyclesService
|
626
647
|
};
|
627
|
-
const info = { pluginName: "content-manager", type: "admin" };
|
648
|
+
const info$1 = { pluginName: "content-manager", type: "admin" };
|
628
649
|
const historyVersionRouter = {
|
629
650
|
type: "admin",
|
630
651
|
routes: [
|
631
652
|
{
|
632
653
|
method: "GET",
|
633
|
-
info,
|
654
|
+
info: info$1,
|
634
655
|
path: "/history-versions",
|
635
656
|
handler: "history-version.findMany",
|
636
657
|
config: {
|
@@ -639,7 +660,7 @@ const historyVersionRouter = {
|
|
639
660
|
},
|
640
661
|
{
|
641
662
|
method: "PUT",
|
642
|
-
info,
|
663
|
+
info: info$1,
|
643
664
|
path: "/history-versions/:versionId/restore",
|
644
665
|
handler: "history-version.restoreVersion",
|
645
666
|
config: {
|
@@ -648,7 +669,7 @@ const historyVersionRouter = {
|
|
648
669
|
}
|
649
670
|
]
|
650
671
|
};
|
651
|
-
const routes$
|
672
|
+
const routes$2 = {
|
652
673
|
"history-version": historyVersionRouter
|
653
674
|
};
|
654
675
|
const historyVersion = {
|
@@ -695,21 +716,21 @@ const historyVersion = {
|
|
695
716
|
}
|
696
717
|
}
|
697
718
|
};
|
698
|
-
const getFeature = () => {
|
719
|
+
const getFeature$1 = () => {
|
699
720
|
if (strapi.ee.features.isEnabled("cms-content-history")) {
|
700
721
|
return {
|
701
722
|
register({ strapi: strapi2 }) {
|
702
723
|
strapi2.get("models").add(historyVersion);
|
703
724
|
},
|
704
725
|
bootstrap({ strapi: strapi2 }) {
|
705
|
-
getService(strapi2, "lifecycles").bootstrap();
|
726
|
+
getService$1(strapi2, "lifecycles").bootstrap();
|
706
727
|
},
|
707
728
|
destroy({ strapi: strapi2 }) {
|
708
|
-
getService(strapi2, "lifecycles").destroy();
|
729
|
+
getService$1(strapi2, "lifecycles").destroy();
|
709
730
|
},
|
710
|
-
controllers: controllers$
|
711
|
-
services: services$
|
712
|
-
routes: routes$
|
731
|
+
controllers: controllers$2,
|
732
|
+
services: services$2,
|
733
|
+
routes: routes$2
|
713
734
|
};
|
714
735
|
}
|
715
736
|
return {
|
@@ -718,7 +739,7 @@ const getFeature = () => {
|
|
718
739
|
}
|
719
740
|
};
|
720
741
|
};
|
721
|
-
const history = getFeature();
|
742
|
+
const history = getFeature$1();
|
722
743
|
const register = async ({ strapi: strapi2 }) => {
|
723
744
|
await history.register?.({ strapi: strapi2 });
|
724
745
|
};
|
@@ -726,15 +747,165 @@ const ALLOWED_WEBHOOK_EVENTS = {
|
|
726
747
|
ENTRY_PUBLISH: "entry.publish",
|
727
748
|
ENTRY_UNPUBLISH: "entry.unpublish"
|
728
749
|
};
|
750
|
+
const FEATURE_ID = "preview";
|
751
|
+
const info = { pluginName: "content-manager", type: "admin" };
|
752
|
+
const previewRouter = {
|
753
|
+
type: "admin",
|
754
|
+
routes: [
|
755
|
+
{
|
756
|
+
method: "GET",
|
757
|
+
info,
|
758
|
+
path: "/preview/url/:contentType",
|
759
|
+
handler: "preview.getPreviewUrl",
|
760
|
+
config: {
|
761
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
762
|
+
}
|
763
|
+
}
|
764
|
+
]
|
765
|
+
};
|
766
|
+
const routes$1 = {
|
767
|
+
preview: previewRouter
|
768
|
+
};
|
769
|
+
function getService(strapi2, name) {
|
770
|
+
return strapi2.service(`plugin::content-manager.${name}`);
|
771
|
+
}
|
772
|
+
const getPreviewUrlSchema = yup__namespace.object().shape({
|
773
|
+
// Will be undefined for single types
|
774
|
+
documentId: yup__namespace.string(),
|
775
|
+
locale: yup__namespace.string().nullable(),
|
776
|
+
status: yup__namespace.string()
|
777
|
+
}).required();
|
778
|
+
const validatePreviewUrl = async (strapi2, uid2, params) => {
|
779
|
+
await strapiUtils.validateYupSchema(getPreviewUrlSchema)(params);
|
780
|
+
const newParams = fp.pick(["documentId", "locale", "status"], params);
|
781
|
+
const model = strapi2.getModel(uid2);
|
782
|
+
if (!model || model.modelType !== "contentType") {
|
783
|
+
throw new strapiUtils.errors.ValidationError("Invalid content type");
|
784
|
+
}
|
785
|
+
const isSingleType = model?.kind === "singleType";
|
786
|
+
if (!isSingleType && !params.documentId) {
|
787
|
+
throw new strapiUtils.errors.ValidationError("documentId is required for Collection Types");
|
788
|
+
}
|
789
|
+
if (isSingleType) {
|
790
|
+
const doc = await strapi2.documents(uid2).findFirst();
|
791
|
+
if (!doc) {
|
792
|
+
throw new strapiUtils.errors.NotFoundError("Document not found");
|
793
|
+
}
|
794
|
+
newParams.documentId = doc?.documentId;
|
795
|
+
}
|
796
|
+
return newParams;
|
797
|
+
};
|
798
|
+
const createPreviewController = () => {
|
799
|
+
return {
|
800
|
+
/**
|
801
|
+
* Transforms an entry into a preview URL, so that it can be previewed
|
802
|
+
* in the Content Manager.
|
803
|
+
*/
|
804
|
+
async getPreviewUrl(ctx) {
|
805
|
+
const uid2 = ctx.params.contentType;
|
806
|
+
const query = ctx.request.query;
|
807
|
+
const params = await validatePreviewUrl(strapi, uid2, query);
|
808
|
+
const previewService = getService(strapi, "preview");
|
809
|
+
const url = await previewService.getPreviewUrl(uid2, params);
|
810
|
+
if (!url) {
|
811
|
+
ctx.status = 204;
|
812
|
+
}
|
813
|
+
return {
|
814
|
+
data: { url }
|
815
|
+
};
|
816
|
+
}
|
817
|
+
};
|
818
|
+
};
|
819
|
+
const controllers$1 = {
|
820
|
+
preview: createPreviewController
|
821
|
+
/**
|
822
|
+
* Casting is needed because the types aren't aware that Strapi supports
|
823
|
+
* passing a controller factory as the value, instead of a controller object directly
|
824
|
+
*/
|
825
|
+
};
|
826
|
+
const createPreviewService = ({ strapi: strapi2 }) => {
|
827
|
+
const config = getService(strapi2, "preview-config");
|
828
|
+
return {
|
829
|
+
async getPreviewUrl(uid2, params) {
|
830
|
+
const handler = config.getPreviewHandler();
|
831
|
+
try {
|
832
|
+
return handler(uid2, params);
|
833
|
+
} catch (error) {
|
834
|
+
strapi2.log.error(`Failed to get preview URL: ${error}`);
|
835
|
+
throw new strapiUtils.errors.ApplicationError("Failed to get preview URL");
|
836
|
+
}
|
837
|
+
return;
|
838
|
+
}
|
839
|
+
};
|
840
|
+
};
|
841
|
+
const createPreviewConfigService = ({ strapi: strapi2 }) => {
|
842
|
+
return {
|
843
|
+
isEnabled() {
|
844
|
+
const config = strapi2.config.get("admin.preview");
|
845
|
+
if (!config) {
|
846
|
+
return false;
|
847
|
+
}
|
848
|
+
return config?.enabled ?? true;
|
849
|
+
},
|
850
|
+
/**
|
851
|
+
* Validate if the configuration is valid
|
852
|
+
*/
|
853
|
+
validate() {
|
854
|
+
if (!this.isEnabled()) {
|
855
|
+
return;
|
856
|
+
}
|
857
|
+
const handler = this.getPreviewHandler();
|
858
|
+
if (typeof handler !== "function") {
|
859
|
+
throw new strapiUtils.errors.ValidationError(
|
860
|
+
"Preview configuration is invalid. Handler must be a function"
|
861
|
+
);
|
862
|
+
}
|
863
|
+
},
|
864
|
+
/**
|
865
|
+
* Utility to get the preview handler from the configuration
|
866
|
+
*/
|
867
|
+
getPreviewHandler() {
|
868
|
+
const config = strapi2.config.get("admin.preview");
|
869
|
+
const emptyHandler = () => {
|
870
|
+
return void 0;
|
871
|
+
};
|
872
|
+
if (!this.isEnabled()) {
|
873
|
+
return emptyHandler;
|
874
|
+
}
|
875
|
+
return config?.config?.handler || emptyHandler;
|
876
|
+
}
|
877
|
+
};
|
878
|
+
};
|
879
|
+
const services$1 = {
|
880
|
+
preview: createPreviewService,
|
881
|
+
"preview-config": createPreviewConfigService
|
882
|
+
};
|
883
|
+
const getFeature = () => {
|
884
|
+
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
885
|
+
return {};
|
886
|
+
}
|
887
|
+
return {
|
888
|
+
bootstrap() {
|
889
|
+
console.log("Bootstrapping preview server");
|
890
|
+
const config = getService(strapi, "preview-config");
|
891
|
+
config.validate();
|
892
|
+
},
|
893
|
+
routes: routes$1,
|
894
|
+
controllers: controllers$1,
|
895
|
+
services: services$1
|
896
|
+
};
|
897
|
+
};
|
898
|
+
const preview = getFeature();
|
729
899
|
const bootstrap = async () => {
|
730
900
|
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
731
901
|
strapi.get("webhookStore").addAllowedEvent(key, value);
|
732
902
|
});
|
733
|
-
getService$
|
734
|
-
await getService$
|
735
|
-
await getService$
|
736
|
-
await getService$
|
903
|
+
getService$2("field-sizes").setCustomFieldInputSizes();
|
904
|
+
await getService$2("components").syncConfigurations();
|
905
|
+
await getService$2("content-types").syncConfigurations();
|
906
|
+
await getService$2("permission").registerPermissions();
|
737
907
|
await history.bootstrap?.({ strapi });
|
908
|
+
await preview.bootstrap?.({ strapi });
|
738
909
|
};
|
739
910
|
const destroy = async ({ strapi: strapi2 }) => {
|
740
911
|
await history.destroy?.({ strapi: strapi2 });
|
@@ -1224,7 +1395,8 @@ const admin = {
|
|
1224
1395
|
};
|
1225
1396
|
const routes = {
|
1226
1397
|
admin,
|
1227
|
-
...history.routes ? history.routes : {}
|
1398
|
+
...history.routes ? history.routes : {},
|
1399
|
+
...preview.routes ? preview.routes : {}
|
1228
1400
|
};
|
1229
1401
|
const hasPermissionsSchema = strapiUtils.yup.object({
|
1230
1402
|
actions: strapiUtils.yup.array().of(strapiUtils.yup.string()),
|
@@ -1481,7 +1653,7 @@ const createMetadasSchema = (schema) => {
|
|
1481
1653
|
if (!value) {
|
1482
1654
|
return strapiUtils.yup.string();
|
1483
1655
|
}
|
1484
|
-
const targetSchema = getService$
|
1656
|
+
const targetSchema = getService$2("content-types").findContentType(
|
1485
1657
|
schema.attributes[key].targetModel
|
1486
1658
|
);
|
1487
1659
|
if (!targetSchema) {
|
@@ -1650,7 +1822,7 @@ const getDocumentLocaleAndStatus = async (request, model, opts = { allowMultiple
|
|
1650
1822
|
}
|
1651
1823
|
};
|
1652
1824
|
const formatDocumentWithMetadata = async (permissionChecker2, uid2, document, opts = {}) => {
|
1653
|
-
const documentMetadata2 = getService$
|
1825
|
+
const documentMetadata2 = getService$2("document-metadata");
|
1654
1826
|
const serviceOutput = await documentMetadata2.formatDocumentWithMetadata(uid2, document, opts);
|
1655
1827
|
let {
|
1656
1828
|
meta: { availableLocales, availableStatus }
|
@@ -1676,8 +1848,8 @@ const createDocument = async (ctx, opts) => {
|
|
1676
1848
|
const { userAbility, user } = ctx.state;
|
1677
1849
|
const { model } = ctx.params;
|
1678
1850
|
const { body } = ctx.request;
|
1679
|
-
const documentManager2 = getService$
|
1680
|
-
const permissionChecker2 = getService$
|
1851
|
+
const documentManager2 = getService$2("document-manager");
|
1852
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1681
1853
|
if (permissionChecker2.cannot.create()) {
|
1682
1854
|
throw new strapiUtils.errors.ForbiddenError();
|
1683
1855
|
}
|
@@ -1697,13 +1869,13 @@ const updateDocument = async (ctx, opts) => {
|
|
1697
1869
|
const { userAbility, user } = ctx.state;
|
1698
1870
|
const { id, model } = ctx.params;
|
1699
1871
|
const { body } = ctx.request;
|
1700
|
-
const documentManager2 = getService$
|
1701
|
-
const permissionChecker2 = getService$
|
1872
|
+
const documentManager2 = getService$2("document-manager");
|
1873
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1702
1874
|
if (permissionChecker2.cannot.update()) {
|
1703
1875
|
throw new strapiUtils.errors.ForbiddenError();
|
1704
1876
|
}
|
1705
1877
|
const permissionQuery = await permissionChecker2.sanitizedQuery.update(ctx.query);
|
1706
|
-
const populate = await getService$
|
1878
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1707
1879
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1708
1880
|
const [documentVersion, documentExists] = await Promise.all([
|
1709
1881
|
documentManager2.findOne(id, model, { populate, locale, status: "draft" }),
|
@@ -1734,14 +1906,14 @@ const collectionTypes = {
|
|
1734
1906
|
const { userAbility } = ctx.state;
|
1735
1907
|
const { model } = ctx.params;
|
1736
1908
|
const { query } = ctx.request;
|
1737
|
-
const documentMetadata2 = getService$
|
1738
|
-
const documentManager2 = getService$
|
1739
|
-
const permissionChecker2 = getService$
|
1909
|
+
const documentMetadata2 = getService$2("document-metadata");
|
1910
|
+
const documentManager2 = getService$2("document-manager");
|
1911
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1740
1912
|
if (permissionChecker2.cannot.read()) {
|
1741
1913
|
return ctx.forbidden();
|
1742
1914
|
}
|
1743
1915
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(query);
|
1744
|
-
const populate = await getService$
|
1916
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(1).countRelations({ toOne: false, toMany: true }).build();
|
1745
1917
|
const { locale, status } = await getDocumentLocaleAndStatus(query, model);
|
1746
1918
|
const { results: documents, pagination } = await documentManager2.findPage(
|
1747
1919
|
{ ...permissionQuery, populate, locale, status },
|
@@ -1770,13 +1942,13 @@ const collectionTypes = {
|
|
1770
1942
|
async findOne(ctx) {
|
1771
1943
|
const { userAbility } = ctx.state;
|
1772
1944
|
const { model, id } = ctx.params;
|
1773
|
-
const documentManager2 = getService$
|
1774
|
-
const permissionChecker2 = getService$
|
1945
|
+
const documentManager2 = getService$2("document-manager");
|
1946
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1775
1947
|
if (permissionChecker2.cannot.read()) {
|
1776
1948
|
return ctx.forbidden();
|
1777
1949
|
}
|
1778
1950
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
1779
|
-
const populate = await getService$
|
1951
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1780
1952
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1781
1953
|
const version = await documentManager2.findOne(id, model, {
|
1782
1954
|
populate,
|
@@ -1807,7 +1979,7 @@ const collectionTypes = {
|
|
1807
1979
|
async create(ctx) {
|
1808
1980
|
const { userAbility } = ctx.state;
|
1809
1981
|
const { model } = ctx.params;
|
1810
|
-
const permissionChecker2 = getService$
|
1982
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1811
1983
|
const [totalEntries, document] = await Promise.all([
|
1812
1984
|
strapi.db.query(model).count(),
|
1813
1985
|
createDocument(ctx)
|
@@ -1828,7 +2000,7 @@ const collectionTypes = {
|
|
1828
2000
|
async update(ctx) {
|
1829
2001
|
const { userAbility } = ctx.state;
|
1830
2002
|
const { model } = ctx.params;
|
1831
|
-
const permissionChecker2 = getService$
|
2003
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1832
2004
|
const updatedVersion = await updateDocument(ctx);
|
1833
2005
|
const sanitizedVersion = await permissionChecker2.sanitizeOutput(updatedVersion);
|
1834
2006
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedVersion);
|
@@ -1837,13 +2009,13 @@ const collectionTypes = {
|
|
1837
2009
|
const { userAbility, user } = ctx.state;
|
1838
2010
|
const { model, sourceId: id } = ctx.params;
|
1839
2011
|
const { body } = ctx.request;
|
1840
|
-
const documentManager2 = getService$
|
1841
|
-
const permissionChecker2 = getService$
|
2012
|
+
const documentManager2 = getService$2("document-manager");
|
2013
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1842
2014
|
if (permissionChecker2.cannot.create()) {
|
1843
2015
|
return ctx.forbidden();
|
1844
2016
|
}
|
1845
2017
|
const permissionQuery = await permissionChecker2.sanitizedQuery.create(ctx.query);
|
1846
|
-
const populate = await getService$
|
2018
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1847
2019
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1848
2020
|
const document = await documentManager2.findOne(id, model, {
|
1849
2021
|
populate,
|
@@ -1882,13 +2054,13 @@ const collectionTypes = {
|
|
1882
2054
|
async delete(ctx) {
|
1883
2055
|
const { userAbility } = ctx.state;
|
1884
2056
|
const { id, model } = ctx.params;
|
1885
|
-
const documentManager2 = getService$
|
1886
|
-
const permissionChecker2 = getService$
|
2057
|
+
const documentManager2 = getService$2("document-manager");
|
2058
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1887
2059
|
if (permissionChecker2.cannot.delete()) {
|
1888
2060
|
return ctx.forbidden();
|
1889
2061
|
}
|
1890
2062
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(ctx.query);
|
1891
|
-
const populate = await getService$
|
2063
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1892
2064
|
const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1893
2065
|
const documentLocales = await documentManager2.findLocales(id, model, { populate, locale });
|
1894
2066
|
if (documentLocales.length === 0) {
|
@@ -1910,14 +2082,14 @@ const collectionTypes = {
|
|
1910
2082
|
const { userAbility } = ctx.state;
|
1911
2083
|
const { id, model } = ctx.params;
|
1912
2084
|
const { body } = ctx.request;
|
1913
|
-
const documentManager2 = getService$
|
1914
|
-
const permissionChecker2 = getService$
|
2085
|
+
const documentManager2 = getService$2("document-manager");
|
2086
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1915
2087
|
if (permissionChecker2.cannot.publish()) {
|
1916
2088
|
return ctx.forbidden();
|
1917
2089
|
}
|
1918
2090
|
const publishedDocument = await strapi.db.transaction(async () => {
|
1919
2091
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1920
|
-
const populate = await getService$
|
2092
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1921
2093
|
let document;
|
1922
2094
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1923
2095
|
const isCreate = fp.isNil(id);
|
@@ -1965,13 +2137,13 @@ const collectionTypes = {
|
|
1965
2137
|
const { body } = ctx.request;
|
1966
2138
|
const { documentIds } = body;
|
1967
2139
|
await validateBulkActionInput(body);
|
1968
|
-
const documentManager2 = getService$
|
1969
|
-
const permissionChecker2 = getService$
|
2140
|
+
const documentManager2 = getService$2("document-manager");
|
2141
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1970
2142
|
if (permissionChecker2.cannot.publish()) {
|
1971
2143
|
return ctx.forbidden();
|
1972
2144
|
}
|
1973
2145
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1974
|
-
const populate = await getService$
|
2146
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1975
2147
|
const { locale } = await getDocumentLocaleAndStatus(body, model, {
|
1976
2148
|
allowMultipleLocales: true
|
1977
2149
|
});
|
@@ -1996,8 +2168,8 @@ const collectionTypes = {
|
|
1996
2168
|
const { body } = ctx.request;
|
1997
2169
|
const { documentIds } = body;
|
1998
2170
|
await validateBulkActionInput(body);
|
1999
|
-
const documentManager2 = getService$
|
2000
|
-
const permissionChecker2 = getService$
|
2171
|
+
const documentManager2 = getService$2("document-manager");
|
2172
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2001
2173
|
if (permissionChecker2.cannot.unpublish()) {
|
2002
2174
|
return ctx.forbidden();
|
2003
2175
|
}
|
@@ -2026,8 +2198,8 @@ const collectionTypes = {
|
|
2026
2198
|
const {
|
2027
2199
|
body: { discardDraft, ...body }
|
2028
2200
|
} = ctx.request;
|
2029
|
-
const documentManager2 = getService$
|
2030
|
-
const permissionChecker2 = getService$
|
2201
|
+
const documentManager2 = getService$2("document-manager");
|
2202
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2031
2203
|
if (permissionChecker2.cannot.unpublish()) {
|
2032
2204
|
return ctx.forbidden();
|
2033
2205
|
}
|
@@ -2035,7 +2207,7 @@ const collectionTypes = {
|
|
2035
2207
|
return ctx.forbidden();
|
2036
2208
|
}
|
2037
2209
|
const permissionQuery = await permissionChecker2.sanitizedQuery.unpublish(ctx.query);
|
2038
|
-
const populate = await getService$
|
2210
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2039
2211
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2040
2212
|
const document = await documentManager2.findOne(id, model, {
|
2041
2213
|
populate,
|
@@ -2066,13 +2238,13 @@ const collectionTypes = {
|
|
2066
2238
|
const { userAbility } = ctx.state;
|
2067
2239
|
const { id, model } = ctx.params;
|
2068
2240
|
const { body } = ctx.request;
|
2069
|
-
const documentManager2 = getService$
|
2070
|
-
const permissionChecker2 = getService$
|
2241
|
+
const documentManager2 = getService$2("document-manager");
|
2242
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2071
2243
|
if (permissionChecker2.cannot.discard()) {
|
2072
2244
|
return ctx.forbidden();
|
2073
2245
|
}
|
2074
2246
|
const permissionQuery = await permissionChecker2.sanitizedQuery.discard(ctx.query);
|
2075
|
-
const populate = await getService$
|
2247
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2076
2248
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2077
2249
|
const document = await documentManager2.findOne(id, model, {
|
2078
2250
|
populate,
|
@@ -2097,13 +2269,13 @@ const collectionTypes = {
|
|
2097
2269
|
const { query, body } = ctx.request;
|
2098
2270
|
const { documentIds } = body;
|
2099
2271
|
await validateBulkActionInput(body);
|
2100
|
-
const documentManager2 = getService$
|
2101
|
-
const permissionChecker2 = getService$
|
2272
|
+
const documentManager2 = getService$2("document-manager");
|
2273
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2102
2274
|
if (permissionChecker2.cannot.delete()) {
|
2103
2275
|
return ctx.forbidden();
|
2104
2276
|
}
|
2105
2277
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(query);
|
2106
|
-
const populate = await getService$
|
2278
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2107
2279
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2108
2280
|
const documentLocales = await documentManager2.findLocales(documentIds, model, {
|
2109
2281
|
populate,
|
@@ -2124,13 +2296,13 @@ const collectionTypes = {
|
|
2124
2296
|
async countDraftRelations(ctx) {
|
2125
2297
|
const { userAbility } = ctx.state;
|
2126
2298
|
const { model, id } = ctx.params;
|
2127
|
-
const documentManager2 = getService$
|
2128
|
-
const permissionChecker2 = getService$
|
2299
|
+
const documentManager2 = getService$2("document-manager");
|
2300
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2129
2301
|
if (permissionChecker2.cannot.read()) {
|
2130
2302
|
return ctx.forbidden();
|
2131
2303
|
}
|
2132
2304
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2133
|
-
const populate = await getService$
|
2305
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2134
2306
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
2135
2307
|
const entity = await documentManager2.findOne(id, model, { populate, locale, status });
|
2136
2308
|
if (!entity) {
|
@@ -2149,8 +2321,8 @@ const collectionTypes = {
|
|
2149
2321
|
const ids = ctx.request.query.documentIds;
|
2150
2322
|
const locale = ctx.request.query.locale;
|
2151
2323
|
const { model } = ctx.params;
|
2152
|
-
const documentManager2 = getService$
|
2153
|
-
const permissionChecker2 = getService$
|
2324
|
+
const documentManager2 = getService$2("document-manager");
|
2325
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2154
2326
|
if (permissionChecker2.cannot.read()) {
|
2155
2327
|
return ctx.forbidden();
|
2156
2328
|
}
|
@@ -2174,13 +2346,13 @@ const collectionTypes = {
|
|
2174
2346
|
};
|
2175
2347
|
const components$1 = {
|
2176
2348
|
findComponents(ctx) {
|
2177
|
-
const components2 = getService$
|
2178
|
-
const { toDto } = getService$
|
2349
|
+
const components2 = getService$2("components").findAllComponents();
|
2350
|
+
const { toDto } = getService$2("data-mapper");
|
2179
2351
|
ctx.body = { data: components2.map(toDto) };
|
2180
2352
|
},
|
2181
2353
|
async findComponentConfiguration(ctx) {
|
2182
2354
|
const { uid: uid2 } = ctx.params;
|
2183
|
-
const componentService = getService$
|
2355
|
+
const componentService = getService$2("components");
|
2184
2356
|
const component = componentService.findComponent(uid2);
|
2185
2357
|
if (!component) {
|
2186
2358
|
return ctx.notFound("component.notFound");
|
@@ -2197,7 +2369,7 @@ const components$1 = {
|
|
2197
2369
|
async updateComponentConfiguration(ctx) {
|
2198
2370
|
const { uid: uid2 } = ctx.params;
|
2199
2371
|
const { body } = ctx.request;
|
2200
|
-
const componentService = getService$
|
2372
|
+
const componentService = getService$2("components");
|
2201
2373
|
const component = componentService.findComponent(uid2);
|
2202
2374
|
if (!component) {
|
2203
2375
|
return ctx.notFound("component.notFound");
|
@@ -2231,12 +2403,12 @@ const contentTypes = {
|
|
2231
2403
|
} catch (error) {
|
2232
2404
|
return ctx.send({ error }, 400);
|
2233
2405
|
}
|
2234
|
-
const contentTypes2 = getService$
|
2235
|
-
const { toDto } = getService$
|
2406
|
+
const contentTypes2 = getService$2("content-types").findContentTypesByKind(kind);
|
2407
|
+
const { toDto } = getService$2("data-mapper");
|
2236
2408
|
ctx.body = { data: contentTypes2.map(toDto) };
|
2237
2409
|
},
|
2238
2410
|
async findContentTypesSettings(ctx) {
|
2239
|
-
const { findAllContentTypes, findConfiguration } = getService$
|
2411
|
+
const { findAllContentTypes, findConfiguration } = getService$2("content-types");
|
2240
2412
|
const contentTypes2 = await findAllContentTypes();
|
2241
2413
|
const configurations = await Promise.all(
|
2242
2414
|
contentTypes2.map(async (contentType) => {
|
@@ -2250,7 +2422,7 @@ const contentTypes = {
|
|
2250
2422
|
},
|
2251
2423
|
async findContentTypeConfiguration(ctx) {
|
2252
2424
|
const { uid: uid2 } = ctx.params;
|
2253
|
-
const contentTypeService = getService$
|
2425
|
+
const contentTypeService = getService$2("content-types");
|
2254
2426
|
const contentType = await contentTypeService.findContentType(uid2);
|
2255
2427
|
if (!contentType) {
|
2256
2428
|
return ctx.notFound("contentType.notFound");
|
@@ -2272,13 +2444,13 @@ const contentTypes = {
|
|
2272
2444
|
const { userAbility } = ctx.state;
|
2273
2445
|
const { uid: uid2 } = ctx.params;
|
2274
2446
|
const { body } = ctx.request;
|
2275
|
-
const contentTypeService = getService$
|
2276
|
-
const metricsService = getService$
|
2447
|
+
const contentTypeService = getService$2("content-types");
|
2448
|
+
const metricsService = getService$2("metrics");
|
2277
2449
|
const contentType = await contentTypeService.findContentType(uid2);
|
2278
2450
|
if (!contentType) {
|
2279
2451
|
return ctx.notFound("contentType.notFound");
|
2280
2452
|
}
|
2281
|
-
if (!getService$
|
2453
|
+
if (!getService$2("permission").canConfigureContentType({ userAbility, contentType })) {
|
2282
2454
|
return ctx.forbidden();
|
2283
2455
|
}
|
2284
2456
|
let input;
|
@@ -2311,10 +2483,10 @@ const contentTypes = {
|
|
2311
2483
|
};
|
2312
2484
|
const init = {
|
2313
2485
|
getInitData(ctx) {
|
2314
|
-
const { toDto } = getService$
|
2315
|
-
const { findAllComponents } = getService$
|
2316
|
-
const { getAllFieldSizes } = getService$
|
2317
|
-
const { findAllContentTypes } = getService$
|
2486
|
+
const { toDto } = getService$2("data-mapper");
|
2487
|
+
const { findAllComponents } = getService$2("components");
|
2488
|
+
const { getAllFieldSizes } = getService$2("field-sizes");
|
2489
|
+
const { findAllContentTypes } = getService$2("content-types");
|
2318
2490
|
ctx.body = {
|
2319
2491
|
data: {
|
2320
2492
|
fieldSizes: getAllFieldSizes(),
|
@@ -2350,7 +2522,7 @@ const addFiltersClause = (params, filtersClause) => {
|
|
2350
2522
|
params.filters.$and.push(filtersClause);
|
2351
2523
|
};
|
2352
2524
|
const sanitizeMainField = (model, mainField, userAbility) => {
|
2353
|
-
const permissionChecker2 = getService$
|
2525
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2354
2526
|
userAbility,
|
2355
2527
|
model: model.uid
|
2356
2528
|
});
|
@@ -2364,15 +2536,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
|
|
2364
2536
|
}
|
2365
2537
|
return mainField;
|
2366
2538
|
};
|
2367
|
-
const addStatusToRelations = async (
|
2368
|
-
if (!strapiUtils.contentTypes.hasDraftAndPublish(strapi.
|
2539
|
+
const addStatusToRelations = async (targetUid, relations2) => {
|
2540
|
+
if (!strapiUtils.contentTypes.hasDraftAndPublish(strapi.getModel(targetUid))) {
|
2541
|
+
return relations2;
|
2542
|
+
}
|
2543
|
+
const documentMetadata2 = getService$2("document-metadata");
|
2544
|
+
if (!relations2.length) {
|
2369
2545
|
return relations2;
|
2370
2546
|
}
|
2371
|
-
const
|
2372
|
-
const
|
2547
|
+
const firstRelation = relations2[0];
|
2548
|
+
const filters = {
|
2549
|
+
documentId: { $in: relations2.map((r) => r.documentId) },
|
2550
|
+
// NOTE: find the "opposite" status
|
2551
|
+
publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
|
2552
|
+
};
|
2553
|
+
const availableStatus = await strapi.query(targetUid).findMany({
|
2554
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
|
2555
|
+
filters
|
2556
|
+
});
|
2373
2557
|
return relations2.map((relation) => {
|
2374
|
-
const availableStatuses =
|
2375
|
-
(availableDocument) => availableDocument.documentId === relation.documentId
|
2558
|
+
const availableStatuses = availableStatus.filter(
|
2559
|
+
(availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
|
2376
2560
|
);
|
2377
2561
|
return {
|
2378
2562
|
...relation,
|
@@ -2434,7 +2618,7 @@ const relations = {
|
|
2434
2618
|
ctx.request?.query?.locale
|
2435
2619
|
);
|
2436
2620
|
const { status } = validateStatus(sourceUid, ctx.request?.query?.status);
|
2437
|
-
const permissionChecker2 = getService$
|
2621
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2438
2622
|
userAbility,
|
2439
2623
|
model
|
2440
2624
|
});
|
@@ -2459,7 +2643,7 @@ const relations = {
|
|
2459
2643
|
where.id = id;
|
2460
2644
|
}
|
2461
2645
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2462
|
-
const populate = await getService$
|
2646
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2463
2647
|
const currentEntity = await strapi.db.query(model).findOne({
|
2464
2648
|
where,
|
2465
2649
|
populate
|
@@ -2474,7 +2658,7 @@ const relations = {
|
|
2474
2658
|
}
|
2475
2659
|
entryId = currentEntity.id;
|
2476
2660
|
}
|
2477
|
-
const modelConfig = isComponent2 ? await getService$
|
2661
|
+
const modelConfig = isComponent2 ? await getService$2("components").findConfiguration(sourceSchema) : await getService$2("content-types").findConfiguration(sourceSchema);
|
2478
2662
|
const targetSchema = strapi.getModel(targetUid);
|
2479
2663
|
const mainField = fp.flow(
|
2480
2664
|
fp.prop(`metadatas.${targetField}.edit.mainField`),
|
@@ -2528,7 +2712,7 @@ const relations = {
|
|
2528
2712
|
}
|
2529
2713
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2530
2714
|
const { idsToOmit, idsToInclude, _q, ...query } = ctx.request.query;
|
2531
|
-
const permissionChecker2 = getService$
|
2715
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2532
2716
|
userAbility: ctx.state.userAbility,
|
2533
2717
|
model: targetUid
|
2534
2718
|
});
|
@@ -2601,21 +2785,33 @@ const relations = {
|
|
2601
2785
|
attribute,
|
2602
2786
|
targetField,
|
2603
2787
|
fieldsToSelect,
|
2604
|
-
|
2605
|
-
|
2606
|
-
}
|
2607
|
-
target: {
|
2608
|
-
schema: { uid: targetUid }
|
2609
|
-
}
|
2788
|
+
status,
|
2789
|
+
source: { schema: sourceSchema },
|
2790
|
+
target: { schema: targetSchema }
|
2610
2791
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2611
|
-
const
|
2792
|
+
const { uid: sourceUid } = sourceSchema;
|
2793
|
+
const { uid: targetUid } = targetSchema;
|
2794
|
+
const permissionQuery = await getService$2("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
|
2612
2795
|
const dbQuery = strapi.db.query(sourceUid);
|
2613
2796
|
const loadRelations = strapiUtils.relations.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
|
2797
|
+
const filters = {};
|
2798
|
+
if (sourceSchema?.options?.draftAndPublish) {
|
2799
|
+
if (targetSchema?.options?.draftAndPublish) {
|
2800
|
+
if (status === "published") {
|
2801
|
+
filters.publishedAt = { $notNull: true };
|
2802
|
+
} else {
|
2803
|
+
filters.publishedAt = { $null: true };
|
2804
|
+
}
|
2805
|
+
}
|
2806
|
+
} else if (targetSchema?.options?.draftAndPublish) {
|
2807
|
+
filters.publishedAt = { $null: true };
|
2808
|
+
}
|
2614
2809
|
const res = await loadRelations({ id: entryId }, targetField, {
|
2615
|
-
select: ["id", "documentId", "locale", "publishedAt"],
|
2810
|
+
select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
|
2616
2811
|
ordering: "desc",
|
2617
2812
|
page: ctx.request.query.page,
|
2618
|
-
pageSize: ctx.request.query.pageSize
|
2813
|
+
pageSize: ctx.request.query.pageSize,
|
2814
|
+
filters
|
2619
2815
|
});
|
2620
2816
|
const loadedIds = res.results.map((item) => item.id);
|
2621
2817
|
addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
|
@@ -2636,10 +2832,10 @@ const relations = {
|
|
2636
2832
|
}
|
2637
2833
|
};
|
2638
2834
|
const buildPopulateFromQuery = async (query, model) => {
|
2639
|
-
return getService$
|
2835
|
+
return getService$2("populate-builder")(model).populateFromQuery(query).populateDeep(Infinity).countRelations().build();
|
2640
2836
|
};
|
2641
2837
|
const findDocument = async (query, uid2, opts = {}) => {
|
2642
|
-
const documentManager2 = getService$
|
2838
|
+
const documentManager2 = getService$2("document-manager");
|
2643
2839
|
const populate = await buildPopulateFromQuery(query, uid2);
|
2644
2840
|
return documentManager2.findMany({ ...opts, populate }, uid2).then((documents) => documents[0]);
|
2645
2841
|
};
|
@@ -2647,8 +2843,8 @@ const createOrUpdateDocument = async (ctx, opts) => {
|
|
2647
2843
|
const { user, userAbility } = ctx.state;
|
2648
2844
|
const { model } = ctx.params;
|
2649
2845
|
const { body, query } = ctx.request;
|
2650
|
-
const documentManager2 = getService$
|
2651
|
-
const permissionChecker2 = getService$
|
2846
|
+
const documentManager2 = getService$2("document-manager");
|
2847
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2652
2848
|
if (permissionChecker2.cannot.create() && permissionChecker2.cannot.update()) {
|
2653
2849
|
throw new strapiUtils.errors.ForbiddenError();
|
2654
2850
|
}
|
@@ -2689,7 +2885,7 @@ const singleTypes = {
|
|
2689
2885
|
const { userAbility } = ctx.state;
|
2690
2886
|
const { model } = ctx.params;
|
2691
2887
|
const { query = {} } = ctx.request;
|
2692
|
-
const permissionChecker2 = getService$
|
2888
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2693
2889
|
if (permissionChecker2.cannot.read()) {
|
2694
2890
|
return ctx.forbidden();
|
2695
2891
|
}
|
@@ -2723,7 +2919,7 @@ const singleTypes = {
|
|
2723
2919
|
async createOrUpdate(ctx) {
|
2724
2920
|
const { userAbility } = ctx.state;
|
2725
2921
|
const { model } = ctx.params;
|
2726
|
-
const permissionChecker2 = getService$
|
2922
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2727
2923
|
const document = await createOrUpdateDocument(ctx);
|
2728
2924
|
const sanitizedDocument = await permissionChecker2.sanitizeOutput(document);
|
2729
2925
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedDocument);
|
@@ -2732,8 +2928,8 @@ const singleTypes = {
|
|
2732
2928
|
const { userAbility } = ctx.state;
|
2733
2929
|
const { model } = ctx.params;
|
2734
2930
|
const { query = {} } = ctx.request;
|
2735
|
-
const documentManager2 = getService$
|
2736
|
-
const permissionChecker2 = getService$
|
2931
|
+
const documentManager2 = getService$2("document-manager");
|
2932
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2737
2933
|
if (permissionChecker2.cannot.delete()) {
|
2738
2934
|
return ctx.forbidden();
|
2739
2935
|
}
|
@@ -2761,8 +2957,8 @@ const singleTypes = {
|
|
2761
2957
|
const { userAbility } = ctx.state;
|
2762
2958
|
const { model } = ctx.params;
|
2763
2959
|
const { query = {} } = ctx.request;
|
2764
|
-
const documentManager2 = getService$
|
2765
|
-
const permissionChecker2 = getService$
|
2960
|
+
const documentManager2 = getService$2("document-manager");
|
2961
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2766
2962
|
if (permissionChecker2.cannot.publish()) {
|
2767
2963
|
return ctx.forbidden();
|
2768
2964
|
}
|
@@ -2790,8 +2986,8 @@ const singleTypes = {
|
|
2790
2986
|
body: { discardDraft, ...body },
|
2791
2987
|
query = {}
|
2792
2988
|
} = ctx.request;
|
2793
|
-
const documentManager2 = getService$
|
2794
|
-
const permissionChecker2 = getService$
|
2989
|
+
const documentManager2 = getService$2("document-manager");
|
2990
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2795
2991
|
if (permissionChecker2.cannot.unpublish()) {
|
2796
2992
|
return ctx.forbidden();
|
2797
2993
|
}
|
@@ -2825,8 +3021,8 @@ const singleTypes = {
|
|
2825
3021
|
const { userAbility } = ctx.state;
|
2826
3022
|
const { model } = ctx.params;
|
2827
3023
|
const { body, query = {} } = ctx.request;
|
2828
|
-
const documentManager2 = getService$
|
2829
|
-
const permissionChecker2 = getService$
|
3024
|
+
const documentManager2 = getService$2("document-manager");
|
3025
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2830
3026
|
if (permissionChecker2.cannot.discard()) {
|
2831
3027
|
return ctx.forbidden();
|
2832
3028
|
}
|
@@ -2849,8 +3045,8 @@ const singleTypes = {
|
|
2849
3045
|
const { userAbility } = ctx.state;
|
2850
3046
|
const { model } = ctx.params;
|
2851
3047
|
const { query } = ctx.request;
|
2852
|
-
const documentManager2 = getService$
|
2853
|
-
const permissionChecker2 = getService$
|
3048
|
+
const documentManager2 = getService$2("document-manager");
|
3049
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2854
3050
|
const { locale } = await getDocumentLocaleAndStatus(query, model);
|
2855
3051
|
if (permissionChecker2.cannot.read()) {
|
2856
3052
|
return ctx.forbidden();
|
@@ -2874,7 +3070,7 @@ const uid$1 = {
|
|
2874
3070
|
const { query = {} } = ctx.request;
|
2875
3071
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2876
3072
|
await validateUIDField(contentTypeUID, field);
|
2877
|
-
const uidService = getService$
|
3073
|
+
const uidService = getService$2("uid");
|
2878
3074
|
ctx.body = {
|
2879
3075
|
data: await uidService.generateUIDField({ contentTypeUID, field, data, locale })
|
2880
3076
|
};
|
@@ -2886,7 +3082,7 @@ const uid$1 = {
|
|
2886
3082
|
const { query = {} } = ctx.request;
|
2887
3083
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2888
3084
|
await validateUIDField(contentTypeUID, field);
|
2889
|
-
const uidService = getService$
|
3085
|
+
const uidService = getService$2("uid");
|
2890
3086
|
const isAvailable = await uidService.checkUIDAvailability({
|
2891
3087
|
contentTypeUID,
|
2892
3088
|
field,
|
@@ -2907,7 +3103,8 @@ const controllers = {
|
|
2907
3103
|
relations,
|
2908
3104
|
"single-types": singleTypes,
|
2909
3105
|
uid: uid$1,
|
2910
|
-
...history.controllers ? history.controllers : {}
|
3106
|
+
...history.controllers ? history.controllers : {},
|
3107
|
+
...preview.controllers ? preview.controllers : {}
|
2911
3108
|
};
|
2912
3109
|
const keys = {
|
2913
3110
|
CONFIGURATION: "configuration"
|
@@ -3058,12 +3255,12 @@ async function syncMetadatas(configuration, schema) {
|
|
3058
3255
|
return ___default.default.assign(metasWithDefaults, updatedMetas);
|
3059
3256
|
}
|
3060
3257
|
const getTargetSchema = (targetModel) => {
|
3061
|
-
return getService$
|
3258
|
+
return getService$2("content-types").findContentType(targetModel);
|
3062
3259
|
};
|
3063
3260
|
const DEFAULT_LIST_LENGTH = 4;
|
3064
3261
|
const MAX_ROW_SIZE = 12;
|
3065
3262
|
const isAllowedFieldSize = (type, size) => {
|
3066
|
-
const { getFieldSize } = getService$
|
3263
|
+
const { getFieldSize } = getService$2("field-sizes");
|
3067
3264
|
const fieldSize = getFieldSize(type);
|
3068
3265
|
if (!fieldSize.isResizable && size !== fieldSize.default) {
|
3069
3266
|
return false;
|
@@ -3071,7 +3268,7 @@ const isAllowedFieldSize = (type, size) => {
|
|
3071
3268
|
return size <= MAX_ROW_SIZE;
|
3072
3269
|
};
|
3073
3270
|
const getDefaultFieldSize = (attribute) => {
|
3074
|
-
const { hasFieldSize, getFieldSize } = getService$
|
3271
|
+
const { hasFieldSize, getFieldSize } = getService$2("field-sizes");
|
3075
3272
|
return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type).default;
|
3076
3273
|
};
|
3077
3274
|
async function createDefaultLayouts(schema) {
|
@@ -3106,7 +3303,7 @@ function syncLayouts(configuration, schema) {
|
|
3106
3303
|
for (const el of row) {
|
3107
3304
|
if (!hasEditableAttribute(schema, el.name))
|
3108
3305
|
continue;
|
3109
|
-
const { hasFieldSize } = getService$
|
3306
|
+
const { hasFieldSize } = getService$2("field-sizes");
|
3110
3307
|
const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
|
3111
3308
|
if (!isAllowedFieldSize(fieldType, el.size)) {
|
3112
3309
|
elementsToReAppend.push(el.name);
|
@@ -3246,17 +3443,17 @@ const configurationService$1 = createConfigurationService({
|
|
3246
3443
|
isComponent: true,
|
3247
3444
|
prefix: STORE_KEY_PREFIX,
|
3248
3445
|
getModels() {
|
3249
|
-
const { toContentManagerModel } = getService$
|
3446
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3250
3447
|
return fp.mapValues(toContentManagerModel, strapi.components);
|
3251
3448
|
}
|
3252
3449
|
});
|
3253
3450
|
const components = ({ strapi: strapi2 }) => ({
|
3254
3451
|
findAllComponents() {
|
3255
|
-
const { toContentManagerModel } = getService$
|
3452
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3256
3453
|
return Object.values(strapi2.components).map(toContentManagerModel);
|
3257
3454
|
},
|
3258
3455
|
findComponent(uid2) {
|
3259
|
-
const { toContentManagerModel } = getService$
|
3456
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3260
3457
|
const component = strapi2.components[uid2];
|
3261
3458
|
return fp.isNil(component) ? component : toContentManagerModel(component);
|
3262
3459
|
},
|
@@ -3307,17 +3504,17 @@ const configurationService = createConfigurationService({
|
|
3307
3504
|
storeUtils,
|
3308
3505
|
prefix: "content_types",
|
3309
3506
|
getModels() {
|
3310
|
-
const { toContentManagerModel } = getService$
|
3507
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3311
3508
|
return fp.mapValues(toContentManagerModel, strapi.contentTypes);
|
3312
3509
|
}
|
3313
3510
|
});
|
3314
3511
|
const service = ({ strapi: strapi2 }) => ({
|
3315
3512
|
findAllContentTypes() {
|
3316
|
-
const { toContentManagerModel } = getService$
|
3513
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3317
3514
|
return Object.values(strapi2.contentTypes).map(toContentManagerModel);
|
3318
3515
|
},
|
3319
3516
|
findContentType(uid2) {
|
3320
|
-
const { toContentManagerModel } = getService$
|
3517
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3321
3518
|
const contentType = strapi2.contentTypes[uid2];
|
3322
3519
|
return fp.isNil(contentType) ? contentType : toContentManagerModel(contentType);
|
3323
3520
|
},
|
@@ -3346,7 +3543,7 @@ const service = ({ strapi: strapi2 }) => ({
|
|
3346
3543
|
return this.findConfiguration(contentType);
|
3347
3544
|
},
|
3348
3545
|
findComponentsConfigurations(contentType) {
|
3349
|
-
return getService$
|
3546
|
+
return getService$2("components").findComponentsConfigurations(contentType);
|
3350
3547
|
},
|
3351
3548
|
syncConfigurations() {
|
3352
3549
|
return configurationService.syncConfigurations();
|
@@ -3618,7 +3815,7 @@ const permission = ({ strapi: strapi2 }) => ({
|
|
3618
3815
|
return userAbility.can(action);
|
3619
3816
|
},
|
3620
3817
|
async registerPermissions() {
|
3621
|
-
const displayedContentTypes = getService$
|
3818
|
+
const displayedContentTypes = getService$2("content-types").findDisplayedContentTypes();
|
3622
3819
|
const contentTypesUids = displayedContentTypes.map(fp.prop("uid"));
|
3623
3820
|
const actions = [
|
3624
3821
|
{
|
@@ -3894,7 +4091,7 @@ const getQueryPopulate = async (uid2, query) => {
|
|
3894
4091
|
return populateQuery;
|
3895
4092
|
};
|
3896
4093
|
const buildDeepPopulate = (uid2) => {
|
3897
|
-
return getService$
|
4094
|
+
return getService$2("populate-builder")(uid2).populateDeep(Infinity).countRelations().build();
|
3898
4095
|
};
|
3899
4096
|
const populateBuilder = (uid2) => {
|
3900
4097
|
let getInitialPopulate = async () => {
|
@@ -4079,7 +4276,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4079
4276
|
*/
|
4080
4277
|
async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
|
4081
4278
|
const versionsByLocale = fp.groupBy("locale", allVersions);
|
4082
|
-
|
4279
|
+
if (version.locale) {
|
4280
|
+
delete versionsByLocale[version.locale];
|
4281
|
+
}
|
4083
4282
|
const model = strapi2.getModel(uid2);
|
4084
4283
|
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4085
4284
|
const traversalFunction = async (localeVersion) => strapiUtils.traverseEntity(
|
@@ -4435,7 +4634,8 @@ const services = {
|
|
4435
4634
|
permission,
|
4436
4635
|
"populate-builder": populateBuilder$1,
|
4437
4636
|
uid,
|
4438
|
-
...history.services ? history.services : {}
|
4637
|
+
...history.services ? history.services : {},
|
4638
|
+
...preview.services ? preview.services : {}
|
4439
4639
|
};
|
4440
4640
|
const index = () => {
|
4441
4641
|
return {
|