@strapi/core 5.37.1 → 5.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/compile.js.map +1 -1
- package/dist/compile.mjs.map +1 -1
- package/dist/configuration/config-loader.js.map +1 -1
- package/dist/configuration/config-loader.mjs.map +1 -1
- package/dist/configuration/get-dirs.js.map +1 -1
- package/dist/configuration/get-dirs.mjs +1 -1
- package/dist/configuration/get-dirs.mjs.map +1 -1
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/configuration/urls.js.map +1 -1
- package/dist/configuration/urls.mjs.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/container.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.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/routes/validation/attributes.js.map +1 -1
- package/dist/core-api/routes/validation/attributes.mjs +1 -1
- package/dist/core-api/routes/validation/attributes.mjs.map +1 -1
- package/dist/core-api/routes/validation/common.js.map +1 -1
- package/dist/core-api/routes/validation/common.mjs.map +1 -1
- package/dist/core-api/routes/validation/component.js.map +1 -1
- package/dist/core-api/routes/validation/component.mjs.map +1 -1
- package/dist/core-api/routes/validation/constants.js.map +1 -1
- package/dist/core-api/routes/validation/constants.mjs.map +1 -1
- package/dist/core-api/routes/validation/content-type.js.map +1 -1
- package/dist/core-api/routes/validation/content-type.mjs.map +1 -1
- package/dist/core-api/routes/validation/mappers.js.map +1 -1
- package/dist/core-api/routes/validation/mappers.mjs.map +1 -1
- package/dist/core-api/routes/validation/utils.js.map +1 -1
- package/dist/core-api/routes/validation/utils.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/core-service.js.map +1 -1
- package/dist/core-api/service/core-service.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.map +1 -1
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/domain/content-type/validator.js.map +1 -1
- package/dist/domain/content-type/validator.mjs.map +1 -1
- package/dist/domain/module/index.js.map +1 -1
- package/dist/domain/module/index.mjs.map +1 -1
- package/dist/domain/module/validation.js.map +1 -1
- package/dist/domain/module/validation.mjs.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +2 -2
- 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/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/loaders/admin.js.map +1 -1
- package/dist/loaders/admin.mjs.map +1 -1
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/components.js.map +1 -1
- package/dist/loaders/components.mjs.map +1 -1
- package/dist/loaders/index.js.map +1 -1
- package/dist/loaders/index.mjs.map +1 -1
- package/dist/loaders/middlewares.js.map +1 -1
- package/dist/loaders/middlewares.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs +1 -1
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/loaders/policies.js.map +1 -1
- package/dist/loaders/policies.mjs.map +1 -1
- package/dist/loaders/sanitizers.js.map +1 -1
- package/dist/loaders/sanitizers.mjs.map +1 -1
- package/dist/loaders/src-index.js.map +1 -1
- package/dist/loaders/src-index.mjs.map +1 -1
- package/dist/loaders/validators.js.map +1 -1
- package/dist/loaders/validators.mjs.map +1 -1
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/compression.js.map +1 -1
- package/dist/middlewares/compression.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/index.mjs.map +1 -1
- package/dist/middlewares/ip.js.map +1 -1
- package/dist/middlewares/ip.mjs.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.js.map +1 -1
- package/dist/middlewares/public.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/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/migrations/first-published-at.js.map +1 -1
- package/dist/migrations/first-published-at.mjs.map +1 -1
- package/dist/migrations/i18n.js.map +1 -1
- package/dist/migrations/i18n.mjs.map +1 -1
- package/dist/migrations/index.mjs +2 -2
- package/dist/package.json.js +12 -12
- package/dist/package.json.mjs +17 -17
- package/dist/providers/admin.js.map +1 -1
- package/dist/providers/admin.mjs.map +1 -1
- package/dist/providers/coreStore.js.map +1 -1
- package/dist/providers/coreStore.mjs.map +1 -1
- package/dist/providers/cron.js.map +1 -1
- package/dist/providers/cron.mjs.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/index.mjs.map +1 -1
- package/dist/providers/provider.js.map +1 -1
- package/dist/providers/provider.mjs.map +1 -1
- package/dist/providers/registries.js.map +1 -1
- package/dist/providers/registries.mjs.map +1 -1
- package/dist/providers/session-manager.js.map +1 -1
- package/dist/providers/session-manager.mjs.map +1 -1
- package/dist/providers/telemetry.js.map +1 -1
- package/dist/providers/telemetry.mjs.map +1 -1
- package/dist/providers/webhooks.js.map +1 -1
- package/dist/providers/webhooks.mjs.map +1 -1
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/apis.mjs.map +1 -1
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/components.mjs.map +1 -1
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs +2 -2
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/controllers.mjs +2 -2
- package/dist/registries/controllers.mjs.map +1 -1
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/custom-fields.mjs.map +1 -1
- package/dist/registries/hooks.js.map +1 -1
- package/dist/registries/hooks.mjs +1 -1
- package/dist/registries/hooks.mjs.map +1 -1
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/middlewares.mjs +2 -2
- package/dist/registries/middlewares.mjs.map +1 -1
- package/dist/registries/models.js.map +1 -1
- package/dist/registries/models.mjs.map +1 -1
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/modules.mjs +1 -1
- package/dist/registries/modules.mjs.map +1 -1
- package/dist/registries/namespace.js.map +1 -1
- package/dist/registries/namespace.mjs.map +1 -1
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/plugins.mjs.map +1 -1
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +2 -2
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/registries/sanitizers.js.map +1 -1
- package/dist/registries/sanitizers.mjs.map +1 -1
- package/dist/registries/services.js.map +1 -1
- package/dist/registries/services.mjs +2 -2
- package/dist/registries/services.mjs.map +1 -1
- package/dist/registries/validators.js.map +1 -1
- package/dist/registries/validators.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/config.js.map +1 -1
- package/dist/services/config.mjs +1 -1
- package/dist/services/config.mjs.map +1 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +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/content-source-maps.js.map +1 -1
- package/dist/services/content-source-maps.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.map +1 -1
- 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/document-service/attributes/index.js.map +1 -1
- package/dist/services/document-service/attributes/index.mjs.map +1 -1
- package/dist/services/document-service/attributes/transforms.js.map +1 -1
- package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/document-service/common.js.map +1 -1
- package/dist/services/document-service/common.mjs.map +1 -1
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/components.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +2 -2
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/events.js +1 -6
- package/dist/services/document-service/events.js.map +1 -1
- package/dist/services/document-service/events.mjs +1 -6
- package/dist/services/document-service/events.mjs.map +1 -1
- package/dist/services/document-service/first-published-at.js.map +1 -1
- package/dist/services/document-service/first-published-at.mjs.map +1 -1
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/middlewares/errors.js.map +1 -1
- package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
- package/dist/services/document-service/params.js.map +1 -1
- package/dist/services/document-service/params.mjs.map +1 -1
- package/dist/services/document-service/repository.js +0 -2
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +4 -6
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/data.js.map +1 -1
- package/dist/services/document-service/transform/data.mjs.map +1 -1
- package/dist/services/document-service/transform/fields.js.map +1 -1
- package/dist/services/document-service/transform/fields.mjs.map +1 -1
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.js.map +1 -1
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
- package/dist/services/document-service/transform/populate.js.map +1 -1
- package/dist/services/document-service/transform/populate.mjs.map +1 -1
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/query.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/clean-component-join-table.js.map +1 -1
- package/dist/services/document-service/utils/clean-component-join-table.mjs.map +1 -1
- package/dist/services/document-service/utils/ordered-parallel.js.map +1 -1
- package/dist/services/document-service/utils/ordered-parallel.mjs.map +1 -1
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +1 -1
- package/dist/services/entity-service/index.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.map +1 -1
- 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/query-params.js.map +1 -1
- package/dist/services/query-params.mjs.map +1 -1
- package/dist/services/reloader.js.map +1 -1
- package/dist/services/reloader.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 -3
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +1 -3
- 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/session-manager.js.map +1 -1
- package/dist/services/session-manager.mjs.map +1 -1
- package/dist/services/utils/conditional-fields.js.map +1 -1
- package/dist/services/utils/conditional-fields.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/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/filepath-to-prop-path.js.map +1 -1
- package/dist/utils/filepath-to-prop-path.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/lifecycles.js.map +1 -1
- package/dist/utils/lifecycles.mjs.map +1 -1
- package/dist/utils/load-config-file.js.map +1 -1
- package/dist/utils/load-config-file.mjs.map +1 -1
- package/dist/utils/load-files.js.map +1 -1
- package/dist/utils/load-files.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/resolve-working-dirs.js.map +1 -1
- package/dist/utils/resolve-working-dirs.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/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.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 +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.mjs","sources":["../../src/services/features.ts"],"sourcesContent":["/**\n * The features service is responsible for managing features within strapi,\n * including interacting with the feature configuration file to know\n * which are enabled and disabled.\n */\n\nimport type { Core, Modules } from '@strapi/types';\n\ntype FeatureName = keyof Modules.Features.FeaturesConfig['future'];\n\nconst createFeaturesService = (strapi: Core.Strapi): Modules.Features.FeaturesService => {\n const service: Modules.Features.FeaturesService = {\n get config() {\n return strapi.config.get<Modules.Features.FeaturesService['config']>('features');\n },\n future: {\n isEnabled(futureFlagName: string): boolean {\n return service.config?.future?.[futureFlagName as FeatureName] === true;\n },\n },\n };\n\n return service;\n};\n\nexport { createFeaturesService };\nexport type FeaturesService = Modules.Features.FeaturesService;\n"],"names":["createFeaturesService","strapi","service","config","get","future","isEnabled","futureFlagName"],"mappings":"AAAA;;;;IAUA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"features.mjs","sources":["../../src/services/features.ts"],"sourcesContent":["/**\n * The features service is responsible for managing features within strapi,\n * including interacting with the feature configuration file to know\n * which are enabled and disabled.\n */\n\nimport type { Core, Modules } from '@strapi/types';\n\ntype FeatureName = keyof Modules.Features.FeaturesConfig['future'];\n\nconst createFeaturesService = (strapi: Core.Strapi): Modules.Features.FeaturesService => {\n const service: Modules.Features.FeaturesService = {\n get config() {\n return strapi.config.get<Modules.Features.FeaturesService['config']>('features');\n },\n future: {\n isEnabled(futureFlagName: string): boolean {\n return service.config?.future?.[futureFlagName as FeatureName] === true;\n },\n },\n };\n\n return service;\n};\n\nexport { createFeaturesService };\nexport type FeaturesService = Modules.Features.FeaturesService;\n"],"names":["createFeaturesService","strapi","service","config","get","future","isEnabled","futureFlagName"],"mappings":"AAAA;;;;IAUA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,OAAAA,GAA4C;AAChD,QAAA,IAAIC,MAAAA,CAAAA,GAAS;AACX,YAAA,OAAOF,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAA6C,UAAA,CAAA;AACvE,QAAA,CAAA;QACAC,MAAAA,EAAQ;AACNC,YAAAA,SAAAA,CAAAA,CAAUC,cAAsB,EAAA;AAC9B,gBAAA,OAAOL,QAAQC,MAAM,EAAEE,MAAAA,GAASE,eAA8B,KAAK,IAAA;AACrE,YAAA;AACF;AACF,KAAA;IAEA,OAAOL,OAAAA;AACT;;;;"}
|
package/dist/services/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sources":["../../src/services/fs.ts"],"sourcesContent":["import path from 'path';\nimport fse from 'fs-extra';\n\nimport type { Core } from '@strapi/types';\n\ninterface StrapiFS {\n writeAppFile(optPath: string | string[], data: string): Promise<void>;\n writePluginFile(plugin: string, optPath: string | string[], data: string): Promise<void>;\n removeAppFile(optPath: string | string[]): Promise<void>;\n appendFile(optPath: string | string[], data: string): void;\n}\n\n/**\n * create strapi fs layer\n */\nexport default (strapi: Core.Strapi) => {\n function normalizePath(optPath: string | string[]) {\n const filePath = Array.isArray(optPath) ? optPath.join('/') : optPath;\n\n const normalizedPath = path.normalize(filePath).replace(/^\\/?(\\.\\/|\\.\\.\\/)+/, '');\n\n return path.resolve(strapi.dirs.app.root, normalizedPath);\n }\n\n const strapiFS: StrapiFS = {\n /**\n * Writes a file in a strapi app\n * @param {Array|string} optPath - file path\n * @param {string} data - content\n */\n writeAppFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.ensureFile(writePath).then(() => fse.writeFile(writePath, data));\n },\n\n /**\n * Writes a file in a plugin extensions folder\n * @param {string} plugin - plugin name\n * @param {Array|string} optPath - path to file\n * @param {string} data - content\n */\n writePluginFile(plugin, optPath, data) {\n const newPath = ['extensions', plugin].concat(optPath).join('/');\n return strapiFS.writeAppFile(newPath, data);\n },\n\n /**\n * Removes a file in strapi app\n */\n removeAppFile(optPath) {\n const removePath = normalizePath(optPath);\n return fse.remove(removePath);\n },\n\n /**\n * Appends a file in strapi app\n */\n appendFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.appendFileSync(writePath, data);\n },\n };\n\n return strapiFS;\n};\n"],"names":["strapi","normalizePath","optPath","filePath","Array","isArray","join","normalizedPath","path","normalize","replace","resolve","dirs","app","root","strapiFS","writeAppFile","data","writePath","fse","ensureFile","then","writeFile","writePluginFile","plugin","newPath","concat","removeAppFile","removePath","remove","appendFile","appendFileSync"],"mappings":";;;;;AAYA;;IAGA,qBAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,SAASC,cAAcC,OAA0B,EAAA;QAC/C,MAAMC,QAAAA,GAAWC,MAAMC,OAAO,CAACH,WAAWA,
|
|
1
|
+
{"version":3,"file":"fs.js","sources":["../../src/services/fs.ts"],"sourcesContent":["import path from 'path';\nimport fse from 'fs-extra';\n\nimport type { Core } from '@strapi/types';\n\ninterface StrapiFS {\n writeAppFile(optPath: string | string[], data: string): Promise<void>;\n writePluginFile(plugin: string, optPath: string | string[], data: string): Promise<void>;\n removeAppFile(optPath: string | string[]): Promise<void>;\n appendFile(optPath: string | string[], data: string): void;\n}\n\n/**\n * create strapi fs layer\n */\nexport default (strapi: Core.Strapi) => {\n function normalizePath(optPath: string | string[]) {\n const filePath = Array.isArray(optPath) ? optPath.join('/') : optPath;\n\n const normalizedPath = path.normalize(filePath).replace(/^\\/?(\\.\\/|\\.\\.\\/)+/, '');\n\n return path.resolve(strapi.dirs.app.root, normalizedPath);\n }\n\n const strapiFS: StrapiFS = {\n /**\n * Writes a file in a strapi app\n * @param {Array|string} optPath - file path\n * @param {string} data - content\n */\n writeAppFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.ensureFile(writePath).then(() => fse.writeFile(writePath, data));\n },\n\n /**\n * Writes a file in a plugin extensions folder\n * @param {string} plugin - plugin name\n * @param {Array|string} optPath - path to file\n * @param {string} data - content\n */\n writePluginFile(plugin, optPath, data) {\n const newPath = ['extensions', plugin].concat(optPath).join('/');\n return strapiFS.writeAppFile(newPath, data);\n },\n\n /**\n * Removes a file in strapi app\n */\n removeAppFile(optPath) {\n const removePath = normalizePath(optPath);\n return fse.remove(removePath);\n },\n\n /**\n * Appends a file in strapi app\n */\n appendFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.appendFileSync(writePath, data);\n },\n };\n\n return strapiFS;\n};\n"],"names":["strapi","normalizePath","optPath","filePath","Array","isArray","join","normalizedPath","path","normalize","replace","resolve","dirs","app","root","strapiFS","writeAppFile","data","writePath","fse","ensureFile","then","writeFile","writePluginFile","plugin","newPath","concat","removeAppFile","removePath","remove","appendFile","appendFileSync"],"mappings":";;;;;AAYA;;IAGA,qBAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,SAASC,cAAcC,OAA0B,EAAA;QAC/C,MAAMC,QAAAA,GAAWC,MAAMC,OAAO,CAACH,WAAWA,OAAAA,CAAQI,IAAI,CAAC,GAAA,CAAA,GAAOJ,OAAAA;AAE9D,QAAA,MAAMK,iBAAiBC,IAAAA,CAAKC,SAAS,CAACN,QAAAA,CAAAA,CAAUO,OAAO,CAAC,oBAAA,EAAsB,EAAA,CAAA;QAE9E,OAAOF,IAAAA,CAAKG,OAAO,CAACX,MAAAA,CAAOY,IAAI,CAACC,GAAG,CAACC,IAAI,EAAEP,cAAAA,CAAAA;AAC5C,IAAA;AAEA,IAAA,MAAMQ,QAAAA,GAAqB;AACzB;;;;QAKAC,YAAAA,CAAAA,CAAad,OAAO,EAAEe,IAAI,EAAA;AACxB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIC,UAAU,CAACF,SAAAA,CAAAA,CAAWG,IAAI,CAAC,IAAMF,GAAAA,CAAIG,SAAS,CAACJ,SAAAA,EAAWD,IAAAA,CAAAA,CAAAA;AACvE,QAAA,CAAA;AAEA;;;;;AAKC,QACDM,eAAAA,CAAAA,CAAgBC,MAAM,EAAEtB,OAAO,EAAEe,IAAI,EAAA;AACnC,YAAA,MAAMQ,OAAAA,GAAU;AAAC,gBAAA,YAAA;AAAcD,gBAAAA;AAAO,aAAA,CAACE,MAAM,CAACxB,OAAAA,CAAAA,CAASI,IAAI,CAAC,GAAA,CAAA;YAC5D,OAAOS,QAAAA,CAASC,YAAY,CAACS,OAAAA,EAASR,IAAAA,CAAAA;AACxC,QAAA,CAAA;AAEA;;AAEC,QACDU,eAAczB,OAAO,EAAA;AACnB,YAAA,MAAM0B,aAAa3B,aAAAA,CAAcC,OAAAA,CAAAA;YACjC,OAAOiB,GAAAA,CAAIU,MAAM,CAACD,UAAAA,CAAAA;AACpB,QAAA,CAAA;AAEA;;QAGAE,UAAAA,CAAAA,CAAW5B,OAAO,EAAEe,IAAI,EAAA;AACtB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIY,cAAc,CAACb,SAAAA,EAAWD,IAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;IAEA,OAAOF,QAAAA;AACT,CAAA;;;;"}
|
package/dist/services/fs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.mjs","sources":["../../src/services/fs.ts"],"sourcesContent":["import path from 'path';\nimport fse from 'fs-extra';\n\nimport type { Core } from '@strapi/types';\n\ninterface StrapiFS {\n writeAppFile(optPath: string | string[], data: string): Promise<void>;\n writePluginFile(plugin: string, optPath: string | string[], data: string): Promise<void>;\n removeAppFile(optPath: string | string[]): Promise<void>;\n appendFile(optPath: string | string[], data: string): void;\n}\n\n/**\n * create strapi fs layer\n */\nexport default (strapi: Core.Strapi) => {\n function normalizePath(optPath: string | string[]) {\n const filePath = Array.isArray(optPath) ? optPath.join('/') : optPath;\n\n const normalizedPath = path.normalize(filePath).replace(/^\\/?(\\.\\/|\\.\\.\\/)+/, '');\n\n return path.resolve(strapi.dirs.app.root, normalizedPath);\n }\n\n const strapiFS: StrapiFS = {\n /**\n * Writes a file in a strapi app\n * @param {Array|string} optPath - file path\n * @param {string} data - content\n */\n writeAppFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.ensureFile(writePath).then(() => fse.writeFile(writePath, data));\n },\n\n /**\n * Writes a file in a plugin extensions folder\n * @param {string} plugin - plugin name\n * @param {Array|string} optPath - path to file\n * @param {string} data - content\n */\n writePluginFile(plugin, optPath, data) {\n const newPath = ['extensions', plugin].concat(optPath).join('/');\n return strapiFS.writeAppFile(newPath, data);\n },\n\n /**\n * Removes a file in strapi app\n */\n removeAppFile(optPath) {\n const removePath = normalizePath(optPath);\n return fse.remove(removePath);\n },\n\n /**\n * Appends a file in strapi app\n */\n appendFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.appendFileSync(writePath, data);\n },\n };\n\n return strapiFS;\n};\n"],"names":["strapi","normalizePath","optPath","filePath","Array","isArray","join","normalizedPath","path","normalize","replace","resolve","dirs","app","root","strapiFS","writeAppFile","data","writePath","fse","ensureFile","then","writeFile","writePluginFile","plugin","newPath","concat","removeAppFile","removePath","remove","appendFile","appendFileSync"],"mappings":";;;AAYA;;IAGA,qBAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,SAASC,cAAcC,OAA0B,EAAA;QAC/C,MAAMC,QAAAA,GAAWC,MAAMC,OAAO,CAACH,WAAWA,
|
|
1
|
+
{"version":3,"file":"fs.mjs","sources":["../../src/services/fs.ts"],"sourcesContent":["import path from 'path';\nimport fse from 'fs-extra';\n\nimport type { Core } from '@strapi/types';\n\ninterface StrapiFS {\n writeAppFile(optPath: string | string[], data: string): Promise<void>;\n writePluginFile(plugin: string, optPath: string | string[], data: string): Promise<void>;\n removeAppFile(optPath: string | string[]): Promise<void>;\n appendFile(optPath: string | string[], data: string): void;\n}\n\n/**\n * create strapi fs layer\n */\nexport default (strapi: Core.Strapi) => {\n function normalizePath(optPath: string | string[]) {\n const filePath = Array.isArray(optPath) ? optPath.join('/') : optPath;\n\n const normalizedPath = path.normalize(filePath).replace(/^\\/?(\\.\\/|\\.\\.\\/)+/, '');\n\n return path.resolve(strapi.dirs.app.root, normalizedPath);\n }\n\n const strapiFS: StrapiFS = {\n /**\n * Writes a file in a strapi app\n * @param {Array|string} optPath - file path\n * @param {string} data - content\n */\n writeAppFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.ensureFile(writePath).then(() => fse.writeFile(writePath, data));\n },\n\n /**\n * Writes a file in a plugin extensions folder\n * @param {string} plugin - plugin name\n * @param {Array|string} optPath - path to file\n * @param {string} data - content\n */\n writePluginFile(plugin, optPath, data) {\n const newPath = ['extensions', plugin].concat(optPath).join('/');\n return strapiFS.writeAppFile(newPath, data);\n },\n\n /**\n * Removes a file in strapi app\n */\n removeAppFile(optPath) {\n const removePath = normalizePath(optPath);\n return fse.remove(removePath);\n },\n\n /**\n * Appends a file in strapi app\n */\n appendFile(optPath, data) {\n const writePath = normalizePath(optPath);\n return fse.appendFileSync(writePath, data);\n },\n };\n\n return strapiFS;\n};\n"],"names":["strapi","normalizePath","optPath","filePath","Array","isArray","join","normalizedPath","path","normalize","replace","resolve","dirs","app","root","strapiFS","writeAppFile","data","writePath","fse","ensureFile","then","writeFile","writePluginFile","plugin","newPath","concat","removeAppFile","removePath","remove","appendFile","appendFileSync"],"mappings":";;;AAYA;;IAGA,qBAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,SAASC,cAAcC,OAA0B,EAAA;QAC/C,MAAMC,QAAAA,GAAWC,MAAMC,OAAO,CAACH,WAAWA,OAAAA,CAAQI,IAAI,CAAC,GAAA,CAAA,GAAOJ,OAAAA;AAE9D,QAAA,MAAMK,iBAAiBC,IAAAA,CAAKC,SAAS,CAACN,QAAAA,CAAAA,CAAUO,OAAO,CAAC,oBAAA,EAAsB,EAAA,CAAA;QAE9E,OAAOF,IAAAA,CAAKG,OAAO,CAACX,MAAAA,CAAOY,IAAI,CAACC,GAAG,CAACC,IAAI,EAAEP,cAAAA,CAAAA;AAC5C,IAAA;AAEA,IAAA,MAAMQ,QAAAA,GAAqB;AACzB;;;;QAKAC,YAAAA,CAAAA,CAAad,OAAO,EAAEe,IAAI,EAAA;AACxB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIC,UAAU,CAACF,SAAAA,CAAAA,CAAWG,IAAI,CAAC,IAAMF,GAAAA,CAAIG,SAAS,CAACJ,SAAAA,EAAWD,IAAAA,CAAAA,CAAAA;AACvE,QAAA,CAAA;AAEA;;;;;AAKC,QACDM,eAAAA,CAAAA,CAAgBC,MAAM,EAAEtB,OAAO,EAAEe,IAAI,EAAA;AACnC,YAAA,MAAMQ,OAAAA,GAAU;AAAC,gBAAA,YAAA;AAAcD,gBAAAA;AAAO,aAAA,CAACE,MAAM,CAACxB,OAAAA,CAAAA,CAASI,IAAI,CAAC,GAAA,CAAA;YAC5D,OAAOS,QAAAA,CAASC,YAAY,CAACS,OAAAA,EAASR,IAAAA,CAAAA;AACxC,QAAA,CAAA;AAEA;;AAEC,QACDU,eAAczB,OAAO,EAAA;AACnB,YAAA,MAAM0B,aAAa3B,aAAAA,CAAcC,OAAAA,CAAAA;YACjC,OAAOiB,GAAAA,CAAIU,MAAM,CAACD,UAAAA,CAAAA;AACpB,QAAA,CAAA;AAEA;;QAGAE,UAAAA,CAAAA,CAAW5B,OAAO,EAAEe,IAAI,EAAA;AACtB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIY,cAAc,CAACb,SAAAA,EAAWD,IAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;IAEA,OAAOF,QAAAA;AACT,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-user-hash.js","sources":["../../../src/services/metrics/admin-user-hash.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\n/**\n * Generate an admin user hash\n */\nconst generateAdminUserHash = (strapi: Core.Strapi) => {\n const ctx = strapi?.requestContext?.get();\n\n if (!ctx?.state?.user?.email) {\n return '';\n }\n return crypto.createHash('sha256').update(ctx.state.user.email).digest('hex');\n};\n\nexport { generateAdminUserHash };\n"],"names":["generateAdminUserHash","strapi","ctx","requestContext","get","state","user","email","crypto","createHash","update","digest"],"mappings":";;;;AAGA;;IAGA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;IAC7B,MAAMC,GAAAA,GAAMD,QAAQE,
|
|
1
|
+
{"version":3,"file":"admin-user-hash.js","sources":["../../../src/services/metrics/admin-user-hash.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\n/**\n * Generate an admin user hash\n */\nconst generateAdminUserHash = (strapi: Core.Strapi) => {\n const ctx = strapi?.requestContext?.get();\n\n if (!ctx?.state?.user?.email) {\n return '';\n }\n return crypto.createHash('sha256').update(ctx.state.user.email).digest('hex');\n};\n\nexport { generateAdminUserHash };\n"],"names":["generateAdminUserHash","strapi","ctx","requestContext","get","state","user","email","crypto","createHash","update","digest"],"mappings":";;;;AAGA;;IAGA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;IAC7B,MAAMC,GAAAA,GAAMD,QAAQE,cAAAA,EAAgBC,GAAAA,EAAAA;AAEpC,IAAA,IAAI,CAACF,GAAAA,EAAKG,KAAAA,EAAOC,IAAAA,EAAMC,KAAAA,EAAO;QAC5B,OAAO,EAAA;AACT,IAAA;AACA,IAAA,OAAOC,MAAAA,CAAOC,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAACR,GAAAA,CAAIG,KAAK,CAACC,IAAI,CAACC,KAAK,CAAA,CAAEI,MAAM,CAAC,KAAA,CAAA;AACzE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-user-hash.mjs","sources":["../../../src/services/metrics/admin-user-hash.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\n/**\n * Generate an admin user hash\n */\nconst generateAdminUserHash = (strapi: Core.Strapi) => {\n const ctx = strapi?.requestContext?.get();\n\n if (!ctx?.state?.user?.email) {\n return '';\n }\n return crypto.createHash('sha256').update(ctx.state.user.email).digest('hex');\n};\n\nexport { generateAdminUserHash };\n"],"names":["generateAdminUserHash","strapi","ctx","requestContext","get","state","user","email","crypto","createHash","update","digest"],"mappings":";;AAGA;;IAGA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;IAC7B,MAAMC,GAAAA,GAAMD,QAAQE,
|
|
1
|
+
{"version":3,"file":"admin-user-hash.mjs","sources":["../../../src/services/metrics/admin-user-hash.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Core } from '@strapi/types';\n\n/**\n * Generate an admin user hash\n */\nconst generateAdminUserHash = (strapi: Core.Strapi) => {\n const ctx = strapi?.requestContext?.get();\n\n if (!ctx?.state?.user?.email) {\n return '';\n }\n return crypto.createHash('sha256').update(ctx.state.user.email).digest('hex');\n};\n\nexport { generateAdminUserHash };\n"],"names":["generateAdminUserHash","strapi","ctx","requestContext","get","state","user","email","crypto","createHash","update","digest"],"mappings":";;AAGA;;IAGA,MAAMA,wBAAwB,CAACC,MAAAA,GAAAA;IAC7B,MAAMC,GAAAA,GAAMD,QAAQE,cAAAA,EAAgBC,GAAAA,EAAAA;AAEpC,IAAA,IAAI,CAACF,GAAAA,EAAKG,KAAAA,EAAOC,IAAAA,EAAMC,KAAAA,EAAO;QAC5B,OAAO,EAAA;AACT,IAAA;AACA,IAAA,OAAOC,MAAAA,CAAOC,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAACR,GAAAA,CAAIG,KAAK,CAACC,IAAI,CAACC,KAAK,CAAA,CAAEI,MAAM,CAAC,KAAA,CAAA;AACzE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/metrics/index.ts"],"sourcesContent":["/**\n * Strapi telemetry package.\n * You can learn more at https://docs.strapi.io/developer-docs/latest/getting-started/usage-information.html\n */\n\nimport type { Core } from '@strapi/types';\n\nimport wrapWithRateLimit from './rate-limiter';\nimport createSender from './sender';\nimport createMiddleware from './middleware';\nimport isTruthy from './is-truthy';\n\nconst LIMITED_EVENTS = [\n 'didSaveMediaWithAlternativeText',\n 'didSaveMediaWithCaption',\n 'didDisableResponsiveDimensions',\n 'didEnableResponsiveDimensions',\n 'didInitializePluginUpload',\n];\n\nconst createTelemetryInstance = (strapi: Core.Strapi) => {\n const uuid = strapi.config.get('uuid');\n const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled');\n const isDisabled =\n !uuid || isTruthy(process.env.STRAPI_TELEMETRY_DISABLED) || isTruthy(telemetryDisabled);\n\n const sender = createSender(strapi);\n const sendEvent = wrapWithRateLimit(sender, { limitedEvents: LIMITED_EVENTS });\n\n return {\n get isDisabled() {\n return isDisabled;\n },\n\n register() {\n if (!isDisabled) {\n strapi.cron.add({\n sendPingEvent: {\n task: () => sendEvent('ping'),\n options: '0 0 12 * * *',\n },\n });\n\n strapi.server.use(createMiddleware({ sendEvent, strapi }));\n }\n },\n\n bootstrap() {},\n\n async send(event: string, payload: Record<string, unknown> = {}) {\n if (isDisabled) return true;\n return sendEvent(event, payload);\n },\n\n destroy() {\n // Clean up resources if needed\n },\n };\n};\n\nexport default createTelemetryInstance;\n"],"names":["LIMITED_EVENTS","createTelemetryInstance","strapi","uuid","config","get","telemetryDisabled","isDisabled","isTruthy","process","env","STRAPI_TELEMETRY_DISABLED","sender","createSender","sendEvent","wrapWithRateLimit","limitedEvents","register","cron","add","sendPingEvent","task","options","server","use","createMiddleware","bootstrap","send","event","payload","destroy"],"mappings":";;;;;;;AAYA,MAAMA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/metrics/index.ts"],"sourcesContent":["/**\n * Strapi telemetry package.\n * You can learn more at https://docs.strapi.io/developer-docs/latest/getting-started/usage-information.html\n */\n\nimport type { Core } from '@strapi/types';\n\nimport wrapWithRateLimit from './rate-limiter';\nimport createSender from './sender';\nimport createMiddleware from './middleware';\nimport isTruthy from './is-truthy';\n\nconst LIMITED_EVENTS = [\n 'didSaveMediaWithAlternativeText',\n 'didSaveMediaWithCaption',\n 'didDisableResponsiveDimensions',\n 'didEnableResponsiveDimensions',\n 'didInitializePluginUpload',\n];\n\nconst createTelemetryInstance = (strapi: Core.Strapi) => {\n const uuid = strapi.config.get('uuid');\n const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled');\n const isDisabled =\n !uuid || isTruthy(process.env.STRAPI_TELEMETRY_DISABLED) || isTruthy(telemetryDisabled);\n\n const sender = createSender(strapi);\n const sendEvent = wrapWithRateLimit(sender, { limitedEvents: LIMITED_EVENTS });\n\n return {\n get isDisabled() {\n return isDisabled;\n },\n\n register() {\n if (!isDisabled) {\n strapi.cron.add({\n sendPingEvent: {\n task: () => sendEvent('ping'),\n options: '0 0 12 * * *',\n },\n });\n\n strapi.server.use(createMiddleware({ sendEvent, strapi }));\n }\n },\n\n bootstrap() {},\n\n async send(event: string, payload: Record<string, unknown> = {}) {\n if (isDisabled) return true;\n return sendEvent(event, payload);\n },\n\n destroy() {\n // Clean up resources if needed\n },\n };\n};\n\nexport default createTelemetryInstance;\n"],"names":["LIMITED_EVENTS","createTelemetryInstance","strapi","uuid","config","get","telemetryDisabled","isDisabled","isTruthy","process","env","STRAPI_TELEMETRY_DISABLED","sender","createSender","sendEvent","wrapWithRateLimit","limitedEvents","register","cron","add","sendPingEvent","task","options","server","use","createMiddleware","bootstrap","send","event","payload","destroy"],"mappings":";;;;;;;AAYA,MAAMA,cAAAA,GAAiB;AACrB,IAAA,iCAAA;AACA,IAAA,yBAAA;AACA,IAAA,gCAAA;AACA,IAAA,+BAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,0BAA0B,CAACC,MAAAA,GAAAA;AAC/B,IAAA,MAAMC,IAAAA,GAAOD,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAC,MAAA,CAAA;AAC/B,IAAA,MAAMC,iBAAAA,GAAoBJ,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAC,qCAAA,CAAA;IAC5C,MAAME,UAAAA,GACJ,CAACJ,IAAAA,IAAQK,QAAAA,CAASC,QAAQC,GAAG,CAACC,yBAAyB,CAAA,IAAKH,QAAAA,CAASF,iBAAAA,CAAAA;AAEvE,IAAA,MAAMM,WAASC,MAAAA,CAAaX,MAAAA,CAAAA;IAC5B,MAAMY,SAAAA,GAAYC,YAAkBH,QAAAA,EAAQ;QAAEI,aAAAA,EAAehB;AAAe,KAAA,CAAA;IAE5E,OAAO;AACL,QAAA,IAAIO,UAAAA,CAAAA,GAAa;YACf,OAAOA,UAAAA;AACT,QAAA,CAAA;AAEAU,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACV,UAAAA,EAAY;gBACfL,MAAAA,CAAOgB,IAAI,CAACC,GAAG,CAAC;oBACdC,aAAAA,EAAe;AACbC,wBAAAA,IAAAA,EAAM,IAAMP,SAAAA,CAAU,MAAA,CAAA;wBACtBQ,OAAAA,EAAS;AACX;AACF,iBAAA,CAAA;AAEApB,gBAAAA,MAAAA,CAAOqB,MAAM,CAACC,GAAG,CAACC,UAAAA,CAAiB;AAAEX,oBAAAA,SAAAA;AAAWZ,oBAAAA;AAAO,iBAAA,CAAA,CAAA;AACzD,YAAA;AACF,QAAA,CAAA;QAEAwB,SAAAA,CAAAA,GAAAA,CAAa,CAAA;AAEb,QAAA,MAAMC,IAAAA,CAAAA,CAAKC,KAAa,EAAEC,OAAAA,GAAmC,EAAE,EAAA;AAC7D,YAAA,IAAItB,YAAY,OAAO,IAAA;AACvB,YAAA,OAAOO,UAAUc,KAAAA,EAAOC,OAAAA,CAAAA;AAC1B,QAAA,CAAA;AAEAC,QAAAA,OAAAA,CAAAA,GAAAA;;AAEA,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/metrics/index.ts"],"sourcesContent":["/**\n * Strapi telemetry package.\n * You can learn more at https://docs.strapi.io/developer-docs/latest/getting-started/usage-information.html\n */\n\nimport type { Core } from '@strapi/types';\n\nimport wrapWithRateLimit from './rate-limiter';\nimport createSender from './sender';\nimport createMiddleware from './middleware';\nimport isTruthy from './is-truthy';\n\nconst LIMITED_EVENTS = [\n 'didSaveMediaWithAlternativeText',\n 'didSaveMediaWithCaption',\n 'didDisableResponsiveDimensions',\n 'didEnableResponsiveDimensions',\n 'didInitializePluginUpload',\n];\n\nconst createTelemetryInstance = (strapi: Core.Strapi) => {\n const uuid = strapi.config.get('uuid');\n const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled');\n const isDisabled =\n !uuid || isTruthy(process.env.STRAPI_TELEMETRY_DISABLED) || isTruthy(telemetryDisabled);\n\n const sender = createSender(strapi);\n const sendEvent = wrapWithRateLimit(sender, { limitedEvents: LIMITED_EVENTS });\n\n return {\n get isDisabled() {\n return isDisabled;\n },\n\n register() {\n if (!isDisabled) {\n strapi.cron.add({\n sendPingEvent: {\n task: () => sendEvent('ping'),\n options: '0 0 12 * * *',\n },\n });\n\n strapi.server.use(createMiddleware({ sendEvent, strapi }));\n }\n },\n\n bootstrap() {},\n\n async send(event: string, payload: Record<string, unknown> = {}) {\n if (isDisabled) return true;\n return sendEvent(event, payload);\n },\n\n destroy() {\n // Clean up resources if needed\n },\n };\n};\n\nexport default createTelemetryInstance;\n"],"names":["LIMITED_EVENTS","createTelemetryInstance","strapi","uuid","config","get","telemetryDisabled","isDisabled","isTruthy","process","env","STRAPI_TELEMETRY_DISABLED","sender","createSender","sendEvent","wrapWithRateLimit","limitedEvents","register","cron","add","sendPingEvent","task","options","server","use","createMiddleware","bootstrap","send","event","payload","destroy"],"mappings":";;;;;AAYA,MAAMA,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/metrics/index.ts"],"sourcesContent":["/**\n * Strapi telemetry package.\n * You can learn more at https://docs.strapi.io/developer-docs/latest/getting-started/usage-information.html\n */\n\nimport type { Core } from '@strapi/types';\n\nimport wrapWithRateLimit from './rate-limiter';\nimport createSender from './sender';\nimport createMiddleware from './middleware';\nimport isTruthy from './is-truthy';\n\nconst LIMITED_EVENTS = [\n 'didSaveMediaWithAlternativeText',\n 'didSaveMediaWithCaption',\n 'didDisableResponsiveDimensions',\n 'didEnableResponsiveDimensions',\n 'didInitializePluginUpload',\n];\n\nconst createTelemetryInstance = (strapi: Core.Strapi) => {\n const uuid = strapi.config.get('uuid');\n const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled');\n const isDisabled =\n !uuid || isTruthy(process.env.STRAPI_TELEMETRY_DISABLED) || isTruthy(telemetryDisabled);\n\n const sender = createSender(strapi);\n const sendEvent = wrapWithRateLimit(sender, { limitedEvents: LIMITED_EVENTS });\n\n return {\n get isDisabled() {\n return isDisabled;\n },\n\n register() {\n if (!isDisabled) {\n strapi.cron.add({\n sendPingEvent: {\n task: () => sendEvent('ping'),\n options: '0 0 12 * * *',\n },\n });\n\n strapi.server.use(createMiddleware({ sendEvent, strapi }));\n }\n },\n\n bootstrap() {},\n\n async send(event: string, payload: Record<string, unknown> = {}) {\n if (isDisabled) return true;\n return sendEvent(event, payload);\n },\n\n destroy() {\n // Clean up resources if needed\n },\n };\n};\n\nexport default createTelemetryInstance;\n"],"names":["LIMITED_EVENTS","createTelemetryInstance","strapi","uuid","config","get","telemetryDisabled","isDisabled","isTruthy","process","env","STRAPI_TELEMETRY_DISABLED","sender","createSender","sendEvent","wrapWithRateLimit","limitedEvents","register","cron","add","sendPingEvent","task","options","server","use","createMiddleware","bootstrap","send","event","payload","destroy"],"mappings":";;;;;AAYA,MAAMA,cAAAA,GAAiB;AACrB,IAAA,iCAAA;AACA,IAAA,yBAAA;AACA,IAAA,gCAAA;AACA,IAAA,+BAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,0BAA0B,CAACC,MAAAA,GAAAA;AAC/B,IAAA,MAAMC,IAAAA,GAAOD,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAC,MAAA,CAAA;AAC/B,IAAA,MAAMC,iBAAAA,GAAoBJ,MAAAA,CAAOE,MAAM,CAACC,GAAG,CAAC,qCAAA,CAAA;IAC5C,MAAME,UAAAA,GACJ,CAACJ,IAAAA,IAAQK,QAAAA,CAASC,QAAQC,GAAG,CAACC,yBAAyB,CAAA,IAAKH,QAAAA,CAASF,iBAAAA,CAAAA;AAEvE,IAAA,MAAMM,SAASC,YAAAA,CAAaX,MAAAA,CAAAA;IAC5B,MAAMY,SAAAA,GAAYC,kBAAkBH,MAAAA,EAAQ;QAAEI,aAAAA,EAAehB;AAAe,KAAA,CAAA;IAE5E,OAAO;AACL,QAAA,IAAIO,UAAAA,CAAAA,GAAa;YACf,OAAOA,UAAAA;AACT,QAAA,CAAA;AAEAU,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACV,UAAAA,EAAY;gBACfL,MAAAA,CAAOgB,IAAI,CAACC,GAAG,CAAC;oBACdC,aAAAA,EAAe;AACbC,wBAAAA,IAAAA,EAAM,IAAMP,SAAAA,CAAU,MAAA,CAAA;wBACtBQ,OAAAA,EAAS;AACX;AACF,iBAAA,CAAA;AAEApB,gBAAAA,MAAAA,CAAOqB,MAAM,CAACC,GAAG,CAACC,gBAAAA,CAAiB;AAAEX,oBAAAA,SAAAA;AAAWZ,oBAAAA;AAAO,iBAAA,CAAA,CAAA;AACzD,YAAA;AACF,QAAA,CAAA;QAEAwB,SAAAA,CAAAA,GAAAA,CAAa,CAAA;AAEb,QAAA,MAAMC,IAAAA,CAAAA,CAAKC,KAAa,EAAEC,OAAAA,GAAmC,EAAE,EAAA;AAC7D,YAAA,IAAItB,YAAY,OAAO,IAAA;AACvB,YAAA,OAAOO,UAAUc,KAAAA,EAAOC,OAAAA,CAAAA;AAC1B,QAAA,CAAA;AAEAC,QAAAA,OAAAA,CAAAA,GAAAA;;AAEA,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-truthy.js","sources":["../../../src/services/metrics/is-truthy.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst isTruthy = (val: any) => {\n return [1, true].includes(val) || ['true', '1'].includes(_.toLower(val));\n};\n\nexport default isTruthy;\n"],"names":["isTruthy","val","includes","_","toLower"],"mappings":";;;;AAEA,MAAMA,WAAW,CAACC,GAAAA,GAAAA;IAChB,OAAO;AAAC,QAAA,CAAA;AAAG,QAAA;KAAK,CAACC,QAAQ,CAACD,
|
|
1
|
+
{"version":3,"file":"is-truthy.js","sources":["../../../src/services/metrics/is-truthy.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst isTruthy = (val: any) => {\n return [1, true].includes(val) || ['true', '1'].includes(_.toLower(val));\n};\n\nexport default isTruthy;\n"],"names":["isTruthy","val","includes","_","toLower"],"mappings":";;;;AAEA,MAAMA,WAAW,CAACC,GAAAA,GAAAA;IAChB,OAAO;AAAC,QAAA,CAAA;AAAG,QAAA;KAAK,CAACC,QAAQ,CAACD,GAAAA,CAAAA,IAAQ;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAI,KAAA,CAACC,QAAQ,CAACC,CAAAA,CAAEC,OAAO,CAACH,GAAAA,CAAAA,CAAAA;AACrE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-truthy.mjs","sources":["../../../src/services/metrics/is-truthy.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst isTruthy = (val: any) => {\n return [1, true].includes(val) || ['true', '1'].includes(_.toLower(val));\n};\n\nexport default isTruthy;\n"],"names":["isTruthy","val","includes","_","toLower"],"mappings":";;AAEA,MAAMA,WAAW,CAACC,GAAAA,GAAAA;IAChB,OAAO;AAAC,QAAA,CAAA;AAAG,QAAA;KAAK,CAACC,QAAQ,CAACD,
|
|
1
|
+
{"version":3,"file":"is-truthy.mjs","sources":["../../../src/services/metrics/is-truthy.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst isTruthy = (val: any) => {\n return [1, true].includes(val) || ['true', '1'].includes(_.toLower(val));\n};\n\nexport default isTruthy;\n"],"names":["isTruthy","val","includes","_","toLower"],"mappings":";;AAEA,MAAMA,WAAW,CAACC,GAAAA,GAAAA;IAChB,OAAO;AAAC,QAAA,CAAA;AAAG,QAAA;KAAK,CAACC,QAAQ,CAACD,GAAAA,CAAAA,IAAQ;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAI,KAAA,CAACC,QAAQ,CAACC,CAAAA,CAAEC,OAAO,CAACH,GAAAA,CAAAA,CAAAA;AACrE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sources":["../../../src/services/metrics/middleware.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { Sender } from './sender';\n\ninterface State {\n expires: number;\n counter: number;\n}\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nconst createMiddleware = ({ sendEvent, strapi }: { sendEvent: Sender; strapi: Core.Strapi }) => {\n const state: State = {\n expires: nextResetDate(),\n counter: 0,\n };\n\n const middleware: Core.MiddlewareHandler = async (ctx, next) => {\n const { url, method } = ctx.request;\n\n // Only track API requests (skip static assets)\n const shouldTrack =\n !url.includes('.') &&\n url.includes(strapi.config.get('api.rest.prefix')) &&\n ['GET', 'PUT', 'POST', 'DELETE'].includes(method);\n\n if (shouldTrack) {\n // Reset counter if expired\n if (Date.now() > state.expires) {\n state.expires = nextResetDate();\n state.counter = 0;\n }\n\n // Track on response finish if under limit\n // Increment counter immediately to prevent race conditions\n if (state.counter < 1000) {\n state.counter += 1;\n\n let tracked = false;\n const trackOnFinish = () => {\n if (tracked) return;\n tracked = true;\n\n const statusCode = typeof ctx.response?.status === 'number' ? ctx.response.status : 500;\n const success = statusCode >= 200 && statusCode < 300;\n\n // Silently handle tracking errors - telemetry failures shouldn't affect the app\n Promise.resolve(\n sendEvent('didReceiveRequest', {\n eventProperties: {\n url: ctx.request.url,\n success,\n statusCode,\n },\n })\n ).catch(() => {\n // Ignore tracking errors\n });\n };\n\n // Track when response finishes (success or error)\n ctx.res.once('finish', trackOnFinish);\n ctx.res.once('close', trackOnFinish);\n }\n }\n\n await next();\n };\n\n return middleware;\n};\n\nexport default createMiddleware;\n"],"names":["nextResetDate","Date","now","createMiddleware","sendEvent","strapi","state","expires","counter","middleware","ctx","next","url","method","request","shouldTrack","includes","config","get","tracked","trackOnFinish","statusCode","response","status","success","Promise","resolve","eventProperties","catch","res","once"],"mappings":";;AAQA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware.js","sources":["../../../src/services/metrics/middleware.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { Sender } from './sender';\n\ninterface State {\n expires: number;\n counter: number;\n}\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nconst createMiddleware = ({ sendEvent, strapi }: { sendEvent: Sender; strapi: Core.Strapi }) => {\n const state: State = {\n expires: nextResetDate(),\n counter: 0,\n };\n\n const middleware: Core.MiddlewareHandler = async (ctx, next) => {\n const { url, method } = ctx.request;\n\n // Only track API requests (skip static assets)\n const shouldTrack =\n !url.includes('.') &&\n url.includes(strapi.config.get('api.rest.prefix')) &&\n ['GET', 'PUT', 'POST', 'DELETE'].includes(method);\n\n if (shouldTrack) {\n // Reset counter if expired\n if (Date.now() > state.expires) {\n state.expires = nextResetDate();\n state.counter = 0;\n }\n\n // Track on response finish if under limit\n // Increment counter immediately to prevent race conditions\n if (state.counter < 1000) {\n state.counter += 1;\n\n let tracked = false;\n const trackOnFinish = () => {\n if (tracked) return;\n tracked = true;\n\n const statusCode = typeof ctx.response?.status === 'number' ? ctx.response.status : 500;\n const success = statusCode >= 200 && statusCode < 300;\n\n // Silently handle tracking errors - telemetry failures shouldn't affect the app\n Promise.resolve(\n sendEvent('didReceiveRequest', {\n eventProperties: {\n url: ctx.request.url,\n success,\n statusCode,\n },\n })\n ).catch(() => {\n // Ignore tracking errors\n });\n };\n\n // Track when response finishes (success or error)\n ctx.res.once('finish', trackOnFinish);\n ctx.res.once('close', trackOnFinish);\n }\n }\n\n await next();\n };\n\n return middleware;\n};\n\nexport default createMiddleware;\n"],"names":["nextResetDate","Date","now","createMiddleware","sendEvent","strapi","state","expires","counter","middleware","ctx","next","url","method","request","shouldTrack","includes","config","get","tracked","trackOnFinish","statusCode","response","status","success","Promise","resolve","eventProperties","catch","res","once"],"mappings":";;AAQA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA,GAAK;AACrC;AAEA,MAAMC,mBAAmB,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAA8C,GAAA;AACzF,IAAA,MAAMC,KAAAA,GAAe;QACnBC,OAAAA,EAASP,aAAAA,EAAAA;QACTQ,OAAAA,EAAS;AACX,KAAA;IAEA,MAAMC,UAAAA,GAAqC,OAAOC,GAAAA,EAAKC,IAAAA,GAAAA;AACrD,QAAA,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGH,IAAII,OAAO;;AAGnC,QAAA,MAAMC,WAAAA,GACJ,CAACH,GAAAA,CAAII,QAAQ,CAAC,GAAA,CAAA,IACdJ,GAAAA,CAAII,QAAQ,CAACX,MAAAA,CAAOY,MAAM,CAACC,GAAG,CAAC,iBAAA,CAAA,CAAA,IAC/B;AAAC,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA;AAAS,SAAA,CAACF,QAAQ,CAACH,MAAAA,CAAAA;AAE5C,QAAA,IAAIE,WAAAA,EAAa;;AAEf,YAAA,IAAId,IAAAA,CAAKC,GAAG,EAAA,GAAKI,KAAAA,CAAMC,OAAO,EAAE;AAC9BD,gBAAAA,KAAAA,CAAMC,OAAO,GAAGP,aAAAA,EAAAA;AAChBM,gBAAAA,KAAAA,CAAME,OAAO,GAAG,CAAA;AAClB,YAAA;;;YAIA,IAAIF,KAAAA,CAAME,OAAO,GAAG,IAAA,EAAM;AACxBF,gBAAAA,KAAAA,CAAME,OAAO,IAAI,CAAA;AAEjB,gBAAA,IAAIW,OAAAA,GAAU,KAAA;AACd,gBAAA,MAAMC,aAAAA,GAAgB,IAAA;AACpB,oBAAA,IAAID,OAAAA,EAAS;oBACbA,OAAAA,GAAU,IAAA;oBAEV,MAAME,UAAAA,GAAa,OAAOX,GAAAA,CAAIY,QAAQ,EAAEC,MAAAA,KAAW,QAAA,GAAWb,GAAAA,CAAIY,QAAQ,CAACC,MAAM,GAAG,GAAA;oBACpF,MAAMC,OAAAA,GAAUH,UAAAA,IAAc,GAAA,IAAOA,UAAAA,GAAa,GAAA;;oBAGlDI,OAAAA,CAAQC,OAAO,CACbtB,SAAAA,CAAU,mBAAA,EAAqB;wBAC7BuB,eAAAA,EAAiB;4BACff,GAAAA,EAAKF,GAAAA,CAAII,OAAO,CAACF,GAAG;AACpBY,4BAAAA,OAAAA;AACAH,4BAAAA;AACF;AACF,qBAAA,CAAA,CAAA,CACAO,KAAK,CAAC,IAAA;;AAER,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;;AAGAlB,gBAAAA,GAAAA,CAAImB,GAAG,CAACC,IAAI,CAAC,QAAA,EAAUV,aAAAA,CAAAA;AACvBV,gBAAAA,GAAAA,CAAImB,GAAG,CAACC,IAAI,CAAC,OAAA,EAASV,aAAAA,CAAAA;AACxB,YAAA;AACF,QAAA;QAEA,MAAMT,IAAAA,EAAAA;AACR,IAAA,CAAA;IAEA,OAAOF,UAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.mjs","sources":["../../../src/services/metrics/middleware.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { Sender } from './sender';\n\ninterface State {\n expires: number;\n counter: number;\n}\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nconst createMiddleware = ({ sendEvent, strapi }: { sendEvent: Sender; strapi: Core.Strapi }) => {\n const state: State = {\n expires: nextResetDate(),\n counter: 0,\n };\n\n const middleware: Core.MiddlewareHandler = async (ctx, next) => {\n const { url, method } = ctx.request;\n\n // Only track API requests (skip static assets)\n const shouldTrack =\n !url.includes('.') &&\n url.includes(strapi.config.get('api.rest.prefix')) &&\n ['GET', 'PUT', 'POST', 'DELETE'].includes(method);\n\n if (shouldTrack) {\n // Reset counter if expired\n if (Date.now() > state.expires) {\n state.expires = nextResetDate();\n state.counter = 0;\n }\n\n // Track on response finish if under limit\n // Increment counter immediately to prevent race conditions\n if (state.counter < 1000) {\n state.counter += 1;\n\n let tracked = false;\n const trackOnFinish = () => {\n if (tracked) return;\n tracked = true;\n\n const statusCode = typeof ctx.response?.status === 'number' ? ctx.response.status : 500;\n const success = statusCode >= 200 && statusCode < 300;\n\n // Silently handle tracking errors - telemetry failures shouldn't affect the app\n Promise.resolve(\n sendEvent('didReceiveRequest', {\n eventProperties: {\n url: ctx.request.url,\n success,\n statusCode,\n },\n })\n ).catch(() => {\n // Ignore tracking errors\n });\n };\n\n // Track when response finishes (success or error)\n ctx.res.once('finish', trackOnFinish);\n ctx.res.once('close', trackOnFinish);\n }\n }\n\n await next();\n };\n\n return middleware;\n};\n\nexport default createMiddleware;\n"],"names":["nextResetDate","Date","now","createMiddleware","sendEvent","strapi","state","expires","counter","middleware","ctx","next","url","method","request","shouldTrack","includes","config","get","tracked","trackOnFinish","statusCode","response","status","success","Promise","resolve","eventProperties","catch","res","once"],"mappings":"AAQA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware.mjs","sources":["../../../src/services/metrics/middleware.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { Sender } from './sender';\n\ninterface State {\n expires: number;\n counter: number;\n}\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nconst createMiddleware = ({ sendEvent, strapi }: { sendEvent: Sender; strapi: Core.Strapi }) => {\n const state: State = {\n expires: nextResetDate(),\n counter: 0,\n };\n\n const middleware: Core.MiddlewareHandler = async (ctx, next) => {\n const { url, method } = ctx.request;\n\n // Only track API requests (skip static assets)\n const shouldTrack =\n !url.includes('.') &&\n url.includes(strapi.config.get('api.rest.prefix')) &&\n ['GET', 'PUT', 'POST', 'DELETE'].includes(method);\n\n if (shouldTrack) {\n // Reset counter if expired\n if (Date.now() > state.expires) {\n state.expires = nextResetDate();\n state.counter = 0;\n }\n\n // Track on response finish if under limit\n // Increment counter immediately to prevent race conditions\n if (state.counter < 1000) {\n state.counter += 1;\n\n let tracked = false;\n const trackOnFinish = () => {\n if (tracked) return;\n tracked = true;\n\n const statusCode = typeof ctx.response?.status === 'number' ? ctx.response.status : 500;\n const success = statusCode >= 200 && statusCode < 300;\n\n // Silently handle tracking errors - telemetry failures shouldn't affect the app\n Promise.resolve(\n sendEvent('didReceiveRequest', {\n eventProperties: {\n url: ctx.request.url,\n success,\n statusCode,\n },\n })\n ).catch(() => {\n // Ignore tracking errors\n });\n };\n\n // Track when response finishes (success or error)\n ctx.res.once('finish', trackOnFinish);\n ctx.res.once('close', trackOnFinish);\n }\n }\n\n await next();\n };\n\n return middleware;\n};\n\nexport default createMiddleware;\n"],"names":["nextResetDate","Date","now","createMiddleware","sendEvent","strapi","state","expires","counter","middleware","ctx","next","url","method","request","shouldTrack","includes","config","get","tracked","trackOnFinish","statusCode","response","status","success","Promise","resolve","eventProperties","catch","res","once"],"mappings":"AAQA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA,GAAK;AACrC;AAEA,MAAMC,mBAAmB,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAA8C,GAAA;AACzF,IAAA,MAAMC,KAAAA,GAAe;QACnBC,OAAAA,EAASP,aAAAA,EAAAA;QACTQ,OAAAA,EAAS;AACX,KAAA;IAEA,MAAMC,UAAAA,GAAqC,OAAOC,GAAAA,EAAKC,IAAAA,GAAAA;AACrD,QAAA,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAE,GAAGH,IAAII,OAAO;;AAGnC,QAAA,MAAMC,WAAAA,GACJ,CAACH,GAAAA,CAAII,QAAQ,CAAC,GAAA,CAAA,IACdJ,GAAAA,CAAII,QAAQ,CAACX,MAAAA,CAAOY,MAAM,CAACC,GAAG,CAAC,iBAAA,CAAA,CAAA,IAC/B;AAAC,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA;AAAS,SAAA,CAACF,QAAQ,CAACH,MAAAA,CAAAA;AAE5C,QAAA,IAAIE,WAAAA,EAAa;;AAEf,YAAA,IAAId,IAAAA,CAAKC,GAAG,EAAA,GAAKI,KAAAA,CAAMC,OAAO,EAAE;AAC9BD,gBAAAA,KAAAA,CAAMC,OAAO,GAAGP,aAAAA,EAAAA;AAChBM,gBAAAA,KAAAA,CAAME,OAAO,GAAG,CAAA;AAClB,YAAA;;;YAIA,IAAIF,KAAAA,CAAME,OAAO,GAAG,IAAA,EAAM;AACxBF,gBAAAA,KAAAA,CAAME,OAAO,IAAI,CAAA;AAEjB,gBAAA,IAAIW,OAAAA,GAAU,KAAA;AACd,gBAAA,MAAMC,aAAAA,GAAgB,IAAA;AACpB,oBAAA,IAAID,OAAAA,EAAS;oBACbA,OAAAA,GAAU,IAAA;oBAEV,MAAME,UAAAA,GAAa,OAAOX,GAAAA,CAAIY,QAAQ,EAAEC,MAAAA,KAAW,QAAA,GAAWb,GAAAA,CAAIY,QAAQ,CAACC,MAAM,GAAG,GAAA;oBACpF,MAAMC,OAAAA,GAAUH,UAAAA,IAAc,GAAA,IAAOA,UAAAA,GAAa,GAAA;;oBAGlDI,OAAAA,CAAQC,OAAO,CACbtB,SAAAA,CAAU,mBAAA,EAAqB;wBAC7BuB,eAAAA,EAAiB;4BACff,GAAAA,EAAKF,GAAAA,CAAII,OAAO,CAACF,GAAG;AACpBY,4BAAAA,OAAAA;AACAH,4BAAAA;AACF;AACF,qBAAA,CAAA,CAAA,CACAO,KAAK,CAAC,IAAA;;AAER,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA;;AAGAlB,gBAAAA,GAAAA,CAAImB,GAAG,CAACC,IAAI,CAAC,QAAA,EAAUV,aAAAA,CAAAA;AACvBV,gBAAAA,GAAAA,CAAImB,GAAG,CAACC,IAAI,CAAC,OAAA,EAASV,aAAAA,CAAAA;AACxB,YAAA;AACF,QAAA;QAEA,MAAMT,IAAAA,EAAAA;AACR,IAAA,CAAA;IAEA,OAAOF,UAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.js","sources":["../../../src/services/metrics/rate-limiter.ts"],"sourcesContent":["import type { Sender } from './sender';\n\ninterface Options {\n limitedEvents?: string[];\n}\n\ntype TailParams<T extends (...args: any[]) => any> =\n Parameters<T> extends [unknown, ...infer U] ? U : never;\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nexport default (sender: Sender, { limitedEvents = [] }: Options = {}) => {\n let cacheExpiresAt = nextResetDate();\n const eventCache = new Map();\n\n return async (event: string, ...args: TailParams<Sender>) => {\n if (!limitedEvents.includes(event)) {\n return sender(event, ...args);\n }\n\n if (Date.now() > cacheExpiresAt) {\n eventCache.clear();\n cacheExpiresAt = nextResetDate();\n }\n\n if (eventCache.has(event)) {\n return false;\n }\n\n eventCache.set(event, true);\n return sender(event, ...args);\n };\n};\n"],"names":["nextResetDate","Date","now","sender","limitedEvents","cacheExpiresAt","eventCache","Map","event","args","includes","clear","has","set"],"mappings":";;AASA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sources":["../../../src/services/metrics/rate-limiter.ts"],"sourcesContent":["import type { Sender } from './sender';\n\ninterface Options {\n limitedEvents?: string[];\n}\n\ntype TailParams<T extends (...args: any[]) => any> =\n Parameters<T> extends [unknown, ...infer U] ? U : never;\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nexport default (sender: Sender, { limitedEvents = [] }: Options = {}) => {\n let cacheExpiresAt = nextResetDate();\n const eventCache = new Map();\n\n return async (event: string, ...args: TailParams<Sender>) => {\n if (!limitedEvents.includes(event)) {\n return sender(event, ...args);\n }\n\n if (Date.now() > cacheExpiresAt) {\n eventCache.clear();\n cacheExpiresAt = nextResetDate();\n }\n\n if (eventCache.has(event)) {\n return false;\n }\n\n eventCache.set(event, true);\n return sender(event, ...args);\n };\n};\n"],"names":["nextResetDate","Date","now","sender","limitedEvents","cacheExpiresAt","eventCache","Map","event","args","includes","clear","has","set"],"mappings":";;AASA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA,GAAK;AACrC;AAEA,wBAAe,CAAA,CAACC,MAAAA,EAAgB,EAAEC,gBAAgB,EAAE,EAAW,GAAG,EAAE,GAAA;AAClE,IAAA,IAAIC,cAAAA,GAAiBL,aAAAA,EAAAA;AACrB,IAAA,MAAMM,aAAa,IAAIC,GAAAA,EAAAA;IAEvB,OAAO,OAAOC,OAAe,GAAGC,IAAAA,GAAAA;AAC9B,QAAA,IAAI,CAACL,aAAAA,CAAcM,QAAQ,CAACF,KAAAA,CAAAA,EAAQ;AAClC,YAAA,OAAOL,OAAOK,KAAAA,EAAAA,GAAUC,IAAAA,CAAAA;AAC1B,QAAA;QAEA,IAAIR,IAAAA,CAAKC,GAAG,EAAA,GAAKG,cAAAA,EAAgB;AAC/BC,YAAAA,UAAAA,CAAWK,KAAK,EAAA;YAChBN,cAAAA,GAAiBL,aAAAA,EAAAA;AACnB,QAAA;QAEA,IAAIM,UAAAA,CAAWM,GAAG,CAACJ,KAAAA,CAAAA,EAAQ;YACzB,OAAO,KAAA;AACT,QAAA;QAEAF,UAAAA,CAAWO,GAAG,CAACL,KAAAA,EAAO,IAAA,CAAA;AACtB,QAAA,OAAOL,OAAOK,KAAAA,EAAAA,GAAUC,IAAAA,CAAAA;AAC1B,IAAA,CAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.mjs","sources":["../../../src/services/metrics/rate-limiter.ts"],"sourcesContent":["import type { Sender } from './sender';\n\ninterface Options {\n limitedEvents?: string[];\n}\n\ntype TailParams<T extends (...args: any[]) => any> =\n Parameters<T> extends [unknown, ...infer U] ? U : never;\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nexport default (sender: Sender, { limitedEvents = [] }: Options = {}) => {\n let cacheExpiresAt = nextResetDate();\n const eventCache = new Map();\n\n return async (event: string, ...args: TailParams<Sender>) => {\n if (!limitedEvents.includes(event)) {\n return sender(event, ...args);\n }\n\n if (Date.now() > cacheExpiresAt) {\n eventCache.clear();\n cacheExpiresAt = nextResetDate();\n }\n\n if (eventCache.has(event)) {\n return false;\n }\n\n eventCache.set(event, true);\n return sender(event, ...args);\n };\n};\n"],"names":["nextResetDate","Date","now","sender","limitedEvents","cacheExpiresAt","eventCache","Map","event","args","includes","clear","has","set"],"mappings":"AASA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"rate-limiter.mjs","sources":["../../../src/services/metrics/rate-limiter.ts"],"sourcesContent":["import type { Sender } from './sender';\n\ninterface Options {\n limitedEvents?: string[];\n}\n\ntype TailParams<T extends (...args: any[]) => any> =\n Parameters<T> extends [unknown, ...infer U] ? U : never;\n\nfunction nextResetDate(): number {\n return Date.now() + 24 * 60 * 60 * 1000; // Now + 24 hours.\n}\n\nexport default (sender: Sender, { limitedEvents = [] }: Options = {}) => {\n let cacheExpiresAt = nextResetDate();\n const eventCache = new Map();\n\n return async (event: string, ...args: TailParams<Sender>) => {\n if (!limitedEvents.includes(event)) {\n return sender(event, ...args);\n }\n\n if (Date.now() > cacheExpiresAt) {\n eventCache.clear();\n cacheExpiresAt = nextResetDate();\n }\n\n if (eventCache.has(event)) {\n return false;\n }\n\n eventCache.set(event, true);\n return sender(event, ...args);\n };\n};\n"],"names":["nextResetDate","Date","now","sender","limitedEvents","cacheExpiresAt","eventCache","Map","event","args","includes","clear","has","set"],"mappings":"AASA,SAASA,aAAAA,GAAAA;AACP,IAAA,OAAOC,KAAKC,GAAG,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA,GAAK;AACrC;AAEA,wBAAe,CAAA,CAACC,MAAAA,EAAgB,EAAEC,gBAAgB,EAAE,EAAW,GAAG,EAAE,GAAA;AAClE,IAAA,IAAIC,cAAAA,GAAiBL,aAAAA,EAAAA;AACrB,IAAA,MAAMM,aAAa,IAAIC,GAAAA,EAAAA;IAEvB,OAAO,OAAOC,OAAe,GAAGC,IAAAA,GAAAA;AAC9B,QAAA,IAAI,CAACL,aAAAA,CAAcM,QAAQ,CAACF,KAAAA,CAAAA,EAAQ;AAClC,YAAA,OAAOL,OAAOK,KAAAA,EAAAA,GAAUC,IAAAA,CAAAA;AAC1B,QAAA;QAEA,IAAIR,IAAAA,CAAKC,GAAG,EAAA,GAAKG,cAAAA,EAAgB;AAC/BC,YAAAA,UAAAA,CAAWK,KAAK,EAAA;YAChBN,cAAAA,GAAiBL,aAAAA,EAAAA;AACnB,QAAA;QAEA,IAAIM,UAAAA,CAAWM,GAAG,CAACJ,KAAAA,CAAAA,EAAQ;YACzB,OAAO,KAAA;AACT,QAAA;QAEAF,UAAAA,CAAWO,GAAG,CAACL,KAAAA,EAAO,IAAA,CAAA;AACtB,QAAA,OAAOL,OAAOK,KAAAA,EAAAA,GAAUC,IAAAA,CAAAA;AAC1B,IAAA,CAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.js","sources":["../../../src/services/metrics/sender.ts"],"sourcesContent":["import os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport isDocker from 'is-docker';\nimport ciEnv from 'ci-info';\nimport tsUtils from '@strapi/typescript-utils';\nimport { env, generateInstallId } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { generateAdminUserHash } from './admin-user-hash';\n\nexport interface Payload {\n eventProperties?: Record<string, unknown>;\n userProperties?: Record<string, unknown>;\n groupProperties?: Record<string, unknown>;\n}\n\nexport type Sender = (\n event: string,\n payload?: Payload,\n opts?: Record<string, unknown>\n) => Promise<boolean>;\n\nconst defaultQueryOpts = {\n timeout: 1000,\n headers: { 'Content-Type': 'application/json' },\n};\n\n/**\n * Add properties from the package.json strapi key in the metadata\n */\nconst addPackageJsonStrapiMetadata = (metadata: Record<string, unknown>, strapi: Core.Strapi) => {\n const { packageJsonStrapi = {} } = strapi.config;\n\n _.defaults(metadata, packageJsonStrapi);\n};\n\n/**\n * Create a send function for event with all the necessary metadata\n */\nexport default (strapi: Core.Strapi): Sender => {\n const { uuid, installId: installIdFromPackageJson } = strapi.config;\n\n const installId = generateInstallId(uuid, installIdFromPackageJson);\n\n const serverRootPath = strapi.dirs.app.root;\n const adminRootPath = path.join(strapi.dirs.app.root, 'src', 'admin');\n\n const anonymousUserProperties = {\n environment: strapi.config.environment,\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const anonymousGroupProperties = {\n docker: process.env.DOCKER || isDocker(),\n isCI: ciEnv.isCI,\n version: strapi.config.get('info.strapi'),\n useTypescriptOnServer: tsUtils.isUsingTypeScriptSync(serverRootPath),\n useTypescriptOnAdmin: tsUtils.isUsingTypeScriptSync(adminRootPath),\n projectId: uuid,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n };\n\n addPackageJsonStrapiMetadata(anonymousGroupProperties, strapi);\n\n return async (event: string, payload: Payload = {}, opts = {}) => {\n const userId = generateAdminUserHash(strapi);\n\n const eeGroupProps: Record<string, unknown> = {};\n if (strapi.ee?.subscriptionId !== undefined && strapi.ee?.subscriptionId !== null) {\n eeGroupProps.subscriptionId = strapi.ee.subscriptionId;\n }\n if (strapi.ee?.planPriceId !== undefined && strapi.ee?.planPriceId !== null) {\n eeGroupProps.planPriceId = strapi.ee.planPriceId;\n }\n\n const reqParams = {\n method: 'POST',\n body: JSON.stringify({\n event,\n userId,\n installId,\n eventProperties: payload.eventProperties,\n userProperties: userId ? { ...anonymousUserProperties, ...payload.userProperties } : {},\n groupProperties: {\n ...anonymousGroupProperties,\n projectType: strapi.EE ? 'Enterprise' : 'Community',\n ...eeGroupProps,\n ...payload.groupProperties,\n },\n }),\n ..._.merge({ headers: { 'X-Strapi-Event': event } }, defaultQueryOpts, opts),\n };\n\n try {\n const analyticsUrl = env('STRAPI_ANALYTICS_URL', 'https://analytics.strapi.io');\n const res = await strapi.fetch(`${analyticsUrl}/api/v2/track`, reqParams);\n return res.ok;\n } catch (err) {\n return false;\n }\n };\n};\n"],"names":["defaultQueryOpts","timeout","headers","addPackageJsonStrapiMetadata","metadata","strapi","packageJsonStrapi","config","_","defaults","uuid","installId","installIdFromPackageJson","generateInstallId","serverRootPath","dirs","app","root","adminRootPath","path","join","anonymousUserProperties","environment","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","anonymousGroupProperties","docker","env","DOCKER","isDocker","isCI","ciEnv","version","get","useTypescriptOnServer","tsUtils","isUsingTypeScriptSync","useTypescriptOnAdmin","projectId","isHostedOnStrapiCloud","event","payload","opts","userId","generateAdminUserHash","eeGroupProps","ee","subscriptionId","undefined","planPriceId","reqParams","method","body","JSON","stringify","eventProperties","userProperties","groupProperties","projectType","EE","merge","analyticsUrl","res","fetch","ok","err"],"mappings":";;;;;;;;;;;AAsBA,MAAMA,
|
|
1
|
+
{"version":3,"file":"sender.js","sources":["../../../src/services/metrics/sender.ts"],"sourcesContent":["import os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport isDocker from 'is-docker';\nimport ciEnv from 'ci-info';\nimport tsUtils from '@strapi/typescript-utils';\nimport { env, generateInstallId } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { generateAdminUserHash } from './admin-user-hash';\n\nexport interface Payload {\n eventProperties?: Record<string, unknown>;\n userProperties?: Record<string, unknown>;\n groupProperties?: Record<string, unknown>;\n}\n\nexport type Sender = (\n event: string,\n payload?: Payload,\n opts?: Record<string, unknown>\n) => Promise<boolean>;\n\nconst defaultQueryOpts = {\n timeout: 1000,\n headers: { 'Content-Type': 'application/json' },\n};\n\n/**\n * Add properties from the package.json strapi key in the metadata\n */\nconst addPackageJsonStrapiMetadata = (metadata: Record<string, unknown>, strapi: Core.Strapi) => {\n const { packageJsonStrapi = {} } = strapi.config;\n\n _.defaults(metadata, packageJsonStrapi);\n};\n\n/**\n * Create a send function for event with all the necessary metadata\n */\nexport default (strapi: Core.Strapi): Sender => {\n const { uuid, installId: installIdFromPackageJson } = strapi.config;\n\n const installId = generateInstallId(uuid, installIdFromPackageJson);\n\n const serverRootPath = strapi.dirs.app.root;\n const adminRootPath = path.join(strapi.dirs.app.root, 'src', 'admin');\n\n const anonymousUserProperties = {\n environment: strapi.config.environment,\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const anonymousGroupProperties = {\n docker: process.env.DOCKER || isDocker(),\n isCI: ciEnv.isCI,\n version: strapi.config.get('info.strapi'),\n useTypescriptOnServer: tsUtils.isUsingTypeScriptSync(serverRootPath),\n useTypescriptOnAdmin: tsUtils.isUsingTypeScriptSync(adminRootPath),\n projectId: uuid,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n };\n\n addPackageJsonStrapiMetadata(anonymousGroupProperties, strapi);\n\n return async (event: string, payload: Payload = {}, opts = {}) => {\n const userId = generateAdminUserHash(strapi);\n\n const eeGroupProps: Record<string, unknown> = {};\n if (strapi.ee?.subscriptionId !== undefined && strapi.ee?.subscriptionId !== null) {\n eeGroupProps.subscriptionId = strapi.ee.subscriptionId;\n }\n if (strapi.ee?.planPriceId !== undefined && strapi.ee?.planPriceId !== null) {\n eeGroupProps.planPriceId = strapi.ee.planPriceId;\n }\n\n const reqParams = {\n method: 'POST',\n body: JSON.stringify({\n event,\n userId,\n installId,\n eventProperties: payload.eventProperties,\n userProperties: userId ? { ...anonymousUserProperties, ...payload.userProperties } : {},\n groupProperties: {\n ...anonymousGroupProperties,\n projectType: strapi.EE ? 'Enterprise' : 'Community',\n ...eeGroupProps,\n ...payload.groupProperties,\n },\n }),\n ..._.merge({ headers: { 'X-Strapi-Event': event } }, defaultQueryOpts, opts),\n };\n\n try {\n const analyticsUrl = env('STRAPI_ANALYTICS_URL', 'https://analytics.strapi.io');\n const res = await strapi.fetch(`${analyticsUrl}/api/v2/track`, reqParams);\n return res.ok;\n } catch (err) {\n return false;\n }\n };\n};\n"],"names":["defaultQueryOpts","timeout","headers","addPackageJsonStrapiMetadata","metadata","strapi","packageJsonStrapi","config","_","defaults","uuid","installId","installIdFromPackageJson","generateInstallId","serverRootPath","dirs","app","root","adminRootPath","path","join","anonymousUserProperties","environment","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","anonymousGroupProperties","docker","env","DOCKER","isDocker","isCI","ciEnv","version","get","useTypescriptOnServer","tsUtils","isUsingTypeScriptSync","useTypescriptOnAdmin","projectId","isHostedOnStrapiCloud","event","payload","opts","userId","generateAdminUserHash","eeGroupProps","ee","subscriptionId","undefined","planPriceId","reqParams","method","body","JSON","stringify","eventProperties","userProperties","groupProperties","projectType","EE","merge","analyticsUrl","res","fetch","ok","err"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.mjs","sources":["../../../src/services/metrics/sender.ts"],"sourcesContent":["import os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport isDocker from 'is-docker';\nimport ciEnv from 'ci-info';\nimport tsUtils from '@strapi/typescript-utils';\nimport { env, generateInstallId } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { generateAdminUserHash } from './admin-user-hash';\n\nexport interface Payload {\n eventProperties?: Record<string, unknown>;\n userProperties?: Record<string, unknown>;\n groupProperties?: Record<string, unknown>;\n}\n\nexport type Sender = (\n event: string,\n payload?: Payload,\n opts?: Record<string, unknown>\n) => Promise<boolean>;\n\nconst defaultQueryOpts = {\n timeout: 1000,\n headers: { 'Content-Type': 'application/json' },\n};\n\n/**\n * Add properties from the package.json strapi key in the metadata\n */\nconst addPackageJsonStrapiMetadata = (metadata: Record<string, unknown>, strapi: Core.Strapi) => {\n const { packageJsonStrapi = {} } = strapi.config;\n\n _.defaults(metadata, packageJsonStrapi);\n};\n\n/**\n * Create a send function for event with all the necessary metadata\n */\nexport default (strapi: Core.Strapi): Sender => {\n const { uuid, installId: installIdFromPackageJson } = strapi.config;\n\n const installId = generateInstallId(uuid, installIdFromPackageJson);\n\n const serverRootPath = strapi.dirs.app.root;\n const adminRootPath = path.join(strapi.dirs.app.root, 'src', 'admin');\n\n const anonymousUserProperties = {\n environment: strapi.config.environment,\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const anonymousGroupProperties = {\n docker: process.env.DOCKER || isDocker(),\n isCI: ciEnv.isCI,\n version: strapi.config.get('info.strapi'),\n useTypescriptOnServer: tsUtils.isUsingTypeScriptSync(serverRootPath),\n useTypescriptOnAdmin: tsUtils.isUsingTypeScriptSync(adminRootPath),\n projectId: uuid,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n };\n\n addPackageJsonStrapiMetadata(anonymousGroupProperties, strapi);\n\n return async (event: string, payload: Payload = {}, opts = {}) => {\n const userId = generateAdminUserHash(strapi);\n\n const eeGroupProps: Record<string, unknown> = {};\n if (strapi.ee?.subscriptionId !== undefined && strapi.ee?.subscriptionId !== null) {\n eeGroupProps.subscriptionId = strapi.ee.subscriptionId;\n }\n if (strapi.ee?.planPriceId !== undefined && strapi.ee?.planPriceId !== null) {\n eeGroupProps.planPriceId = strapi.ee.planPriceId;\n }\n\n const reqParams = {\n method: 'POST',\n body: JSON.stringify({\n event,\n userId,\n installId,\n eventProperties: payload.eventProperties,\n userProperties: userId ? { ...anonymousUserProperties, ...payload.userProperties } : {},\n groupProperties: {\n ...anonymousGroupProperties,\n projectType: strapi.EE ? 'Enterprise' : 'Community',\n ...eeGroupProps,\n ...payload.groupProperties,\n },\n }),\n ..._.merge({ headers: { 'X-Strapi-Event': event } }, defaultQueryOpts, opts),\n };\n\n try {\n const analyticsUrl = env('STRAPI_ANALYTICS_URL', 'https://analytics.strapi.io');\n const res = await strapi.fetch(`${analyticsUrl}/api/v2/track`, reqParams);\n return res.ok;\n } catch (err) {\n return false;\n }\n };\n};\n"],"names":["defaultQueryOpts","timeout","headers","addPackageJsonStrapiMetadata","metadata","strapi","packageJsonStrapi","config","_","defaults","uuid","installId","installIdFromPackageJson","generateInstallId","serverRootPath","dirs","app","root","adminRootPath","path","join","anonymousUserProperties","environment","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","anonymousGroupProperties","docker","env","DOCKER","isDocker","isCI","ciEnv","version","get","useTypescriptOnServer","tsUtils","isUsingTypeScriptSync","useTypescriptOnAdmin","projectId","isHostedOnStrapiCloud","event","payload","opts","userId","generateAdminUserHash","eeGroupProps","ee","subscriptionId","undefined","planPriceId","reqParams","method","body","JSON","stringify","eventProperties","userProperties","groupProperties","projectType","EE","merge","analyticsUrl","res","fetch","ok","err"],"mappings":";;;;;;;;;AAsBA,MAAMA,
|
|
1
|
+
{"version":3,"file":"sender.mjs","sources":["../../../src/services/metrics/sender.ts"],"sourcesContent":["import os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport isDocker from 'is-docker';\nimport ciEnv from 'ci-info';\nimport tsUtils from '@strapi/typescript-utils';\nimport { env, generateInstallId } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { generateAdminUserHash } from './admin-user-hash';\n\nexport interface Payload {\n eventProperties?: Record<string, unknown>;\n userProperties?: Record<string, unknown>;\n groupProperties?: Record<string, unknown>;\n}\n\nexport type Sender = (\n event: string,\n payload?: Payload,\n opts?: Record<string, unknown>\n) => Promise<boolean>;\n\nconst defaultQueryOpts = {\n timeout: 1000,\n headers: { 'Content-Type': 'application/json' },\n};\n\n/**\n * Add properties from the package.json strapi key in the metadata\n */\nconst addPackageJsonStrapiMetadata = (metadata: Record<string, unknown>, strapi: Core.Strapi) => {\n const { packageJsonStrapi = {} } = strapi.config;\n\n _.defaults(metadata, packageJsonStrapi);\n};\n\n/**\n * Create a send function for event with all the necessary metadata\n */\nexport default (strapi: Core.Strapi): Sender => {\n const { uuid, installId: installIdFromPackageJson } = strapi.config;\n\n const installId = generateInstallId(uuid, installIdFromPackageJson);\n\n const serverRootPath = strapi.dirs.app.root;\n const adminRootPath = path.join(strapi.dirs.app.root, 'src', 'admin');\n\n const anonymousUserProperties = {\n environment: strapi.config.environment,\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const anonymousGroupProperties = {\n docker: process.env.DOCKER || isDocker(),\n isCI: ciEnv.isCI,\n version: strapi.config.get('info.strapi'),\n useTypescriptOnServer: tsUtils.isUsingTypeScriptSync(serverRootPath),\n useTypescriptOnAdmin: tsUtils.isUsingTypeScriptSync(adminRootPath),\n projectId: uuid,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n };\n\n addPackageJsonStrapiMetadata(anonymousGroupProperties, strapi);\n\n return async (event: string, payload: Payload = {}, opts = {}) => {\n const userId = generateAdminUserHash(strapi);\n\n const eeGroupProps: Record<string, unknown> = {};\n if (strapi.ee?.subscriptionId !== undefined && strapi.ee?.subscriptionId !== null) {\n eeGroupProps.subscriptionId = strapi.ee.subscriptionId;\n }\n if (strapi.ee?.planPriceId !== undefined && strapi.ee?.planPriceId !== null) {\n eeGroupProps.planPriceId = strapi.ee.planPriceId;\n }\n\n const reqParams = {\n method: 'POST',\n body: JSON.stringify({\n event,\n userId,\n installId,\n eventProperties: payload.eventProperties,\n userProperties: userId ? { ...anonymousUserProperties, ...payload.userProperties } : {},\n groupProperties: {\n ...anonymousGroupProperties,\n projectType: strapi.EE ? 'Enterprise' : 'Community',\n ...eeGroupProps,\n ...payload.groupProperties,\n },\n }),\n ..._.merge({ headers: { 'X-Strapi-Event': event } }, defaultQueryOpts, opts),\n };\n\n try {\n const analyticsUrl = env('STRAPI_ANALYTICS_URL', 'https://analytics.strapi.io');\n const res = await strapi.fetch(`${analyticsUrl}/api/v2/track`, reqParams);\n return res.ok;\n } catch (err) {\n return false;\n }\n };\n};\n"],"names":["defaultQueryOpts","timeout","headers","addPackageJsonStrapiMetadata","metadata","strapi","packageJsonStrapi","config","_","defaults","uuid","installId","installIdFromPackageJson","generateInstallId","serverRootPath","dirs","app","root","adminRootPath","path","join","anonymousUserProperties","environment","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","anonymousGroupProperties","docker","env","DOCKER","isDocker","isCI","ciEnv","version","get","useTypescriptOnServer","tsUtils","isUsingTypeScriptSync","useTypescriptOnAdmin","projectId","isHostedOnStrapiCloud","event","payload","opts","userId","generateAdminUserHash","eeGroupProps","ee","subscriptionId","undefined","planPriceId","reqParams","method","body","JSON","stringify","eventProperties","userProperties","groupProperties","projectType","EE","merge","analyticsUrl","res","fetch","ok","err"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-params.js","sources":["../../src/services/query-params.ts"],"sourcesContent":["import { queryParams } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\n\nexport default (strapi: Core.Strapi) => {\n const { transformQueryParams } = queryParams.createTransformer({\n getModel: (uid: string) => strapi.getModel(uid as UID.Schema),\n });\n\n return {\n transform: transformQueryParams,\n };\n};\n"],"names":["strapi","transformQueryParams","queryParams","createTransformer","getModel","uid","transform"],"mappings":";;;;AAGA,8BAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,uBAAAA,CAAYC,iBAAiB,CAAC;AAC7DC,QAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAgBL,
|
|
1
|
+
{"version":3,"file":"query-params.js","sources":["../../src/services/query-params.ts"],"sourcesContent":["import { queryParams } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\n\nexport default (strapi: Core.Strapi) => {\n const { transformQueryParams } = queryParams.createTransformer({\n getModel: (uid: string) => strapi.getModel(uid as UID.Schema),\n });\n\n return {\n transform: transformQueryParams,\n };\n};\n"],"names":["strapi","transformQueryParams","queryParams","createTransformer","getModel","uid","transform"],"mappings":";;;;AAGA,8BAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,uBAAAA,CAAYC,iBAAiB,CAAC;AAC7DC,QAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAgBL,MAAAA,CAAOI,QAAQ,CAACC,GAAAA;AAC7C,KAAA,CAAA;IAEA,OAAO;QACLC,SAAAA,EAAWL;AACb,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-params.mjs","sources":["../../src/services/query-params.ts"],"sourcesContent":["import { queryParams } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\n\nexport default (strapi: Core.Strapi) => {\n const { transformQueryParams } = queryParams.createTransformer({\n getModel: (uid: string) => strapi.getModel(uid as UID.Schema),\n });\n\n return {\n transform: transformQueryParams,\n };\n};\n"],"names":["strapi","transformQueryParams","queryParams","createTransformer","getModel","uid","transform"],"mappings":";;AAGA,8BAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,WAAAA,CAAYC,iBAAiB,CAAC;AAC7DC,QAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAgBL,
|
|
1
|
+
{"version":3,"file":"query-params.mjs","sources":["../../src/services/query-params.ts"],"sourcesContent":["import { queryParams } from '@strapi/utils';\nimport type { Core, UID } from '@strapi/types';\n\nexport default (strapi: Core.Strapi) => {\n const { transformQueryParams } = queryParams.createTransformer({\n getModel: (uid: string) => strapi.getModel(uid as UID.Schema),\n });\n\n return {\n transform: transformQueryParams,\n };\n};\n"],"names":["strapi","transformQueryParams","queryParams","createTransformer","getModel","uid","transform"],"mappings":";;AAGA,8BAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,WAAAA,CAAYC,iBAAiB,CAAC;AAC7DC,QAAAA,QAAAA,EAAU,CAACC,GAAAA,GAAgBL,MAAAA,CAAOI,QAAQ,CAACC,GAAAA;AAC7C,KAAA,CAAA;IAEA,OAAO;QACLC,SAAAA,EAAWL;AACb,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reloader.js","sources":["../../src/services/reloader.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const createReloader = (strapi: Core.Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n"],"names":["createReloader","strapi","state","shouldReload","isWatching","reload","isReloading","config","get","process","send","Object","defineProperty","configurable","enumerable","set","value"],"mappings":";;AAEO,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"reloader.js","sources":["../../src/services/reloader.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const createReloader = (strapi: Core.Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n"],"names":["createReloader","strapi","state","shouldReload","isWatching","reload","isReloading","config","get","process","send","Object","defineProperty","configurable","enumerable","set","value"],"mappings":";;AAEO,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,KAAAA,GAAQ;QACZC,YAAAA,EAAc,CAAA;QACdC,UAAAA,EAAY;AACd,KAAA;IAEA,SAASC,MAAAA,GAAAA;QACP,IAAIH,KAAAA,CAAMC,YAAY,GAAG,CAAA,EAAG;;AAE1BD,YAAAA,KAAAA,CAAMC,YAAY,IAAI,CAAA;AACtBE,YAAAA,MAAAA,CAAOC,WAAW,GAAG,KAAA;AACrB,YAAA;AACF,QAAA;AAEA,QAAA,IAAIL,MAAAA,CAAOM,MAAM,CAACC,GAAG,CAAC,YAAA,CAAA,EAAe;AACnCC,YAAAA,OAAAA,CAAQC,IAAI,GAAG,QAAA,CAAA;AACjB,QAAA;AACF,IAAA;IAEAC,MAAAA,CAAOC,cAAc,CAACP,MAAAA,EAAQ,YAAA,EAAc;QAC1CQ,YAAAA,EAAc,IAAA;QACdC,UAAAA,EAAY,IAAA;AACZC,QAAAA,GAAAA,CAAAA,CAAIC,KAAK,EAAA;;AAEP,YAAA,IAAId,KAAAA,CAAME,UAAU,KAAK,KAAA,IAASY,UAAU,IAAA,EAAM;AAChDd,gBAAAA,KAAAA,CAAMC,YAAY,IAAI,CAAA;AACxB,YAAA;AACAD,YAAAA,KAAAA,CAAME,UAAU,GAAGY,KAAAA;AACrB,QAAA,CAAA;AACAR,QAAAA,GAAAA,CAAAA,GAAAA;AACE,YAAA,OAAON,MAAME,UAAU;AACzB,QAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAOC,WAAW,GAAG,KAAA;AACrBD,IAAAA,MAAAA,CAAOD,UAAU,GAAG,IAAA;IAEpB,OAAOC,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reloader.mjs","sources":["../../src/services/reloader.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const createReloader = (strapi: Core.Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n"],"names":["createReloader","strapi","state","shouldReload","isWatching","reload","isReloading","config","get","process","send","Object","defineProperty","configurable","enumerable","set","value"],"mappings":"AAEO,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"reloader.mjs","sources":["../../src/services/reloader.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport const createReloader = (strapi: Core.Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n"],"names":["createReloader","strapi","state","shouldReload","isWatching","reload","isReloading","config","get","process","send","Object","defineProperty","configurable","enumerable","set","value"],"mappings":"AAEO,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AAC7B,IAAA,MAAMC,KAAAA,GAAQ;QACZC,YAAAA,EAAc,CAAA;QACdC,UAAAA,EAAY;AACd,KAAA;IAEA,SAASC,MAAAA,GAAAA;QACP,IAAIH,KAAAA,CAAMC,YAAY,GAAG,CAAA,EAAG;;AAE1BD,YAAAA,KAAAA,CAAMC,YAAY,IAAI,CAAA;AACtBE,YAAAA,MAAAA,CAAOC,WAAW,GAAG,KAAA;AACrB,YAAA;AACF,QAAA;AAEA,QAAA,IAAIL,MAAAA,CAAOM,MAAM,CAACC,GAAG,CAAC,YAAA,CAAA,EAAe;AACnCC,YAAAA,OAAAA,CAAQC,IAAI,GAAG,QAAA,CAAA;AACjB,QAAA;AACF,IAAA;IAEAC,MAAAA,CAAOC,cAAc,CAACP,MAAAA,EAAQ,YAAA,EAAc;QAC1CQ,YAAAA,EAAc,IAAA;QACdC,UAAAA,EAAY,IAAA;AACZC,QAAAA,GAAAA,CAAAA,CAAIC,KAAK,EAAA;;AAEP,YAAA,IAAId,KAAAA,CAAME,UAAU,KAAK,KAAA,IAASY,UAAU,IAAA,EAAM;AAChDd,gBAAAA,KAAAA,CAAMC,YAAY,IAAI,CAAA;AACxB,YAAA;AACAD,YAAAA,KAAAA,CAAME,UAAU,GAAGY,KAAAA;AACrB,QAAA,CAAA;AACAR,QAAAA,GAAAA,CAAAA,GAAAA;AACE,YAAA,OAAON,MAAME,UAAU;AACzB,QAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAOC,WAAW,GAAG,KAAA;AACrBD,IAAAA,MAAAA,CAAOD,UAAU,GAAG,IAAA;IAEpB,OAAOC,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sources":["../../src/services/request-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'async_hooks';\nimport type { ParameterizedContext } from 'koa';\n\nconst storage = new AsyncLocalStorage<ParameterizedContext>();\n\nconst requestCtx = {\n async run(store: ParameterizedContext, cb: () => Promise<void>) {\n return storage.run(store, cb);\n },\n\n get() {\n return storage.getStore();\n },\n};\n\nexport default requestCtx;\n"],"names":["storage","AsyncLocalStorage","requestCtx","run","store","cb","get","getStore"],"mappings":";;;;AAGA,MAAMA,UAAU,IAAIC,6BAAAA,EAAAA;AAEpB,MAAMC,
|
|
1
|
+
{"version":3,"file":"request-context.js","sources":["../../src/services/request-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'async_hooks';\nimport type { ParameterizedContext } from 'koa';\n\nconst storage = new AsyncLocalStorage<ParameterizedContext>();\n\nconst requestCtx = {\n async run(store: ParameterizedContext, cb: () => Promise<void>) {\n return storage.run(store, cb);\n },\n\n get() {\n return storage.getStore();\n },\n};\n\nexport default requestCtx;\n"],"names":["storage","AsyncLocalStorage","requestCtx","run","store","cb","get","getStore"],"mappings":";;;;AAGA,MAAMA,UAAU,IAAIC,6BAAAA,EAAAA;AAEpB,MAAMC,UAAAA,GAAa;IACjB,MAAMC,GAAAA,CAAAA,CAAIC,KAA2B,EAAEC,EAAuB,EAAA;QAC5D,OAAOL,OAAAA,CAAQG,GAAG,CAACC,KAAAA,EAAOC,EAAAA,CAAAA;AAC5B,IAAA,CAAA;AAEAC,IAAAA,GAAAA,CAAAA,GAAAA;AACE,QAAA,OAAON,QAAQO,QAAQ,EAAA;AACzB,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.mjs","sources":["../../src/services/request-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'async_hooks';\nimport type { ParameterizedContext } from 'koa';\n\nconst storage = new AsyncLocalStorage<ParameterizedContext>();\n\nconst requestCtx = {\n async run(store: ParameterizedContext, cb: () => Promise<void>) {\n return storage.run(store, cb);\n },\n\n get() {\n return storage.getStore();\n },\n};\n\nexport default requestCtx;\n"],"names":["storage","AsyncLocalStorage","requestCtx","run","store","cb","get","getStore"],"mappings":";;AAGA,MAAMA,UAAU,IAAIC,iBAAAA,EAAAA;AAEpB,MAAMC,
|
|
1
|
+
{"version":3,"file":"request-context.mjs","sources":["../../src/services/request-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'async_hooks';\nimport type { ParameterizedContext } from 'koa';\n\nconst storage = new AsyncLocalStorage<ParameterizedContext>();\n\nconst requestCtx = {\n async run(store: ParameterizedContext, cb: () => Promise<void>) {\n return storage.run(store, cb);\n },\n\n get() {\n return storage.getStore();\n },\n};\n\nexport default requestCtx;\n"],"names":["storage","AsyncLocalStorage","requestCtx","run","store","cb","get","getStore"],"mappings":";;AAGA,MAAMA,UAAU,IAAIC,iBAAAA,EAAAA;AAEpB,MAAMC,UAAAA,GAAa;IACjB,MAAMC,GAAAA,CAAAA,CAAIC,KAA2B,EAAEC,EAAuB,EAAA;QAC5D,OAAOL,OAAAA,CAAQG,GAAG,CAACC,KAAAA,EAAOC,EAAAA,CAAAA;AAC5B,IAAA,CAAA;AAEAC,IAAAA,GAAAA,CAAAA,GAAAA;AACE,QAAA,OAAON,QAAQO,QAAQ,EAAA;AACzB,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-api.js","sources":["../../../src/services/server/admin-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createAPI } from './api';\n\nconst createAdminAPI = (strapi: Core.Strapi) => {\n const opts = {\n prefix: '', // '/admin';\n type: 'admin',\n };\n\n return createAPI(strapi, opts);\n};\n\nexport { createAdminAPI };\n"],"names":["createAdminAPI","strapi","opts","prefix","type","createAPI"],"mappings":";;;;AAGA,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AACtB,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"admin-api.js","sources":["../../../src/services/server/admin-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createAPI } from './api';\n\nconst createAdminAPI = (strapi: Core.Strapi) => {\n const opts = {\n prefix: '', // '/admin';\n type: 'admin',\n };\n\n return createAPI(strapi, opts);\n};\n\nexport { createAdminAPI };\n"],"names":["createAdminAPI","strapi","opts","prefix","type","createAPI"],"mappings":";;;;AAGA,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AACtB,IAAA,MAAMC,IAAAA,GAAO;QACXC,MAAAA,EAAQ,EAAA;QACRC,IAAAA,EAAM;AACR,KAAA;AAEA,IAAA,OAAOC,cAAUJ,MAAAA,EAAQC,IAAAA,CAAAA;AAC3B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-api.mjs","sources":["../../../src/services/server/admin-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createAPI } from './api';\n\nconst createAdminAPI = (strapi: Core.Strapi) => {\n const opts = {\n prefix: '', // '/admin';\n type: 'admin',\n };\n\n return createAPI(strapi, opts);\n};\n\nexport { createAdminAPI };\n"],"names":["createAdminAPI","strapi","opts","prefix","type","createAPI"],"mappings":";;AAGA,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AACtB,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"admin-api.mjs","sources":["../../../src/services/server/admin-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { createAPI } from './api';\n\nconst createAdminAPI = (strapi: Core.Strapi) => {\n const opts = {\n prefix: '', // '/admin';\n type: 'admin',\n };\n\n return createAPI(strapi, opts);\n};\n\nexport { createAdminAPI };\n"],"names":["createAdminAPI","strapi","opts","prefix","type","createAPI"],"mappings":";;AAGA,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AACtB,IAAA,MAAMC,IAAAA,GAAO;QACXC,MAAAA,EAAQ,EAAA;QACRC,IAAAA,EAAM;AACR,KAAA;AAEA,IAAA,OAAOC,UAAUJ,MAAAA,EAAQC,IAAAA,CAAAA;AAC3B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sources":["../../../src/services/server/api.ts"],"sourcesContent":["import Router from '@koa/router';\nimport type { Core } from '@strapi/types';\n\nimport { createRouteManager } from './routing';\n\ninterface Options {\n prefix?: string;\n type?: string;\n}\n\nconst createAPI = (strapi: Core.Strapi, opts: Options = {}) => {\n const { prefix, type } = opts;\n\n const api = new Router({ prefix });\n\n const routeManager = createRouteManager(strapi, { type });\n\n return {\n listRoutes() {\n return [...api.stack];\n },\n\n use(fn: Router.Middleware) {\n api.use(fn);\n return this;\n },\n\n routes(routes: Core.Router | Core.Route[]) {\n routeManager.addRoutes(routes, api);\n return this;\n },\n\n mount(router: Router) {\n router.use(api.routes(), api.allowedMethods());\n return this;\n },\n };\n};\n\nexport { createAPI };\n"],"names":["createAPI","strapi","opts","prefix","type","api","Router","routeManager","createRouteManager","listRoutes","stack","use","fn","routes","addRoutes","mount","router","allowedMethods"],"mappings":";;;;;AAUA,MAAMA,
|
|
1
|
+
{"version":3,"file":"api.js","sources":["../../../src/services/server/api.ts"],"sourcesContent":["import Router from '@koa/router';\nimport type { Core } from '@strapi/types';\n\nimport { createRouteManager } from './routing';\n\ninterface Options {\n prefix?: string;\n type?: string;\n}\n\nconst createAPI = (strapi: Core.Strapi, opts: Options = {}) => {\n const { prefix, type } = opts;\n\n const api = new Router({ prefix });\n\n const routeManager = createRouteManager(strapi, { type });\n\n return {\n listRoutes() {\n return [...api.stack];\n },\n\n use(fn: Router.Middleware) {\n api.use(fn);\n return this;\n },\n\n routes(routes: Core.Router | Core.Route[]) {\n routeManager.addRoutes(routes, api);\n return this;\n },\n\n mount(router: Router) {\n router.use(api.routes(), api.allowedMethods());\n return this;\n },\n };\n};\n\nexport { createAPI };\n"],"names":["createAPI","strapi","opts","prefix","type","api","Router","routeManager","createRouteManager","listRoutes","stack","use","fn","routes","addRoutes","mount","router","allowedMethods"],"mappings":";;;;;AAUA,MAAMA,SAAAA,GAAY,CAACC,MAAAA,EAAqBC,IAAAA,GAAgB,EAAE,GAAA;AACxD,IAAA,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGF,IAAAA;IAEzB,MAAMG,GAAAA,GAAM,IAAIC,MAAAA,CAAO;AAAEH,QAAAA;AAAO,KAAA,CAAA;IAEhC,MAAMI,YAAAA,GAAeC,2BAAmBP,MAAAA,EAAQ;AAAEG,QAAAA;AAAK,KAAA,CAAA;IAEvD,OAAO;AACLK,QAAAA,UAAAA,CAAAA,GAAAA;YACE,OAAO;AAAIJ,gBAAAA,GAAAA,GAAAA,CAAIK;AAAM,aAAA;AACvB,QAAA,CAAA;AAEAC,QAAAA,GAAAA,CAAAA,CAAIC,EAAqB,EAAA;AACvBP,YAAAA,GAAAA,CAAIM,GAAG,CAACC,EAAAA,CAAAA;AACR,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEAC,QAAAA,MAAAA,CAAAA,CAAOA,MAAkC,EAAA;YACvCN,YAAAA,CAAaO,SAAS,CAACD,MAAAA,EAAQR,GAAAA,CAAAA;AAC/B,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEAU,QAAAA,KAAAA,CAAAA,CAAMC,MAAc,EAAA;AAClBA,YAAAA,MAAAA,CAAOL,GAAG,CAACN,GAAAA,CAAIQ,MAAM,EAAA,EAAIR,IAAIY,cAAc,EAAA,CAAA;AAC3C,YAAA,OAAO,IAAI;AACb,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","sources":["../../../src/services/server/api.ts"],"sourcesContent":["import Router from '@koa/router';\nimport type { Core } from '@strapi/types';\n\nimport { createRouteManager } from './routing';\n\ninterface Options {\n prefix?: string;\n type?: string;\n}\n\nconst createAPI = (strapi: Core.Strapi, opts: Options = {}) => {\n const { prefix, type } = opts;\n\n const api = new Router({ prefix });\n\n const routeManager = createRouteManager(strapi, { type });\n\n return {\n listRoutes() {\n return [...api.stack];\n },\n\n use(fn: Router.Middleware) {\n api.use(fn);\n return this;\n },\n\n routes(routes: Core.Router | Core.Route[]) {\n routeManager.addRoutes(routes, api);\n return this;\n },\n\n mount(router: Router) {\n router.use(api.routes(), api.allowedMethods());\n return this;\n },\n };\n};\n\nexport { createAPI };\n"],"names":["createAPI","strapi","opts","prefix","type","api","Router","routeManager","createRouteManager","listRoutes","stack","use","fn","routes","addRoutes","mount","router","allowedMethods"],"mappings":";;;AAUA,MAAMA,
|
|
1
|
+
{"version":3,"file":"api.mjs","sources":["../../../src/services/server/api.ts"],"sourcesContent":["import Router from '@koa/router';\nimport type { Core } from '@strapi/types';\n\nimport { createRouteManager } from './routing';\n\ninterface Options {\n prefix?: string;\n type?: string;\n}\n\nconst createAPI = (strapi: Core.Strapi, opts: Options = {}) => {\n const { prefix, type } = opts;\n\n const api = new Router({ prefix });\n\n const routeManager = createRouteManager(strapi, { type });\n\n return {\n listRoutes() {\n return [...api.stack];\n },\n\n use(fn: Router.Middleware) {\n api.use(fn);\n return this;\n },\n\n routes(routes: Core.Router | Core.Route[]) {\n routeManager.addRoutes(routes, api);\n return this;\n },\n\n mount(router: Router) {\n router.use(api.routes(), api.allowedMethods());\n return this;\n },\n };\n};\n\nexport { createAPI };\n"],"names":["createAPI","strapi","opts","prefix","type","api","Router","routeManager","createRouteManager","listRoutes","stack","use","fn","routes","addRoutes","mount","router","allowedMethods"],"mappings":";;;AAUA,MAAMA,SAAAA,GAAY,CAACC,MAAAA,EAAqBC,IAAAA,GAAgB,EAAE,GAAA;AACxD,IAAA,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGF,IAAAA;IAEzB,MAAMG,GAAAA,GAAM,IAAIC,MAAAA,CAAO;AAAEH,QAAAA;AAAO,KAAA,CAAA;IAEhC,MAAMI,YAAAA,GAAeC,mBAAmBP,MAAAA,EAAQ;AAAEG,QAAAA;AAAK,KAAA,CAAA;IAEvD,OAAO;AACLK,QAAAA,UAAAA,CAAAA,GAAAA;YACE,OAAO;AAAIJ,gBAAAA,GAAAA,GAAAA,CAAIK;AAAM,aAAA;AACvB,QAAA,CAAA;AAEAC,QAAAA,GAAAA,CAAAA,CAAIC,EAAqB,EAAA;AACvBP,YAAAA,GAAAA,CAAIM,GAAG,CAACC,EAAAA,CAAAA;AACR,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEAC,QAAAA,MAAAA,CAAAA,CAAOA,MAAkC,EAAA;YACvCN,YAAAA,CAAaO,SAAS,CAACD,MAAAA,EAAQR,GAAAA,CAAAA;AAC/B,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEAU,QAAAA,KAAAA,CAAAA,CAAMC,MAAc,EAAA;AAClBA,YAAAA,MAAAA,CAAOL,GAAG,CAACN,GAAAA,CAAIQ,MAAM,EAAA,EAAIR,IAAIY,cAAc,EAAA,CAAA;AAC3C,YAAA,OAAO,IAAI;AACb,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -108,9 +108,7 @@ const getAction = (route, strapi)=>{
|
|
|
108
108
|
const { controllerName, actionName } = extractHandlerParts(fp.trim(handler));
|
|
109
109
|
const controller = getController(controllerName, {
|
|
110
110
|
pluginName,
|
|
111
|
-
apiName,
|
|
112
|
-
type
|
|
113
|
-
}, strapi);
|
|
111
|
+
apiName}, strapi);
|
|
114
112
|
if (typeof controller[actionName] !== 'function') {
|
|
115
113
|
throw new Error(`Handler not found "${handler}"`);
|
|
116
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-endpoint.js","sources":["../../../src/services/server/compose-endpoint.ts"],"sourcesContent":["import { toLower, castArray, trim, prop, isNil } from 'lodash/fp';\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport Router from '@koa/router';\n\nimport compose from 'koa-compose';\nimport { resolveRouteMiddlewares } from './middleware';\nimport { createPolicicesMiddleware } from './policy';\n\nconst getMethod = (route: Core.Route) => {\n return trim(toLower(route.method)) as Lowercase<Core.Route['method']>;\n};\n\nconst getPath = (route: Core.Route) => trim(route.path);\n\nconst createRouteInfoMiddleware =\n (routeInfo: Core.Route): Core.MiddlewareHandler =>\n (ctx, next) => {\n const route = {\n ...routeInfo,\n config: routeInfo.config || {},\n };\n\n ctx.state.route = route;\n return next();\n };\n\nconst getAuthConfig = prop('config.auth');\n\nconst createAuthorizeMiddleware =\n (strapi: Core.Strapi): Core.MiddlewareHandler =>\n async (ctx, next) => {\n const { auth, route } = ctx.state;\n\n const authService = strapi.get('auth');\n\n try {\n await authService.verify(auth, getAuthConfig(route));\n\n return await next();\n } catch (error) {\n if (error instanceof errors.UnauthorizedError) {\n return ctx.unauthorized();\n }\n\n if (error instanceof errors.ForbiddenError) {\n // allow PolicyError as an exception to throw a publicly visible message in the API\n if (error instanceof errors.PolicyError) {\n throw error;\n }\n return ctx.forbidden();\n }\n\n throw error;\n }\n };\n\nconst createAuthenticateMiddleware =\n (strapi: Core.Strapi): Core.MiddlewareHandler =>\n async (ctx, next) => {\n return strapi.get('auth').authenticate(ctx, next);\n };\n\nconst returnBodyMiddleware: Core.MiddlewareHandler = async (ctx, next) => {\n const values = await next();\n\n if (isNil(ctx.body) && !isNil(values)) {\n ctx.body = values;\n }\n};\n\nexport default (strapi: Core.Strapi) => {\n const authenticate = createAuthenticateMiddleware(strapi);\n const authorize = createAuthorizeMiddleware(strapi);\n\n return (route: Core.Route, { router }: { router: Router }) => {\n try {\n const method = getMethod(route);\n const path = getPath(route);\n\n const middlewares = resolveRouteMiddlewares(route, strapi);\n\n const action = getAction(route, strapi);\n\n const routeHandler = compose([\n createRouteInfoMiddleware(route),\n authenticate,\n authorize,\n createPolicicesMiddleware(route, strapi),\n ...middlewares,\n returnBodyMiddleware,\n ...castArray(action),\n ]);\n\n router[method](path, routeHandler);\n } catch (error) {\n if (error instanceof Error) {\n error.message = `Error creating endpoint ${route.method} ${route.path}: ${error.message}`;\n }\n\n throw error;\n }\n };\n};\n\nconst getController = (\n name: string,\n { pluginName, apiName }: Core.RouteInfo,\n strapi: Core.Strapi\n) => {\n let ctrl: Core.Controller | undefined;\n\n if (pluginName) {\n if (pluginName === 'admin') {\n ctrl = strapi.controller(`admin::${name}`);\n } else {\n ctrl = strapi.plugin(pluginName).controller(name);\n }\n } else if (apiName) {\n ctrl = strapi.controller(`api::${apiName}.${name}`);\n }\n\n if (!ctrl) {\n return strapi.controller(name as UID.Controller);\n }\n\n return ctrl;\n};\n\nconst extractHandlerParts = (name: string) => {\n const controllerName = name.slice(0, name.lastIndexOf('.'));\n const actionName = name.slice(name.lastIndexOf('.') + 1);\n\n return { controllerName, actionName };\n};\n\nconst getAction = (route: Core.Route, strapi: Core.Strapi) => {\n const { handler, info } = route;\n const { pluginName, apiName, type } = info ?? {};\n\n if (Array.isArray(handler) || typeof handler === 'function') {\n return handler;\n }\n\n const { controllerName, actionName } = extractHandlerParts(trim(handler));\n\n const controller = getController(controllerName, { pluginName, apiName, type }, strapi);\n\n if (typeof controller[actionName] !== 'function') {\n throw new Error(`Handler not found \"${handler}\"`);\n }\n\n if (Symbol.for('__type__') in controller[actionName]) {\n (controller[actionName] as any)[Symbol.for('__type__')].push(type);\n } else {\n (controller[actionName] as any)[Symbol.for('__type__')] = [type];\n }\n\n return controller[actionName].bind(controller);\n};\n"],"names":["getMethod","route","trim","toLower","method","getPath","path","createRouteInfoMiddleware","routeInfo","ctx","next","config","state","getAuthConfig","prop","createAuthorizeMiddleware","strapi","auth","authService","get","verify","error","errors","UnauthorizedError","unauthorized","ForbiddenError","PolicyError","forbidden","createAuthenticateMiddleware","authenticate","returnBodyMiddleware","values","isNil","body","authorize","router","middlewares","resolveRouteMiddlewares","action","getAction","routeHandler","compose","createPolicicesMiddleware","castArray","Error","message","getController","name","pluginName","apiName","ctrl","controller","plugin","extractHandlerParts","controllerName","slice","lastIndexOf","actionName","handler","info","type","Array","isArray","Symbol","for","push","bind"],"mappings":";;;;;;;;AASA,MAAMA,YAAY,CAACC,KAAAA,GAAAA;IACjB,OAAOC,OAAAA,CAAKC,
|
|
1
|
+
{"version":3,"file":"compose-endpoint.js","sources":["../../../src/services/server/compose-endpoint.ts"],"sourcesContent":["import { toLower, castArray, trim, prop, isNil } from 'lodash/fp';\nimport type { Core, UID } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport Router from '@koa/router';\n\nimport compose from 'koa-compose';\nimport { resolveRouteMiddlewares } from './middleware';\nimport { createPolicicesMiddleware } from './policy';\n\nconst getMethod = (route: Core.Route) => {\n return trim(toLower(route.method)) as Lowercase<Core.Route['method']>;\n};\n\nconst getPath = (route: Core.Route) => trim(route.path);\n\nconst createRouteInfoMiddleware =\n (routeInfo: Core.Route): Core.MiddlewareHandler =>\n (ctx, next) => {\n const route = {\n ...routeInfo,\n config: routeInfo.config || {},\n };\n\n ctx.state.route = route;\n return next();\n };\n\nconst getAuthConfig = prop('config.auth');\n\nconst createAuthorizeMiddleware =\n (strapi: Core.Strapi): Core.MiddlewareHandler =>\n async (ctx, next) => {\n const { auth, route } = ctx.state;\n\n const authService = strapi.get('auth');\n\n try {\n await authService.verify(auth, getAuthConfig(route));\n\n return await next();\n } catch (error) {\n if (error instanceof errors.UnauthorizedError) {\n return ctx.unauthorized();\n }\n\n if (error instanceof errors.ForbiddenError) {\n // allow PolicyError as an exception to throw a publicly visible message in the API\n if (error instanceof errors.PolicyError) {\n throw error;\n }\n return ctx.forbidden();\n }\n\n throw error;\n }\n };\n\nconst createAuthenticateMiddleware =\n (strapi: Core.Strapi): Core.MiddlewareHandler =>\n async (ctx, next) => {\n return strapi.get('auth').authenticate(ctx, next);\n };\n\nconst returnBodyMiddleware: Core.MiddlewareHandler = async (ctx, next) => {\n const values = await next();\n\n if (isNil(ctx.body) && !isNil(values)) {\n ctx.body = values;\n }\n};\n\nexport default (strapi: Core.Strapi) => {\n const authenticate = createAuthenticateMiddleware(strapi);\n const authorize = createAuthorizeMiddleware(strapi);\n\n return (route: Core.Route, { router }: { router: Router }) => {\n try {\n const method = getMethod(route);\n const path = getPath(route);\n\n const middlewares = resolveRouteMiddlewares(route, strapi);\n\n const action = getAction(route, strapi);\n\n const routeHandler = compose([\n createRouteInfoMiddleware(route),\n authenticate,\n authorize,\n createPolicicesMiddleware(route, strapi),\n ...middlewares,\n returnBodyMiddleware,\n ...castArray(action),\n ]);\n\n router[method](path, routeHandler);\n } catch (error) {\n if (error instanceof Error) {\n error.message = `Error creating endpoint ${route.method} ${route.path}: ${error.message}`;\n }\n\n throw error;\n }\n };\n};\n\nconst getController = (\n name: string,\n { pluginName, apiName }: Core.RouteInfo,\n strapi: Core.Strapi\n) => {\n let ctrl: Core.Controller | undefined;\n\n if (pluginName) {\n if (pluginName === 'admin') {\n ctrl = strapi.controller(`admin::${name}`);\n } else {\n ctrl = strapi.plugin(pluginName).controller(name);\n }\n } else if (apiName) {\n ctrl = strapi.controller(`api::${apiName}.${name}`);\n }\n\n if (!ctrl) {\n return strapi.controller(name as UID.Controller);\n }\n\n return ctrl;\n};\n\nconst extractHandlerParts = (name: string) => {\n const controllerName = name.slice(0, name.lastIndexOf('.'));\n const actionName = name.slice(name.lastIndexOf('.') + 1);\n\n return { controllerName, actionName };\n};\n\nconst getAction = (route: Core.Route, strapi: Core.Strapi) => {\n const { handler, info } = route;\n const { pluginName, apiName, type } = info ?? {};\n\n if (Array.isArray(handler) || typeof handler === 'function') {\n return handler;\n }\n\n const { controllerName, actionName } = extractHandlerParts(trim(handler));\n\n const controller = getController(controllerName, { pluginName, apiName, type }, strapi);\n\n if (typeof controller[actionName] !== 'function') {\n throw new Error(`Handler not found \"${handler}\"`);\n }\n\n if (Symbol.for('__type__') in controller[actionName]) {\n (controller[actionName] as any)[Symbol.for('__type__')].push(type);\n } else {\n (controller[actionName] as any)[Symbol.for('__type__')] = [type];\n }\n\n return controller[actionName].bind(controller);\n};\n"],"names":["getMethod","route","trim","toLower","method","getPath","path","createRouteInfoMiddleware","routeInfo","ctx","next","config","state","getAuthConfig","prop","createAuthorizeMiddleware","strapi","auth","authService","get","verify","error","errors","UnauthorizedError","unauthorized","ForbiddenError","PolicyError","forbidden","createAuthenticateMiddleware","authenticate","returnBodyMiddleware","values","isNil","body","authorize","router","middlewares","resolveRouteMiddlewares","action","getAction","routeHandler","compose","createPolicicesMiddleware","castArray","Error","message","getController","name","pluginName","apiName","ctrl","controller","plugin","extractHandlerParts","controllerName","slice","lastIndexOf","actionName","handler","info","type","Array","isArray","Symbol","for","push","bind"],"mappings":";;;;;;;;AASA,MAAMA,YAAY,CAACC,KAAAA,GAAAA;IACjB,OAAOC,OAAAA,CAAKC,UAAAA,CAAQF,KAAAA,CAAMG,MAAM,CAAA,CAAA;AAClC,CAAA;AAEA,MAAMC,OAAAA,GAAU,CAACJ,KAAAA,GAAsBC,OAAAA,CAAKD,MAAMK,IAAI,CAAA;AAEtD,MAAMC,yBAAAA,GACJ,CAACC,SAAAA,GACD,CAACC,GAAAA,EAAKC,IAAAA,GAAAA;AACJ,QAAA,MAAMT,KAAAA,GAAQ;AACZ,YAAA,GAAGO,SAAS;YACZG,MAAAA,EAAQH,SAAAA,CAAUG,MAAM,IAAI;AAC9B,SAAA;QAEAF,GAAAA,CAAIG,KAAK,CAACX,KAAK,GAAGA,KAAAA;QAClB,OAAOS,IAAAA,EAAAA;AACT,IAAA,CAAA;AAEF,MAAMG,gBAAgBC,OAAAA,CAAK,aAAA,CAAA;AAE3B,MAAMC,yBAAAA,GACJ,CAACC,MAAAA,GACD,OAAOP,GAAAA,EAAKC,IAAAA,GAAAA;AACV,QAAA,MAAM,EAAEO,IAAI,EAAEhB,KAAK,EAAE,GAAGQ,IAAIG,KAAK;QAEjC,MAAMM,WAAAA,GAAcF,MAAAA,CAAOG,GAAG,CAAC,MAAA,CAAA;QAE/B,IAAI;AACF,YAAA,MAAMD,WAAAA,CAAYE,MAAM,CAACH,IAAAA,EAAMJ,aAAAA,CAAcZ,KAAAA,CAAAA,CAAAA;AAE7C,YAAA,OAAO,MAAMS,IAAAA,EAAAA;AACf,QAAA,CAAA,CAAE,OAAOW,KAAAA,EAAO;YACd,IAAIA,KAAAA,YAAiBC,kBAAAA,CAAOC,iBAAiB,EAAE;AAC7C,gBAAA,OAAOd,IAAIe,YAAY,EAAA;AACzB,YAAA;YAEA,IAAIH,KAAAA,YAAiBC,kBAAAA,CAAOG,cAAc,EAAE;;gBAE1C,IAAIJ,KAAAA,YAAiBC,kBAAAA,CAAOI,WAAW,EAAE;oBACvC,MAAML,KAAAA;AACR,gBAAA;AACA,gBAAA,OAAOZ,IAAIkB,SAAS,EAAA;AACtB,YAAA;YAEA,MAAMN,KAAAA;AACR,QAAA;AACF,IAAA,CAAA;AAEF,MAAMO,4BAAAA,GACJ,CAACZ,MAAAA,GACD,OAAOP,GAAAA,EAAKC,IAAAA,GAAAA;AACV,QAAA,OAAOM,OAAOG,GAAG,CAAC,MAAA,CAAA,CAAQU,YAAY,CAACpB,GAAAA,EAAKC,IAAAA,CAAAA;AAC9C,IAAA,CAAA;AAEF,MAAMoB,oBAAAA,GAA+C,OAAOrB,GAAAA,EAAKC,IAAAA,GAAAA;AAC/D,IAAA,MAAMqB,SAAS,MAAMrB,IAAAA,EAAAA;AAErB,IAAA,IAAIsB,SAAMvB,GAAAA,CAAIwB,IAAI,CAAA,IAAK,CAACD,SAAMD,MAAAA,CAAAA,EAAS;AACrCtB,QAAAA,GAAAA,CAAIwB,IAAI,GAAGF,MAAAA;AACb,IAAA;AACF,CAAA;AAEA,6BAAe,CAAA,CAACf,MAAAA,GAAAA;AACd,IAAA,MAAMa,eAAeD,4BAAAA,CAA6BZ,MAAAA,CAAAA;AAClD,IAAA,MAAMkB,YAAYnB,yBAAAA,CAA0BC,MAAAA,CAAAA;AAE5C,IAAA,OAAO,CAACf,KAAAA,EAAmB,EAAEkC,MAAM,EAAsB,GAAA;QACvD,IAAI;AACF,YAAA,MAAM/B,SAASJ,SAAAA,CAAUC,KAAAA,CAAAA;AACzB,YAAA,MAAMK,OAAOD,OAAAA,CAAQJ,KAAAA,CAAAA;YAErB,MAAMmC,WAAAA,GAAcC,mCAAwBpC,KAAAA,EAAOe,MAAAA,CAAAA;YAEnD,MAAMsB,MAAAA,GAASC,UAAUtC,KAAAA,EAAOe,MAAAA,CAAAA;AAEhC,YAAA,MAAMwB,eAAeC,OAAAA,CAAQ;gBAC3BlC,yBAAAA,CAA0BN,KAAAA,CAAAA;AAC1B4B,gBAAAA,YAAAA;AACAK,gBAAAA,SAAAA;AACAQ,gBAAAA,gCAAAA,CAA0BzC,KAAAA,EAAOe,MAAAA,CAAAA;AAC9BoB,gBAAAA,GAAAA,WAAAA;AACHN,gBAAAA,oBAAAA;mBACGa,YAAAA,CAAUL,MAAAA;AACd,aAAA,CAAA;YAEDH,MAAM,CAAC/B,MAAAA,CAAO,CAACE,IAAAA,EAAMkC,YAAAA,CAAAA;AACvB,QAAA,CAAA,CAAE,OAAOnB,KAAAA,EAAO;AACd,YAAA,IAAIA,iBAAiBuB,KAAAA,EAAO;AAC1BvB,gBAAAA,KAAAA,CAAMwB,OAAO,GAAG,CAAC,wBAAwB,EAAE5C,MAAMG,MAAM,CAAC,CAAC,EAAEH,MAAMK,IAAI,CAAC,EAAE,EAAEe,KAAAA,CAAMwB,OAAO,CAAA,CAAE;AAC3F,YAAA;YAEA,MAAMxB,KAAAA;AACR,QAAA;AACF,IAAA,CAAA;AACF,CAAA;AAEA,MAAMyB,aAAAA,GAAgB,CACpBC,IAAAA,EACA,EAAEC,UAAU,EAAEC,OAAO,EAAkB,EACvCjC,MAAAA,GAAAA;IAEA,IAAIkC,IAAAA;AAEJ,IAAA,IAAIF,UAAAA,EAAY;AACd,QAAA,IAAIA,eAAe,OAAA,EAAS;AAC1BE,YAAAA,IAAAA,GAAOlC,OAAOmC,UAAU,CAAC,CAAC,OAAO,EAAEJ,IAAAA,CAAAA,CAAM,CAAA;QAC3C,CAAA,MAAO;AACLG,YAAAA,IAAAA,GAAOlC,MAAAA,CAAOoC,MAAM,CAACJ,UAAAA,CAAAA,CAAYG,UAAU,CAACJ,IAAAA,CAAAA;AAC9C,QAAA;AACF,IAAA,CAAA,MAAO,IAAIE,OAAAA,EAAS;QAClBC,IAAAA,GAAOlC,MAAAA,CAAOmC,UAAU,CAAC,CAAC,KAAK,EAAEF,OAAAA,CAAQ,CAAC,EAAEF,IAAAA,CAAAA,CAAM,CAAA;AACpD,IAAA;AAEA,IAAA,IAAI,CAACG,IAAAA,EAAM;QACT,OAAOlC,MAAAA,CAAOmC,UAAU,CAACJ,IAAAA,CAAAA;AAC3B,IAAA;IAEA,OAAOG,IAAAA;AACT,CAAA;AAEA,MAAMG,sBAAsB,CAACN,IAAAA,GAAAA;AAC3B,IAAA,MAAMO,iBAAiBP,IAAAA,CAAKQ,KAAK,CAAC,CAAA,EAAGR,IAAAA,CAAKS,WAAW,CAAC,GAAA,CAAA,CAAA;AACtD,IAAA,MAAMC,aAAaV,IAAAA,CAAKQ,KAAK,CAACR,IAAAA,CAAKS,WAAW,CAAC,GAAA,CAAA,GAAO,CAAA,CAAA;IAEtD,OAAO;AAAEF,QAAAA,cAAAA;AAAgBG,QAAAA;AAAW,KAAA;AACtC,CAAA;AAEA,MAAMlB,SAAAA,GAAY,CAACtC,KAAAA,EAAmBe,MAAAA,GAAAA;AACpC,IAAA,MAAM,EAAE0C,OAAO,EAAEC,IAAI,EAAE,GAAG1D,KAAAA;IAC1B,MAAM,EAAE+C,UAAU,EAAEC,OAAO,EAAEW,IAAI,EAAE,GAAGD,IAAAA,IAAQ,EAAC;AAE/C,IAAA,IAAIE,MAAMC,OAAO,CAACJ,OAAAA,CAAAA,IAAY,OAAOA,YAAY,UAAA,EAAY;QAC3D,OAAOA,OAAAA;AACT,IAAA;AAEA,IAAA,MAAM,EAAEJ,cAAc,EAAEG,UAAU,EAAE,GAAGJ,oBAAoBnD,OAAAA,CAAKwD,OAAAA,CAAAA,CAAAA;IAEhE,MAAMP,UAAAA,GAAaL,cAAcQ,cAAAA,EAAgB;AAAEN,QAAAA,UAAAA;AAAYC,QAAAA,OAAc,CAAA,EAAGjC,MAAAA,CAAAA;AAEhF,IAAA,IAAI,OAAOmC,UAAU,CAACM,UAAAA,CAAW,KAAK,UAAA,EAAY;AAChD,QAAA,MAAM,IAAIb,KAAAA,CAAM,CAAC,mBAAmB,EAAEc,OAAAA,CAAQ,CAAC,CAAC,CAAA;AAClD,IAAA;AAEA,IAAA,IAAIK,OAAOC,GAAG,CAAC,eAAeb,UAAU,CAACM,WAAW,EAAE;QACnDN,UAAU,CAACM,UAAAA,CAAmB,CAACM,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAY,CAACC,IAAI,CAACL,IAAAA,CAAAA;IAC/D,CAAA,MAAO;QACJT,UAAU,CAACM,WAAW,CAASM,OAAOC,GAAG,CAAC,YAAY,GAAG;AAACJ,YAAAA;AAAK,SAAA;AAClE,IAAA;AAEA,IAAA,OAAOT,UAAU,CAACM,UAAAA,CAAW,CAACS,IAAI,CAACf,UAAAA,CAAAA;AACrC,CAAA;;;;"}
|
|
@@ -106,9 +106,7 @@ const getAction = (route, strapi)=>{
|
|
|
106
106
|
const { controllerName, actionName } = extractHandlerParts(trim(handler));
|
|
107
107
|
const controller = getController(controllerName, {
|
|
108
108
|
pluginName,
|
|
109
|
-
apiName,
|
|
110
|
-
type
|
|
111
|
-
}, strapi);
|
|
109
|
+
apiName}, strapi);
|
|
112
110
|
if (typeof controller[actionName] !== 'function') {
|
|
113
111
|
throw new Error(`Handler not found "${handler}"`);
|
|
114
112
|
}
|