@strapi/content-manager 5.0.0-rc.5 → 5.0.0-rc.7
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-DXYBg6Q4.js → ComponentConfigurationPage-BNxtMIfV.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-DXYBg6Q4.js.map → ComponentConfigurationPage-BNxtMIfV.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-Diwy7rap.mjs → ComponentConfigurationPage-BWOQWCv2.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-Diwy7rap.mjs.map → ComponentConfigurationPage-BWOQWCv2.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-DCyvZplh.js → EditConfigurationPage-D340bYlT.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-DCyvZplh.js.map → EditConfigurationPage-D340bYlT.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-C62aCKGN.mjs → EditConfigurationPage-GTp-Ucnw.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-C62aCKGN.mjs.map → EditConfigurationPage-GTp-Ucnw.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-D7pEHIUi.mjs → EditViewPage-BVMS5hT-.mjs} +3 -3
- package/dist/_chunks/{EditViewPage-D7pEHIUi.mjs.map → EditViewPage-BVMS5hT-.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-Q1iL6Yjq.js → EditViewPage-CXkmnAvI.js} +3 -3
- package/dist/_chunks/{EditViewPage-Q1iL6Yjq.js.map → EditViewPage-CXkmnAvI.js.map} +1 -1
- package/dist/_chunks/{Field-tNsYzab8.js → Field-Ibi32diw.js} +3 -3
- package/dist/_chunks/{Field-tNsYzab8.js.map → Field-Ibi32diw.js.map} +1 -1
- package/dist/_chunks/{Field-B5WAARex.mjs → Field-nNgv5bpd.mjs} +3 -3
- package/dist/_chunks/{Field-B5WAARex.mjs.map → Field-nNgv5bpd.mjs.map} +1 -1
- package/dist/_chunks/{Form-BLOtEgdG.js → Form-Dhnh34ym.js} +2 -2
- package/dist/_chunks/{Form-BLOtEgdG.js.map → Form-Dhnh34ym.js.map} +1 -1
- package/dist/_chunks/{Form-BdgxktG0.mjs → Form-DodJsI2A.mjs} +2 -2
- package/dist/_chunks/{Form-BdgxktG0.mjs.map → Form-DodJsI2A.mjs.map} +1 -1
- package/dist/_chunks/{History-CNQ3y0Td.js → History-C9auUkDi.js} +4 -4
- package/dist/_chunks/{History-CNQ3y0Td.js.map → History-C9auUkDi.js.map} +1 -1
- package/dist/_chunks/{History-DCbphAxD.mjs → History-CKCSQXz_.mjs} +4 -4
- package/dist/_chunks/{History-DCbphAxD.mjs.map → History-CKCSQXz_.mjs.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-CGiDaV99.js → ListConfigurationPage-Bg4rWUjX.js} +2 -2
- package/dist/_chunks/{ListConfigurationPage-CGiDaV99.js.map → ListConfigurationPage-Bg4rWUjX.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-DfvPhk6u.mjs → ListConfigurationPage-CKEC4ttG.mjs} +2 -2
- package/dist/_chunks/{ListConfigurationPage-DfvPhk6u.mjs.map → ListConfigurationPage-CKEC4ttG.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-D4UEitVJ.mjs → ListViewPage-B7_WJUjG.mjs} +3 -3
- package/dist/_chunks/{ListViewPage-D4UEitVJ.mjs.map → ListViewPage-B7_WJUjG.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-BoBeCtmC.js → ListViewPage-C2gIeYHG.js} +3 -3
- package/dist/_chunks/{ListViewPage-BoBeCtmC.js.map → ListViewPage-C2gIeYHG.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-Dg8RTwSG.mjs → NoContentTypePage-Ckem6Ll6.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-Dg8RTwSG.mjs.map → NoContentTypePage-Ckem6Ll6.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-r8lNSL9g.js → NoContentTypePage-DqgdUfyn.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-r8lNSL9g.js.map → NoContentTypePage-DqgdUfyn.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-Kpz9mv4K.mjs → NoPermissionsPage-BO-GEjA4.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-Kpz9mv4K.mjs.map → NoPermissionsPage-BO-GEjA4.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-C-4rQU7A.js → NoPermissionsPage-CF29Q-sW.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-C-4rQU7A.js.map → NoPermissionsPage-CF29Q-sW.js.map} +1 -1
- package/dist/_chunks/{Relations-DORNjmbK.js → Relations-C0uC9J4f.js} +3 -3
- package/dist/_chunks/{Relations-DORNjmbK.js.map → Relations-C0uC9J4f.js.map} +1 -1
- package/dist/_chunks/{Relations-Q66m8cnC.mjs → Relations-DItV5eow.mjs} +3 -3
- package/dist/_chunks/{Relations-Q66m8cnC.mjs.map → Relations-DItV5eow.mjs.map} +1 -1
- package/dist/_chunks/{index-B74KYy73.js → index-Dd0nXyJF.js} +11 -10
- package/dist/_chunks/index-Dd0nXyJF.js.map +1 -0
- package/dist/_chunks/{index-CW--YEA6.mjs → index-DrNe6ctw.mjs} +11 -10
- package/dist/_chunks/index-DrNe6ctw.mjs.map +1 -0
- package/dist/_chunks/{layout-CcKSoI_3.mjs → layout-B3ez7kvr.mjs} +3 -3
- package/dist/_chunks/{layout-CcKSoI_3.mjs.map → layout-B3ez7kvr.mjs.map} +1 -1
- package/dist/_chunks/{layout-CwR7rEv4.js → layout-CLLtt_5O.js} +3 -3
- package/dist/_chunks/{layout-CwR7rEv4.js.map → layout-CLLtt_5O.js.map} +1 -1
- package/dist/_chunks/{relations-Dsery6I2.mjs → relations-B0hlsUU_.mjs} +2 -2
- package/dist/_chunks/{relations-Dsery6I2.mjs.map → relations-B0hlsUU_.mjs.map} +1 -1
- package/dist/_chunks/{relations-S1dd0utS.js → relations-bRxcNv1q.js} +2 -2
- package/dist/_chunks/{relations-S1dd0utS.js.map → relations-bRxcNv1q.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +79 -56
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +80 -57
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +1 -1
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/_chunks/index-B74KYy73.js.map +0 -1
- package/dist/_chunks/index-CW--YEA6.mjs.map +0 -1
package/dist/server/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import strapiUtils, { validateYupSchema, errors, async, contentTypes as contentTypes$1, yup as yup$1, validateYupSchemaSync, policy, traverse, setCreatorFields, isOperatorOfType, relations as relations$1, traverseEntity, pagination } from "@strapi/utils";
|
2
|
-
import { pick, omit, difference, intersection, pipe, propOr, isEqual, isEmpty, set, isNil as isNil$1, has, prop, assoc, mapValues, flow, uniq, uniqBy, concat, getOr, propEq, merge, groupBy
|
2
|
+
import { pick, omit, difference, castArray, 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";
|
5
5
|
import { scheduleJob } from "node-schedule";
|
@@ -200,9 +200,10 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
200
200
|
const meta = await documentMetadataService.getMetadata(contentTypeUid, document);
|
201
201
|
return documentMetadataService.getStatus(document, meta.availableStatus);
|
202
202
|
};
|
203
|
-
const getDeepPopulate2 = (uid2) => {
|
203
|
+
const getDeepPopulate2 = (uid2, useDatabaseSyntax = false) => {
|
204
204
|
const model = strapi2.getModel(uid2);
|
205
205
|
const attributes = Object.entries(model.attributes);
|
206
|
+
const fieldSelector = useDatabaseSyntax ? "select" : "fields";
|
206
207
|
return attributes.reduce((acc, [attributeName, attribute]) => {
|
207
208
|
switch (attribute.type) {
|
208
209
|
case "relation": {
|
@@ -212,12 +213,12 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
212
213
|
}
|
213
214
|
const isVisible2 = contentTypes$1.isVisibleAttribute(model, attributeName);
|
214
215
|
if (isVisible2) {
|
215
|
-
acc[attributeName] = {
|
216
|
+
acc[attributeName] = { [fieldSelector]: ["documentId", "locale", "publishedAt"] };
|
216
217
|
}
|
217
218
|
break;
|
218
219
|
}
|
219
220
|
case "media": {
|
220
|
-
acc[attributeName] = {
|
221
|
+
acc[attributeName] = { [fieldSelector]: ["id"] };
|
221
222
|
break;
|
222
223
|
}
|
223
224
|
case "component": {
|
@@ -468,6 +469,42 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
468
469
|
}
|
469
470
|
};
|
470
471
|
};
|
472
|
+
const shouldCreateHistoryVersion = (context) => {
|
473
|
+
if (!strapi.requestContext.get()?.request.url.startsWith("/content-manager")) {
|
474
|
+
return false;
|
475
|
+
}
|
476
|
+
if (context.action !== "create" && context.action !== "update" && context.action !== "clone" && context.action !== "publish" && context.action !== "unpublish" && context.action !== "discardDraft") {
|
477
|
+
return false;
|
478
|
+
}
|
479
|
+
if (context.action === "update" && strapi.requestContext.get()?.request.url.endsWith("/actions/publish")) {
|
480
|
+
return false;
|
481
|
+
}
|
482
|
+
if (!context.contentType.uid.startsWith("api::")) {
|
483
|
+
return false;
|
484
|
+
}
|
485
|
+
return true;
|
486
|
+
};
|
487
|
+
const getSchemas = (uid2) => {
|
488
|
+
const attributesSchema = strapi.getModel(uid2).attributes;
|
489
|
+
const componentsSchemas = Object.keys(attributesSchema).reduce(
|
490
|
+
(currentComponentSchemas, key) => {
|
491
|
+
const fieldSchema = attributesSchema[key];
|
492
|
+
if (fieldSchema.type === "component") {
|
493
|
+
const componentSchema = strapi.getModel(fieldSchema.component).attributes;
|
494
|
+
return {
|
495
|
+
...currentComponentSchemas,
|
496
|
+
[fieldSchema.component]: componentSchema
|
497
|
+
};
|
498
|
+
}
|
499
|
+
return currentComponentSchemas;
|
500
|
+
},
|
501
|
+
{}
|
502
|
+
);
|
503
|
+
return {
|
504
|
+
schema: omit(FIELDS_TO_IGNORE, attributesSchema),
|
505
|
+
componentsSchemas
|
506
|
+
};
|
507
|
+
};
|
471
508
|
const createLifecyclesService = ({ strapi: strapi2 }) => {
|
472
509
|
const state = {
|
473
510
|
deleteExpiredJob: null,
|
@@ -480,63 +517,43 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
480
517
|
return;
|
481
518
|
}
|
482
519
|
strapi2.documents.use(async (context, next) => {
|
483
|
-
if (!strapi2.requestContext.get()?.request.url.startsWith("/content-manager")) {
|
484
|
-
return next();
|
485
|
-
}
|
486
|
-
if (context.action !== "create" && context.action !== "update" && context.action !== "clone" && context.action !== "publish" && context.action !== "unpublish" && context.action !== "discardDraft") {
|
487
|
-
return next();
|
488
|
-
}
|
489
|
-
if (context.action === "update" && strapi2.requestContext.get()?.request.url.endsWith("/actions/publish")) {
|
490
|
-
return next();
|
491
|
-
}
|
492
|
-
const contentTypeUid = context.contentType.uid;
|
493
|
-
if (!contentTypeUid.startsWith("api::")) {
|
494
|
-
return next();
|
495
|
-
}
|
496
520
|
const result = await next();
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
521
|
+
if (!shouldCreateHistoryVersion(context)) {
|
522
|
+
return result;
|
523
|
+
}
|
524
|
+
const documentId = context.action === "create" || context.action === "clone" ? result.documentId : context.params.documentId;
|
501
525
|
const defaultLocale = await serviceUtils.getDefaultLocale();
|
502
|
-
const
|
503
|
-
if (
|
504
|
-
|
505
|
-
"[Content manager history middleware]: An array of locales was provided, but only a single locale is supported for the findOne operation."
|
506
|
-
);
|
507
|
-
return next();
|
526
|
+
const locales = castArray(context.params?.locale || defaultLocale);
|
527
|
+
if (!locales.length) {
|
528
|
+
return result;
|
508
529
|
}
|
509
|
-
const
|
510
|
-
|
511
|
-
|
512
|
-
|
530
|
+
const uid2 = context.contentType.uid;
|
531
|
+
const schemas = getSchemas(uid2);
|
532
|
+
const localeEntries = await strapi2.db.query(uid2).findMany({
|
533
|
+
where: {
|
534
|
+
documentId,
|
535
|
+
locale: { $in: locales },
|
536
|
+
publishedAt: null
|
537
|
+
},
|
538
|
+
populate: serviceUtils.getDeepPopulate(
|
539
|
+
uid2,
|
540
|
+
true
|
541
|
+
/* use database syntax */
|
542
|
+
)
|
513
543
|
});
|
514
|
-
const status = await serviceUtils.getVersionStatus(contentTypeUid, document);
|
515
|
-
const attributesSchema = strapi2.getModel(contentTypeUid).attributes;
|
516
|
-
const componentsSchemas = Object.keys(
|
517
|
-
attributesSchema
|
518
|
-
).reduce((currentComponentSchemas, key) => {
|
519
|
-
const fieldSchema = attributesSchema[key];
|
520
|
-
if (fieldSchema.type === "component") {
|
521
|
-
const componentSchema = strapi2.getModel(fieldSchema.component).attributes;
|
522
|
-
return {
|
523
|
-
...currentComponentSchemas,
|
524
|
-
[fieldSchema.component]: componentSchema
|
525
|
-
};
|
526
|
-
}
|
527
|
-
return currentComponentSchemas;
|
528
|
-
}, {});
|
529
544
|
await strapi2.db.transaction(async ({ onCommit }) => {
|
530
|
-
onCommit(() => {
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
545
|
+
onCommit(async () => {
|
546
|
+
for (const entry of localeEntries) {
|
547
|
+
const status = await serviceUtils.getVersionStatus(uid2, entry);
|
548
|
+
await getService(strapi2, "history").createVersion({
|
549
|
+
contentType: uid2,
|
550
|
+
data: omit(FIELDS_TO_IGNORE, entry),
|
551
|
+
relatedDocumentId: documentId,
|
552
|
+
locale: entry.locale,
|
553
|
+
status,
|
554
|
+
...schemas
|
555
|
+
});
|
556
|
+
}
|
540
557
|
});
|
541
558
|
});
|
542
559
|
return result;
|
@@ -4124,7 +4141,13 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4124
4141
|
*/
|
4125
4142
|
async formatDocumentWithMetadata(uid2, document, opts = {}) {
|
4126
4143
|
if (!document) {
|
4127
|
-
return
|
4144
|
+
return {
|
4145
|
+
data: document,
|
4146
|
+
meta: {
|
4147
|
+
availableLocales: [],
|
4148
|
+
availableStatus: []
|
4149
|
+
}
|
4150
|
+
};
|
4128
4151
|
}
|
4129
4152
|
const hasDraftAndPublish = contentTypes$1.hasDraftAndPublish(strapi2.getModel(uid2));
|
4130
4153
|
if (!hasDraftAndPublish) {
|