@strapi/strapi 4.26.1 → 4.26.2
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.js.map +1 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs.map +1 -1
- package/dist/commands/actions/admin/create-user/action.js.map +1 -1
- package/dist/commands/actions/admin/reset-user-password/action.js.map +1 -1
- package/dist/commands/actions/admin/reset-user-password/command.js.map +1 -1
- package/dist/commands/actions/components/list/action.js.map +1 -1
- package/dist/commands/actions/components/list/command.js.map +1 -1
- package/dist/commands/actions/configuration/dump/action.js.map +1 -1
- package/dist/commands/actions/configuration/dump/command.js.map +1 -1
- package/dist/commands/actions/configuration/restore/action.js +1 -2
- package/dist/commands/actions/configuration/restore/action.js.map +1 -1
- package/dist/commands/actions/configuration/restore/command.js.map +1 -1
- package/dist/commands/actions/console/action.js.map +1 -1
- package/dist/commands/actions/console/command.js.map +1 -1
- package/dist/commands/actions/content-types/list/action.js.map +1 -1
- package/dist/commands/actions/content-types/list/command.js.map +1 -1
- package/dist/commands/actions/controllers/list/action.js.map +1 -1
- package/dist/commands/actions/controllers/list/command.js.map +1 -1
- package/dist/commands/actions/generate/command.js.map +1 -1
- package/dist/commands/actions/hooks/list/action.js.map +1 -1
- package/dist/commands/actions/hooks/list/command.js.map +1 -1
- package/dist/commands/actions/install/action.js.map +1 -1
- package/dist/commands/actions/install/command.js.map +1 -1
- package/dist/commands/actions/middlewares/list/action.js.map +1 -1
- package/dist/commands/actions/middlewares/list/command.js.map +1 -1
- package/dist/commands/actions/new/action.js.map +1 -1
- package/dist/commands/actions/new/command.js.map +1 -1
- package/dist/commands/actions/plugin/build-command/action.js.map +1 -1
- package/dist/commands/actions/plugin/build-command/command.js.map +1 -1
- package/dist/commands/actions/plugin/init/action.js.map +1 -1
- package/dist/commands/actions/plugin/init/command.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/admin.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/server.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/typescript.js.map +1 -1
- package/dist/commands/actions/plugin/link-watch/action.js.map +1 -1
- package/dist/commands/actions/plugin/verify/action.js.map +1 -1
- package/dist/commands/actions/plugin/watch/action.js.map +1 -1
- package/dist/commands/actions/policies/list/action.js.map +1 -1
- package/dist/commands/actions/policies/list/command.js.map +1 -1
- package/dist/commands/actions/report/action.js.map +1 -1
- package/dist/commands/actions/report/command.js.map +1 -1
- package/dist/commands/actions/routes/list/action.js.map +1 -1
- package/dist/commands/actions/routes/list/command.js.map +1 -1
- package/dist/commands/actions/services/list/action.js.map +1 -1
- package/dist/commands/actions/services/list/command.js.map +1 -1
- package/dist/commands/actions/start/action.js.map +1 -1
- package/dist/commands/actions/start/command.js.map +1 -1
- package/dist/commands/actions/telemetry/disable/action.js.map +1 -1
- package/dist/commands/actions/telemetry/disable/command.js.map +1 -1
- package/dist/commands/actions/telemetry/enable/action.js.map +1 -1
- package/dist/commands/actions/telemetry/enable/command.js.map +1 -1
- package/dist/commands/actions/templates/generate/action.js.map +1 -1
- package/dist/commands/actions/templates/generate/command.js.map +1 -1
- package/dist/commands/actions/ts/generate-types/action.js.map +1 -1
- package/dist/commands/actions/ts/generate-types/command.js.map +1 -1
- package/dist/commands/actions/uninstall/action.js.map +1 -1
- package/dist/commands/actions/uninstall/command.js.map +1 -1
- package/dist/commands/actions/version/command.js.map +1 -1
- package/dist/commands/actions/watch-admin/action.js.map +1 -1
- package/dist/commands/actions/watch-admin/command.js.map +1 -1
- package/dist/commands/index.js +60 -60
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/utils/commander.js.map +1 -1
- package/dist/commands/utils/helpers.js.map +1 -1
- package/dist/commands/utils/logger.js +1 -2
- package/dist/commands/utils/logger.js.map +1 -1
- package/dist/commands/utils/pkg.js +1 -2
- package/dist/commands/utils/pkg.js.map +1 -1
- package/dist/commands/utils/tsconfig.js.map +1 -1
- package/dist/compile.js.map +1 -1
- package/dist/compile.mjs.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/container.mjs.map +1 -1
- package/dist/core/app-configuration/config-loader.js +1 -2
- package/dist/core/app-configuration/config-loader.js.map +1 -1
- package/dist/core/app-configuration/config-loader.mjs +1 -2
- package/dist/core/app-configuration/config-loader.mjs.map +1 -1
- package/dist/core/app-configuration/index.js.map +1 -1
- package/dist/core/app-configuration/index.mjs.map +1 -1
- package/dist/core/app-configuration/load-config-file.js.map +1 -1
- package/dist/core/app-configuration/load-config-file.mjs +1 -1
- package/dist/core/app-configuration/load-config-file.mjs.map +1 -1
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/bootstrap.mjs.map +1 -1
- package/dist/core/domain/content-type/index.js.map +1 -1
- package/dist/core/domain/content-type/index.mjs.map +1 -1
- package/dist/core/domain/content-type/validator.js.map +1 -1
- package/dist/core/domain/content-type/validator.mjs.map +1 -1
- package/dist/core/domain/module/index.js.map +1 -1
- package/dist/core/domain/module/index.mjs.map +1 -1
- package/dist/core/domain/module/validation.js.map +1 -1
- package/dist/core/domain/module/validation.mjs.map +1 -1
- package/dist/core/loaders/admin.js.map +1 -1
- package/dist/core/loaders/admin.mjs.map +1 -1
- package/dist/core/loaders/apis.js.map +1 -1
- package/dist/core/loaders/apis.mjs.map +1 -1
- package/dist/core/loaders/components.js.map +1 -1
- package/dist/core/loaders/components.mjs.map +1 -1
- package/dist/core/loaders/index.js.map +1 -1
- package/dist/core/loaders/index.mjs.map +1 -1
- package/dist/core/loaders/middlewares.js.map +1 -1
- package/dist/core/loaders/middlewares.mjs.map +1 -1
- package/dist/core/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/core/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/core/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/core/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/core/loaders/plugins/index.js.map +1 -1
- package/dist/core/loaders/plugins/index.mjs +1 -1
- package/dist/core/loaders/plugins/index.mjs.map +1 -1
- package/dist/core/loaders/policies.js.map +1 -1
- package/dist/core/loaders/policies.mjs.map +1 -1
- package/dist/core/loaders/sanitizers.js.map +1 -1
- package/dist/core/loaders/sanitizers.mjs.map +1 -1
- package/dist/core/loaders/src-index.js.map +1 -1
- package/dist/core/loaders/src-index.mjs.map +1 -1
- package/dist/core/loaders/validators.js.map +1 -1
- package/dist/core/loaders/validators.mjs.map +1 -1
- package/dist/core/registries/apis.js.map +1 -1
- package/dist/core/registries/apis.mjs.map +1 -1
- package/dist/core/registries/config.js.map +1 -1
- package/dist/core/registries/config.mjs.map +1 -1
- package/dist/core/registries/content-types.js.map +1 -1
- package/dist/core/registries/content-types.mjs +2 -2
- package/dist/core/registries/content-types.mjs.map +1 -1
- package/dist/core/registries/controllers.js.map +1 -1
- package/dist/core/registries/controllers.mjs +2 -2
- package/dist/core/registries/controllers.mjs.map +1 -1
- package/dist/core/registries/custom-fields.js.map +1 -1
- package/dist/core/registries/custom-fields.mjs.map +1 -1
- package/dist/core/registries/hooks.js.map +1 -1
- package/dist/core/registries/hooks.mjs +1 -1
- package/dist/core/registries/hooks.mjs.map +1 -1
- package/dist/core/registries/middlewares.js.map +1 -1
- package/dist/core/registries/middlewares.mjs +2 -2
- package/dist/core/registries/middlewares.mjs.map +1 -1
- package/dist/core/registries/modules.js.map +1 -1
- package/dist/core/registries/modules.mjs +1 -1
- package/dist/core/registries/modules.mjs.map +1 -1
- package/dist/core/registries/plugins.js.map +1 -1
- package/dist/core/registries/plugins.mjs.map +1 -1
- package/dist/core/registries/policies.js.map +1 -1
- package/dist/core/registries/policies.mjs +2 -2
- package/dist/core/registries/policies.mjs.map +1 -1
- package/dist/core/registries/sanitizers.js.map +1 -1
- package/dist/core/registries/sanitizers.mjs.map +1 -1
- package/dist/core/registries/services.js.map +1 -1
- package/dist/core/registries/services.mjs +2 -2
- package/dist/core/registries/services.mjs.map +1 -1
- package/dist/core/registries/validators.js.map +1 -1
- package/dist/core/registries/validators.mjs.map +1 -1
- package/dist/core/utils.js.map +1 -1
- package/dist/core/utils.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +1 -1
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/get-fetch-params.js.map +1 -1
- package/dist/core-api/service/get-fetch-params.mjs.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.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +1 -1
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/core-api/service/single-type.js +1 -2
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +2 -3
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +1 -1
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.js +4 -4
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs.map +1 -1
- package/dist/load/filepath-to-prop-path.js.map +1 -1
- package/dist/load/load-files.js +1 -2
- package/dist/load/load-files.js.map +1 -1
- package/dist/load/load-files.mjs +1 -2
- package/dist/load/load-files.mjs.map +1 -1
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.js.map +1 -1
- package/dist/middlewares/favicon.mjs.map +1 -1
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/logger.js.map +1 -1
- package/dist/middlewares/logger.mjs.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/index.js +1 -2
- package/dist/middlewares/public/index.js.map +1 -1
- package/dist/middlewares/public/index.mjs +1 -2
- package/dist/middlewares/public/index.mjs.map +1 -1
- package/dist/middlewares/public/serve-static.js.map +1 -1
- package/dist/middlewares/public/serve-static.mjs.map +1 -1
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/query.mjs.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.js.map +1 -1
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/engine.js.map +1 -1
- package/dist/services/content-api/permissions/engine.mjs.map +1 -1
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/providers/action.js.map +1 -1
- package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/cron.js +1 -2
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +1 -2
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/custom-fields.js.map +1 -1
- package/dist/services/custom-fields.mjs.map +1 -1
- package/dist/services/entity-service/attributes/index.js.map +1 -1
- package/dist/services/entity-service/attributes/index.mjs.map +1 -1
- package/dist/services/entity-service/attributes/transforms.js.map +1 -1
- package/dist/services/entity-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/entity-service/components.js.map +1 -1
- package/dist/services/entity-service/components.mjs +1 -1
- package/dist/services/entity-service/components.mjs.map +1 -1
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +2 -2
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/entity-service/params.js.map +1 -1
- package/dist/services/entity-service/params.mjs.map +1 -1
- package/dist/services/entity-validator/blocks-validator.js.map +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +1 -1
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/errors.js.map +1 -1
- package/dist/services/errors.mjs.map +1 -1
- package/dist/services/event-hub.js.map +1 -1
- package/dist/services/event-hub.mjs.map +1 -1
- package/dist/services/features.js.map +1 -1
- package/dist/services/features.mjs.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.js.map +1 -1
- package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
- package/dist/services/metrics/index.js +1 -2
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs +1 -2
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/is-truthy.js.map +1 -1
- package/dist/services/metrics/is-truthy.mjs.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.js.map +1 -1
- package/dist/services/metrics/rate-limiter.mjs.map +1 -1
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/request-context.js.map +1 -1
- package/dist/services/request-context.mjs.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.js.map +1 -1
- package/dist/services/server/api.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.js +1 -1
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +1 -1
- package/dist/services/server/compose-endpoint.mjs.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.js.map +1 -1
- package/dist/services/server/http-server.mjs.map +1 -1
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/index.mjs.map +1 -1
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs.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.js.map +1 -1
- package/dist/services/server/policy.mjs.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.js.map +1 -1
- package/dist/services/server/register-routes.mjs.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.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs.map +1 -1
- package/dist/services/utils/upload-files.js +2 -4
- package/dist/services/utils/upload-files.js.map +1 -1
- package/dist/services/utils/upload-files.mjs +2 -4
- package/dist/services/utils/upload-files.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.js.map +1 -1
- package/dist/services/webhook-store.mjs.map +1 -1
- package/dist/services/worker-queue.js.map +1 -1
- package/dist/services/worker-queue.mjs.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/cron.js.map +1 -1
- package/dist/utils/cron.mjs.map +1 -1
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/get-dirs.js.map +1 -1
- package/dist/utils/get-dirs.mjs +1 -1
- package/dist/utils/get-dirs.mjs.map +1 -1
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/machine-id.js.map +1 -1
- package/dist/utils/machine-id.mjs.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/open-browser.mjs.map +1 -1
- package/dist/utils/signals.js.map +1 -1
- package/dist/utils/signals.mjs.map +1 -1
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/update-notifier/index.js.map +1 -1
- package/dist/utils/update-notifier/index.mjs.map +1 -1
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.mjs","sources":["../../../src/core/registries/hooks.ts"],"sourcesContent":["import { pickBy } from 'lodash/fp';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype Handler = (context: any) => any;\n\ntype AsyncHook = {\n handlers: Handler[];\n register(handler: Handler): AsyncHook;\n delete(handler: Handler): AsyncHook;\n call(): Promise<void>;\n};\n\ntype SyncHook = {\n get handlers(): Handler[];\n register(handler: Handler): SyncHook;\n delete(handler: Handler): SyncHook;\n call(): void;\n};\n\nexport type Hook = AsyncHook | SyncHook;\n\ntype HookExtendFn = (hook: Hook) => Hook;\n\nconst hooksRegistry = () => {\n const hooks: Record<string, Hook> = {};\n\n return {\n /**\n * Returns this list of registered hooks uids\n */\n keys() {\n return Object.keys(hooks);\n },\n\n /**\n * Returns the instance of a hook.\n */\n get(uid: string) {\n return hooks[uid];\n },\n\n /**\n * Returns a map with all the hooks in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(hooks);\n },\n\n /**\n * Registers a hook\n */\n set(uid: string, hook: Hook) {\n hooks[uid] = hook;\n return this;\n },\n\n /**\n * Registers a map of hooks for a specific namespace\n */\n add(namespace: string, hooks: Record<string, Hook>) {\n for (const hookName of Object.keys(hooks)) {\n const hook = hooks[hookName];\n const uid = addNamespace(hookName, namespace);\n\n this.set(uid, hook);\n }\n\n return this;\n },\n\n /**\n * Wraps a hook to extend it\n */\n extend(uid: string, extendFn: HookExtendFn) {\n const currentHook = this.get(uid);\n\n if (!currentHook) {\n throw new Error(`Hook ${uid} doesn't exist`);\n }\n\n const newHook = extendFn(currentHook);\n hooks[uid] = newHook;\n\n return this;\n },\n };\n};\n\nexport default hooksRegistry;\n"],"names":["hooks"],"mappings":";;AAuBA,MAAM,gBAAgB,MAAM;AAC1B,QAAM,QAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"hooks.mjs","sources":["../../../src/core/registries/hooks.ts"],"sourcesContent":["import { pickBy } from 'lodash/fp';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype Handler = (context: any) => any;\n\ntype AsyncHook = {\n handlers: Handler[];\n register(handler: Handler): AsyncHook;\n delete(handler: Handler): AsyncHook;\n call(): Promise<void>;\n};\n\ntype SyncHook = {\n get handlers(): Handler[];\n register(handler: Handler): SyncHook;\n delete(handler: Handler): SyncHook;\n call(): void;\n};\n\nexport type Hook = AsyncHook | SyncHook;\n\ntype HookExtendFn = (hook: Hook) => Hook;\n\nconst hooksRegistry = () => {\n const hooks: Record<string, Hook> = {};\n\n return {\n /**\n * Returns this list of registered hooks uids\n */\n keys() {\n return Object.keys(hooks);\n },\n\n /**\n * Returns the instance of a hook.\n */\n get(uid: string) {\n return hooks[uid];\n },\n\n /**\n * Returns a map with all the hooks in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(hooks);\n },\n\n /**\n * Registers a hook\n */\n set(uid: string, hook: Hook) {\n hooks[uid] = hook;\n return this;\n },\n\n /**\n * Registers a map of hooks for a specific namespace\n */\n add(namespace: string, hooks: Record<string, Hook>) {\n for (const hookName of Object.keys(hooks)) {\n const hook = hooks[hookName];\n const uid = addNamespace(hookName, namespace);\n\n this.set(uid, hook);\n }\n\n return this;\n },\n\n /**\n * Wraps a hook to extend it\n */\n extend(uid: string, extendFn: HookExtendFn) {\n const currentHook = this.get(uid);\n\n if (!currentHook) {\n throw new Error(`Hook ${uid} doesn't exist`);\n }\n\n const newHook = extendFn(currentHook);\n hooks[uid] = newHook;\n\n return this;\n },\n };\n};\n\nexport default hooksRegistry;\n"],"names":["hooks"],"mappings":";;AAuBA,MAAM,gBAAgB,MAAM;AAC1B,QAAM,QAA8B,CAAA;AAEpC,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,KAAK;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa;AACf,aAAO,MAAM,GAAG;AAAA,IAClB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAO,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,KAAK;AAAA,IAC/D;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,MAAY;AAC3B,YAAM,GAAG,IAAI;AACb,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmBA,QAA6B;AAClD,iBAAW,YAAY,OAAO,KAAKA,MAAK,GAAG;AACzC,cAAM,OAAOA,OAAM,QAAQ;AAC3B,cAAM,MAAM,aAAa,UAAU,SAAS;AAE5C,aAAK,IAAI,KAAK,IAAI;AAAA,MACpB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,KAAa,UAAwB;AAC1C,YAAM,cAAc,KAAK,IAAI,GAAG;AAEhC,UAAI,CAAC,aAAa;AAChB,cAAM,IAAI,MAAM,QAAQ,GAAG,gBAAgB;AAAA,MAC7C;AAEA,YAAM,UAAU,SAAS,WAAW;AACpC,YAAM,GAAG,IAAI;AAEb,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.js","sources":["../../../src/core/registries/middlewares.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype MiddlewareExtendFn = (middleware: Common.Middleware) => Common.Middleware;\n\n// TODO: move instantiation part here instead of in the server service\nconst middlewaresRegistry = () => {\n const middlewares: Record<Common.UID.Middleware, Common.Middleware> = {};\n\n return {\n /**\n * Returns this list of registered middlewares uids\n */\n keys() {\n return Object.keys(middlewares);\n },\n\n /**\n * Returns the instance of a middleware. Instantiate the middleware if not already done\n */\n get(uid: Common.UID.Middleware) {\n return middlewares[uid];\n },\n\n /**\n * Returns a map with all the middlewares in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(middlewares);\n },\n\n /**\n * Registers a middleware\n */\n set(uid: Common.UID.Middleware, middleware: Common.Middleware) {\n middlewares[uid] = middleware;\n return this;\n },\n\n /**\n * Registers a map of middlewares for a specific namespace\n */\n add(namespace: string, rawMiddlewares: Record<string, Common.Middleware> = {}) {\n for (const middlewareName of Object.keys(rawMiddlewares)) {\n const middleware = rawMiddlewares[middlewareName];\n const uid = addNamespace(middlewareName, namespace) as Common.UID.Middleware;\n\n if (has(uid, middlewares)) {\n throw new Error(`Middleware ${uid} has already been registered.`);\n }\n middlewares[uid] = middleware;\n }\n },\n\n /**\n * Wraps a middleware to extend it\n */\n extend(uid: Common.UID.Middleware, extendFn: MiddlewareExtendFn) {\n const currentMiddleware = this.get(uid);\n\n if (!currentMiddleware) {\n throw new Error(`Middleware ${uid} doesn't exist`);\n }\n\n const newMiddleware = extendFn(currentMiddleware);\n middlewares[uid] = newMiddleware;\n\n return this;\n },\n };\n};\n\nexport default middlewaresRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;AAOA,MAAM,sBAAsB,MAAM;AAChC,QAAM,cAAgE,CAAA;
|
|
1
|
+
{"version":3,"file":"middlewares.js","sources":["../../../src/core/registries/middlewares.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype MiddlewareExtendFn = (middleware: Common.Middleware) => Common.Middleware;\n\n// TODO: move instantiation part here instead of in the server service\nconst middlewaresRegistry = () => {\n const middlewares: Record<Common.UID.Middleware, Common.Middleware> = {};\n\n return {\n /**\n * Returns this list of registered middlewares uids\n */\n keys() {\n return Object.keys(middlewares);\n },\n\n /**\n * Returns the instance of a middleware. Instantiate the middleware if not already done\n */\n get(uid: Common.UID.Middleware) {\n return middlewares[uid];\n },\n\n /**\n * Returns a map with all the middlewares in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(middlewares);\n },\n\n /**\n * Registers a middleware\n */\n set(uid: Common.UID.Middleware, middleware: Common.Middleware) {\n middlewares[uid] = middleware;\n return this;\n },\n\n /**\n * Registers a map of middlewares for a specific namespace\n */\n add(namespace: string, rawMiddlewares: Record<string, Common.Middleware> = {}) {\n for (const middlewareName of Object.keys(rawMiddlewares)) {\n const middleware = rawMiddlewares[middlewareName];\n const uid = addNamespace(middlewareName, namespace) as Common.UID.Middleware;\n\n if (has(uid, middlewares)) {\n throw new Error(`Middleware ${uid} has already been registered.`);\n }\n middlewares[uid] = middleware;\n }\n },\n\n /**\n * Wraps a middleware to extend it\n */\n extend(uid: Common.UID.Middleware, extendFn: MiddlewareExtendFn) {\n const currentMiddleware = this.get(uid);\n\n if (!currentMiddleware) {\n throw new Error(`Middleware ${uid} doesn't exist`);\n }\n\n const newMiddleware = extendFn(currentMiddleware);\n middlewares[uid] = newMiddleware;\n\n return this;\n },\n };\n};\n\nexport default middlewaresRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;AAOA,MAAM,sBAAsB,MAAM;AAChC,QAAM,cAAgE,CAAA;AAEtE,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,WAAW;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA4B;AAC9B,aAAO,YAAY,GAAG;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAOA,GAAAA,OAAO,CAAC,GAAG,QAAQC,MAAAA,aAAa,KAAK,SAAS,CAAC,EAAE,WAAW;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA4B,YAA+B;AAC7D,kBAAY,GAAG,IAAI;AACnB,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,iBAAoD,IAAI;AAC7E,iBAAW,kBAAkB,OAAO,KAAK,cAAc,GAAG;AACxD,cAAM,aAAa,eAAe,cAAc;AAChD,cAAM,MAAMC,MAAAA,aAAa,gBAAgB,SAAS;AAElD,YAAIC,GAAAA,IAAI,KAAK,WAAW,GAAG;AACzB,gBAAM,IAAI,MAAM,cAAc,GAAG,+BAA+B;AAAA,QAClE;AACA,oBAAY,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,KAA4B,UAA8B;AAC/D,YAAM,oBAAoB,KAAK,IAAI,GAAG;AAEtC,UAAI,CAAC,mBAAmB;AACtB,cAAM,IAAI,MAAM,cAAc,GAAG,gBAAgB;AAAA,MACnD;AAEA,YAAM,gBAAgB,SAAS,iBAAiB;AAChD,kBAAY,GAAG,IAAI;AAEnB,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { has, pickBy } from "lodash/fp";
|
|
2
|
+
import { addNamespace, hasNamespace } from "../utils.mjs";
|
|
3
3
|
const middlewaresRegistry = () => {
|
|
4
4
|
const middlewares = {};
|
|
5
5
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.mjs","sources":["../../../src/core/registries/middlewares.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype MiddlewareExtendFn = (middleware: Common.Middleware) => Common.Middleware;\n\n// TODO: move instantiation part here instead of in the server service\nconst middlewaresRegistry = () => {\n const middlewares: Record<Common.UID.Middleware, Common.Middleware> = {};\n\n return {\n /**\n * Returns this list of registered middlewares uids\n */\n keys() {\n return Object.keys(middlewares);\n },\n\n /**\n * Returns the instance of a middleware. Instantiate the middleware if not already done\n */\n get(uid: Common.UID.Middleware) {\n return middlewares[uid];\n },\n\n /**\n * Returns a map with all the middlewares in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(middlewares);\n },\n\n /**\n * Registers a middleware\n */\n set(uid: Common.UID.Middleware, middleware: Common.Middleware) {\n middlewares[uid] = middleware;\n return this;\n },\n\n /**\n * Registers a map of middlewares for a specific namespace\n */\n add(namespace: string, rawMiddlewares: Record<string, Common.Middleware> = {}) {\n for (const middlewareName of Object.keys(rawMiddlewares)) {\n const middleware = rawMiddlewares[middlewareName];\n const uid = addNamespace(middlewareName, namespace) as Common.UID.Middleware;\n\n if (has(uid, middlewares)) {\n throw new Error(`Middleware ${uid} has already been registered.`);\n }\n middlewares[uid] = middleware;\n }\n },\n\n /**\n * Wraps a middleware to extend it\n */\n extend(uid: Common.UID.Middleware, extendFn: MiddlewareExtendFn) {\n const currentMiddleware = this.get(uid);\n\n if (!currentMiddleware) {\n throw new Error(`Middleware ${uid} doesn't exist`);\n }\n\n const newMiddleware = extendFn(currentMiddleware);\n middlewares[uid] = newMiddleware;\n\n return this;\n },\n };\n};\n\nexport default middlewaresRegistry;\n"],"names":[],"mappings":";;AAOA,MAAM,sBAAsB,MAAM;AAChC,QAAM,cAAgE,CAAA;
|
|
1
|
+
{"version":3,"file":"middlewares.mjs","sources":["../../../src/core/registries/middlewares.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype MiddlewareExtendFn = (middleware: Common.Middleware) => Common.Middleware;\n\n// TODO: move instantiation part here instead of in the server service\nconst middlewaresRegistry = () => {\n const middlewares: Record<Common.UID.Middleware, Common.Middleware> = {};\n\n return {\n /**\n * Returns this list of registered middlewares uids\n */\n keys() {\n return Object.keys(middlewares);\n },\n\n /**\n * Returns the instance of a middleware. Instantiate the middleware if not already done\n */\n get(uid: Common.UID.Middleware) {\n return middlewares[uid];\n },\n\n /**\n * Returns a map with all the middlewares in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(middlewares);\n },\n\n /**\n * Registers a middleware\n */\n set(uid: Common.UID.Middleware, middleware: Common.Middleware) {\n middlewares[uid] = middleware;\n return this;\n },\n\n /**\n * Registers a map of middlewares for a specific namespace\n */\n add(namespace: string, rawMiddlewares: Record<string, Common.Middleware> = {}) {\n for (const middlewareName of Object.keys(rawMiddlewares)) {\n const middleware = rawMiddlewares[middlewareName];\n const uid = addNamespace(middlewareName, namespace) as Common.UID.Middleware;\n\n if (has(uid, middlewares)) {\n throw new Error(`Middleware ${uid} has already been registered.`);\n }\n middlewares[uid] = middleware;\n }\n },\n\n /**\n * Wraps a middleware to extend it\n */\n extend(uid: Common.UID.Middleware, extendFn: MiddlewareExtendFn) {\n const currentMiddleware = this.get(uid);\n\n if (!currentMiddleware) {\n throw new Error(`Middleware ${uid} doesn't exist`);\n }\n\n const newMiddleware = extendFn(currentMiddleware);\n middlewares[uid] = newMiddleware;\n\n return this;\n },\n };\n};\n\nexport default middlewaresRegistry;\n"],"names":[],"mappings":";;AAOA,MAAM,sBAAsB,MAAM;AAChC,QAAM,cAAgE,CAAA;AAEtE,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,WAAW;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA4B;AAC9B,aAAO,YAAY,GAAG;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAO,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,WAAW;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAA4B,YAA+B;AAC7D,kBAAY,GAAG,IAAI;AACnB,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,iBAAoD,IAAI;AAC7E,iBAAW,kBAAkB,OAAO,KAAK,cAAc,GAAG;AACxD,cAAM,aAAa,eAAe,cAAc;AAChD,cAAM,MAAM,aAAa,gBAAgB,SAAS;AAElD,YAAI,IAAI,KAAK,WAAW,GAAG;AACzB,gBAAM,IAAI,MAAM,cAAc,GAAG,+BAA+B;AAAA,QAClE;AACA,oBAAY,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,KAA4B,UAA8B;AAC/D,YAAM,oBAAoB,KAAK,IAAI,GAAG;AAEtC,UAAI,CAAC,mBAAmB;AACtB,cAAM,IAAI,MAAM,cAAc,GAAG,gBAAgB;AAAA,MACnD;AAEA,YAAM,gBAAgB,SAAS,iBAAiB;AAChD,kBAAY,GAAG,IAAI;AAEnB,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sources":["../../../src/core/registries/modules.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi } from '@strapi/types';\nimport { createModule, RawModule, Module } from '../domain/module';\n\ntype ModuleMap = { [namespace: string]: Module };\n\nconst modulesRegistry = (strapi: Strapi) => {\n const modules: ModuleMap = {};\n\n return {\n get(namespace: string) {\n return modules[namespace];\n },\n getAll(prefix = '') {\n return pickBy<ModuleMap>((mod, namespace) => namespace.startsWith(prefix))(modules);\n },\n add(namespace: string, rawModule: RawModule) {\n if (has(namespace, modules)) {\n throw new Error(`Module ${namespace} has already been registered.`);\n }\n\n modules[namespace] = createModule(namespace, rawModule, strapi);\n modules[namespace].load();\n\n return modules[namespace];\n },\n async bootstrap() {\n for (const mod of Object.values(modules)) {\n await mod.bootstrap();\n }\n },\n async register() {\n for (const mod of Object.values(modules)) {\n await mod.register();\n }\n },\n async destroy() {\n for (const mod of Object.values(modules)) {\n await mod.destroy();\n }\n },\n };\n};\n\nexport default modulesRegistry;\n"],"names":["pickBy","has","createModule"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"modules.js","sources":["../../../src/core/registries/modules.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi } from '@strapi/types';\nimport { createModule, RawModule, Module } from '../domain/module';\n\ntype ModuleMap = { [namespace: string]: Module };\n\nconst modulesRegistry = (strapi: Strapi) => {\n const modules: ModuleMap = {};\n\n return {\n get(namespace: string) {\n return modules[namespace];\n },\n getAll(prefix = '') {\n return pickBy<ModuleMap>((mod, namespace) => namespace.startsWith(prefix))(modules);\n },\n add(namespace: string, rawModule: RawModule) {\n if (has(namespace, modules)) {\n throw new Error(`Module ${namespace} has already been registered.`);\n }\n\n modules[namespace] = createModule(namespace, rawModule, strapi);\n modules[namespace].load();\n\n return modules[namespace];\n },\n async bootstrap() {\n for (const mod of Object.values(modules)) {\n await mod.bootstrap();\n }\n },\n async register() {\n for (const mod of Object.values(modules)) {\n await mod.register();\n }\n },\n async destroy() {\n for (const mod of Object.values(modules)) {\n await mod.destroy();\n }\n },\n };\n};\n\nexport default modulesRegistry;\n"],"names":["pickBy","has","createModule"],"mappings":";;;AAMA,MAAM,kBAAkB,CAAC,WAAmB;AAC1C,QAAM,UAAqB,CAAA;AAE3B,SAAO;AAAA,IACL,IAAI,WAAmB;AACrB,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAAA,IACA,OAAO,SAAS,IAAI;AAClB,aAAOA,GAAAA,OAAkB,CAAC,KAAK,cAAc,UAAU,WAAW,MAAM,CAAC,EAAE,OAAO;AAAA,IACpF;AAAA,IACA,IAAI,WAAmB,WAAsB;AAC3C,UAAIC,GAAAA,IAAI,WAAW,OAAO,GAAG;AAC3B,cAAM,IAAI,MAAM,UAAU,SAAS,+BAA+B;AAAA,MACpE;AAEA,cAAQ,SAAS,IAAIC,MAAAA,aAAa,WAAW,WAAW,MAAM;AAC9D,cAAQ,SAAS,EAAE,KAAA;AAEnB,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAAA,IACA,MAAM,YAAY;AAChB,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,UAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM,WAAW;AACf,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,SAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM,UAAU;AACd,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,QAAA;AAAA,MACZ;AAAA,IACF;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.mjs","sources":["../../../src/core/registries/modules.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi } from '@strapi/types';\nimport { createModule, RawModule, Module } from '../domain/module';\n\ntype ModuleMap = { [namespace: string]: Module };\n\nconst modulesRegistry = (strapi: Strapi) => {\n const modules: ModuleMap = {};\n\n return {\n get(namespace: string) {\n return modules[namespace];\n },\n getAll(prefix = '') {\n return pickBy<ModuleMap>((mod, namespace) => namespace.startsWith(prefix))(modules);\n },\n add(namespace: string, rawModule: RawModule) {\n if (has(namespace, modules)) {\n throw new Error(`Module ${namespace} has already been registered.`);\n }\n\n modules[namespace] = createModule(namespace, rawModule, strapi);\n modules[namespace].load();\n\n return modules[namespace];\n },\n async bootstrap() {\n for (const mod of Object.values(modules)) {\n await mod.bootstrap();\n }\n },\n async register() {\n for (const mod of Object.values(modules)) {\n await mod.register();\n }\n },\n async destroy() {\n for (const mod of Object.values(modules)) {\n await mod.destroy();\n }\n },\n };\n};\n\nexport default modulesRegistry;\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"modules.mjs","sources":["../../../src/core/registries/modules.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi } from '@strapi/types';\nimport { createModule, RawModule, Module } from '../domain/module';\n\ntype ModuleMap = { [namespace: string]: Module };\n\nconst modulesRegistry = (strapi: Strapi) => {\n const modules: ModuleMap = {};\n\n return {\n get(namespace: string) {\n return modules[namespace];\n },\n getAll(prefix = '') {\n return pickBy<ModuleMap>((mod, namespace) => namespace.startsWith(prefix))(modules);\n },\n add(namespace: string, rawModule: RawModule) {\n if (has(namespace, modules)) {\n throw new Error(`Module ${namespace} has already been registered.`);\n }\n\n modules[namespace] = createModule(namespace, rawModule, strapi);\n modules[namespace].load();\n\n return modules[namespace];\n },\n async bootstrap() {\n for (const mod of Object.values(modules)) {\n await mod.bootstrap();\n }\n },\n async register() {\n for (const mod of Object.values(modules)) {\n await mod.register();\n }\n },\n async destroy() {\n for (const mod of Object.values(modules)) {\n await mod.destroy();\n }\n },\n };\n};\n\nexport default modulesRegistry;\n"],"names":[],"mappings":";;AAMA,MAAM,kBAAkB,CAAC,WAAmB;AAC1C,QAAM,UAAqB,CAAA;AAE3B,SAAO;AAAA,IACL,IAAI,WAAmB;AACrB,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAAA,IACA,OAAO,SAAS,IAAI;AAClB,aAAO,OAAkB,CAAC,KAAK,cAAc,UAAU,WAAW,MAAM,CAAC,EAAE,OAAO;AAAA,IACpF;AAAA,IACA,IAAI,WAAmB,WAAsB;AAC3C,UAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,cAAM,IAAI,MAAM,UAAU,SAAS,+BAA+B;AAAA,MACpE;AAEA,cAAQ,SAAS,IAAI,aAAa,WAAW,WAAW,MAAM;AAC9D,cAAQ,SAAS,EAAE,KAAA;AAEnB,aAAO,QAAQ,SAAS;AAAA,IAC1B;AAAA,IACA,MAAM,YAAY;AAChB,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,UAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM,WAAW;AACf,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,SAAA;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM,UAAU;AACd,iBAAW,OAAO,OAAO,OAAO,OAAO,GAAG;AACxC,cAAM,IAAI,QAAA;AAAA,MACZ;AAAA,IACF;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sources":["../../../src/core/registries/plugins.ts"],"sourcesContent":["import { has } from 'lodash/fp';\n\nimport type { Strapi, Common } from '@strapi/types';\n\ntype PluginMap = Record<string, Common.Plugin>;\n\nconst pluginsRegistry = (strapi: Strapi) => {\n const plugins: PluginMap = {};\n\n return {\n get(name: string) {\n return plugins[name];\n },\n getAll() {\n return plugins;\n },\n add(name: string, pluginConfig: Common.Plugin) {\n if (has(name, plugins)) {\n throw new Error(`Plugin ${name} has already been registered.`);\n }\n\n const pluginModule = strapi.container.get('modules').add(`plugin::${name}`, pluginConfig);\n plugins[name] = pluginModule;\n\n return plugins[name];\n },\n };\n};\n\nexport default pluginsRegistry;\n"],"names":["has"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"plugins.js","sources":["../../../src/core/registries/plugins.ts"],"sourcesContent":["import { has } from 'lodash/fp';\n\nimport type { Strapi, Common } from '@strapi/types';\n\ntype PluginMap = Record<string, Common.Plugin>;\n\nconst pluginsRegistry = (strapi: Strapi) => {\n const plugins: PluginMap = {};\n\n return {\n get(name: string) {\n return plugins[name];\n },\n getAll() {\n return plugins;\n },\n add(name: string, pluginConfig: Common.Plugin) {\n if (has(name, plugins)) {\n throw new Error(`Plugin ${name} has already been registered.`);\n }\n\n const pluginModule = strapi.container.get('modules').add(`plugin::${name}`, pluginConfig);\n plugins[name] = pluginModule;\n\n return plugins[name];\n },\n };\n};\n\nexport default pluginsRegistry;\n"],"names":["has"],"mappings":";;AAMA,MAAM,kBAAkB,CAAC,WAAmB;AAC1C,QAAM,UAAqB,CAAA;AAE3B,SAAO;AAAA,IACL,IAAI,MAAc;AAChB,aAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,IACA,SAAS;AACP,aAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAc,cAA6B;AAC7C,UAAIA,GAAAA,IAAI,MAAM,OAAO,GAAG;AACtB,cAAM,IAAI,MAAM,UAAU,IAAI,+BAA+B;AAAA,MAC/D;AAEA,YAAM,eAAe,OAAO,UAAU,IAAI,SAAS,EAAE,IAAI,WAAW,IAAI,IAAI,YAAY;AACxF,cAAQ,IAAI,IAAI;AAEhB,aAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.mjs","sources":["../../../src/core/registries/plugins.ts"],"sourcesContent":["import { has } from 'lodash/fp';\n\nimport type { Strapi, Common } from '@strapi/types';\n\ntype PluginMap = Record<string, Common.Plugin>;\n\nconst pluginsRegistry = (strapi: Strapi) => {\n const plugins: PluginMap = {};\n\n return {\n get(name: string) {\n return plugins[name];\n },\n getAll() {\n return plugins;\n },\n add(name: string, pluginConfig: Common.Plugin) {\n if (has(name, plugins)) {\n throw new Error(`Plugin ${name} has already been registered.`);\n }\n\n const pluginModule = strapi.container.get('modules').add(`plugin::${name}`, pluginConfig);\n plugins[name] = pluginModule;\n\n return plugins[name];\n },\n };\n};\n\nexport default pluginsRegistry;\n"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"plugins.mjs","sources":["../../../src/core/registries/plugins.ts"],"sourcesContent":["import { has } from 'lodash/fp';\n\nimport type { Strapi, Common } from '@strapi/types';\n\ntype PluginMap = Record<string, Common.Plugin>;\n\nconst pluginsRegistry = (strapi: Strapi) => {\n const plugins: PluginMap = {};\n\n return {\n get(name: string) {\n return plugins[name];\n },\n getAll() {\n return plugins;\n },\n add(name: string, pluginConfig: Common.Plugin) {\n if (has(name, plugins)) {\n throw new Error(`Plugin ${name} has already been registered.`);\n }\n\n const pluginModule = strapi.container.get('modules').add(`plugin::${name}`, pluginConfig);\n plugins[name] = pluginModule;\n\n return plugins[name];\n },\n };\n};\n\nexport default pluginsRegistry;\n"],"names":[],"mappings":";AAMA,MAAM,kBAAkB,CAAC,WAAmB;AAC1C,QAAM,UAAqB,CAAA;AAE3B,SAAO;AAAA,IACL,IAAI,MAAc;AAChB,aAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,IACA,SAAS;AACP,aAAO;AAAA,IACT;AAAA,IACA,IAAI,MAAc,cAA6B;AAC7C,UAAI,IAAI,MAAM,OAAO,GAAG;AACtB,cAAM,IAAI,MAAM,UAAU,IAAI,+BAA+B;AAAA,MAC/D;AAEA,YAAM,eAAe,OAAO,UAAU,IAAI,SAAS,EAAE,IAAI,WAAW,IAAI,IAAI,YAAY;AACxF,cAAQ,IAAI,IAAI;AAEhB,aAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sources":["../../../src/core/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype PolicyExtendFn = (policy: Common.Policy) => Common.Policy;\ntype PolicyMap = Record<string, Common.Policy>;\n\n// TODO: move instantiation part here instead of in the policy utils\nconst policiesRegistry = () => {\n const policies: PolicyMap = {};\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return Object.keys(policies);\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(uid: Common.UID.Policy) {\n return policies[uid];\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(policies);\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Common.Policy) {\n policies[uid] = policy;\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: PolicyMap) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n policies[uid] = policy;\n }\n },\n\n /**\n * Wraps a policy to extend it\n * @param {string} uid\n * @param {(policy: Policy) => Policy} extendFn\n */\n extend(uid: Common.UID.Policy, extendFn: PolicyExtendFn) {\n const currentPolicy = this.get(uid);\n\n if (!currentPolicy) {\n throw new Error(`Policy ${uid} doesn't exist`);\n }\n\n const newPolicy = extendFn(currentPolicy);\n policies[uid] = newPolicy;\n\n return this;\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;AAQA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,WAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"policies.js","sources":["../../../src/core/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype PolicyExtendFn = (policy: Common.Policy) => Common.Policy;\ntype PolicyMap = Record<string, Common.Policy>;\n\n// TODO: move instantiation part here instead of in the policy utils\nconst policiesRegistry = () => {\n const policies: PolicyMap = {};\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return Object.keys(policies);\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(uid: Common.UID.Policy) {\n return policies[uid];\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(policies);\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Common.Policy) {\n policies[uid] = policy;\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: PolicyMap) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n policies[uid] = policy;\n }\n },\n\n /**\n * Wraps a policy to extend it\n * @param {string} uid\n * @param {(policy: Policy) => Policy} extendFn\n */\n extend(uid: Common.UID.Policy, extendFn: PolicyExtendFn) {\n const currentPolicy = this.get(uid);\n\n if (!currentPolicy) {\n throw new Error(`Policy ${uid} doesn't exist`);\n }\n\n const newPolicy = extendFn(currentPolicy);\n policies[uid] = newPolicy;\n\n return this;\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;AAQA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,WAAsB,CAAA;AAE5B,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,QAAQ;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAwB;AAC1B,aAAO,SAAS,GAAG;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAOA,GAAAA,OAAO,CAAC,GAAG,QAAQC,MAAAA,aAAa,KAAK,SAAS,CAAC,EAAE,QAAQ;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,QAAuB;AACtC,eAAS,GAAG,IAAI;AAChB,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,aAAwB;AAC7C,iBAAW,cAAc,OAAO,KAAK,WAAW,GAAG;AACjD,cAAM,SAAS,YAAY,UAAU;AACrC,cAAM,MAAMC,MAAAA,aAAa,YAAY,SAAS;AAE9C,YAAIC,GAAAA,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,UAAU,GAAG,+BAA+B;AAAA,QAC9D;AACA,iBAAS,GAAG,IAAI;AAAA,MAClB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAO,KAAwB,UAA0B;AACvD,YAAM,gBAAgB,KAAK,IAAI,GAAG;AAElC,UAAI,CAAC,eAAe;AAClB,cAAM,IAAI,MAAM,UAAU,GAAG,gBAAgB;AAAA,MAC/C;AAEA,YAAM,YAAY,SAAS,aAAa;AACxC,eAAS,GAAG,IAAI;AAEhB,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { has, pickBy } from "lodash/fp";
|
|
2
|
+
import { addNamespace, hasNamespace } from "../utils.mjs";
|
|
3
3
|
const policiesRegistry = () => {
|
|
4
4
|
const policies = {};
|
|
5
5
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.mjs","sources":["../../../src/core/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype PolicyExtendFn = (policy: Common.Policy) => Common.Policy;\ntype PolicyMap = Record<string, Common.Policy>;\n\n// TODO: move instantiation part here instead of in the policy utils\nconst policiesRegistry = () => {\n const policies: PolicyMap = {};\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return Object.keys(policies);\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(uid: Common.UID.Policy) {\n return policies[uid];\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(policies);\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Common.Policy) {\n policies[uid] = policy;\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: PolicyMap) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n policies[uid] = policy;\n }\n },\n\n /**\n * Wraps a policy to extend it\n * @param {string} uid\n * @param {(policy: Policy) => Policy} extendFn\n */\n extend(uid: Common.UID.Policy, extendFn: PolicyExtendFn) {\n const currentPolicy = this.get(uid);\n\n if (!currentPolicy) {\n throw new Error(`Policy ${uid} doesn't exist`);\n }\n\n const newPolicy = extendFn(currentPolicy);\n policies[uid] = newPolicy;\n\n return this;\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":[],"mappings":";;AAQA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,WAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"policies.mjs","sources":["../../../src/core/registries/policies.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\ntype PolicyExtendFn = (policy: Common.Policy) => Common.Policy;\ntype PolicyMap = Record<string, Common.Policy>;\n\n// TODO: move instantiation part here instead of in the policy utils\nconst policiesRegistry = () => {\n const policies: PolicyMap = {};\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n return Object.keys(policies);\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(uid: Common.UID.Policy) {\n return policies[uid];\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy((_, uid) => hasNamespace(uid, namespace))(policies);\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Common.Policy) {\n policies[uid] = policy;\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: PolicyMap) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(uid, policies)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n policies[uid] = policy;\n }\n },\n\n /**\n * Wraps a policy to extend it\n * @param {string} uid\n * @param {(policy: Policy) => Policy} extendFn\n */\n extend(uid: Common.UID.Policy, extendFn: PolicyExtendFn) {\n const currentPolicy = this.get(uid);\n\n if (!currentPolicy) {\n throw new Error(`Policy ${uid} doesn't exist`);\n }\n\n const newPolicy = extendFn(currentPolicy);\n policies[uid] = newPolicy;\n\n return this;\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":[],"mappings":";;AAQA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,WAAsB,CAAA;AAE5B,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,QAAQ;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAwB;AAC1B,aAAO,SAAS,GAAG;AAAA,IACrB;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAAmB;AACxB,aAAO,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,QAAQ;AAAA,IAClE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,QAAuB;AACtC,eAAS,GAAG,IAAI;AAChB,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,aAAwB;AAC7C,iBAAW,cAAc,OAAO,KAAK,WAAW,GAAG;AACjD,cAAM,SAAS,YAAY,UAAU;AACrC,cAAM,MAAM,aAAa,YAAY,SAAS;AAE9C,YAAI,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,UAAU,GAAG,+BAA+B;AAAA,QAC9D;AACA,iBAAS,GAAG,IAAI;AAAA,MAClB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAO,KAAwB,UAA0B;AACvD,YAAM,gBAAgB,KAAK,IAAI,GAAG;AAElC,UAAI,CAAC,eAAe;AAClB,cAAM,IAAI,MAAM,UAAU,GAAG,gBAAgB;AAAA,MAC/C;AAEA,YAAM,YAAY,SAAS,aAAa;AACxC,eAAS,GAAG,IAAI;AAEhB,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.js","sources":["../../../src/core/registries/sanitizers.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Sanitizer = (value: unknown) => unknown;\n\nconst sanitizersRegistry = () => {\n const sanitizers: Record<string, Sanitizer[]> = {};\n\n return {\n get(path: PropertyName): Sanitizer[] {\n return _.get(sanitizers, path, []);\n },\n\n add(path: PropertyName, sanitizer: Sanitizer) {\n this.get(path).push(sanitizer);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(sanitizers, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(sanitizers, path);\n },\n };\n};\n\nexport default sanitizersRegistry;\n"],"names":["_"],"mappings":";;;;AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"sanitizers.js","sources":["../../../src/core/registries/sanitizers.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Sanitizer = (value: unknown) => unknown;\n\nconst sanitizersRegistry = () => {\n const sanitizers: Record<string, Sanitizer[]> = {};\n\n return {\n get(path: PropertyName): Sanitizer[] {\n return _.get(sanitizers, path, []);\n },\n\n add(path: PropertyName, sanitizer: Sanitizer) {\n this.get(path).push(sanitizer);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(sanitizers, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(sanitizers, path);\n },\n };\n};\n\nexport default sanitizersRegistry;\n"],"names":["_"],"mappings":";;;;AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;AAEhD,SAAO;AAAA,IACL,IAAI,MAAiC;AACnC,aAAOA,WAAAA,QAAE,IAAI,YAAY,MAAM,CAAA,CAAE;AAAA,IACnC;AAAA,IAEA,IAAI,MAAoB,WAAsB;AAC5C,WAAK,IAAI,IAAI,EAAE,KAAK,SAAS;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB,QAAQ,IAAI;AAClCA,iBAAAA,QAAE,IAAI,YAAY,MAAM,KAAK;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB;AACtB,aAAOA,mBAAE,IAAI,YAAY,IAAI;AAAA,IAC/B;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.mjs","sources":["../../../src/core/registries/sanitizers.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Sanitizer = (value: unknown) => unknown;\n\nconst sanitizersRegistry = () => {\n const sanitizers: Record<string, Sanitizer[]> = {};\n\n return {\n get(path: PropertyName): Sanitizer[] {\n return _.get(sanitizers, path, []);\n },\n\n add(path: PropertyName, sanitizer: Sanitizer) {\n this.get(path).push(sanitizer);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(sanitizers, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(sanitizers, path);\n },\n };\n};\n\nexport default sanitizersRegistry;\n"],"names":[],"mappings":";AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"sanitizers.mjs","sources":["../../../src/core/registries/sanitizers.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Sanitizer = (value: unknown) => unknown;\n\nconst sanitizersRegistry = () => {\n const sanitizers: Record<string, Sanitizer[]> = {};\n\n return {\n get(path: PropertyName): Sanitizer[] {\n return _.get(sanitizers, path, []);\n },\n\n add(path: PropertyName, sanitizer: Sanitizer) {\n this.get(path).push(sanitizer);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(sanitizers, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(sanitizers, path);\n },\n };\n};\n\nexport default sanitizersRegistry;\n"],"names":[],"mappings":";AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;AAEhD,SAAO;AAAA,IACL,IAAI,MAAiC;AACnC,aAAO,EAAE,IAAI,YAAY,MAAM,CAAA,CAAE;AAAA,IACnC;AAAA,IAEA,IAAI,MAAoB,WAAsB;AAC5C,WAAK,IAAI,IAAI,EAAE,KAAK,SAAS;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB,QAAQ,IAAI;AAClC,QAAE,IAAI,YAAY,MAAM,KAAK;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB;AACtB,aAAO,EAAE,IAAI,YAAY,IAAI;AAAA,IAC/B;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sources":["../../../src/core/registries/services.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi, Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\nexport type ServiceFactory = (params: { strapi: Strapi }) => Common.Service | Common.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Common.Service>;\nexport type ServiceExtendFn = (service: Common.Service) => Common.Service;\n\nconst servicesRegistry = (strapi: Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: Common.UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy((_, uid) => hasNamespace(uid, namespace))(services);\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as Common.UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(uid, services)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: Common.UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"services.js","sources":["../../../src/core/registries/services.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi, Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\nexport type ServiceFactory = (params: { strapi: Strapi }) => Common.Service | Common.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Common.Service>;\nexport type ServiceExtendFn = (service: Common.Service) => Common.Service;\n\nconst servicesRegistry = (strapi: Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: Common.UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy((_, uid) => hasNamespace(uid, namespace))(services);\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as Common.UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(uid, services)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: Common.UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":["pickBy","hasNamespace","addNamespace","has"],"mappings":";;;AASA,MAAM,mBAAmB,CAAC,WAAmB;AAC3C,QAAM,WAA8B,CAAA;AACpC,QAAM,uBAAmC,CAAA;AAEzC,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,QAAQ;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAyB;AAC3B,UAAI,qBAAqB,GAAG,GAAG;AAC7B,eAAO,qBAAqB,GAAG;AAAA,MACjC;AAEA,YAAM,UAAU,SAAS,GAAG;AAC5B,UAAI,SAAS;AACX,6BAAqB,GAAG,IAAI,OAAO,YAAY,aAAa,QAAQ,EAAE,OAAA,CAAQ,IAAI;AAClF,eAAO,qBAAqB,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAA+B;AACpC,YAAM,mBAAmBA,UAAO,CAAC,GAAG,QAAQC,MAAAA,aAAa,KAAK,SAAS,CAAC,EAAE,QAAQ;AAGlF,YAAM,MAAM,CAAA;AACZ,iBAAW,OAAO,OAAO,KAAK,gBAAgB,GAAG;AAC/C,eAAO,eAAe,KAAK,KAAK;AAAA,UAC9B,YAAY;AAAA,UACZ,KAAK,MAAM;AACT,mBAAO,KAAK,IAAI,GAAyB;AAAA,UAC3C;AAAA,QAAA,CACD;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,SAAyB;AACxC,eAAS,GAAG,IAAI;AAChB,aAAO,qBAAqB,GAAG;AAC/B,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,aAAgC;AACrD,iBAAW,eAAe,OAAO,KAAK,WAAW,GAAG;AAClD,cAAM,UAAU,YAAY,WAAW;AACvC,cAAM,MAAMC,MAAAA,aAAa,aAAa,SAAS;AAE/C,YAAIC,GAAAA,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,WAAW,GAAG,+BAA+B;AAAA,QAC/D;AACA,iBAAS,GAAG,IAAI;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,KAAyB,UAA2B;AACzD,YAAM,iBAAiB,KAAK,IAAI,GAAG;AAEnC,UAAI,CAAC,gBAAgB;AACnB,cAAM,IAAI,MAAM,WAAW,GAAG,gBAAgB;AAAA,MAChD;AAEA,YAAM,aAAa,SAAS,cAAc;AAC1C,2BAAqB,GAAG,IAAI;AAE5B,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { has, pickBy } from "lodash/fp";
|
|
2
|
+
import { addNamespace, hasNamespace } from "../utils.mjs";
|
|
3
3
|
const servicesRegistry = (strapi) => {
|
|
4
4
|
const services = {};
|
|
5
5
|
const instantiatedServices = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.mjs","sources":["../../../src/core/registries/services.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi, Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\nexport type ServiceFactory = (params: { strapi: Strapi }) => Common.Service | Common.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Common.Service>;\nexport type ServiceExtendFn = (service: Common.Service) => Common.Service;\n\nconst servicesRegistry = (strapi: Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: Common.UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy((_, uid) => hasNamespace(uid, namespace))(services);\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as Common.UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(uid, services)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: Common.UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"services.mjs","sources":["../../../src/core/registries/services.ts"],"sourcesContent":["import { pickBy, has } from 'lodash/fp';\nimport type { Strapi, Common } from '@strapi/types';\nimport { addNamespace, hasNamespace } from '../utils';\n\nexport type ServiceFactory = (params: { strapi: Strapi }) => Common.Service | Common.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Common.Service>;\nexport type ServiceExtendFn = (service: Common.Service) => Common.Service;\n\nconst servicesRegistry = (strapi: Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: Common.UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy((_, uid) => hasNamespace(uid, namespace))(services);\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as Common.UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(uid, services)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: Common.UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":[],"mappings":";;AASA,MAAM,mBAAmB,CAAC,WAAmB;AAC3C,QAAM,WAA8B,CAAA;AACpC,QAAM,uBAAmC,CAAA;AAEzC,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,OAAO;AACL,aAAO,OAAO,KAAK,QAAQ;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAyB;AAC3B,UAAI,qBAAqB,GAAG,GAAG;AAC7B,eAAO,qBAAqB,GAAG;AAAA,MACjC;AAEA,YAAM,UAAU,SAAS,GAAG;AAC5B,UAAI,SAAS;AACX,6BAAqB,GAAG,IAAI,OAAO,YAAY,aAAa,QAAQ,EAAE,OAAA,CAAQ,IAAI;AAClF,eAAO,qBAAqB,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,WAA+B;AACpC,YAAM,mBAAmB,OAAO,CAAC,GAAG,QAAQ,aAAa,KAAK,SAAS,CAAC,EAAE,QAAQ;AAGlF,YAAM,MAAM,CAAA;AACZ,iBAAW,OAAO,OAAO,KAAK,gBAAgB,GAAG;AAC/C,eAAO,eAAe,KAAK,KAAK;AAAA,UAC9B,YAAY;AAAA,UACZ,KAAK,MAAM;AACT,mBAAO,KAAK,IAAI,GAAyB;AAAA,UAC3C;AAAA,QAAA,CACD;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAa,SAAyB;AACxC,eAAS,GAAG,IAAI;AAChB,aAAO,qBAAqB,GAAG;AAC/B,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAmB,aAAgC;AACrD,iBAAW,eAAe,OAAO,KAAK,WAAW,GAAG;AAClD,cAAM,UAAU,YAAY,WAAW;AACvC,cAAM,MAAM,aAAa,aAAa,SAAS;AAE/C,YAAI,IAAI,KAAK,QAAQ,GAAG;AACtB,gBAAM,IAAI,MAAM,WAAW,GAAG,+BAA+B;AAAA,QAC/D;AACA,iBAAS,GAAG,IAAI;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,OAAO,KAAyB,UAA2B;AACzD,YAAM,iBAAiB,KAAK,IAAI,GAAG;AAEnC,UAAI,CAAC,gBAAgB;AACnB,cAAM,IAAI,MAAM,WAAW,GAAG,gBAAgB;AAAA,MAChD;AAEA,YAAM,aAAa,SAAS,cAAc;AAC1C,2BAAqB,GAAG,IAAI;AAE5B,aAAO;AAAA,IACT;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sources":["../../../src/core/registries/validators.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Validator = unknown;\n\nconst validatorsRegistry = () => {\n const validators: Record<string, Validator[]> = {};\n\n return {\n get(path: PropertyName): Validator[] {\n return _.get(validators, path, []);\n },\n\n add(path: PropertyName, validator: Validator) {\n this.get(path).push(validator);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(validators, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(validators, path);\n },\n };\n};\n\nexport default validatorsRegistry;\n"],"names":["_"],"mappings":";;;;AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"validators.js","sources":["../../../src/core/registries/validators.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Validator = unknown;\n\nconst validatorsRegistry = () => {\n const validators: Record<string, Validator[]> = {};\n\n return {\n get(path: PropertyName): Validator[] {\n return _.get(validators, path, []);\n },\n\n add(path: PropertyName, validator: Validator) {\n this.get(path).push(validator);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(validators, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(validators, path);\n },\n };\n};\n\nexport default validatorsRegistry;\n"],"names":["_"],"mappings":";;;;AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;AAEhD,SAAO;AAAA,IACL,IAAI,MAAiC;AACnC,aAAOA,WAAAA,QAAE,IAAI,YAAY,MAAM,CAAA,CAAE;AAAA,IACnC;AAAA,IAEA,IAAI,MAAoB,WAAsB;AAC5C,WAAK,IAAI,IAAI,EAAE,KAAK,SAAS;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB,QAAQ,IAAI;AAClCA,iBAAAA,QAAE,IAAI,YAAY,MAAM,KAAK;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB;AACtB,aAAOA,mBAAE,IAAI,YAAY,IAAI;AAAA,IAC/B;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.mjs","sources":["../../../src/core/registries/validators.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Validator = unknown;\n\nconst validatorsRegistry = () => {\n const validators: Record<string, Validator[]> = {};\n\n return {\n get(path: PropertyName): Validator[] {\n return _.get(validators, path, []);\n },\n\n add(path: PropertyName, validator: Validator) {\n this.get(path).push(validator);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(validators, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(validators, path);\n },\n };\n};\n\nexport default validatorsRegistry;\n"],"names":[],"mappings":";AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"validators.mjs","sources":["../../../src/core/registries/validators.ts"],"sourcesContent":["import _, { PropertyName } from 'lodash';\n\ntype Validator = unknown;\n\nconst validatorsRegistry = () => {\n const validators: Record<string, Validator[]> = {};\n\n return {\n get(path: PropertyName): Validator[] {\n return _.get(validators, path, []);\n },\n\n add(path: PropertyName, validator: Validator) {\n this.get(path).push(validator);\n return this;\n },\n\n set(path: PropertyName, value = []) {\n _.set(validators, path, value);\n return this;\n },\n\n has(path: PropertyName) {\n return _.has(validators, path);\n },\n };\n};\n\nexport default validatorsRegistry;\n"],"names":[],"mappings":";AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAA0C,CAAA;AAEhD,SAAO;AAAA,IACL,IAAI,MAAiC;AACnC,aAAO,EAAE,IAAI,YAAY,MAAM,CAAA,CAAE;AAAA,IACnC;AAAA,IAEA,IAAI,MAAoB,WAAsB;AAC5C,WAAK,IAAI,IAAI,EAAE,KAAK,SAAS;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB,QAAQ,IAAI;AAClC,QAAE,IAAI,YAAY,MAAM,KAAK;AAC7B,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,MAAoB;AACtB,aAAO,EAAE,IAAI,YAAY,IAAI;AAAA,IAC/B;AAAA,EAAA;AAEJ;"}
|
package/dist/core/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/core/utils.ts"],"sourcesContent":["const hasNamespace = (name: string, namespace: string) => {\n if (!namespace) {\n return true;\n }\n\n if (namespace.endsWith('::')) {\n return name.startsWith(namespace);\n }\n return name.startsWith(`${namespace}.`);\n};\n\nconst addNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return `${namespace}${name}`;\n }\n return `${namespace}.${name}`;\n};\n\nconst removeNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return name.replace(namespace, '');\n }\n return name.replace(`${namespace}.`, '');\n};\n\nexport { addNamespace, removeNamespace, hasNamespace };\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/core/utils.ts"],"sourcesContent":["const hasNamespace = (name: string, namespace: string) => {\n if (!namespace) {\n return true;\n }\n\n if (namespace.endsWith('::')) {\n return name.startsWith(namespace);\n }\n return name.startsWith(`${namespace}.`);\n};\n\nconst addNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return `${namespace}${name}`;\n }\n return `${namespace}.${name}`;\n};\n\nconst removeNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return name.replace(namespace, '');\n }\n return name.replace(`${namespace}.`, '');\n};\n\nexport { addNamespace, removeNamespace, hasNamespace };\n"],"names":[],"mappings":";;AAAA,MAAM,eAAe,CAAC,MAAc,cAAsB;AACxD,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AACA,SAAO,KAAK,WAAW,GAAG,SAAS,GAAG;AACxC;AAEA,MAAM,eAAe,CAAC,MAAc,cAAsB;AACxD,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,GAAG,SAAS,GAAG,IAAI;AAAA,EAC5B;AACA,SAAO,GAAG,SAAS,IAAI,IAAI;AAC7B;AAEA,MAAM,kBAAkB,CAAC,MAAc,cAAsB;AAC3D,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,KAAK,QAAQ,WAAW,EAAE;AAAA,EACnC;AACA,SAAO,KAAK,QAAQ,GAAG,SAAS,KAAK,EAAE;AACzC;;;;"}
|
package/dist/core/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../../src/core/utils.ts"],"sourcesContent":["const hasNamespace = (name: string, namespace: string) => {\n if (!namespace) {\n return true;\n }\n\n if (namespace.endsWith('::')) {\n return name.startsWith(namespace);\n }\n return name.startsWith(`${namespace}.`);\n};\n\nconst addNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return `${namespace}${name}`;\n }\n return `${namespace}.${name}`;\n};\n\nconst removeNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return name.replace(namespace, '');\n }\n return name.replace(`${namespace}.`, '');\n};\n\nexport { addNamespace, removeNamespace, hasNamespace };\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../src/core/utils.ts"],"sourcesContent":["const hasNamespace = (name: string, namespace: string) => {\n if (!namespace) {\n return true;\n }\n\n if (namespace.endsWith('::')) {\n return name.startsWith(namespace);\n }\n return name.startsWith(`${namespace}.`);\n};\n\nconst addNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return `${namespace}${name}`;\n }\n return `${namespace}.${name}`;\n};\n\nconst removeNamespace = (name: string, namespace: string) => {\n if (namespace.endsWith('::')) {\n return name.replace(namespace, '');\n }\n return name.replace(`${namespace}.`, '');\n};\n\nexport { addNamespace, removeNamespace, hasNamespace };\n"],"names":[],"mappings":"AAAA,MAAM,eAAe,CAAC,MAAc,cAAsB;AACxD,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AACA,SAAO,KAAK,WAAW,GAAG,SAAS,GAAG;AACxC;AAEA,MAAM,eAAe,CAAC,MAAc,cAAsB;AACxD,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,GAAG,SAAS,GAAG,IAAI;AAAA,EAC5B;AACA,SAAO,GAAG,SAAS,IAAI,IAAI;AAC7B;AAEA,MAAM,kBAAkB,CAAC,MAAc,cAAsB;AAC3D,MAAI,UAAU,SAAS,IAAI,GAAG;AAC5B,WAAO,KAAK,QAAQ,WAAW,EAAE;AAAA,EACnC;AACA,SAAO,KAAK,QAAQ,GAAG,SAAS,KAAK,EAAE;AACzC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { CoreApi, Schema, Utils, Common } from '@strapi/types';\nimport type Koa from 'koa';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.CollectionType;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.CollectionType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record.\n *\n * @return {Object}\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n *\n * @return {Object}\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n *\n * @return {Object}\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n *\n * @return {Object}\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).delete(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createCollectionTypeController;\n"],"names":["parseBody","isObject","errors"],"mappings":";;;;AAeA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAAyE;AACvE,QAAM,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { CoreApi, Schema, Utils, Common } from '@strapi/types';\nimport type Koa from 'koa';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.CollectionType;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.CollectionType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record.\n *\n * @return {Object}\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n *\n * @return {Object}\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n *\n * @return {Object}\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n *\n * @return {Object}\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).delete(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createCollectionTypeController;\n"],"names":["parseBody","isObject","errors"],"mappings":";;;;AAeA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAAyE;AACvE,QAAM,MAAM,YAAY;AAExB,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACd,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,YAAY;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,QAAQ,KAAK;AACjB,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAOA,UAAAA,UAAU,GAAG;AAE1B,UAAI,CAACC,GAAAA,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAIC,YAAAA,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAkB;AAC7B,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAOF,UAAAA,UAAU,GAAG;AAE1B,UAAI,CAACC,GAAAA,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAIC,YAAAA,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAClE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { CoreApi, Schema, Utils, Common } from '@strapi/types';\nimport type Koa from 'koa';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.CollectionType;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.CollectionType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record.\n *\n * @return {Object}\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n *\n * @return {Object}\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n *\n * @return {Object}\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n *\n * @return {Object}\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).delete(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createCollectionTypeController;\n"],"names":[],"mappings":";;;AAeA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAAyE;AACvE,QAAM,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { CoreApi, Schema, Utils, Common } from '@strapi/types';\nimport type Koa from 'koa';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.CollectionType;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.CollectionType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record.\n *\n * @return {Object}\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n *\n * @return {Object}\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n *\n * @return {Object}\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n *\n * @return {Object}\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).delete(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createCollectionTypeController;\n"],"names":[],"mappings":";;;AAeA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAAyE;AACvE,QAAM,MAAM,YAAY;AAExB,SAAO;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACd,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,YAAY;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,QAAQ,KAAK;AACjB,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,UAAU,GAAG;AAE1B,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAkB;AAC7B,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,UAAU,GAAG;AAE1B,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,OAAO,IAAI;AACnB,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAClE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils","prop","transformResponse","sanitize","validate","createSingleTypeController","createCollectionTypeController"],"mappings":";;;;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils","prop","transformResponse","sanitize","validate","createSingleTypeController","createCollectionTypeController"],"mappings":";;;;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,yBAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqBC,GAAAA,KAAK,cAAc,GAAG,KAAK,CAAA;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AACD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAOC,UAAAA,kBAAkB,MAAM,MAAM,EAAE,aAAa;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AAC9B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAOC,YAAAA,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AAC7B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACvB,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACvB,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAOC,YAAAA,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AAC7B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAOA,YAAAA,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGF,MAAI;AAEJ,MAAI,aAAa,WAAW,GAAG;AAC7B,WAAOC,WAA2B,EAAE,aAAa;AAAA,EACnD,OAAO;AACL,WAAOC,eAA+B,EAAE,aAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { prop } from "lodash/fp";
|
|
2
|
-
import { contentTypes,
|
|
2
|
+
import { contentTypes, validate, sanitize } from "@strapi/utils";
|
|
3
3
|
import { transformResponse } from "./transform.mjs";
|
|
4
4
|
import createSingleTypeController from "./single-type.mjs";
|
|
5
5
|
import createCollectionTypeController from "./collection-type.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils"],"mappings":";;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqB,KAAK,cAAc,GAAG,KAAK;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AACD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAO,kBAAkB,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/controller/index.ts"],"sourcesContent":["import { prop } from 'lodash/fp';\nimport type Koa from 'koa';\nimport { contentTypes as contentTypeUtils, sanitize, validate } from '@strapi/utils';\nimport type { CoreApi, Schema } from '@strapi/types';\n\nimport { transformResponse } from './transform';\nimport createSingleTypeController from './single-type';\nimport createCollectionTypeController from './collection-type';\n\nconst isSingleType = (contentType: Schema.ContentType): contentType is Schema.SingleType =>\n contentTypeUtils.isSingleType(contentType);\n\nconst getAuthFromKoaContext = (ctx: Koa.Context) => prop('state.auth', ctx) ?? {};\n\nfunction createController<T extends Schema.SingleType | Schema.CollectionType>(opts: {\n contentType: T;\n}): T extends Schema.SingleType ? CoreApi.Controller.SingleType : CoreApi.Controller.CollectionType;\nfunction createController({\n contentType,\n}: {\n contentType: Schema.SingleType | Schema.CollectionType;\n}) {\n const proto: CoreApi.Controller.Base = {\n transformResponse(data, meta) {\n return transformResponse(data, meta, { contentType });\n },\n\n async sanitizeOutput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.output(data, contentType, { auth });\n },\n\n async sanitizeInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.input(data, contentType, { auth });\n },\n\n async sanitizeQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return sanitize.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateQuery(ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.query(ctx.query, contentType, { auth });\n },\n\n async validateInput(data, ctx) {\n const auth = getAuthFromKoaContext(ctx);\n\n return validate.contentAPI.input(data, contentType, { auth });\n },\n };\n\n let ctrl;\n\n if (isSingleType(contentType)) {\n ctrl = createSingleTypeController({ contentType });\n } else {\n ctrl = createCollectionTypeController({ contentType });\n }\n\n return Object.assign(Object.create(proto), ctrl);\n}\n\nexport { createController };\n"],"names":["contentTypeUtils"],"mappings":";;;;;AASA,MAAM,eAAe,CAAC,gBACpBA,aAAiB,aAAa,WAAW;AAE3C,MAAM,wBAAwB,CAAC,QAAqB,KAAK,cAAc,GAAG,KAAK,CAAA;AAK/E,SAAS,iBAAiB;AAAA,EACxB;AACF,GAEG;AACD,QAAM,QAAiC;AAAA,IACrC,kBAAkB,MAAM,MAAM;AAC5B,aAAO,kBAAkB,MAAM,MAAM,EAAE,aAAa;AAAA,IACtD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK;AAC9B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,OAAO,MAAM,aAAa,EAAE,MAAM;AAAA,IAC/D;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AAC7B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,IAEA,MAAM,cAAc,KAAK;AACvB,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,KAAK;AACvB,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,IAAI,OAAO,aAAa,EAAE,MAAM;AAAA,IACnE;AAAA,IAEA,MAAM,cAAc,MAAM,KAAK;AAC7B,YAAM,OAAO,sBAAsB,GAAG;AAEtC,aAAO,SAAS,WAAW,MAAM,MAAM,aAAa,EAAE,MAAM;AAAA,IAC9D;AAAA,EAAA;AAGF,MAAI;AAEJ,MAAI,aAAa,WAAW,GAAG;AAC7B,WAAO,2BAA2B,EAAE,aAAa;AAAA,EACnD,OAAO;AACL,WAAO,+BAA+B,EAAE,aAAa;AAAA,EACvD;AAEA,SAAO,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG,IAAI;AACjD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":["parseBody","isObject","errors"],"mappings":";;;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"single-type.js","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":["parseBody","isObject","errors"],"mappings":";;;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAExB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACd,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,UAAU,IAAI;AACtB,YAAM,OAAOA,UAAAA,UAAU,GAAG;AAE1B,UAAI,CAACC,GAAAA,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAIC,YAAAA,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,UAAU;AAElB,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AACrD,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":[],"mappings":";;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"single-type.mjs","sources":["../../../src/core-api/controller/single-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Schema, CoreApi, Utils, Common } from '@strapi/types';\n\nimport { parseBody } from './transform';\n\ninterface Options {\n contentType: Schema.SingleType;\n}\n\n/**\n * Returns a single type controller to handle default core-api actions\n */\nconst createSingleTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<CoreApi.Controller.SingleType> => {\n const uid = contentType.uid as Common.UID.Service;\n\n return {\n /**\n * Retrieve single type content\n *\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).find(sanitizedQuery);\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * create or update single type content.\n *\n * @return {Object}\n */\n async update(ctx) {\n const { query } = ctx.request;\n const body = parseBody(ctx);\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).createOrUpdate({\n ...query,\n data: sanitizedInputData,\n files: 'files' in body ? body.files : undefined,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n async delete(ctx) {\n const { query } = ctx;\n\n const entity = await strapi.service(uid).delete(query);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n };\n};\n\nexport default createSingleTypeController;\n"],"names":[],"mappings":";;;AAaA,MAAM,6BAA6B,CAAC;AAAA,EAClC;AACF,MAAqE;AACnE,QAAM,MAAM,YAAY;AAExB,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,MAAM,KAAK,KAAK;AACd,YAAM,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAE5D,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,UAAU,IAAI;AACtB,YAAM,OAAO,UAAU,GAAG;AAE1B,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AACxB,cAAM,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,eAAe;AAAA,QACtD,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO,WAAW,OAAO,KAAK,QAAQ;AAAA,MAAA,CACvC;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,IAEA,MAAM,OAAO,KAAK;AAChB,YAAM,EAAE,UAAU;AAElB,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,KAAK;AACrD,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,aAAO,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":["isPlainObject","parseMultipartData","isNil"],"mappings":";;;;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQA,
|
|
1
|
+
{"version":3,"file":"transform.js","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":["isPlainObject","parseMultipartData","isNil"],"mappings":";;;;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQA,GAAAA,cAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AAC9F,SAAO,MAAM,QAAQ,QAAQ;AAC/B;AAEA,MAAM,YAAY,CAAC,QAAqB;AACtC,MAAI,IAAI,GAAG,WAAW,GAAG;AACvB,WAAOC,YAAAA,mBAAmB,GAAG;AAAA,EAC/B;AAEA,QAAM,EAAE,KAAA,IAAS,IAAI,QAAQ,QAAQ,CAAA;AAErC,SAAO,EAAE,KAAA;AACX;AAEA,MAAM,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACH,MAAIC,GAAAA,MAAM,QAAQ,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AACtD,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEA,QAAM,MAAM,eAAe,MAAM,SAAS;AAE1C,MAAIA,GAAAA,MAAM,GAAG,GAAG;AACd,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,IAAI,WAAA,IAAe;AAC3B,SAAO,EAAE,IAAI,GAAG,WAAA;AAClB;AAMA,SAAS,eACP,OACA,MAC8C;AAC9C,MAAIA,GAAAA,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEA,MAAI,CAACF,GAAAA,cAAc,KAAK,GAAG;AACzB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACzC,UAAM,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAE7C,QAAI,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/D,sBAAgB,GAAG,IAAI,EAAE,KAAA;AAAA,IAC3B,WAAW,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3E,sBAAgB,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAC5F,WAAW,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AACjF,UAAIE,GAAAA,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MACnF,CAAC;AAAA,IACH,WAAW,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/E,sBAAgB,GAAG,IAAI,EAAE,KAAA;AAAA,IAC3B,OAAO;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA;AAAA;AAAA,EAAA;AAIhB;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":[],"mappings":";;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQ,cAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;
|
|
1
|
+
{"version":3,"file":"transform.mjs","sources":["../../../src/core-api/controller/transform.ts"],"sourcesContent":["import { isNil, isPlainObject } from 'lodash/fp';\nimport { parseMultipartData } from '@strapi/utils';\nimport type Koa from 'koa';\nimport type { Common, Schema, UID } from '@strapi/types';\n\ntype TransformedEntry = {\n id: string;\n attributes: Record<string, unknown>;\n meta?: Record<string, unknown>;\n};\n\ntype TransformedComponent = {\n id: string;\n [key: string]: unknown;\n};\n\ntype Entry = {\n id: string;\n [key: string]: Entry | Entry[] | string | number | null | boolean | Date;\n};\n\nfunction isEntry(property: unknown): property is Entry | Entry[] {\n return property === null || isPlainObject(property) || Array.isArray(property);\n}\n\nfunction isDZEntries(property: unknown): property is (Entry & { __component: UID.Component })[] {\n return Array.isArray(property);\n}\n\nconst parseBody = (ctx: Koa.Context) => {\n if (ctx.is('multipart')) {\n return parseMultipartData(ctx);\n }\n\n const { data } = ctx.request.body || {};\n\n return { data };\n};\n\nconst transformResponse = (\n resource: any,\n meta: unknown = {},\n opts: { contentType?: Schema.ContentType | Schema.Component } = {}\n) => {\n if (isNil(resource)) {\n return resource;\n }\n\n return {\n data: transformEntry(resource, opts?.contentType),\n meta,\n };\n};\n\nfunction transformComponent<T extends Entry | Entry[] | null>(\n data: T,\n component: Schema.Component\n): T extends Entry[] ? TransformedComponent[] : T extends Entry ? TransformedComponent : null;\nfunction transformComponent(\n data: Entry | Entry[] | null,\n component: Schema.Component\n): TransformedComponent | TransformedComponent[] | null {\n if (Array.isArray(data)) {\n return data.map((datum) => transformComponent(datum, component));\n }\n\n const res = transformEntry(data, component);\n\n if (isNil(res)) {\n return res;\n }\n\n const { id, attributes } = res;\n return { id, ...attributes };\n}\n\nfunction transformEntry<T extends Entry | Entry[] | null>(\n entry: T,\n type?: Schema.ContentType | Schema.Component\n): T extends Entry[] ? TransformedEntry[] : T extends Entry ? TransformedEntry : null;\nfunction transformEntry(\n entry: Entry | Entry[] | null,\n type?: Schema.ContentType | Schema.Component\n): TransformedEntry | TransformedEntry[] | null {\n if (isNil(entry)) {\n return entry;\n }\n\n if (Array.isArray(entry)) {\n return entry.map((singleEntry) => transformEntry(singleEntry, type));\n }\n\n if (!isPlainObject(entry)) {\n throw new Error('Entry must be an object');\n }\n\n const { id, ...properties } = entry;\n\n const attributeValues: Record<string, unknown> = {};\n\n for (const key of Object.keys(properties)) {\n const property = properties[key];\n const attribute = type && type.attributes[key];\n\n if (attribute && attribute.type === 'relation' && isEntry(property) && 'target' in attribute) {\n const data = transformEntry(\n property,\n strapi.contentType(attribute.target as Common.UID.ContentType)\n );\n\n attributeValues[key] = { data };\n } else if (attribute && attribute.type === 'component' && isEntry(property)) {\n attributeValues[key] = transformComponent(property, strapi.components[attribute.component]);\n } else if (attribute && attribute.type === 'dynamiczone' && isDZEntries(property)) {\n if (isNil(property)) {\n attributeValues[key] = property;\n }\n\n attributeValues[key] = property.map((subProperty) => {\n return transformComponent(subProperty, strapi.components[subProperty.__component]);\n });\n } else if (attribute && attribute.type === 'media' && isEntry(property)) {\n const data = transformEntry(property, strapi.contentType('plugin::upload.file'));\n\n attributeValues[key] = { data };\n } else {\n attributeValues[key] = property;\n }\n }\n\n return {\n id,\n attributes: attributeValues,\n // NOTE: not necessary for now\n // meta: {},\n };\n}\n\nexport { parseBody, transformResponse };\n"],"names":[],"mappings":";;AAqBA,SAAS,QAAQ,UAAgD;AAC/D,SAAO,aAAa,QAAQ,cAAc,QAAQ,KAAK,MAAM,QAAQ,QAAQ;AAC/E;AAEA,SAAS,YAAY,UAA2E;AAC9F,SAAO,MAAM,QAAQ,QAAQ;AAC/B;AAEA,MAAM,YAAY,CAAC,QAAqB;AACtC,MAAI,IAAI,GAAG,WAAW,GAAG;AACvB,WAAO,mBAAmB,GAAG;AAAA,EAC/B;AAEA,QAAM,EAAE,KAAA,IAAS,IAAI,QAAQ,QAAQ,CAAA;AAErC,SAAO,EAAE,KAAA;AACX;AAEA,MAAM,oBAAoB,CACxB,UACA,OAAgB,CAAA,GAChB,OAAgE,CAAA,MAC7D;AACH,MAAI,MAAM,QAAQ,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,eAAe,UAAU,MAAM,WAAW;AAAA,IAChD;AAAA,EAAA;AAEJ;AAMA,SAAS,mBACP,MACA,WACsD;AACtD,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,UAAU,mBAAmB,OAAO,SAAS,CAAC;AAAA,EACjE;AAEA,QAAM,MAAM,eAAe,MAAM,SAAS;AAE1C,MAAI,MAAM,GAAG,GAAG;AACd,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,IAAI,WAAA,IAAe;AAC3B,SAAO,EAAE,IAAI,GAAG,WAAA;AAClB;AAMA,SAAS,eACP,OACA,MAC8C;AAC9C,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,gBAAgB,eAAe,aAAa,IAAI,CAAC;AAAA,EACrE;AAEA,MAAI,CAAC,cAAc,KAAK,GAAG;AACzB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,EAAE,IAAI,GAAG,WAAA,IAAe;AAE9B,QAAM,kBAA2C,CAAA;AAEjD,aAAW,OAAO,OAAO,KAAK,UAAU,GAAG;AACzC,UAAM,WAAW,WAAW,GAAG;AAC/B,UAAM,YAAY,QAAQ,KAAK,WAAW,GAAG;AAE7C,QAAI,aAAa,UAAU,SAAS,cAAc,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAC5F,YAAM,OAAO;AAAA,QACX;AAAA,QACA,OAAO,YAAY,UAAU,MAAgC;AAAA,MAAA;AAG/D,sBAAgB,GAAG,IAAI,EAAE,KAAA;AAAA,IAC3B,WAAW,aAAa,UAAU,SAAS,eAAe,QAAQ,QAAQ,GAAG;AAC3E,sBAAgB,GAAG,IAAI,mBAAmB,UAAU,OAAO,WAAW,UAAU,SAAS,CAAC;AAAA,IAC5F,WAAW,aAAa,UAAU,SAAS,iBAAiB,YAAY,QAAQ,GAAG;AACjF,UAAI,MAAM,QAAQ,GAAG;AACnB,wBAAgB,GAAG,IAAI;AAAA,MACzB;AAEA,sBAAgB,GAAG,IAAI,SAAS,IAAI,CAAC,gBAAgB;AACnD,eAAO,mBAAmB,aAAa,OAAO,WAAW,YAAY,WAAW,CAAC;AAAA,MACnF,CAAC;AAAA,IACH,WAAW,aAAa,UAAU,SAAS,WAAW,QAAQ,QAAQ,GAAG;AACvE,YAAM,OAAO,eAAe,UAAU,OAAO,YAAY,qBAAqB,CAAC;AAE/E,sBAAgB,GAAG,IAAI,EAAE,KAAA;AAAA,IAC3B,OAAO;AACL,sBAAgB,GAAG,IAAI;AAAA,IACzB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA;AAAA;AAAA,EAAA;AAIhB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";;;AAGO,MAAM,eAAe,CAAC,EAAE,kBAAuD;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";;;AAGO,MAAM,eAAe,CAAC,EAAE,kBAAuD;AACpF,MAAIA,YAAAA,aAAiB,aAAa,WAAW,GAAG;AAC9C,WAAO,oBAAoB,WAAW;AAAA,EACxC;AAEA,SAAO,wBAAwB,WAAW;AAC5C;AAEA,MAAM,sBAAsB,CAAC,EAAE,KAAK,WAA+B;AACjE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,EACX;AAEJ;AAEA,MAAM,0BAA0B,CAAC,EAAE,KAAK,WAA+B;AACrE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,EACX;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";AAGO,MAAM,eAAe,CAAC,EAAE,kBAAuD;
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/core-api/routes/index.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\nimport type { Schema } from '@strapi/types';\n\nexport const createRoutes = ({ contentType }: { contentType: Schema.ContentType }) => {\n if (contentTypeUtils.isSingleType(contentType)) {\n return getSingleTypeRoutes(contentType);\n }\n\n return getCollectionTypeRoutes(contentType);\n};\n\nconst getSingleTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.singularName}`,\n handler: `${uid}.find`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.singularName}`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.singularName}`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n\nconst getCollectionTypeRoutes = ({ uid, info }: Schema.ContentType) => {\n return {\n find: {\n method: 'GET',\n path: `/${info.pluralName}`,\n handler: `${uid}.find`,\n config: {},\n },\n findOne: {\n method: 'GET',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.findOne`,\n config: {},\n },\n create: {\n method: 'POST',\n path: `/${info.pluralName}`,\n handler: `${uid}.create`,\n config: {},\n },\n update: {\n method: 'PUT',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.update`,\n config: {},\n },\n delete: {\n method: 'DELETE',\n path: `/${info.pluralName}/:id`,\n handler: `${uid}.delete`,\n config: {},\n },\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";AAGO,MAAM,eAAe,CAAC,EAAE,kBAAuD;AACpF,MAAIA,aAAiB,aAAa,WAAW,GAAG;AAC9C,WAAO,oBAAoB,WAAW;AAAA,EACxC;AAEA,SAAO,wBAAwB,WAAW;AAC5C;AAEA,MAAM,sBAAsB,CAAC,EAAE,KAAK,WAA+B;AACjE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,YAAY;AAAA,MAC3B,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,EACX;AAEJ;AAEA,MAAM,0BAA0B,CAAC,EAAE,KAAK,WAA+B;AACrE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,IAEX,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,SAAS,GAAG,GAAG;AAAA,MACf,QAAQ,CAAA;AAAA,IAAC;AAAA,EACX;AAEJ;"}
|