@strapi/core 5.55.1 → 5.57.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/Strapi.d.ts +1 -0
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +6 -3
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +6 -3
- 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/get-dirs.mjs +2 -2
- package/dist/configuration/get-dirs.mjs.map +1 -1
- package/dist/configuration/index.d.ts +1 -2
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +1 -2
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +2 -3
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.js +3 -3
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs +1 -1
- 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/index.mjs +2 -2
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.js +2 -2
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.d.ts +1 -4
- package/dist/core-api/controller/transform.d.ts.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/controller/transform.mjs +5 -5
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.js +1 -1
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs +1 -1
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/service/pagination.js +9 -9
- package/dist/core-api/service/pagination.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +7 -7
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +1 -2
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs +1 -2
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/ee/index.js +4 -4
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +3 -3
- package/dist/ee/index.mjs.map +1 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +3 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +3 -2
- package/dist/factories.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/loaders/apis.d.ts.map +1 -1
- package/dist/loaders/apis.js +1 -2
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs +1 -2
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +6 -5
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +6 -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/get-user-plugins-config.mjs +2 -2
- package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/loaders/plugins/index.js +9 -12
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs +9 -12
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/middlewares/body.js +2 -2
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs +2 -2
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/public.js +2 -2
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/public.mjs +2 -2
- package/dist/middlewares/public.mjs.map +1 -1
- package/dist/middlewares/responses.d.ts.map +1 -1
- package/dist/middlewares/responses.js +1 -3
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/responses.mjs +1 -3
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +3 -3
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +3 -3
- 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/middlewares/session.mjs +2 -2
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +1 -2
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -2
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/migrations/i18n.d.ts.map +1 -1
- package/dist/migrations/i18n.js +6 -4
- package/dist/migrations/i18n.js.map +1 -1
- package/dist/migrations/i18n.mjs +6 -4
- package/dist/migrations/i18n.mjs.map +1 -1
- package/dist/package.json.js +15 -15
- package/dist/package.json.mjs +15 -15
- package/dist/registries/apis.js +2 -2
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/apis.mjs +2 -2
- package/dist/registries/apis.mjs.map +1 -1
- package/dist/registries/components.js +2 -2
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/components.mjs +2 -2
- package/dist/registries/components.mjs.map +1 -1
- package/dist/registries/content-types.d.ts +1 -1
- package/dist/registries/content-types.js +3 -3
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs +3 -3
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/registries/controllers.js +3 -3
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/controllers.mjs +3 -3
- package/dist/registries/controllers.mjs.map +1 -1
- package/dist/registries/custom-fields.js +4 -4
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/custom-fields.mjs +4 -4
- package/dist/registries/custom-fields.mjs.map +1 -1
- package/dist/registries/hooks.d.ts +1 -1
- package/dist/registries/hooks.js +2 -2
- package/dist/registries/hooks.js.map +1 -1
- package/dist/registries/hooks.mjs +2 -2
- package/dist/registries/hooks.mjs.map +1 -1
- package/dist/registries/middlewares.d.ts +1 -1
- package/dist/registries/middlewares.js +3 -3
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/middlewares.mjs +3 -3
- package/dist/registries/middlewares.mjs.map +1 -1
- package/dist/registries/modules.d.ts +1 -4
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/modules.js +3 -3
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/modules.mjs +3 -3
- package/dist/registries/modules.mjs.map +1 -1
- package/dist/registries/plugins.js +2 -2
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/plugins.mjs +2 -2
- package/dist/registries/plugins.mjs.map +1 -1
- package/dist/registries/policies.d.ts +1 -1
- package/dist/registries/policies.js +4 -4
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +3 -3
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/registries/services.js +3 -3
- package/dist/registries/services.js.map +1 -1
- package/dist/registries/services.mjs +3 -3
- package/dist/registries/services.mjs.map +1 -1
- package/dist/services/auth/index.js +3 -3
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs +3 -3
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/content-structure/index.js +1 -1
- package/dist/services/content-structure/index.js.map +1 -1
- package/dist/services/content-structure/index.mjs +1 -1
- package/dist/services/content-structure/index.mjs.map +1 -1
- package/dist/services/core-store.js +3 -3
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js +2 -4
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +2 -4
- package/dist/services/cron.mjs.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/index.mjs +1 -1
- package/dist/services/document-service/attributes/index.mjs.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/attributes/transforms.mjs +2 -2
- package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/document-service/components.js +13 -14
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/components.mjs +12 -13
- package/dist/services/document-service/components.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +65 -38
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs +59 -32
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts +2 -2
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +16 -8
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +17 -9
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/first-published-at.js +7 -5
- package/dist/services/document-service/first-published-at.js.map +1 -1
- package/dist/services/document-service/first-published-at.mjs +7 -5
- package/dist/services/document-service/first-published-at.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +37 -28
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +33 -24
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/params.d.ts +1 -0
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/document-service/params.js +6 -4
- package/dist/services/document-service/params.js.map +1 -1
- package/dist/services/document-service/params.mjs +6 -5
- package/dist/services/document-service/params.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +84 -61
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +47 -24
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.js +2 -1
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs +2 -1
- package/dist/services/document-service/transform/id-map.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/id-transform.mjs +1 -1
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
- package/dist/services/document-service/transform/query.d.ts +3 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.js +12 -6
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/query.mjs +11 -5
- package/dist/services/document-service/transform/query.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -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 +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -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 +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
- package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.js +6 -6
- 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 +3 -3
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
- package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
- package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
- package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
- package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/clone-relations.js +3 -3
- package/dist/services/document-service/utils/clone-relations.js.map +1 -1
- package/dist/services/document-service/utils/clone-relations.mjs +3 -3
- package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.js +4 -4
- package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
- package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
- package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
- package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +9 -10
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +4 -5
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/localization.d.ts +4 -0
- package/dist/services/localization.d.ts.map +1 -0
- package/dist/services/localization.js +51 -0
- package/dist/services/localization.js.map +1 -0
- package/dist/services/localization.mjs +49 -0
- package/dist/services/localization.mjs.map +1 -0
- package/dist/services/server/compose-endpoint.js +7 -7
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +3 -3
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/koa-methods.js +2 -2
- package/dist/services/server/koa-methods.js.map +1 -1
- package/dist/services/server/koa-methods.mjs +1 -1
- package/dist/services/server/koa-methods.mjs.map +1 -1
- package/dist/services/server/koa.d.ts.map +1 -1
- package/dist/services/server/koa.js +1 -2
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs +1 -2
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/middleware.js +1 -2
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/middleware.mjs +1 -2
- package/dist/services/server/middleware.mjs.map +1 -1
- package/dist/services/server/routing.js +2 -2
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs +2 -2
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/conditional-fields.d.ts +1 -1
- package/dist/services/utils/conditional-fields.d.ts.map +1 -1
- package/dist/services/utils/conditional-fields.js +2 -8
- package/dist/services/utils/conditional-fields.js.map +1 -1
- package/dist/services/utils/conditional-fields.mjs +2 -8
- package/dist/services/utils/conditional-fields.mjs.map +1 -1
- package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
- package/dist/services/utils/dynamic-zones.js +2 -8
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs +2 -8
- package/dist/services/utils/dynamic-zones.mjs.map +1 -1
- package/dist/utils/cron.js +2 -2
- package/dist/utils/cron.js.map +1 -1
- package/dist/utils/cron.mjs +1 -1
- package/dist/utils/cron.mjs.map +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.js +5 -12
- package/dist/utils/filepath-to-prop-path.js.map +1 -1
- package/dist/utils/filepath-to-prop-path.mjs +5 -11
- 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/is-initialized.mjs +2 -2
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/startup-logger.js +2 -4
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs +2 -3
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +4 -4
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +3 -3
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +15 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
var strapiUtils = require('@strapi/utils');
|
|
5
5
|
var common = require('./common.js');
|
|
6
6
|
var draftAndPublish = require('./draft-and-publish.js');
|
|
@@ -28,7 +28,15 @@ const getModel = (schema)=>strapi.getModel(schema);
|
|
|
28
28
|
// BCP 47–style locale format: 2–3 letter language code (any case), optional subtags (-XX or -XXX...), max 35 chars
|
|
29
29
|
const LOCALE_FORMAT = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/;
|
|
30
30
|
const MAX_LOCALE_LENGTH = 35;
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Publication actions look up every row matching `documentId`. An empty value would match
|
|
33
|
+
* all rows whose document_id is NULL (or '') — rows left behind by a past bug — and
|
|
34
|
+
* publish/discard them as if they were a single document, so reject it outright.
|
|
35
|
+
*/ const assertDocumentIdProvided = (documentId, action)=>{
|
|
36
|
+
if (params.isParamEmpty(documentId)) {
|
|
37
|
+
throw new strapiUtils.errors.ValidationError(`Cannot ${action} a document without a documentId`);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
32
40
|
const createContentTypeRepository = (uid, validator = index)=>{
|
|
33
41
|
const contentType = strapi.contentType(uid);
|
|
34
42
|
const hasDraftAndPublish = strapiUtils.contentTypes.hasDraftAndPublish(contentType);
|
|
@@ -57,35 +65,35 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
57
65
|
/**
|
|
58
66
|
* Checks status parameter. When strict is true, throws on invalid status.
|
|
59
67
|
* Valid values are 'published' and 'draft'; for types without D&P they are currently ignored but may throw in the future
|
|
60
|
-
*/ const checkStatus = (params, strict)=>{
|
|
68
|
+
*/ const checkStatus = (params$1, strict)=>{
|
|
61
69
|
if (!strict) {
|
|
62
|
-
return params;
|
|
70
|
+
return params$1;
|
|
63
71
|
}
|
|
64
|
-
if (isParamEmpty(params.status)) {
|
|
65
|
-
delete params.status;
|
|
66
|
-
return params;
|
|
72
|
+
if (params.isParamEmpty(params$1.status)) {
|
|
73
|
+
delete params$1.status;
|
|
74
|
+
return params$1;
|
|
67
75
|
}
|
|
68
|
-
if (params.status !== 'published' && params.status !== 'draft') {
|
|
69
|
-
throw new strapiUtils.errors.ValidationError(`Invalid parameter at 'status'. Expected 'published' or 'draft', received: ${params.status}`);
|
|
76
|
+
if (params$1.status !== 'published' && params$1.status !== 'draft') {
|
|
77
|
+
throw new strapiUtils.errors.ValidationError(`Invalid parameter at 'status'. Expected 'published' or 'draft', received: ${params$1.status}`);
|
|
70
78
|
}
|
|
71
|
-
return params;
|
|
79
|
+
return params$1;
|
|
72
80
|
};
|
|
73
81
|
/**
|
|
74
82
|
* Checks locale parameter. When strict is true, throws on invalid locale value.
|
|
75
83
|
* Accepts only: string (single locale or '*'), array of locale strings (e.g. bulk publish),
|
|
76
84
|
* empty string, null, or undefined (removed but allowed)
|
|
77
|
-
*/ const checkLocale = (params, strict)=>{
|
|
85
|
+
*/ const checkLocale = (params$1, strict)=>{
|
|
78
86
|
if (!strict) {
|
|
79
|
-
return params;
|
|
87
|
+
return params$1;
|
|
80
88
|
}
|
|
81
|
-
if (isParamEmpty(params.locale)) {
|
|
82
|
-
delete params.locale;
|
|
83
|
-
return params;
|
|
89
|
+
if (params.isParamEmpty(params$1.locale)) {
|
|
90
|
+
delete params$1.locale;
|
|
91
|
+
return params$1;
|
|
84
92
|
}
|
|
85
93
|
// Reject objects (we only accept string, array of strings, empty string, null, undefined)
|
|
86
|
-
if (typeof params.locale === 'object' && !Array.isArray(params.locale)) {
|
|
94
|
+
if (typeof params$1.locale === 'object' && !Array.isArray(params$1.locale)) {
|
|
87
95
|
throw new strapiUtils.errors.ValidationError(`Invalid parameter at 'locale'. Expected a string, array of strings, empty string, null, or undefined; received: object`, {
|
|
88
|
-
received: params.locale
|
|
96
|
+
received: params$1.locale
|
|
89
97
|
});
|
|
90
98
|
}
|
|
91
99
|
const validateAndNormalizeOne = (value, path)=>{
|
|
@@ -111,17 +119,17 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
111
119
|
}
|
|
112
120
|
return value;
|
|
113
121
|
};
|
|
114
|
-
if (Array.isArray(params.locale)) {
|
|
115
|
-
const filtered = params.locale.filter((item)=>typeof item === 'string' && !isParamEmpty(item));
|
|
122
|
+
if (Array.isArray(params$1.locale)) {
|
|
123
|
+
const filtered = params$1.locale.filter((item)=>typeof item === 'string' && !params.isParamEmpty(item));
|
|
116
124
|
if (filtered.length === 0) {
|
|
117
|
-
delete params.locale;
|
|
118
|
-
return params;
|
|
125
|
+
delete params$1.locale;
|
|
126
|
+
return params$1;
|
|
119
127
|
}
|
|
120
|
-
params.locale = filtered.map((item, i)=>validateAndNormalizeOne(item, `locale[${i}]`));
|
|
121
|
-
return params;
|
|
128
|
+
params$1.locale = filtered.map((item, i)=>validateAndNormalizeOne(item, `locale[${i}]`));
|
|
129
|
+
return params$1;
|
|
122
130
|
}
|
|
123
|
-
params.locale = validateAndNormalizeOne(params.locale, 'locale');
|
|
124
|
-
return params;
|
|
131
|
+
params$1.locale = validateAndNormalizeOne(params$1.locale, 'locale');
|
|
132
|
+
return params$1;
|
|
125
133
|
};
|
|
126
134
|
/**
|
|
127
135
|
* Pagination param parsing (used only when strict).
|
|
@@ -129,7 +137,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
129
137
|
* present but invalid → throw ValidationError.
|
|
130
138
|
* present and valid → return normalized value.
|
|
131
139
|
*/ const parsePaginationInt = (name, value, strict, spec)=>{
|
|
132
|
-
if (isParamEmpty(value)) return undefined;
|
|
140
|
+
if (params.isParamEmpty(value)) return undefined;
|
|
133
141
|
const num = Number(value);
|
|
134
142
|
const valid = Number.isInteger(num) && (num >= spec.min || spec.allowMinusOne === true && num === -1);
|
|
135
143
|
if (!valid && strict) {
|
|
@@ -139,7 +147,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
139
147
|
return valid ? num : undefined;
|
|
140
148
|
};
|
|
141
149
|
const parseWithCount = (value)=>{
|
|
142
|
-
if (isParamEmpty(value)) return undefined;
|
|
150
|
+
if (params.isParamEmpty(value)) return undefined;
|
|
143
151
|
if (typeof value === 'boolean') return value;
|
|
144
152
|
if (typeof value === 'string' && (value === 'true' || value === 'false')) return value === 'true';
|
|
145
153
|
throw new strapiUtils.errors.ValidationError(`Invalid parameter at 'withCount'. Expected a boolean, received: ${typeof value}`);
|
|
@@ -154,29 +162,29 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
154
162
|
/**
|
|
155
163
|
* When strict: empty → omit, invalid → throw, valid → include.
|
|
156
164
|
* When not strict: return params unchanged.
|
|
157
|
-
*/ const checkPagination = (params, strict)=>{
|
|
158
|
-
if (!strict) return params;
|
|
159
|
-
const hasPage = !isParamEmpty(params.page) || !isParamEmpty(params.pageSize);
|
|
160
|
-
const hasOffset = !isParamEmpty(params.start) || !isParamEmpty(params.limit);
|
|
165
|
+
*/ const checkPagination = (params$1, strict)=>{
|
|
166
|
+
if (!strict) return params$1;
|
|
167
|
+
const hasPage = !params.isParamEmpty(params$1.page) || !params.isParamEmpty(params$1.pageSize);
|
|
168
|
+
const hasOffset = !params.isParamEmpty(params$1.start) || !params.isParamEmpty(params$1.limit);
|
|
161
169
|
if (hasPage && hasOffset) {
|
|
162
170
|
throw new strapiUtils.errors.ValidationError('Invalid pagination parameters. Cannot use both page-based (page, pageSize) and offset-based (start, limit) pagination in the same query.');
|
|
163
171
|
}
|
|
164
|
-
const page = parsePaginationInt('page', params.page, strict, {
|
|
172
|
+
const page = parsePaginationInt('page', params$1.page, strict, {
|
|
165
173
|
min: 1
|
|
166
174
|
});
|
|
167
|
-
const pageSize = parsePaginationInt('pageSize', params.pageSize, strict, {
|
|
175
|
+
const pageSize = parsePaginationInt('pageSize', params$1.pageSize, strict, {
|
|
168
176
|
min: 1
|
|
169
177
|
});
|
|
170
|
-
const start = parsePaginationInt('start', params.start, strict, {
|
|
178
|
+
const start = parsePaginationInt('start', params$1.start, strict, {
|
|
171
179
|
min: 0
|
|
172
180
|
});
|
|
173
|
-
const limit = parsePaginationInt('limit', params.limit, strict, {
|
|
181
|
+
const limit = parsePaginationInt('limit', params$1.limit, strict, {
|
|
174
182
|
min: 1,
|
|
175
183
|
allowMinusOne: true
|
|
176
184
|
});
|
|
177
|
-
const withCount = parseWithCount(params.withCount);
|
|
185
|
+
const withCount = parseWithCount(params$1.withCount);
|
|
178
186
|
const result = {
|
|
179
|
-
...
|
|
187
|
+
..._.omit(params$1, PAGINATION_KEYS)
|
|
180
188
|
};
|
|
181
189
|
if (page !== undefined) result.page = page;
|
|
182
190
|
if (pageSize !== undefined) result.pageSize = pageSize;
|
|
@@ -193,7 +201,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
193
201
|
if (!strict) {
|
|
194
202
|
return params$1;
|
|
195
203
|
}
|
|
196
|
-
return
|
|
204
|
+
return _.pick(params$1, params.ALLOWED_DOCUMENT_ROOT_PARAM_KEYS);
|
|
197
205
|
};
|
|
198
206
|
const validateParams = async (params)=>{
|
|
199
207
|
// Cache model lookups for this request to avoid repeating the same work
|
|
@@ -204,16 +212,16 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
204
212
|
};
|
|
205
213
|
// Only validate what is actually provided
|
|
206
214
|
const validations = [];
|
|
207
|
-
if (params.filters && !
|
|
215
|
+
if (params.filters && !_.isEmpty(params.filters)) {
|
|
208
216
|
validations.push(validators.validateFilters(ctx, params.filters, filtersValidations));
|
|
209
217
|
}
|
|
210
|
-
if (params.sort && !
|
|
218
|
+
if (params.sort && !_.isEmpty(params.sort)) {
|
|
211
219
|
validations.push(validators.validateSort(ctx, params.sort, sortValidations));
|
|
212
220
|
}
|
|
213
|
-
if (params.fields && !
|
|
221
|
+
if (params.fields && !_.isEmpty(params.fields)) {
|
|
214
222
|
validations.push(validators.validateFields(ctx, params.fields, fieldValidations));
|
|
215
223
|
}
|
|
216
|
-
if (params.populate && !
|
|
224
|
+
if (params.populate && !_.isEmpty(params.populate)) {
|
|
217
225
|
validations.push(validators.validatePopulate(ctx, params.populate, populateValidations));
|
|
218
226
|
}
|
|
219
227
|
// Run validations together but keep the same error order as before
|
|
@@ -244,7 +252,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
244
252
|
};
|
|
245
253
|
const entries$1 = entries.createEntriesService(uid, validator);
|
|
246
254
|
const eventManager = events.createEventManager(strapi, uid);
|
|
247
|
-
const emitEvent =
|
|
255
|
+
const emitEvent = _.curry(eventManager.emitEvent);
|
|
248
256
|
async function findMany(params = {}) {
|
|
249
257
|
const query$1 = await strapiUtils.async.pipe(validateParams, draftAndPublish.defaultToDraft, draftAndPublish.statusToLookup(contentType), internationalization.defaultLocale(contentType), internationalization.multiLocaleToLookup(contentType), idTransform.transformParamsDocumentId(uid), query.transformParamsToQuery(uid))(params || {});
|
|
250
258
|
return strapi.db.query(uid).findMany(query$1);
|
|
@@ -256,19 +264,25 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
256
264
|
// TODO: do we really want to add filters on the findOne now that we have findFirst ?
|
|
257
265
|
async function findOne(opts = {}) {
|
|
258
266
|
const { documentId, ...params } = opts;
|
|
259
|
-
const query$1 = await strapiUtils.async.pipe(validateParams, draftAndPublish.defaultToDraft, draftAndPublish.statusToLookup(contentType), internationalization.defaultLocale(contentType), internationalization.localeToLookup(contentType), idTransform.transformParamsDocumentId(uid), query.transformParamsToQuery(uid), (query)=>
|
|
260
|
-
...query
|
|
261
|
-
|
|
262
|
-
|
|
267
|
+
const query$1 = await strapiUtils.async.pipe(validateParams, draftAndPublish.defaultToDraft, draftAndPublish.statusToLookup(contentType), internationalization.defaultLocale(contentType), internationalization.localeToLookup(contentType), idTransform.transformParamsDocumentId(uid), query.transformParamsToQuery(uid), (query)=>({
|
|
268
|
+
...query,
|
|
269
|
+
where: {
|
|
270
|
+
...query.where,
|
|
271
|
+
documentId
|
|
272
|
+
}
|
|
273
|
+
}))(params);
|
|
263
274
|
return strapi.db.query(uid).findOne(query$1);
|
|
264
275
|
}
|
|
265
276
|
async function deleteDocument(opts = {}) {
|
|
266
277
|
const { documentId, ...params$1 } = opts;
|
|
267
|
-
const lookupQuery = await strapiUtils.async.pipe(validateParams,
|
|
268
|
-
...query
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
278
|
+
const lookupQuery = await strapiUtils.async.pipe(validateParams, (value)=>_.omit(value, 'status'), internationalization.defaultLocale(contentType), internationalization.multiLocaleToLookup(contentType), query.transformParamsToQuery(uid), (query)=>({
|
|
279
|
+
...query,
|
|
280
|
+
where: {
|
|
281
|
+
...query.where,
|
|
282
|
+
documentId
|
|
283
|
+
}
|
|
284
|
+
}))(params$1);
|
|
285
|
+
const selectionQuery = await strapiUtils.async.pipe(validateParams, (value)=>_.omit(value, 'status'), params.pickSelectionParams, query.transformParamsToQuery(uid))(params$1);
|
|
272
286
|
if (hasDraftAndPublish && params$1.status === 'draft') {
|
|
273
287
|
throw new Error('Cannot delete a draft document');
|
|
274
288
|
}
|
|
@@ -316,13 +330,16 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
316
330
|
const newDocumentId = transformContentTypesToModels.createDocumentId();
|
|
317
331
|
const clonedEntries = await strapiUtils.async.map(entriesToClone, async (entryToClone)=>{
|
|
318
332
|
const sourceEntryId = entryToClone.id;
|
|
319
|
-
const originalData =
|
|
333
|
+
const originalData = _.omit(entryToClone, [
|
|
320
334
|
'id',
|
|
321
335
|
'createdAt',
|
|
322
336
|
'updatedAt'
|
|
323
|
-
]
|
|
337
|
+
]);
|
|
324
338
|
const { data, relationsToCopy } = await cloneRelations.prepareCloneData(originalData, queryParams.data, contentType, (modelUid)=>strapi.getModel(modelUid));
|
|
325
|
-
const dataWithDocumentId =
|
|
339
|
+
const dataWithDocumentId = {
|
|
340
|
+
...data,
|
|
341
|
+
documentId: newDocumentId
|
|
342
|
+
};
|
|
326
343
|
const doc = await entries$1.create({
|
|
327
344
|
...queryParams,
|
|
328
345
|
data: dataWithDocumentId,
|
|
@@ -402,6 +419,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
402
419
|
}
|
|
403
420
|
async function publish(opts = {}) {
|
|
404
421
|
const { documentId, ...params } = opts;
|
|
422
|
+
assertDocumentIdProvided(documentId, 'publish');
|
|
405
423
|
const queryParams = await strapiUtils.async.pipe(validateParams, internationalization.defaultLocale(contentType), internationalization.multiLocaleToLookup(contentType))(params);
|
|
406
424
|
const [draftsToPublish, oldPublishedVersions] = await Promise.all([
|
|
407
425
|
strapi.db.query(uid).findMany({
|
|
@@ -472,13 +490,17 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
472
490
|
}
|
|
473
491
|
async function unpublish(opts = {}) {
|
|
474
492
|
const { documentId, ...params } = opts;
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
493
|
+
assertDocumentIdProvided(documentId, 'unpublish');
|
|
494
|
+
const query$1 = await strapiUtils.async.pipe(validateParams, internationalization.defaultLocale(contentType), internationalization.multiLocaleToLookup(contentType), query.transformParamsToQuery(uid), (query)=>({
|
|
495
|
+
...query,
|
|
496
|
+
where: {
|
|
497
|
+
...query.where,
|
|
498
|
+
documentId,
|
|
499
|
+
publishedAt: {
|
|
500
|
+
$ne: null
|
|
501
|
+
}
|
|
480
502
|
}
|
|
481
|
-
}
|
|
503
|
+
}))(params);
|
|
482
504
|
// Delete all published versions
|
|
483
505
|
const versionsToDelete = await strapi.db.query(uid).findMany(query$1);
|
|
484
506
|
await strapiUtils.async.map(versionsToDelete, (entry)=>entries$1.delete(entry.id));
|
|
@@ -490,6 +512,7 @@ const createContentTypeRepository = (uid, validator = index)=>{
|
|
|
490
512
|
}
|
|
491
513
|
async function discardDraft(opts = {}) {
|
|
492
514
|
const { documentId, ...params } = opts;
|
|
515
|
+
assertDocumentIdProvided(documentId, 'discard the draft of');
|
|
493
516
|
const queryParams = await strapiUtils.async.pipe(validateParams, internationalization.defaultLocale(contentType), internationalization.multiLocaleToLookup(contentType))(params);
|
|
494
517
|
const [versionsToDraft, oldDrafts] = await Promise.all([
|
|
495
518
|
strapi.db.query(uid).findMany({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { omit, assoc, curry, isEmpty, pick } from 'lodash/fp';\n\nimport {\n async,\n contentTypes as contentTypesUtils,\n validate,\n errors,\n createModelCache,\n} from '@strapi/utils';\n\nimport type { UID, Modules } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { copyNonLocalizedFields } from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { ALLOWED_DOCUMENT_ROOT_PARAM_KEYS, pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport * as selfReferentialRelations from './utils/self-referential-relations';\nimport entityValidator from '../entity-validator';\nimport { addFirstPublishedAtToDraft, filterDataFirstPublishedAt } from './first-published-at';\nimport { runParallelWithOrderedErrors } from './utils/ordered-parallel';\nimport { copyCloneRelationRows, prepareCloneData } from './utils/clone-relations';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\n// config.api.documents.strictParams: false/undefined (pass through), true (throw on invalid)\n\n// BCP 47–style locale format: 2–3 letter language code (any case), optional subtags (-XX or -XXX...), max 35 chars\nconst LOCALE_FORMAT = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/;\nconst MAX_LOCALE_LENGTH = 35;\n\n/** Treat as \"param not provided\": null, undefined, or empty string (e.g. from query/JSON). */\nconst isParamEmpty = (v: unknown): boolean => v === undefined || v === null || v === '';\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n /**\n * Checks status parameter. When strict is true, throws on invalid status.\n * Valid values are 'published' and 'draft'; for types without D&P they are currently ignored but may throw in the future\n */\n const checkStatus = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n if (isParamEmpty(params.status)) {\n delete params.status;\n return params;\n }\n\n if (params.status !== 'published' && params.status !== 'draft') {\n throw new errors.ValidationError(\n `Invalid parameter at 'status'. Expected 'published' or 'draft', received: ${params.status}`\n );\n }\n\n return params;\n };\n\n /**\n * Checks locale parameter. When strict is true, throws on invalid locale value.\n * Accepts only: string (single locale or '*'), array of locale strings (e.g. bulk publish),\n * empty string, null, or undefined (removed but allowed)\n */\n const checkLocale = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n if (isParamEmpty(params.locale)) {\n delete params.locale;\n return params;\n }\n\n // Reject objects (we only accept string, array of strings, empty string, null, undefined)\n if (typeof params.locale === 'object' && !Array.isArray(params.locale)) {\n throw new errors.ValidationError(\n `Invalid parameter at 'locale'. Expected a string, array of strings, empty string, null, or undefined; received: object`,\n { received: params.locale }\n );\n }\n\n const validateAndNormalizeOne = (value: unknown, path: string): string => {\n if (typeof value !== 'string') {\n throw new errors.ValidationError(\n `Invalid parameter at '${path}'. Expected a string, received: ${typeof value}`,\n { received: value }\n );\n }\n if (value === '*') return value;\n const isEmpty = value.length === 0;\n const tooLong = value.length > MAX_LOCALE_LENGTH;\n const invalidFormat = !LOCALE_FORMAT.test(value);\n if (isEmpty || tooLong || invalidFormat) {\n let reason: string;\n if (isEmpty) {\n reason = 'Locale cannot be empty';\n } else if (tooLong) {\n reason = `Locale exceeds maximum length of ${MAX_LOCALE_LENGTH} characters`;\n } else {\n reason = 'Locale must be a valid BCP 47 format (e.g. en, en-US, zh-Hans)';\n }\n throw new errors.ValidationError(`Invalid parameter at '${path}'. ${reason}.`);\n }\n return value;\n };\n\n if (Array.isArray(params.locale)) {\n const filtered = (params.locale as unknown[]).filter(\n (item): item is string => typeof item === 'string' && !isParamEmpty(item)\n );\n if (filtered.length === 0) {\n delete params.locale;\n return params;\n }\n params.locale = filtered.map((item, i) => validateAndNormalizeOne(item, `locale[${i}]`));\n return params;\n }\n\n params.locale = validateAndNormalizeOne(params.locale, 'locale');\n return params;\n };\n\n /**\n * Pagination param parsing (used only when strict).\n * Contract: empty (null/undefined/'') → undefined (omit from result).\n * present but invalid → throw ValidationError.\n * present and valid → return normalized value.\n */\n const parsePaginationInt = (\n name: string,\n value: unknown,\n strict: boolean,\n spec: { min: number; allowMinusOne?: boolean }\n ): number | undefined => {\n if (isParamEmpty(value)) return undefined;\n const num = Number(value);\n const valid =\n Number.isInteger(num) && (num >= spec.min || (spec.allowMinusOne === true && num === -1));\n if (!valid && strict) {\n const expected = spec.allowMinusOne\n ? `integer >= ${spec.min} or -1`\n : `integer >= ${spec.min}`;\n throw new errors.ValidationError(\n `Invalid parameter at '${name}'. Expected ${expected}, received: ${value}`\n );\n }\n return valid ? num : undefined;\n };\n\n const parseWithCount = (value: unknown): boolean | undefined => {\n if (isParamEmpty(value)) return undefined;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string' && (value === 'true' || value === 'false'))\n return value === 'true';\n throw new errors.ValidationError(\n `Invalid parameter at 'withCount'. Expected a boolean, received: ${typeof value}`\n );\n };\n\n const PAGINATION_KEYS = ['page', 'pageSize', 'start', 'limit', 'withCount'] as const;\n\n /**\n * When strict: empty → omit, invalid → throw, valid → include.\n * When not strict: return params unchanged.\n */\n const checkPagination = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) return params;\n\n const hasPage = !isParamEmpty(params.page) || !isParamEmpty(params.pageSize);\n const hasOffset = !isParamEmpty(params.start) || !isParamEmpty(params.limit);\n if (hasPage && hasOffset) {\n throw new errors.ValidationError(\n 'Invalid pagination parameters. Cannot use both page-based (page, pageSize) and offset-based (start, limit) pagination in the same query.'\n );\n }\n\n const page = parsePaginationInt('page', params.page, strict, { min: 1 });\n const pageSize = parsePaginationInt('pageSize', params.pageSize, strict, { min: 1 });\n const start = parsePaginationInt('start', params.start, strict, { min: 0 });\n const limit = parsePaginationInt('limit', params.limit, strict, {\n min: 1,\n allowMinusOne: true,\n });\n const withCount = parseWithCount(params.withCount);\n\n const result = { ...omit(PAGINATION_KEYS, params) };\n if (page !== undefined) result.page = page;\n if (pageSize !== undefined) result.pageSize = pageSize;\n if (start !== undefined) result.start = start;\n if (limit !== undefined) result.limit = limit;\n if (withCount !== undefined) result.withCount = withCount;\n return result;\n };\n\n /**\n * When strict is true, strip to allowed root-level keys so only those reach the query.\n * Extra params (e.g. from content API addQueryParams) are allowed in so middlewares see them,\n * but are stripped here before the query pipeline; they never affect the document query.\n */\n const checkUnrecognizedRootParams = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n return pick(ALLOWED_DOCUMENT_ROOT_PARAM_KEYS as unknown as string[], params) as Record<\n string,\n unknown\n >;\n };\n\n const validateParams = async (\n params: Modules.Documents.Params.All\n ): Promise<Modules.Documents.Params.All> => {\n // Cache model lookups for this request to avoid repeating the same work\n const modelCache = createModelCache(getModel);\n\n const ctx = { schema: contentType, getModel: modelCache.getModel };\n\n // Only validate what is actually provided\n const validations: Promise<unknown>[] = [];\n\n if (params.filters && !isEmpty(params.filters)) {\n validations.push(validators.validateFilters(ctx, params.filters, filtersValidations));\n }\n\n if (params.sort && !isEmpty(params.sort)) {\n validations.push(validators.validateSort(ctx, params.sort, sortValidations));\n }\n\n if (params.fields && !isEmpty(params.fields)) {\n validations.push(validators.validateFields(ctx, params.fields, fieldValidations));\n }\n\n if (params.populate && !isEmpty(params.populate)) {\n validations.push(validators.validatePopulate(ctx, params.populate, populateValidations));\n }\n\n // Run validations together but keep the same error order as before\n await runParallelWithOrderedErrors(validations);\n\n // Clean up cache after validation\n modelCache.clear();\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // Validate status, locale, and pagination based on config\n // config.api.documents.strictParams: false/undefined (pass through), true (throw on invalid)\n const rawStrictParams: unknown = strapi.config.get('api.documents.strictParams', undefined);\n\n if (rawStrictParams !== undefined && rawStrictParams !== false && rawStrictParams !== true) {\n throw new errors.ValidationError(\n `Invalid config.api.documents.strictParams value: \"${rawStrictParams}\". Expected boolean (true or false).`\n );\n }\n\n const strict = rawStrictParams === true;\n\n let processedParams: Record<string, unknown>;\n if (strict) {\n processedParams = checkUnrecognizedRootParams(params as Record<string, unknown>, strict);\n processedParams = checkStatus(processedParams, strict);\n processedParams = checkLocale(processedParams, strict);\n processedParams = checkPagination(processedParams, strict);\n } else {\n processedParams = params as Record<string, unknown>;\n }\n\n return processedParams as Modules.Documents.Params.All;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const lookupQuery = await async.pipe(\n validateParams,\n omit('status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId }, query)\n )(params);\n\n const selectionQuery = await async.pipe(\n validateParams,\n omit('status'),\n pickSelectionParams,\n transformParamsToQuery(uid)\n )(params);\n\n if (hasDraftAndPublish && params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(lookupQuery);\n\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id, selectionQuery)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId: _documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const newDocumentId = createDocumentId();\n\n const clonedEntries = await async.map(\n entriesToClone,\n async (entryToClone: Record<string, unknown>) => {\n const sourceEntryId = entryToClone.id as number;\n const originalData = omit(['id', 'createdAt', 'updatedAt'], entryToClone) as Record<\n string,\n unknown\n >;\n const { data, relationsToCopy } = await prepareCloneData(\n originalData,\n queryParams.data,\n contentType,\n (modelUid) => strapi.getModel(modelUid as UID.Schema)\n );\n const dataWithDocumentId = assoc('documentId', newDocumentId, data);\n const doc = await entries.create({\n ...queryParams,\n data: dataWithDocumentId,\n status: 'draft',\n });\n\n await copyCloneRelationRows(strapi, uid, sourceEntryId, doc.id, relationsToCopy);\n\n if (relationsToCopy.length === 0) {\n return doc;\n }\n\n const selectionQuery = transformParamsToQuery(\n uid,\n pickSelectionParams({ ...queryParams, status: 'draft' }) as any\n );\n\n return strapi.db.query(uid).findOne({ ...selectionQuery, where: { id: doc.id } });\n }\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n filterDataFirstPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data: _data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n const mergedData = await copyNonLocalizedFields(contentType, documentId, {\n ...queryParams.data,\n documentId,\n });\n\n updatedDraft = await entries.create({\n ...queryParams,\n data: mergedData,\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(\n uid,\n {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n },\n {\n shouldPropagateRelation: components.createComponentRelationFilter(),\n }\n );\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const selfRelationsToSync = await selfReferentialRelations.load(\n uid,\n draftsToPublish,\n 'published'\n );\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Add firstPublishedAt to draft if it doesn't exist\n const updatedDraft = await async.map(draftsToPublish, (draft: any) =>\n addFirstPublishedAtToDraft(draft, entries.update, contentType)\n );\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(updatedDraft, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n // Map both old published IDs and updated draft IDs to the new published entries.\n await selfReferentialRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n selfRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => assoc('where', { ...query.where, documentId, publishedAt: { $ne: null } }, query)\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(\n uid,\n {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n },\n {\n shouldPropagateRelation: components.createComponentRelationFilter(),\n }\n );\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const selfRelationsToSync = await selfReferentialRelations.load(uid, versionsToDraft, 'draft');\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n // Map both old draft IDs and published source IDs to the new draft entries.\n await selfReferentialRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n selfRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","LOCALE_FORMAT","MAX_LOCALE_LENGTH","isParamEmpty","v","undefined","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","checkStatus","params","strict","status","errors","ValidationError","checkLocale","locale","Array","isArray","received","validateAndNormalizeOne","value","path","isEmpty","length","tooLong","invalidFormat","test","reason","filtered","filter","item","map","i","parsePaginationInt","name","spec","num","Number","valid","isInteger","min","allowMinusOne","expected","parseWithCount","PAGINATION_KEYS","checkPagination","hasPage","page","pageSize","hasOffset","start","limit","withCount","result","omit","checkUnrecognizedRootParams","pick","ALLOWED_DOCUMENT_ROOT_PARAM_KEYS","validateParams","modelCache","createModelCache","ctx","validations","push","validateFilters","validateSort","fields","validateFields","validatePopulate","runParallelWithOrderedErrors","clear","lookup","rawStrictParams","config","get","processedParams","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","documentId","assoc","where","deleteDocument","lookupQuery","selectionQuery","pickSelectionParams","Error","entriesToDelete","deletedEntries","entryToDelete","delete","id","forEach","create","_documentId","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","newDocumentId","createDocumentId","clonedEntries","entryToClone","sourceEntryId","originalData","data","relationsToCopy","prepareCloneData","modelUid","dataWithDocumentId","copyCloneRelationRows","at","update","filterDataFirstPublishedAt","_data","restParams","entryToUpdate","updatedDraft","documentExists","mergedData","copyNonLocalizedFields","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","shouldPropagateRelation","components","bidirectionalRelationsToSync","bidirectionalRelations","selfRelationsToSync","selfReferentialRelations","entry","draft","addFirstPublishedAtToDraft","publishedEntries","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","omitComponentData","wrapInTransaction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repository.js","sources":["../../../src/services/document-service/repository.ts"],"sourcesContent":["import { curry, isEmpty, omit, pick } from 'lodash';\n\nimport {\n async,\n contentTypes as contentTypesUtils,\n validate,\n errors,\n createModelCache,\n} from '@strapi/utils';\n\nimport type { UID, Modules } from '@strapi/types';\nimport { wrapInTransaction, type RepositoryFactoryMethod } from './common';\nimport * as DP from './draft-and-publish';\nimport * as i18n from './internationalization';\nimport { copyNonLocalizedFields } from './internationalization';\nimport * as components from './components';\n\nimport { createEntriesService } from './entries';\nimport { ALLOWED_DOCUMENT_ROOT_PARAM_KEYS, isParamEmpty, pickSelectionParams } from './params';\nimport { createDocumentId } from '../../utils/transform-content-types-to-models';\nimport { getDeepPopulate } from './utils/populate';\nimport { transformParamsToQuery } from './transform/query';\nimport { transformParamsDocumentId } from './transform/id-transform';\nimport { createEventManager } from './events';\nimport * as unidirectionalRelations from './utils/unidirectional-relations';\nimport * as bidirectionalRelations from './utils/bidirectional-relations';\nimport * as selfReferentialRelations from './utils/self-referential-relations';\nimport entityValidator from '../entity-validator';\nimport { addFirstPublishedAtToDraft, filterDataFirstPublishedAt } from './first-published-at';\nimport { runParallelWithOrderedErrors } from './utils/ordered-parallel';\nimport { copyCloneRelationRows, prepareCloneData } from './utils/clone-relations';\n\nconst { validators } = validate;\n\n// we have to typecast to reconcile the differences between validator and database getModel\nconst getModel = ((schema: UID.Schema) => strapi.getModel(schema)) as (schema: string) => any;\n\n// config.api.documents.strictParams: false/undefined (pass through), true (throw on invalid)\n\n// BCP 47–style locale format: 2–3 letter language code (any case), optional subtags (-XX or -XXX...), max 35 chars\nconst LOCALE_FORMAT = /^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/;\nconst MAX_LOCALE_LENGTH = 35;\n\n/**\n * Publication actions look up every row matching `documentId`. An empty value would match\n * all rows whose document_id is NULL (or '') — rows left behind by a past bug — and\n * publish/discard them as if they were a single document, so reject it outright.\n */\nconst assertDocumentIdProvided = (documentId: unknown, action: string) => {\n if (isParamEmpty(documentId)) {\n throw new errors.ValidationError(`Cannot ${action} a document without a documentId`);\n }\n};\n\nexport const createContentTypeRepository: RepositoryFactoryMethod = (\n uid,\n validator = entityValidator\n) => {\n const contentType = strapi.contentType(uid);\n const hasDraftAndPublish = contentTypesUtils.hasDraftAndPublish(contentType);\n\n // Define the validations that should be performed\n const sortValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const fieldValidations = ['scalarAttributes'];\n const filtersValidations = ['nonAttributesOperators', 'dynamicZones', 'morphRelations'];\n const populateValidations = {\n sort: sortValidations,\n field: fieldValidations,\n filters: filtersValidations,\n populate: ['nonAttributesOperators'],\n };\n\n /**\n * Checks status parameter. When strict is true, throws on invalid status.\n * Valid values are 'published' and 'draft'; for types without D&P they are currently ignored but may throw in the future\n */\n const checkStatus = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n if (isParamEmpty(params.status)) {\n delete params.status;\n return params;\n }\n\n if (params.status !== 'published' && params.status !== 'draft') {\n throw new errors.ValidationError(\n `Invalid parameter at 'status'. Expected 'published' or 'draft', received: ${params.status}`\n );\n }\n\n return params;\n };\n\n /**\n * Checks locale parameter. When strict is true, throws on invalid locale value.\n * Accepts only: string (single locale or '*'), array of locale strings (e.g. bulk publish),\n * empty string, null, or undefined (removed but allowed)\n */\n const checkLocale = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n if (isParamEmpty(params.locale)) {\n delete params.locale;\n return params;\n }\n\n // Reject objects (we only accept string, array of strings, empty string, null, undefined)\n if (typeof params.locale === 'object' && !Array.isArray(params.locale)) {\n throw new errors.ValidationError(\n `Invalid parameter at 'locale'. Expected a string, array of strings, empty string, null, or undefined; received: object`,\n { received: params.locale }\n );\n }\n\n const validateAndNormalizeOne = (value: unknown, path: string): string => {\n if (typeof value !== 'string') {\n throw new errors.ValidationError(\n `Invalid parameter at '${path}'. Expected a string, received: ${typeof value}`,\n { received: value }\n );\n }\n if (value === '*') return value;\n const isEmpty = value.length === 0;\n const tooLong = value.length > MAX_LOCALE_LENGTH;\n const invalidFormat = !LOCALE_FORMAT.test(value);\n if (isEmpty || tooLong || invalidFormat) {\n let reason: string;\n if (isEmpty) {\n reason = 'Locale cannot be empty';\n } else if (tooLong) {\n reason = `Locale exceeds maximum length of ${MAX_LOCALE_LENGTH} characters`;\n } else {\n reason = 'Locale must be a valid BCP 47 format (e.g. en, en-US, zh-Hans)';\n }\n throw new errors.ValidationError(`Invalid parameter at '${path}'. ${reason}.`);\n }\n return value;\n };\n\n if (Array.isArray(params.locale)) {\n const filtered = (params.locale as unknown[]).filter(\n (item): item is string => typeof item === 'string' && !isParamEmpty(item)\n );\n if (filtered.length === 0) {\n delete params.locale;\n return params;\n }\n params.locale = filtered.map((item, i) => validateAndNormalizeOne(item, `locale[${i}]`));\n return params;\n }\n\n params.locale = validateAndNormalizeOne(params.locale, 'locale');\n return params;\n };\n\n /**\n * Pagination param parsing (used only when strict).\n * Contract: empty (null/undefined/'') → undefined (omit from result).\n * present but invalid → throw ValidationError.\n * present and valid → return normalized value.\n */\n const parsePaginationInt = (\n name: string,\n value: unknown,\n strict: boolean,\n spec: { min: number; allowMinusOne?: boolean }\n ): number | undefined => {\n if (isParamEmpty(value)) return undefined;\n const num = Number(value);\n const valid =\n Number.isInteger(num) && (num >= spec.min || (spec.allowMinusOne === true && num === -1));\n if (!valid && strict) {\n const expected = spec.allowMinusOne\n ? `integer >= ${spec.min} or -1`\n : `integer >= ${spec.min}`;\n throw new errors.ValidationError(\n `Invalid parameter at '${name}'. Expected ${expected}, received: ${value}`\n );\n }\n return valid ? num : undefined;\n };\n\n const parseWithCount = (value: unknown): boolean | undefined => {\n if (isParamEmpty(value)) return undefined;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string' && (value === 'true' || value === 'false'))\n return value === 'true';\n throw new errors.ValidationError(\n `Invalid parameter at 'withCount'. Expected a boolean, received: ${typeof value}`\n );\n };\n\n const PAGINATION_KEYS = ['page', 'pageSize', 'start', 'limit', 'withCount'] as const;\n\n /**\n * When strict: empty → omit, invalid → throw, valid → include.\n * When not strict: return params unchanged.\n */\n const checkPagination = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) return params;\n\n const hasPage = !isParamEmpty(params.page) || !isParamEmpty(params.pageSize);\n const hasOffset = !isParamEmpty(params.start) || !isParamEmpty(params.limit);\n if (hasPage && hasOffset) {\n throw new errors.ValidationError(\n 'Invalid pagination parameters. Cannot use both page-based (page, pageSize) and offset-based (start, limit) pagination in the same query.'\n );\n }\n\n const page = parsePaginationInt('page', params.page, strict, { min: 1 });\n const pageSize = parsePaginationInt('pageSize', params.pageSize, strict, { min: 1 });\n const start = parsePaginationInt('start', params.start, strict, { min: 0 });\n const limit = parsePaginationInt('limit', params.limit, strict, {\n min: 1,\n allowMinusOne: true,\n });\n const withCount = parseWithCount(params.withCount);\n\n const result = { ...omit(params, PAGINATION_KEYS) };\n if (page !== undefined) result.page = page;\n if (pageSize !== undefined) result.pageSize = pageSize;\n if (start !== undefined) result.start = start;\n if (limit !== undefined) result.limit = limit;\n if (withCount !== undefined) result.withCount = withCount;\n return result;\n };\n\n /**\n * When strict is true, strip to allowed root-level keys so only those reach the query.\n * Extra params (e.g. from content API addQueryParams) are allowed in so middlewares see them,\n * but are stripped here before the query pipeline; they never affect the document query.\n */\n const checkUnrecognizedRootParams = (\n params: Record<string, unknown>,\n strict: boolean\n ): Record<string, unknown> => {\n if (!strict) {\n return params;\n }\n\n return pick(params, ALLOWED_DOCUMENT_ROOT_PARAM_KEYS as unknown as string[]) as Record<\n string,\n unknown\n >;\n };\n\n const validateParams = async (\n params: Modules.Documents.Params.All\n ): Promise<Modules.Documents.Params.All> => {\n // Cache model lookups for this request to avoid repeating the same work\n const modelCache = createModelCache(getModel);\n\n const ctx = { schema: contentType, getModel: modelCache.getModel };\n\n // Only validate what is actually provided\n const validations: Promise<unknown>[] = [];\n\n if (params.filters && !isEmpty(params.filters)) {\n validations.push(validators.validateFilters(ctx, params.filters, filtersValidations));\n }\n\n if (params.sort && !isEmpty(params.sort)) {\n validations.push(validators.validateSort(ctx, params.sort, sortValidations));\n }\n\n if (params.fields && !isEmpty(params.fields)) {\n validations.push(validators.validateFields(ctx, params.fields, fieldValidations));\n }\n\n if (params.populate && !isEmpty(params.populate)) {\n validations.push(validators.validatePopulate(ctx, params.populate, populateValidations));\n }\n\n // Run validations together but keep the same error order as before\n await runParallelWithOrderedErrors(validations);\n\n // Clean up cache after validation\n modelCache.clear();\n\n // Strip lookup from params, it's only used internally\n if (params.lookup) {\n throw new errors.ValidationError(\"Invalid params: 'lookup'\");\n }\n\n // Validate status, locale, and pagination based on config\n // config.api.documents.strictParams: false/undefined (pass through), true (throw on invalid)\n const rawStrictParams: unknown = strapi.config.get('api.documents.strictParams', undefined);\n\n if (rawStrictParams !== undefined && rawStrictParams !== false && rawStrictParams !== true) {\n throw new errors.ValidationError(\n `Invalid config.api.documents.strictParams value: \"${rawStrictParams}\". Expected boolean (true or false).`\n );\n }\n\n const strict = rawStrictParams === true;\n\n let processedParams: Record<string, unknown>;\n if (strict) {\n processedParams = checkUnrecognizedRootParams(params as Record<string, unknown>, strict);\n processedParams = checkStatus(processedParams, strict);\n processedParams = checkLocale(processedParams, strict);\n processedParams = checkPagination(processedParams, strict);\n } else {\n processedParams = params as Record<string, unknown>;\n }\n\n return processedParams as Modules.Documents.Params.All;\n };\n\n const entries = createEntriesService(uid, validator);\n\n const eventManager = createEventManager(strapi, uid);\n const emitEvent = curry(eventManager.emitEvent);\n\n async function findMany(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params || {});\n\n return strapi.db.query(uid).findMany(query);\n }\n\n async function findFirst(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n // TODO: do we really want to add filters on the findOne now that we have findFirst ?\n async function findOne(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const query = await async.pipe(\n validateParams,\n DP.defaultToDraft,\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n transformParamsDocumentId(uid),\n transformParamsToQuery(uid),\n (query) => ({ ...query, where: { ...query.where, documentId } })\n )(params);\n\n return strapi.db.query(uid).findOne(query);\n }\n\n async function deleteDocument(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const lookupQuery = await async.pipe(\n validateParams,\n (value) => omit(value, 'status'),\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => ({ ...query, where: { ...query.where, documentId } })\n )(params);\n\n const selectionQuery = await async.pipe(\n validateParams,\n (value) => omit(value, 'status'),\n pickSelectionParams,\n transformParamsToQuery(uid)\n )(params);\n\n if (hasDraftAndPublish && params.status === 'draft') {\n throw new Error('Cannot delete a draft document');\n }\n\n const entriesToDelete = await strapi.db.query(uid).findMany(lookupQuery);\n\n const deletedEntries = await async.map(entriesToDelete, (entryToDelete: any) =>\n entries.delete(entryToDelete.id, selectionQuery)\n );\n\n entriesToDelete.forEach(emitEvent('entry.delete'));\n\n return { documentId, entries: deletedEntries };\n }\n\n async function create(opts = {} as any) {\n const { documentId: _documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToData(contentType),\n i18n.defaultLocale(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const doc = await entries.create(queryParams);\n\n emitEvent('entry.create', doc);\n\n if (hasDraftAndPublish && params.status === 'published') {\n return publish({\n ...params,\n documentId: doc.documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return doc;\n }\n\n async function clone(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n // Get deep populate\n const entriesToClone = await strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n // DP Enabled: Clone drafts\n // DP Disabled: Clone only the existing version (published)\n publishedAt: { $null: hasDraftAndPublish },\n },\n populate: getDeepPopulate(uid, { relationalFields: ['id'] }),\n });\n\n const newDocumentId = createDocumentId();\n\n const clonedEntries = await async.map(\n entriesToClone,\n async (entryToClone: Record<string, unknown>) => {\n const sourceEntryId = entryToClone.id as number;\n const originalData = omit(entryToClone, ['id', 'createdAt', 'updatedAt']) as Record<\n string,\n unknown\n >;\n const { data, relationsToCopy } = await prepareCloneData(\n originalData,\n queryParams.data,\n contentType,\n (modelUid) => strapi.getModel(modelUid as UID.Schema)\n );\n const dataWithDocumentId = { ...data, documentId: newDocumentId };\n const doc = await entries.create({\n ...queryParams,\n data: dataWithDocumentId,\n status: 'draft',\n });\n\n await copyCloneRelationRows(strapi, uid, sourceEntryId, doc.id, relationsToCopy);\n\n if (relationsToCopy.length === 0) {\n return doc;\n }\n\n const selectionQuery = transformParamsToQuery(\n uid,\n pickSelectionParams({ ...queryParams, status: 'draft' }) as any\n );\n\n return strapi.db.query(uid).findOne({ ...selectionQuery, where: { id: doc.id } });\n }\n );\n\n clonedEntries.forEach(emitEvent('entry.create'));\n\n return { documentId: clonedEntries.at(0)?.documentId, entries: clonedEntries };\n }\n\n async function update(opts = {} as any) {\n const { documentId, ...params } = opts;\n\n const queryParams = await async.pipe(\n validateParams,\n DP.filterDataPublishedAt,\n filterDataFirstPublishedAt,\n DP.setStatusToDraft(contentType),\n DP.statusToLookup(contentType),\n DP.statusToData(contentType),\n // Default locale will be set if not provided\n i18n.defaultLocale(contentType),\n i18n.localeToLookup(contentType),\n i18n.localeToData(contentType)\n )(params);\n\n const { data: _data, ...restParams } = await transformParamsDocumentId(uid, queryParams || {});\n const query = transformParamsToQuery(uid, pickSelectionParams(restParams || {}) as any);\n\n // Validation\n // Find if document exists\n const entryToUpdate = await strapi.db\n .query(uid)\n .findOne({ ...query, where: { ...queryParams?.lookup, ...query?.where, documentId } });\n\n let updatedDraft = null;\n if (entryToUpdate) {\n updatedDraft = await entries.update(entryToUpdate, queryParams);\n emitEvent('entry.update', updatedDraft);\n }\n\n if (!updatedDraft) {\n const documentExists = await strapi.db\n .query(contentType.uid)\n .findOne({ where: { documentId } });\n\n if (documentExists) {\n const mergedData = await copyNonLocalizedFields(contentType, documentId, {\n ...queryParams.data,\n documentId,\n });\n\n updatedDraft = await entries.create({\n ...queryParams,\n data: mergedData,\n });\n emitEvent('entry.create', updatedDraft);\n }\n }\n\n if (hasDraftAndPublish && updatedDraft && params.status === 'published') {\n return publish({\n ...params,\n documentId,\n }).then((doc) => doc.entries[0]);\n }\n\n return updatedDraft;\n }\n\n async function count(params = {} as any) {\n const query = await async.pipe(\n validateParams,\n DP.defaultStatus(contentType),\n DP.statusToLookup(contentType),\n\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid)\n )(params);\n\n return strapi.db.query(uid).count(query);\n }\n\n async function publish(opts = {} as any) {\n const { documentId, ...params } = opts;\n assertDocumentIdProvided(documentId, 'publish');\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [draftsToPublish, oldPublishedVersions] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null, // Ignore lookup\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targetting the old published entries\n const relationsToSync = await unidirectionalRelations.load(\n uid,\n {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n },\n {\n shouldPropagateRelation: components.createComponentRelationFilter(),\n }\n );\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: draftsToPublish,\n oldVersions: oldPublishedVersions,\n });\n\n const selfRelationsToSync = await selfReferentialRelations.load(\n uid,\n draftsToPublish,\n 'published'\n );\n\n // Delete old published versions\n await async.map(oldPublishedVersions, (entry: any) => entries.delete(entry.id));\n\n // Add firstPublishedAt to draft if it doesn't exist\n const updatedDraft = await async.map(draftsToPublish, (draft: any) =>\n addFirstPublishedAtToDraft(draft, entries.update, contentType)\n );\n\n // Transform draft entry data and create published versions\n const publishedEntries = await async.map(updatedDraft, (draft: any) =>\n entries.publish(draft, queryParams)\n );\n\n // Sync unidirectional relations with the new published entries\n await unidirectionalRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n bidirectionalRelationsToSync\n );\n\n // Map both old published IDs and updated draft IDs to the new published entries.\n await selfReferentialRelations.sync(\n [...oldPublishedVersions, ...updatedDraft],\n publishedEntries,\n selfRelationsToSync\n );\n\n publishedEntries.forEach(emitEvent('entry.publish'));\n\n return { documentId, entries: publishedEntries };\n }\n\n async function unpublish(opts = {} as any) {\n const { documentId, ...params } = opts;\n assertDocumentIdProvided(documentId, 'unpublish');\n\n const query = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType),\n transformParamsToQuery(uid),\n (query) => ({ ...query, where: { ...query.where, documentId, publishedAt: { $ne: null } } })\n )(params);\n\n // Delete all published versions\n const versionsToDelete = await strapi.db.query(uid).findMany(query);\n await async.map(versionsToDelete, (entry: any) => entries.delete(entry.id));\n\n versionsToDelete.forEach(emitEvent('entry.unpublish'));\n return { documentId, entries: versionsToDelete };\n }\n\n async function discardDraft(opts = {} as any) {\n const { documentId, ...params } = opts;\n assertDocumentIdProvided(documentId, 'discard the draft of');\n\n const queryParams = await async.pipe(\n validateParams,\n i18n.defaultLocale(contentType),\n i18n.multiLocaleToLookup(contentType)\n )(params);\n\n const [versionsToDraft, oldDrafts] = await Promise.all([\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: { $ne: null },\n },\n // Populate relations, media, compos and dz\n populate: getDeepPopulate(uid, { relationalFields: ['documentId', 'locale'] }),\n }),\n strapi.db.query(uid).findMany({\n where: {\n ...queryParams?.lookup,\n documentId,\n publishedAt: null,\n },\n select: ['id', 'locale'],\n }),\n ]);\n\n // Load any unidirectional relation targeting the old drafts\n const relationsToSync = await unidirectionalRelations.load(\n uid,\n {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n },\n {\n shouldPropagateRelation: components.createComponentRelationFilter(),\n }\n );\n\n const bidirectionalRelationsToSync = await bidirectionalRelations.load(uid, {\n newVersions: versionsToDraft,\n oldVersions: oldDrafts,\n });\n\n const selfRelationsToSync = await selfReferentialRelations.load(uid, versionsToDraft, 'draft');\n\n // Delete old drafts\n await async.map(oldDrafts, (entry: any) => entries.delete(entry.id));\n\n // Transform published entry data and create draft versions\n const draftEntries = await async.map(versionsToDraft, (entry: any) =>\n entries.discardDraft(entry, queryParams)\n );\n\n // Sync unidirectional relations with the new draft entries\n await unidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n relationsToSync\n );\n\n await bidirectionalRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n bidirectionalRelationsToSync\n );\n\n // Map both old draft IDs and published source IDs to the new draft entries.\n await selfReferentialRelations.sync(\n [...oldDrafts, ...versionsToDraft],\n draftEntries,\n selfRelationsToSync\n );\n\n draftEntries.forEach(emitEvent('entry.draft-discard'));\n return { documentId, entries: draftEntries };\n }\n\n async function updateComponents(entry: any, data: any) {\n return components.updateComponents(uid, entry, data);\n }\n\n function omitComponentData(data: any) {\n return components.omitComponentData(contentType, data);\n }\n\n return {\n findMany: wrapInTransaction(findMany),\n findFirst: wrapInTransaction(findFirst),\n findOne: wrapInTransaction(findOne),\n delete: wrapInTransaction(deleteDocument),\n create: wrapInTransaction(create),\n clone: wrapInTransaction(clone),\n update: wrapInTransaction(update),\n count: wrapInTransaction(count),\n publish: hasDraftAndPublish ? wrapInTransaction(publish) : (undefined as any),\n unpublish: hasDraftAndPublish ? wrapInTransaction(unpublish) : (undefined as any),\n discardDraft: hasDraftAndPublish ? wrapInTransaction(discardDraft) : (undefined as any),\n\n updateComponents,\n omitComponentData,\n };\n};\n"],"names":["validators","validate","getModel","schema","strapi","LOCALE_FORMAT","MAX_LOCALE_LENGTH","assertDocumentIdProvided","documentId","action","isParamEmpty","errors","ValidationError","createContentTypeRepository","uid","validator","entityValidator","contentType","hasDraftAndPublish","contentTypesUtils","sortValidations","fieldValidations","filtersValidations","populateValidations","sort","field","filters","populate","checkStatus","params","strict","status","checkLocale","locale","Array","isArray","received","validateAndNormalizeOne","value","path","isEmpty","length","tooLong","invalidFormat","test","reason","filtered","filter","item","map","i","parsePaginationInt","name","spec","undefined","num","Number","valid","isInteger","min","allowMinusOne","expected","parseWithCount","PAGINATION_KEYS","checkPagination","hasPage","page","pageSize","hasOffset","start","limit","withCount","result","omit","checkUnrecognizedRootParams","pick","ALLOWED_DOCUMENT_ROOT_PARAM_KEYS","validateParams","modelCache","createModelCache","ctx","validations","push","validateFilters","validateSort","fields","validateFields","validatePopulate","runParallelWithOrderedErrors","clear","lookup","rawStrictParams","config","get","processedParams","entries","createEntriesService","eventManager","createEventManager","emitEvent","curry","findMany","query","async","pipe","DP","i18n","transformParamsDocumentId","transformParamsToQuery","db","findFirst","findOne","opts","where","deleteDocument","lookupQuery","selectionQuery","pickSelectionParams","Error","entriesToDelete","deletedEntries","entryToDelete","delete","id","forEach","create","_documentId","queryParams","doc","publish","then","clone","entriesToClone","publishedAt","$null","getDeepPopulate","relationalFields","newDocumentId","createDocumentId","clonedEntries","entryToClone","sourceEntryId","originalData","data","relationsToCopy","prepareCloneData","modelUid","dataWithDocumentId","copyCloneRelationRows","at","update","filterDataFirstPublishedAt","_data","restParams","entryToUpdate","updatedDraft","documentExists","mergedData","copyNonLocalizedFields","count","draftsToPublish","oldPublishedVersions","Promise","all","$ne","select","relationsToSync","unidirectionalRelations","newVersions","oldVersions","shouldPropagateRelation","components","bidirectionalRelationsToSync","bidirectionalRelations","selfRelationsToSync","selfReferentialRelations","entry","draft","addFirstPublishedAtToDraft","publishedEntries","unpublish","versionsToDelete","discardDraft","versionsToDraft","oldDrafts","draftEntries","updateComponents","omitComponentData","wrapInTransaction"],"mappings":"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"}
|