@strapi/core 5.0.0-alpha.5 → 5.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Strapi.d.ts +33 -33
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +5 -1
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +5 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/container.d.ts +2 -2
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/container.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts +3 -3
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.d.ts +3 -3
- package/dist/core-api/controller/index.d.ts.map +1 -1
- package/dist/core-api/controller/index.js +5 -5
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +6 -6
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.d.ts +3 -3
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.d.ts +2 -2
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/controller/transform.js +2 -5
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +2 -5
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/service/collection-type.d.ts +10 -10
- package/dist/core-api/service/collection-type.d.ts.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/index.d.ts +3 -3
- package/dist/core-api/service/index.d.ts.map +1 -1
- package/dist/core-api/service/index.js.map +1 -1
- package/dist/core-api/service/index.mjs.map +1 -1
- package/dist/core-api/service/single-type.d.ts +4 -4
- package/dist/core-api/service/single-type.d.ts.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.d.ts +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/module/index.d.ts +24 -23
- package/dist/domain/module/index.d.ts.map +1 -1
- package/dist/domain/module/index.js +2 -1
- package/dist/domain/module/index.js.map +1 -1
- package/dist/domain/module/index.mjs +3 -2
- package/dist/domain/module/index.mjs.map +1 -1
- package/dist/ee/index.d.ts +2 -2
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.d.ts +2 -2
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.d.ts +10 -10
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +6 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +6 -2
- package/dist/factories.mjs.map +1 -1
- package/dist/loaders/admin.d.ts +2 -2
- package/dist/loaders/admin.d.ts.map +1 -1
- package/dist/loaders/admin.js.map +1 -1
- package/dist/loaders/admin.mjs.map +1 -1
- package/dist/loaders/apis.d.ts +2 -2
- package/dist/loaders/apis.d.ts.map +1 -1
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/components.d.ts +2 -2
- package/dist/loaders/components.d.ts.map +1 -1
- package/dist/loaders/components.js.map +1 -1
- package/dist/loaders/components.mjs.map +1 -1
- package/dist/loaders/index.d.ts +2 -2
- package/dist/loaders/index.d.ts.map +1 -1
- package/dist/loaders/index.js.map +1 -1
- package/dist/loaders/index.mjs.map +1 -1
- package/dist/loaders/middlewares.d.ts +2 -2
- package/dist/loaders/middlewares.d.ts.map +1 -1
- package/dist/loaders/middlewares.js.map +1 -1
- package/dist/loaders/middlewares.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts +2 -2
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/index.d.ts +2 -2
- package/dist/loaders/plugins/index.d.ts.map +1 -1
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/loaders/policies.d.ts +2 -2
- package/dist/loaders/policies.d.ts.map +1 -1
- package/dist/loaders/policies.js.map +1 -1
- package/dist/loaders/policies.mjs.map +1 -1
- package/dist/loaders/sanitizers.d.ts +2 -2
- package/dist/loaders/sanitizers.d.ts.map +1 -1
- package/dist/loaders/sanitizers.js.map +1 -1
- package/dist/loaders/sanitizers.mjs.map +1 -1
- package/dist/loaders/src-index.d.ts +2 -2
- package/dist/loaders/src-index.d.ts.map +1 -1
- package/dist/loaders/src-index.js.map +1 -1
- package/dist/loaders/src-index.mjs.map +1 -1
- package/dist/loaders/validators.d.ts +2 -2
- package/dist/loaders/validators.d.ts.map +1 -1
- package/dist/loaders/validators.js.map +1 -1
- package/dist/loaders/validators.mjs.map +1 -1
- package/dist/middlewares/body.d.ts +2 -2
- package/dist/middlewares/body.d.ts.map +1 -1
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/compression.d.ts +2 -2
- package/dist/middlewares/compression.d.ts.map +1 -1
- package/dist/middlewares/compression.js.map +1 -1
- package/dist/middlewares/compression.mjs.map +1 -1
- package/dist/middlewares/cors.d.ts +2 -2
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/middlewares/errors.d.ts +2 -2
- package/dist/middlewares/errors.d.ts.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.d.ts +2 -2
- package/dist/middlewares/favicon.d.ts.map +1 -1
- package/dist/middlewares/favicon.js.map +1 -1
- package/dist/middlewares/favicon.mjs.map +1 -1
- package/dist/middlewares/index.d.ts +2 -2
- package/dist/middlewares/index.d.ts.map +1 -1
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/middlewares/ip.d.ts +2 -2
- package/dist/middlewares/ip.d.ts.map +1 -1
- package/dist/middlewares/ip.js.map +1 -1
- package/dist/middlewares/ip.mjs.map +1 -1
- package/dist/middlewares/logger.d.ts +2 -2
- package/dist/middlewares/logger.d.ts.map +1 -1
- package/dist/middlewares/logger.js.map +1 -1
- package/dist/middlewares/logger.mjs.map +1 -1
- package/dist/middlewares/powered-by.d.ts +2 -2
- package/dist/middlewares/powered-by.d.ts.map +1 -1
- package/dist/middlewares/powered-by.js.map +1 -1
- package/dist/middlewares/powered-by.mjs.map +1 -1
- package/dist/middlewares/public.d.ts +2 -2
- package/dist/middlewares/public.d.ts.map +1 -1
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/public.mjs.map +1 -1
- package/dist/middlewares/query.d.ts +2 -2
- package/dist/middlewares/query.d.ts.map +1 -1
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/query.mjs.map +1 -1
- package/dist/middlewares/response-time.d.ts +2 -2
- package/dist/middlewares/response-time.d.ts.map +1 -1
- package/dist/middlewares/response-time.js.map +1 -1
- package/dist/middlewares/response-time.mjs.map +1 -1
- package/dist/middlewares/responses.d.ts +3 -3
- package/dist/middlewares/responses.d.ts.map +1 -1
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.d.ts +2 -2
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.d.ts +2 -2
- package/dist/middlewares/session.d.ts.map +1 -1
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/registries/apis.d.ts +2 -2
- package/dist/registries/apis.d.ts.map +1 -1
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/apis.mjs.map +1 -1
- package/dist/registries/components.d.ts +6 -6
- package/dist/registries/components.d.ts.map +1 -1
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/components.mjs.map +1 -1
- package/dist/registries/config.d.ts +2 -2
- package/dist/registries/config.d.ts.map +1 -1
- package/dist/registries/config.js +15 -3
- package/dist/registries/config.js.map +1 -1
- package/dist/registries/config.mjs +16 -4
- package/dist/registries/config.mjs.map +1 -1
- package/dist/registries/content-types.d.ts +5 -5
- package/dist/registries/content-types.d.ts.map +1 -1
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/registries/controllers.d.ts +10 -10
- package/dist/registries/controllers.d.ts.map +1 -1
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/controllers.mjs.map +1 -1
- package/dist/registries/custom-fields.d.ts +3 -3
- package/dist/registries/custom-fields.d.ts.map +1 -1
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/custom-fields.mjs.map +1 -1
- package/dist/registries/middlewares.d.ts +6 -6
- package/dist/registries/middlewares.d.ts.map +1 -1
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/middlewares.mjs.map +1 -1
- package/dist/registries/modules.d.ts +2 -2
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/modules.mjs.map +1 -1
- package/dist/registries/plugins.d.ts +5 -5
- package/dist/registries/plugins.d.ts.map +1 -1
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/plugins.mjs.map +1 -1
- package/dist/registries/policies.d.ts +23 -11
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/policies.js +64 -18
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +65 -19
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/registries/services.d.ts +8 -8
- package/dist/registries/services.d.ts.map +1 -1
- package/dist/registries/services.js.map +1 -1
- package/dist/registries/services.mjs.map +1 -1
- package/dist/services/auth/index.d.ts +4 -4
- package/dist/services/auth/index.d.ts.map +1 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/content-api/index.d.ts +21 -3
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +27 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +27 -1
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/index.d.ts +3 -3
- package/dist/services/content-api/permissions/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/index.mjs.map +1 -1
- package/dist/services/cron.d.ts +2 -2
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/custom-fields.d.ts +2 -2
- package/dist/services/custom-fields.d.ts.map +1 -1
- package/dist/services/custom-fields.js.map +1 -1
- package/dist/services/custom-fields.mjs.map +1 -1
- package/dist/services/document-service/common.d.ts +2 -2
- package/dist/services/document-service/common.d.ts.map +1 -1
- package/dist/services/document-service/common.js.map +1 -1
- package/dist/services/document-service/common.mjs.map +1 -1
- package/dist/services/document-service/document-engine.d.ts +2 -0
- package/dist/services/document-service/document-engine.d.ts.map +1 -0
- package/dist/services/document-service/draft-and-publish.d.ts +7 -7
- package/dist/services/document-service/draft-and-publish.d.ts.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/index.d.ts +2 -2
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/index.js.map +1 -1
- package/dist/services/document-service/index.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +5 -5
- package/dist/services/document-service/internationalization.d.ts.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/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +5 -3
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +6 -4
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/fields.d.ts +2 -2
- package/dist/services/document-service/transform/fields.d.ts.map +1 -1
- package/dist/services/document-service/transform/fields.js.map +1 -1
- package/dist/services/document-service/transform/fields.mjs.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts +3 -3
- package/dist/services/document-service/transform/id-map.d.ts.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.d.ts +2 -2
- package/dist/services/document-service/transform/id-transform.d.ts.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.d.ts +2 -2
- package/dist/services/document-service/transform/populate.d.ts.map +1 -1
- package/dist/services/document-service/transform/populate.js +1 -1
- package/dist/services/document-service/transform/populate.js.map +1 -1
- package/dist/services/document-service/transform/populate.mjs +1 -1
- package/dist/services/document-service/transform/populate.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +2 -2
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +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 +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.d.ts +2 -2
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +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/output-ids.d.ts +2 -0
- package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/utils/dp.d.ts +3 -3
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.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.d.ts +4 -4
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.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/types.d.ts +3 -3
- package/dist/services/document-service/transform/types.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts +2 -2
- package/dist/services/document-service/utils/populate.d.ts.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/entity-service/attributes/index.d.ts +4 -4
- package/dist/services/entity-service/attributes/index.d.ts.map +1 -1
- package/dist/services/entity-service/attributes/index.js.map +1 -1
- package/dist/services/entity-service/attributes/index.mjs.map +1 -1
- package/dist/services/entity-service/attributes/transforms.d.ts +3 -3
- package/dist/services/entity-service/attributes/transforms.d.ts.map +1 -1
- package/dist/services/entity-service/attributes/transforms.js.map +1 -1
- package/dist/services/entity-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/entity-service/components.d.ts +87 -12
- package/dist/services/entity-service/components.d.ts.map +1 -1
- package/dist/services/entity-service/components.js.map +1 -1
- package/dist/services/entity-service/components.mjs.map +1 -1
- package/dist/services/entity-service/index.d.ts +4 -4
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-service/index.js +14 -15
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +15 -16
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/entity-service/params.d.ts +5 -5
- package/dist/services/entity-service/params.d.ts.map +1 -1
- package/dist/services/entity-service/params.js.map +1 -1
- package/dist/services/entity-service/params.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts +2 -2
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +7 -2
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +7 -2
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts +18 -18
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +6 -1
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +6 -1
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/features.d.ts +3 -3
- package/dist/services/features.d.ts.map +1 -1
- package/dist/services/features.js.map +1 -1
- package/dist/services/features.mjs.map +1 -1
- package/dist/services/fs.d.ts +2 -2
- package/dist/services/fs.d.ts.map +1 -1
- package/dist/services/fs.js.map +1 -1
- package/dist/services/fs.mjs.map +1 -1
- package/dist/services/metrics/admin-user-hash.d.ts +2 -2
- package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.js.map +1 -1
- package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
- package/dist/services/metrics/index.d.ts +2 -2
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/middleware.d.ts +2 -2
- package/dist/services/metrics/middleware.d.ts.map +1 -1
- package/dist/services/metrics/middleware.js.map +1 -1
- package/dist/services/metrics/middleware.mjs.map +1 -1
- package/dist/services/metrics/sender.d.ts +3 -3
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/query-params.d.ts +7 -0
- package/dist/services/query-params.d.ts.map +1 -0
- package/dist/services/query-params.js +12 -0
- package/dist/services/query-params.js.map +1 -0
- package/dist/services/query-params.mjs +13 -0
- package/dist/services/query-params.mjs.map +1 -0
- package/dist/services/server/admin-api.d.ts +3 -3
- package/dist/services/server/admin-api.d.ts.map +1 -1
- package/dist/services/server/admin-api.js.map +1 -1
- package/dist/services/server/admin-api.mjs.map +1 -1
- package/dist/services/server/api.d.ts +3 -3
- package/dist/services/server/api.d.ts.map +1 -1
- package/dist/services/server/api.js.map +1 -1
- package/dist/services/server/api.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.d.ts +2 -2
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.js +1 -2
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +2 -3
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/content-api.d.ts +3 -3
- package/dist/services/server/content-api.d.ts.map +1 -1
- package/dist/services/server/content-api.js.map +1 -1
- package/dist/services/server/content-api.mjs.map +1 -1
- package/dist/services/server/http-server.d.ts +2 -2
- package/dist/services/server/http-server.d.ts.map +1 -1
- package/dist/services/server/http-server.js.map +1 -1
- package/dist/services/server/http-server.mjs.map +1 -1
- package/dist/services/server/index.d.ts +2 -2
- package/dist/services/server/index.d.ts.map +1 -1
- package/dist/services/server/index.js +1 -2
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/index.mjs +1 -2
- package/dist/services/server/index.mjs.map +1 -1
- package/dist/services/server/middleware.d.ts +4 -4
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/middleware.mjs.map +1 -1
- package/dist/services/server/policy.d.ts +3 -3
- package/dist/services/server/policy.d.ts.map +1 -1
- package/dist/services/server/policy.js +4 -4
- package/dist/services/server/policy.js.map +1 -1
- package/dist/services/server/policy.mjs +4 -4
- package/dist/services/server/policy.mjs.map +1 -1
- package/dist/services/server/register-middlewares.d.ts +2 -2
- package/dist/services/server/register-middlewares.d.ts.map +1 -1
- package/dist/services/server/register-middlewares.js.map +1 -1
- package/dist/services/server/register-middlewares.mjs.map +1 -1
- package/dist/services/server/register-routes.d.ts +2 -2
- package/dist/services/server/register-routes.d.ts.map +1 -1
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/register-routes.mjs.map +1 -1
- package/dist/services/server/routing.d.ts +4 -4
- package/dist/services/server/routing.d.ts.map +1 -1
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
- package/dist/services/utils/dynamic-zones.js +2 -1
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs +2 -1
- package/dist/services/utils/dynamic-zones.mjs.map +1 -1
- package/dist/services/webhook-runner.js.map +1 -1
- package/dist/services/webhook-runner.mjs.map +1 -1
- package/dist/utils/convert-custom-field-type.d.ts +2 -2
- package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
- package/dist/utils/convert-custom-field-type.js.map +1 -1
- package/dist/utils/convert-custom-field-type.mjs.map +1 -1
- package/dist/utils/fetch.d.ts +3 -3
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/get-dirs.d.ts +3 -3
- package/dist/utils/get-dirs.d.ts.map +1 -1
- package/dist/utils/get-dirs.js.map +1 -1
- package/dist/utils/get-dirs.mjs.map +1 -1
- package/dist/utils/is-initialized.d.ts +2 -2
- package/dist/utils/is-initialized.d.ts.map +1 -1
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/open-browser.d.ts +2 -2
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/open-browser.mjs.map +1 -1
- package/dist/utils/signals.d.ts +2 -2
- package/dist/utils/signals.d.ts.map +1 -1
- package/dist/utils/signals.js.map +1 -1
- package/dist/utils/signals.mjs.map +1 -1
- package/dist/utils/startup-logger.d.ts +2 -2
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +34 -84
- package/dist/utils/transform-content-types-to-models.d.ts.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.d.ts +2 -2
- package/dist/utils/update-notifier/index.d.ts.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 +14 -14
package/dist/Strapi.d.ts
CHANGED
@@ -1,59 +1,59 @@
|
|
1
1
|
import { Logger } from '@strapi/logger';
|
2
2
|
import { Database } from '@strapi/database';
|
3
|
-
import type {
|
3
|
+
import type { Core, Modules, UID, Schema } from '@strapi/types';
|
4
4
|
import * as factories from './factories';
|
5
5
|
import compile from './compile';
|
6
6
|
import { Container } from './container';
|
7
7
|
import { WebhookRunner } from './services/webhook-runner';
|
8
8
|
import { FeaturesService } from './services/features';
|
9
9
|
export type LoadedStrapi = Required<Strapi>;
|
10
|
-
declare class Strapi extends Container implements
|
11
|
-
server: Server;
|
10
|
+
declare class Strapi extends Container implements Core.Strapi {
|
11
|
+
server: Modules.Server.Server;
|
12
12
|
log: Logger;
|
13
|
-
fs: StrapiFS;
|
14
|
-
eventHub: EventHub;
|
15
|
-
startupLogger: StartupLogger;
|
16
|
-
cron: CronService;
|
13
|
+
fs: Core.StrapiFS;
|
14
|
+
eventHub: Modules.EventHub.EventHub;
|
15
|
+
startupLogger: Core.StartupLogger;
|
16
|
+
cron: Modules.Cron.CronService;
|
17
17
|
webhookRunner?: WebhookRunner;
|
18
|
-
webhookStore?: WebhookStore;
|
19
|
-
store?: CoreStore;
|
20
|
-
entityValidator?: EntityValidator;
|
18
|
+
webhookStore?: Modules.WebhookStore.WebhookStore;
|
19
|
+
store?: Modules.CoreStore.CoreStore;
|
20
|
+
entityValidator?: Modules.EntityValidator.EntityValidator;
|
21
21
|
/**
|
22
22
|
* @deprecated `strapi.entityService` will be removed in the next major version
|
23
23
|
*/
|
24
|
-
entityService?: EntityService.EntityService;
|
25
|
-
documents?: Documents.Service;
|
26
|
-
telemetry: TelemetryService;
|
27
|
-
requestContext: RequestContext;
|
28
|
-
customFields: CustomFields.CustomFields;
|
29
|
-
fetch: Fetch;
|
30
|
-
dirs: StrapiDirectories;
|
31
|
-
admin?:
|
24
|
+
entityService?: Modules.EntityService.EntityService;
|
25
|
+
documents?: Modules.Documents.Service;
|
26
|
+
telemetry: Modules.Metrics.TelemetryService;
|
27
|
+
requestContext: Modules.RequestContext.RequestContext;
|
28
|
+
customFields: Modules.CustomFields.CustomFields;
|
29
|
+
fetch: Modules.Fetch.Fetch;
|
30
|
+
dirs: Core.StrapiDirectories;
|
31
|
+
admin?: Core.Module;
|
32
32
|
isLoaded: boolean;
|
33
33
|
db: Database;
|
34
34
|
app: any;
|
35
35
|
EE?: boolean;
|
36
|
-
reload: Reloader;
|
36
|
+
reload: Core.Reloader;
|
37
37
|
features: FeaturesService;
|
38
|
-
ee:
|
38
|
+
ee: Core.Strapi['ee'];
|
39
39
|
constructor(opts?: StrapiOptions);
|
40
40
|
get config(): any;
|
41
41
|
get services(): any;
|
42
|
-
service(uid:
|
42
|
+
service(uid: UID.Service): any;
|
43
43
|
get controllers(): any;
|
44
|
-
controller(uid:
|
45
|
-
get contentTypes():
|
46
|
-
contentType(name:
|
47
|
-
get components():
|
44
|
+
controller(uid: UID.Controller): any;
|
45
|
+
get contentTypes(): Schema.ContentTypes;
|
46
|
+
contentType(name: UID.ContentType): any;
|
47
|
+
get components(): Schema.Components;
|
48
48
|
get policies(): any;
|
49
49
|
policy(name: string): any;
|
50
50
|
get middlewares(): any;
|
51
51
|
middleware(name: string): any;
|
52
|
-
get plugins(): Record<string,
|
53
|
-
plugin(name: string):
|
52
|
+
get plugins(): Record<string, Core.Plugin>;
|
53
|
+
plugin(name: string): Core.Plugin;
|
54
54
|
get hooks(): any;
|
55
55
|
hook(name: string): any;
|
56
|
-
get api(): Record<string,
|
56
|
+
get api(): Record<string, Core.Module>;
|
57
57
|
get auth(): any;
|
58
58
|
get contentAPI(): any;
|
59
59
|
get sanitizers(): any;
|
@@ -74,15 +74,15 @@ declare class Strapi extends Container implements StrapiI {
|
|
74
74
|
registerInternalHooks(): void;
|
75
75
|
register(): Promise<this>;
|
76
76
|
bootstrap(): Promise<this>;
|
77
|
-
load(): Promise<this & Required<
|
77
|
+
load(): Promise<this & Required<Core.Strapi>>;
|
78
78
|
startWebhooks(): Promise<void>;
|
79
79
|
runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy'): Promise<void>;
|
80
|
-
getModel(uid:
|
81
|
-
getModel(uid:
|
80
|
+
getModel(uid: UID.ContentType): Schema.ContentType;
|
81
|
+
getModel(uid: UID.Component): Schema.Component;
|
82
82
|
/**
|
83
83
|
* @deprecated Use `strapi.db.query` instead
|
84
84
|
*/
|
85
|
-
query(uid:
|
85
|
+
query(uid: UID.Schema): import("@strapi/database/dist/entity-manager").Repository;
|
86
86
|
}
|
87
87
|
interface StrapiOptions {
|
88
88
|
appDir?: string;
|
@@ -91,7 +91,7 @@ interface StrapiOptions {
|
|
91
91
|
serveAdminPanel?: boolean;
|
92
92
|
}
|
93
93
|
interface Init {
|
94
|
-
(options?: StrapiOptions):
|
94
|
+
(options?: StrapiOptions): Core.Strapi;
|
95
95
|
factories: typeof factories;
|
96
96
|
compile: typeof compile;
|
97
97
|
}
|
package/dist/Strapi.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"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"}
|
package/dist/Strapi.js
CHANGED
@@ -43,6 +43,7 @@ const webhookRunner = require("./services/webhook-runner.js");
|
|
43
43
|
const webhookStore = require("./services/webhook-store.js");
|
44
44
|
const coreStore = require("./services/core-store.js");
|
45
45
|
const index$9 = require("./services/entity-service/index.js");
|
46
|
+
const queryParams = require("./services/query-params.js");
|
46
47
|
const cron = require("./services/cron.js");
|
47
48
|
const index$8 = require("./services/entity-validator/index.js");
|
48
49
|
const index$4 = require("./services/metrics/index.js");
|
@@ -130,7 +131,7 @@ class Strapi extends container.Container {
|
|
130
131
|
signals.destroyOnSignal(this);
|
131
132
|
const rootDirs = resolveWorkingDirectories(opts);
|
132
133
|
const appConfig = index(rootDirs, opts);
|
133
|
-
this.add("config", config(appConfig, this)).add("content-types", contentTypes()).add("components", components()).add("services", services(this)).add("policies", policies()).add("middlewares", middlewares()).add("hooks", hooks()).add("controllers", controllers(this)).add("modules", modules(this)).add("plugins", plugins(this)).add("custom-fields", customFields(this)).add("apis", apis(this)).add("sanitizers", sanitizers()).add("validators", validators()).add("content-api", index$1(this)).add("auth", index$2()).add("models", models.registry());
|
134
|
+
this.add("config", config(appConfig, this)).add("content-types", contentTypes()).add("components", components()).add("services", services(this)).add("policies", policies()).add("middlewares", middlewares()).add("hooks", hooks()).add("controllers", controllers(this)).add("modules", modules(this)).add("plugins", plugins(this)).add("custom-fields", customFields(this)).add("apis", apis(this)).add("sanitizers", sanitizers()).add("validators", validators()).add("query-params", queryParams(this)).add("content-api", index$1(this)).add("auth", index$2()).add("models", models.registry());
|
134
135
|
this.dirs = getDirs.getDirs(rootDirs, { strapi: this });
|
135
136
|
this.isLoaded = false;
|
136
137
|
this.reload = reloader(this);
|
@@ -252,6 +253,7 @@ class Strapi extends container.Container {
|
|
252
253
|
}
|
253
254
|
}
|
254
255
|
async destroy() {
|
256
|
+
this.log.info("Shutting down Strapi");
|
255
257
|
await this.server.destroy();
|
256
258
|
await this.runLifecyclesFunctions(lifecycles.LIFECYCLES.DESTROY);
|
257
259
|
this.eventHub.destroy();
|
@@ -260,6 +262,7 @@ class Strapi extends container.Container {
|
|
260
262
|
this.cron.destroy();
|
261
263
|
process.removeAllListeners();
|
262
264
|
delete global.strapi;
|
265
|
+
this.log.info("Strapi has been shut down");
|
263
266
|
}
|
264
267
|
sendStartupTelemetry() {
|
265
268
|
this.telemetry.send("didStartServer", {
|
@@ -294,6 +297,7 @@ class Strapi extends container.Container {
|
|
294
297
|
async postListen() {
|
295
298
|
const isInitialized$1 = await isInitialized.isInitialized(this);
|
296
299
|
this.startupLogger.logStartupMessage({ isInitialized: isInitialized$1 });
|
300
|
+
this.log.info("Strapi started successfully");
|
297
301
|
this.sendStartupTelemetry();
|
298
302
|
this.openAdmin({ isInitialized: isInitialized$1 });
|
299
303
|
}
|
package/dist/Strapi.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type {\n Strapi as StrapiI,\n Server,\n EntityService,\n Documents,\n EventHub,\n StartupLogger,\n CronService,\n WebhookStore,\n CoreStore,\n TelemetryService,\n RequestContext,\n CustomFields,\n Fetch,\n StrapiFS,\n StrapiDirectories,\n Reloader,\n EntityValidator,\n Common,\n Shared,\n Schema,\n} from '@strapi/types';\n\nimport loadConfiguration from './configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './registries';\nimport * as loaders from './loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\n// TODO: move somewhere else\nimport * as draftAndPublishSync from './migrations/draft-publish';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: 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\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements StrapiI {\n server: Server;\n\n log: Logger;\n\n fs: StrapiFS;\n\n eventHub: EventHub;\n\n startupLogger: StartupLogger;\n\n cron: CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: WebhookStore;\n\n store?: CoreStore;\n\n entityValidator?: EntityValidator;\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n entityService?: EntityService.EntityService;\n\n documents?: Documents.Service;\n\n telemetry: TelemetryService;\n\n requestContext: RequestContext;\n\n customFields: CustomFields.CustomFields;\n\n fetch: Fetch;\n\n dirs: StrapiDirectories;\n\n admin?: Common.Module;\n\n isLoaded: boolean;\n\n db: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Reloader;\n\n features: FeaturesService;\n\n // @ts-expect-error - Assigned in constructor\n ee: StrapiI['ee'];\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n utils.destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig, this))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('models', registries.models());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = utils.createStartupLogger(this);\n\n const logConfig = {\n level: 'http', // Strapi defaults to level 'http'\n ...this.config.get('logger'), // DEPRECATED\n ...this.config.get('server.logger.config'),\n };\n\n this.log = createLogger(logConfig);\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = utils.createStrapiFetch(this);\n this.features = createFeaturesService(this);\n this.db = new Database(\n _.merge(this.config.get('database'), {\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n );\n\n utils.createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n utils.ee.init(this.dirs.app.root, this.log);\n return utils.ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => utils.ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: Common.UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: Common.UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Shared.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: Common.UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Shared.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Common.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Common.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Common.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n await this.server.destroy();\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Common.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n\n this.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);\n this.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n this.get('models').add(coreStoreModel).add(webhookModel);\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const models = [\n ...utils.transformContentTypesToModels([\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ]),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n });\n\n this.documents = createDocumentService(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<StrapiI>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: Common.UID.ContentType): Schema.ContentType;\n getModel(uid: Common.UID.Component): Schema.Component;\n getModel<TUID extends Common.UID.Schema>(\n uid: TUID\n ): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as Common.UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as Common.UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: Common.UID.Schema) {\n return this.db.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): StrapiI;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): StrapiI => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["path","Container","utils.destroyOnSignal","loadConfiguration","registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createContentAPI","createAuth","registries.models","utils.getDirs","createServer","createStrapiFs","createEventHub","utils.createStartupLogger","createLogger","createCronService","createTelemetry","createCustomFields","utils.createStrapiFetch","createFeaturesService","Database","_","utils.createUpdateNotifier","utils.ee","utils.LIFECYCLES","getNumberOfDynamicZones","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","hooks","draftAndPublishSync.disable","draftAndPublishSync.enable","loaders.loadApplicationContext","coreStoreModel","webhookModel","createWebhookRunner","utils.convertCustomFieldType","models","utils.transformContentTypesToModels","createCoreStore","createWebhookStore","entityValidator","createEntityService","createDocumentService","isFunction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,MAAM,4BAA4B,CAAC,SAAgD;AAC3E,QAAA,MAAM,QAAQ;AAEd,QAAA,SAAS,KAAK,SAASA,cAAA,QAAK,QAAQ,KAAK,KAAK,MAAM,IAAI;AACxD,QAAA,UAAU,KAAK,UAAUA,cAAA,QAAK,QAAQ,KAAK,KAAK,OAAO,IAAI;AAEjE,SAAO,EAAE,KAAK,QAAQ,MAAM,QAAQ;AACtC;AAEA,MAAM,WAAW,CAAC,WAAmB;AACnC,QAAM,QAAQ;AAAA,IACZ,cAAc;AAAA,IACd,YAAY;AAAA,EAAA;AAGd,WAAS,SAAS;AACZ,QAAA,MAAM,eAAe,GAAG;AAE1B,YAAM,gBAAgB;AACtB,aAAO,cAAc;AACrB;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,IAAI,YAAY,GAAG;AACnC,cAAQ,OAAO,QAAQ;AAAA,IACzB;AAAA,EACF;AAEO,SAAA,eAAe,QAAQ,cAAc;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,IAAI,OAAO;AAET,UAAI,MAAM,eAAe,SAAS,UAAU,MAAM;AAChD,cAAM,gBAAgB;AAAA,MACxB;AACA,YAAM,aAAa;AAAA,IACrB;AAAA,IACA,MAAM;AACJ,aAAO,MAAM;AAAA,IACf;AAAA,EAAA,CACD;AAED,SAAO,cAAc;AACrB,SAAO,aAAa;AAEb,SAAA;AACT;AAIA,MAAM,eAAeC,UAAAA,UAA6B;AAAA,EAChD;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA;AAAA,EAGA;AAAA,EAEA,YAAY,OAAsB,IAAI;AAC9B;AAENC,4BAAsB,IAAI;AAEpB,UAAA,WAAW,0BAA0B,IAAI;AAGzC,UAAA,YAAYC,MAAkB,UAAU,IAAI;AAG7C,SAAA,IAAI,UAAUC,OAAkB,WAAW,IAAI,CAAC,EAClD,IAAI,iBAAiBC,cAAyB,EAC9C,IAAI,cAAcC,WAAuB,CAAA,EACzC,IAAI,YAAYC,SAAoB,IAAI,CAAC,EACzC,IAAI,YAAYC,SAAqB,CAAA,EACrC,IAAI,eAAeC,YAAW,CAAa,EAC3C,IAAI,SAASC,MAAiB,CAAC,EAC/B,IAAI,eAAeC,YAAuB,IAAI,CAAC,EAC/C,IAAI,WAAWC,QAAmB,IAAI,CAAC,EACvC,IAAI,WAAWC,QAAmB,IAAI,CAAC,EACvC,IAAI,iBAAiBC,aAAwB,IAAI,CAAC,EAClD,IAAI,QAAQC,KAAgB,IAAI,CAAC,EACjC,IAAI,cAAcC,YAAuB,EACzC,IAAI,cAAcC,WAAuB,CAAA,EACzC,IAAI,eAAeC,QAAiB,IAAI,CAAC,EACzC,IAAI,QAAQC,QAAY,CAAA,EACxB,IAAI,UAAUC,OAAW,SAAA,CAAQ;AAGpC,SAAK,OAAOC,gBAAc,UAAU,EAAE,QAAQ,MAAM;AAGpD,SAAK,WAAW;AACX,SAAA,SAAS,SAAS,IAAI;AAGtB,SAAA,SAASC,qBAAa,IAAI;AAG1B,SAAA,KAAKC,GAAe,IAAI;AAC7B,SAAK,WAAWC;AACX,SAAA,gBAAgBC,kCAA0B,IAAI;AAEnD,UAAM,YAAY;AAAA,MAChB,OAAO;AAAA;AAAA,MACP,GAAG,KAAK,OAAO,IAAI,QAAQ;AAAA;AAAA,MAC3B,GAAG,KAAK,OAAO,IAAI,sBAAsB;AAAA,IAAA;AAGtC,SAAA,MAAMC,oBAAa,SAAS;AACjC,SAAK,OAAOC;AACP,SAAA,YAAYC,QAAgB,IAAI;AACrC,SAAK,iBAAiB;AACjB,SAAA,eAAeC,eAAmB,IAAI;AACtC,SAAA,QAAQC,wBAAwB,IAAI;AACpC,SAAA,WAAWC,+BAAsB,IAAI;AAC1C,SAAK,KAAK,IAAIC,SAAA;AAAA,MACZC,mBAAE,MAAM,KAAK,OAAO,IAAI,UAAU,GAAG;AAAA,QACnC,UAAU;AAAA,UACR,YAAY;AAAA,YACV,KAAKjC,cAAK,QAAA,KAAK,KAAK,KAAK,IAAI,MAAM,qBAAqB;AAAA,UAC1D;AAAA,QACF;AAAA,MAAA,CACD;AAAA,IAAA;AAGGkC,iCAAqB,IAAI,EAAE;AAE1B,WAAA,eAAuB,MAAM,MAAM;AAAA,MACxC,KAAK,MAAM;AACTC,gBAAS,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,GAAG;AAC1C,eAAOA,QAAS;AAAA,MAClB;AAAA,MACA,cAAc;AAAA,IAAA,CACf;AAEM,WAAA,eAAuB,MAAM,MAAM;AAAA,MACxC,KAAK,MAAMA;AAAAA,MACX,cAAc;AAAA,IAAA,CACf;AAAA,EACH;AAAA,EAEA,IAAI,SAAS;AACJ,WAAA,KAAK,IAAI,QAAQ;AAAA,EAC1B;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,IAAI,UAAU,EAAE,OAAO;AAAA,EACrC;AAAA,EAEA,QAAQ,KAAyB;AAC/B,WAAO,KAAK,IAAI,UAAU,EAAE,IAAI,GAAG;AAAA,EACrC;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK,IAAI,aAAa,EAAE,OAAO;AAAA,EACxC;AAAA,EAEA,WAAW,KAA4B;AACrC,WAAO,KAAK,IAAI,aAAa,EAAE,IAAI,GAAG;AAAA,EACxC;AAAA,EAEA,IAAI,eAAoC;AACtC,WAAO,KAAK,IAAI,eAAe,EAAE,OAAO;AAAA,EAC1C;AAAA,EAEA,YAAY,MAA8B;AACxC,WAAO,KAAK,IAAI,eAAe,EAAE,IAAI,IAAI;AAAA,EAC3C;AAAA,EAEA,IAAI,aAAgC;AAClC,WAAO,KAAK,IAAI,YAAY,EAAE,OAAO;AAAA,EACvC;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,IAAI,UAAU,EAAE,OAAO;AAAA,EACrC;AAAA,EAEA,OAAO,MAAc;AACnB,WAAO,KAAK,IAAI,UAAU,EAAE,IAAI,IAAI;AAAA,EACtC;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK,IAAI,aAAa,EAAE,OAAO;AAAA,EACxC;AAAA,EAEA,WAAW,MAAc;AACvB,WAAO,KAAK,IAAI,aAAa,EAAE,IAAI,IAAI;AAAA,EACzC;AAAA,EAEA,IAAI,UAAyC;AAC3C,WAAO,KAAK,IAAI,SAAS,EAAE,OAAO;AAAA,EACpC;AAAA,EAEA,OAAO,MAA6B;AAClC,WAAO,KAAK,IAAI,SAAS,EAAE,IAAI,IAAI;AAAA,EACrC;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,KAAK,IAAI,OAAO,EAAE,OAAO;AAAA,EAClC;AAAA,EAEA,KAAK,MAAc;AACjB,WAAO,KAAK,IAAI,OAAO,EAAE,IAAI,IAAI;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MAAqC;AACvC,WAAO,KAAK,IAAI,MAAM,EAAE,OAAO;AAAA,EACjC;AAAA,EAEA,IAAI,OAAO;AACF,WAAA,KAAK,IAAI,MAAM;AAAA,EACxB;AAAA,EAEA,IAAI,aAAa;AACR,WAAA,KAAK,IAAI,aAAa;AAAA,EAC/B;AAAA,EAEA,IAAI,aAAa;AACR,WAAA,KAAK,IAAI,YAAY;AAAA,EAC9B;AAAA,EAEA,IAAI,aAAa;AACR,WAAA,KAAK,IAAI,YAAY;AAAA,EAC9B;AAAA,EAEA,MAAM,QAAQ;AACR,QAAA;AACE,UAAA,CAAC,KAAK,UAAU;AAClB,cAAM,KAAK;MACb;AAEA,YAAM,KAAK;AAEJ,aAAA;AAAA,aACA,OAAO;AACP,aAAA,KAAK,cAAc,KAAK;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,MAAM,UAAU;AACR,UAAA,KAAK,OAAO;AAClB,UAAM,KAAK,uBAAuBC,WAAM,WAAW,OAAO;AAE1D,SAAK,SAAS;AAER,UAAA,KAAK,IAAI;AAEf,SAAK,UAAU;AACf,SAAK,KAAK;AAEV,YAAQ,mBAAmB;AAG3B,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,uBAAuB;AAIhB,SAAA,UACF,KAAK,kBAAkB;AAAA,MACtB,iBAAiB;AAAA,QACf,UAAU,KAAK,OAAO,IAAI,4BAA4B;AAAA,QACtD,SAAS,OAAO,KAAK,KAAK,OAAO;AAAA,QACjC,yBAAyBH,WAAA,QAAE,KAAK,KAAK,YAAY;AAAA;AAAA,QACjD,oBAAoBA,WAAA,QAAE,KAAK,KAAK,UAAU;AAAA,QAC1C,sBAAsBI,aAAwB;AAAA,QAC9C,2BAA2B,OAAO,OAA0B,KAAK,WAAW,EAAE;AAAA;AAAA,UAE5E,CAAC,eAAe,eAAe,UAAaC,UAAAA,mBAA6B,UAAU;AAAA,QAAA,EACnF;AAAA,QACF,aAAa,KAAK,OAAO;AAAA;AAAA;AAAA,MAG3B;AAAA,IACD,CAAA,EACA,MAAM,KAAK,IAAI,KAAK;AAAA,EACzB;AAAA,EAEA,MAAM,UAAU,EAAE,eAAAC,kBAA6C;AAC7D,UAAM,kBACJ,KAAK,OAAO,IAAI,aAAa,MAAM,iBACnC,KAAK,OAAO,IAAI,kBAAkB,IAAI,MAAM;AAE1C,QAAA,mBAAmB,CAACA,gBAAe;AACjC,UAAA;AACI,cAAAC,YAAkB,YAAA,KAAK,MAAM;AAC9B,aAAA,UAAU,KAAK,YAAY;AAAA,eACzB,GAAG;AACL,aAAA,UAAU,KAAK,eAAe;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAa;AACjB,UAAMD,kBAAgB,MAAME,4BAAoB,IAAI;AAEpD,SAAK,cAAc,kBAAkB,EAAEF,eAAAA,gBAAe,CAAA;AAEtD,SAAK,qBAAqB;AACrB,SAAA,UAAU,iBAAEA,gBAAA,CAAe;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS;AACb,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,YAAM,WAAW,YAAY;AACvB,YAAA;AACF,gBAAM,KAAK;AAEH;iBACD,OAAO;AACd,iBAAO,KAAK;AAAA,QACd;AAAA,MAAA;AAGF,YAAM,eAAe,KAAK,OAAO,IAAI,eAAe;AAEpD,UAAI,cAAc;AACX,aAAA,OAAO,OAAO,cAAc,QAAQ;AAAA,MAAA,OACpC;AACL,cAAM,EAAE,MAAM,SAAS,KAAK,OAAO,IAAI,QAAQ;AAE/C,aAAK,OAAO,OAAO,MAAM,MAAM,QAAQ;AAAA,MACzC;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEA,cAAc,KAAc,eAA+B;AACpD,SAAA,IAAI,MAAM,0CAA0C;AACzD,QAAI,eAAe;AACZ,WAAA,IAAI,MAAM,aAAa;AAAA,IAC9B;AAEK,SAAA,IAAI,MAAM,GAAG;AAClB,WAAO,KAAK;EACd;AAAA,EAEA,KAAK,WAAW,GAAU;AACxB,SAAK,QAAQ;AAEb,QAAI,KAAK,OAAO,IAAI,YAAY,GAAG;AACjC,cAAQ,OAAO,MAAM;AAAA,IACvB;AAGA,YAAQ,KAAK,QAAQ;AAAA,EACvB;AAAA,EAEA,wBAAwB;AACtB,SAAK,IAAI,OAAO,EAAE,IAAI,oCAAoCG,YAAA,MAAM,yBAAyB;AACzF,SAAK,IAAI,OAAO,EAAE,IAAI,mCAAmCA,YAAA,MAAM,yBAAyB;AAExF,SAAK,KAAK,kCAAkC,EAAE,SAASC,aAA2B,OAAA;AAClF,SAAK,KAAK,iCAAiC,EAAE,SAASC,aAA0B,MAAA;AAAA,EAClF;AAAA,EAEA,MAAM,WAAW;AACT,UAAAC,QAAAA,uBAA+B,IAAI;AAEzC,SAAK,IAAI,QAAQ,EAAE,IAAIC,UAAAA,cAAc,EAAE,IAAIC,aAAAA,YAAY;AAGvD,SAAK,gBAAgBC,cAAoB;AAAA,MACvC,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK,OAAO,IAAI,mBAAmB,CAAA,CAAE;AAAA,MACpD,OAAO,KAAK;AAAA,IAAA,CACb;AAED,SAAK,sBAAsB;AAE3B,SAAK,UAAU;AAEf,UAAM,KAAK,uBAAuBZ,WAAM,WAAW,QAAQ;AAE3Da,kDAA6B,IAAI;AAE1B,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,YAAY;AAChB,UAAMC,UAAS;AAAA,MACb,GAAGC,4DAAoC;AAAA,QACrC,GAAG,OAAO,OAAO,KAAK,YAAY;AAAA,QAClC,GAAG,OAAO,OAAO,KAAK,UAAU;AAAA,MAAA,CACjC;AAAA,MACD,GAAG,KAAK,IAAI,QAAQ,EAAE,IAAI;AAAA,IAAA;AAG5B,UAAM,KAAK,GAAG,KAAK,EAAE,QAAAD,QAAQ,CAAA;AAE7B,SAAK,QAAQE,0BAAgB,EAAE,IAAI,KAAK,IAAI;AAC5C,SAAK,eAAeC,gCAAmB,EAAE,IAAI,KAAK,IAAI;AAEtD,SAAK,kBAAkBC;AACvB,SAAK,gBAAgBC,QAAoB;AAAA,MACvC,QAAQ;AAAA,MACR,IAAI,KAAK;AAAA,IAAA,CACV;AAEI,SAAA,YAAYC,8BAAsB,IAAI;AAE3C,QAAI,KAAK,OAAO,IAAI,uBAAuB,IAAI,GAAG;AAChD,YAAM,YAAY,KAAK,OAAO,IAAI,qBAAqB,CAAA,CAAE;AACpD,WAAA,KAAK,IAAI,SAAS;AAAA,IACzB;AAEA,SAAK,UAAU;AAEX,QAAA;AACA,QAAA,MAAM,KAAK,GAAG,sBAAsB,SAASV,UAAAA,eAAe,SAAS,GAAG;AACxD,wBAAA,MAAM,KAAK,MAAM,IAAI;AAAA,QACrC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,MAAA,CACN;AAAA,IACH;AAEA,UAAM,KAAK,KAAK,kCAAkC,EAAE,KAAK;AAAA,MACvD;AAAA,MACA,cAAc,KAAK;AAAA,IAAA,CACpB;AAEK,UAAA,KAAK,GAAG,OAAO,KAAK;AAE1B,QAAI,KAAK,IAAI;AACX,YAAMX,QAAS,aAAa,EAAE,QAAQ,KAAM,CAAA;AAAA,IAC9C;AAEA,UAAM,KAAK,KAAK,iCAAiC,EAAE,KAAK;AAAA,MACtD;AAAA,MACA,cAAc,KAAK;AAAA,IAAA,CACpB;AAEK,UAAA,KAAK,MAAM,IAAI;AAAA,MACnB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO,KAAK;AAAA,IAAA,CACb;AAED,UAAM,KAAK;AAEL,UAAA,KAAK,OAAO;AAClB,SAAK,OAAO;AAEN,UAAA,KAAK,WAAW,YAAY,gBAAgB;AAElD,UAAM,KAAK,uBAAuBC,WAAM,WAAW,SAAS;AAE5D,SAAK,KAAK;AAEH,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,OAAO;AACX,UAAM,KAAK;AACX,UAAM,KAAK;AAEX,SAAK,WAAW;AAET,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,gBAAgB;AACpB,UAAM,WAAW,MAAM,KAAK,cAAc,aAAa;AACvD,QAAI,CAAC,UAAU;AACb;AAAA,IACF;AAEA,eAAW,WAAW,UAAU;AACzB,WAAA,eAAe,IAAI,OAAO;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,MAAM,uBAAuB,eAAqD;AAEhF,UAAM,KAAK,IAAI,SAAS,EAAE,aAAa,EAAE;AAGzC,UAAM,yBAAyB,KAAK,SAAS,KAAK,MAAM,aAAa;AACjE,QAAAqB,IAAAA,WAAW,sBAAsB,GAAG;AACtC,YAAM,uBAAuB,EAAE,QAAQ,KAAM,CAAA;AAAA,IAC/C;AAGA,UAAM,wBAAwB,KAAK,OAAO,KAAK,IAAI,aAAa;AAC5D,QAAAA,IAAAA,WAAW,qBAAqB,GAAG;AACrC,YAAM,sBAAsB,EAAE,QAAQ,KAAM,CAAA;AAAA,IAC9C;AAAA,EACF;AAAA,EAIA,SACE,KACmD;AAC/C,QAAA,OAAO,KAAK,cAAc;AACrB,aAAA,KAAK,aAAa,GAA6B;AAAA,IACxD;AAEI,QAAA,OAAO,KAAK,YAAY;AACnB,aAAA,KAAK,WAAW,GAA2B;AAAA,IACpD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAwB;AACrB,WAAA,KAAK,GAAG,MAAM,GAAG;AAAA,EAC1B;AACF;AAeA,MAAM,SAAS,CAAC,UAAyB,OAAgB;AACjD,QAAA,SAAS,IAAI,OAAO,OAAO;AACjC,SAAO,SAAS;AACT,SAAA;AACT;AAEA,MAAM,OAAa,OAAO,OAAO,QAAQ,EAAE,WAAW,QAAS,CAAA;;"}
|
1
|
+
{"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport loadConfiguration from './configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './registries';\nimport * as loaders from './loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\n// TODO: move somewhere else\nimport * as draftAndPublishSync from './migrations/draft-publish';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: 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\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements Core.Strapi {\n server: Modules.Server.Server;\n\n log: Logger;\n\n fs: Core.StrapiFS;\n\n eventHub: Modules.EventHub.EventHub;\n\n startupLogger: Core.StartupLogger;\n\n cron: Modules.Cron.CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: Modules.WebhookStore.WebhookStore;\n\n store?: Modules.CoreStore.CoreStore;\n\n entityValidator?: Modules.EntityValidator.EntityValidator;\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n entityService?: Modules.EntityService.EntityService;\n\n documents?: Modules.Documents.Service;\n\n telemetry: Modules.Metrics.TelemetryService;\n\n requestContext: Modules.RequestContext.RequestContext;\n\n customFields: Modules.CustomFields.CustomFields;\n\n fetch: Modules.Fetch.Fetch;\n\n dirs: Core.StrapiDirectories;\n\n admin?: Core.Module;\n\n isLoaded: boolean;\n\n db: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Core.Reloader;\n\n features: FeaturesService;\n\n // @ts-expect-error - Assigned in constructor\n ee: Core.Strapi['ee'];\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n utils.destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig, this))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('models', registries.models());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = utils.createStartupLogger(this);\n\n const logConfig = {\n level: 'http', // Strapi defaults to level 'http'\n ...this.config.get('logger'), // DEPRECATED\n ...this.config.get('server.logger.config'),\n };\n\n this.log = createLogger(logConfig);\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = utils.createStrapiFetch(this);\n this.features = createFeaturesService(this);\n this.db = new Database(\n _.merge(this.config.get('database'), {\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n );\n\n utils.createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n utils.ee.init(this.dirs.app.root, this.log);\n return utils.ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => utils.ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Core.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.server.destroy();\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n\n this.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);\n this.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n this.get('models').add(coreStoreModel).add(webhookModel);\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const models = [\n ...utils.transformContentTypesToModels([\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ]),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n });\n\n this.documents = createDocumentService(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<Core.Strapi>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): Core.Strapi;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): Core.Strapi => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["path","Container","utils.destroyOnSignal","loadConfiguration","registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createQueryParamService","createContentAPI","createAuth","registries.models","utils.getDirs","createServer","createStrapiFs","createEventHub","utils.createStartupLogger","createLogger","createCronService","createTelemetry","createCustomFields","utils.createStrapiFetch","createFeaturesService","Database","_","utils.createUpdateNotifier","utils.ee","utils.LIFECYCLES","getNumberOfDynamicZones","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","hooks","draftAndPublishSync.disable","draftAndPublishSync.enable","loaders.loadApplicationContext","coreStoreModel","webhookModel","createWebhookRunner","utils.convertCustomFieldType","models","utils.transformContentTypesToModels","createCoreStore","createWebhookStore","entityValidator","createEntityService","createDocumentService","isFunction"],"mappings":"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"}
|
package/dist/Strapi.mjs
CHANGED
@@ -43,6 +43,7 @@ import createWebhookRunner from "./services/webhook-runner.mjs";
|
|
43
43
|
import { webhookModel, createWebhookStore } from "./services/webhook-store.mjs";
|
44
44
|
import { coreStoreModel, createCoreStore } from "./services/core-store.mjs";
|
45
45
|
import createEntityService from "./services/entity-service/index.mjs";
|
46
|
+
import createQueryParamService from "./services/query-params.mjs";
|
46
47
|
import createCronService from "./services/cron.mjs";
|
47
48
|
import entityValidator from "./services/entity-validator/index.mjs";
|
48
49
|
import createTelemetryInstance from "./services/metrics/index.mjs";
|
@@ -127,7 +128,7 @@ class Strapi extends Container {
|
|
127
128
|
destroyOnSignal(this);
|
128
129
|
const rootDirs = resolveWorkingDirectories(opts);
|
129
130
|
const appConfig = loadConfiguration(rootDirs, opts);
|
130
|
-
this.add("config", config(appConfig, this)).add("content-types", contentTypesRegistry()).add("components", componentsRegistry()).add("services", servicesRegistry(this)).add("policies", policiesRegistry()).add("middlewares", middlewaresRegistry()).add("hooks", hooksRegistry()).add("controllers", controllersRegistry(this)).add("modules", modulesRegistry(this)).add("plugins", pluginsRegistry(this)).add("custom-fields", customFieldsRegistry(this)).add("apis", apisRegistry(this)).add("sanitizers", sanitizersRegistry()).add("validators", validatorsRegistry()).add("content-api", createContentAPI(this)).add("auth", createAuthentication()).add("models", registry());
|
131
|
+
this.add("config", config(appConfig, this)).add("content-types", contentTypesRegistry()).add("components", componentsRegistry()).add("services", servicesRegistry(this)).add("policies", policiesRegistry()).add("middlewares", middlewaresRegistry()).add("hooks", hooksRegistry()).add("controllers", controllersRegistry(this)).add("modules", modulesRegistry(this)).add("plugins", pluginsRegistry(this)).add("custom-fields", customFieldsRegistry(this)).add("apis", apisRegistry(this)).add("sanitizers", sanitizersRegistry()).add("validators", validatorsRegistry()).add("query-params", createQueryParamService(this)).add("content-api", createContentAPI(this)).add("auth", createAuthentication()).add("models", registry());
|
131
132
|
this.dirs = getDirs(rootDirs, { strapi: this });
|
132
133
|
this.isLoaded = false;
|
133
134
|
this.reload = reloader(this);
|
@@ -249,6 +250,7 @@ class Strapi extends Container {
|
|
249
250
|
}
|
250
251
|
}
|
251
252
|
async destroy() {
|
253
|
+
this.log.info("Shutting down Strapi");
|
252
254
|
await this.server.destroy();
|
253
255
|
await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);
|
254
256
|
this.eventHub.destroy();
|
@@ -257,6 +259,7 @@ class Strapi extends Container {
|
|
257
259
|
this.cron.destroy();
|
258
260
|
process.removeAllListeners();
|
259
261
|
delete global.strapi;
|
262
|
+
this.log.info("Strapi has been shut down");
|
260
263
|
}
|
261
264
|
sendStartupTelemetry() {
|
262
265
|
this.telemetry.send("didStartServer", {
|
@@ -291,6 +294,7 @@ class Strapi extends Container {
|
|
291
294
|
async postListen() {
|
292
295
|
const isInitialized$1 = await isInitialized(this);
|
293
296
|
this.startupLogger.logStartupMessage({ isInitialized: isInitialized$1 });
|
297
|
+
this.log.info("Strapi started successfully");
|
294
298
|
this.sendStartupTelemetry();
|
295
299
|
this.openAdmin({ isInitialized: isInitialized$1 });
|
296
300
|
}
|
package/dist/Strapi.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type {\n Strapi as StrapiI,\n Server,\n EntityService,\n Documents,\n EventHub,\n StartupLogger,\n CronService,\n WebhookStore,\n CoreStore,\n TelemetryService,\n RequestContext,\n CustomFields,\n Fetch,\n StrapiFS,\n StrapiDirectories,\n Reloader,\n EntityValidator,\n Common,\n Shared,\n Schema,\n} from '@strapi/types';\n\nimport loadConfiguration from './configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './registries';\nimport * as loaders from './loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\n// TODO: move somewhere else\nimport * as draftAndPublishSync from './migrations/draft-publish';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: 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\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements StrapiI {\n server: Server;\n\n log: Logger;\n\n fs: StrapiFS;\n\n eventHub: EventHub;\n\n startupLogger: StartupLogger;\n\n cron: CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: WebhookStore;\n\n store?: CoreStore;\n\n entityValidator?: EntityValidator;\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n entityService?: EntityService.EntityService;\n\n documents?: Documents.Service;\n\n telemetry: TelemetryService;\n\n requestContext: RequestContext;\n\n customFields: CustomFields.CustomFields;\n\n fetch: Fetch;\n\n dirs: StrapiDirectories;\n\n admin?: Common.Module;\n\n isLoaded: boolean;\n\n db: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Reloader;\n\n features: FeaturesService;\n\n // @ts-expect-error - Assigned in constructor\n ee: StrapiI['ee'];\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n utils.destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig, this))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('models', registries.models());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = utils.createStartupLogger(this);\n\n const logConfig = {\n level: 'http', // Strapi defaults to level 'http'\n ...this.config.get('logger'), // DEPRECATED\n ...this.config.get('server.logger.config'),\n };\n\n this.log = createLogger(logConfig);\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = utils.createStrapiFetch(this);\n this.features = createFeaturesService(this);\n this.db = new Database(\n _.merge(this.config.get('database'), {\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n );\n\n utils.createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n utils.ee.init(this.dirs.app.root, this.log);\n return utils.ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => utils.ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: Common.UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: Common.UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Shared.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: Common.UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Shared.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Common.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Common.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Common.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n await this.server.destroy();\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Common.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n\n this.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);\n this.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n this.get('models').add(coreStoreModel).add(webhookModel);\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const models = [\n ...utils.transformContentTypesToModels([\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ]),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n });\n\n this.documents = createDocumentService(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<StrapiI>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: Common.UID.ContentType): Schema.ContentType;\n getModel(uid: Common.UID.Component): Schema.Component;\n getModel<TUID extends Common.UID.Schema>(\n uid: TUID\n ): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as Common.UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as Common.UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: Common.UID.Schema) {\n return this.db.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): StrapiI;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): StrapiI => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["utils.destroyOnSignal","registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createAuth","registries.models","utils.getDirs","utils.createStartupLogger","createTelemetry","requestContext","utils.createStrapiFetch","utils.createUpdateNotifier","utils.ee","utils.LIFECYCLES","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","draftAndPublishSync.disable","draftAndPublishSync.enable","loaders.loadApplicationContext","utils.convertCustomFieldType","utils.transformContentTypesToModels"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport loadConfiguration from './configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './registries';\nimport * as loaders from './loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\n// TODO: move somewhere else\nimport * as draftAndPublishSync from './migrations/draft-publish';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: 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\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements Core.Strapi {\n server: Modules.Server.Server;\n\n log: Logger;\n\n fs: Core.StrapiFS;\n\n eventHub: Modules.EventHub.EventHub;\n\n startupLogger: Core.StartupLogger;\n\n cron: Modules.Cron.CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: Modules.WebhookStore.WebhookStore;\n\n store?: Modules.CoreStore.CoreStore;\n\n entityValidator?: Modules.EntityValidator.EntityValidator;\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n entityService?: Modules.EntityService.EntityService;\n\n documents?: Modules.Documents.Service;\n\n telemetry: Modules.Metrics.TelemetryService;\n\n requestContext: Modules.RequestContext.RequestContext;\n\n customFields: Modules.CustomFields.CustomFields;\n\n fetch: Modules.Fetch.Fetch;\n\n dirs: Core.StrapiDirectories;\n\n admin?: Core.Module;\n\n isLoaded: boolean;\n\n db: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Core.Reloader;\n\n features: FeaturesService;\n\n // @ts-expect-error - Assigned in constructor\n ee: Core.Strapi['ee'];\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n utils.destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig, this))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('models', registries.models());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = utils.createStartupLogger(this);\n\n const logConfig = {\n level: 'http', // Strapi defaults to level 'http'\n ...this.config.get('logger'), // DEPRECATED\n ...this.config.get('server.logger.config'),\n };\n\n this.log = createLogger(logConfig);\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = utils.createStrapiFetch(this);\n this.features = createFeaturesService(this);\n this.db = new Database(\n _.merge(this.config.get('database'), {\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n );\n\n utils.createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n utils.ee.init(this.dirs.app.root, this.log);\n return utils.ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => utils.ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Core.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.server.destroy();\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n\n this.log.info('Strapi has been shut down');\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Core.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.log.info('Strapi started successfully');\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n\n this.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);\n this.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n this.get('models').add(coreStoreModel).add(webhookModel);\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const models = [\n ...utils.transformContentTypesToModels([\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ]),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n });\n\n this.documents = createDocumentService(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<Core.Strapi>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): Core.Strapi;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): Core.Strapi => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["utils.destroyOnSignal","registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createAuth","registries.models","utils.getDirs","utils.createStartupLogger","createTelemetry","requestContext","utils.createStrapiFetch","utils.createUpdateNotifier","utils.ee","utils.LIFECYCLES","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","draftAndPublishSync.disable","draftAndPublishSync.enable","loaders.loadApplicationContext","utils.convertCustomFieldType","utils.transformContentTypesToModels"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type {
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\n\nimport loadConfigDir from './config-loader';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport default (dirs: { app: string; dist: string }, initialConfig: any = {}) => {\n const { app: appDir, dist: distDir } = dirs;\n const { autoReload = false, serveAdminPanel = true } = initialConfig;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n\n return config;\n};\n"],"names":["dotenv","path","os","_","omit","loadConfigDir","getConfigUrls","getAbsoluteServerUrl","getAbsoluteAdminUrl"],"mappings":";;;;;;;;;;;;;AAWAA,gBAAAA,QAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQC,cAAK,QAAA,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQC,YAAA,QAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEA,MAAA,oBAAe,CAAC,MAAqC,gBAAqB,OAAO;AAC/E,QAAM,EAAE,KAAK,QAAQ,MAAM,YAAY;AACvC,QAAM,EAAE,aAAa,OAAO,kBAAkB,SAAS;AAEvD,QAAM,UAAU,QAAQD,cAAA,QAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAYA,cAAK,QAAA,QAAQ,WAAW,QAAQ,IAAA,GAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAME,WAAA,QAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmBA,WAAAA,QAAE,KAAKA,mBAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IACF;AAAA,EAAA;AAIF,QAAM,aAAaC,IAAAA,KAAK,WAAWC,aAAc,SAAS,CAAC;AAE3D,QAAM,SAASJ,cAAK,QAAA,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAYI,aAAc,MAAM;AAEtC,QAAM,SAASF,WAAAA,QAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAIG,KAAAA,cAAc,MAAM;AAE7DH,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,sBAAsBI,KAAA,qBAAqB,MAAM,CAAC;AAC9DJ,aAAAA,QAAA,IAAI,QAAQ,aAAa,QAAQ;AACjCA,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,qBAAqBK,KAAA,oBAAoB,MAAM,CAAC;AAEvD,SAAA;AACT;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type {
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\n\nimport loadConfigDir from './config-loader';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport default (dirs: { app: string; dist: string }, initialConfig: any = {}) => {\n const { app: appDir, dist: distDir } = dirs;\n const { autoReload = false, serveAdminPanel = true } = initialConfig;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n\n return config;\n};\n"],"names":[],"mappings":";;;;;;;AAWA,OAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQ,KAAK,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQ,GAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEA,MAAA,oBAAe,CAAC,MAAqC,gBAAqB,OAAO;AAC/E,QAAM,EAAE,KAAK,QAAQ,MAAM,YAAY;AACvC,QAAM,EAAE,aAAa,OAAO,kBAAkB,SAAS;AAEvD,QAAM,UAAU,QAAQ,KAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAY,KAAK,QAAQ,WAAW,QAAQ,IAAA,GAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAM,EAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmB,EAAE,KAAK,EAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IACF;AAAA,EAAA;AAIF,QAAM,aAAa,KAAK,WAAW,cAAc,SAAS,CAAC;AAE3D,QAAM,SAAS,KAAK,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAY,cAAc,MAAM;AAEtC,QAAM,SAAS,EAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAI,cAAc,MAAM;AAE7D,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,sBAAsB,qBAAqB,MAAM,CAAC;AAC9D,IAAA,IAAI,QAAQ,aAAa,QAAQ;AACjC,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,qBAAqB,oBAAoB,MAAM,CAAC;AAEvD,SAAA;AACT;"}
|
package/dist/container.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import type {
|
2
|
-
export declare class Container implements
|
1
|
+
import type { Core } from '@strapi/types';
|
2
|
+
export declare class Container implements Core.Container {
|
3
3
|
private registerMap;
|
4
4
|
private serviceMap;
|
5
5
|
add(name: string, resolver: unknown): this;
|
package/dist/container.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,SAAU,YAAW,IAAI,CAAC,SAAS;IAC9C,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,UAAU,CAAa;IAE/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IASnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAoBjC"}
|
package/dist/container.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB;EAElB,iCAAiB;EAEzB,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IACtE;AAEK,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MACpC;AAEO,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACrD;AACF;;"}
|
package/dist/container.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":"AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB;EAElB,iCAAiB;EAEzB,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IACtE;AAEK,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MACpC;AAEO,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACrD;AACF;"}
|