@strapi/core 0.0.0-experimental.a407f3bc8fb79a53cf7975140864526b6ddbac4b → 0.0.0-experimental.baa6cf22298e591b4d52d8e59c60406d7a9f137f
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 +49 -58
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +148 -208
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +139 -200
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/config-loader.d.ts.map +1 -1
- package/dist/configuration/config-loader.js +9 -5
- package/dist/configuration/config-loader.js.map +1 -1
- package/dist/configuration/config-loader.mjs +9 -5
- package/dist/configuration/config-loader.mjs.map +1 -1
- package/dist/configuration/get-dirs.d.ts +10 -0
- package/dist/configuration/get-dirs.d.ts.map +1 -0
- package/dist/{utils → configuration}/get-dirs.js +3 -2
- package/dist/configuration/get-dirs.js.map +1 -0
- package/dist/{utils → configuration}/get-dirs.mjs +3 -2
- package/dist/configuration/get-dirs.mjs.map +1 -0
- package/dist/configuration/index.d.ts +4 -7
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +10 -8
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +6 -5
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/configuration/urls.d.ts +8 -0
- package/dist/configuration/urls.d.ts.map +1 -0
- package/dist/configuration/urls.js +68 -0
- package/dist/configuration/urls.js.map +1 -0
- package/dist/configuration/urls.mjs +66 -0
- package/dist/configuration/urls.mjs.map +1 -0
- package/dist/container.d.ts +2 -2
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/container.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts +3 -3
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/collection-type.js +3 -0
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs +3 -0
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.d.ts +3 -3
- package/dist/core-api/controller/index.d.ts.map +1 -1
- package/dist/core-api/controller/index.js +11 -6
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +12 -7
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.d.ts +3 -3
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.js +1 -0
- 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.d.ts +10 -9
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/controller/transform.js +19 -13
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +19 -13
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.d.ts +11 -17
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.js +18 -7
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs +19 -8
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/index.d.ts +3 -3
- package/dist/core-api/service/index.d.ts.map +1 -1
- package/dist/core-api/service/index.js.map +1 -1
- package/dist/core-api/service/index.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 +14 -40
- 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 +5 -5
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/core-api/service/single-type.js +12 -6
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +12 -6
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/domain/content-type/index.d.ts +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +3 -0
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs +3 -0
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/domain/content-type/validator.d.ts.map +1 -1
- package/dist/domain/content-type/validator.js +1 -1
- package/dist/domain/content-type/validator.js.map +1 -1
- package/dist/domain/content-type/validator.mjs +2 -2
- package/dist/domain/content-type/validator.mjs.map +1 -1
- package/dist/domain/module/index.d.ts +24 -23
- package/dist/domain/module/index.d.ts.map +1 -1
- package/dist/domain/module/index.js +3 -3
- package/dist/domain/module/index.js.map +1 -1
- package/dist/domain/module/index.mjs +4 -4
- package/dist/domain/module/index.mjs.map +1 -1
- package/dist/ee/index.d.ts +4 -2
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.d.ts +2 -2
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/ee/license.js +2 -1
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs +2 -1
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.d.ts +10 -10
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +6 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +6 -2
- package/dist/factories.mjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +27 -3
- package/dist/index.mjs.map +1 -1
- package/dist/loaders/admin.d.ts +2 -2
- package/dist/loaders/admin.d.ts.map +1 -1
- package/dist/loaders/admin.js +0 -1
- package/dist/loaders/admin.js.map +1 -1
- package/dist/loaders/admin.mjs +0 -1
- package/dist/loaders/admin.mjs.map +1 -1
- package/dist/loaders/apis.d.ts +2 -2
- package/dist/loaders/apis.d.ts.map +1 -1
- package/dist/loaders/apis.js +11 -11
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs +12 -12
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/components.d.ts +2 -2
- package/dist/loaders/components.d.ts.map +1 -1
- package/dist/loaders/components.js.map +1 -1
- package/dist/loaders/components.mjs.map +1 -1
- package/dist/loaders/index.d.ts +2 -2
- package/dist/loaders/index.d.ts.map +1 -1
- package/dist/loaders/index.js +0 -2
- package/dist/loaders/index.js.map +1 -1
- package/dist/loaders/index.mjs +0 -2
- package/dist/loaders/index.mjs.map +1 -1
- package/dist/loaders/middlewares.d.ts +2 -2
- package/dist/loaders/middlewares.d.ts.map +1 -1
- package/dist/loaders/middlewares.js.map +1 -1
- package/dist/loaders/middlewares.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts +2 -2
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +8 -6
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +9 -7
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/index.d.ts +2 -2
- package/dist/loaders/plugins/index.d.ts.map +1 -1
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/loaders/policies.d.ts +2 -2
- package/dist/loaders/policies.d.ts.map +1 -1
- package/dist/loaders/policies.js.map +1 -1
- package/dist/loaders/policies.mjs.map +1 -1
- package/dist/loaders/sanitizers.d.ts +2 -2
- package/dist/loaders/sanitizers.d.ts.map +1 -1
- package/dist/loaders/sanitizers.js.map +1 -1
- package/dist/loaders/sanitizers.mjs.map +1 -1
- package/dist/loaders/src-index.d.ts +2 -2
- package/dist/loaders/src-index.d.ts.map +1 -1
- package/dist/loaders/src-index.js.map +1 -1
- package/dist/loaders/src-index.mjs.map +1 -1
- package/dist/loaders/validators.d.ts +2 -2
- package/dist/loaders/validators.d.ts.map +1 -1
- package/dist/loaders/validators.js.map +1 -1
- package/dist/loaders/validators.mjs.map +1 -1
- package/dist/middlewares/body.d.ts +4 -4
- package/dist/middlewares/body.d.ts.map +1 -1
- package/dist/middlewares/body.js +4 -4
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs +4 -4
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/compression.d.ts +2 -2
- package/dist/middlewares/compression.d.ts.map +1 -1
- package/dist/middlewares/compression.js.map +1 -1
- package/dist/middlewares/compression.mjs.map +1 -1
- package/dist/middlewares/cors.d.ts +2 -2
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/middlewares/errors.d.ts +2 -2
- package/dist/middlewares/errors.d.ts.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.d.ts +2 -2
- package/dist/middlewares/favicon.d.ts.map +1 -1
- package/dist/middlewares/favicon.js.map +1 -1
- package/dist/middlewares/favicon.mjs.map +1 -1
- package/dist/middlewares/index.d.ts +2 -2
- package/dist/middlewares/index.d.ts.map +1 -1
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/middlewares/ip.d.ts +2 -2
- package/dist/middlewares/ip.d.ts.map +1 -1
- package/dist/middlewares/ip.js.map +1 -1
- package/dist/middlewares/ip.mjs.map +1 -1
- package/dist/middlewares/logger.d.ts +2 -2
- package/dist/middlewares/logger.d.ts.map +1 -1
- package/dist/middlewares/logger.js.map +1 -1
- package/dist/middlewares/logger.mjs.map +1 -1
- package/dist/middlewares/powered-by.d.ts +2 -2
- package/dist/middlewares/powered-by.d.ts.map +1 -1
- package/dist/middlewares/powered-by.js.map +1 -1
- package/dist/middlewares/powered-by.mjs.map +1 -1
- package/dist/middlewares/public.d.ts +2 -2
- package/dist/middlewares/public.d.ts.map +1 -1
- package/dist/middlewares/public.js +1 -1
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/public.mjs +1 -1
- package/dist/middlewares/public.mjs.map +1 -1
- package/dist/middlewares/query.d.ts +2 -2
- 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/response-time.d.ts +2 -2
- package/dist/middlewares/response-time.d.ts.map +1 -1
- package/dist/middlewares/response-time.js.map +1 -1
- package/dist/middlewares/response-time.mjs.map +1 -1
- package/dist/middlewares/responses.d.ts +3 -3
- package/dist/middlewares/responses.d.ts.map +1 -1
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.d.ts +2 -2
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +2 -2
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +2 -2
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.d.ts +2 -2
- package/dist/middlewares/session.d.ts.map +1 -1
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs.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 +17 -0
- package/dist/migrations/draft-publish.d.ts.map +1 -0
- package/dist/migrations/draft-publish.js +42 -0
- package/dist/migrations/draft-publish.js.map +1 -0
- package/dist/migrations/draft-publish.mjs +42 -0
- package/dist/migrations/draft-publish.mjs.map +1 -0
- package/dist/providers/admin.d.ts +3 -0
- package/dist/providers/admin.d.ts.map +1 -0
- package/dist/providers/admin.js +20 -0
- package/dist/providers/admin.js.map +1 -0
- package/dist/providers/admin.mjs +21 -0
- package/dist/providers/admin.mjs.map +1 -0
- package/dist/providers/coreStore.d.ts +3 -0
- package/dist/providers/coreStore.d.ts.map +1 -0
- package/dist/providers/coreStore.js +11 -0
- package/dist/providers/coreStore.js.map +1 -0
- package/dist/providers/coreStore.mjs +12 -0
- package/dist/providers/coreStore.mjs.map +1 -0
- package/dist/providers/cron.d.ts +3 -0
- package/dist/providers/cron.d.ts.map +1 -0
- package/dist/providers/cron.js +20 -0
- package/dist/providers/cron.js.map +1 -0
- package/dist/providers/cron.mjs +21 -0
- package/dist/providers/cron.mjs.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +11 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/index.mjs +11 -0
- package/dist/providers/index.mjs.map +1 -0
- package/dist/providers/provider.d.ts +9 -0
- package/dist/providers/provider.d.ts.map +1 -0
- package/dist/providers/provider.js +5 -0
- package/dist/providers/provider.js.map +1 -0
- package/dist/providers/provider.mjs +5 -0
- package/dist/providers/provider.mjs.map +1 -0
- package/dist/providers/registries.d.ts +3 -0
- package/dist/providers/registries.d.ts.map +1 -0
- package/dist/providers/registries.js +35 -0
- package/dist/providers/registries.js.map +1 -0
- package/dist/providers/registries.mjs +36 -0
- package/dist/providers/registries.mjs.map +1 -0
- package/dist/providers/telemetry.d.ts +3 -0
- package/dist/providers/telemetry.d.ts.map +1 -0
- package/dist/providers/telemetry.js +19 -0
- package/dist/providers/telemetry.js.map +1 -0
- package/dist/providers/telemetry.mjs +20 -0
- package/dist/providers/telemetry.mjs.map +1 -0
- package/dist/providers/webhooks.d.ts +3 -0
- package/dist/providers/webhooks.d.ts.map +1 -0
- package/dist/providers/webhooks.js +30 -0
- package/dist/providers/webhooks.js.map +1 -0
- package/dist/providers/webhooks.mjs +31 -0
- package/dist/providers/webhooks.mjs.map +1 -0
- package/dist/registries/apis.d.ts +2 -2
- package/dist/registries/apis.d.ts.map +1 -1
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/apis.mjs.map +1 -1
- package/dist/registries/components.d.ts +6 -6
- package/dist/registries/components.d.ts.map +1 -1
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/components.mjs.map +1 -1
- package/dist/registries/content-types.d.ts +5 -5
- package/dist/registries/content-types.d.ts.map +1 -1
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/registries/controllers.d.ts +10 -10
- package/dist/registries/controllers.d.ts.map +1 -1
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/controllers.mjs.map +1 -1
- package/dist/registries/custom-fields.d.ts +3 -3
- package/dist/registries/custom-fields.d.ts.map +1 -1
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/custom-fields.mjs.map +1 -1
- package/dist/registries/index.d.ts +0 -1
- package/dist/registries/index.d.ts.map +1 -1
- package/dist/registries/middlewares.d.ts +6 -6
- package/dist/registries/middlewares.d.ts.map +1 -1
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/middlewares.mjs.map +1 -1
- package/dist/registries/modules.d.ts +2 -2
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/modules.mjs.map +1 -1
- package/dist/registries/plugins.d.ts +5 -5
- package/dist/registries/plugins.d.ts.map +1 -1
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/plugins.mjs.map +1 -1
- package/dist/registries/policies.d.ts +23 -11
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/policies.js +64 -18
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +65 -19
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/registries/services.d.ts +8 -8
- package/dist/registries/services.d.ts.map +1 -1
- package/dist/registries/services.js.map +1 -1
- package/dist/registries/services.mjs.map +1 -1
- package/dist/services/auth/index.d.ts +4 -4
- package/dist/services/auth/index.d.ts.map +1 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/config.d.ts +3 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +47 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/config.mjs +47 -0
- package/dist/services/config.mjs.map +1 -0
- package/dist/services/content-api/index.d.ts +21 -3
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +28 -2
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +28 -2
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/index.d.ts +3 -3
- package/dist/services/content-api/permissions/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/index.js +1 -1
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/index.mjs +1 -1
- package/dist/services/content-api/permissions/index.mjs.map +1 -1
- package/dist/services/core-store.d.ts.map +1 -1
- package/dist/services/cron.d.ts +2 -2
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/custom-fields.d.ts +2 -2
- package/dist/services/custom-fields.d.ts.map +1 -1
- package/dist/services/custom-fields.js.map +1 -1
- package/dist/services/custom-fields.mjs.map +1 -1
- package/dist/services/document-service/attributes/index.d.ts +6 -0
- package/dist/services/document-service/attributes/index.d.ts.map +1 -0
- package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
- package/dist/services/document-service/attributes/index.js.map +1 -0
- package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
- package/dist/services/document-service/attributes/index.mjs.map +1 -0
- package/dist/services/document-service/attributes/transforms.d.ts +10 -0
- package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
- package/dist/services/document-service/attributes/transforms.js.map +1 -0
- package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
- package/dist/services/document-service/common.d.ts +2 -2
- package/dist/services/document-service/common.d.ts.map +1 -1
- package/dist/services/document-service/common.js.map +1 -1
- package/dist/services/document-service/common.mjs.map +1 -1
- package/dist/services/document-service/components.d.ts +25 -1
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/{entity-service → document-service}/components.js +46 -142
- package/dist/services/document-service/components.js.map +1 -0
- package/dist/services/{entity-service → document-service}/components.mjs +48 -144
- package/dist/services/document-service/components.mjs.map +1 -0
- package/dist/services/document-service/draft-and-publish.d.ts +9 -23
- package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +37 -9
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs +38 -10
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts +10 -0
- package/dist/services/document-service/entries.d.ts.map +1 -0
- package/dist/services/document-service/entries.js +96 -0
- package/dist/services/document-service/entries.js.map +1 -0
- package/dist/services/document-service/entries.mjs +96 -0
- package/dist/services/document-service/entries.mjs.map +1 -0
- 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 +2 -4
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js +21 -8
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs +17 -4
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +5 -5
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +14 -5
- 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/middlewares/errors.d.ts +6 -0
- package/dist/services/document-service/middlewares/errors.d.ts.map +1 -0
- package/dist/services/document-service/middlewares/errors.js +25 -0
- package/dist/services/document-service/middlewares/errors.js.map +1 -0
- package/dist/services/document-service/middlewares/errors.mjs +25 -0
- package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
- package/dist/services/document-service/middlewares/index.d.ts +3 -0
- package/dist/services/document-service/middlewares/index.d.ts.map +1 -0
- package/dist/services/document-service/middlewares/middleware-manager.d.ts +10 -0
- package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -0
- package/dist/services/document-service/{middlewares.js → middlewares/middleware-manager.js} +9 -6
- package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
- package/dist/services/document-service/{middlewares.mjs → middlewares/middleware-manager.mjs} +9 -6
- package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
- package/dist/services/document-service/params.d.ts +3 -1
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/{entity-service → document-service}/params.js +1 -1
- package/dist/services/document-service/params.js.map +1 -0
- package/dist/services/{entity-service → document-service}/params.mjs +1 -1
- package/dist/services/document-service/params.mjs.map +1 -0
- package/dist/services/document-service/repository.d.ts +3 -0
- package/dist/services/document-service/repository.d.ts.map +1 -0
- package/dist/services/document-service/repository.js +278 -0
- package/dist/services/document-service/repository.js.map +1 -0
- package/dist/services/document-service/repository.mjs +278 -0
- package/dist/services/document-service/repository.mjs.map +1 -0
- package/dist/services/document-service/transform/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/data.js +4 -2
- package/dist/services/document-service/transform/data.js.map +1 -1
- package/dist/services/document-service/transform/data.mjs +4 -2
- package/dist/services/document-service/transform/data.mjs.map +1 -1
- package/dist/services/document-service/transform/fields.d.ts +2 -2
- package/dist/services/document-service/transform/fields.d.ts.map +1 -1
- package/dist/services/document-service/transform/fields.js.map +1 -1
- package/dist/services/document-service/transform/fields.mjs.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts +4 -4
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.js +15 -9
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs +16 -10
- package/dist/services/document-service/transform/id-map.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.d.ts +4 -18
- package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-transform.js +18 -12
- package/dist/services/document-service/transform/id-transform.js.map +1 -1
- package/dist/services/document-service/transform/id-transform.mjs +18 -12
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
- package/dist/services/document-service/transform/populate.d.ts +5 -2
- package/dist/services/document-service/transform/populate.d.ts.map +1 -1
- package/dist/services/document-service/transform/populate.js +1 -1
- package/dist/services/document-service/transform/populate.js.map +1 -1
- package/dist/services/document-service/transform/populate.mjs +1 -1
- package/dist/services/document-service/transform/populate.mjs.map +1 -1
- package/dist/services/document-service/transform/query.d.ts +5 -0
- package/dist/services/document-service/transform/query.d.ts.map +1 -0
- package/dist/services/document-service/transform/query.js +9 -0
- package/dist/services/document-service/transform/query.js.map +1 -0
- package/dist/services/document-service/transform/query.mjs +9 -0
- package/dist/services/document-service/transform/query.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
- 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 +45 -67
- 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 +45 -67
- 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 +9 -5
- 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 +63 -104
- 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 +64 -105
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
- package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
- package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/dp.d.ts +10 -0
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/utils/dp.js +30 -0
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
- package/dist/services/document-service/transform/relations/utils/dp.mjs +30 -0
- package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts +6 -6
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
- package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/types.d.ts +10 -1
- package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
- package/dist/services/document-service/transform/types.d.ts +4 -4
- package/dist/services/document-service/transform/types.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts +9 -2
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.js +5 -5
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs +5 -5
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/entity-service/index.d.ts +4 -6
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-service/index.js +44 -203
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +38 -197
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts +2 -2
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +101 -90
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +101 -90
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts +18 -18
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +6 -1
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +6 -1
- 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/features.d.ts +3 -3
- package/dist/services/features.d.ts.map +1 -1
- package/dist/services/features.js.map +1 -1
- package/dist/services/features.mjs.map +1 -1
- package/dist/services/fs.d.ts +2 -2
- package/dist/services/fs.d.ts.map +1 -1
- package/dist/services/fs.js.map +1 -1
- package/dist/services/fs.mjs.map +1 -1
- package/dist/services/metrics/admin-user-hash.d.ts +2 -2
- package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.js.map +1 -1
- package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
- package/dist/services/metrics/index.d.ts +2 -2
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/middleware.d.ts +2 -2
- package/dist/services/metrics/middleware.d.ts.map +1 -1
- package/dist/services/metrics/middleware.js.map +1 -1
- package/dist/services/metrics/middleware.mjs.map +1 -1
- package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
- package/dist/services/metrics/rate-limiter.js.map +1 -1
- package/dist/services/metrics/rate-limiter.mjs.map +1 -1
- package/dist/services/metrics/sender.d.ts +3 -3
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/query-params.d.ts +7 -0
- package/dist/services/query-params.d.ts.map +1 -0
- package/dist/services/query-params.js +12 -0
- package/dist/services/query-params.js.map +1 -0
- package/dist/services/query-params.mjs +13 -0
- package/dist/services/query-params.mjs.map +1 -0
- package/dist/services/reloader.d.ts +7 -0
- package/dist/services/reloader.d.ts.map +1 -0
- package/dist/services/reloader.js +36 -0
- package/dist/services/reloader.js.map +1 -0
- package/dist/services/reloader.mjs +36 -0
- package/dist/services/reloader.mjs.map +1 -0
- package/dist/services/server/admin-api.d.ts +3 -3
- package/dist/services/server/admin-api.d.ts.map +1 -1
- package/dist/services/server/admin-api.js.map +1 -1
- package/dist/services/server/admin-api.mjs.map +1 -1
- package/dist/services/server/api.d.ts +3 -3
- package/dist/services/server/api.d.ts.map +1 -1
- package/dist/services/server/api.js.map +1 -1
- package/dist/services/server/api.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.d.ts +2 -2
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.js +1 -2
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +2 -3
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/content-api.d.ts +3 -3
- package/dist/services/server/content-api.d.ts.map +1 -1
- package/dist/services/server/content-api.js.map +1 -1
- package/dist/services/server/content-api.mjs.map +1 -1
- package/dist/services/server/http-server.d.ts +2 -2
- package/dist/services/server/http-server.d.ts.map +1 -1
- package/dist/services/server/http-server.js.map +1 -1
- package/dist/services/server/http-server.mjs.map +1 -1
- package/dist/services/server/index.d.ts +2 -2
- package/dist/services/server/index.d.ts.map +1 -1
- package/dist/services/server/index.js +1 -2
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/index.mjs +1 -2
- 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 +1 -1
- 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.d.ts +4 -4
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/middleware.mjs.map +1 -1
- package/dist/services/server/policy.d.ts +3 -3
- package/dist/services/server/policy.d.ts.map +1 -1
- package/dist/services/server/policy.js +4 -4
- package/dist/services/server/policy.js.map +1 -1
- package/dist/services/server/policy.mjs +4 -4
- package/dist/services/server/policy.mjs.map +1 -1
- package/dist/services/server/register-middlewares.d.ts +2 -2
- package/dist/services/server/register-middlewares.d.ts.map +1 -1
- package/dist/services/server/register-middlewares.js.map +1 -1
- package/dist/services/server/register-middlewares.mjs.map +1 -1
- package/dist/services/server/register-routes.d.ts +2 -2
- package/dist/services/server/register-routes.d.ts.map +1 -1
- package/dist/services/server/register-routes.js +3 -3
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/register-routes.mjs +3 -3
- package/dist/services/server/register-routes.mjs.map +1 -1
- package/dist/services/server/routing.d.ts +5 -5
- package/dist/services/server/routing.d.ts.map +1 -1
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
- package/dist/services/utils/dynamic-zones.js +2 -1
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs +2 -1
- package/dist/services/utils/dynamic-zones.mjs.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.map +1 -1
- package/dist/services/webhook-store.js +13 -7
- package/dist/services/webhook-store.js.map +1 -1
- package/dist/services/webhook-store.mjs +13 -7
- package/dist/services/webhook-store.mjs.map +1 -1
- package/dist/utils/convert-custom-field-type.d.ts +2 -2
- package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
- package/dist/utils/convert-custom-field-type.js.map +1 -1
- package/dist/utils/convert-custom-field-type.mjs.map +1 -1
- package/dist/utils/fetch.d.ts +3 -3
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/is-initialized.d.ts +2 -2
- package/dist/utils/is-initialized.d.ts.map +1 -1
- package/dist/utils/is-initialized.js +1 -1
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs +1 -1
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/load-config-file.js +1 -1
- package/dist/utils/load-config-file.js.map +1 -1
- package/dist/utils/load-config-file.mjs +2 -2
- package/dist/utils/load-config-file.mjs.map +1 -1
- package/dist/utils/load-files.d.ts.map +1 -1
- package/dist/utils/open-browser.d.ts +2 -2
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/open-browser.mjs.map +1 -1
- package/dist/utils/resolve-working-dirs.d.ts +19 -0
- package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
- package/dist/utils/resolve-working-dirs.js +13 -0
- package/dist/utils/resolve-working-dirs.js.map +1 -0
- package/dist/utils/resolve-working-dirs.mjs +11 -0
- package/dist/utils/resolve-working-dirs.mjs.map +1 -0
- package/dist/utils/signals.d.ts +2 -2
- package/dist/utils/signals.d.ts.map +1 -1
- package/dist/utils/signals.js.map +1 -1
- package/dist/utils/signals.mjs.map +1 -1
- package/dist/utils/startup-logger.d.ts +2 -2
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +54 -99
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +95 -57
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +95 -57
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/dist/utils/update-notifier/index.d.ts +2 -7
- package/dist/utils/update-notifier/index.d.ts.map +1 -1
- package/dist/utils/update-notifier/index.js +11 -14
- package/dist/utils/update-notifier/index.js.map +1 -1
- package/dist/utils/update-notifier/index.mjs +11 -14
- package/dist/utils/update-notifier/index.mjs.map +1 -1
- package/package.json +29 -27
- package/dist/registries/config.d.ts +0 -4
- package/dist/registries/config.d.ts.map +0 -1
- package/dist/registries/config.js +0 -23
- package/dist/registries/config.js.map +0 -1
- package/dist/registries/config.mjs +0 -22
- package/dist/registries/config.mjs.map +0 -1
- package/dist/services/document-service/document-engine.d.ts +0 -8
- package/dist/services/document-service/document-engine.d.ts.map +0 -1
- package/dist/services/document-service/document-engine.js +0 -241
- package/dist/services/document-service/document-engine.js.map +0 -1
- package/dist/services/document-service/document-engine.mjs +0 -242
- package/dist/services/document-service/document-engine.mjs.map +0 -1
- package/dist/services/document-service/middlewares.d.ts +0 -8
- package/dist/services/document-service/middlewares.d.ts.map +0 -1
- package/dist/services/document-service/middlewares.js.map +0 -1
- package/dist/services/document-service/middlewares.mjs.map +0 -1
- package/dist/services/document-service/repositories/content-type.d.ts +0 -3
- package/dist/services/document-service/repositories/content-type.d.ts.map +0 -1
- package/dist/services/document-service/repositories/content-type.js +0 -139
- package/dist/services/document-service/repositories/content-type.js.map +0 -1
- package/dist/services/document-service/repositories/content-type.mjs +0 -139
- package/dist/services/document-service/repositories/content-type.mjs.map +0 -1
- package/dist/services/document-service/transform/filters.d.ts +0 -3
- package/dist/services/document-service/transform/filters.d.ts.map +0 -1
- package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -4
- package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
- package/dist/services/document-service/transform/relations/utils/data.js +0 -12
- package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
- package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
- package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
- package/dist/services/document-service/transform/sort.d.ts +0 -5
- package/dist/services/document-service/transform/sort.d.ts.map +0 -1
- package/dist/services/document-service/transform/utils.d.ts +0 -9
- package/dist/services/document-service/transform/utils.d.ts.map +0 -1
- package/dist/services/entity-service/attributes/index.d.ts +0 -6
- package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
- package/dist/services/entity-service/attributes/index.js.map +0 -1
- package/dist/services/entity-service/attributes/index.mjs.map +0 -1
- package/dist/services/entity-service/attributes/transforms.d.ts +0 -10
- package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
- package/dist/services/entity-service/attributes/transforms.js.map +0 -1
- package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
- package/dist/services/entity-service/components.d.ts +0 -23
- package/dist/services/entity-service/components.d.ts.map +0 -1
- package/dist/services/entity-service/components.js.map +0 -1
- package/dist/services/entity-service/components.mjs.map +0 -1
- package/dist/services/entity-service/params.d.ts +0 -8
- package/dist/services/entity-service/params.d.ts.map +0 -1
- package/dist/services/entity-service/params.js.map +0 -1
- package/dist/services/entity-service/params.mjs.map +0 -1
- package/dist/services/utils/upload-files.d.ts +0 -8
- package/dist/services/utils/upload-files.d.ts.map +0 -1
- package/dist/services/utils/upload-files.js +0 -64
- package/dist/services/utils/upload-files.js.map +0 -1
- package/dist/services/utils/upload-files.mjs +0 -63
- package/dist/services/utils/upload-files.mjs.map +0 -1
- package/dist/utils/get-dirs.d.ts +0 -9
- package/dist/utils/get-dirs.d.ts.map +0 -1
- package/dist/utils/get-dirs.js.map +0 -1
- package/dist/utils/get-dirs.mjs.map +0 -1
- /package/dist/services/{entity-service → document-service}/attributes/transforms.js +0 -0
- /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
@@ -1,14 +1,9 @@
|
|
1
1
|
import _ from "lodash";
|
2
2
|
import delegate from "delegates";
|
3
3
|
import { errors } from "@strapi/database";
|
4
|
-
import { errors as errors$1,
|
5
|
-
import uploadFile from "../utils/upload-files.mjs";
|
6
|
-
import { createComponents, omitComponentData, updateComponents, getComponents, deleteComponents, cloneComponents } from "./components.mjs";
|
7
|
-
import { pickSelectionParams } from "./params.mjs";
|
8
|
-
import { applyTransforms } from "./attributes/index.mjs";
|
9
|
-
const { transformParamsToQuery } = convertQueryParams;
|
4
|
+
import { errors as errors$1, contentTypes, relations } from "@strapi/utils";
|
10
5
|
const transformLoadParamsToQuery = (uid, field, params, pagination = {}) => {
|
11
|
-
const query =
|
6
|
+
const query = strapi.get("query-params").transform(uid, { populate: { [field]: params } });
|
12
7
|
const res = {
|
13
8
|
...query.populate[field],
|
14
9
|
...pagination
|
@@ -21,240 +16,89 @@ const databaseErrorsToTransform = [
|
|
21
16
|
errors.InvalidDateError,
|
22
17
|
errors.InvalidRelationError
|
23
18
|
];
|
24
|
-
const creationPipeline = (data, context) => {
|
25
|
-
return applyTransforms(data, context);
|
26
|
-
};
|
27
|
-
const updatePipeline = (data, context) => {
|
28
|
-
return applyTransforms(data, context);
|
29
|
-
};
|
30
|
-
const ALLOWED_WEBHOOK_EVENTS = {
|
31
|
-
ENTRY_CREATE: "entry.create",
|
32
|
-
ENTRY_UPDATE: "entry.update",
|
33
|
-
ENTRY_DELETE: "entry.delete"
|
34
|
-
};
|
35
19
|
const createDefaultImplementation = ({
|
36
|
-
strapi,
|
37
|
-
db
|
38
|
-
eventHub,
|
39
|
-
entityValidator
|
20
|
+
strapi: strapi2,
|
21
|
+
db
|
40
22
|
}) => ({
|
41
|
-
/**
|
42
|
-
* Upload files utility
|
43
|
-
*/
|
44
|
-
uploadFiles: uploadFile,
|
45
23
|
async wrapParams(options = {}) {
|
46
24
|
return options;
|
47
25
|
},
|
48
26
|
async wrapResult(result = {}) {
|
49
27
|
return result;
|
50
28
|
},
|
51
|
-
async emitEvent(uid, event, entity) {
|
52
|
-
if (uid === "admin::audit-log") {
|
53
|
-
return;
|
54
|
-
}
|
55
|
-
const model = strapi.getModel(uid);
|
56
|
-
const sanitizedEntity = await sanitize.sanitizers.defaultSanitizeOutput(model, entity);
|
57
|
-
eventHub.emit(event, {
|
58
|
-
model: model.modelName,
|
59
|
-
uid: model.uid,
|
60
|
-
entry: sanitizedEntity
|
61
|
-
});
|
62
|
-
},
|
63
29
|
async findMany(uid, opts) {
|
64
|
-
const { kind } =
|
30
|
+
const { kind } = strapi2.getModel(uid);
|
65
31
|
const wrappedParams = await this.wrapParams(opts, { uid, action: "findMany" });
|
66
|
-
const query = transformParamsToQuery(uid, wrappedParams);
|
67
32
|
if (kind === "singleType") {
|
68
|
-
const entity =
|
33
|
+
const entity = strapi2.documents(uid).findFirst(wrappedParams);
|
69
34
|
return this.wrapResult(entity, { uid, action: "findOne" });
|
70
35
|
}
|
71
|
-
const entities = await
|
36
|
+
const entities = await strapi2.documents(uid).findMany(wrappedParams);
|
72
37
|
return this.wrapResult(entities, { uid, action: "findMany" });
|
73
38
|
},
|
74
39
|
async findPage(uid, opts) {
|
75
40
|
const wrappedParams = await this.wrapParams(opts, { uid, action: "findPage" });
|
76
|
-
const query =
|
77
|
-
const page = await db.query(uid).findPage(query);
|
78
|
-
return {
|
79
|
-
...page,
|
80
|
-
results: await this.wrapResult(page.results, { uid, action: "findPage" })
|
81
|
-
};
|
82
|
-
},
|
83
|
-
// TODO: streamline the logic based on the populate option
|
84
|
-
async findWithRelationCountsPage(uid, opts) {
|
85
|
-
const wrappedParams = await this.wrapParams(opts, { uid, action: "findWithRelationCounts" });
|
86
|
-
const query = transformParamsToQuery(uid, wrappedParams);
|
41
|
+
const query = strapi2.get("query-params").transform(uid, wrappedParams);
|
87
42
|
const entities = await db.query(uid).findPage(query);
|
88
|
-
return {
|
89
|
-
...entities,
|
90
|
-
results: await this.wrapResult(entities.results, { uid, action: "findWithRelationCounts" })
|
91
|
-
};
|
92
|
-
},
|
93
|
-
async findWithRelationCounts(uid, opts) {
|
94
|
-
const wrappedParams = await this.wrapParams(opts, { uid, action: "findWithRelationCounts" });
|
95
|
-
const query = transformParamsToQuery(uid, wrappedParams);
|
96
|
-
const entities = await db.query(uid).findMany(query);
|
97
|
-
return this.wrapResult(entities, { uid, action: "findWithRelationCounts" });
|
43
|
+
return this.wrapResult(entities, { uid, action: "findMany" });
|
98
44
|
},
|
99
45
|
async findOne(uid, entityId, opts) {
|
100
46
|
const wrappedParams = await this.wrapParams(opts, { uid, action: "findOne" });
|
101
|
-
const
|
102
|
-
|
47
|
+
const res = await db.query(uid).findOne({ where: { id: entityId } });
|
48
|
+
if (!res) {
|
49
|
+
return this.wrapResult(null, { uid, action: "findOne" });
|
50
|
+
}
|
51
|
+
const entity = await strapi2.documents(uid).findOne({
|
52
|
+
...wrappedParams,
|
53
|
+
documentId: res.documentId
|
54
|
+
});
|
103
55
|
return this.wrapResult(entity, { uid, action: "findOne" });
|
104
56
|
},
|
105
57
|
async count(uid, opts) {
|
106
58
|
const wrappedParams = await this.wrapParams(opts, { uid, action: "count" });
|
107
|
-
|
108
|
-
return db.query(uid).count(query);
|
59
|
+
return strapi2.documents(uid).count(wrappedParams);
|
109
60
|
},
|
110
61
|
async create(uid, params) {
|
111
62
|
const wrappedParams = await this.wrapParams(params, { uid, action: "create" });
|
112
|
-
const { data
|
63
|
+
const { data } = wrappedParams;
|
113
64
|
if (!data) {
|
114
65
|
throw new Error("cannot create");
|
115
66
|
}
|
116
|
-
const
|
117
|
-
const
|
118
|
-
|
119
|
-
|
120
|
-
const componentData = await createComponents(uid, validData);
|
121
|
-
const entityData = creationPipeline(
|
122
|
-
Object.assign(omitComponentData(model, validData), componentData),
|
123
|
-
{
|
124
|
-
contentType: model
|
125
|
-
}
|
126
|
-
);
|
127
|
-
let entity = await db.query(uid).create({
|
128
|
-
...query,
|
129
|
-
data: entityData
|
67
|
+
const shouldPublish = !contentTypes.isDraft(data, strapi2.getModel(uid));
|
68
|
+
const entity = await strapi2.documents(uid).create({
|
69
|
+
...wrappedParams,
|
70
|
+
status: shouldPublish ? "published" : "draft"
|
130
71
|
});
|
131
|
-
|
132
|
-
await this.uploadFiles(uid, Object.assign(entityData, entity), files);
|
133
|
-
entity = await this.findOne(uid, entity.id, wrappedParams);
|
134
|
-
}
|
135
|
-
entity = await this.wrapResult(entity, { uid, action: "create" });
|
136
|
-
const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;
|
137
|
-
await this.emitEvent(uid, ENTRY_CREATE, entity);
|
138
|
-
return entity;
|
72
|
+
return this.wrapResult(entity, { uid, action: "create" });
|
139
73
|
},
|
140
74
|
async update(uid, entityId, opts) {
|
141
75
|
const wrappedParams = await this.wrapParams(opts, {
|
142
76
|
uid,
|
143
77
|
action: "update"
|
144
78
|
});
|
145
|
-
const { data, files } = wrappedParams;
|
146
|
-
const model = strapi.getModel(uid);
|
147
79
|
const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });
|
148
80
|
if (!entityToUpdate) {
|
149
|
-
return null;
|
81
|
+
return this.wrapResult(null, { uid, action: "update" });
|
150
82
|
}
|
151
|
-
const
|
152
|
-
const
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
isDraft
|
157
|
-
},
|
158
|
-
entityToUpdate
|
159
|
-
);
|
160
|
-
const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
|
161
|
-
const componentData = await updateComponents(uid, entityToUpdate, validData);
|
162
|
-
const entityData = updatePipeline(
|
163
|
-
Object.assign(omitComponentData(model, validData), componentData),
|
164
|
-
{ contentType: model }
|
165
|
-
);
|
166
|
-
let entity = await db.query(uid).update({
|
167
|
-
...query,
|
168
|
-
where: { id: entityId },
|
169
|
-
data: entityData
|
83
|
+
const shouldPublish = !contentTypes.isDraft(entityToUpdate, strapi2.getModel(uid));
|
84
|
+
const entity = strapi2.documents(uid).update({
|
85
|
+
...wrappedParams,
|
86
|
+
status: shouldPublish ? "published" : "draft",
|
87
|
+
documentId: entityToUpdate.documentId
|
170
88
|
});
|
171
|
-
|
172
|
-
await this.uploadFiles(uid, Object.assign(entityData, entity), files);
|
173
|
-
entity = await this.findOne(uid, entity.id, wrappedParams);
|
174
|
-
}
|
175
|
-
entity = await this.wrapResult(entity, { uid, action: "update" });
|
176
|
-
const { ENTRY_UPDATE } = ALLOWED_WEBHOOK_EVENTS;
|
177
|
-
await this.emitEvent(uid, ENTRY_UPDATE, entity);
|
178
|
-
return entity;
|
89
|
+
return this.wrapResult(entity, { uid, action: "update" });
|
179
90
|
},
|
180
91
|
async delete(uid, entityId, opts) {
|
181
92
|
const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
|
182
|
-
const
|
183
|
-
let entityToDelete = await db.query(uid).findOne({
|
184
|
-
...query,
|
185
|
-
where: { id: entityId }
|
186
|
-
});
|
93
|
+
const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });
|
187
94
|
if (!entityToDelete) {
|
188
|
-
return null;
|
95
|
+
return this.wrapResult(null, { uid, action: "delete" });
|
189
96
|
}
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
entityToDelete = await this.wrapResult(entityToDelete, { uid, action: "delete" });
|
194
|
-
const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;
|
195
|
-
await this.emitEvent(uid, ENTRY_DELETE, entityToDelete);
|
196
|
-
return entityToDelete;
|
197
|
-
},
|
198
|
-
async clone(uid, cloneId, opts) {
|
199
|
-
const wrappedParams = await this.wrapParams(opts, { uid, action: "clone" });
|
200
|
-
const { data, files } = wrappedParams;
|
201
|
-
if (!data) {
|
202
|
-
throw new Error("cannot clone");
|
203
|
-
}
|
204
|
-
const model = strapi.getModel(uid);
|
205
|
-
const entityToClone = await db.query(uid).findOne({ where: { id: cloneId } });
|
206
|
-
if (!entityToClone) {
|
207
|
-
return null;
|
208
|
-
}
|
209
|
-
const isDraft = contentTypes.isDraft(entityToClone);
|
210
|
-
const validData = await entityValidator.validateEntityUpdate(
|
211
|
-
model,
|
212
|
-
// Omit the id, the cloned entity id will be generated by the database
|
213
|
-
_.omit(data, ["id"]),
|
214
|
-
{ isDraft },
|
215
|
-
entityToClone
|
216
|
-
);
|
217
|
-
const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
|
218
|
-
const componentData = await cloneComponents(uid, entityToClone, validData);
|
219
|
-
const entityData = creationPipeline(
|
220
|
-
Object.assign(omitComponentData(model, validData), componentData),
|
221
|
-
{
|
222
|
-
contentType: model
|
223
|
-
}
|
224
|
-
);
|
225
|
-
let entity = await db.query(uid).clone(cloneId, {
|
226
|
-
...query,
|
227
|
-
data: entityData
|
97
|
+
await strapi2.documents(uid).delete({
|
98
|
+
...wrappedParams,
|
99
|
+
documentId: entityToDelete.documentId
|
228
100
|
});
|
229
|
-
|
230
|
-
await this.uploadFiles(uid, Object.assign(entityData, entity), files);
|
231
|
-
entity = await this.findOne(uid, entity.id, wrappedParams);
|
232
|
-
}
|
233
|
-
const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;
|
234
|
-
await this.emitEvent(uid, ENTRY_CREATE, entity);
|
235
|
-
return entity;
|
236
|
-
},
|
237
|
-
// FIXME: used only for the CM to be removed
|
238
|
-
async deleteMany(uid, opts) {
|
239
|
-
const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
|
240
|
-
const query = transformParamsToQuery(uid, wrappedParams);
|
241
|
-
let entitiesToDelete = await db.query(uid).findMany(query);
|
242
|
-
if (!entitiesToDelete.length) {
|
243
|
-
return { count: 0 };
|
244
|
-
}
|
245
|
-
const componentsToDelete = await Promise.all(
|
246
|
-
entitiesToDelete.map((entityToDelete) => getComponents(uid, entityToDelete))
|
247
|
-
);
|
248
|
-
const deletedEntities = await db.query(uid).deleteMany(query);
|
249
|
-
await Promise.all(
|
250
|
-
componentsToDelete.map(
|
251
|
-
(compos) => deleteComponents(uid, compos, { loadComponents: false })
|
252
|
-
)
|
253
|
-
);
|
254
|
-
entitiesToDelete = await this.wrapResult(entitiesToDelete, { uid, action: "delete" });
|
255
|
-
const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;
|
256
|
-
await Promise.all(entitiesToDelete.map((entity) => this.emitEvent(uid, ENTRY_DELETE, entity)));
|
257
|
-
return deletedEntities;
|
101
|
+
return this.wrapResult(entityToDelete, { uid, action: "delete" });
|
258
102
|
},
|
259
103
|
async load(uid, entity, field, params) {
|
260
104
|
if (!_.isString(field)) {
|
@@ -267,7 +111,7 @@ const createDefaultImplementation = ({
|
|
267
111
|
if (!_.isString(field)) {
|
268
112
|
throw new Error(`Invalid load. Expected "${field}" to be a string`);
|
269
113
|
}
|
270
|
-
const { attributes } =
|
114
|
+
const { attributes } = strapi2.getModel(uid);
|
271
115
|
const attribute = attributes[field];
|
272
116
|
if (!relations.isAnyToMany(attribute)) {
|
273
117
|
throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
|
@@ -281,9 +125,6 @@ const createDefaultImplementation = ({
|
|
281
125
|
}
|
282
126
|
});
|
283
127
|
const createEntityService = (ctx) => {
|
284
|
-
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
285
|
-
ctx.strapi.webhookStore?.addAllowedEvent(key, value);
|
286
|
-
});
|
287
128
|
const implementation = createDefaultImplementation(ctx);
|
288
129
|
const service = {
|
289
130
|
implementation,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n sanitize,\n errors,\n relations as relationUtils,\n convertQueryParams,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type {\n Strapi,\n EntityService,\n EntityValidator,\n EventHub,\n Common,\n Schema,\n Shared,\n Utils,\n} from '@strapi/types';\n\nimport uploadFiles from '../utils/upload-files';\n\nimport {\n omitComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n cloneComponents,\n} from './components';\n\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\n\nconst { transformParamsToQuery } = convertQueryParams;\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: EntityService.EntityService) => EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\ntype Context = {\n contentType: Schema.ContentType;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = transformParamsToQuery(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst creationPipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst updatePipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n ENTRY_CREATE: 'entry.create',\n ENTRY_UPDATE: 'entry.update',\n ENTRY_DELETE: 'entry.delete',\n};\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n eventHub,\n entityValidator,\n}: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): EntityService.EntityService => ({\n /**\n * Upload files utility\n */\n uploadFiles,\n\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async emitEvent(uid, event: string, entity) {\n // Ignore audit log events to prevent infinite loops\n if (uid === ('admin::audit-log' as Common.UID.ContentType)) {\n return;\n }\n\n const model = strapi.getModel(uid);\n const sanitizedEntity = await sanitize.sanitizers.defaultSanitizeOutput(model, entity);\n\n eventHub.emit(event, {\n model: model.modelName,\n uid: model.uid,\n entry: sanitizedEntity,\n });\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n if (kind === 'singleType') {\n const entity = db.query(uid).findOne(query);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const page = await db.query(uid).findPage(query);\n return {\n ...page,\n results: await this.wrapResult(page.results, { uid, action: 'findPage' }),\n };\n },\n\n // TODO: streamline the logic based on the populate option\n async findWithRelationCountsPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return {\n ...entities,\n results: await this.wrapResult(entities.results, { uid, action: 'findWithRelationCounts' }),\n };\n },\n\n async findWithRelationCounts(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findWithRelationCounts' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n const entity = await db.query(uid).findOne({ ...query, where: { id: entityId } });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n return db.query(uid).count(query);\n },\n\n async create<\n TUID extends Common.UID.ContentType,\n TParams extends EntityService.Params.Pick<TUID, 'data' | 'files' | 'fields' | 'populate'>\n >(uid: TUID, params?: TParams) {\n const wrappedParams = await this.wrapParams<TParams>(params, { uid, action: 'create' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const model = strapi.getModel(uid) as Shared.ContentTypes[Common.UID.ContentType];\n\n const isDraft = contentTypesUtils.isDraft(data);\n const validData = await entityValidator.validateEntityCreation(model, data, { isDraft });\n\n // select / populate\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await createComponents(uid, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n let entity = await db.query(uid).create({\n ...query,\n data: entityData,\n });\n\n // TODO: do all of this in a transaction to avoid a race condition where entity is created then deleted before we do findOne again\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'create' });\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data:partial' | 'files' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const { data, files } = wrappedParams;\n\n const model = strapi.getModel(uid);\n\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return null;\n }\n\n const isDraft = contentTypesUtils.isDraft(entityToUpdate);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n data,\n {\n isDraft,\n },\n entityToUpdate\n );\n\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap in transaction\n const componentData = await updateComponents(uid, entityToUpdate, validData);\n const entityData = updatePipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n let entity = await db.query(uid).update({\n ...query,\n where: { id: entityId },\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'update' });\n\n const { ENTRY_UPDATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_UPDATE, entity);\n\n return entity;\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n let entityToDelete = await db.query(uid).findOne({\n ...query,\n where: { id: entityId },\n });\n\n if (!entityToDelete) {\n return null;\n }\n\n const componentsToDelete = await getComponents(uid, entityToDelete);\n\n await db.query(uid).delete({ where: { id: entityToDelete.id } });\n await deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n entityToDelete = await this.wrapResult(entityToDelete, { uid, action: 'delete' });\n\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_DELETE, entityToDelete);\n\n return entityToDelete;\n },\n\n async clone(uid, cloneId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data' | 'files' | 'fields' | 'populate'>\n >(opts, { uid, action: 'clone' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot clone');\n }\n\n const model = strapi.getModel(uid);\n\n const entityToClone = await db.query(uid).findOne({ where: { id: cloneId } });\n\n if (!entityToClone) {\n return null;\n }\n const isDraft = contentTypesUtils.isDraft(entityToClone);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n // Omit the id, the cloned entity id will be generated by the database\n _.omit(data, ['id']) as Partial<typeof data>,\n { isDraft },\n entityToClone\n );\n\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await cloneComponents(uid, entityToClone, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n\n let entity = await db.query(uid).clone(cloneId, {\n ...query,\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n // FIXME: used only for the CM to be removed\n async deleteMany(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n const query = transformParamsToQuery(uid, wrappedParams);\n\n let entitiesToDelete = await db.query(uid).findMany(query);\n\n if (!entitiesToDelete.length) {\n return { count: 0 };\n }\n\n const componentsToDelete = await Promise.all(\n entitiesToDelete.map((entityToDelete) => getComponents(uid, entityToDelete))\n );\n\n const deletedEntities = await db.query(uid).deleteMany(query);\n await Promise.all(\n componentsToDelete.map((compos) =>\n deleteComponents(uid, compos as any, { loadComponents: false })\n )\n );\n\n entitiesToDelete = await this.wrapResult(entitiesToDelete, { uid, action: 'delete' });\n\n // Trigger webhooks. One for each entity\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await Promise.all(entitiesToDelete.map((entity) => this.emitEvent(uid, ENTRY_DELETE, entity)));\n\n return deletedEntities;\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): Decoratable<EntityService.EntityService> => {\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n ctx.strapi.webhookStore?.addAllowedEvent(key, value);\n });\n\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof EntityService.EntityService) =>\n async function (this: EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<EntityService.EntityService>;\n};\n"],"names":["databaseErrors","uploadFiles","contentTypesUtils","relationUtils","errors"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne({\n ...wrappedParams,\n documentId: res.documentId,\n });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n documentId: entityToUpdate.documentId,\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete({\n ...wrappedParams,\n documentId: entityToDelete.documentId,\n });\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["databaseErrors","strapi","contentTypesUtils","relationUtils","errors"],"mappings":"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"}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* Entity validator
|
3
3
|
* Module that will validate input data for entity creation or edition
|
4
4
|
*/
|
5
|
-
import {
|
6
|
-
declare const entityValidator: EntityValidator;
|
5
|
+
import { Modules } from '@strapi/types';
|
6
|
+
declare const entityValidator: Modules.EntityValidator.EntityValidator;
|
7
7
|
export default entityValidator;
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAmf7D,QAAA,MAAM,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,eAG9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
@@ -9,7 +9,10 @@ const { yup, validateYupSchema } = strapiUtils__default.default;
|
|
9
9
|
const { isMediaAttribute, isScalarAttribute, getWritableAttributes } = strapiUtils__default.default.contentTypes;
|
10
10
|
const { ValidationError } = strapiUtils__default.default.errors;
|
11
11
|
const isInteger = (value) => Number.isInteger(value);
|
12
|
-
const addMinMax = (validator, {
|
12
|
+
const addMinMax = (validator, {
|
13
|
+
attr,
|
14
|
+
updatedAttribute
|
15
|
+
}) => {
|
13
16
|
let nextValidator = validator;
|
14
17
|
if (isInteger(attr.min) && ("required" in attr && attr.required || Array.isArray(updatedAttribute.value) && updatedAttribute.value.length > 0)) {
|
15
18
|
nextValidator = nextValidator.min(attr.min);
|
@@ -20,7 +23,9 @@ const addMinMax = (validator, { attr, updatedAttribute }) => {
|
|
20
23
|
return nextValidator;
|
21
24
|
};
|
22
25
|
const addRequiredValidation = (createOrUpdate) => {
|
23
|
-
return (validator, {
|
26
|
+
return (validator, {
|
27
|
+
attr: { required }
|
28
|
+
}) => {
|
24
29
|
let nextValidator = validator;
|
25
30
|
if (required) {
|
26
31
|
if (createOrUpdate === "creation") {
|
@@ -153,17 +158,20 @@ const createAttributeValidator = (createOrUpdate) => (metas, options) => {
|
|
153
158
|
};
|
154
159
|
const createModelValidator = (createOrUpdate) => ({ model, data, entity }, options) => {
|
155
160
|
const writableAttributes = model ? getWritableAttributes(model) : [];
|
156
|
-
const schema = writableAttributes.reduce(
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
161
|
+
const schema = writableAttributes.reduce(
|
162
|
+
(validators2, attributeName) => {
|
163
|
+
const metas = {
|
164
|
+
attr: model.attributes[attributeName],
|
165
|
+
updatedAttribute: { name: attributeName, value: _.prop(attributeName, data) },
|
166
|
+
model,
|
167
|
+
entity
|
168
|
+
};
|
169
|
+
const validator = createAttributeValidator(createOrUpdate)(metas, options);
|
170
|
+
validators2[attributeName] = validator;
|
171
|
+
return validators2;
|
172
|
+
},
|
173
|
+
{}
|
174
|
+
);
|
167
175
|
return yup.object().shape(schema);
|
168
176
|
};
|
169
177
|
const createValidateEntity = (createOrUpdate) => {
|
@@ -208,96 +216,99 @@ const buildRelationsStore = ({
|
|
208
216
|
return {};
|
209
217
|
}
|
210
218
|
const currentModel = strapi.getModel(uid);
|
211
|
-
return Object.keys(currentModel.attributes).reduce(
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
switch (attribute.type) {
|
218
|
-
case "relation":
|
219
|
-
case "media": {
|
220
|
-
if (attribute.type === "relation" && (attribute.relation === "morphToMany" || attribute.relation === "morphToOne")) {
|
221
|
-
break;
|
222
|
-
}
|
223
|
-
const target = (
|
224
|
-
// eslint-disable-next-line no-nested-ternary
|
225
|
-
attribute.type === "media" ? "plugin::upload.file" : attribute.target
|
226
|
-
);
|
227
|
-
let source;
|
228
|
-
if (Array.isArray(value)) {
|
229
|
-
source = value;
|
230
|
-
} else if (_.isObject(value)) {
|
231
|
-
if ("connect" in value && !_$1.isNil(value.connect)) {
|
232
|
-
source = value.connect;
|
233
|
-
} else if ("set" in value && !_$1.isNil(value.set)) {
|
234
|
-
source = value.set;
|
235
|
-
} else {
|
236
|
-
source = [];
|
237
|
-
}
|
238
|
-
} else {
|
239
|
-
source = _$1.castArray(value);
|
240
|
-
}
|
241
|
-
const idArray = source.map((v) => ({
|
242
|
-
id: typeof v === "object" ? v.id : v
|
243
|
-
}));
|
244
|
-
result[target] = result[target] || [];
|
245
|
-
result[target].push(...idArray);
|
246
|
-
break;
|
219
|
+
return Object.keys(currentModel.attributes).reduce(
|
220
|
+
(result, attributeName) => {
|
221
|
+
const attribute = currentModel.attributes[attributeName];
|
222
|
+
const value = data[attributeName];
|
223
|
+
if (_$1.isNil(value)) {
|
224
|
+
return result;
|
247
225
|
}
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
);
|
226
|
+
switch (attribute.type) {
|
227
|
+
case "relation":
|
228
|
+
case "media": {
|
229
|
+
if (attribute.type === "relation" && (attribute.relation === "morphToMany" || attribute.relation === "morphToOne")) {
|
230
|
+
break;
|
254
231
|
}
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
uid: attribute.component,
|
259
|
-
data: componentValue
|
260
|
-
}),
|
261
|
-
(objValue, srcValue) => {
|
262
|
-
if (_$1.isArray(objValue)) {
|
263
|
-
return objValue.concat(srcValue);
|
264
|
-
}
|
265
|
-
}
|
232
|
+
const target = (
|
233
|
+
// eslint-disable-next-line no-nested-ternary
|
234
|
+
attribute.type === "media" ? "plugin::upload.file" : attribute.target
|
266
235
|
);
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
236
|
+
let source;
|
237
|
+
if (Array.isArray(value)) {
|
238
|
+
source = value;
|
239
|
+
} else if (_.isObject(value)) {
|
240
|
+
if ("connect" in value && !_$1.isNil(value.connect)) {
|
241
|
+
source = value.connect;
|
242
|
+
} else if ("set" in value && !_$1.isNil(value.set)) {
|
243
|
+
source = value.set;
|
244
|
+
} else {
|
245
|
+
source = [];
|
246
|
+
}
|
247
|
+
} else {
|
248
|
+
source = _$1.castArray(value);
|
276
249
|
}
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
250
|
+
const idArray = source.map((v) => ({
|
251
|
+
id: typeof v === "object" ? v.id : v
|
252
|
+
}));
|
253
|
+
result[target] = result[target] || [];
|
254
|
+
result[target].push(...idArray);
|
255
|
+
break;
|
256
|
+
}
|
257
|
+
case "component": {
|
258
|
+
return _$1.castArray(value).reduce((relationsStore, componentValue) => {
|
259
|
+
if (!attribute.component) {
|
260
|
+
throw new ValidationError(
|
261
|
+
`Cannot build relations store from component, component identifier is undefined`
|
262
|
+
);
|
263
|
+
}
|
264
|
+
return _$1.mergeWith(
|
265
|
+
relationsStore,
|
266
|
+
buildRelationsStore({
|
267
|
+
uid: attribute.component,
|
268
|
+
data: componentValue
|
269
|
+
}),
|
270
|
+
(objValue, srcValue) => {
|
271
|
+
if (_$1.isArray(objValue)) {
|
272
|
+
return objValue.concat(srcValue);
|
273
|
+
}
|
286
274
|
}
|
275
|
+
);
|
276
|
+
}, result);
|
277
|
+
}
|
278
|
+
case "dynamiczone": {
|
279
|
+
return _$1.castArray(value).reduce((relationsStore, dzValue) => {
|
280
|
+
const value2 = dzValue;
|
281
|
+
if (!value2.__component) {
|
282
|
+
throw new ValidationError(
|
283
|
+
`Cannot build relations store from dynamiczone, component identifier is undefined`
|
284
|
+
);
|
287
285
|
}
|
288
|
-
|
289
|
-
|
286
|
+
return _$1.mergeWith(
|
287
|
+
relationsStore,
|
288
|
+
buildRelationsStore({
|
289
|
+
uid: value2.__component,
|
290
|
+
data: value2
|
291
|
+
}),
|
292
|
+
(objValue, srcValue) => {
|
293
|
+
if (_$1.isArray(objValue)) {
|
294
|
+
return objValue.concat(srcValue);
|
295
|
+
}
|
296
|
+
}
|
297
|
+
);
|
298
|
+
}, result);
|
299
|
+
}
|
290
300
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
301
|
+
return result;
|
302
|
+
},
|
303
|
+
{}
|
304
|
+
);
|
294
305
|
};
|
295
306
|
const checkRelationsExist = async (relationsStore = {}) => {
|
296
307
|
const promises = [];
|
297
308
|
for (const [key, value] of Object.entries(relationsStore)) {
|
298
309
|
const evaluate = async () => {
|
299
310
|
const uniqueValues = _$1.uniqBy(value, `id`);
|
300
|
-
const count = await strapi.query(key).count({
|
311
|
+
const count = await strapi.db.query(key).count({
|
301
312
|
where: {
|
302
313
|
id: {
|
303
314
|
$in: uniqueValues.map((v) => v.id)
|