@strapi/core 5.56.0 → 5.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Strapi.d.ts +1 -0
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +6 -3
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +6 -3
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/get-dirs.js +2 -2
- package/dist/configuration/get-dirs.js.map +1 -1
- package/dist/configuration/get-dirs.mjs +2 -2
- package/dist/configuration/get-dirs.mjs.map +1 -1
- package/dist/configuration/index.d.ts +1 -2
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +1 -2
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +2 -3
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.js +3 -3
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs +1 -1
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.js +2 -2
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +2 -2
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.js +2 -2
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.d.ts +1 -4
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/controller/transform.js +8 -8
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +5 -5
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.js +1 -1
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs +1 -1
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/service/pagination.js +9 -9
- package/dist/core-api/service/pagination.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +7 -7
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +1 -2
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs +1 -2
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/ee/index.js +4 -4
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +3 -3
- package/dist/ee/index.mjs.map +1 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +3 -2
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +3 -2
- package/dist/factories.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/loaders/apis.d.ts.map +1 -1
- package/dist/loaders/apis.js +1 -2
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/apis.mjs +1 -2
- package/dist/loaders/apis.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +6 -5
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +6 -5
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
- package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.mjs +2 -2
- package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/loaders/plugins/index.js +9 -12
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs +9 -12
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/middlewares/body.js +2 -2
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs +2 -2
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/public.js +2 -2
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/public.mjs +2 -2
- package/dist/middlewares/public.mjs.map +1 -1
- package/dist/middlewares/responses.d.ts.map +1 -1
- package/dist/middlewares/responses.js +1 -3
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/responses.mjs +1 -3
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.d.ts.map +1 -1
- package/dist/middlewares/security.js +3 -3
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs +3 -3
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.js +2 -2
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs +2 -2
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +1 -2
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -2
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/migrations/i18n.d.ts.map +1 -1
- package/dist/migrations/i18n.js +6 -4
- package/dist/migrations/i18n.js.map +1 -1
- package/dist/migrations/i18n.mjs +6 -4
- package/dist/migrations/i18n.mjs.map +1 -1
- package/dist/package.json.js +13 -13
- package/dist/package.json.mjs +13 -13
- package/dist/registries/apis.js +2 -2
- package/dist/registries/apis.js.map +1 -1
- package/dist/registries/apis.mjs +2 -2
- package/dist/registries/apis.mjs.map +1 -1
- package/dist/registries/components.js +2 -2
- package/dist/registries/components.js.map +1 -1
- package/dist/registries/components.mjs +2 -2
- package/dist/registries/components.mjs.map +1 -1
- package/dist/registries/content-types.d.ts +1 -1
- package/dist/registries/content-types.js +3 -3
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs +3 -3
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/registries/controllers.js +3 -3
- package/dist/registries/controllers.js.map +1 -1
- package/dist/registries/controllers.mjs +3 -3
- package/dist/registries/controllers.mjs.map +1 -1
- package/dist/registries/custom-fields.js +4 -4
- package/dist/registries/custom-fields.js.map +1 -1
- package/dist/registries/custom-fields.mjs +4 -4
- package/dist/registries/custom-fields.mjs.map +1 -1
- package/dist/registries/hooks.d.ts +1 -1
- package/dist/registries/hooks.js +2 -2
- package/dist/registries/hooks.js.map +1 -1
- package/dist/registries/hooks.mjs +2 -2
- package/dist/registries/hooks.mjs.map +1 -1
- package/dist/registries/middlewares.d.ts +1 -1
- package/dist/registries/middlewares.js +3 -3
- package/dist/registries/middlewares.js.map +1 -1
- package/dist/registries/middlewares.mjs +3 -3
- package/dist/registries/middlewares.mjs.map +1 -1
- package/dist/registries/modules.d.ts +1 -4
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/modules.js +3 -3
- package/dist/registries/modules.js.map +1 -1
- package/dist/registries/modules.mjs +3 -3
- package/dist/registries/modules.mjs.map +1 -1
- package/dist/registries/plugins.js +2 -2
- package/dist/registries/plugins.js.map +1 -1
- package/dist/registries/plugins.mjs +2 -2
- package/dist/registries/plugins.mjs.map +1 -1
- package/dist/registries/policies.d.ts +1 -1
- package/dist/registries/policies.js +4 -4
- package/dist/registries/policies.js.map +1 -1
- package/dist/registries/policies.mjs +3 -3
- package/dist/registries/policies.mjs.map +1 -1
- package/dist/registries/services.js +3 -3
- package/dist/registries/services.js.map +1 -1
- package/dist/registries/services.mjs +3 -3
- package/dist/registries/services.mjs.map +1 -1
- package/dist/services/auth/index.js +3 -3
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs +3 -3
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/core-store.js +3 -3
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/cron.d.ts.map +1 -1
- package/dist/services/cron.js +2 -4
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +2 -4
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/document-service/attributes/index.js +2 -2
- package/dist/services/document-service/attributes/index.js.map +1 -1
- package/dist/services/document-service/attributes/index.mjs +1 -1
- package/dist/services/document-service/attributes/index.mjs.map +1 -1
- package/dist/services/document-service/attributes/transforms.js +3 -3
- package/dist/services/document-service/attributes/transforms.js.map +1 -1
- package/dist/services/document-service/attributes/transforms.mjs +2 -2
- package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/document-service/components.js +13 -14
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/components.mjs +12 -13
- package/dist/services/document-service/components.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +65 -38
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs +59 -32
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts +2 -2
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +16 -8
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +17 -9
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/first-published-at.js +7 -5
- package/dist/services/document-service/first-published-at.js.map +1 -1
- package/dist/services/document-service/first-published-at.mjs +7 -5
- package/dist/services/document-service/first-published-at.mjs.map +1 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +37 -28
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +33 -24
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/params.d.ts +1 -0
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/document-service/params.js +6 -4
- package/dist/services/document-service/params.js.map +1 -1
- package/dist/services/document-service/params.mjs +6 -5
- package/dist/services/document-service/params.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +84 -61
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +47 -24
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.js +2 -1
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs +2 -1
- package/dist/services/document-service/transform/id-map.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.js +2 -2
- package/dist/services/document-service/transform/id-transform.js.map +1 -1
- package/dist/services/document-service/transform/id-transform.mjs +1 -1
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
- package/dist/services/document-service/transform/query.d.ts +3 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.js +12 -6
- package/dist/services/document-service/transform/query.js.map +1 -1
- package/dist/services/document-service/transform/query.mjs +11 -5
- package/dist/services/document-service/transform/query.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -2
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -2
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
- package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
- package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.js +6 -6
- package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs +3 -3
- package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
- package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
- package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
- package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
- package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/clone-relations.js +3 -3
- package/dist/services/document-service/utils/clone-relations.js.map +1 -1
- package/dist/services/document-service/utils/clone-relations.mjs +3 -3
- package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.js +4 -4
- package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
- package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
- package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
- package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +9 -10
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +4 -5
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/localization.d.ts +4 -0
- package/dist/services/localization.d.ts.map +1 -0
- package/dist/services/localization.js +51 -0
- package/dist/services/localization.js.map +1 -0
- package/dist/services/localization.mjs +49 -0
- package/dist/services/localization.mjs.map +1 -0
- package/dist/services/server/compose-endpoint.js +7 -7
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +3 -3
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/koa-methods.js +2 -2
- package/dist/services/server/koa-methods.js.map +1 -1
- package/dist/services/server/koa-methods.mjs +1 -1
- package/dist/services/server/koa-methods.mjs.map +1 -1
- package/dist/services/server/koa.d.ts.map +1 -1
- package/dist/services/server/koa.js +1 -2
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs +1 -2
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/middleware.js +1 -2
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/middleware.mjs +1 -2
- package/dist/services/server/middleware.mjs.map +1 -1
- package/dist/services/server/routing.js +2 -2
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs +2 -2
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/conditional-fields.d.ts +1 -1
- package/dist/services/utils/conditional-fields.d.ts.map +1 -1
- package/dist/services/utils/conditional-fields.js +2 -8
- package/dist/services/utils/conditional-fields.js.map +1 -1
- package/dist/services/utils/conditional-fields.mjs +2 -8
- package/dist/services/utils/conditional-fields.mjs.map +1 -1
- package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
- package/dist/services/utils/dynamic-zones.js +2 -8
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs +2 -8
- package/dist/services/utils/dynamic-zones.mjs.map +1 -1
- package/dist/utils/cron.js +2 -2
- package/dist/utils/cron.js.map +1 -1
- package/dist/utils/cron.mjs +1 -1
- package/dist/utils/cron.mjs.map +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.js +5 -12
- package/dist/utils/filepath-to-prop-path.js.map +1 -1
- package/dist/utils/filepath-to-prop-path.mjs +5 -11
- package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
- package/dist/utils/is-initialized.js +3 -3
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs +2 -2
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/startup-logger.js +2 -4
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs +2 -3
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +4 -4
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +3 -3
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.mjs","sources":["../../src/registries/policies.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"policies.mjs","sources":["../../src/registries/policies.ts"],"sourcesContent":["import { castArray, has, pickBy } from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { addNamespace, hasNamespace } from './namespace';\n\nconst PLUGIN_PREFIX = 'plugin::';\nconst API_PREFIX = 'api::';\n\ninterface PolicyInfo {\n name: string;\n config: unknown;\n}\n\ntype PolicyConfig = string | PolicyInfo;\n\ninterface NamespaceInfo {\n pluginName?: string;\n apiName?: string;\n}\n\nconst parsePolicy = (policy: string | PolicyInfo) => {\n if (typeof policy === 'string') {\n return { policyName: policy, config: {} };\n }\n\n const { name, config } = policy;\n return { policyName: name, config };\n};\n\nconst policiesRegistry = () => {\n const policies = new Map<string, Core.Policy>();\n\n const find = (name: string, namespaceInfo?: NamespaceInfo) => {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n // try to resolve a full name to avoid extra prefixing\n const policy = policies.get(name);\n\n if (policy) {\n return policy;\n }\n\n if (pluginName) {\n return policies.get(`${PLUGIN_PREFIX}${pluginName}.${name}`);\n }\n\n if (apiName) {\n return policies.get(`${API_PREFIX}${apiName}.${name}`);\n }\n };\n\n function resolveHandler(policyConfig: PolicyConfig, namespaceInfo?: NamespaceInfo): Core.Policy;\n function resolveHandler(\n policyConfig: PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy[];\n function resolveHandler(\n policyConfig: PolicyConfig | PolicyConfig[],\n namespaceInfo?: NamespaceInfo\n ): Core.Policy | Core.Policy[] {\n if (Array.isArray(policyConfig)) {\n return policyConfig.map((config) => {\n return resolveHandler(config, namespaceInfo);\n });\n }\n\n const { policyName, config } = parsePolicy(policyConfig);\n\n const policy = find(policyName, namespaceInfo);\n\n if (!policy) {\n throw new Error(`Policy ${policyName} not found.`);\n }\n\n if (typeof policy === 'function') {\n return policy;\n }\n\n if (policy.validator) {\n policy.validator(config);\n }\n\n return policy.handler;\n }\n\n return {\n /**\n * Returns this list of registered policies uids\n */\n keys() {\n // Return an array so format stays the same as controllers, services, etc\n return Array.from(policies.keys());\n },\n\n /**\n * Returns the instance of a policy. Instantiate the policy if not already done\n */\n get(name: string, namespaceInfo?: NamespaceInfo) {\n return find(name, namespaceInfo);\n },\n /**\n * Checks if a policy is registered\n */\n has(name: string, namespaceInfo?: NamespaceInfo) {\n const res = find(name, namespaceInfo);\n return !!res;\n },\n\n /**\n * Returns a map with all the policies in a namespace\n */\n getAll(namespace: string) {\n return pickBy(Object.fromEntries(policies), (_, uid) => hasNamespace(uid, namespace));\n },\n\n /**\n * Registers a policy\n */\n set(uid: string, policy: Core.Policy) {\n policies.set(uid, policy);\n return this;\n },\n\n /**\n * Registers a map of policies for a specific namespace\n */\n add(namespace: string, newPolicies: Record<string, Core.Policy>) {\n for (const policyName of Object.keys(newPolicies)) {\n const policy = newPolicies[policyName];\n const uid = addNamespace(policyName, namespace);\n\n if (has(policies, uid)) {\n throw new Error(`Policy ${uid} has already been registered.`);\n }\n\n policies.set(uid, policy);\n }\n },\n\n /**\n * Resolves a list of policies\n */\n resolve(config: PolicyConfig | PolicyConfig[], namespaceInfo?: NamespaceInfo) {\n const { pluginName, apiName } = namespaceInfo ?? {};\n\n return castArray(config).map((policyConfig) => {\n return {\n handler: resolveHandler(policyConfig, { pluginName, apiName }),\n config: (typeof policyConfig === 'object' && policyConfig.config) || {},\n };\n });\n },\n };\n};\n\nexport default policiesRegistry;\n"],"names":["PLUGIN_PREFIX","API_PREFIX","parsePolicy","policy","policyName","config","name","policiesRegistry","policies","Map","find","namespaceInfo","pluginName","apiName","get","resolveHandler","policyConfig","Array","isArray","map","Error","validator","handler","keys","from","has","res","getAll","namespace","pickBy","Object","fromEntries","_","uid","hasNamespace","set","add","newPolicies","addNamespace","resolve","castArray"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
var namespace = require('./namespace.js');
|
|
5
5
|
|
|
6
6
|
const servicesRegistry = (strapi)=>{
|
|
@@ -29,7 +29,7 @@ const servicesRegistry = (strapi)=>{
|
|
|
29
29
|
/**
|
|
30
30
|
* Returns a map with all the services in a namespace
|
|
31
31
|
*/ getAll (namespace$1) {
|
|
32
|
-
const filteredServices =
|
|
32
|
+
const filteredServices = _.pickBy(services, (_, uid)=>namespace.hasNamespace(uid, namespace$1));
|
|
33
33
|
// create lazy accessor to avoid instantiating the services;
|
|
34
34
|
const map = {};
|
|
35
35
|
for (const uid of Object.keys(filteredServices)){
|
|
@@ -55,7 +55,7 @@ const servicesRegistry = (strapi)=>{
|
|
|
55
55
|
for (const serviceName of Object.keys(newServices)){
|
|
56
56
|
const service = newServices[serviceName];
|
|
57
57
|
const uid = namespace.addNamespace(serviceName, namespace$1);
|
|
58
|
-
if (
|
|
58
|
+
if (_.has(services, uid)) {
|
|
59
59
|
throw new Error(`Service ${uid} has already been registered.`);
|
|
60
60
|
}
|
|
61
61
|
services[uid] = service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sources":["../../src/registries/services.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"services.js","sources":["../../src/registries/services.ts"],"sourcesContent":["import { has, pickBy } from 'lodash';\nimport type { Core, UID } from '@strapi/types';\nimport { addNamespace, hasNamespace } from './namespace';\n\nexport type ServiceFactory = (params: { strapi: Core.Strapi }) => Core.Service | Core.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Core.Service>;\nexport type ServiceExtendFn = (service: Core.Service) => Core.Service;\n\nconst servicesRegistry = (strapi: Core.Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy(services, (_, uid) => hasNamespace(uid, namespace));\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(services, uid)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":["servicesRegistry","strapi","services","instantiatedServices","keys","Object","get","uid","service","getAll","namespace","filteredServices","pickBy","_","hasNamespace","map","defineProperty","enumerable","set","add","newServices","serviceName","addNamespace","has","Error","extend","extendFn","currentService","newService"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { has, pickBy } from 'lodash
|
|
1
|
+
import { has, pickBy } from 'lodash';
|
|
2
2
|
import { addNamespace, hasNamespace } from './namespace.mjs';
|
|
3
3
|
|
|
4
4
|
const servicesRegistry = (strapi)=>{
|
|
@@ -27,7 +27,7 @@ const servicesRegistry = (strapi)=>{
|
|
|
27
27
|
/**
|
|
28
28
|
* Returns a map with all the services in a namespace
|
|
29
29
|
*/ getAll (namespace) {
|
|
30
|
-
const filteredServices = pickBy((_, uid)=>hasNamespace(uid, namespace))
|
|
30
|
+
const filteredServices = pickBy(services, (_, uid)=>hasNamespace(uid, namespace));
|
|
31
31
|
// create lazy accessor to avoid instantiating the services;
|
|
32
32
|
const map = {};
|
|
33
33
|
for (const uid of Object.keys(filteredServices)){
|
|
@@ -53,7 +53,7 @@ const servicesRegistry = (strapi)=>{
|
|
|
53
53
|
for (const serviceName of Object.keys(newServices)){
|
|
54
54
|
const service = newServices[serviceName];
|
|
55
55
|
const uid = addNamespace(serviceName, namespace);
|
|
56
|
-
if (has(
|
|
56
|
+
if (has(services, uid)) {
|
|
57
57
|
throw new Error(`Service ${uid} has already been registered.`);
|
|
58
58
|
}
|
|
59
59
|
services[uid] = service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.mjs","sources":["../../src/registries/services.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"services.mjs","sources":["../../src/registries/services.ts"],"sourcesContent":["import { has, pickBy } from 'lodash';\nimport type { Core, UID } from '@strapi/types';\nimport { addNamespace, hasNamespace } from './namespace';\n\nexport type ServiceFactory = (params: { strapi: Core.Strapi }) => Core.Service | Core.Service;\nexport type ServiceFactoryMap = Record<string, ServiceFactory>;\nexport type ServiceMap = Record<string, Core.Service>;\nexport type ServiceExtendFn = (service: Core.Service) => Core.Service;\n\nconst servicesRegistry = (strapi: Core.Strapi) => {\n const services: ServiceFactoryMap = {};\n const instantiatedServices: ServiceMap = {};\n\n return {\n /**\n * Returns this list of registered services uids\n */\n keys() {\n return Object.keys(services);\n },\n\n /**\n * Returns the instance of a service. Instantiate the service if not already done\n */\n get(uid: UID.Service) {\n if (instantiatedServices[uid]) {\n return instantiatedServices[uid];\n }\n\n const service = services[uid];\n if (service) {\n instantiatedServices[uid] = typeof service === 'function' ? service({ strapi }) : service;\n return instantiatedServices[uid];\n }\n },\n\n /**\n * Returns a map with all the services in a namespace\n */\n getAll(namespace: string): ServiceMap {\n const filteredServices = pickBy(services, (_, uid) => hasNamespace(uid, namespace));\n\n // create lazy accessor to avoid instantiating the services;\n const map = {};\n for (const uid of Object.keys(filteredServices)) {\n Object.defineProperty(map, uid, {\n enumerable: true,\n get: () => {\n return this.get(uid as UID.Service);\n },\n });\n }\n\n return map;\n },\n\n /**\n * Registers a service\n */\n set(uid: string, service: ServiceFactory) {\n services[uid] = service;\n delete instantiatedServices[uid];\n return this;\n },\n\n /**\n * Registers a map of services for a specific namespace\n */\n add(namespace: string, newServices: ServiceFactoryMap) {\n for (const serviceName of Object.keys(newServices)) {\n const service = newServices[serviceName];\n const uid = addNamespace(serviceName, namespace);\n\n if (has(services, uid)) {\n throw new Error(`Service ${uid} has already been registered.`);\n }\n services[uid] = service;\n }\n\n return this;\n },\n\n /**\n * Wraps a service to extend it\n */\n extend(uid: UID.Service, extendFn: ServiceExtendFn) {\n const currentService = this.get(uid);\n\n if (!currentService) {\n throw new Error(`Service ${uid} doesn't exist`);\n }\n\n const newService = extendFn(currentService);\n instantiatedServices[uid] = newService;\n\n return this;\n },\n };\n};\n\nexport default servicesRegistry;\n"],"names":["servicesRegistry","strapi","services","instantiatedServices","keys","Object","get","uid","service","getAll","namespace","filteredServices","pickBy","_","hasNamespace","map","defineProperty","enumerable","set","add","newServices","serviceName","addNamespace","has","Error","extend","extendFn","currentService","newService"],"mappings":";;;AASA,MAAMA,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,IAAA,MAAMC,WAA8B,EAAC;AACrC,IAAA,MAAMC,uBAAmC,EAAC;IAE1C,OAAO;AACL;;QAGAC,IAAAA,CAAAA,GAAAA;YACE,OAAOC,MAAAA,CAAOD,IAAI,CAACF,QAAAA,CAAAA;AACrB,QAAA,CAAA;AAEA;;AAEC,QACDI,KAAIC,GAAgB,EAAA;YAClB,IAAIJ,oBAAoB,CAACI,GAAAA,CAAI,EAAE;gBAC7B,OAAOJ,oBAAoB,CAACI,GAAAA,CAAI;AAClC,YAAA;YAEA,MAAMC,OAAAA,GAAUN,QAAQ,CAACK,GAAAA,CAAI;AAC7B,YAAA,IAAIC,OAAAA,EAAS;AACXL,gBAAAA,oBAAoB,CAACI,GAAAA,CAAI,GAAG,OAAOC,OAAAA,KAAY,aAAaA,OAAAA,CAAQ;AAAEP,oBAAAA;iBAAO,CAAA,GAAKO,OAAAA;gBAClF,OAAOL,oBAAoB,CAACI,GAAAA,CAAI;AAClC,YAAA;AACF,QAAA,CAAA;AAEA;;AAEC,QACDE,QAAOC,SAAiB,EAAA;AACtB,YAAA,MAAMC,mBAAmBC,MAAAA,CAAOV,QAAAA,EAAU,CAACW,CAAAA,EAAGN,GAAAA,GAAQO,aAAaP,GAAAA,EAAKG,SAAAA,CAAAA,CAAAA;;AAGxE,YAAA,MAAMK,MAAM,EAAC;AACb,YAAA,KAAK,MAAMR,GAAAA,IAAOF,MAAAA,CAAOD,IAAI,CAACO,gBAAAA,CAAAA,CAAmB;gBAC/CN,MAAAA,CAAOW,cAAc,CAACD,GAAAA,EAAKR,GAAAA,EAAK;oBAC9BU,UAAAA,EAAY,IAAA;oBACZX,GAAAA,EAAK,IAAA;wBACH,OAAO,IAAI,CAACA,GAAG,CAACC,GAAAA,CAAAA;AAClB,oBAAA;AACF,iBAAA,CAAA;AACF,YAAA;YAEA,OAAOQ,GAAAA;AACT,QAAA,CAAA;AAEA;;QAGAG,GAAAA,CAAAA,CAAIX,GAAW,EAAEC,OAAuB,EAAA;YACtCN,QAAQ,CAACK,IAAI,GAAGC,OAAAA;YAChB,OAAOL,oBAAoB,CAACI,GAAAA,CAAI;AAChC,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAY,GAAAA,CAAAA,CAAIT,SAAiB,EAAEU,WAA8B,EAAA;AACnD,YAAA,KAAK,MAAMC,WAAAA,IAAehB,MAAAA,CAAOD,IAAI,CAACgB,WAAAA,CAAAA,CAAc;gBAClD,MAAMZ,OAAAA,GAAUY,WAAW,CAACC,WAAAA,CAAY;gBACxC,MAAMd,GAAAA,GAAMe,aAAaD,WAAAA,EAAaX,SAAAA,CAAAA;gBAEtC,IAAIa,GAAAA,CAAIrB,UAAUK,GAAAA,CAAAA,EAAM;AACtB,oBAAA,MAAM,IAAIiB,KAAAA,CAAM,CAAC,QAAQ,EAAEjB,GAAAA,CAAI,6BAA6B,CAAC,CAAA;AAC/D,gBAAA;gBACAL,QAAQ,CAACK,IAAI,GAAGC,OAAAA;AAClB,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAiB,MAAAA,CAAAA,CAAOlB,GAAgB,EAAEmB,QAAyB,EAAA;AAChD,YAAA,MAAMC,cAAAA,GAAiB,IAAI,CAACrB,GAAG,CAACC,GAAAA,CAAAA;AAEhC,YAAA,IAAI,CAACoB,cAAAA,EAAgB;AACnB,gBAAA,MAAM,IAAIH,KAAAA,CAAM,CAAC,QAAQ,EAAEjB,GAAAA,CAAI,cAAc,CAAC,CAAA;AAChD,YAAA;AAEA,YAAA,MAAMqB,aAAaF,QAAAA,CAASC,cAAAA,CAAAA;YAC5BxB,oBAAoB,CAACI,IAAI,GAAGqB,UAAAA;AAE5B,YAAA,OAAO,IAAI;AACb,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var assert = require('assert/strict');
|
|
4
|
-
var
|
|
4
|
+
var _ = require('lodash');
|
|
5
5
|
var strapiUtils = require('@strapi/utils');
|
|
6
6
|
|
|
7
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -10,9 +10,9 @@ var assert__default = /*#__PURE__*/_interopDefault(assert);
|
|
|
10
10
|
|
|
11
11
|
const INVALID_STRATEGY_MSG = 'Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}';
|
|
12
12
|
const validStrategy = (strategy)=>{
|
|
13
|
-
assert__default.default(
|
|
13
|
+
assert__default.default(_.has(strategy, 'authenticate'), INVALID_STRATEGY_MSG);
|
|
14
14
|
assert__default.default(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);
|
|
15
|
-
if (
|
|
15
|
+
if (_.has(strategy, 'verify')) {
|
|
16
16
|
assert__default.default(typeof strategy.verify === 'function', INVALID_STRATEGY_MSG);
|
|
17
17
|
}
|
|
18
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash';\n\nimport { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport type { ParameterizedContext } from 'koa';\n\ninterface AuthenticationResponse {\n authenticated?: boolean;\n credentials?: unknown;\n ability?: unknown;\n error?: Error | null;\n}\n\ninterface AuthenticationInfo {\n strategy: Strategy;\n credentials: unknown;\n ability: unknown;\n}\n\ninterface Strategy {\n name: string;\n authenticate: (ctx: ParameterizedContext) => Promise<AuthenticationResponse>;\n verify?: (auth: AuthenticationInfo, config: Core.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Core.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Core.RouteConfig['auth']) => Promise<any>;\n}\n\nconst INVALID_STRATEGY_MSG =\n 'Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}';\n\nconst validStrategy = (strategy: Strategy) => {\n assert(has(strategy, 'authenticate'), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has(strategy, 'verify')) {\n assert(typeof strategy.verify === 'function', INVALID_STRATEGY_MSG);\n }\n};\n\nconst createAuthentication = (): Authentication => {\n const strategies: Record<string, Strategy[]> = {};\n\n return {\n register(type, strategy) {\n validStrategy(strategy);\n\n if (!strategies[type]) {\n strategies[type] = [];\n }\n\n strategies[type].push(strategy);\n\n return this;\n },\n\n async authenticate(ctx, next) {\n const route: Core.Route = ctx.state.route;\n\n // use route strategy\n const config = route?.config?.auth;\n\n if (config === false) {\n return next();\n }\n\n const routeStrategies = route.info.type ? strategies[route.info.type] : [];\n const configStrategies = (config?.strategies ?? routeStrategies ?? []) as Array<\n string | Strategy\n >;\n\n const strategiesToUse: Strategy[] = configStrategies.reduce(\n (acc, strategy: string | Strategy) => {\n // Resolve by strategy name\n if (typeof strategy === 'string') {\n const routeStrategy = routeStrategies.find((rs) => rs.name === strategy);\n\n if (routeStrategy) {\n acc.push(routeStrategy);\n }\n }\n\n // Use the given strategy as is\n else if (typeof strategy === 'object') {\n validStrategy(strategy);\n\n acc.push(strategy);\n }\n\n return acc;\n },\n [] as Strategy[]\n );\n\n for (const strategy of strategiesToUse) {\n const result = await strategy.authenticate(ctx);\n\n const { authenticated = false, credentials, ability = null, error = null } = result || {};\n\n if (error !== null) {\n return ctx.unauthorized(error);\n }\n\n if (authenticated) {\n ctx.state.isAuthenticated = true;\n ctx.state.auth = {\n strategy,\n credentials,\n ability,\n };\n\n return next();\n }\n }\n\n return ctx.unauthorized('Missing or invalid credentials');\n },\n\n async verify(auth, config = {}) {\n if (config === false) {\n return;\n }\n\n if (!auth) {\n throw new errors.UnauthorizedError();\n }\n\n if (typeof auth.strategy.verify === 'function') {\n return auth.strategy.verify(auth, config);\n }\n },\n };\n};\n\nexport default createAuthentication;\n"],"names":["INVALID_STRATEGY_MSG","validStrategy","strategy","assert","has","authenticate","verify","createAuthentication","strategies","register","type","push","ctx","next","route","state","config","auth","routeStrategies","info","configStrategies","strategiesToUse","reduce","acc","routeStrategy","find","rs","name","result","authenticated","credentials","ability","error","unauthorized","isAuthenticated","errors","UnauthorizedError"],"mappings":";;;;;;;;;;AAgCA,MAAMA,oBAAAA,GACJ,qHAAA;AAEF,MAAMC,gBAAgB,CAACC,QAAAA,GAAAA;IACrBC,uBAAAA,CAAOC,KAAAA,CAAIF,UAAU,cAAA,CAAA,EAAiBF,oBAAAA,CAAAA;AACtCG,IAAAA,uBAAAA,CAAO,OAAOD,QAAAA,CAASG,YAAY,KAAK,UAAA,EAAYL,oBAAAA,CAAAA;IAEpD,IAAII,KAAAA,CAAIF,UAAU,QAAA,CAAA,EAAW;AAC3BC,QAAAA,uBAAAA,CAAO,OAAOD,QAAAA,CAASI,MAAM,KAAK,UAAA,EAAYN,oBAAAA,CAAAA;AAChD,IAAA;AACF,CAAA;AAEA,MAAMO,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,MAAMC,aAAyC,EAAC;IAEhD,OAAO;QACLC,QAAAA,CAAAA,CAASC,IAAI,EAAER,QAAQ,EAAA;YACrBD,aAAAA,CAAcC,QAAAA,CAAAA;AAEd,YAAA,IAAI,CAACM,UAAU,CAACE,IAAAA,CAAK,EAAE;gBACrBF,UAAU,CAACE,IAAAA,CAAK,GAAG,EAAE;AACvB,YAAA;AAEAF,YAAAA,UAAU,CAACE,IAAAA,CAAK,CAACC,IAAI,CAACT,QAAAA,CAAAA;AAEtB,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;QAEA,MAAMG,YAAAA,CAAAA,CAAaO,GAAG,EAAEC,IAAI,EAAA;AAC1B,YAAA,MAAMC,KAAAA,GAAoBF,GAAAA,CAAIG,KAAK,CAACD,KAAK;;YAGzC,MAAME,MAAAA,GAASF,OAAOE,MAAAA,EAAQC,IAAAA;AAE9B,YAAA,IAAID,WAAW,KAAA,EAAO;gBACpB,OAAOH,IAAAA,EAAAA;AACT,YAAA;AAEA,YAAA,MAAMK,eAAAA,GAAkBJ,KAAAA,CAAMK,IAAI,CAACT,IAAI,GAAGF,UAAU,CAACM,KAAAA,CAAMK,IAAI,CAACT,IAAI,CAAC,GAAG,EAAE;AAC1E,YAAA,MAAMU,gBAAAA,GAAoBJ,MAAAA,EAAQR,UAAAA,IAAcU,eAAAA,IAAmB,EAAE;AAIrE,YAAA,MAAMG,eAAAA,GAA8BD,gBAAAA,CAAiBE,MAAM,CACzD,CAACC,GAAAA,EAAKrB,QAAAA,GAAAA;;gBAEJ,IAAI,OAAOA,aAAa,QAAA,EAAU;oBAChC,MAAMsB,aAAAA,GAAgBN,gBAAgBO,IAAI,CAAC,CAACC,EAAAA,GAAOA,EAAAA,CAAGC,IAAI,KAAKzB,QAAAA,CAAAA;AAE/D,oBAAA,IAAIsB,aAAAA,EAAe;AACjBD,wBAAAA,GAAAA,CAAIZ,IAAI,CAACa,aAAAA,CAAAA;AACX,oBAAA;gBACF,CAAA,MAGK,IAAI,OAAOtB,QAAAA,KAAa,QAAA,EAAU;oBACrCD,aAAAA,CAAcC,QAAAA,CAAAA;AAEdqB,oBAAAA,GAAAA,CAAIZ,IAAI,CAACT,QAAAA,CAAAA;AACX,gBAAA;gBAEA,OAAOqB,GAAAA;AACT,YAAA,CAAA,EACA,EAAE,CAAA;YAGJ,KAAK,MAAMrB,YAAYmB,eAAAA,CAAiB;AACtC,gBAAA,MAAMO,MAAAA,GAAS,MAAM1B,QAAAA,CAASG,YAAY,CAACO,GAAAA,CAAAA;AAE3C,gBAAA,MAAM,EAAEiB,aAAAA,GAAgB,KAAK,EAAEC,WAAW,EAAEC,OAAAA,GAAU,IAAI,EAAEC,KAAAA,GAAQ,IAAI,EAAE,GAAGJ,UAAU,EAAC;AAExF,gBAAA,IAAII,UAAU,IAAA,EAAM;oBAClB,OAAOpB,GAAAA,CAAIqB,YAAY,CAACD,KAAAA,CAAAA;AAC1B,gBAAA;AAEA,gBAAA,IAAIH,aAAAA,EAAe;oBACjBjB,GAAAA,CAAIG,KAAK,CAACmB,eAAe,GAAG,IAAA;oBAC5BtB,GAAAA,CAAIG,KAAK,CAACE,IAAI,GAAG;AACff,wBAAAA,QAAAA;AACA4B,wBAAAA,WAAAA;AACAC,wBAAAA;AACF,qBAAA;oBAEA,OAAOlB,IAAAA,EAAAA;AACT,gBAAA;AACF,YAAA;YAEA,OAAOD,GAAAA,CAAIqB,YAAY,CAAC,gCAAA,CAAA;AAC1B,QAAA,CAAA;AAEA,QAAA,MAAM3B,MAAAA,CAAAA,CAAOW,IAAI,EAAED,MAAAA,GAAS,EAAE,EAAA;AAC5B,YAAA,IAAIA,WAAW,KAAA,EAAO;AACpB,gBAAA;AACF,YAAA;AAEA,YAAA,IAAI,CAACC,IAAAA,EAAM;gBACT,MAAM,IAAIkB,mBAAOC,iBAAiB,EAAA;AACpC,YAAA;AAEA,YAAA,IAAI,OAAOnB,IAAAA,CAAKf,QAAQ,CAACI,MAAM,KAAK,UAAA,EAAY;AAC9C,gBAAA,OAAOW,IAAAA,CAAKf,QAAQ,CAACI,MAAM,CAACW,IAAAA,EAAMD,MAAAA,CAAAA;AACpC,YAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import assert from 'assert/strict';
|
|
2
|
-
import { has } from 'lodash
|
|
2
|
+
import { has } from 'lodash';
|
|
3
3
|
import { errors } from '@strapi/utils';
|
|
4
4
|
|
|
5
5
|
const INVALID_STRATEGY_MSG = 'Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}';
|
|
6
6
|
const validStrategy = (strategy)=>{
|
|
7
|
-
assert(has('authenticate'
|
|
7
|
+
assert(has(strategy, 'authenticate'), INVALID_STRATEGY_MSG);
|
|
8
8
|
assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);
|
|
9
|
-
if (has('verify'
|
|
9
|
+
if (has(strategy, 'verify')) {
|
|
10
10
|
assert(typeof strategy.verify === 'function', INVALID_STRATEGY_MSG);
|
|
11
11
|
}
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash';\n\nimport { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport type { ParameterizedContext } from 'koa';\n\ninterface AuthenticationResponse {\n authenticated?: boolean;\n credentials?: unknown;\n ability?: unknown;\n error?: Error | null;\n}\n\ninterface AuthenticationInfo {\n strategy: Strategy;\n credentials: unknown;\n ability: unknown;\n}\n\ninterface Strategy {\n name: string;\n authenticate: (ctx: ParameterizedContext) => Promise<AuthenticationResponse>;\n verify?: (auth: AuthenticationInfo, config: Core.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Core.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Core.RouteConfig['auth']) => Promise<any>;\n}\n\nconst INVALID_STRATEGY_MSG =\n 'Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}';\n\nconst validStrategy = (strategy: Strategy) => {\n assert(has(strategy, 'authenticate'), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has(strategy, 'verify')) {\n assert(typeof strategy.verify === 'function', INVALID_STRATEGY_MSG);\n }\n};\n\nconst createAuthentication = (): Authentication => {\n const strategies: Record<string, Strategy[]> = {};\n\n return {\n register(type, strategy) {\n validStrategy(strategy);\n\n if (!strategies[type]) {\n strategies[type] = [];\n }\n\n strategies[type].push(strategy);\n\n return this;\n },\n\n async authenticate(ctx, next) {\n const route: Core.Route = ctx.state.route;\n\n // use route strategy\n const config = route?.config?.auth;\n\n if (config === false) {\n return next();\n }\n\n const routeStrategies = route.info.type ? strategies[route.info.type] : [];\n const configStrategies = (config?.strategies ?? routeStrategies ?? []) as Array<\n string | Strategy\n >;\n\n const strategiesToUse: Strategy[] = configStrategies.reduce(\n (acc, strategy: string | Strategy) => {\n // Resolve by strategy name\n if (typeof strategy === 'string') {\n const routeStrategy = routeStrategies.find((rs) => rs.name === strategy);\n\n if (routeStrategy) {\n acc.push(routeStrategy);\n }\n }\n\n // Use the given strategy as is\n else if (typeof strategy === 'object') {\n validStrategy(strategy);\n\n acc.push(strategy);\n }\n\n return acc;\n },\n [] as Strategy[]\n );\n\n for (const strategy of strategiesToUse) {\n const result = await strategy.authenticate(ctx);\n\n const { authenticated = false, credentials, ability = null, error = null } = result || {};\n\n if (error !== null) {\n return ctx.unauthorized(error);\n }\n\n if (authenticated) {\n ctx.state.isAuthenticated = true;\n ctx.state.auth = {\n strategy,\n credentials,\n ability,\n };\n\n return next();\n }\n }\n\n return ctx.unauthorized('Missing or invalid credentials');\n },\n\n async verify(auth, config = {}) {\n if (config === false) {\n return;\n }\n\n if (!auth) {\n throw new errors.UnauthorizedError();\n }\n\n if (typeof auth.strategy.verify === 'function') {\n return auth.strategy.verify(auth, config);\n }\n },\n };\n};\n\nexport default createAuthentication;\n"],"names":["INVALID_STRATEGY_MSG","validStrategy","strategy","assert","has","authenticate","verify","createAuthentication","strategies","register","type","push","ctx","next","route","state","config","auth","routeStrategies","info","configStrategies","strategiesToUse","reduce","acc","routeStrategy","find","rs","name","result","authenticated","credentials","ability","error","unauthorized","isAuthenticated","errors","UnauthorizedError"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
|
|
5
5
|
const coreStoreModel = {
|
|
6
6
|
uid: 'strapi::core-store',
|
|
@@ -90,7 +90,7 @@ const createCoreStore = ({ db })=>{
|
|
|
90
90
|
id: data.id
|
|
91
91
|
},
|
|
92
92
|
data: {
|
|
93
|
-
value: JSON.stringify(value) ||
|
|
93
|
+
value: JSON.stringify(value) || _.toString(value),
|
|
94
94
|
type: typeof value
|
|
95
95
|
}
|
|
96
96
|
});
|
|
@@ -98,7 +98,7 @@ const createCoreStore = ({ db })=>{
|
|
|
98
98
|
return db.query('strapi::core-store').create({
|
|
99
99
|
data: {
|
|
100
100
|
...where,
|
|
101
|
-
value: JSON.stringify(value) ||
|
|
101
|
+
value: JSON.stringify(value) || _.toString(value),
|
|
102
102
|
type: typeof value
|
|
103
103
|
}
|
|
104
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash
|
|
1
|
+
{"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash
|
|
1
|
+
{"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAS7C,KAAK,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AA2JpC,QAAA,MAAM,iBAAiB;gBAoGR,KAAK;iBAuCH,MAAM;;;;;CAqCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
package/dist/services/cron.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var fp = require('lodash/fp');
|
|
4
|
-
|
|
5
3
|
let lazyCroner;
|
|
6
4
|
const getCroner = ()=>{
|
|
7
5
|
if (!lazyCroner) {
|
|
@@ -231,11 +229,11 @@ const createCronService = ()=>{
|
|
|
231
229
|
let fn;
|
|
232
230
|
let options;
|
|
233
231
|
let taskName;
|
|
234
|
-
if (
|
|
232
|
+
if (typeof taskValue === 'function') {
|
|
235
233
|
taskName = null;
|
|
236
234
|
fn = taskValue.bind(tasks);
|
|
237
235
|
options = taskExpression;
|
|
238
|
-
} else if (
|
|
236
|
+
} else if (typeof taskValue.task === 'function') {
|
|
239
237
|
taskName = taskExpression;
|
|
240
238
|
fn = taskValue.task.bind(taskValue);
|
|
241
239
|
options = taskValue.options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","isFunction","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (typeof taskValue === 'function') {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (typeof taskValue.task === 'function') {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
|
package/dist/services/cron.mjs
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { isFunction } from 'lodash/fp';
|
|
2
|
-
|
|
3
1
|
let lazyCroner;
|
|
4
2
|
const getCroner = ()=>{
|
|
5
3
|
if (!lazyCroner) {
|
|
@@ -229,11 +227,11 @@ const createCronService = ()=>{
|
|
|
229
227
|
let fn;
|
|
230
228
|
let options;
|
|
231
229
|
let taskName;
|
|
232
|
-
if (
|
|
230
|
+
if (typeof taskValue === 'function') {
|
|
233
231
|
taskName = null;
|
|
234
232
|
fn = taskValue.bind(tasks);
|
|
235
233
|
options = taskExpression;
|
|
236
|
-
} else if (
|
|
234
|
+
} else if (typeof taskValue.task === 'function') {
|
|
237
235
|
taskName = taskExpression;
|
|
238
236
|
fn = taskValue.task.bind(taskValue);
|
|
239
237
|
options = taskValue.options;
|