@strapi/content-manager 5.7.0 → 5.8.0
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-CJPoOvy3.js → ComponentConfigurationPage-BLWQy8ru.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CJPoOvy3.js.map → ComponentConfigurationPage-BLWQy8ru.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CcRDqD0e.mjs → ComponentConfigurationPage-CtIa3aa2.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CcRDqD0e.mjs.map → ComponentConfigurationPage-CtIa3aa2.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-C1ddZ_zf.mjs → EditConfigurationPage-DsPR2DVk.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-C1ddZ_zf.mjs.map → EditConfigurationPage-DsPR2DVk.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CF3lxOy2.js → EditConfigurationPage-RQkymxCy.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CF3lxOy2.js.map → EditConfigurationPage-RQkymxCy.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-CDyTC6aU.js → EditViewPage-B-kExt8C.js} +3 -3
- package/dist/_chunks/{EditViewPage-CDyTC6aU.js.map → EditViewPage-B-kExt8C.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-BPFcUbqi.mjs → EditViewPage-BPyVuPfM.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-BPFcUbqi.mjs.map → EditViewPage-BPyVuPfM.mjs.map} +1 -1
- package/dist/_chunks/{Field-DuxAW9q2.js → Field-DPIsQRre.js} +10 -7
- package/dist/_chunks/{Field-DuxAW9q2.js.map → Field-DPIsQRre.js.map} +1 -1
- package/dist/_chunks/{Field-fBnTwgU4.mjs → Field-Dltnt1km.mjs} +10 -7
- package/dist/_chunks/{Field-fBnTwgU4.mjs.map → Field-Dltnt1km.mjs.map} +1 -1
- package/dist/_chunks/{Form-DSGh_zkz.js → Form-BFi4MXMT.js} +2 -2
- package/dist/_chunks/{Form-DSGh_zkz.js.map → Form-BFi4MXMT.js.map} +1 -1
- package/dist/_chunks/{Form-BGl7PhlZ.mjs → Form-C1IcWm1u.mjs} +2 -2
- package/dist/_chunks/{Form-BGl7PhlZ.mjs.map → Form-C1IcWm1u.mjs.map} +1 -1
- package/dist/_chunks/{History-DTYB9CSB.mjs → History-04ChQ4pl.mjs} +32 -8
- package/dist/_chunks/History-04ChQ4pl.mjs.map +1 -0
- package/dist/_chunks/{History-DrDJv698.js → History-wjcK4L0C.js} +32 -8
- package/dist/_chunks/History-wjcK4L0C.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-qWx8r4D_.mjs → ListConfigurationPage-BYqPYLSU.mjs} +2 -2
- package/dist/_chunks/{ListConfigurationPage-qWx8r4D_.mjs.map → ListConfigurationPage-BYqPYLSU.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-zurIlUZ7.js → ListConfigurationPage-CRbxIC3J.js} +2 -2
- package/dist/_chunks/{ListConfigurationPage-zurIlUZ7.js.map → ListConfigurationPage-CRbxIC3J.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-DTM2uO_S.js → ListViewPage-D5NY9183.js} +3 -3
- package/dist/_chunks/{ListViewPage-DTM2uO_S.js.map → ListViewPage-D5NY9183.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-GKpL5p8A.mjs → ListViewPage-FU2LBuhl.mjs} +3 -3
- package/dist/_chunks/{ListViewPage-GKpL5p8A.mjs.map → ListViewPage-FU2LBuhl.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-BuZlNroO.js → NoContentTypePage-BgQVE_Qb.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BuZlNroO.js.map → NoContentTypePage-BgQVE_Qb.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-B5Vc5Cal.mjs → NoContentTypePage-DCKUkwb8.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-B5Vc5Cal.mjs.map → NoContentTypePage-DCKUkwb8.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DLzkS4Hy.js → NoPermissionsPage-C5jwn70o.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DLzkS4Hy.js.map → NoPermissionsPage-C5jwn70o.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-BAZlWgJ4.mjs → NoPermissionsPage-jqve7C8l.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-BAZlWgJ4.mjs.map → NoPermissionsPage-jqve7C8l.mjs.map} +1 -1
- package/dist/_chunks/{Preview-Zzjg2_K_.mjs → Preview-BMYN548c.mjs} +3 -3
- package/dist/_chunks/{Preview-Zzjg2_K_.mjs.map → Preview-BMYN548c.mjs.map} +1 -1
- package/dist/_chunks/{Preview-VOJ8RuQp.js → Preview-DaOihysv.js} +3 -3
- package/dist/_chunks/{Preview-VOJ8RuQp.js.map → Preview-DaOihysv.js.map} +1 -1
- package/dist/_chunks/{Relations-Dsj0boFJ.js → Relations-CTGM7Hv5.js} +3 -3
- package/dist/_chunks/{Relations-Dsj0boFJ.js.map → Relations-CTGM7Hv5.js.map} +1 -1
- package/dist/_chunks/{Relations-BVdRfDkW.mjs → Relations-gscPkxjF.mjs} +3 -3
- package/dist/_chunks/{Relations-BVdRfDkW.mjs.map → Relations-gscPkxjF.mjs.map} +1 -1
- package/dist/_chunks/{index-Ct-GZ0iV.js → index-Ca7YWlAA.js} +11 -11
- package/dist/_chunks/{index-Ct-GZ0iV.js.map → index-Ca7YWlAA.js.map} +1 -1
- package/dist/_chunks/{index-Bu_-B7ZA.mjs → index-DqasUQ6Q.mjs} +11 -11
- package/dist/_chunks/{index-Bu_-B7ZA.mjs.map → index-DqasUQ6Q.mjs.map} +1 -1
- package/dist/_chunks/{layout-CDBEgRsM.js → layout-BW80JSCd.js} +3 -3
- package/dist/_chunks/{layout-CDBEgRsM.js.map → layout-BW80JSCd.js.map} +1 -1
- package/dist/_chunks/{layout-COzAvgJh.mjs → layout-W3clJSCy.mjs} +3 -3
- package/dist/_chunks/{layout-COzAvgJh.mjs.map → layout-W3clJSCy.mjs.map} +1 -1
- package/dist/_chunks/{relations-BtmMFBpM.mjs → relations-BlDkoeWh.mjs} +2 -2
- package/dist/_chunks/{relations-BtmMFBpM.mjs.map → relations-BlDkoeWh.mjs.map} +1 -1
- package/dist/_chunks/{relations-BjiF1Aad.js → relations-C9Usz9k5.js} +2 -2
- package/dist/_chunks/{relations-BjiF1Aad.js.map → relations-C9Usz9k5.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +4 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +4 -1
- package/dist/server/index.js +79 -75
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +80 -76
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts +1 -1
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts +3 -3
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +6 -10
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/_chunks/History-DTYB9CSB.mjs.map +0 -1
- package/dist/_chunks/History-DrDJv698.js.map +0 -1
package/dist/server/index.js
CHANGED
@@ -175,19 +175,16 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
175
175
|
});
|
176
176
|
})
|
177
177
|
);
|
178
|
-
return existingAndMissingRelations.filter(
|
179
|
-
(relation) => relation !== null
|
180
|
-
);
|
178
|
+
return existingAndMissingRelations.filter((relation) => relation !== null);
|
181
179
|
}
|
182
180
|
return strapi2.documents(attribute.target).findOne({
|
183
181
|
documentId: versionRelationData.documentId,
|
184
182
|
locale: versionRelationData.locale || void 0
|
185
183
|
});
|
186
184
|
};
|
187
|
-
const getMediaRestoreValue = async (versionRelationData
|
188
|
-
if (
|
185
|
+
const getMediaRestoreValue = async (versionRelationData) => {
|
186
|
+
if (Array.isArray(versionRelationData)) {
|
189
187
|
const existingAndMissingMedias = await Promise.all(
|
190
|
-
// @ts-expect-error Fix the type definitions so this isn't any
|
191
188
|
versionRelationData.map((media) => {
|
192
189
|
return strapi2.db.query("plugin::upload.file").findOne({ where: { id: media.id } });
|
193
190
|
})
|
@@ -356,8 +353,8 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
356
353
|
});
|
357
354
|
},
|
358
355
|
async findVersionsPage(params) {
|
359
|
-
const
|
360
|
-
const isLocalizedContentType = serviceUtils.isLocalizedContentType(
|
356
|
+
const schema = strapi2.getModel(params.query.contentType);
|
357
|
+
const isLocalizedContentType = serviceUtils.isLocalizedContentType(schema);
|
361
358
|
const defaultLocale = await serviceUtils.getDefaultLocale();
|
362
359
|
let locale = null;
|
363
360
|
if (isLocalizedContentType) {
|
@@ -378,32 +375,20 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
378
375
|
}),
|
379
376
|
serviceUtils.getLocaleDictionary()
|
380
377
|
]);
|
381
|
-
const
|
382
|
-
|
383
|
-
async (
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
model: "plugin::upload.file"
|
390
|
-
});
|
391
|
-
const response = await serviceUtils.buildMediaResponse(attributeValues);
|
392
|
-
const sanitizedResults = await Promise.all(
|
393
|
-
response.results.map((media) => permissionChecker2.sanitizeOutput(media))
|
394
|
-
);
|
395
|
-
return {
|
396
|
-
...await currentDataWithRelations,
|
397
|
-
[attributeKey]: {
|
398
|
-
results: sanitizedResults,
|
399
|
-
meta: response.meta
|
400
|
-
}
|
401
|
-
};
|
378
|
+
const populateEntry = async (entry) => {
|
379
|
+
return strapiUtils.traverseEntity(
|
380
|
+
async (options, utils) => {
|
381
|
+
if (!options.attribute) return;
|
382
|
+
if (!options.value) return;
|
383
|
+
const currentValue = Array.isArray(options.value) ? options.value : [options.value];
|
384
|
+
if (options.attribute.type === "component") {
|
385
|
+
utils.remove("id");
|
402
386
|
}
|
403
|
-
if (
|
404
|
-
|
387
|
+
if (options.attribute.type === "relation" && // TODO: handle polymorphic relations
|
388
|
+
options.attribute.relation !== "morphToOne" && options.attribute.relation !== "morphToMany") {
|
389
|
+
if (options.attribute.target === "admin::user") {
|
405
390
|
const adminUsers = await Promise.all(
|
406
|
-
|
391
|
+
currentValue.map((userToPopulate) => {
|
407
392
|
if (userToPopulate == null) {
|
408
393
|
return null;
|
409
394
|
}
|
@@ -415,46 +400,51 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
415
400
|
});
|
416
401
|
})
|
417
402
|
);
|
418
|
-
|
419
|
-
...await currentDataWithRelations,
|
420
|
-
/**
|
421
|
-
* Ideally we would return the same "{results: [], meta: {}}" shape, however,
|
422
|
-
* when sanitizing the data as a whole in the controller before sending to the client,
|
423
|
-
* the data for admin relation user is completely sanitized if we return an object here as opposed to an array.
|
424
|
-
*/
|
425
|
-
[attributeKey]: adminUsers
|
426
|
-
};
|
403
|
+
utils.set(options.key, adminUsers);
|
427
404
|
}
|
428
405
|
const permissionChecker2 = getService$2("permission-checker").create({
|
429
406
|
userAbility: params.state.userAbility,
|
430
|
-
model:
|
407
|
+
model: options.attribute.target
|
431
408
|
});
|
432
409
|
const response = await serviceUtils.buildRelationReponse(
|
433
|
-
|
434
|
-
|
410
|
+
currentValue,
|
411
|
+
options.attribute
|
435
412
|
);
|
436
413
|
const sanitizedResults = await Promise.all(
|
437
414
|
response.results.map((media) => permissionChecker2.sanitizeOutput(media))
|
438
415
|
);
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
416
|
+
utils.set(options.key, {
|
417
|
+
results: sanitizedResults,
|
418
|
+
meta: response.meta
|
419
|
+
});
|
420
|
+
}
|
421
|
+
if (options.attribute.type === "media") {
|
422
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
423
|
+
userAbility: params.state.userAbility,
|
424
|
+
model: "plugin::upload.file"
|
425
|
+
});
|
426
|
+
const response = await serviceUtils.buildMediaResponse(currentValue);
|
427
|
+
const sanitizedResults = await Promise.all(
|
428
|
+
response.results.map((media) => permissionChecker2.sanitizeOutput(media))
|
429
|
+
);
|
430
|
+
utils.set(options.key, {
|
431
|
+
results: sanitizedResults,
|
432
|
+
meta: response.meta
|
433
|
+
});
|
446
434
|
}
|
447
|
-
return currentDataWithRelations;
|
448
435
|
},
|
449
|
-
|
436
|
+
{
|
437
|
+
schema,
|
438
|
+
getModel: strapi2.getModel.bind(strapi2)
|
439
|
+
},
|
440
|
+
entry.data
|
450
441
|
);
|
451
|
-
return entryWithRelations;
|
452
442
|
};
|
453
443
|
const formattedResults = await Promise.all(
|
454
444
|
results.map(async (result) => {
|
455
445
|
return {
|
456
446
|
...result,
|
457
|
-
data: await
|
447
|
+
data: await populateEntry(result),
|
458
448
|
meta: {
|
459
449
|
unknownAttributes: serviceUtils.getSchemaAttributesDiff(
|
460
450
|
result.schema,
|
@@ -485,30 +475,44 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
485
475
|
// Clone to avoid mutating the original version data
|
486
476
|
structuredClone(version.data)
|
487
477
|
);
|
488
|
-
const
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
478
|
+
const schema = structuredClone(version.schema);
|
479
|
+
schema.attributes = fp.omit(FIELDS_TO_IGNORE, contentTypeSchemaAttributes);
|
480
|
+
const dataWithoutMissingRelations = await strapiUtils.traverseEntity(
|
481
|
+
async (options, utils) => {
|
482
|
+
if (!options.attribute) return;
|
483
|
+
if (options.attribute.type === "component") {
|
484
|
+
utils.remove("id");
|
485
|
+
if (options.attribute.repeatable && options.value === null) {
|
486
|
+
utils.set(options.key, []);
|
487
|
+
}
|
488
|
+
}
|
489
|
+
if (options.attribute.type === "dynamiczone") {
|
490
|
+
if (options.value === null) {
|
491
|
+
utils.set(options.key, []);
|
492
|
+
}
|
498
493
|
}
|
499
|
-
if (attribute.type === "relation" && // TODO: handle polymorphic relations
|
500
|
-
attribute.relation !== "morphToOne" && attribute.relation !== "morphToMany") {
|
501
|
-
|
502
|
-
|
494
|
+
if (options.attribute.type === "relation" && // TODO: handle polymorphic relations
|
495
|
+
options.attribute.relation !== "morphToOne" && options.attribute.relation !== "morphToMany") {
|
496
|
+
if (!options.value) return;
|
497
|
+
const data2 = await serviceUtils.getRelationRestoreValue(
|
498
|
+
options.value,
|
499
|
+
options.attribute
|
500
|
+
);
|
501
|
+
utils.set(options.key, data2);
|
503
502
|
}
|
504
|
-
if (attribute.type === "media") {
|
505
|
-
|
506
|
-
|
503
|
+
if (options.attribute.type === "media") {
|
504
|
+
if (!options.value) return;
|
505
|
+
const data2 = await serviceUtils.getMediaRestoreValue(
|
506
|
+
options.value
|
507
|
+
);
|
508
|
+
utils.set(options.key, data2);
|
507
509
|
}
|
508
|
-
return previousRelationAttributes;
|
509
510
|
},
|
510
|
-
|
511
|
-
|
511
|
+
{
|
512
|
+
schema,
|
513
|
+
getModel: strapi2.getModel.bind(strapi2)
|
514
|
+
},
|
515
|
+
dataWithoutAddedAttributes
|
512
516
|
);
|
513
517
|
const data = fp.omit(["id", ...Object.keys(schemaDiff.removed)], dataWithoutMissingRelations);
|
514
518
|
const restoredDocument = await strapi2.documents(version.contentType).update({
|