@strapi/core 0.0.0-experimental.18019758d6ccd252f2f00bcc32c191402af2e60a → 0.0.0-experimental.1bca8e0e074de8b0775bcddc7656fbc9e9f1393b
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/LICENSE +18 -3
- package/dist/Strapi.d.ts +3 -1
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +59 -15
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +38 -13
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/get-dirs.js +2 -2
- package/dist/configuration/get-dirs.js.map +1 -1
- package/dist/configuration/index.js +2 -2
- package/dist/configuration/index.js.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/collection-type.js +5 -3
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs +2 -0
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.js +2 -2
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.js +3 -2
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs +1 -0
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.js +8 -8
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/service/collection-type.d.ts +1 -7
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.js +5 -3
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs +6 -4
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/pagination.d.ts +4 -11
- package/dist/core-api/service/pagination.d.ts.map +1 -1
- package/dist/core-api/service/pagination.js +18 -44
- package/dist/core-api/service/pagination.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +16 -42
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/core-api/service/single-type.js +2 -1
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +2 -1
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/domain/content-type/index.js +4 -4
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/ee/index.js +3 -3
- package/dist/ee/index.js.map +1 -1
- package/dist/factories.js +4 -4
- package/dist/factories.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/loaders/apis.d.ts.map +1 -1
- package/dist/loaders/apis.js +12 -12
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs +10 -10
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +13 -13
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +5 -5
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
- package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/loaders/plugins/index.js +6 -6
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/middlewares/body.js +2 -2
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js +9 -7
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs +9 -7
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/middlewares/public.js +2 -2
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/query.d.ts.map +1 -1
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/query.mjs.map +1 -1
- package/dist/middlewares/responses.js +2 -2
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +12 -5
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +11 -4
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.js +2 -2
- package/dist/middlewares/session.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts +30 -0
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
- package/dist/migrations/database/5.0.0-discard-drafts.js +50 -0
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +50 -0
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
- package/dist/migrations/draft-publish.d.ts.map +1 -1
- package/dist/migrations/draft-publish.js +14 -31
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs +15 -32
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/providers/registries.d.ts.map +1 -1
- package/dist/providers/registries.js +2 -0
- package/dist/providers/registries.js.map +1 -1
- package/dist/providers/registries.mjs +2 -0
- package/dist/providers/registries.mjs.map +1 -1
- package/dist/registries/apis.js +2 -2
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/components.js +2 -2
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/content-types.js +3 -3
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/controllers.js +3 -3
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/custom-fields.js +4 -4
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/hooks.js +2 -2
- package/dist/registries/hooks.js.map +1 -1
- package/dist/registries/middlewares.js +3 -3
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/modules.js +3 -3
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/plugins.js +2 -2
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/policies.js +4 -4
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/services.js +3 -3
- package/dist/registries/services.js.map +1 -1
- package/dist/services/auth/index.js +3 -3
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/core-store.js +3 -3
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/cron.js +3 -3
- package/dist/services/cron.js.map +1 -1
- package/dist/services/document-service/attributes/index.js +2 -2
- package/dist/services/document-service/attributes/index.js.map +1 -1
- package/dist/services/document-service/attributes/transforms.js +3 -3
- package/dist/services/document-service/attributes/transforms.js.map +1 -1
- package/dist/services/document-service/components.js +15 -15
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +16 -16
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/entries.d.ts +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +7 -6
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +2 -1
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/events.d.ts +25 -0
- package/dist/services/document-service/events.d.ts.map +1 -0
- package/dist/services/document-service/events.js +47 -0
- package/dist/services/document-service/events.js.map +1 -0
- package/dist/services/document-service/events.mjs +47 -0
- package/dist/services/document-service/events.mjs.map +1 -0
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +21 -12
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +14 -5
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/params.js +2 -2
- package/dist/services/document-service/params.js.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +80 -52
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +75 -47
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.js +2 -2
- package/dist/services/document-service/transform/id-transform.js.map +1 -1
- package/dist/services/document-service/transform/query.js +3 -3
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +5 -2
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs +3 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +5 -2
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +3 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.js +13 -9
- package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs +7 -3
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.js +4 -0
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs +4 -0
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts +14 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +106 -49
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +87 -30
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts +10 -8
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +61 -19
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +54 -11
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/event-hub.d.ts +1 -0
- package/dist/services/event-hub.d.ts.map +1 -1
- package/dist/services/event-hub.js +9 -4
- package/dist/services/event-hub.js.map +1 -1
- package/dist/services/event-hub.mjs +9 -4
- package/dist/services/event-hub.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.js +7 -7
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/index.js +1 -1
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/index.mjs +1 -1
- package/dist/services/server/index.mjs.map +1 -1
- package/dist/services/server/koa.d.ts.map +1 -1
- package/dist/services/server/koa.js +4 -4
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs +1 -1
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.js +3 -3
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/routing.js +2 -2
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/utils/dynamic-zones.js +5 -5
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/webhook-runner.d.ts +2 -1
- package/dist/services/webhook-runner.d.ts.map +1 -1
- package/dist/services/webhook-runner.js.map +1 -1
- package/dist/services/webhook-runner.mjs.map +1 -1
- package/dist/services/webhook-store.d.ts +2 -8
- package/dist/services/webhook-store.d.ts.map +1 -1
- package/dist/services/webhook-store.js +9 -2
- package/dist/services/webhook-store.js.map +1 -1
- package/dist/services/webhook-store.mjs +9 -2
- package/dist/services/webhook-store.mjs.map +1 -1
- package/dist/utils/cron.js +3 -3
- package/dist/utils/cron.js.map +1 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +4 -3
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs +4 -3
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.js +27 -6
- package/dist/utils/filepath-to-prop-path.js.map +1 -1
- package/dist/utils/filepath-to-prop-path.mjs +25 -5
- package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
- package/dist/utils/is-initialized.js +3 -3
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/startup-logger.js +4 -4
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs +3 -3
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +16 -4
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +15 -3
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +22 -18
- package/dist/services/document-service/document-engine.d.ts +0 -1
- package/dist/services/document-service/document-engine.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sources":["../../../src/services/document-service/events.ts"],"sourcesContent":["import { UID, Utils, Modules, Core } from '@strapi/types';\nimport { sanitize } from '@strapi/utils';\n\nimport { getDeepPopulate } from './utils/populate';\n\nconst EVENTS = {\n ENTRY_CREATE: 'entry.create',\n ENTRY_UPDATE: 'entry.update',\n ENTRY_DELETE: 'entry.delete',\n ENTRY_PUBLISH: 'entry.publish',\n ENTRY_UNPUBLISH: 'entry.unpublish',\n ENTRY_DRAFT_DISCARD: 'entry.draft-discard',\n};\n\ntype EventName = Utils.Object.Values<typeof EVENTS>;\n\n/**\n * Manager to trigger entry related events\n *\n * It will populate the entry if it is not a delete event.\n * So the event payload will contain the full entry.\n */\nconst createEventManager = (strapi: Core.Strapi, uid: UID.Schema) => {\n const populate = getDeepPopulate(uid, {});\n const model = strapi.getModel(uid);\n\n const emitEvent = async (eventName: EventName, entry: Modules.Documents.AnyDocument) => {\n // There is no need to populate the entry if it has been deleted\n let populatedEntry = entry;\n if (![EVENTS.ENTRY_DELETE, EVENTS.ENTRY_UNPUBLISH].includes(eventName)) {\n populatedEntry = await strapi.db.query(uid).findOne({ where: { id: entry.id }, populate });\n }\n\n const sanitizedEntry = await sanitize.sanitizers.defaultSanitizeOutput(\n {\n schema: model,\n getModel: (uid) => strapi.getModel(uid as UID.Schema),\n },\n populatedEntry\n );\n\n await strapi.eventHub.emit(eventName, {\n model: model.modelName,\n uid: model.uid,\n entry: sanitizedEntry,\n });\n };\n\n return {\n /**\n * strapi.db.query might reuse the transaction used in the doc service request,\n * so this is executed after that transaction is committed.\n */\n emitEvent(eventName: EventName, entry: Modules.Documents.AnyDocument) {\n strapi.db.transaction(({ onCommit }) => {\n onCommit(() => emitEvent(eventName, entry));\n });\n },\n };\n};\n\nexport { createEventManager };\n"],"names":["populate","getDeepPopulate","sanitize","uid"],"mappings":";;;;AAKA,MAAM,SAAS;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,qBAAqB;AACvB;AAUM,MAAA,qBAAqB,CAAC,QAAqB,QAAoB;AACnE,QAAMA,aAAWC,SAAAA,gBAAgB,KAAK,CAAE,CAAA;AAClC,QAAA,QAAQ,OAAO,SAAS,GAAG;AAE3B,QAAA,YAAY,OAAO,WAAsB,UAAyC;AAEtF,QAAI,iBAAiB;AACjB,QAAA,CAAC,CAAC,OAAO,cAAc,OAAO,eAAe,EAAE,SAAS,SAAS,GAAG;AACtE,uBAAiB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,MAAM,GAAG,GAAGD,UAAAA,WAAU,CAAA;AAAA,IAC3F;AAEM,UAAA,iBAAiB,MAAME,qBAAS,WAAW;AAAA,MAC/C;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,CAACC,SAAQ,OAAO,SAASA,IAAiB;AAAA,MACtD;AAAA,MACA;AAAA,IAAA;AAGI,UAAA,OAAO,SAAS,KAAK,WAAW;AAAA,MACpC,OAAO,MAAM;AAAA,MACb,KAAK,MAAM;AAAA,MACX,OAAO;AAAA,IAAA,CACR;AAAA,EAAA;AAGI,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,UAAU,WAAsB,OAAsC;AACpE,aAAO,GAAG,YAAY,CAAC,EAAE,eAAe;AACtC,iBAAS,MAAM,UAAU,WAAW,KAAK,CAAC;AAAA,MAAA,CAC3C;AAAA,IACH;AAAA,EAAA;AAEJ;;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { sanitize } from "@strapi/utils";
|
|
2
|
+
import { getDeepPopulate } from "./utils/populate.mjs";
|
|
3
|
+
const EVENTS = {
|
|
4
|
+
ENTRY_CREATE: "entry.create",
|
|
5
|
+
ENTRY_UPDATE: "entry.update",
|
|
6
|
+
ENTRY_DELETE: "entry.delete",
|
|
7
|
+
ENTRY_PUBLISH: "entry.publish",
|
|
8
|
+
ENTRY_UNPUBLISH: "entry.unpublish",
|
|
9
|
+
ENTRY_DRAFT_DISCARD: "entry.draft-discard"
|
|
10
|
+
};
|
|
11
|
+
const createEventManager = (strapi, uid) => {
|
|
12
|
+
const populate = getDeepPopulate(uid, {});
|
|
13
|
+
const model = strapi.getModel(uid);
|
|
14
|
+
const emitEvent = async (eventName, entry) => {
|
|
15
|
+
let populatedEntry = entry;
|
|
16
|
+
if (![EVENTS.ENTRY_DELETE, EVENTS.ENTRY_UNPUBLISH].includes(eventName)) {
|
|
17
|
+
populatedEntry = await strapi.db.query(uid).findOne({ where: { id: entry.id }, populate });
|
|
18
|
+
}
|
|
19
|
+
const sanitizedEntry = await sanitize.sanitizers.defaultSanitizeOutput(
|
|
20
|
+
{
|
|
21
|
+
schema: model,
|
|
22
|
+
getModel: (uid2) => strapi.getModel(uid2)
|
|
23
|
+
},
|
|
24
|
+
populatedEntry
|
|
25
|
+
);
|
|
26
|
+
await strapi.eventHub.emit(eventName, {
|
|
27
|
+
model: model.modelName,
|
|
28
|
+
uid: model.uid,
|
|
29
|
+
entry: sanitizedEntry
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
/**
|
|
34
|
+
* strapi.db.query might reuse the transaction used in the doc service request,
|
|
35
|
+
* so this is executed after that transaction is committed.
|
|
36
|
+
*/
|
|
37
|
+
emitEvent(eventName, entry) {
|
|
38
|
+
strapi.db.transaction(({ onCommit }) => {
|
|
39
|
+
onCommit(() => emitEvent(eventName, entry));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export {
|
|
45
|
+
createEventManager
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=events.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.mjs","sources":["../../../src/services/document-service/events.ts"],"sourcesContent":["import { UID, Utils, Modules, Core } from '@strapi/types';\nimport { sanitize } from '@strapi/utils';\n\nimport { getDeepPopulate } from './utils/populate';\n\nconst EVENTS = {\n ENTRY_CREATE: 'entry.create',\n ENTRY_UPDATE: 'entry.update',\n ENTRY_DELETE: 'entry.delete',\n ENTRY_PUBLISH: 'entry.publish',\n ENTRY_UNPUBLISH: 'entry.unpublish',\n ENTRY_DRAFT_DISCARD: 'entry.draft-discard',\n};\n\ntype EventName = Utils.Object.Values<typeof EVENTS>;\n\n/**\n * Manager to trigger entry related events\n *\n * It will populate the entry if it is not a delete event.\n * So the event payload will contain the full entry.\n */\nconst createEventManager = (strapi: Core.Strapi, uid: UID.Schema) => {\n const populate = getDeepPopulate(uid, {});\n const model = strapi.getModel(uid);\n\n const emitEvent = async (eventName: EventName, entry: Modules.Documents.AnyDocument) => {\n // There is no need to populate the entry if it has been deleted\n let populatedEntry = entry;\n if (![EVENTS.ENTRY_DELETE, EVENTS.ENTRY_UNPUBLISH].includes(eventName)) {\n populatedEntry = await strapi.db.query(uid).findOne({ where: { id: entry.id }, populate });\n }\n\n const sanitizedEntry = await sanitize.sanitizers.defaultSanitizeOutput(\n {\n schema: model,\n getModel: (uid) => strapi.getModel(uid as UID.Schema),\n },\n populatedEntry\n );\n\n await strapi.eventHub.emit(eventName, {\n model: model.modelName,\n uid: model.uid,\n entry: sanitizedEntry,\n });\n };\n\n return {\n /**\n * strapi.db.query might reuse the transaction used in the doc service request,\n * so this is executed after that transaction is committed.\n */\n emitEvent(eventName: EventName, entry: Modules.Documents.AnyDocument) {\n strapi.db.transaction(({ onCommit }) => {\n onCommit(() => emitEvent(eventName, entry));\n });\n },\n };\n};\n\nexport { createEventManager };\n"],"names":["uid"],"mappings":";;AAKA,MAAM,SAAS;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,qBAAqB;AACvB;AAUM,MAAA,qBAAqB,CAAC,QAAqB,QAAoB;AACnE,QAAM,WAAW,gBAAgB,KAAK,CAAE,CAAA;AAClC,QAAA,QAAQ,OAAO,SAAS,GAAG;AAE3B,QAAA,YAAY,OAAO,WAAsB,UAAyC;AAEtF,QAAI,iBAAiB;AACjB,QAAA,CAAC,CAAC,OAAO,cAAc,OAAO,eAAe,EAAE,SAAS,SAAS,GAAG;AACtE,uBAAiB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,MAAM,GAAG,GAAG,SAAU,CAAA;AAAA,IAC3F;AAEM,UAAA,iBAAiB,MAAM,SAAS,WAAW;AAAA,MAC/C;AAAA,QACE,QAAQ;AAAA,QACR,UAAU,CAACA,SAAQ,OAAO,SAASA,IAAiB;AAAA,MACtD;AAAA,MACA;AAAA,IAAA;AAGI,UAAA,OAAO,SAAS,KAAK,WAAW;AAAA,MACpC,OAAO,MAAM;AAAA,MACb,KAAK,MAAM;AAAA,MACX,OAAO;AAAA,IAAA,CACR;AAAA,EAAA;AAGI,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,UAAU,WAAsB,OAAsC;AACpE,aAAO,GAAG,YAAY,CAAC,EAAE,eAAe;AACtC,iBAAS,MAAM,UAAU,WAAW,KAAK,CAAC;AAAA,MAAA,CAC3C;AAAA,IACH;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAO,MAAM,eAAe,CAAC;AAMxD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,WAAY,KAAK,MAAM,KAAG,QAAQ,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAO,MAAM,eAAe,CAAC;AAMxD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,WAAY,KAAK,MAAM,KAAG,QAAQ,SAAS,CAAC,OAmC7E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n // Cache the repositories (one per content type)\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n\n // Manager to handle document service middlewares\n const middlewares = createMiddlewareManager();\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid: UID.ContentType) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n const instance = middlewares.wrapObject(\n repository,\n { uid, contentType },\n {\n exclude: ['updateComponents', 'omitComponentData'],\n }\n );\n\n repositories.set(uid, instance);\n\n return instance;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n utils: {\n transformData,\n },\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["createMiddlewareManager","databaseErrorsMiddleware","factory","repository","createContentTypeRepository","transformData"],"mappings":";;;;;;AAoBa,MAAA,wBAAwB,CAAC,WAAmD;AAEjF,QAAA,mCAAmB;AAGzB,QAAM,cAAcA,kBAAAA;AACpB,cAAY,IAAIC,OAAAA,wBAAwB;AAElC,QAAA,UAAU,SAASC,SAAQ,KAAsB;AACjD,QAAA,aAAa,IAAI,GAAG,GAAG;AAClB,aAAA,aAAa,IAAI,GAAG;AAAA,IAC7B;AAEM,UAAA,cAAc,OAAO,YAAY,GAAG;AACpC,UAAAC,eAAaC,uCAA4B,GAAG;AAElD,UAAM,WAAW,YAAY;AAAA,MAC3BD;AAAAA,MACA,EAAE,KAAK,YAAY;AAAA,MACnB;AAAA,QACE,SAAS,CAAC,oBAAoB,mBAAmB;AAAA,MACnD;AAAA,IAAA;AAGW,iBAAA,IAAI,KAAK,QAAQ;AAEvB,WAAA;AAAA,EAAA;AAGF,SAAA,OAAO,OAAO,SAAS;AAAA,IAC5B,OAAO;AAAA,MAAA,eACLE,KAAA;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,KAAK,WAAW;AAAA,EAAA,CACtC;AACH;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n const middlewares = createMiddlewareManager();\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (strapi: Core.Strapi): Modules.Documents.Service => {\n // Cache the repositories (one per content type)\n const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n\n // Manager to handle document service middlewares\n const middlewares = createMiddlewareManager();\n middlewares.use(databaseErrorsMiddleware);\n\n const factory = function factory(uid: UID.ContentType) {\n if (repositories.has(uid)) {\n return repositories.get(uid)!;\n }\n\n const contentType = strapi.contentType(uid);\n const repository = createContentTypeRepository(uid);\n\n const instance = middlewares.wrapObject(\n repository,\n { uid, contentType },\n {\n exclude: ['updateComponents', 'omitComponentData'],\n }\n );\n\n repositories.set(uid, instance);\n\n return instance;\n } as Modules.Documents.Service;\n\n return Object.assign(factory, {\n utils: {\n transformData,\n },\n use: middlewares.use.bind(middlewares),\n });\n};\n"],"names":["factory"],"mappings":";;;;AAoBa,MAAA,wBAAwB,CAAC,WAAmD;AAEjF,QAAA,mCAAmB;AAGzB,QAAM,cAAc;AACpB,cAAY,IAAI,wBAAwB;AAElC,QAAA,UAAU,SAASA,SAAQ,KAAsB;AACjD,QAAA,aAAa,IAAI,GAAG,GAAG;AAClB,aAAA,aAAa,IAAI,GAAG;AAAA,IAC7B;AAEM,UAAA,cAAc,OAAO,YAAY,GAAG;AACpC,UAAA,aAAa,4BAA4B,GAAG;AAElD,UAAM,WAAW,YAAY;AAAA,MAC3B;AAAA,MACA,EAAE,KAAK,YAAY;AAAA,MACnB;AAAA,QACE,SAAS,CAAC,oBAAoB,mBAAmB;AAAA,MACnD;AAAA,IAAA;AAGW,iBAAA,IAAI,KAAK,QAAQ;AAEvB,WAAA;AAAA,EAAA;AAGF,SAAA,OAAO,OAAO,SAAS;AAAA,IAC5B,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,KAAK,WAAW;AAAA,EAAA,CACtC;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internationalization.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/internationalization.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"internationalization.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/internationalization.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AA8FrD,QAAA,MAAM,kBAAkB,+JAAuB,CAAC;AAChD,QAAA,MAAM,mBAAmB,sJAAwB,CAAC;AAClD,QAAA,MAAM,wBAAwB,sJAA6B,CAAC;AAC5D,QAAA,MAAM,iBAAiB,sJAAsB,CAAC;AAE9C,OAAO,EACL,kBAAkB,IAAI,aAAa,EACnC,mBAAmB,IAAI,cAAc,EACrC,iBAAiB,IAAI,YAAY,EACjC,wBAAwB,IAAI,mBAAmB,GAChD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const strapiUtils = require("@strapi/utils");
|
|
4
|
+
const fp = require("lodash/fp");
|
|
4
5
|
const getDefaultLocale = async () => {
|
|
5
6
|
return strapi.plugin("i18n").service("locales").getDefaultLocale();
|
|
6
7
|
};
|
|
@@ -9,18 +10,20 @@ const defaultLocale = async (contentType, params) => {
|
|
|
9
10
|
return params;
|
|
10
11
|
}
|
|
11
12
|
if (!params.locale) {
|
|
12
|
-
return
|
|
13
|
+
return fp.assoc("locale", await getDefaultLocale(), params);
|
|
13
14
|
}
|
|
14
15
|
return params;
|
|
15
16
|
};
|
|
16
17
|
const localeToLookup = (contentType, params) => {
|
|
17
|
-
if (!strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
18
|
+
if (!params.locale || !strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
18
19
|
return params;
|
|
19
20
|
}
|
|
20
|
-
if (params.locale) {
|
|
21
|
-
|
|
21
|
+
if (typeof params.locale !== "string") {
|
|
22
|
+
throw new strapiUtils.errors.ValidationError(
|
|
23
|
+
`Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`
|
|
24
|
+
);
|
|
22
25
|
}
|
|
23
|
-
return params;
|
|
26
|
+
return fp.assoc(["lookup", "locale"], params.locale, params);
|
|
24
27
|
};
|
|
25
28
|
const multiLocaleToLookup = (contentType, params) => {
|
|
26
29
|
if (!strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
@@ -30,7 +33,7 @@ const multiLocaleToLookup = (contentType, params) => {
|
|
|
30
33
|
if (params.locale === "*") {
|
|
31
34
|
return params;
|
|
32
35
|
}
|
|
33
|
-
return
|
|
36
|
+
return fp.assoc(["lookup", "locale"], params.locale, params);
|
|
34
37
|
}
|
|
35
38
|
return params;
|
|
36
39
|
};
|
|
@@ -39,14 +42,20 @@ const localeToData = (contentType, params) => {
|
|
|
39
42
|
return params;
|
|
40
43
|
}
|
|
41
44
|
if (params.locale) {
|
|
42
|
-
|
|
45
|
+
const isValidLocale = typeof params.locale === "string" && params.locale !== "*";
|
|
46
|
+
if (isValidLocale) {
|
|
47
|
+
return fp.assoc(["data", "locale"], params.locale, params);
|
|
48
|
+
}
|
|
49
|
+
throw new strapiUtils.errors.ValidationError(
|
|
50
|
+
`Invalid locale param ${params.locale} provided. Document locales must be strings.`
|
|
51
|
+
);
|
|
43
52
|
}
|
|
44
53
|
return params;
|
|
45
54
|
};
|
|
46
|
-
const defaultLocaleCurry =
|
|
47
|
-
const localeToLookupCurry =
|
|
48
|
-
const multiLocaleToLookupCurry =
|
|
49
|
-
const localeToDataCurry =
|
|
55
|
+
const defaultLocaleCurry = fp.curry(defaultLocale);
|
|
56
|
+
const localeToLookupCurry = fp.curry(localeToLookup);
|
|
57
|
+
const multiLocaleToLookupCurry = fp.curry(multiLocaleToLookup);
|
|
58
|
+
const localeToDataCurry = fp.curry(localeToData);
|
|
50
59
|
exports.defaultLocale = defaultLocaleCurry;
|
|
51
60
|
exports.localeToData = localeToDataCurry;
|
|
52
61
|
exports.localeToLookup = localeToLookupCurry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internationalization.js","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n
|
|
1
|
+
{"version":3,"file":"internationalization.js","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":["assoc","errors","curry"],"mappings":";;;;AAcA,MAAM,mBAAmB,YAA6B;AACpD,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEA,MAAM,gBAAgC,OAAO,aAAa,WAAW;AAC/D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEI,MAAA,CAAC,OAAO,QAAQ;AAClB,WAAOA,GAAM,MAAA,UAAU,MAAM,oBAAoB,MAAM;AAAA,EACzD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA4B,CAAC,aAAa,WAAW;AACzD,MACE,CAAC,OAAO,UACR,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAClF;AACO,WAAA;AAAA,EACT;AAEI,MAAA,OAAO,OAAO,WAAW,UAAU;AAIrC,UAAM,IAAIC,YAAO,OAAA;AAAA,MACf,wBAAwB,OAAO,OAAO,MAAM,CAAC;AAAA,IAAA;AAAA,EAEjD;AAEA,SAAOD,GAAAA,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAC1D;AAKA,MAAM,sBAAiC,CAAC,aAAa,WAAW;AAC1D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACb,QAAA,OAAO,WAAW,KAAK;AAClB,aAAA;AAAA,IACT;AAEA,WAAOA,GAAAA,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EAC1D;AAEO,SAAA;AACT;AAKA,MAAM,eAA0B,CAAC,aAAa,WAAW;AACnD,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACjB,UAAM,gBAAgB,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW;AAC7E,QAAI,eAAe;AACjB,aAAOA,GAAAA,MAAM,CAAC,QAAQ,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,IACxD;AAEA,UAAM,IAAIC,YAAO,OAAA;AAAA,MACf,wBAAwB,OAAO,MAAM;AAAA,IAAA;AAAA,EAEzC;AAEO,SAAA;AACT;AAEM,MAAA,qBAAqBC,SAAM,aAAa;AACxC,MAAA,sBAAsBA,SAAM,cAAc;AAC1C,MAAA,2BAA2BA,SAAM,mBAAmB;AACpD,MAAA,oBAAoBA,SAAM,YAAY;;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { errors } from "@strapi/utils";
|
|
1
2
|
import { curry, assoc } from "lodash/fp";
|
|
2
3
|
const getDefaultLocale = async () => {
|
|
3
4
|
return strapi.plugin("i18n").service("locales").getDefaultLocale();
|
|
@@ -12,13 +13,15 @@ const defaultLocale = async (contentType, params) => {
|
|
|
12
13
|
return params;
|
|
13
14
|
};
|
|
14
15
|
const localeToLookup = (contentType, params) => {
|
|
15
|
-
if (!strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
16
|
+
if (!params.locale || !strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
16
17
|
return params;
|
|
17
18
|
}
|
|
18
|
-
if (params.locale) {
|
|
19
|
-
|
|
19
|
+
if (typeof params.locale !== "string") {
|
|
20
|
+
throw new errors.ValidationError(
|
|
21
|
+
`Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`
|
|
22
|
+
);
|
|
20
23
|
}
|
|
21
|
-
return params;
|
|
24
|
+
return assoc(["lookup", "locale"], params.locale, params);
|
|
22
25
|
};
|
|
23
26
|
const multiLocaleToLookup = (contentType, params) => {
|
|
24
27
|
if (!strapi.plugin("i18n").service("content-types").isLocalizedContentType(contentType)) {
|
|
@@ -37,7 +40,13 @@ const localeToData = (contentType, params) => {
|
|
|
37
40
|
return params;
|
|
38
41
|
}
|
|
39
42
|
if (params.locale) {
|
|
40
|
-
|
|
43
|
+
const isValidLocale = typeof params.locale === "string" && params.locale !== "*";
|
|
44
|
+
if (isValidLocale) {
|
|
45
|
+
return assoc(["data", "locale"], params.locale, params);
|
|
46
|
+
}
|
|
47
|
+
throw new errors.ValidationError(
|
|
48
|
+
`Invalid locale param ${params.locale} provided. Document locales must be strings.`
|
|
49
|
+
);
|
|
41
50
|
}
|
|
42
51
|
return params;
|
|
43
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n
|
|
1
|
+
{"version":3,"file":"internationalization.mjs","sources":["../../../src/services/document-service/internationalization.ts"],"sourcesContent":["import type { Struct, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { curry, assoc } from 'lodash/fp';\n\ntype Transform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Modules.Documents.Params.All;\n\ntype AsyncTransform = (\n contentType: Struct.SingleTypeSchema | Struct.CollectionTypeSchema,\n params: Modules.Documents.Params.All\n) => Promise<Modules.Documents.Params.All>;\n\nconst getDefaultLocale = async (): Promise<string> => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nconst defaultLocale: AsyncTransform = async (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (!params.locale) {\n return assoc('locale', await getDefaultLocale(), params);\n }\n\n return params;\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst localeToLookup: Transform = (contentType, params) => {\n if (\n !params.locale ||\n !strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)\n ) {\n return params;\n }\n\n if (typeof params.locale !== 'string') {\n // localeToLookup accepts locales of '*'. This is because the document\n // service functions that use this transform work with the '*' locale\n // to return all locales.\n throw new errors.ValidationError(\n `Invalid locale param ${String(params.locale)} provided. Document locales must be strings.`\n );\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n};\n\n/**\n * Add locale lookup query to the params\n */\nconst multiLocaleToLookup: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n if (params.locale === '*') {\n return params;\n }\n\n return assoc(['lookup', 'locale'], params.locale, params);\n }\n\n return params;\n};\n\n/**\n * Translate locale status parameter into the data that will be saved\n */\nconst localeToData: Transform = (contentType, params) => {\n if (!strapi.plugin('i18n').service('content-types').isLocalizedContentType(contentType)) {\n return params;\n }\n\n if (params.locale) {\n const isValidLocale = typeof params.locale === 'string' && params.locale !== '*';\n if (isValidLocale) {\n return assoc(['data', 'locale'], params.locale, params);\n }\n\n throw new errors.ValidationError(\n `Invalid locale param ${params.locale} provided. Document locales must be strings.`\n );\n }\n\n return params;\n};\n\nconst defaultLocaleCurry = curry(defaultLocale);\nconst localeToLookupCurry = curry(localeToLookup);\nconst multiLocaleToLookupCurry = curry(multiLocaleToLookup);\nconst localeToDataCurry = curry(localeToData);\n\nexport {\n defaultLocaleCurry as defaultLocale,\n localeToLookupCurry as localeToLookup,\n localeToDataCurry as localeToData,\n multiLocaleToLookupCurry as multiLocaleToLookup,\n};\n"],"names":[],"mappings":";;AAcA,MAAM,mBAAmB,YAA6B;AACpD,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEA,MAAM,gBAAgC,OAAO,aAAa,WAAW;AAC/D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEI,MAAA,CAAC,OAAO,QAAQ;AAClB,WAAO,MAAM,UAAU,MAAM,oBAAoB,MAAM;AAAA,EACzD;AAEO,SAAA;AACT;AAKA,MAAM,iBAA4B,CAAC,aAAa,WAAW;AACzD,MACE,CAAC,OAAO,UACR,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAClF;AACO,WAAA;AAAA,EACT;AAEI,MAAA,OAAO,OAAO,WAAW,UAAU;AAIrC,UAAM,IAAI,OAAO;AAAA,MACf,wBAAwB,OAAO,OAAO,MAAM,CAAC;AAAA,IAAA;AAAA,EAEjD;AAEA,SAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAC1D;AAKA,MAAM,sBAAiC,CAAC,aAAa,WAAW;AAC1D,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACb,QAAA,OAAO,WAAW,KAAK;AAClB,aAAA;AAAA,IACT;AAEA,WAAO,MAAM,CAAC,UAAU,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,EAC1D;AAEO,SAAA;AACT;AAKA,MAAM,eAA0B,CAAC,aAAa,WAAW;AACnD,MAAA,CAAC,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,WAAW,GAAG;AAChF,WAAA;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ;AACjB,UAAM,gBAAgB,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW;AAC7E,QAAI,eAAe;AACjB,aAAO,MAAM,CAAC,QAAQ,QAAQ,GAAG,OAAO,QAAQ,MAAM;AAAA,IACxD;AAEA,UAAM,IAAI,OAAO;AAAA,MACf,wBAAwB,OAAO,MAAM;AAAA,IAAA;AAAA,EAEzC;AAEO,SAAA;AACT;AAEM,MAAA,qBAAqB,MAAM,aAAa;AACxC,MAAA,sBAAsB,MAAM,cAAc;AAC1C,MAAA,2BAA2B,MAAM,mBAAmB;AACpD,MAAA,oBAAoB,MAAM,YAAY;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const fp = require("lodash/fp");
|
|
4
4
|
const pickSelectionParams = (data) => {
|
|
5
|
-
return
|
|
5
|
+
return fp.pick(["fields", "populate", "status"], data);
|
|
6
6
|
};
|
|
7
7
|
exports.pickSelectionParams = pickSelectionParams;
|
|
8
8
|
//# sourceMappingURL=params.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sources":["../../../src/services/document-service/params.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport type { UID, Modules } from '@strapi/types';\n\nconst pickSelectionParams = <TUID extends UID.ContentType>(\n data: unknown\n): Modules.Documents.Params.Pick<TUID, 'fields' | 'populate' | 'status'> => {\n return pick(['fields', 'populate', 'status'], data);\n};\n\nexport { pickSelectionParams };\n"],"names":["pick"],"mappings":";;;AAGM,MAAA,sBAAsB,CAC1B,SAC0E;AAC1E,SAAOA,
|
|
1
|
+
{"version":3,"file":"params.js","sources":["../../../src/services/document-service/params.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport type { UID, Modules } from '@strapi/types';\n\nconst pickSelectionParams = <TUID extends UID.ContentType>(\n data: unknown\n): Modules.Documents.Params.Pick<TUID, 'fields' | 'populate' | 'status'> => {\n return pick(['fields', 'populate', 'status'], data);\n};\n\nexport { pickSelectionParams };\n"],"names":["pick"],"mappings":";;;AAGM,MAAA,sBAAsB,CAC1B,SAC0E;AAC1E,SAAOA,GAAAA,KAAK,CAAC,UAAU,YAAY,QAAQ,GAAG,IAAI;AACpD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/repository.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAa3E,eAAO,MAAM,2BAA2B,EAAE,uBAyUzC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const fp = require("lodash/fp");
|
|
4
4
|
const strapiUtils = require("@strapi/utils");
|
|
5
5
|
const common = require("./common.js");
|
|
6
6
|
const draftAndPublish = require("./draft-and-publish.js");
|
|
@@ -12,16 +12,19 @@ const transformContentTypesToModels = require("../../utils/transform-content-typ
|
|
|
12
12
|
const populate = require("./utils/populate.js");
|
|
13
13
|
const query = require("./transform/query.js");
|
|
14
14
|
const idTransform = require("./transform/id-transform.js");
|
|
15
|
+
const events = require("./events.js");
|
|
15
16
|
const createContentTypeRepository = (uid) => {
|
|
16
17
|
const contentType = strapi.contentType(uid);
|
|
17
18
|
const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(contentType);
|
|
18
19
|
const entries$1 = entries.createEntriesService(uid);
|
|
20
|
+
const eventManager = events.createEventManager(strapi, uid);
|
|
21
|
+
const emitEvent = fp.curry(eventManager.emitEvent);
|
|
19
22
|
async function findMany(params2 = {}) {
|
|
20
23
|
const query$1 = await strapiUtils.async.pipe(
|
|
21
24
|
draftAndPublish.defaultToDraft,
|
|
22
25
|
draftAndPublish.statusToLookup(contentType),
|
|
23
26
|
internationalization.defaultLocale(contentType),
|
|
24
|
-
internationalization.
|
|
27
|
+
internationalization.multiLocaleToLookup(contentType),
|
|
25
28
|
idTransform.transformParamsDocumentId(uid),
|
|
26
29
|
query.transformParamsToQuery(uid)
|
|
27
30
|
)(params2 || {});
|
|
@@ -47,25 +50,29 @@ const createContentTypeRepository = (uid) => {
|
|
|
47
50
|
internationalization.localeToLookup(contentType),
|
|
48
51
|
idTransform.transformParamsDocumentId(uid),
|
|
49
52
|
query.transformParamsToQuery(uid),
|
|
50
|
-
(query2) =>
|
|
53
|
+
(query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
|
|
51
54
|
)(params2);
|
|
52
55
|
return strapi.db.query(uid).findOne(query$1);
|
|
53
56
|
}
|
|
54
57
|
async function deleteDocument(opts = {}) {
|
|
55
58
|
const { documentId, ...params2 } = opts;
|
|
56
59
|
const query$1 = await strapiUtils.async.pipe(
|
|
57
|
-
|
|
60
|
+
fp.omit("status"),
|
|
58
61
|
internationalization.defaultLocale(contentType),
|
|
59
62
|
internationalization.multiLocaleToLookup(contentType),
|
|
60
63
|
query.transformParamsToQuery(uid),
|
|
61
|
-
(query2) =>
|
|
64
|
+
(query2) => fp.assoc("where", { ...query2.where, documentId }, query2)
|
|
62
65
|
)(params2);
|
|
63
66
|
if (params2.status === "draft") {
|
|
64
67
|
throw new Error("Cannot delete a draft document");
|
|
65
68
|
}
|
|
66
69
|
const entriesToDelete = await strapi.db.query(uid).findMany(query$1);
|
|
67
|
-
await strapiUtils.async.map(
|
|
68
|
-
|
|
70
|
+
const deletedEntries = await strapiUtils.async.map(
|
|
71
|
+
entriesToDelete,
|
|
72
|
+
(entryToDelete) => entries$1.delete(entryToDelete.id)
|
|
73
|
+
);
|
|
74
|
+
entriesToDelete.forEach(emitEvent("entry.delete"));
|
|
75
|
+
return { documentId, entries: deletedEntries };
|
|
69
76
|
}
|
|
70
77
|
async function create(opts = {}) {
|
|
71
78
|
const { documentId, ...params2 } = opts;
|
|
@@ -77,11 +84,12 @@ const createContentTypeRepository = (uid) => {
|
|
|
77
84
|
internationalization.localeToData(contentType)
|
|
78
85
|
)(params2);
|
|
79
86
|
const doc = await entries$1.create(queryParams);
|
|
87
|
+
emitEvent("entry.create", doc);
|
|
80
88
|
if (hasDraftAndPublish && params2.status === "published") {
|
|
81
89
|
return publish({
|
|
82
90
|
...params2,
|
|
83
91
|
documentId: doc.documentId
|
|
84
|
-
}).then((doc2) => doc2.
|
|
92
|
+
}).then((doc2) => doc2.entries[0]);
|
|
85
93
|
}
|
|
86
94
|
return doc;
|
|
87
95
|
}
|
|
@@ -92,7 +100,7 @@ const createContentTypeRepository = (uid) => {
|
|
|
92
100
|
internationalization.defaultLocale(contentType),
|
|
93
101
|
internationalization.multiLocaleToLookup(contentType)
|
|
94
102
|
)(params2);
|
|
95
|
-
const entriesToClone = await strapi.db
|
|
103
|
+
const entriesToClone = await strapi.db.query(uid).findMany({
|
|
96
104
|
where: {
|
|
97
105
|
...queryParams?.lookup,
|
|
98
106
|
documentId,
|
|
@@ -105,15 +113,16 @@ const createContentTypeRepository = (uid) => {
|
|
|
105
113
|
const clonedEntries = await strapiUtils.async.map(
|
|
106
114
|
entriesToClone,
|
|
107
115
|
strapiUtils.async.pipe(
|
|
108
|
-
|
|
116
|
+
fp.omit("id"),
|
|
109
117
|
// assign new documentId
|
|
110
|
-
|
|
118
|
+
fp.assoc("documentId", transformContentTypesToModels.createDocumentId()),
|
|
111
119
|
// Merge new data into it
|
|
112
|
-
(data) =>
|
|
120
|
+
(data) => fp.merge(data, queryParams.data),
|
|
113
121
|
(data) => entries$1.create({ ...queryParams, data, status: "draft" })
|
|
114
122
|
)
|
|
115
123
|
);
|
|
116
|
-
|
|
124
|
+
clonedEntries.forEach(emitEvent("entry.create"));
|
|
125
|
+
return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };
|
|
117
126
|
}
|
|
118
127
|
async function update(opts = {}) {
|
|
119
128
|
const { documentId, ...params$1 } = opts;
|
|
@@ -133,6 +142,7 @@ const createContentTypeRepository = (uid) => {
|
|
|
133
142
|
let updatedDraft = null;
|
|
134
143
|
if (entryToUpdate) {
|
|
135
144
|
updatedDraft = await entries$1.update(entryToUpdate, queryParams);
|
|
145
|
+
emitEvent("entry.update", updatedDraft);
|
|
136
146
|
}
|
|
137
147
|
if (!updatedDraft) {
|
|
138
148
|
const documentExists = await strapi.db.query(contentType.uid).findOne({ where: { documentId } });
|
|
@@ -141,13 +151,14 @@ const createContentTypeRepository = (uid) => {
|
|
|
141
151
|
...queryParams,
|
|
142
152
|
data: { ...queryParams.data, documentId }
|
|
143
153
|
});
|
|
154
|
+
emitEvent("entry.create", updatedDraft);
|
|
144
155
|
}
|
|
145
156
|
}
|
|
146
157
|
if (hasDraftAndPublish && updatedDraft && params$1.status === "published") {
|
|
147
158
|
return publish({
|
|
148
159
|
...params$1,
|
|
149
160
|
documentId
|
|
150
|
-
}).then((doc) => doc.
|
|
161
|
+
}).then((doc) => doc.entries[0]);
|
|
151
162
|
}
|
|
152
163
|
return updatedDraft;
|
|
153
164
|
}
|
|
@@ -167,37 +178,46 @@ const createContentTypeRepository = (uid) => {
|
|
|
167
178
|
internationalization.defaultLocale(contentType),
|
|
168
179
|
internationalization.multiLocaleToLookup(contentType)
|
|
169
180
|
)(params2);
|
|
170
|
-
await
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
const [draftsToPublish, publishedToDelete] = await Promise.all([
|
|
182
|
+
strapi.db.query(uid).findMany({
|
|
183
|
+
where: {
|
|
184
|
+
...queryParams?.lookup,
|
|
185
|
+
documentId,
|
|
186
|
+
publishedAt: null
|
|
187
|
+
// Ignore lookup
|
|
188
|
+
},
|
|
189
|
+
// Populate relations, media, compos and dz
|
|
190
|
+
populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
|
|
191
|
+
}),
|
|
192
|
+
strapi.db.query(uid).findMany({
|
|
193
|
+
where: {
|
|
194
|
+
...queryParams?.lookup,
|
|
195
|
+
documentId,
|
|
196
|
+
publishedAt: { $ne: null }
|
|
197
|
+
},
|
|
198
|
+
select: ["id"]
|
|
199
|
+
})
|
|
200
|
+
]);
|
|
201
|
+
await strapiUtils.async.map(publishedToDelete, (entry) => entries$1.delete(entry.id));
|
|
202
|
+
const publishedEntries = await strapiUtils.async.map(
|
|
184
203
|
draftsToPublish,
|
|
185
204
|
(draft) => entries$1.publish(draft, queryParams)
|
|
186
205
|
);
|
|
187
|
-
|
|
206
|
+
publishedEntries.forEach(emitEvent("entry.publish"));
|
|
207
|
+
return { documentId, entries: publishedEntries };
|
|
188
208
|
}
|
|
189
209
|
async function unpublish(opts = {}) {
|
|
190
210
|
const { documentId, ...params2 } = opts;
|
|
191
|
-
const
|
|
211
|
+
const query$1 = await strapiUtils.async.pipe(
|
|
192
212
|
internationalization.defaultLocale(contentType),
|
|
193
|
-
internationalization.multiLocaleToLookup(contentType)
|
|
213
|
+
internationalization.multiLocaleToLookup(contentType),
|
|
214
|
+
query.transformParamsToQuery(uid),
|
|
215
|
+
(query2) => fp.assoc("where", { ...query2.where, documentId, publishedAt: { $ne: null } }, query2)
|
|
194
216
|
)(params2);
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
});
|
|
200
|
-
return { versions: deletedEntries };
|
|
217
|
+
const versionsToDelete = await strapi.db.query(uid).findMany(query$1);
|
|
218
|
+
await strapiUtils.async.map(versionsToDelete, (entry) => entries$1.delete(entry.id));
|
|
219
|
+
versionsToDelete.forEach(emitEvent("entry.unpublish"));
|
|
220
|
+
return { documentId, entries: versionsToDelete };
|
|
201
221
|
}
|
|
202
222
|
async function discardDraft(opts = {}) {
|
|
203
223
|
const { documentId, ...params2 } = opts;
|
|
@@ -205,24 +225,32 @@ const createContentTypeRepository = (uid) => {
|
|
|
205
225
|
internationalization.defaultLocale(contentType),
|
|
206
226
|
internationalization.multiLocaleToLookup(contentType)
|
|
207
227
|
)(params2);
|
|
208
|
-
await
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
documentId,
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
228
|
+
const [versionsToDraft, versionsToDelete] = await Promise.all([
|
|
229
|
+
strapi.db.query(uid).findMany({
|
|
230
|
+
where: {
|
|
231
|
+
...queryParams?.lookup,
|
|
232
|
+
documentId,
|
|
233
|
+
publishedAt: { $ne: null }
|
|
234
|
+
},
|
|
235
|
+
// Populate relations, media, compos and dz
|
|
236
|
+
populate: populate.getDeepPopulate(uid, { relationalFields: ["documentId", "locale"] })
|
|
237
|
+
}),
|
|
238
|
+
strapi.db.query(uid).findMany({
|
|
239
|
+
where: {
|
|
240
|
+
...queryParams?.lookup,
|
|
241
|
+
documentId,
|
|
242
|
+
publishedAt: null
|
|
243
|
+
},
|
|
244
|
+
select: ["id"]
|
|
245
|
+
})
|
|
246
|
+
]);
|
|
247
|
+
await strapiUtils.async.map(versionsToDelete, (entry) => entries$1.delete(entry.id));
|
|
221
248
|
const draftEntries = await strapiUtils.async.map(
|
|
222
|
-
|
|
249
|
+
versionsToDraft,
|
|
223
250
|
(entry) => entries$1.discardDraft(entry, queryParams)
|
|
224
251
|
);
|
|
225
|
-
|
|
252
|
+
draftEntries.forEach(emitEvent("entry.draft-discard"));
|
|
253
|
+
return { documentId, entries: draftEntries };
|
|
226
254
|
}
|
|
227
255
|
async function updateComponents(entry, data) {
|
|
228
256
|
return components.updateComponents(uid, entry, data);
|