@strapi/content-manager 5.5.1 → 5.6.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-DYq8aqos.js → ComponentConfigurationPage-BlzvDpbX.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-DYq8aqos.js.map → ComponentConfigurationPage-BlzvDpbX.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CzVt9QCC.mjs → ComponentConfigurationPage-DaPOlQaD.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-CzVt9QCC.mjs.map → ComponentConfigurationPage-DaPOlQaD.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CLDwrUv5.mjs → EditConfigurationPage-BZPXItXo.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CLDwrUv5.mjs.map → EditConfigurationPage-BZPXItXo.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-C9IATpr0.js → EditConfigurationPage-uy-v43AR.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-C9IATpr0.js.map → EditConfigurationPage-uy-v43AR.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-Ch-uBvbv.js → EditViewPage-DT6A4ayX.js} +3 -3
- package/dist/_chunks/{EditViewPage-Ch-uBvbv.js.map → EditViewPage-DT6A4ayX.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-DtKM7Jgw.mjs → EditViewPage-oOLeTySr.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-DtKM7Jgw.mjs.map → EditViewPage-oOLeTySr.mjs.map} +1 -1
- package/dist/_chunks/{Field-Bn1jgMeF.mjs → Field-D7dv2aUX.mjs} +107 -55
- package/dist/_chunks/Field-D7dv2aUX.mjs.map +1 -0
- package/dist/_chunks/{Field-B9ADaInZ.js → Field-kYFVIGiP.js} +108 -55
- package/dist/_chunks/Field-kYFVIGiP.js.map +1 -0
- package/dist/_chunks/{Form-BB5i9Pxl.mjs → Form-BxR6sc29.mjs} +2 -2
- package/dist/_chunks/{Form-BB5i9Pxl.mjs.map → Form-BxR6sc29.mjs.map} +1 -1
- package/dist/_chunks/{Form-C3kjKrPw.js → Form-CCijSg3V.js} +2 -2
- package/dist/_chunks/{Form-C3kjKrPw.js.map → Form-CCijSg3V.js.map} +1 -1
- package/dist/_chunks/{History-AwrK0-SA.js → History-BMndx49M.js} +4 -4
- package/dist/_chunks/{History-AwrK0-SA.js.map → History-BMndx49M.js.map} +1 -1
- package/dist/_chunks/{History-Cw2Q7OQL.mjs → History-D8F7aYQU.mjs} +4 -4
- package/dist/_chunks/{History-Cw2Q7OQL.mjs.map → History-D8F7aYQU.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-CNTJ0DBm.js → ListConfigurationPage-DouY1EWM.js} +2 -2
- package/dist/_chunks/{ListConfigurationPage-CNTJ0DBm.js.map → ListConfigurationPage-DouY1EWM.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-B47JIu1e.mjs → ListConfigurationPage-DqAdSPwC.mjs} +2 -2
- package/dist/_chunks/{ListConfigurationPage-B47JIu1e.mjs.map → ListConfigurationPage-DqAdSPwC.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-Be_UEBar.js → ListViewPage-BPVmh9pq.js} +3 -3
- package/dist/_chunks/{ListViewPage-Be_UEBar.js.map → ListViewPage-BPVmh9pq.js.map} +1 -1
- package/dist/_chunks/{ListViewPage-DuvjX6ra.mjs → ListViewPage-C73F0jPh.mjs} +3 -3
- package/dist/_chunks/{ListViewPage-DuvjX6ra.mjs.map → ListViewPage-C73F0jPh.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-C6M-Q0Tv.mjs → NoContentTypePage-B5w7iJOF.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-C6M-Q0Tv.mjs.map → NoContentTypePage-B5w7iJOF.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-B1J0KUCO.js → NoContentTypePage-BwcL--4H.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-B1J0KUCO.js.map → NoContentTypePage-BwcL--4H.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CN34TlEE.js → NoPermissionsPage-BMFKVcwJ.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CN34TlEE.js.map → NoPermissionsPage-BMFKVcwJ.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CAi3zCAD.mjs → NoPermissionsPage-UnEgMGK4.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CAi3zCAD.mjs.map → NoPermissionsPage-UnEgMGK4.mjs.map} +1 -1
- package/dist/_chunks/{Preview-DOqm5jcJ.js → Preview-B7PR3Ok_.js} +5 -4
- package/dist/_chunks/Preview-B7PR3Ok_.js.map +1 -0
- package/dist/_chunks/{Preview-BrBRcL10.mjs → Preview-DECOhK0D.mjs} +5 -4
- package/dist/_chunks/Preview-DECOhK0D.mjs.map +1 -0
- package/dist/_chunks/{Relations-_K-HYOiM.mjs → Relations-DinMQJ4B.mjs} +3 -3
- package/dist/_chunks/{Relations-_K-HYOiM.mjs.map → Relations-DinMQJ4B.mjs.map} +1 -1
- package/dist/_chunks/{Relations-xtKZHtTN.js → Relations-lndx3aQk.js} +3 -3
- package/dist/_chunks/{Relations-xtKZHtTN.js.map → Relations-lndx3aQk.js.map} +1 -1
- package/dist/_chunks/{index-tETMKK2G.mjs → index-C2SagWVW.mjs} +11 -15
- package/dist/_chunks/index-C2SagWVW.mjs.map +1 -0
- package/dist/_chunks/{index-BlX-OdHL.js → index-Cnw4gqee.js} +11 -15
- package/dist/_chunks/index-Cnw4gqee.js.map +1 -0
- package/dist/_chunks/{layout-BaQBaz56.mjs → layout-DY_D9MGA.mjs} +3 -3
- package/dist/_chunks/{layout-BaQBaz56.mjs.map → layout-DY_D9MGA.mjs.map} +1 -1
- package/dist/_chunks/{layout-D8Sz3KxF.js → layout-ivwIVPnV.js} +3 -3
- package/dist/_chunks/{layout-D8Sz3KxF.js.map → layout-ivwIVPnV.js.map} +1 -1
- package/dist/_chunks/{relations-CAbbX8Sa.js → relations-B7C7O_Pv.js} +2 -2
- package/dist/_chunks/{relations-CAbbX8Sa.js.map → relations-B7C7O_Pv.js.map} +1 -1
- package/dist/_chunks/{relations-CsfmCqOU.mjs → relations-Boc5Y9kX.mjs} +2 -2
- package/dist/_chunks/{relations-CsfmCqOU.mjs.map → relations-Boc5Y9kX.mjs.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/BlocksInput/Blocks/Code.d.ts +7 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/utils/prismLanguages.d.ts +49 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +1 -0
- package/dist/server/index.js +74 -66
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +75 -67
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/index.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +4 -2
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +3 -2
- 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/services/utils/populate.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +7 -5
- package/dist/_chunks/Field-B9ADaInZ.js.map +0 -1
- package/dist/_chunks/Field-Bn1jgMeF.mjs.map +0 -1
- package/dist/_chunks/Preview-BrBRcL10.mjs.map +0 -1
- package/dist/_chunks/Preview-DOqm5jcJ.js.map +0 -1
- package/dist/_chunks/index-BlX-OdHL.js.map +0 -1
- package/dist/_chunks/index-tETMKK2G.mjs.map +0 -1
- package/dist/admin/src/preview/constants.d.ts +0 -1
- package/dist/server/src/preview/constants.d.ts +0 -2
- package/dist/server/src/preview/constants.d.ts.map +0 -1
package/dist/server/index.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import strapiUtils, { validateYupSchema, errors, async, contentTypes as contentTypes$1, yup as yup$1, validateYupSchemaSync, policy, traverse, setCreatorFields, isOperatorOfType, relations as relations$1,
|
1
|
+
import strapiUtils, { validateYupSchema, errors, async, contentTypes as contentTypes$1, yup as yup$1, validateYupSchemaSync, policy, traverse, setCreatorFields, isOperatorOfType, relations as relations$1, pagination } from "@strapi/utils";
|
2
2
|
import { pick, omit, difference, castArray, mergeWith, intersection, pipe, propOr, isEqual, isEmpty, set, isNil as isNil$1, has, prop, assoc, mapValues, flow, uniq, uniqBy, concat, getOr, propEq, merge, groupBy } from "lodash/fp";
|
3
3
|
import "@strapi/types";
|
4
4
|
import * as yup from "yup";
|
@@ -712,7 +712,6 @@ const getFeature$1 = () => {
|
|
712
712
|
};
|
713
713
|
};
|
714
714
|
const history = getFeature$1();
|
715
|
-
const FEATURE_ID = "preview";
|
716
715
|
const info = { pluginName: "content-manager", type: "admin" };
|
717
716
|
const previewRouter = {
|
718
717
|
type: "admin",
|
@@ -890,9 +889,6 @@ const services$1 = {
|
|
890
889
|
"preview-config": createPreviewConfigService
|
891
890
|
};
|
892
891
|
const getFeature = () => {
|
893
|
-
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
894
|
-
return {};
|
895
|
-
}
|
896
892
|
return {
|
897
893
|
register() {
|
898
894
|
const config = getService(strapi, "preview-config");
|
@@ -3908,6 +3904,12 @@ function getPopulateForRelation(attribute, model, attributeName, { countMany, co
|
|
3908
3904
|
if (initialPopulate) {
|
3909
3905
|
return initialPopulate;
|
3910
3906
|
}
|
3907
|
+
if (attributeName === "localizations") {
|
3908
|
+
const validationPopulate = getPopulateForValidation(model.uid);
|
3909
|
+
return {
|
3910
|
+
populate: validationPopulate.populate
|
3911
|
+
};
|
3912
|
+
}
|
3911
3913
|
if (!isVisibleAttribute$1(model, attributeName)) {
|
3912
3914
|
return true;
|
3913
3915
|
}
|
@@ -3967,6 +3969,9 @@ const getDeepPopulate = (uid2, {
|
|
3967
3969
|
return {};
|
3968
3970
|
}
|
3969
3971
|
const model = strapi.getModel(uid2);
|
3972
|
+
if (!model) {
|
3973
|
+
return {};
|
3974
|
+
}
|
3970
3975
|
return Object.keys(model.attributes).reduce(
|
3971
3976
|
(populateAcc, attributeName) => merge(
|
3972
3977
|
populateAcc,
|
@@ -3986,40 +3991,46 @@ const getDeepPopulate = (uid2, {
|
|
3986
3991
|
{}
|
3987
3992
|
);
|
3988
3993
|
};
|
3989
|
-
const
|
3990
|
-
|
3991
|
-
|
3992
|
-
countOne = false,
|
3993
|
-
maxLevel = Infinity
|
3994
|
-
} = {}, level = 1) => {
|
3995
|
-
if (level > maxLevel) {
|
3994
|
+
const getPopulateForValidation = (uid2) => {
|
3995
|
+
const model = strapi.getModel(uid2);
|
3996
|
+
if (!model) {
|
3996
3997
|
return {};
|
3997
3998
|
}
|
3998
|
-
const model = strapi.getModel(uid2);
|
3999
3999
|
return Object.entries(model.attributes).reduce((populateAcc, [attributeName, attribute]) => {
|
4000
|
-
if (
|
4000
|
+
if (isScalarAttribute(attribute)) {
|
4001
|
+
if (getDoesAttributeRequireValidation(attribute)) {
|
4002
|
+
populateAcc.fields = populateAcc.fields || [];
|
4003
|
+
populateAcc.fields.push(attributeName);
|
4004
|
+
}
|
4001
4005
|
return populateAcc;
|
4002
4006
|
}
|
4003
|
-
if (
|
4004
|
-
|
4005
|
-
|
4006
|
-
|
4007
|
+
if (isComponent(attribute)) {
|
4008
|
+
const component = attribute.component;
|
4009
|
+
const componentResult = getPopulateForValidation(component);
|
4010
|
+
if (Object.keys(componentResult).length > 0) {
|
4011
|
+
populateAcc.populate = populateAcc.populate || {};
|
4012
|
+
populateAcc.populate[attributeName] = componentResult;
|
4013
|
+
}
|
4014
|
+
return populateAcc;
|
4007
4015
|
}
|
4008
|
-
|
4009
|
-
|
4010
|
-
|
4011
|
-
|
4012
|
-
|
4013
|
-
|
4014
|
-
|
4015
|
-
|
4016
|
-
|
4017
|
-
countOne,
|
4018
|
-
maxLevel
|
4016
|
+
if (isDynamicZone(attribute)) {
|
4017
|
+
const components2 = attribute.components;
|
4018
|
+
const componentsResult = (components2 || []).reduce(
|
4019
|
+
(acc, componentUID) => {
|
4020
|
+
const componentResult = getPopulateForValidation(componentUID);
|
4021
|
+
if (Object.keys(componentResult).length > 0) {
|
4022
|
+
acc[componentUID] = componentResult;
|
4023
|
+
}
|
4024
|
+
return acc;
|
4019
4025
|
},
|
4020
|
-
|
4021
|
-
)
|
4022
|
-
|
4026
|
+
{}
|
4027
|
+
);
|
4028
|
+
if (Object.keys(componentsResult).length > 0) {
|
4029
|
+
populateAcc.populate = populateAcc.populate || {};
|
4030
|
+
populateAcc.populate[attributeName] = { on: componentsResult };
|
4031
|
+
}
|
4032
|
+
}
|
4033
|
+
return populateAcc;
|
4023
4034
|
}, {});
|
4024
4035
|
};
|
4025
4036
|
const getDeepPopulateDraftCount = (uid2) => {
|
@@ -4261,7 +4272,6 @@ const AVAILABLE_LOCALES_FIELDS = [
|
|
4261
4272
|
"locale",
|
4262
4273
|
"updatedAt",
|
4263
4274
|
"createdAt",
|
4264
|
-
"status",
|
4265
4275
|
"publishedAt",
|
4266
4276
|
"documentId"
|
4267
4277
|
];
|
@@ -4282,36 +4292,20 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4282
4292
|
/**
|
4283
4293
|
* Returns available locales of a document for the current status
|
4284
4294
|
*/
|
4285
|
-
async getAvailableLocales(uid2, version, allVersions
|
4295
|
+
async getAvailableLocales(uid2, version, allVersions) {
|
4286
4296
|
const versionsByLocale = groupBy("locale", allVersions);
|
4287
4297
|
if (version.locale) {
|
4288
4298
|
delete versionsByLocale[version.locale];
|
4289
4299
|
}
|
4290
4300
|
const model = strapi2.getModel(uid2);
|
4291
|
-
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4292
|
-
const traversalFunction = async (localeVersion) => traverseEntity(
|
4293
|
-
({ key }, { remove }) => {
|
4294
|
-
if (keysToKeep.includes(key)) {
|
4295
|
-
return;
|
4296
|
-
}
|
4297
|
-
remove(key);
|
4298
|
-
},
|
4299
|
-
{ schema: model, getModel: strapi2.getModel.bind(strapi2) },
|
4300
|
-
// @ts-expect-error fix types DocumentVersion incompatible with Data
|
4301
|
-
localeVersion
|
4302
|
-
);
|
4303
4301
|
const mappingResult = await async.map(
|
4304
4302
|
Object.values(versionsByLocale),
|
4305
4303
|
async (localeVersions) => {
|
4306
|
-
const mappedLocaleVersions = await async.map(
|
4307
|
-
localeVersions,
|
4308
|
-
traversalFunction
|
4309
|
-
);
|
4310
4304
|
if (!contentTypes$1.hasDraftAndPublish(model)) {
|
4311
|
-
return
|
4305
|
+
return localeVersions[0];
|
4312
4306
|
}
|
4313
|
-
const draftVersion =
|
4314
|
-
const otherVersions =
|
4307
|
+
const draftVersion = localeVersions.find((v) => v.publishedAt === null);
|
4308
|
+
const otherVersions = localeVersions.filter((v) => v.id !== draftVersion?.id);
|
4315
4309
|
if (!draftVersion) {
|
4316
4310
|
return;
|
4317
4311
|
}
|
@@ -4345,15 +4339,15 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4345
4339
|
async getManyAvailableStatus(uid2, documents) {
|
4346
4340
|
if (!documents.length) return [];
|
4347
4341
|
const status = documents[0].publishedAt !== null ? "published" : "draft";
|
4348
|
-
const
|
4349
|
-
|
4350
|
-
|
4351
|
-
|
4352
|
-
|
4342
|
+
const locales = documents.map((d) => d.locale).filter(Boolean);
|
4343
|
+
return strapi2.query(uid2).findMany({
|
4344
|
+
where: {
|
4345
|
+
documentId: { $in: documents.map((d) => d.documentId).filter(Boolean) },
|
4346
|
+
// NOTE: find the "opposite" status
|
4347
|
+
publishedAt: { $null: status === "published" },
|
4348
|
+
locale: { $in: locales }
|
4353
4349
|
},
|
4354
|
-
|
4355
|
-
locale,
|
4356
|
-
fields: ["documentId", "locale", "updatedAt", "createdAt", "publishedAt"]
|
4350
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"]
|
4357
4351
|
});
|
4358
4352
|
},
|
4359
4353
|
getStatus(version, otherDocumentStatuses) {
|
@@ -4379,11 +4373,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4379
4373
|
// We could refactor this so the locales are only loaded when they're
|
4380
4374
|
// needed. e.g. in the bulk locale action modal.
|
4381
4375
|
async getMetadata(uid2, version, { availableLocales = true, availableStatus = true } = {}) {
|
4382
|
-
const populate =
|
4383
|
-
const
|
4384
|
-
where: { documentId: version.documentId },
|
4376
|
+
const { populate = {}, fields = [] } = getPopulateForValidation(uid2);
|
4377
|
+
const params = {
|
4385
4378
|
populate: {
|
4386
|
-
// Populate only fields that require validation for bulk locale actions
|
4387
4379
|
...populate,
|
4388
4380
|
// NOTE: creator fields are selected in this way to avoid exposing sensitive data
|
4389
4381
|
createdBy: {
|
@@ -4392,9 +4384,15 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4392
4384
|
updatedBy: {
|
4393
4385
|
select: ["id", "firstname", "lastname", "email"]
|
4394
4386
|
}
|
4387
|
+
},
|
4388
|
+
fields: uniq([...AVAILABLE_LOCALES_FIELDS, ...fields]),
|
4389
|
+
filters: {
|
4390
|
+
documentId: version.documentId
|
4395
4391
|
}
|
4396
|
-
}
|
4397
|
-
const
|
4392
|
+
};
|
4393
|
+
const dbParams = strapi2.get("query-params").transform(uid2, params);
|
4394
|
+
const versions = await strapi2.db.query(uid2).findMany(dbParams);
|
4395
|
+
const availableLocalesResult = availableLocales ? await this.getAvailableLocales(uid2, version, versions) : [];
|
4398
4396
|
const availableStatusResult = availableStatus ? this.getAvailableStatus(version, versions) : null;
|
4399
4397
|
return {
|
4400
4398
|
availableLocales: availableLocalesResult,
|
@@ -4421,6 +4419,16 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4421
4419
|
opts.availableStatus = false;
|
4422
4420
|
}
|
4423
4421
|
const meta = await this.getMetadata(uid2, document, opts);
|
4422
|
+
if (document.localizations) {
|
4423
|
+
const otherStatus = await this.getManyAvailableStatus(uid2, document.localizations);
|
4424
|
+
document.localizations = document.localizations.map((d) => {
|
4425
|
+
const status = otherStatus.find((s) => s.documentId === d.documentId);
|
4426
|
+
return {
|
4427
|
+
...d,
|
4428
|
+
status: this.getStatus(d, status ? [status] : [])
|
4429
|
+
};
|
4430
|
+
});
|
4431
|
+
}
|
4424
4432
|
return {
|
4425
4433
|
data: {
|
4426
4434
|
...document,
|