@strapi/content-manager 0.0.0-experimental.71ed910bd859c7e558bd1c1042eaadb7d26fd22a → 0.0.0-experimental.7273fc63f5c2c8aa9e100655b1776f3e0621e61a
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-DP7AC0UU.js → ComponentConfigurationPage-D2_cVxXK.js} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-DP7AC0UU.js.map → ComponentConfigurationPage-D2_cVxXK.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-7-qB29e7.mjs → ComponentConfigurationPage-suSMW3KC.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-7-qB29e7.mjs.map → ComponentConfigurationPage-suSMW3KC.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CI4XoymK.mjs → EditConfigurationPage-CBscKbxt.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-CI4XoymK.mjs.map → EditConfigurationPage-CBscKbxt.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DITVliEI.js → EditConfigurationPage-Z_VzHVH4.js} +4 -4
- package/dist/_chunks/{EditConfigurationPage-DITVliEI.js.map → EditConfigurationPage-Z_VzHVH4.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Dzpno8xI.mjs → EditViewPage-D5Zhyw_q.mjs} +10 -4
- package/dist/_chunks/EditViewPage-D5Zhyw_q.mjs.map +1 -0
- package/dist/_chunks/{EditViewPage-CUS2EAhB.js → EditViewPage-DzDDKiF5.js} +10 -4
- package/dist/_chunks/EditViewPage-DzDDKiF5.js.map +1 -0
- package/dist/_chunks/{Field-CtUU1Fg8.js → Field-CZHNLm_m.js} +42 -10
- package/dist/_chunks/Field-CZHNLm_m.js.map +1 -0
- package/dist/_chunks/{Field-B_jG_EV9.mjs → Field-FNlyAbcI.mjs} +42 -10
- package/dist/_chunks/Field-FNlyAbcI.mjs.map +1 -0
- package/dist/_chunks/{Form-DTqO0ymI.js → Form-DqPHDLuK.js} +3 -3
- package/dist/_chunks/Form-DqPHDLuK.js.map +1 -0
- package/dist/_chunks/{Form-BXHao2mZ.mjs → Form-Sq_OVNv-.mjs} +3 -3
- package/dist/_chunks/Form-Sq_OVNv-.mjs.map +1 -0
- package/dist/_chunks/{History-C_uSGzO5.js → History-B-ZiOAEg.js} +37 -40
- package/dist/_chunks/History-B-ZiOAEg.js.map +1 -0
- package/dist/_chunks/{History-2Ah2CQ4T.mjs → History-DlL3k_OW.mjs} +38 -41
- package/dist/_chunks/History-DlL3k_OW.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-nyuP7OSy.js → ListConfigurationPage-Cc0hLAoS.js} +3 -3
- package/dist/_chunks/{ListConfigurationPage-nyuP7OSy.js.map → ListConfigurationPage-Cc0hLAoS.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-BjSJlaoC.mjs → ListConfigurationPage-xj3cSF5M.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-BjSJlaoC.mjs.map → ListConfigurationPage-xj3cSF5M.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-B75x3nz2.mjs → ListViewPage-C9STpcYd.mjs} +15 -4
- package/dist/_chunks/{ListViewPage-B75x3nz2.mjs.map → ListViewPage-C9STpcYd.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-DHgHD8Xg.js → ListViewPage-D48T84aT.js} +15 -4
- package/dist/_chunks/ListViewPage-D48T84aT.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-CDUKdZ7d.js → NoContentTypePage-BnUmUnXQ.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-CDUKdZ7d.js.map → NoContentTypePage-BnUmUnXQ.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-DUacQSyF.mjs → NoContentTypePage-DpV_ouD6.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DUacQSyF.mjs.map → NoContentTypePage-DpV_ouD6.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-SFllMekk.mjs → NoPermissionsPage-BeDixsE9.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-SFllMekk.mjs.map → NoPermissionsPage-BeDixsE9.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-zwIZydDI.js → NoPermissionsPage-z-CpOFfh.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-zwIZydDI.js.map → NoPermissionsPage-z-CpOFfh.js.map} +1 -1
- package/dist/_chunks/{Relations-D2NRW8fC.mjs → Relations-CTiimSAg.mjs} +65 -33
- package/dist/_chunks/Relations-CTiimSAg.mjs.map +1 -0
- package/dist/_chunks/{Relations-NFLaRNPr.js → Relations-Cs5vJLAp.js} +64 -32
- package/dist/_chunks/Relations-Cs5vJLAp.js.map +1 -0
- package/dist/_chunks/{en-BlhnxQfj.js → en-Bm0D0IWz.js} +7 -7
- package/dist/_chunks/{en-BlhnxQfj.js.map → en-Bm0D0IWz.js.map} +1 -1
- package/dist/_chunks/{en-C8YBvRrK.mjs → en-DKV44jRb.mjs} +7 -7
- package/dist/_chunks/{en-C8YBvRrK.mjs.map → en-DKV44jRb.mjs.map} +1 -1
- package/dist/_chunks/{fr-B7kGGg3E.js → fr-C6t7ywEg.js} +12 -2
- package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-C6t7ywEg.js.map} +1 -1
- package/dist/_chunks/{fr-CD9VFbPM.mjs → fr-DxrTDLl6.mjs} +12 -2
- package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr-DxrTDLl6.mjs.map} +1 -1
- package/dist/_chunks/{index-C9HxCo5R.mjs → index-DUZzV11o.mjs} +119 -84
- package/dist/_chunks/index-DUZzV11o.mjs.map +1 -0
- package/dist/_chunks/{index-ovJRE1FM.js → index-dFQ_8EM3.js} +119 -83
- package/dist/_chunks/index-dFQ_8EM3.js.map +1 -0
- package/dist/_chunks/{layout-UNWstw_s.js → layout-Bu-ET7w6.js} +3 -3
- package/dist/_chunks/{layout-UNWstw_s.js.map → layout-Bu-ET7w6.js.map} +1 -1
- package/dist/_chunks/{layout-DaUjDiWQ.mjs → layout-C-eg7m9Y.mjs} +3 -3
- package/dist/_chunks/{layout-DaUjDiWQ.mjs.map → layout-C-eg7m9Y.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-D8iFAeRu.mjs → relations-Cj61Oyt2.mjs} +3 -7
- package/dist/_chunks/relations-Cj61Oyt2.mjs.map +1 -0
- package/dist/_chunks/{relations-NN3coOG5.js → relations-isLeDaA0.js} +3 -7
- package/dist/_chunks/relations-isLeDaA0.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/preview/constants.d.ts +1 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/server/index.js +351 -146
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +351 -146
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/collection-types.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/history.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 +8 -8
- package/dist/_chunks/EditViewPage-CUS2EAhB.js.map +0 -1
- package/dist/_chunks/EditViewPage-Dzpno8xI.mjs.map +0 -1
- package/dist/_chunks/Field-B_jG_EV9.mjs.map +0 -1
- package/dist/_chunks/Field-CtUU1Fg8.js.map +0 -1
- package/dist/_chunks/Form-BXHao2mZ.mjs.map +0 -1
- package/dist/_chunks/Form-DTqO0ymI.js.map +0 -1
- package/dist/_chunks/History-2Ah2CQ4T.mjs.map +0 -1
- package/dist/_chunks/History-C_uSGzO5.js.map +0 -1
- package/dist/_chunks/ListViewPage-DHgHD8Xg.js.map +0 -1
- package/dist/_chunks/Relations-D2NRW8fC.mjs.map +0 -1
- package/dist/_chunks/Relations-NFLaRNPr.js.map +0 -1
- package/dist/_chunks/index-C9HxCo5R.mjs.map +0 -1
- package/dist/_chunks/index-ovJRE1FM.js.map +0 -1
- package/dist/_chunks/relations-D8iFAeRu.mjs.map +0 -1
- package/dist/_chunks/relations-NN3coOG5.js.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
|
});
|
@@ -393,7 +410,12 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
393
410
|
if (userToPopulate == null) {
|
394
411
|
return null;
|
395
412
|
}
|
396
|
-
return strapi2.query("admin::user").findOne({
|
413
|
+
return strapi2.query("admin::user").findOne({
|
414
|
+
where: {
|
415
|
+
...userToPopulate.id ? { id: userToPopulate.id } : {},
|
416
|
+
...userToPopulate.documentId ? { documentId: userToPopulate.documentId } : {}
|
417
|
+
}
|
418
|
+
});
|
397
419
|
})
|
398
420
|
);
|
399
421
|
return {
|
@@ -406,7 +428,7 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
406
428
|
[attributeKey]: adminUsers
|
407
429
|
};
|
408
430
|
}
|
409
|
-
const permissionChecker2 = getService$
|
431
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
410
432
|
userAbility: params.state.userAbility,
|
411
433
|
model: attributeSchema.target
|
412
434
|
});
|
@@ -582,7 +604,7 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
582
604
|
onCommit(async () => {
|
583
605
|
for (const entry of localeEntries) {
|
584
606
|
const status = await serviceUtils.getVersionStatus(uid2, entry);
|
585
|
-
await getService(strapi2, "history").createVersion({
|
607
|
+
await getService$1(strapi2, "history").createVersion({
|
586
608
|
contentType: uid2,
|
587
609
|
data: fp.omit(FIELDS_TO_IGNORE, entry),
|
588
610
|
relatedDocumentId: documentId,
|
@@ -595,15 +617,19 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
595
617
|
});
|
596
618
|
return result;
|
597
619
|
});
|
598
|
-
state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
|
620
|
+
state.deleteExpiredJob = nodeSchedule.scheduleJob("historyDaily", "0 0 * * *", () => {
|
599
621
|
const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1e3;
|
600
622
|
const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);
|
601
623
|
strapi2.db.query(HISTORY_VERSION_UID).deleteMany({
|
602
624
|
where: {
|
603
625
|
created_at: {
|
604
|
-
$lt: expirationDate
|
626
|
+
$lt: expirationDate
|
605
627
|
}
|
606
628
|
}
|
629
|
+
}).catch((error) => {
|
630
|
+
if (error instanceof Error) {
|
631
|
+
strapi2.log.error("Error deleting expired history versions", error.message);
|
632
|
+
}
|
607
633
|
});
|
608
634
|
});
|
609
635
|
state.isInitialized = true;
|
@@ -615,17 +641,17 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
615
641
|
}
|
616
642
|
};
|
617
643
|
};
|
618
|
-
const services$
|
644
|
+
const services$2 = {
|
619
645
|
history: createHistoryService,
|
620
646
|
lifecycles: createLifecyclesService
|
621
647
|
};
|
622
|
-
const info = { pluginName: "content-manager", type: "admin" };
|
648
|
+
const info$1 = { pluginName: "content-manager", type: "admin" };
|
623
649
|
const historyVersionRouter = {
|
624
650
|
type: "admin",
|
625
651
|
routes: [
|
626
652
|
{
|
627
653
|
method: "GET",
|
628
|
-
info,
|
654
|
+
info: info$1,
|
629
655
|
path: "/history-versions",
|
630
656
|
handler: "history-version.findMany",
|
631
657
|
config: {
|
@@ -634,7 +660,7 @@ const historyVersionRouter = {
|
|
634
660
|
},
|
635
661
|
{
|
636
662
|
method: "PUT",
|
637
|
-
info,
|
663
|
+
info: info$1,
|
638
664
|
path: "/history-versions/:versionId/restore",
|
639
665
|
handler: "history-version.restoreVersion",
|
640
666
|
config: {
|
@@ -643,7 +669,7 @@ const historyVersionRouter = {
|
|
643
669
|
}
|
644
670
|
]
|
645
671
|
};
|
646
|
-
const routes$
|
672
|
+
const routes$2 = {
|
647
673
|
"history-version": historyVersionRouter
|
648
674
|
};
|
649
675
|
const historyVersion = {
|
@@ -690,21 +716,21 @@ const historyVersion = {
|
|
690
716
|
}
|
691
717
|
}
|
692
718
|
};
|
693
|
-
const getFeature = () => {
|
719
|
+
const getFeature$1 = () => {
|
694
720
|
if (strapi.ee.features.isEnabled("cms-content-history")) {
|
695
721
|
return {
|
696
722
|
register({ strapi: strapi2 }) {
|
697
723
|
strapi2.get("models").add(historyVersion);
|
698
724
|
},
|
699
725
|
bootstrap({ strapi: strapi2 }) {
|
700
|
-
getService(strapi2, "lifecycles").bootstrap();
|
726
|
+
getService$1(strapi2, "lifecycles").bootstrap();
|
701
727
|
},
|
702
728
|
destroy({ strapi: strapi2 }) {
|
703
|
-
getService(strapi2, "lifecycles").destroy();
|
729
|
+
getService$1(strapi2, "lifecycles").destroy();
|
704
730
|
},
|
705
|
-
controllers: controllers$
|
706
|
-
services: services$
|
707
|
-
routes: routes$
|
731
|
+
controllers: controllers$2,
|
732
|
+
services: services$2,
|
733
|
+
routes: routes$2
|
708
734
|
};
|
709
735
|
}
|
710
736
|
return {
|
@@ -713,7 +739,7 @@ const getFeature = () => {
|
|
713
739
|
}
|
714
740
|
};
|
715
741
|
};
|
716
|
-
const history = getFeature();
|
742
|
+
const history = getFeature$1();
|
717
743
|
const register = async ({ strapi: strapi2 }) => {
|
718
744
|
await history.register?.({ strapi: strapi2 });
|
719
745
|
};
|
@@ -721,15 +747,165 @@ const ALLOWED_WEBHOOK_EVENTS = {
|
|
721
747
|
ENTRY_PUBLISH: "entry.publish",
|
722
748
|
ENTRY_UNPUBLISH: "entry.unpublish"
|
723
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();
|
724
899
|
const bootstrap = async () => {
|
725
900
|
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
726
901
|
strapi.get("webhookStore").addAllowedEvent(key, value);
|
727
902
|
});
|
728
|
-
getService$
|
729
|
-
await getService$
|
730
|
-
await getService$
|
731
|
-
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();
|
732
907
|
await history.bootstrap?.({ strapi });
|
908
|
+
await preview.bootstrap?.({ strapi });
|
733
909
|
};
|
734
910
|
const destroy = async ({ strapi: strapi2 }) => {
|
735
911
|
await history.destroy?.({ strapi: strapi2 });
|
@@ -1219,7 +1395,8 @@ const admin = {
|
|
1219
1395
|
};
|
1220
1396
|
const routes = {
|
1221
1397
|
admin,
|
1222
|
-
...history.routes ? history.routes : {}
|
1398
|
+
...history.routes ? history.routes : {},
|
1399
|
+
...preview.routes ? preview.routes : {}
|
1223
1400
|
};
|
1224
1401
|
const hasPermissionsSchema = strapiUtils.yup.object({
|
1225
1402
|
actions: strapiUtils.yup.array().of(strapiUtils.yup.string()),
|
@@ -1476,7 +1653,7 @@ const createMetadasSchema = (schema) => {
|
|
1476
1653
|
if (!value) {
|
1477
1654
|
return strapiUtils.yup.string();
|
1478
1655
|
}
|
1479
|
-
const targetSchema = getService$
|
1656
|
+
const targetSchema = getService$2("content-types").findContentType(
|
1480
1657
|
schema.attributes[key].targetModel
|
1481
1658
|
);
|
1482
1659
|
if (!targetSchema) {
|
@@ -1645,7 +1822,7 @@ const getDocumentLocaleAndStatus = async (request, model, opts = { allowMultiple
|
|
1645
1822
|
}
|
1646
1823
|
};
|
1647
1824
|
const formatDocumentWithMetadata = async (permissionChecker2, uid2, document, opts = {}) => {
|
1648
|
-
const documentMetadata2 = getService$
|
1825
|
+
const documentMetadata2 = getService$2("document-metadata");
|
1649
1826
|
const serviceOutput = await documentMetadata2.formatDocumentWithMetadata(uid2, document, opts);
|
1650
1827
|
let {
|
1651
1828
|
meta: { availableLocales, availableStatus }
|
@@ -1671,8 +1848,8 @@ const createDocument = async (ctx, opts) => {
|
|
1671
1848
|
const { userAbility, user } = ctx.state;
|
1672
1849
|
const { model } = ctx.params;
|
1673
1850
|
const { body } = ctx.request;
|
1674
|
-
const documentManager2 = getService$
|
1675
|
-
const permissionChecker2 = getService$
|
1851
|
+
const documentManager2 = getService$2("document-manager");
|
1852
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1676
1853
|
if (permissionChecker2.cannot.create()) {
|
1677
1854
|
throw new strapiUtils.errors.ForbiddenError();
|
1678
1855
|
}
|
@@ -1692,13 +1869,13 @@ const updateDocument = async (ctx, opts) => {
|
|
1692
1869
|
const { userAbility, user } = ctx.state;
|
1693
1870
|
const { id, model } = ctx.params;
|
1694
1871
|
const { body } = ctx.request;
|
1695
|
-
const documentManager2 = getService$
|
1696
|
-
const permissionChecker2 = getService$
|
1872
|
+
const documentManager2 = getService$2("document-manager");
|
1873
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1697
1874
|
if (permissionChecker2.cannot.update()) {
|
1698
1875
|
throw new strapiUtils.errors.ForbiddenError();
|
1699
1876
|
}
|
1700
1877
|
const permissionQuery = await permissionChecker2.sanitizedQuery.update(ctx.query);
|
1701
|
-
const populate = await getService$
|
1878
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1702
1879
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1703
1880
|
const [documentVersion, documentExists] = await Promise.all([
|
1704
1881
|
documentManager2.findOne(id, model, { populate, locale, status: "draft" }),
|
@@ -1715,7 +1892,7 @@ const updateDocument = async (ctx, opts) => {
|
|
1715
1892
|
throw new strapiUtils.errors.ForbiddenError();
|
1716
1893
|
}
|
1717
1894
|
const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
|
1718
|
-
const setCreator = strapiUtils.setCreatorFields({ user, isEdition: true });
|
1895
|
+
const setCreator = documentVersion ? strapiUtils.setCreatorFields({ user, isEdition: true }) : strapiUtils.setCreatorFields({ user });
|
1719
1896
|
const sanitizeFn = strapiUtils.async.pipe(pickPermittedFields, setCreator);
|
1720
1897
|
const sanitizedBody = await sanitizeFn(body);
|
1721
1898
|
return documentManager2.update(documentVersion?.documentId || id, model, {
|
@@ -1729,14 +1906,14 @@ const collectionTypes = {
|
|
1729
1906
|
const { userAbility } = ctx.state;
|
1730
1907
|
const { model } = ctx.params;
|
1731
1908
|
const { query } = ctx.request;
|
1732
|
-
const documentMetadata2 = getService$
|
1733
|
-
const documentManager2 = getService$
|
1734
|
-
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 });
|
1735
1912
|
if (permissionChecker2.cannot.read()) {
|
1736
1913
|
return ctx.forbidden();
|
1737
1914
|
}
|
1738
1915
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(query);
|
1739
|
-
const populate = await getService$
|
1916
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(1).countRelations({ toOne: false, toMany: true }).build();
|
1740
1917
|
const { locale, status } = await getDocumentLocaleAndStatus(query, model);
|
1741
1918
|
const { results: documents, pagination } = await documentManager2.findPage(
|
1742
1919
|
{ ...permissionQuery, populate, locale, status },
|
@@ -1765,13 +1942,13 @@ const collectionTypes = {
|
|
1765
1942
|
async findOne(ctx) {
|
1766
1943
|
const { userAbility } = ctx.state;
|
1767
1944
|
const { model, id } = ctx.params;
|
1768
|
-
const documentManager2 = getService$
|
1769
|
-
const permissionChecker2 = getService$
|
1945
|
+
const documentManager2 = getService$2("document-manager");
|
1946
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1770
1947
|
if (permissionChecker2.cannot.read()) {
|
1771
1948
|
return ctx.forbidden();
|
1772
1949
|
}
|
1773
1950
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
1774
|
-
const populate = await getService$
|
1951
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1775
1952
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1776
1953
|
const version = await documentManager2.findOne(id, model, {
|
1777
1954
|
populate,
|
@@ -1802,7 +1979,7 @@ const collectionTypes = {
|
|
1802
1979
|
async create(ctx) {
|
1803
1980
|
const { userAbility } = ctx.state;
|
1804
1981
|
const { model } = ctx.params;
|
1805
|
-
const permissionChecker2 = getService$
|
1982
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1806
1983
|
const [totalEntries, document] = await Promise.all([
|
1807
1984
|
strapi.db.query(model).count(),
|
1808
1985
|
createDocument(ctx)
|
@@ -1823,7 +2000,7 @@ const collectionTypes = {
|
|
1823
2000
|
async update(ctx) {
|
1824
2001
|
const { userAbility } = ctx.state;
|
1825
2002
|
const { model } = ctx.params;
|
1826
|
-
const permissionChecker2 = getService$
|
2003
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1827
2004
|
const updatedVersion = await updateDocument(ctx);
|
1828
2005
|
const sanitizedVersion = await permissionChecker2.sanitizeOutput(updatedVersion);
|
1829
2006
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedVersion);
|
@@ -1832,13 +2009,13 @@ const collectionTypes = {
|
|
1832
2009
|
const { userAbility, user } = ctx.state;
|
1833
2010
|
const { model, sourceId: id } = ctx.params;
|
1834
2011
|
const { body } = ctx.request;
|
1835
|
-
const documentManager2 = getService$
|
1836
|
-
const permissionChecker2 = getService$
|
2012
|
+
const documentManager2 = getService$2("document-manager");
|
2013
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1837
2014
|
if (permissionChecker2.cannot.create()) {
|
1838
2015
|
return ctx.forbidden();
|
1839
2016
|
}
|
1840
2017
|
const permissionQuery = await permissionChecker2.sanitizedQuery.create(ctx.query);
|
1841
|
-
const populate = await getService$
|
2018
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1842
2019
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1843
2020
|
const document = await documentManager2.findOne(id, model, {
|
1844
2021
|
populate,
|
@@ -1877,13 +2054,13 @@ const collectionTypes = {
|
|
1877
2054
|
async delete(ctx) {
|
1878
2055
|
const { userAbility } = ctx.state;
|
1879
2056
|
const { id, model } = ctx.params;
|
1880
|
-
const documentManager2 = getService$
|
1881
|
-
const permissionChecker2 = getService$
|
2057
|
+
const documentManager2 = getService$2("document-manager");
|
2058
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1882
2059
|
if (permissionChecker2.cannot.delete()) {
|
1883
2060
|
return ctx.forbidden();
|
1884
2061
|
}
|
1885
2062
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(ctx.query);
|
1886
|
-
const populate = await getService$
|
2063
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1887
2064
|
const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1888
2065
|
const documentLocales = await documentManager2.findLocales(id, model, { populate, locale });
|
1889
2066
|
if (documentLocales.length === 0) {
|
@@ -1905,14 +2082,14 @@ const collectionTypes = {
|
|
1905
2082
|
const { userAbility } = ctx.state;
|
1906
2083
|
const { id, model } = ctx.params;
|
1907
2084
|
const { body } = ctx.request;
|
1908
|
-
const documentManager2 = getService$
|
1909
|
-
const permissionChecker2 = getService$
|
2085
|
+
const documentManager2 = getService$2("document-manager");
|
2086
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1910
2087
|
if (permissionChecker2.cannot.publish()) {
|
1911
2088
|
return ctx.forbidden();
|
1912
2089
|
}
|
1913
2090
|
const publishedDocument = await strapi.db.transaction(async () => {
|
1914
2091
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1915
|
-
const populate = await getService$
|
2092
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1916
2093
|
let document;
|
1917
2094
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1918
2095
|
const isCreate = fp.isNil(id);
|
@@ -1960,13 +2137,13 @@ const collectionTypes = {
|
|
1960
2137
|
const { body } = ctx.request;
|
1961
2138
|
const { documentIds } = body;
|
1962
2139
|
await validateBulkActionInput(body);
|
1963
|
-
const documentManager2 = getService$
|
1964
|
-
const permissionChecker2 = getService$
|
2140
|
+
const documentManager2 = getService$2("document-manager");
|
2141
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1965
2142
|
if (permissionChecker2.cannot.publish()) {
|
1966
2143
|
return ctx.forbidden();
|
1967
2144
|
}
|
1968
2145
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1969
|
-
const populate = await getService$
|
2146
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1970
2147
|
const { locale } = await getDocumentLocaleAndStatus(body, model, {
|
1971
2148
|
allowMultipleLocales: true
|
1972
2149
|
});
|
@@ -1991,8 +2168,8 @@ const collectionTypes = {
|
|
1991
2168
|
const { body } = ctx.request;
|
1992
2169
|
const { documentIds } = body;
|
1993
2170
|
await validateBulkActionInput(body);
|
1994
|
-
const documentManager2 = getService$
|
1995
|
-
const permissionChecker2 = getService$
|
2171
|
+
const documentManager2 = getService$2("document-manager");
|
2172
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1996
2173
|
if (permissionChecker2.cannot.unpublish()) {
|
1997
2174
|
return ctx.forbidden();
|
1998
2175
|
}
|
@@ -2021,8 +2198,8 @@ const collectionTypes = {
|
|
2021
2198
|
const {
|
2022
2199
|
body: { discardDraft, ...body }
|
2023
2200
|
} = ctx.request;
|
2024
|
-
const documentManager2 = getService$
|
2025
|
-
const permissionChecker2 = getService$
|
2201
|
+
const documentManager2 = getService$2("document-manager");
|
2202
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2026
2203
|
if (permissionChecker2.cannot.unpublish()) {
|
2027
2204
|
return ctx.forbidden();
|
2028
2205
|
}
|
@@ -2030,7 +2207,7 @@ const collectionTypes = {
|
|
2030
2207
|
return ctx.forbidden();
|
2031
2208
|
}
|
2032
2209
|
const permissionQuery = await permissionChecker2.sanitizedQuery.unpublish(ctx.query);
|
2033
|
-
const populate = await getService$
|
2210
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2034
2211
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2035
2212
|
const document = await documentManager2.findOne(id, model, {
|
2036
2213
|
populate,
|
@@ -2061,13 +2238,13 @@ const collectionTypes = {
|
|
2061
2238
|
const { userAbility } = ctx.state;
|
2062
2239
|
const { id, model } = ctx.params;
|
2063
2240
|
const { body } = ctx.request;
|
2064
|
-
const documentManager2 = getService$
|
2065
|
-
const permissionChecker2 = getService$
|
2241
|
+
const documentManager2 = getService$2("document-manager");
|
2242
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2066
2243
|
if (permissionChecker2.cannot.discard()) {
|
2067
2244
|
return ctx.forbidden();
|
2068
2245
|
}
|
2069
2246
|
const permissionQuery = await permissionChecker2.sanitizedQuery.discard(ctx.query);
|
2070
|
-
const populate = await getService$
|
2247
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2071
2248
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2072
2249
|
const document = await documentManager2.findOne(id, model, {
|
2073
2250
|
populate,
|
@@ -2092,13 +2269,13 @@ const collectionTypes = {
|
|
2092
2269
|
const { query, body } = ctx.request;
|
2093
2270
|
const { documentIds } = body;
|
2094
2271
|
await validateBulkActionInput(body);
|
2095
|
-
const documentManager2 = getService$
|
2096
|
-
const permissionChecker2 = getService$
|
2272
|
+
const documentManager2 = getService$2("document-manager");
|
2273
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2097
2274
|
if (permissionChecker2.cannot.delete()) {
|
2098
2275
|
return ctx.forbidden();
|
2099
2276
|
}
|
2100
2277
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(query);
|
2101
|
-
const populate = await getService$
|
2278
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2102
2279
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2103
2280
|
const documentLocales = await documentManager2.findLocales(documentIds, model, {
|
2104
2281
|
populate,
|
@@ -2119,13 +2296,13 @@ const collectionTypes = {
|
|
2119
2296
|
async countDraftRelations(ctx) {
|
2120
2297
|
const { userAbility } = ctx.state;
|
2121
2298
|
const { model, id } = ctx.params;
|
2122
|
-
const documentManager2 = getService$
|
2123
|
-
const permissionChecker2 = getService$
|
2299
|
+
const documentManager2 = getService$2("document-manager");
|
2300
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2124
2301
|
if (permissionChecker2.cannot.read()) {
|
2125
2302
|
return ctx.forbidden();
|
2126
2303
|
}
|
2127
2304
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2128
|
-
const populate = await getService$
|
2305
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2129
2306
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
2130
2307
|
const entity = await documentManager2.findOne(id, model, { populate, locale, status });
|
2131
2308
|
if (!entity) {
|
@@ -2144,8 +2321,8 @@ const collectionTypes = {
|
|
2144
2321
|
const ids = ctx.request.query.documentIds;
|
2145
2322
|
const locale = ctx.request.query.locale;
|
2146
2323
|
const { model } = ctx.params;
|
2147
|
-
const documentManager2 = getService$
|
2148
|
-
const permissionChecker2 = getService$
|
2324
|
+
const documentManager2 = getService$2("document-manager");
|
2325
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2149
2326
|
if (permissionChecker2.cannot.read()) {
|
2150
2327
|
return ctx.forbidden();
|
2151
2328
|
}
|
@@ -2169,13 +2346,13 @@ const collectionTypes = {
|
|
2169
2346
|
};
|
2170
2347
|
const components$1 = {
|
2171
2348
|
findComponents(ctx) {
|
2172
|
-
const components2 = getService$
|
2173
|
-
const { toDto } = getService$
|
2349
|
+
const components2 = getService$2("components").findAllComponents();
|
2350
|
+
const { toDto } = getService$2("data-mapper");
|
2174
2351
|
ctx.body = { data: components2.map(toDto) };
|
2175
2352
|
},
|
2176
2353
|
async findComponentConfiguration(ctx) {
|
2177
2354
|
const { uid: uid2 } = ctx.params;
|
2178
|
-
const componentService = getService$
|
2355
|
+
const componentService = getService$2("components");
|
2179
2356
|
const component = componentService.findComponent(uid2);
|
2180
2357
|
if (!component) {
|
2181
2358
|
return ctx.notFound("component.notFound");
|
@@ -2192,7 +2369,7 @@ const components$1 = {
|
|
2192
2369
|
async updateComponentConfiguration(ctx) {
|
2193
2370
|
const { uid: uid2 } = ctx.params;
|
2194
2371
|
const { body } = ctx.request;
|
2195
|
-
const componentService = getService$
|
2372
|
+
const componentService = getService$2("components");
|
2196
2373
|
const component = componentService.findComponent(uid2);
|
2197
2374
|
if (!component) {
|
2198
2375
|
return ctx.notFound("component.notFound");
|
@@ -2226,12 +2403,12 @@ const contentTypes = {
|
|
2226
2403
|
} catch (error) {
|
2227
2404
|
return ctx.send({ error }, 400);
|
2228
2405
|
}
|
2229
|
-
const contentTypes2 = getService$
|
2230
|
-
const { toDto } = getService$
|
2406
|
+
const contentTypes2 = getService$2("content-types").findContentTypesByKind(kind);
|
2407
|
+
const { toDto } = getService$2("data-mapper");
|
2231
2408
|
ctx.body = { data: contentTypes2.map(toDto) };
|
2232
2409
|
},
|
2233
2410
|
async findContentTypesSettings(ctx) {
|
2234
|
-
const { findAllContentTypes, findConfiguration } = getService$
|
2411
|
+
const { findAllContentTypes, findConfiguration } = getService$2("content-types");
|
2235
2412
|
const contentTypes2 = await findAllContentTypes();
|
2236
2413
|
const configurations = await Promise.all(
|
2237
2414
|
contentTypes2.map(async (contentType) => {
|
@@ -2245,7 +2422,7 @@ const contentTypes = {
|
|
2245
2422
|
},
|
2246
2423
|
async findContentTypeConfiguration(ctx) {
|
2247
2424
|
const { uid: uid2 } = ctx.params;
|
2248
|
-
const contentTypeService = getService$
|
2425
|
+
const contentTypeService = getService$2("content-types");
|
2249
2426
|
const contentType = await contentTypeService.findContentType(uid2);
|
2250
2427
|
if (!contentType) {
|
2251
2428
|
return ctx.notFound("contentType.notFound");
|
@@ -2267,13 +2444,13 @@ const contentTypes = {
|
|
2267
2444
|
const { userAbility } = ctx.state;
|
2268
2445
|
const { uid: uid2 } = ctx.params;
|
2269
2446
|
const { body } = ctx.request;
|
2270
|
-
const contentTypeService = getService$
|
2271
|
-
const metricsService = getService$
|
2447
|
+
const contentTypeService = getService$2("content-types");
|
2448
|
+
const metricsService = getService$2("metrics");
|
2272
2449
|
const contentType = await contentTypeService.findContentType(uid2);
|
2273
2450
|
if (!contentType) {
|
2274
2451
|
return ctx.notFound("contentType.notFound");
|
2275
2452
|
}
|
2276
|
-
if (!getService$
|
2453
|
+
if (!getService$2("permission").canConfigureContentType({ userAbility, contentType })) {
|
2277
2454
|
return ctx.forbidden();
|
2278
2455
|
}
|
2279
2456
|
let input;
|
@@ -2306,10 +2483,10 @@ const contentTypes = {
|
|
2306
2483
|
};
|
2307
2484
|
const init = {
|
2308
2485
|
getInitData(ctx) {
|
2309
|
-
const { toDto } = getService$
|
2310
|
-
const { findAllComponents } = getService$
|
2311
|
-
const { getAllFieldSizes } = getService$
|
2312
|
-
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");
|
2313
2490
|
ctx.body = {
|
2314
2491
|
data: {
|
2315
2492
|
fieldSizes: getAllFieldSizes(),
|
@@ -2345,7 +2522,7 @@ const addFiltersClause = (params, filtersClause) => {
|
|
2345
2522
|
params.filters.$and.push(filtersClause);
|
2346
2523
|
};
|
2347
2524
|
const sanitizeMainField = (model, mainField, userAbility) => {
|
2348
|
-
const permissionChecker2 = getService$
|
2525
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2349
2526
|
userAbility,
|
2350
2527
|
model: model.uid
|
2351
2528
|
});
|
@@ -2359,15 +2536,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
|
|
2359
2536
|
}
|
2360
2537
|
return mainField;
|
2361
2538
|
};
|
2362
|
-
const addStatusToRelations = async (
|
2363
|
-
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) {
|
2364
2545
|
return relations2;
|
2365
2546
|
}
|
2366
|
-
const
|
2367
|
-
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
|
+
});
|
2368
2557
|
return relations2.map((relation) => {
|
2369
|
-
const availableStatuses =
|
2370
|
-
(availableDocument) => availableDocument.documentId === relation.documentId
|
2558
|
+
const availableStatuses = availableStatus.filter(
|
2559
|
+
(availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
|
2371
2560
|
);
|
2372
2561
|
return {
|
2373
2562
|
...relation,
|
@@ -2429,7 +2618,7 @@ const relations = {
|
|
2429
2618
|
ctx.request?.query?.locale
|
2430
2619
|
);
|
2431
2620
|
const { status } = validateStatus(sourceUid, ctx.request?.query?.status);
|
2432
|
-
const permissionChecker2 = getService$
|
2621
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2433
2622
|
userAbility,
|
2434
2623
|
model
|
2435
2624
|
});
|
@@ -2454,7 +2643,7 @@ const relations = {
|
|
2454
2643
|
where.id = id;
|
2455
2644
|
}
|
2456
2645
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2457
|
-
const populate = await getService$
|
2646
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2458
2647
|
const currentEntity = await strapi.db.query(model).findOne({
|
2459
2648
|
where,
|
2460
2649
|
populate
|
@@ -2469,7 +2658,7 @@ const relations = {
|
|
2469
2658
|
}
|
2470
2659
|
entryId = currentEntity.id;
|
2471
2660
|
}
|
2472
|
-
const modelConfig = isComponent2 ? await getService$
|
2661
|
+
const modelConfig = isComponent2 ? await getService$2("components").findConfiguration(sourceSchema) : await getService$2("content-types").findConfiguration(sourceSchema);
|
2473
2662
|
const targetSchema = strapi.getModel(targetUid);
|
2474
2663
|
const mainField = fp.flow(
|
2475
2664
|
fp.prop(`metadatas.${targetField}.edit.mainField`),
|
@@ -2523,7 +2712,7 @@ const relations = {
|
|
2523
2712
|
}
|
2524
2713
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2525
2714
|
const { idsToOmit, idsToInclude, _q, ...query } = ctx.request.query;
|
2526
|
-
const permissionChecker2 = getService$
|
2715
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2527
2716
|
userAbility: ctx.state.userAbility,
|
2528
2717
|
model: targetUid
|
2529
2718
|
});
|
@@ -2596,21 +2785,33 @@ const relations = {
|
|
2596
2785
|
attribute,
|
2597
2786
|
targetField,
|
2598
2787
|
fieldsToSelect,
|
2599
|
-
|
2600
|
-
|
2601
|
-
}
|
2602
|
-
target: {
|
2603
|
-
schema: { uid: targetUid }
|
2604
|
-
}
|
2788
|
+
status,
|
2789
|
+
source: { schema: sourceSchema },
|
2790
|
+
target: { schema: targetSchema }
|
2605
2791
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2606
|
-
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 });
|
2607
2795
|
const dbQuery = strapi.db.query(sourceUid);
|
2608
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
|
+
}
|
2609
2809
|
const res = await loadRelations({ id: entryId }, targetField, {
|
2610
|
-
select: ["id", "documentId", "locale", "publishedAt"],
|
2810
|
+
select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
|
2611
2811
|
ordering: "desc",
|
2612
2812
|
page: ctx.request.query.page,
|
2613
|
-
pageSize: ctx.request.query.pageSize
|
2813
|
+
pageSize: ctx.request.query.pageSize,
|
2814
|
+
filters
|
2614
2815
|
});
|
2615
2816
|
const loadedIds = res.results.map((item) => item.id);
|
2616
2817
|
addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
|
@@ -2631,10 +2832,10 @@ const relations = {
|
|
2631
2832
|
}
|
2632
2833
|
};
|
2633
2834
|
const buildPopulateFromQuery = async (query, model) => {
|
2634
|
-
return getService$
|
2835
|
+
return getService$2("populate-builder")(model).populateFromQuery(query).populateDeep(Infinity).countRelations().build();
|
2635
2836
|
};
|
2636
2837
|
const findDocument = async (query, uid2, opts = {}) => {
|
2637
|
-
const documentManager2 = getService$
|
2838
|
+
const documentManager2 = getService$2("document-manager");
|
2638
2839
|
const populate = await buildPopulateFromQuery(query, uid2);
|
2639
2840
|
return documentManager2.findMany({ ...opts, populate }, uid2).then((documents) => documents[0]);
|
2640
2841
|
};
|
@@ -2642,8 +2843,8 @@ const createOrUpdateDocument = async (ctx, opts) => {
|
|
2642
2843
|
const { user, userAbility } = ctx.state;
|
2643
2844
|
const { model } = ctx.params;
|
2644
2845
|
const { body, query } = ctx.request;
|
2645
|
-
const documentManager2 = getService$
|
2646
|
-
const permissionChecker2 = getService$
|
2846
|
+
const documentManager2 = getService$2("document-manager");
|
2847
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2647
2848
|
if (permissionChecker2.cannot.create() && permissionChecker2.cannot.update()) {
|
2648
2849
|
throw new strapiUtils.errors.ForbiddenError();
|
2649
2850
|
}
|
@@ -2684,7 +2885,7 @@ const singleTypes = {
|
|
2684
2885
|
const { userAbility } = ctx.state;
|
2685
2886
|
const { model } = ctx.params;
|
2686
2887
|
const { query = {} } = ctx.request;
|
2687
|
-
const permissionChecker2 = getService$
|
2888
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2688
2889
|
if (permissionChecker2.cannot.read()) {
|
2689
2890
|
return ctx.forbidden();
|
2690
2891
|
}
|
@@ -2718,7 +2919,7 @@ const singleTypes = {
|
|
2718
2919
|
async createOrUpdate(ctx) {
|
2719
2920
|
const { userAbility } = ctx.state;
|
2720
2921
|
const { model } = ctx.params;
|
2721
|
-
const permissionChecker2 = getService$
|
2922
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2722
2923
|
const document = await createOrUpdateDocument(ctx);
|
2723
2924
|
const sanitizedDocument = await permissionChecker2.sanitizeOutput(document);
|
2724
2925
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedDocument);
|
@@ -2727,8 +2928,8 @@ const singleTypes = {
|
|
2727
2928
|
const { userAbility } = ctx.state;
|
2728
2929
|
const { model } = ctx.params;
|
2729
2930
|
const { query = {} } = ctx.request;
|
2730
|
-
const documentManager2 = getService$
|
2731
|
-
const permissionChecker2 = getService$
|
2931
|
+
const documentManager2 = getService$2("document-manager");
|
2932
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2732
2933
|
if (permissionChecker2.cannot.delete()) {
|
2733
2934
|
return ctx.forbidden();
|
2734
2935
|
}
|
@@ -2756,8 +2957,8 @@ const singleTypes = {
|
|
2756
2957
|
const { userAbility } = ctx.state;
|
2757
2958
|
const { model } = ctx.params;
|
2758
2959
|
const { query = {} } = ctx.request;
|
2759
|
-
const documentManager2 = getService$
|
2760
|
-
const permissionChecker2 = getService$
|
2960
|
+
const documentManager2 = getService$2("document-manager");
|
2961
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2761
2962
|
if (permissionChecker2.cannot.publish()) {
|
2762
2963
|
return ctx.forbidden();
|
2763
2964
|
}
|
@@ -2785,8 +2986,8 @@ const singleTypes = {
|
|
2785
2986
|
body: { discardDraft, ...body },
|
2786
2987
|
query = {}
|
2787
2988
|
} = ctx.request;
|
2788
|
-
const documentManager2 = getService$
|
2789
|
-
const permissionChecker2 = getService$
|
2989
|
+
const documentManager2 = getService$2("document-manager");
|
2990
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2790
2991
|
if (permissionChecker2.cannot.unpublish()) {
|
2791
2992
|
return ctx.forbidden();
|
2792
2993
|
}
|
@@ -2820,8 +3021,8 @@ const singleTypes = {
|
|
2820
3021
|
const { userAbility } = ctx.state;
|
2821
3022
|
const { model } = ctx.params;
|
2822
3023
|
const { body, query = {} } = ctx.request;
|
2823
|
-
const documentManager2 = getService$
|
2824
|
-
const permissionChecker2 = getService$
|
3024
|
+
const documentManager2 = getService$2("document-manager");
|
3025
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2825
3026
|
if (permissionChecker2.cannot.discard()) {
|
2826
3027
|
return ctx.forbidden();
|
2827
3028
|
}
|
@@ -2844,8 +3045,8 @@ const singleTypes = {
|
|
2844
3045
|
const { userAbility } = ctx.state;
|
2845
3046
|
const { model } = ctx.params;
|
2846
3047
|
const { query } = ctx.request;
|
2847
|
-
const documentManager2 = getService$
|
2848
|
-
const permissionChecker2 = getService$
|
3048
|
+
const documentManager2 = getService$2("document-manager");
|
3049
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2849
3050
|
const { locale } = await getDocumentLocaleAndStatus(query, model);
|
2850
3051
|
if (permissionChecker2.cannot.read()) {
|
2851
3052
|
return ctx.forbidden();
|
@@ -2869,7 +3070,7 @@ const uid$1 = {
|
|
2869
3070
|
const { query = {} } = ctx.request;
|
2870
3071
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2871
3072
|
await validateUIDField(contentTypeUID, field);
|
2872
|
-
const uidService = getService$
|
3073
|
+
const uidService = getService$2("uid");
|
2873
3074
|
ctx.body = {
|
2874
3075
|
data: await uidService.generateUIDField({ contentTypeUID, field, data, locale })
|
2875
3076
|
};
|
@@ -2881,7 +3082,7 @@ const uid$1 = {
|
|
2881
3082
|
const { query = {} } = ctx.request;
|
2882
3083
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2883
3084
|
await validateUIDField(contentTypeUID, field);
|
2884
|
-
const uidService = getService$
|
3085
|
+
const uidService = getService$2("uid");
|
2885
3086
|
const isAvailable = await uidService.checkUIDAvailability({
|
2886
3087
|
contentTypeUID,
|
2887
3088
|
field,
|
@@ -2902,7 +3103,8 @@ const controllers = {
|
|
2902
3103
|
relations,
|
2903
3104
|
"single-types": singleTypes,
|
2904
3105
|
uid: uid$1,
|
2905
|
-
...history.controllers ? history.controllers : {}
|
3106
|
+
...history.controllers ? history.controllers : {},
|
3107
|
+
...preview.controllers ? preview.controllers : {}
|
2906
3108
|
};
|
2907
3109
|
const keys = {
|
2908
3110
|
CONFIGURATION: "configuration"
|
@@ -3053,12 +3255,12 @@ async function syncMetadatas(configuration, schema) {
|
|
3053
3255
|
return ___default.default.assign(metasWithDefaults, updatedMetas);
|
3054
3256
|
}
|
3055
3257
|
const getTargetSchema = (targetModel) => {
|
3056
|
-
return getService$
|
3258
|
+
return getService$2("content-types").findContentType(targetModel);
|
3057
3259
|
};
|
3058
3260
|
const DEFAULT_LIST_LENGTH = 4;
|
3059
3261
|
const MAX_ROW_SIZE = 12;
|
3060
3262
|
const isAllowedFieldSize = (type, size) => {
|
3061
|
-
const { getFieldSize } = getService$
|
3263
|
+
const { getFieldSize } = getService$2("field-sizes");
|
3062
3264
|
const fieldSize = getFieldSize(type);
|
3063
3265
|
if (!fieldSize.isResizable && size !== fieldSize.default) {
|
3064
3266
|
return false;
|
@@ -3066,7 +3268,7 @@ const isAllowedFieldSize = (type, size) => {
|
|
3066
3268
|
return size <= MAX_ROW_SIZE;
|
3067
3269
|
};
|
3068
3270
|
const getDefaultFieldSize = (attribute) => {
|
3069
|
-
const { hasFieldSize, getFieldSize } = getService$
|
3271
|
+
const { hasFieldSize, getFieldSize } = getService$2("field-sizes");
|
3070
3272
|
return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type).default;
|
3071
3273
|
};
|
3072
3274
|
async function createDefaultLayouts(schema) {
|
@@ -3101,7 +3303,7 @@ function syncLayouts(configuration, schema) {
|
|
3101
3303
|
for (const el of row) {
|
3102
3304
|
if (!hasEditableAttribute(schema, el.name))
|
3103
3305
|
continue;
|
3104
|
-
const { hasFieldSize } = getService$
|
3306
|
+
const { hasFieldSize } = getService$2("field-sizes");
|
3105
3307
|
const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
|
3106
3308
|
if (!isAllowedFieldSize(fieldType, el.size)) {
|
3107
3309
|
elementsToReAppend.push(el.name);
|
@@ -3241,17 +3443,17 @@ const configurationService$1 = createConfigurationService({
|
|
3241
3443
|
isComponent: true,
|
3242
3444
|
prefix: STORE_KEY_PREFIX,
|
3243
3445
|
getModels() {
|
3244
|
-
const { toContentManagerModel } = getService$
|
3446
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3245
3447
|
return fp.mapValues(toContentManagerModel, strapi.components);
|
3246
3448
|
}
|
3247
3449
|
});
|
3248
3450
|
const components = ({ strapi: strapi2 }) => ({
|
3249
3451
|
findAllComponents() {
|
3250
|
-
const { toContentManagerModel } = getService$
|
3452
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3251
3453
|
return Object.values(strapi2.components).map(toContentManagerModel);
|
3252
3454
|
},
|
3253
3455
|
findComponent(uid2) {
|
3254
|
-
const { toContentManagerModel } = getService$
|
3456
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3255
3457
|
const component = strapi2.components[uid2];
|
3256
3458
|
return fp.isNil(component) ? component : toContentManagerModel(component);
|
3257
3459
|
},
|
@@ -3302,17 +3504,17 @@ const configurationService = createConfigurationService({
|
|
3302
3504
|
storeUtils,
|
3303
3505
|
prefix: "content_types",
|
3304
3506
|
getModels() {
|
3305
|
-
const { toContentManagerModel } = getService$
|
3507
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3306
3508
|
return fp.mapValues(toContentManagerModel, strapi.contentTypes);
|
3307
3509
|
}
|
3308
3510
|
});
|
3309
3511
|
const service = ({ strapi: strapi2 }) => ({
|
3310
3512
|
findAllContentTypes() {
|
3311
|
-
const { toContentManagerModel } = getService$
|
3513
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3312
3514
|
return Object.values(strapi2.contentTypes).map(toContentManagerModel);
|
3313
3515
|
},
|
3314
3516
|
findContentType(uid2) {
|
3315
|
-
const { toContentManagerModel } = getService$
|
3517
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3316
3518
|
const contentType = strapi2.contentTypes[uid2];
|
3317
3519
|
return fp.isNil(contentType) ? contentType : toContentManagerModel(contentType);
|
3318
3520
|
},
|
@@ -3341,7 +3543,7 @@ const service = ({ strapi: strapi2 }) => ({
|
|
3341
3543
|
return this.findConfiguration(contentType);
|
3342
3544
|
},
|
3343
3545
|
findComponentsConfigurations(contentType) {
|
3344
|
-
return getService$
|
3546
|
+
return getService$2("components").findComponentsConfigurations(contentType);
|
3345
3547
|
},
|
3346
3548
|
syncConfigurations() {
|
3347
3549
|
return configurationService.syncConfigurations();
|
@@ -3613,7 +3815,7 @@ const permission = ({ strapi: strapi2 }) => ({
|
|
3613
3815
|
return userAbility.can(action);
|
3614
3816
|
},
|
3615
3817
|
async registerPermissions() {
|
3616
|
-
const displayedContentTypes = getService$
|
3818
|
+
const displayedContentTypes = getService$2("content-types").findDisplayedContentTypes();
|
3617
3819
|
const contentTypesUids = displayedContentTypes.map(fp.prop("uid"));
|
3618
3820
|
const actions = [
|
3619
3821
|
{
|
@@ -3889,7 +4091,7 @@ const getQueryPopulate = async (uid2, query) => {
|
|
3889
4091
|
return populateQuery;
|
3890
4092
|
};
|
3891
4093
|
const buildDeepPopulate = (uid2) => {
|
3892
|
-
return getService$
|
4094
|
+
return getService$2("populate-builder")(uid2).populateDeep(Infinity).countRelations().build();
|
3893
4095
|
};
|
3894
4096
|
const populateBuilder = (uid2) => {
|
3895
4097
|
let getInitialPopulate = async () => {
|
@@ -4074,7 +4276,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4074
4276
|
*/
|
4075
4277
|
async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
|
4076
4278
|
const versionsByLocale = fp.groupBy("locale", allVersions);
|
4077
|
-
|
4279
|
+
if (version.locale) {
|
4280
|
+
delete versionsByLocale[version.locale];
|
4281
|
+
}
|
4078
4282
|
const model = strapi2.getModel(uid2);
|
4079
4283
|
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4080
4284
|
const traversalFunction = async (localeVersion) => strapiUtils.traverseEntity(
|
@@ -4430,7 +4634,8 @@ const services = {
|
|
4430
4634
|
permission,
|
4431
4635
|
"populate-builder": populateBuilder$1,
|
4432
4636
|
uid,
|
4433
|
-
...history.services ? history.services : {}
|
4637
|
+
...history.services ? history.services : {},
|
4638
|
+
...preview.services ? preview.services : {}
|
4434
4639
|
};
|
4435
4640
|
const index = () => {
|
4436
4641
|
return {
|