@strapi/strapi 4.26.1 → 4.26.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs.map +1 -1
- package/dist/commands/actions/admin/create-user/action.js.map +1 -1
- package/dist/commands/actions/admin/reset-user-password/action.js.map +1 -1
- package/dist/commands/actions/admin/reset-user-password/command.js.map +1 -1
- package/dist/commands/actions/components/list/action.js.map +1 -1
- package/dist/commands/actions/components/list/command.js.map +1 -1
- package/dist/commands/actions/configuration/dump/action.js.map +1 -1
- package/dist/commands/actions/configuration/dump/command.js.map +1 -1
- package/dist/commands/actions/configuration/restore/action.js +1 -2
- package/dist/commands/actions/configuration/restore/action.js.map +1 -1
- package/dist/commands/actions/configuration/restore/command.js.map +1 -1
- package/dist/commands/actions/console/action.js.map +1 -1
- package/dist/commands/actions/console/command.js.map +1 -1
- package/dist/commands/actions/content-types/list/action.js.map +1 -1
- package/dist/commands/actions/content-types/list/command.js.map +1 -1
- package/dist/commands/actions/controllers/list/action.js.map +1 -1
- package/dist/commands/actions/controllers/list/command.js.map +1 -1
- package/dist/commands/actions/generate/command.js.map +1 -1
- package/dist/commands/actions/hooks/list/action.js.map +1 -1
- package/dist/commands/actions/hooks/list/command.js.map +1 -1
- package/dist/commands/actions/install/action.js.map +1 -1
- package/dist/commands/actions/install/command.js.map +1 -1
- package/dist/commands/actions/middlewares/list/action.js.map +1 -1
- package/dist/commands/actions/middlewares/list/command.js.map +1 -1
- package/dist/commands/actions/new/action.js.map +1 -1
- package/dist/commands/actions/new/command.js.map +1 -1
- package/dist/commands/actions/plugin/build-command/action.js.map +1 -1
- package/dist/commands/actions/plugin/build-command/command.js.map +1 -1
- package/dist/commands/actions/plugin/init/action.js.map +1 -1
- package/dist/commands/actions/plugin/init/command.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/admin.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/server.js.map +1 -1
- package/dist/commands/actions/plugin/init/files/typescript.js.map +1 -1
- package/dist/commands/actions/plugin/link-watch/action.js.map +1 -1
- package/dist/commands/actions/plugin/verify/action.js.map +1 -1
- package/dist/commands/actions/plugin/watch/action.js.map +1 -1
- package/dist/commands/actions/policies/list/action.js.map +1 -1
- package/dist/commands/actions/policies/list/command.js.map +1 -1
- package/dist/commands/actions/report/action.js.map +1 -1
- package/dist/commands/actions/report/command.js.map +1 -1
- package/dist/commands/actions/routes/list/action.js.map +1 -1
- package/dist/commands/actions/routes/list/command.js.map +1 -1
- package/dist/commands/actions/services/list/action.js.map +1 -1
- package/dist/commands/actions/services/list/command.js.map +1 -1
- package/dist/commands/actions/start/action.js.map +1 -1
- package/dist/commands/actions/start/command.js.map +1 -1
- package/dist/commands/actions/telemetry/disable/action.js.map +1 -1
- package/dist/commands/actions/telemetry/disable/command.js.map +1 -1
- package/dist/commands/actions/telemetry/enable/action.js.map +1 -1
- package/dist/commands/actions/telemetry/enable/command.js.map +1 -1
- package/dist/commands/actions/templates/generate/action.js.map +1 -1
- package/dist/commands/actions/templates/generate/command.js.map +1 -1
- package/dist/commands/actions/ts/generate-types/action.js.map +1 -1
- package/dist/commands/actions/ts/generate-types/command.js.map +1 -1
- package/dist/commands/actions/uninstall/action.js.map +1 -1
- package/dist/commands/actions/uninstall/command.js.map +1 -1
- package/dist/commands/actions/version/command.js.map +1 -1
- package/dist/commands/actions/watch-admin/action.js.map +1 -1
- package/dist/commands/actions/watch-admin/command.js.map +1 -1
- package/dist/commands/index.js +60 -60
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/utils/commander.js.map +1 -1
- package/dist/commands/utils/helpers.js.map +1 -1
- package/dist/commands/utils/logger.js +1 -2
- package/dist/commands/utils/logger.js.map +1 -1
- package/dist/commands/utils/pkg.js +1 -2
- package/dist/commands/utils/pkg.js.map +1 -1
- package/dist/commands/utils/tsconfig.js.map +1 -1
- package/dist/compile.js.map +1 -1
- package/dist/compile.mjs.map +1 -1
- package/dist/container.js.map +1 -1
- package/dist/container.mjs.map +1 -1
- package/dist/core/app-configuration/config-loader.js +1 -2
- package/dist/core/app-configuration/config-loader.js.map +1 -1
- package/dist/core/app-configuration/config-loader.mjs +1 -2
- package/dist/core/app-configuration/config-loader.mjs.map +1 -1
- package/dist/core/app-configuration/index.js.map +1 -1
- package/dist/core/app-configuration/index.mjs.map +1 -1
- package/dist/core/app-configuration/load-config-file.js.map +1 -1
- package/dist/core/app-configuration/load-config-file.mjs +1 -1
- package/dist/core/app-configuration/load-config-file.mjs.map +1 -1
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/core/bootstrap.mjs.map +1 -1
- package/dist/core/domain/content-type/index.js.map +1 -1
- package/dist/core/domain/content-type/index.mjs.map +1 -1
- package/dist/core/domain/content-type/validator.js.map +1 -1
- package/dist/core/domain/content-type/validator.mjs.map +1 -1
- package/dist/core/domain/module/index.js.map +1 -1
- package/dist/core/domain/module/index.mjs.map +1 -1
- package/dist/core/domain/module/validation.js.map +1 -1
- package/dist/core/domain/module/validation.mjs.map +1 -1
- package/dist/core/loaders/admin.js.map +1 -1
- package/dist/core/loaders/admin.mjs.map +1 -1
- package/dist/core/loaders/apis.js.map +1 -1
- package/dist/core/loaders/apis.mjs.map +1 -1
- package/dist/core/loaders/components.js.map +1 -1
- package/dist/core/loaders/components.mjs.map +1 -1
- package/dist/core/loaders/index.js.map +1 -1
- package/dist/core/loaders/index.mjs.map +1 -1
- package/dist/core/loaders/middlewares.js.map +1 -1
- package/dist/core/loaders/middlewares.mjs.map +1 -1
- package/dist/core/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/core/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/core/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/core/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/core/loaders/plugins/index.js.map +1 -1
- package/dist/core/loaders/plugins/index.mjs +1 -1
- package/dist/core/loaders/plugins/index.mjs.map +1 -1
- package/dist/core/loaders/policies.js.map +1 -1
- package/dist/core/loaders/policies.mjs.map +1 -1
- package/dist/core/loaders/sanitizers.js.map +1 -1
- package/dist/core/loaders/sanitizers.mjs.map +1 -1
- package/dist/core/loaders/src-index.js.map +1 -1
- package/dist/core/loaders/src-index.mjs.map +1 -1
- package/dist/core/loaders/validators.js.map +1 -1
- package/dist/core/loaders/validators.mjs.map +1 -1
- package/dist/core/registries/apis.js.map +1 -1
- package/dist/core/registries/apis.mjs.map +1 -1
- package/dist/core/registries/config.js.map +1 -1
- package/dist/core/registries/config.mjs.map +1 -1
- package/dist/core/registries/content-types.js.map +1 -1
- package/dist/core/registries/content-types.mjs +2 -2
- package/dist/core/registries/content-types.mjs.map +1 -1
- package/dist/core/registries/controllers.js.map +1 -1
- package/dist/core/registries/controllers.mjs +2 -2
- package/dist/core/registries/controllers.mjs.map +1 -1
- package/dist/core/registries/custom-fields.js.map +1 -1
- package/dist/core/registries/custom-fields.mjs.map +1 -1
- package/dist/core/registries/hooks.js.map +1 -1
- package/dist/core/registries/hooks.mjs +1 -1
- package/dist/core/registries/hooks.mjs.map +1 -1
- package/dist/core/registries/middlewares.js.map +1 -1
- package/dist/core/registries/middlewares.mjs +2 -2
- package/dist/core/registries/middlewares.mjs.map +1 -1
- package/dist/core/registries/modules.js.map +1 -1
- package/dist/core/registries/modules.mjs +1 -1
- package/dist/core/registries/modules.mjs.map +1 -1
- package/dist/core/registries/plugins.js.map +1 -1
- package/dist/core/registries/plugins.mjs.map +1 -1
- package/dist/core/registries/policies.js.map +1 -1
- package/dist/core/registries/policies.mjs +2 -2
- package/dist/core/registries/policies.mjs.map +1 -1
- package/dist/core/registries/sanitizers.js.map +1 -1
- package/dist/core/registries/sanitizers.mjs.map +1 -1
- package/dist/core/registries/services.js.map +1 -1
- package/dist/core/registries/services.mjs +2 -2
- package/dist/core/registries/services.mjs.map +1 -1
- package/dist/core/registries/validators.js.map +1 -1
- package/dist/core/registries/validators.mjs.map +1 -1
- package/dist/core/utils.js.map +1 -1
- package/dist/core/utils.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +1 -1
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/get-fetch-params.js.map +1 -1
- package/dist/core-api/service/get-fetch-params.mjs.map +1 -1
- package/dist/core-api/service/index.js.map +1 -1
- package/dist/core-api/service/index.mjs.map +1 -1
- package/dist/core-api/service/pagination.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +1 -1
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/core-api/service/single-type.js +1 -2
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +2 -3
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +1 -1
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.js +4 -4
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs.map +1 -1
- package/dist/load/filepath-to-prop-path.js.map +1 -1
- package/dist/load/load-files.js +1 -2
- package/dist/load/load-files.js.map +1 -1
- package/dist/load/load-files.mjs +1 -2
- package/dist/load/load-files.mjs.map +1 -1
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.js.map +1 -1
- package/dist/middlewares/favicon.mjs.map +1 -1
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/logger.js.map +1 -1
- package/dist/middlewares/logger.mjs.map +1 -1
- package/dist/middlewares/powered-by.js.map +1 -1
- package/dist/middlewares/powered-by.mjs.map +1 -1
- package/dist/middlewares/public/index.js +1 -2
- package/dist/middlewares/public/index.js.map +1 -1
- package/dist/middlewares/public/index.mjs +1 -2
- package/dist/middlewares/public/index.mjs.map +1 -1
- package/dist/middlewares/public/serve-static.js.map +1 -1
- package/dist/middlewares/public/serve-static.mjs.map +1 -1
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/query.mjs.map +1 -1
- package/dist/middlewares/response-time.js.map +1 -1
- package/dist/middlewares/response-time.mjs.map +1 -1
- package/dist/middlewares/responses.js.map +1 -1
- package/dist/middlewares/responses.mjs.map +1 -1
- package/dist/middlewares/security.js.map +1 -1
- package/dist/middlewares/security.mjs.map +1 -1
- package/dist/middlewares/session.js.map +1 -1
- package/dist/middlewares/session.mjs.map +1 -1
- package/dist/migrations/draft-publish.js.map +1 -1
- package/dist/migrations/draft-publish.mjs.map +1 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auth/index.mjs.map +1 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/engine.js.map +1 -1
- package/dist/services/content-api/permissions/engine.mjs.map +1 -1
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/providers/action.js.map +1 -1
- package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/cron.js +1 -2
- package/dist/services/cron.js.map +1 -1
- package/dist/services/cron.mjs +1 -2
- package/dist/services/cron.mjs.map +1 -1
- package/dist/services/custom-fields.js.map +1 -1
- package/dist/services/custom-fields.mjs.map +1 -1
- package/dist/services/entity-service/attributes/index.js.map +1 -1
- package/dist/services/entity-service/attributes/index.mjs.map +1 -1
- package/dist/services/entity-service/attributes/transforms.js.map +1 -1
- package/dist/services/entity-service/attributes/transforms.mjs.map +1 -1
- package/dist/services/entity-service/components.js.map +1 -1
- package/dist/services/entity-service/components.mjs +1 -1
- package/dist/services/entity-service/components.mjs.map +1 -1
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-service/index.mjs +2 -2
- package/dist/services/entity-service/index.mjs.map +1 -1
- package/dist/services/entity-service/params.js.map +1 -1
- package/dist/services/entity-service/params.mjs.map +1 -1
- package/dist/services/entity-validator/blocks-validator.js.map +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +1 -1
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/errors.js.map +1 -1
- package/dist/services/errors.mjs.map +1 -1
- package/dist/services/event-hub.js.map +1 -1
- package/dist/services/event-hub.mjs.map +1 -1
- package/dist/services/features.js.map +1 -1
- package/dist/services/features.mjs.map +1 -1
- package/dist/services/fs.js.map +1 -1
- package/dist/services/fs.mjs.map +1 -1
- package/dist/services/metrics/admin-user-hash.js.map +1 -1
- package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
- package/dist/services/metrics/index.js +1 -2
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs +1 -2
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/is-truthy.js.map +1 -1
- package/dist/services/metrics/is-truthy.mjs.map +1 -1
- package/dist/services/metrics/middleware.js.map +1 -1
- package/dist/services/metrics/middleware.mjs.map +1 -1
- package/dist/services/metrics/rate-limiter.js.map +1 -1
- package/dist/services/metrics/rate-limiter.mjs.map +1 -1
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/request-context.js.map +1 -1
- package/dist/services/request-context.mjs.map +1 -1
- package/dist/services/server/admin-api.js.map +1 -1
- package/dist/services/server/admin-api.mjs.map +1 -1
- package/dist/services/server/api.js.map +1 -1
- package/dist/services/server/api.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.js +1 -1
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +1 -1
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/server/content-api.js.map +1 -1
- package/dist/services/server/content-api.mjs.map +1 -1
- package/dist/services/server/http-server.js.map +1 -1
- package/dist/services/server/http-server.mjs.map +1 -1
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/index.mjs.map +1 -1
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/middleware.mjs.map +1 -1
- package/dist/services/server/policy.js.map +1 -1
- package/dist/services/server/policy.mjs.map +1 -1
- package/dist/services/server/register-middlewares.js.map +1 -1
- package/dist/services/server/register-middlewares.mjs.map +1 -1
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/register-routes.mjs.map +1 -1
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/server/routing.mjs.map +1 -1
- package/dist/services/utils/dynamic-zones.js.map +1 -1
- package/dist/services/utils/dynamic-zones.mjs.map +1 -1
- package/dist/services/utils/upload-files.js +2 -4
- package/dist/services/utils/upload-files.js.map +1 -1
- package/dist/services/utils/upload-files.mjs +2 -4
- package/dist/services/utils/upload-files.mjs.map +1 -1
- package/dist/services/webhook-runner.js.map +1 -1
- package/dist/services/webhook-runner.mjs.map +1 -1
- package/dist/services/webhook-store.js.map +1 -1
- package/dist/services/webhook-store.mjs.map +1 -1
- package/dist/services/worker-queue.js.map +1 -1
- package/dist/services/worker-queue.mjs.map +1 -1
- package/dist/utils/convert-custom-field-type.js.map +1 -1
- package/dist/utils/convert-custom-field-type.mjs.map +1 -1
- package/dist/utils/cron.js.map +1 -1
- package/dist/utils/cron.mjs.map +1 -1
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/get-dirs.js.map +1 -1
- package/dist/utils/get-dirs.mjs +1 -1
- package/dist/utils/get-dirs.mjs.map +1 -1
- package/dist/utils/is-initialized.js.map +1 -1
- package/dist/utils/is-initialized.mjs.map +1 -1
- package/dist/utils/machine-id.js.map +1 -1
- package/dist/utils/machine-id.mjs.map +1 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/open-browser.mjs.map +1 -1
- package/dist/utils/signals.js.map +1 -1
- package/dist/utils/signals.mjs.map +1 -1
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/startup-logger.mjs.map +1 -1
- package/dist/utils/update-notifier/index.js.map +1 -1
- package/dist/utils/update-notifier/index.mjs.map +1 -1
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-files.mjs","sources":["../../src/load/load-files.ts"],"sourcesContent":["import path from 'path';\nimport _ from 'lodash';\nimport fse from 'fs-extra';\n\nimport { importDefault } from '@strapi/utils';\nimport { glob } from 'glob';\nimport filePathToPath from './filepath-to-prop-path';\n\n/**\n * Returns an Object build from a list of files matching a glob pattern in a directory\n * It builds a tree structure resembling the folder structure in dir\n */\nexport default async function loadFiles<T extends object>(\n dir: string,\n pattern: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n { requireFn = importDefault, shouldUseFileNameAsKey = (_: any) => true, globArgs = {} } = {}\n): Promise<T> {\n const root = {};\n const files = await glob(pattern, { cwd: dir, ...globArgs });\n\n for (const file of files) {\n const absolutePath = path.resolve(dir, file);\n\n // load module\n delete require.cache[absolutePath];\n let mod;\n\n if (path.extname(absolutePath) === '.json') {\n mod = await fse.readJson(absolutePath);\n } else {\n mod = requireFn(absolutePath);\n }\n\n Object.defineProperty(mod, '__filename__', {\n enumerable: true,\n configurable: false,\n writable: false,\n value: path.basename(file),\n });\n\n const propPath = filePathToPath(file, shouldUseFileNameAsKey(file));\n\n if (propPath.length === 0) _.merge(root, mod);\n _.merge(root, _.setWith({}, propPath, mod, Object));\n }\n\n return root as T;\n}\n"],"names":["_"],"mappings":";;;;;;AAYA,eAA8B,UAC5B,KACA,SAEA,EAAE,YAAY,eAAe,yBAAyB,CAACA,OAAW,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"load-files.mjs","sources":["../../src/load/load-files.ts"],"sourcesContent":["import path from 'path';\nimport _ from 'lodash';\nimport fse from 'fs-extra';\n\nimport { importDefault } from '@strapi/utils';\nimport { glob } from 'glob';\nimport filePathToPath from './filepath-to-prop-path';\n\n/**\n * Returns an Object build from a list of files matching a glob pattern in a directory\n * It builds a tree structure resembling the folder structure in dir\n */\nexport default async function loadFiles<T extends object>(\n dir: string,\n pattern: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n { requireFn = importDefault, shouldUseFileNameAsKey = (_: any) => true, globArgs = {} } = {}\n): Promise<T> {\n const root = {};\n const files = await glob(pattern, { cwd: dir, ...globArgs });\n\n for (const file of files) {\n const absolutePath = path.resolve(dir, file);\n\n // load module\n delete require.cache[absolutePath];\n let mod;\n\n if (path.extname(absolutePath) === '.json') {\n mod = await fse.readJson(absolutePath);\n } else {\n mod = requireFn(absolutePath);\n }\n\n Object.defineProperty(mod, '__filename__', {\n enumerable: true,\n configurable: false,\n writable: false,\n value: path.basename(file),\n });\n\n const propPath = filePathToPath(file, shouldUseFileNameAsKey(file));\n\n if (propPath.length === 0) _.merge(root, mod);\n _.merge(root, _.setWith({}, propPath, mod, Object));\n }\n\n return root as T;\n}\n"],"names":["_"],"mappings":";;;;;;AAYA,eAA8B,UAC5B,KACA,SAEA,EAAE,YAAY,eAAe,yBAAyB,CAACA,OAAW,MAAM,WAAW,CAAA,EAAC,IAAM,CAAA,GAC9E;AACZ,QAAM,OAAO,CAAA;AACb,QAAM,QAAQ,MAAM,KAAK,SAAS,EAAE,KAAK,KAAK,GAAG,UAAU;AAE3D,aAAW,QAAQ,OAAO;AACxB,UAAM,eAAe,KAAK,QAAQ,KAAK,IAAI;AAG3C,WAAO,QAAQ,MAAM,YAAY;AACjC,QAAI;AAEJ,QAAI,KAAK,QAAQ,YAAY,MAAM,SAAS;AAC1C,YAAM,MAAM,IAAI,SAAS,YAAY;AAAA,IACvC,OAAO;AACL,YAAM,UAAU,YAAY;AAAA,IAC9B;AAEA,WAAO,eAAe,KAAK,gBAAgB;AAAA,MACzC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO,KAAK,SAAS,IAAI;AAAA,IAAA,CAC1B;AAED,UAAM,WAAW,eAAe,MAAM,uBAAuB,IAAI,CAAC;AAElE,QAAI,SAAS,WAAW,EAAG,GAAE,MAAM,MAAM,GAAG;AAC5C,MAAE,MAAM,MAAM,EAAE,QAAQ,CAAA,GAAI,UAAU,KAAK,MAAM,CAAC;AAAA,EACpD;AAEA,SAAO;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Common } from '@strapi/types';\n\nexport type Config = body.IKoaBodyOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body({ patchKoa: true, ...bodyConfig })(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.path)));\n } else if (files && files.path) {\n // not awaiting to not slow the request\n fse.remove(files.path);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["mime","defaultsDeep","body","files","fse"],"mappings":";;;;;;;;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;
|
|
1
|
+
{"version":3,"file":"body.js","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Common } from '@strapi/types';\n\nexport type Config = body.IKoaBodyOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body({ patchKoa: true, ...bodyConfig })(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.path)));\n } else if (files && files.path) {\n // not awaiting to not slow the request\n fse.remove(files.path);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["mime","defaultsDeep","body","files","fse"],"mappings":";;;;;;;;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;AAC3C,MAAI,CAAC,KAAK,MAAM;AACd,SAAK,OAAOA,cAAAA,QAAK,OAAO,KAAK,IAAI,KAAK;AAAA,EACxC;AACF;AAEA,SAAS,SAAS,KAAkB;AAClC,SAAO,KAAK,SAAS,OAAO;AAC9B;AAEA,MAAM,iBAAmD,CAAC,QAAQ,EAAE,aAAa;AAC/E,QAAM,aAAqBC,GAAAA,aAAa,UAAU,MAAM;AAExD,MAAI;AACJ,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,kBAAc,UAAU,UAAU;AAAA,EACpC;AAEA,SAAO,OAAO,KAAK,SAAS;AAE1B,QAAI,eAAe,IAAI,QAAQ,aAAa;AAC1C,YAAM,KAAA;AAAA,IACR,OAAO;AACL,UAAI;AACF,cAAMC,cAAAA,QAAK,EAAE,UAAU,MAAM,GAAG,WAAA,CAAY,EAAE,KAAK,YAAY;AAAA,QAAC,CAAC;AAEjE,cAAMC,SAAQ,SAAS,GAAG;AAM1B,YAAIA,QAAO;AACT,cAAI,MAAM,QAAQA,MAAK,GAAG;AACxBA,mBAAM,QAAQ,kBAAkB;AAAA,UAClC,OAAO;AACL,+BAAmBA,MAAK;AAAA,UAC1B;AAAA,QACF;AAEA,cAAM,KAAA;AAAA,MACR,SAAS,OAAO;AACd,YACE,iBAAiB,SACjB,MAAM,WACN,MAAM,QAAQ,SAAS,sBAAsB,GAC7C;AACA,iBAAO,IAAI,gBAAgB,YAAY;AAAA,QACzC;AAEA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,QAAQ,SAAS,GAAG;AAG1B,QAAI,OAAO;AACT,UAAI,MAAM,QAAQ,KAAK,GAAG;AAExB,gBAAQ,IAAI,MAAM,IAAI,CAAC,SAASC,aAAAA,QAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,MACxD,WAAW,SAAS,MAAM,MAAM;AAE9BA,6BAAI,OAAO,MAAM,IAAI;AAAA,MACvB;AACA,aAAO,IAAI,QAAQ;AAAA,IACrB;AAAA,EACF;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.mjs","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Common } from '@strapi/types';\n\nexport type Config = body.IKoaBodyOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body({ patchKoa: true, ...bodyConfig })(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.path)));\n } else if (files && files.path) {\n // not awaiting to not slow the request\n fse.remove(files.path);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["files"],"mappings":";;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;
|
|
1
|
+
{"version":3,"file":"body.mjs","sources":["../../src/middlewares/body.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport { defaultsDeep } from 'lodash/fp';\nimport body from 'koa-body';\nimport mime from 'mime-types';\nimport type Koa from 'koa';\nimport type { Common } from '@strapi/types';\n\nexport type Config = body.IKoaBodyOptions;\n\nconst defaults = {\n multipart: true,\n patchKoa: true,\n};\n\nfunction ensureFileMimeType(file: any): void {\n if (!file.type) {\n file.type = mime.lookup(file.name) || 'application/octet-stream';\n }\n}\n\nfunction getFiles(ctx: Koa.Context) {\n return ctx?.request?.files?.files;\n}\n\nconst bodyMiddleware: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const bodyConfig: Config = defaultsDeep(defaults, config);\n\n let gqlEndpoint: string | undefined;\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n gqlEndpoint = gqlConfig('endpoint');\n }\n\n return async (ctx, next) => {\n // TODO: find a better way later\n if (gqlEndpoint && ctx.url === gqlEndpoint) {\n await next();\n } else {\n try {\n await body({ patchKoa: true, ...bodyConfig })(ctx, async () => {});\n\n const files = getFiles(ctx);\n\n /**\n * in case the mime-type wasn't sent, Strapi tries to guess it\n * from the file extension, to avoid a corrupt database state\n */\n if (files) {\n if (Array.isArray(files)) {\n files.forEach(ensureFileMimeType);\n } else {\n ensureFileMimeType(files);\n }\n }\n\n await next();\n } catch (error) {\n if (\n error instanceof Error &&\n error.message &&\n error.message.includes('maxFileSize exceeded')\n ) {\n return ctx.payloadTooLarge('FileTooBig');\n }\n\n throw error;\n }\n }\n\n const files = getFiles(ctx);\n\n // clean any file that was uploaded\n if (files) {\n if (Array.isArray(files)) {\n // not awaiting to not slow the request\n Promise.all(files.map((file) => fse.remove(file.path)));\n } else if (files && files.path) {\n // not awaiting to not slow the request\n fse.remove(files.path);\n }\n delete ctx.request.files;\n }\n };\n};\n\nexport { bodyMiddleware as body };\n"],"names":["files"],"mappings":";;;;AASA,MAAM,WAAW;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AACZ;AAEA,SAAS,mBAAmB,MAAiB;AAC3C,MAAI,CAAC,KAAK,MAAM;AACd,SAAK,OAAO,KAAK,OAAO,KAAK,IAAI,KAAK;AAAA,EACxC;AACF;AAEA,SAAS,SAAS,KAAkB;AAClC,SAAO,KAAK,SAAS,OAAO;AAC9B;AAEA,MAAM,iBAAmD,CAAC,QAAQ,EAAE,aAAa;AAC/E,QAAM,aAAqB,aAAa,UAAU,MAAM;AAExD,MAAI;AACJ,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,kBAAc,UAAU,UAAU;AAAA,EACpC;AAEA,SAAO,OAAO,KAAK,SAAS;AAE1B,QAAI,eAAe,IAAI,QAAQ,aAAa;AAC1C,YAAM,KAAA;AAAA,IACR,OAAO;AACL,UAAI;AACF,cAAM,KAAK,EAAE,UAAU,MAAM,GAAG,WAAA,CAAY,EAAE,KAAK,YAAY;AAAA,QAAC,CAAC;AAEjE,cAAMA,SAAQ,SAAS,GAAG;AAM1B,YAAIA,QAAO;AACT,cAAI,MAAM,QAAQA,MAAK,GAAG;AACxBA,mBAAM,QAAQ,kBAAkB;AAAA,UAClC,OAAO;AACL,+BAAmBA,MAAK;AAAA,UAC1B;AAAA,QACF;AAEA,cAAM,KAAA;AAAA,MACR,SAAS,OAAO;AACd,YACE,iBAAiB,SACjB,MAAM,WACN,MAAM,QAAQ,SAAS,sBAAsB,GAC7C;AACA,iBAAO,IAAI,gBAAgB,YAAY;AAAA,QACzC;AAEA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,QAAQ,SAAS,GAAG;AAG1B,QAAI,OAAO;AACT,UAAI,MAAM,QAAQ,KAAK,GAAG;AAExB,gBAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,MACxD,WAAW,SAAS,MAAM,MAAM;AAE9B,YAAI,OAAO,MAAM,IAAI;AAAA,MACvB;AACA,aAAO,IAAI,QAAQ;AAAA,IACrB;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Common.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["koaCors","origin"],"mappings":";;;;;AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;
|
|
1
|
+
{"version":3,"file":"cors.js","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Common.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["koaCors","origin"],"mappings":";;;;;AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEO,MAAM,OAAyC,CAAC,WAAW;AAChE,QAAM,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAGL,MAAI,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAIJ;AAEA,SAAOA,yBAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AAChB,UAAI,CAAC,IAAI,IAAI,QAAQ,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,UAAI;AAEJ,UAAI,OAAO,WAAW,YAAY;AAChC,qBAAa,MAAM,OAAO,GAAG;AAAA,MAC/B,OAAO;AACL,qBAAa;AAAA,MACf;AAEA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,eAAO,WAAW,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MACtE;AAEA,YAAM,eAAe,WAAW,MAAM,GAAG,EAAE,IAAI,CAACC,YAAWA,QAAO,MAAM;AACxE,UAAI,aAAa,SAAS,GAAG;AAC3B,eAAO,aAAa,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MACxE;AAEA,aAAO;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Common.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["origin"],"mappings":";AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;
|
|
1
|
+
{"version":3,"file":"cors.mjs","sources":["../../src/middlewares/cors.ts"],"sourcesContent":["import koaCors from '@koa/cors';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = {\n enabled?: boolean;\n origin: string | string[] | ((ctx: any) => string | string[]);\n expose?: string | string[];\n maxAge?: number;\n credentials?: boolean;\n methods?: string | string[];\n headers?: string | string[];\n keepHeadersOnError?: boolean;\n};\n\nconst defaults: Config = {\n origin: '*',\n maxAge: 31536000,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],\n headers: ['Content-Type', 'Authorization', 'Origin', 'Accept'],\n keepHeadersOnError: false,\n};\n\nexport const cors: Common.MiddlewareFactory<Config> = (config) => {\n const { origin, expose, maxAge, credentials, methods, headers, keepHeadersOnError } = {\n ...defaults,\n ...config,\n };\n\n if (config.enabled !== undefined) {\n strapi.log.warn(\n 'The strapi::cors middleware no longer supports the `enabled` option. Using it' +\n ' to conditionally enable CORS might cause an insecure default. To disable strapi::cors, remove it from' +\n ' the exported array in config/middleware.js'\n );\n }\n\n return koaCors({\n async origin(ctx) {\n if (!ctx.get('Origin')) {\n return '*';\n }\n\n let originList: string | string[];\n\n if (typeof origin === 'function') {\n originList = await origin(ctx);\n } else {\n originList = origin;\n }\n\n if (Array.isArray(originList)) {\n return originList.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n const parsedOrigin = originList.split(',').map((origin) => origin.trim());\n if (parsedOrigin.length > 1) {\n return parsedOrigin.includes(ctx.get('Origin')) ? ctx.get('Origin') : false;\n }\n\n return originList;\n },\n exposeHeaders: expose,\n maxAge,\n credentials,\n allowMethods: methods,\n allowHeaders: headers,\n keepHeadersOnError,\n });\n};\n"],"names":["origin"],"mappings":";AAeA,MAAM,WAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS,CAAC,OAAO,QAAQ,OAAO,SAAS,UAAU,QAAQ,SAAS;AAAA,EACpE,SAAS,CAAC,gBAAgB,iBAAiB,UAAU,QAAQ;AAAA,EAC7D,oBAAoB;AACtB;AAEO,MAAM,OAAyC,CAAC,WAAW;AAChE,QAAM,EAAE,QAAQ,QAAQ,QAAQ,aAAa,SAAS,SAAS,uBAAuB;AAAA,IACpF,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAGL,MAAI,OAAO,YAAY,QAAW;AAChC,WAAO,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAIJ;AAEA,SAAO,QAAQ;AAAA,IACb,MAAM,OAAO,KAAK;AAChB,UAAI,CAAC,IAAI,IAAI,QAAQ,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,UAAI;AAEJ,UAAI,OAAO,WAAW,YAAY;AAChC,qBAAa,MAAM,OAAO,GAAG;AAAA,MAC/B,OAAO;AACL,qBAAa;AAAA,MACf;AAEA,UAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,eAAO,WAAW,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MACtE;AAEA,YAAM,eAAe,WAAW,MAAM,GAAG,EAAE,IAAI,CAACA,YAAWA,QAAO,MAAM;AACxE,UAAI,aAAa,SAAS,GAAG;AAC3B,eAAO,aAAa,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,IAAI;AAAA,MACxE;AAEA,aAAO;AAAA,IACT;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Common } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Common.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["errors","status","body","formatApplicationError","formatHttpError","formatInternalError"],"mappings":";;;;AAKA,MAAM,kBAA4C,MAAyB;
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Common } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Common.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["errors","status","body","formatApplicationError","formatHttpError","formatInternalError"],"mappings":";;;;AAKA,MAAM,kBAA4C,MAAyB;AACzE,SAAO,OAAO,KAAK,SAAS;AAC1B,QAAI;AACF,YAAM,KAAA;AAEN,UAAI,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI,SAAA;AAAA,MACb;AAAA,IACF,SAAS,OAAO;AACd,UAAI,iBAAiBA,YAAAA,OAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAC,SAAQ,MAAAC,MAAAA,IAASC,OAAAA,uBAAuB,KAAK;AACrD,YAAI,SAASF;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEA,UAAI,iBAAiBF,YAAAA,OAAO,WAAW;AACrC,cAAM,EAAE,QAAAC,SAAQ,MAAAC,MAAAA,IAASE,OAAAA,gBAAgB,KAAK;AAC9C,YAAI,SAASH;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEA,aAAO,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,SAASG,OAAAA,oBAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.mjs","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Common } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Common.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["status","body"],"mappings":";;AAKA,MAAM,kBAA4C,MAAyB;
|
|
1
|
+
{"version":3,"file":"errors.mjs","sources":["../../src/middlewares/errors.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport type { Common } from '@strapi/types';\n\nimport { formatApplicationError, formatHttpError, formatInternalError } from '../services/errors';\n\nconst errorMiddleware: Common.MiddlewareFactory = (/* _, { strapi } */) => {\n return async (ctx, next) => {\n try {\n await next();\n\n if (!ctx.response._explicitStatus) {\n return ctx.notFound();\n }\n } catch (error) {\n if (error instanceof errors.ApplicationError) {\n const { status, body } = formatApplicationError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n if (error instanceof errors.HttpError) {\n const { status, body } = formatHttpError(error);\n ctx.status = status;\n ctx.body = body;\n return;\n }\n\n strapi.log.error(error);\n\n const { status, body } = formatInternalError(error);\n ctx.status = status;\n ctx.body = body;\n }\n };\n};\n\nexport { errorMiddleware as errors };\n"],"names":["status","body"],"mappings":";;AAKA,MAAM,kBAA4C,MAAyB;AACzE,SAAO,OAAO,KAAK,SAAS;AAC1B,QAAI;AACF,YAAM,KAAA;AAEN,UAAI,CAAC,IAAI,SAAS,iBAAiB;AACjC,eAAO,IAAI,SAAA;AAAA,MACb;AAAA,IACF,SAAS,OAAO;AACd,UAAI,iBAAiB,OAAO,kBAAkB;AAC5C,cAAM,EAAE,QAAAA,SAAQ,MAAAC,MAAAA,IAAS,uBAAuB,KAAK;AACrD,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEA,UAAI,iBAAiB,OAAO,WAAW;AACrC,cAAM,EAAE,QAAAD,SAAQ,MAAAC,MAAAA,IAAS,gBAAgB,KAAK;AAC9C,YAAI,SAASD;AACb,YAAI,OAAOC;AACX;AAAA,MACF;AAEA,aAAO,IAAI,MAAM,KAAK;AAEtB,YAAM,EAAE,QAAQ,SAAS,oBAAoB,KAAK;AAClD,UAAI,SAAS;AACb,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favicon.js","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":["existsSync","resolve","koaFavicon"],"mappings":";;;;;;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA4C,CAAC,QAAQ,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"favicon.js","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":["existsSync","resolve","koaFavicon"],"mappings":";;;;;;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA4C,CAAC,QAAQ,EAAE,aAAa;AAC/E,QAAM,EAAE,QAAQ,MAAM,mBAAA,IAAuB,EAAE,GAAG,UAAU,GAAG,OAAA;AAC/D,QAAM,EAAE,MAAM,QAAA,IAAY,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAACA,GAAAA,WAAWC,KAAAA,QAAQ,SAAS,WAAW,CAAC,GAAG;AAC9C,kBAAc;AAAA,EAChB;AAEA,SAAOC,oBAAAA,QAAWD,KAAAA,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favicon.mjs","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA4C,CAAC,QAAQ,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"favicon.mjs","sources":["../../src/middlewares/favicon.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport koaFavicon from 'koa-favicon';\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<typeof koaFavicon>[1]>;\n\nconst defaults = {\n path: 'favicon.png',\n maxAge: 86400000,\n};\n\nexport const favicon: Common.MiddlewareFactory<Config> = (config, { strapi }) => {\n const { maxAge, path: faviconDefaultPath } = { ...defaults, ...config };\n const { root: appRoot } = strapi.dirs.app;\n let faviconPath = faviconDefaultPath;\n\n /** TODO (v5): Updating the favicon to use a png caused\n * https://github.com/strapi/strapi/issues/14693\n *\n * This check ensures backwards compatibility until\n * the next major version\n */\n if (!existsSync(resolve(appRoot, faviconPath))) {\n faviconPath = 'favicon.ico';\n }\n\n return koaFavicon(resolve(appRoot, faviconPath), { maxAge });\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAA4C,CAAC,QAAQ,EAAE,aAAa;AAC/E,QAAM,EAAE,QAAQ,MAAM,mBAAA,IAAuB,EAAE,GAAG,UAAU,GAAG,OAAA;AAC/D,QAAM,EAAE,MAAM,QAAA,IAAY,OAAO,KAAK;AACtC,MAAI,cAAc;AAQlB,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,CAAC,GAAG;AAC9C,kBAAc;AAAA,EAChB;AAEA,SAAO,WAAW,QAAQ,SAAS,WAAW,GAAG,EAAE,QAAQ;AAC7D;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/middlewares/index.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\nimport { compression } from './compression';\nimport { cors } from './cors';\nimport { errors } from './errors';\nimport { favicon } from './favicon';\nimport { ip } from './ip';\nimport { logger } from './logger';\nimport { poweredBy } from './powered-by';\nimport { body } from './body';\nimport { query } from './query';\nimport { responseTime } from './response-time';\nimport { responses } from './responses';\nimport { security } from './security';\nimport { session } from './session';\nimport { publicStatic } from './public';\n\nexport const middlewares: Record<string, Common.MiddlewareFactory> = {\n compression,\n cors,\n errors,\n favicon,\n ip,\n logger,\n poweredBy,\n body,\n query,\n responseTime,\n responses,\n security,\n session,\n public: publicStatic,\n};\n"],"names":["compression","cors","errors","favicon","ip","logger","poweredBy","body","query","responseTime","responses","security","session","publicStatic"],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,cAAwD;AAAA,EAAA,aACnEA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/middlewares/index.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\nimport { compression } from './compression';\nimport { cors } from './cors';\nimport { errors } from './errors';\nimport { favicon } from './favicon';\nimport { ip } from './ip';\nimport { logger } from './logger';\nimport { poweredBy } from './powered-by';\nimport { body } from './body';\nimport { query } from './query';\nimport { responseTime } from './response-time';\nimport { responses } from './responses';\nimport { security } from './security';\nimport { session } from './session';\nimport { publicStatic } from './public';\n\nexport const middlewares: Record<string, Common.MiddlewareFactory> = {\n compression,\n cors,\n errors,\n favicon,\n ip,\n logger,\n poweredBy,\n body,\n query,\n responseTime,\n responses,\n security,\n session,\n public: publicStatic,\n};\n"],"names":["compression","cors","errors","favicon","ip","logger","poweredBy","body","query","responseTime","responses","security","session","publicStatic"],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,cAAwD;AAAA,EAAA,aACnEA,YAAAA;AAAAA,EAAA,MACAC,KAAAA;AAAAA,EAAA,QACAC,OAAAA;AAAAA,EAAA,SACAC,QAAAA;AAAAA,EAAA,IACAC,GAAAA;AAAAA,EAAA,QACAC,OAAAA;AAAAA,EAAA,WACAC,UAAAA;AAAAA,EAAA,MACAC,KAAAA;AAAAA,EAAA,OACAC,MAAAA;AAAAA,EAAA,cACAC,aAAAA;AAAAA,EAAA,WACAC,UAAAA;AAAAA,EAAA,UACAC,SAAAA;AAAAA,EAAA,SACAC,QAAAA;AAAAA,EACA,QAAQC,MAAAA;AACV;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const logger: Common.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,SAAmC,CAAC,GAAG,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const logger: Common.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,SAAmC,CAAC,GAAG,EAAE,aAAa;AACjE,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,QAAQ,KAAK,IAAA;AACnB,UAAM,KAAA;AACN,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EACxE;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.mjs","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const logger: Common.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,SAAmC,CAAC,GAAG,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"logger.mjs","sources":["../../src/middlewares/logger.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const logger: Common.MiddlewareFactory = (_, { strapi }) => {\n return async (ctx, next) => {\n const start = Date.now();\n await next();\n const delta = Math.ceil(Date.now() - start);\n\n strapi.log.http(`${ctx.method} ${ctx.url} (${delta} ms) ${ctx.status}`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,SAAmC,CAAC,GAAG,EAAE,aAAa;AACjE,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,QAAQ,KAAK,IAAA;AACnB,UAAM,KAAA;AACN,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAE1C,WAAO,IAAI,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE;AAAA,EACxE;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powered-by.js","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Common.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":";;AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;
|
|
1
|
+
{"version":3,"file":"powered-by.js","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Common.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":";;AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEO,MAAM,YAAuD,CAAC,WAAW;AAC9E,QAAM,EAAE,WAAAA,WAAAA,IAAc,EAAE,GAAG,UAAU,GAAG,OAAA;AAExC,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAA;AAEN,QAAI,IAAI,gBAAgBA,UAAS;AAAA,EACnC;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powered-by.mjs","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Common.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":"AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;
|
|
1
|
+
{"version":3,"file":"powered-by.mjs","sources":["../../src/middlewares/powered-by.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport interface Config {\n poweredBy: string;\n}\n\nconst defaults: Config = {\n poweredBy: 'Strapi <strapi.io>',\n};\n\nexport const poweredBy: Common.MiddlewareFactory<Partial<Config>> = (config) => {\n const { poweredBy } = { ...defaults, ...config };\n\n return async (ctx, next) => {\n await next();\n\n ctx.set('X-Powered-By', poweredBy);\n };\n};\n"],"names":["poweredBy"],"mappings":"AAMA,MAAM,WAAmB;AAAA,EACvB,WAAW;AACb;AAEO,MAAM,YAAuD,CAAC,WAAW;AAC9E,QAAM,EAAE,WAAAA,WAAAA,IAAc,EAAE,GAAG,UAAU,GAAG,OAAA;AAExC,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAA;AAEN,QAAI,IAAI,gBAAgBA,UAAS;AAAA,EACnC;AACF;"}
|
|
@@ -26,8 +26,7 @@ const publicStatic = (config, { strapi }) => {
|
|
|
26
26
|
const index = fs__default.default.readFileSync(path__default.default.join(__dirname, "index.html"), "utf8");
|
|
27
27
|
const serveIndexPage = async (ctx, next) => {
|
|
28
28
|
await next();
|
|
29
|
-
if (ctx.body != null || ctx.status !== 404)
|
|
30
|
-
return;
|
|
29
|
+
if (ctx.body != null || ctx.status !== 404) return;
|
|
31
30
|
ctx.url = "index.html";
|
|
32
31
|
const isInitialized$1 = await isInitialized(strapi);
|
|
33
32
|
const data = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/middlewares/public/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport stream from 'stream';\nimport _ from 'lodash';\nimport { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Strapi, Common } from '@strapi/types';\nimport * as utils from '../../utils';\nimport { serveStatic } from './serve-static';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n defaultIndex: true,\n};\n\nexport const publicStatic: Common.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Strapi }\n) => {\n const { defaultIndex, maxAge } = defaultsDeep(defaults, config);\n\n if (defaultIndex === true) {\n const index = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8');\n\n const serveIndexPage: Common.MiddlewareHandler = async (ctx, next) => {\n // defer rendering of strapi index page\n await next();\n\n if (ctx.body != null || ctx.status !== 404) return;\n\n ctx.url = 'index.html';\n const isInitialized = await utils.isInitialized(strapi);\n const data = {\n serverTime: new Date().toUTCString(),\n isInitialized,\n ..._.pick(strapi, [\n 'config.info.version',\n 'config.info.name',\n 'config.admin.url',\n 'config.server.url',\n 'config.environment',\n 'config.serveAdminPanel',\n ]),\n };\n const content = _.template(index)(data);\n const body = new stream.Readable({\n read() {\n this.push(Buffer.from(content));\n this.push(null);\n },\n });\n\n // Serve static.\n ctx.type = 'html';\n ctx.body = body;\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/index.html',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/assets/images/(.*)',\n handler: serveStatic(path.resolve(__dirname, 'assets/images'), {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n }\n};\n"],"names":["defaultsDeep","fs","path","isInitialized","utils.isInitialized","_","stream","serveStatic","koaStatic"],"mappings":";;;;;;;;;;;;;;;;;;AAYA,MAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAChB;AAEO,MAAM,eAAyC,CACpD,QACA,EAAE,aACC;AACH,QAAM,EAAE,cAAc,OAAA,IAAWA,GAAAA,aAAa,UAAU,MAAM;AAE9D,MAAI,iBAAiB,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/middlewares/public/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport stream from 'stream';\nimport _ from 'lodash';\nimport { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Strapi, Common } from '@strapi/types';\nimport * as utils from '../../utils';\nimport { serveStatic } from './serve-static';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n defaultIndex: true,\n};\n\nexport const publicStatic: Common.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Strapi }\n) => {\n const { defaultIndex, maxAge } = defaultsDeep(defaults, config);\n\n if (defaultIndex === true) {\n const index = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8');\n\n const serveIndexPage: Common.MiddlewareHandler = async (ctx, next) => {\n // defer rendering of strapi index page\n await next();\n\n if (ctx.body != null || ctx.status !== 404) return;\n\n ctx.url = 'index.html';\n const isInitialized = await utils.isInitialized(strapi);\n const data = {\n serverTime: new Date().toUTCString(),\n isInitialized,\n ..._.pick(strapi, [\n 'config.info.version',\n 'config.info.name',\n 'config.admin.url',\n 'config.server.url',\n 'config.environment',\n 'config.serveAdminPanel',\n ]),\n };\n const content = _.template(index)(data);\n const body = new stream.Readable({\n read() {\n this.push(Buffer.from(content));\n this.push(null);\n },\n });\n\n // Serve static.\n ctx.type = 'html';\n ctx.body = body;\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/index.html',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/assets/images/(.*)',\n handler: serveStatic(path.resolve(__dirname, 'assets/images'), {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n }\n};\n"],"names":["defaultsDeep","fs","path","isInitialized","utils.isInitialized","_","stream","serveStatic","koaStatic"],"mappings":";;;;;;;;;;;;;;;;;;AAYA,MAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAChB;AAEO,MAAM,eAAyC,CACpD,QACA,EAAE,aACC;AACH,QAAM,EAAE,cAAc,OAAA,IAAWA,GAAAA,aAAa,UAAU,MAAM;AAE9D,MAAI,iBAAiB,MAAM;AACzB,UAAM,QAAQC,YAAAA,QAAG,aAAaC,cAAAA,QAAK,KAAK,WAAW,YAAY,GAAG,MAAM;AAExE,UAAM,iBAA2C,OAAO,KAAK,SAAS;AAEpE,YAAM,KAAA;AAEN,UAAI,IAAI,QAAQ,QAAQ,IAAI,WAAW,IAAK;AAE5C,UAAI,MAAM;AACV,YAAMC,kBAAgB,MAAMC,cAAoB,MAAM;AACtD,YAAM,OAAO;AAAA,QACX,aAAY,oBAAI,KAAA,GAAO,YAAA;AAAA,QAAY,eACnCD;AAAAA,QACA,GAAGE,WAAAA,QAAE,KAAK,QAAQ;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAEH,YAAM,UAAUA,WAAAA,QAAE,SAAS,KAAK,EAAE,IAAI;AACtC,YAAM,OAAO,IAAIC,gBAAAA,QAAO,SAAS;AAAA,QAC/B,OAAO;AACL,eAAK,KAAK,OAAO,KAAK,OAAO,CAAC;AAC9B,eAAK,KAAK,IAAI;AAAA,QAChB;AAAA,MAAA,CACD;AAGD,UAAI,OAAO;AACX,UAAI,OAAO;AAAA,IACb;AAEA,WAAO,OAAO,OAAO;AAAA,MACnB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,MAExB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,MAExB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAASC,YAAAA,YAAYL,cAAAA,QAAK,QAAQ,WAAW,eAAe,GAAG;AAAA,UAC7D,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AAAA,QACD,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA;AAAA,MAGxB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAASM,mBAAAA,QAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,UAC5C,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AAAA,QACD,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,IACxB,CACD;AAAA,EACH;AACF;;"}
|
|
@@ -18,8 +18,7 @@ const publicStatic = (config, { strapi }) => {
|
|
|
18
18
|
const index = fs.readFileSync(path.join(__dirname, "index.html"), "utf8");
|
|
19
19
|
const serveIndexPage = async (ctx, next) => {
|
|
20
20
|
await next();
|
|
21
|
-
if (ctx.body != null || ctx.status !== 404)
|
|
22
|
-
return;
|
|
21
|
+
if (ctx.body != null || ctx.status !== 404) return;
|
|
23
22
|
ctx.url = "index.html";
|
|
24
23
|
const isInitialized$1 = await isInitialized(strapi);
|
|
25
24
|
const data = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/middlewares/public/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport stream from 'stream';\nimport _ from 'lodash';\nimport { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Strapi, Common } from '@strapi/types';\nimport * as utils from '../../utils';\nimport { serveStatic } from './serve-static';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n defaultIndex: true,\n};\n\nexport const publicStatic: Common.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Strapi }\n) => {\n const { defaultIndex, maxAge } = defaultsDeep(defaults, config);\n\n if (defaultIndex === true) {\n const index = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8');\n\n const serveIndexPage: Common.MiddlewareHandler = async (ctx, next) => {\n // defer rendering of strapi index page\n await next();\n\n if (ctx.body != null || ctx.status !== 404) return;\n\n ctx.url = 'index.html';\n const isInitialized = await utils.isInitialized(strapi);\n const data = {\n serverTime: new Date().toUTCString(),\n isInitialized,\n ..._.pick(strapi, [\n 'config.info.version',\n 'config.info.name',\n 'config.admin.url',\n 'config.server.url',\n 'config.environment',\n 'config.serveAdminPanel',\n ]),\n };\n const content = _.template(index)(data);\n const body = new stream.Readable({\n read() {\n this.push(Buffer.from(content));\n this.push(null);\n },\n });\n\n // Serve static.\n ctx.type = 'html';\n ctx.body = body;\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/index.html',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/assets/images/(.*)',\n handler: serveStatic(path.resolve(__dirname, 'assets/images'), {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n }\n};\n"],"names":["isInitialized","utils.isInitialized"],"mappings":";;;;;;;;;;AAYA,MAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAChB;AAEO,MAAM,eAAyC,CACpD,QACA,EAAE,aACC;AACH,QAAM,EAAE,cAAc,OAAA,IAAW,aAAa,UAAU,MAAM;AAE9D,MAAI,iBAAiB,MAAM;
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/middlewares/public/index.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport stream from 'stream';\nimport _ from 'lodash';\nimport { defaultsDeep } from 'lodash/fp';\nimport koaStatic from 'koa-static';\nimport type { Strapi, Common } from '@strapi/types';\nimport * as utils from '../../utils';\nimport { serveStatic } from './serve-static';\n\ntype Config = koaStatic.Options;\n\nconst defaults = {\n maxAge: 60000,\n defaultIndex: true,\n};\n\nexport const publicStatic: Common.MiddlewareFactory = (\n config: Config,\n { strapi }: { strapi: Strapi }\n) => {\n const { defaultIndex, maxAge } = defaultsDeep(defaults, config);\n\n if (defaultIndex === true) {\n const index = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8');\n\n const serveIndexPage: Common.MiddlewareHandler = async (ctx, next) => {\n // defer rendering of strapi index page\n await next();\n\n if (ctx.body != null || ctx.status !== 404) return;\n\n ctx.url = 'index.html';\n const isInitialized = await utils.isInitialized(strapi);\n const data = {\n serverTime: new Date().toUTCString(),\n isInitialized,\n ..._.pick(strapi, [\n 'config.info.version',\n 'config.info.name',\n 'config.admin.url',\n 'config.server.url',\n 'config.environment',\n 'config.serveAdminPanel',\n ]),\n };\n const content = _.template(index)(data);\n const body = new stream.Readable({\n read() {\n this.push(Buffer.from(content));\n this.push(null);\n },\n });\n\n // Serve static.\n ctx.type = 'html';\n ctx.body = body;\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: '/',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/index.html',\n handler: serveIndexPage,\n config: { auth: false },\n },\n {\n method: 'GET',\n path: '/assets/images/(.*)',\n handler: serveStatic(path.resolve(__dirname, 'assets/images'), {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n // All other public GET-routes except /uploads/(.*) which is handled in upload middleware\n {\n method: 'GET',\n path: '/((?!uploads/).+)',\n handler: koaStatic(strapi.dirs.static.public, {\n maxage: maxAge,\n defer: true,\n }),\n config: { auth: false },\n },\n ]);\n }\n};\n"],"names":["isInitialized","utils.isInitialized"],"mappings":";;;;;;;;;;AAYA,MAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAChB;AAEO,MAAM,eAAyC,CACpD,QACA,EAAE,aACC;AACH,QAAM,EAAE,cAAc,OAAA,IAAW,aAAa,UAAU,MAAM;AAE9D,MAAI,iBAAiB,MAAM;AACzB,UAAM,QAAQ,GAAG,aAAa,KAAK,KAAK,WAAW,YAAY,GAAG,MAAM;AAExE,UAAM,iBAA2C,OAAO,KAAK,SAAS;AAEpE,YAAM,KAAA;AAEN,UAAI,IAAI,QAAQ,QAAQ,IAAI,WAAW,IAAK;AAE5C,UAAI,MAAM;AACV,YAAMA,kBAAgB,MAAMC,cAAoB,MAAM;AACtD,YAAM,OAAO;AAAA,QACX,aAAY,oBAAI,KAAA,GAAO,YAAA;AAAA,QAAY,eACnCD;AAAAA,QACA,GAAG,EAAE,KAAK,QAAQ;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAEH,YAAM,UAAU,EAAE,SAAS,KAAK,EAAE,IAAI;AACtC,YAAM,OAAO,IAAI,OAAO,SAAS;AAAA,QAC/B,OAAO;AACL,eAAK,KAAK,OAAO,KAAK,OAAO,CAAC;AAC9B,eAAK,KAAK,IAAI;AAAA,QAChB;AAAA,MAAA,CACD;AAGD,UAAI,OAAO;AACX,UAAI,OAAO;AAAA,IACb;AAEA,WAAO,OAAO,OAAO;AAAA,MACnB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,MAExB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,MAExB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS,YAAY,KAAK,QAAQ,WAAW,eAAe,GAAG;AAAA,UAC7D,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AAAA,QACD,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA;AAAA,MAGxB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS,UAAU,OAAO,KAAK,OAAO,QAAQ;AAAA,UAC5C,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AAAA,QACD,QAAQ,EAAE,MAAM,MAAA;AAAA,MAAM;AAAA,IACxB,CACD;AAAA,EACH;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-static.js","sources":["../../../src/middlewares/public/serve-static.ts"],"sourcesContent":["import path from 'path';\nimport koaStatic from 'koa-static';\nimport type { Common } from '@strapi/types';\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: string, koaStaticOptions: koaStatic.Options = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const middleware: Common.MiddlewareHandler = async (ctx, next) => {\n const prev = ctx.path;\n const newPath = path.basename(ctx.path);\n ctx.path = newPath;\n\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n\n return middleware;\n};\n"],"names":["koaStatic","path"],"mappings":";;;;;;;AAKO,MAAM,cAAc,CAAC,UAAkB,mBAAsC,OAAO;
|
|
1
|
+
{"version":3,"file":"serve-static.js","sources":["../../../src/middlewares/public/serve-static.ts"],"sourcesContent":["import path from 'path';\nimport koaStatic from 'koa-static';\nimport type { Common } from '@strapi/types';\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: string, koaStaticOptions: koaStatic.Options = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const middleware: Common.MiddlewareHandler = async (ctx, next) => {\n const prev = ctx.path;\n const newPath = path.basename(ctx.path);\n ctx.path = newPath;\n\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n\n return middleware;\n};\n"],"names":["koaStatic","path"],"mappings":";;;;;;;AAKO,MAAM,cAAc,CAAC,UAAkB,mBAAsC,OAAO;AACzF,QAAM,QAAQA,mBAAAA,QAAU,UAAU,gBAAgB;AAGlD,QAAM,aAAuC,OAAO,KAAK,SAAS;AAChE,UAAM,OAAO,IAAI;AACjB,UAAM,UAAUC,cAAAA,QAAK,SAAS,IAAI,IAAI;AACtC,QAAI,OAAO;AAEX,UAAM,MAAM,KAAK,YAAY;AAC3B,UAAI,OAAO;AACX,YAAM,KAAA;AACN,UAAI,OAAO;AAAA,IACb,CAAC;AACD,QAAI,OAAO;AAAA,EACb;AAEA,SAAO;AACT;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-static.mjs","sources":["../../../src/middlewares/public/serve-static.ts"],"sourcesContent":["import path from 'path';\nimport koaStatic from 'koa-static';\nimport type { Common } from '@strapi/types';\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: string, koaStaticOptions: koaStatic.Options = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const middleware: Common.MiddlewareHandler = async (ctx, next) => {\n const prev = ctx.path;\n const newPath = path.basename(ctx.path);\n ctx.path = newPath;\n\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n\n return middleware;\n};\n"],"names":[],"mappings":";;AAKO,MAAM,cAAc,CAAC,UAAkB,mBAAsC,OAAO;
|
|
1
|
+
{"version":3,"file":"serve-static.mjs","sources":["../../../src/middlewares/public/serve-static.ts"],"sourcesContent":["import path from 'path';\nimport koaStatic from 'koa-static';\nimport type { Common } from '@strapi/types';\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: string, koaStaticOptions: koaStatic.Options = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const middleware: Common.MiddlewareHandler = async (ctx, next) => {\n const prev = ctx.path;\n const newPath = path.basename(ctx.path);\n ctx.path = newPath;\n\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n\n return middleware;\n};\n"],"names":[],"mappings":";;AAKO,MAAM,cAAc,CAAC,UAAkB,mBAAsC,OAAO;AACzF,QAAM,QAAQ,UAAU,UAAU,gBAAgB;AAGlD,QAAM,aAAuC,OAAO,KAAK,SAAS;AAChE,UAAM,OAAO,IAAI;AACjB,UAAM,UAAU,KAAK,SAAS,IAAI,IAAI;AACtC,QAAI,OAAO;AAEX,UAAM,MAAM,KAAK,YAAY;AAC3B,UAAI,OAAO;AACX,YAAM,KAAA;AACN,UAAI,OAAO;AAAA,IACb,CAAC;AACD,QAAI,OAAO;AAAA,EACb;AAEA,SAAO;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Strapi, Common } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Common.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":["qs"],"mappings":";;;;;AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Strapi, Common } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Common.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":["qs"],"mappings":";;;;;AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAClD,SAAO,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AAClB,WAAK,cAAc,KAAK,eAAe,CAAA;AACvC,YAAM,QAAQ,KAAK;AAEnB,UAAI,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAIA,YAAAA,QAAG,MAAM,MAAM,QAAQ;AAAA,MACvC;AAEA,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACP,WAAK,cAAcA,oBAAG,UAAU,GAAG;AAAA,IACrC;AAAA,EAAA,CACD;AAED,SAAO;AACT;AAEO,MAAM,QAAkC,CAC7C,QACA,EAAE,aACC;AACH,cAAY,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAQ;AAC3D;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.mjs","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Strapi, Common } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Common.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":[],"mappings":";AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;
|
|
1
|
+
{"version":3,"file":"query.mjs","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs, { IParseOptions } from 'qs';\nimport type Koa from 'koa';\nimport type { Strapi, Common } from '@strapi/types';\n\ntype Config = IParseOptions;\n\nconst defaults: Config = {\n strictNullHandling: true,\n arrayLimit: 100,\n depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n Object.defineProperty(app.request, 'query', {\n configurable: false,\n enumerable: true,\n /*\n * Get parsed query-string.\n */\n get() {\n const qstr = this.querystring;\n this._querycache = this._querycache || {};\n const cache = this._querycache;\n\n if (!cache[qstr]) {\n cache[qstr] = qs.parse(qstr, settings);\n }\n\n return cache[qstr];\n },\n\n /*\n * Set query-string as an object.\n */\n set(obj) {\n this.querystring = qs.stringify(obj);\n },\n });\n\n return app;\n};\n\nexport const query: Common.MiddlewareFactory = (\n config: Partial<Config>,\n { strapi }: { strapi: Strapi }\n) => {\n addQsParser(strapi.server.app, { ...defaults, ...config });\n};\n"],"names":[],"mappings":";AAMA,MAAM,WAAmB;AAAA,EACvB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AACT;AAKA,MAAM,cAAc,CAAC,KAAU,aAAqB;AAClD,SAAO,eAAe,IAAI,SAAS,SAAS;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA;AAAA;AAAA;AAAA,IAIZ,MAAM;AACJ,YAAM,OAAO,KAAK;AAClB,WAAK,cAAc,KAAK,eAAe,CAAA;AACvC,YAAM,QAAQ,KAAK;AAEnB,UAAI,CAAC,MAAM,IAAI,GAAG;AAChB,cAAM,IAAI,IAAI,GAAG,MAAM,MAAM,QAAQ;AAAA,MACvC;AAEA,aAAO,MAAM,IAAI;AAAA,IACnB;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,KAAK;AACP,WAAK,cAAc,GAAG,UAAU,GAAG;AAAA,IACrC;AAAA,EAAA,CACD;AAED,SAAO;AACT;AAEO,MAAM,QAAkC,CAC7C,QACA,EAAE,aACC;AACH,cAAY,OAAO,OAAO,KAAK,EAAE,GAAG,UAAU,GAAG,QAAQ;AAC3D;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-time.js","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const responseTime: Common.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,eAAyC,MAAM;
|
|
1
|
+
{"version":3,"file":"response-time.js","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const responseTime: Common.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,eAAyC,MAAM;AAC1D,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,QAAQ,KAAK,IAAA;AAEnB,UAAM,KAAA;AAEN,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EACzC;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-time.mjs","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const responseTime: Common.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,eAAyC,MAAM;
|
|
1
|
+
{"version":3,"file":"response-time.mjs","sources":["../../src/middlewares/response-time.ts"],"sourcesContent":["import type { Common } from '@strapi/types';\n\nexport const responseTime: Common.MiddlewareFactory = () => {\n return async (ctx, next) => {\n const start = Date.now();\n\n await next();\n\n const delta = Math.ceil(Date.now() - start);\n ctx.set('X-Response-Time', `${delta}ms`);\n };\n};\n"],"names":[],"mappings":"AAEO,MAAM,eAAyC,MAAM;AAC1D,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,QAAQ,KAAK,IAAA;AAEnB,UAAM,KAAA;AAEN,UAAM,QAAQ,KAAK,KAAK,KAAK,IAAA,IAAQ,KAAK;AAC1C,QAAI,IAAI,mBAAmB,GAAG,KAAK,IAAI;AAAA,EACzC;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Common.MiddlewareHandler>;\n}\n\nexport const responses: Common.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":["isFunction"],"mappings":";;;AAOO,MAAM,YAA8C,CAAC,SAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"responses.js","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Common.MiddlewareHandler>;\n}\n\nexport const responses: Common.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":["isFunction"],"mappings":";;;AAOO,MAAM,YAA8C,CAAC,SAAS,OAAO;AAC1E,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAA;AAEN,UAAM,EAAE,WAAW;AACnB,UAAM,UAAU,QAAQ,WAAW,MAAM;AAEzC,QAAIA,GAAAA,WAAW,OAAO,GAAG;AACvB,YAAM,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EACF;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.mjs","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Common.MiddlewareHandler>;\n}\n\nexport const responses: Common.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":[],"mappings":";AAOO,MAAM,YAA8C,CAAC,SAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"responses.mjs","sources":["../../src/middlewares/responses.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Common } from '@strapi/types';\n\nexport interface Config {\n handlers?: Record<number, Common.MiddlewareHandler>;\n}\n\nexport const responses: Common.MiddlewareFactory<Config> = (config = {}) => {\n return async (ctx, next) => {\n await next();\n\n const { status } = ctx;\n const handler = config?.handlers?.[status];\n\n if (isFunction(handler)) {\n await handler(ctx, next);\n }\n };\n};\n"],"names":[],"mappings":";AAOO,MAAM,YAA8C,CAAC,SAAS,OAAO;AAC1E,SAAO,OAAO,KAAK,SAAS;AAC1B,UAAM,KAAA;AAEN,UAAM,EAAE,WAAW;AACnB,UAAM,UAAU,QAAQ,WAAW,MAAM;AAEzC,QAAI,WAAW,OAAO,GAAG;AACvB,YAAM,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Common.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n }\n\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n },\n },\n });\n }\n\n if (ctx.method === 'GET' && ['/admin'].some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":["mergeWith","defaultsDeep","helmet"],"mappings":";;;;;;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,
|
|
1
|
+
{"version":3,"file":"security.js","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Common.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n }\n\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n },\n },\n });\n }\n\n if (ctx.method === 'GET' && ['/admin'].some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":["mergeWith","defaultsDeep","helmet"],"mappings":";;;;;;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAAA,EAEF,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EAAA;AAAA,EAErB,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;AAEA,MAAM,cAAc,CAAC,gBAAwB,cAAsB;AACjE,SAAOA,GAAAA;AAAAA,IACL,CAAC,KAAK,QAAS,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,IAC5E;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,MAAM,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACb,MAAI,eAAuBC,GAAAA,aAAa,UAAU,MAAM;AAExD,QAAM,eAAe,CAAC,gBAAgB;AAEtC,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,iBAAa,KAAK,UAAU,UAAU,CAAC;AAAA,EACzC;AAEA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,UAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,QAAA;AAAA,MAChE;AAAA,IACF,CACD;AAAA,EACH;AAEA,MAAI,IAAI,WAAW,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAC9E,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,UAAU,KAAK;AAAA,QAAA;AAAA,MAC3C;AAAA,IACF,CACD;AAAA,EACH;AAEA,SAAOC,wBAAO,YAAY,EAAE,KAAK,IAAI;AACvC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.mjs","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Common.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n }\n\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n },\n },\n });\n }\n\n if (ctx.method === 'GET' && ['/admin'].some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":[],"mappings":";;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,
|
|
1
|
+
{"version":3,"file":"security.mjs","sources":["../../src/middlewares/security.ts"],"sourcesContent":["import { defaultsDeep, mergeWith } from 'lodash/fp';\nimport helmet, { KoaHelmet } from 'koa-helmet';\n\nimport type { Common } from '@strapi/types';\n\nexport type Config = NonNullable<Parameters<KoaHelmet>[0]>;\n\nconst defaults: Config = {\n crossOriginEmbedderPolicy: false,\n crossOriginOpenerPolicy: false,\n crossOriginResourcePolicy: false,\n originAgentCluster: false,\n contentSecurityPolicy: {\n useDefaults: true,\n directives: {\n 'connect-src': [\"'self'\", 'https:'],\n 'img-src': [\"'self'\", 'data:', 'blob:', 'https://market-assets.strapi.io'],\n 'media-src': [\"'self'\", 'data:', 'blob:'],\n upgradeInsecureRequests: null,\n },\n },\n xssFilter: false,\n hsts: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n frameguard: {\n action: 'sameorigin',\n },\n};\n\nconst mergeConfig = (existingConfig: Config, newConfig: Config) => {\n return mergeWith(\n (obj, src) => (Array.isArray(obj) && Array.isArray(src) ? obj.concat(src) : undefined),\n existingConfig,\n newConfig\n );\n};\n\nexport const security: Common.MiddlewareFactory<Config> =\n (config, { strapi }) =>\n (ctx, next) => {\n let helmetConfig: Config = defaultsDeep(defaults, config);\n\n const specialPaths = ['/documentation'];\n\n if (strapi.plugin('graphql')) {\n const { config: gqlConfig } = strapi.plugin('graphql');\n specialPaths.push(gqlConfig('endpoint'));\n }\n\n if (ctx.method === 'GET' && specialPaths.some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\", 'cdn.jsdelivr.net'],\n 'img-src': [\"'self'\", 'data:', 'cdn.jsdelivr.net', 'strapi.io'],\n },\n },\n });\n }\n\n if (ctx.method === 'GET' && ['/admin'].some((str) => ctx.path.startsWith(str))) {\n helmetConfig = mergeConfig(helmetConfig, {\n contentSecurityPolicy: {\n directives: {\n 'script-src': [\"'self'\", \"'unsafe-inline'\"],\n 'connect-src': [\"'self'\", 'https:', 'ws:'],\n },\n },\n });\n }\n\n return helmet(helmetConfig)(ctx, next);\n };\n"],"names":[],"mappings":";;AAOA,MAAM,WAAmB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,IACrB,aAAa;AAAA,IACb,YAAY;AAAA,MACV,eAAe,CAAC,UAAU,QAAQ;AAAA,MAClC,WAAW,CAAC,UAAU,SAAS,SAAS,iCAAiC;AAAA,MACzE,aAAa,CAAC,UAAU,SAAS,OAAO;AAAA,MACxC,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAAA,EAEF,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,mBAAmB;AAAA,EAAA;AAAA,EAErB,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;AAEA,MAAM,cAAc,CAAC,gBAAwB,cAAsB;AACjE,SAAO;AAAA,IACL,CAAC,KAAK,QAAS,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,IAC5E;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,MAAM,WACX,CAAC,QAAQ,EAAE,aACX,CAAC,KAAK,SAAS;AACb,MAAI,eAAuB,aAAa,UAAU,MAAM;AAExD,QAAM,eAAe,CAAC,gBAAgB;AAEtC,MAAI,OAAO,OAAO,SAAS,GAAG;AAC5B,UAAM,EAAE,QAAQ,UAAA,IAAc,OAAO,OAAO,SAAS;AACrD,iBAAa,KAAK,UAAU,UAAU,CAAC;AAAA,EACzC;AAEA,MAAI,IAAI,WAAW,SAAS,aAAa,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAChF,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,mBAAmB,kBAAkB;AAAA,UAC9D,WAAW,CAAC,UAAU,SAAS,oBAAoB,WAAW;AAAA,QAAA;AAAA,MAChE;AAAA,IACF,CACD;AAAA,EACH;AAEA,MAAI,IAAI,WAAW,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG;AAC9E,mBAAe,YAAY,cAAc;AAAA,MACvC,uBAAuB;AAAA,QACrB,YAAY;AAAA,UACV,cAAc,CAAC,UAAU,iBAAiB;AAAA,UAC1C,eAAe,CAAC,UAAU,UAAU,KAAK;AAAA,QAAA;AAAA,MAC3C;AAAA,IACF,CACD;AAAA,EACH;AAEA,SAAO,OAAO,YAAY,EAAE,KAAK,IAAI;AACvC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Common } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Common.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["isArray","isEmpty","koaSession"],"mappings":";;;;;;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA8D,CACzE,YACA,EAAE,aACC;AACH,QAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Common } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Common.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":["isArray","isEmpty","koaSession"],"mappings":";;;;;;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA8D,CACzE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAA,IAAS,OAAO,OAAO;AAC/B,MAAI,CAACA,GAAAA,QAAQ,IAAI,KAAKC,GAAAA,QAAQ,IAAI,KAAK,KAAK,KAAKA,GAAAA,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAA;AAEhE,SAAO,OAAO,IAAIC,oBAAAA,QAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Common } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Common.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA8D,CACzE,YACA,EAAE,aACC;AACH,QAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"session.mjs","sources":["../../src/middlewares/session.ts"],"sourcesContent":["import { isEmpty, isArray } from 'lodash/fp';\nimport koaSession from 'koa-session';\nimport type { Common } from '@strapi/types';\n\nconst defaultConfig = {\n key: 'koa.sess',\n maxAge: 86400000,\n autoCommit: true,\n overwrite: true,\n httpOnly: true,\n signed: true,\n rolling: false,\n renew: false,\n secure: process.env.NODE_ENV === 'production',\n sameSite: undefined,\n};\n\nexport const session: Common.MiddlewareFactory<Partial<koaSession.opts>> = (\n userConfig,\n { strapi }\n) => {\n const { keys } = strapi.server.app;\n if (!isArray(keys) || isEmpty(keys) || keys.some(isEmpty)) {\n throw new Error(\n `App keys are required. Please set app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])`\n );\n }\n\n const config: Partial<koaSession.opts> = { ...defaultConfig, ...userConfig };\n\n strapi.server.use(koaSession(config, strapi.server.app));\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,QAAQ,IAAI,aAAa;AAAA,EACjC,UAAU;AACZ;AAEO,MAAM,UAA8D,CACzE,YACA,EAAE,aACC;AACH,QAAM,EAAE,KAAA,IAAS,OAAO,OAAO;AAC/B,MAAI,CAAC,QAAQ,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,OAAO,GAAG;AACzD,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,SAAmC,EAAE,GAAG,eAAe,GAAG,WAAA;AAEhE,SAAO,OAAO,IAAI,WAAW,QAAQ,OAAO,OAAO,GAAG,CAAC;AACzD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-publish.js","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n // run the after content types migrations\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const qb = strapi.db?.queryBuilder(uid);\n await qb\n .update({ published_at: qb.ref('created_at') })\n .where({ published_at: null })\n .execute();\n }\n }\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypesUtils"],"mappings":";;;AAQA,MAAM,wBAAwB,OAAO,EAAE,iBAAiB,mBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAGA,aAAW,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"draft-publish.js","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n // run the after content types migrations\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const qb = strapi.db?.queryBuilder(uid);\n await qb\n .update({ published_at: qb.ref('created_at') })\n .where({ published_at: null })\n .execute();\n }\n }\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypesUtils"],"mappings":";;;AAQA,MAAM,wBAAwB,OAAO,EAAE,iBAAiB,mBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAGA,aAAW,OAAO,cAAc;AAC9B,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEA,UAAM,iBAAiB,gBAAgB,GAAG;AAC1C,UAAM,cAAc,aAAa,GAAG;AAGpC,QACE,CAACA,YAAAA,aAAkB,mBAAmB,cAAc,KACpDA,yBAAkB,mBAAmB,WAAW,GAChD;AACA,YAAM,KAAK,OAAO,IAAI,aAAa,GAAG;AACtC,YAAM,GACH,OAAO,EAAE,cAAc,GAAG,IAAI,YAAY,EAAA,CAAG,EAC7C,MAAM,EAAE,cAAc,KAAA,CAAM,EAC5B,QAAA;AAAA,IACL;AAAA,EACF;AACF;AAEA,MAAM,yBAAyB,OAAO,EAAE,iBAAiB,mBAA0B;AACjF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAEA,aAAW,OAAO,cAAc;AAC9B,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEA,UAAM,iBAAiB,gBAAgB,GAAG;AAC1C,UAAM,cAAc,aAAa,GAAG;AAGpC,QACEA,YAAAA,aAAkB,mBAAmB,cAAc,KACnD,CAACA,yBAAkB,mBAAmB,WAAW,GACjD;AACA,YAAM,OAAO,IAAI,aAAa,GAAG,EAAE,SAAS,MAAM,EAAE,cAAc,KAAA,CAAM,EAAE,QAAA;AAAA,IAC5E;AAAA,EACF;AACF;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-publish.mjs","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n // run the after content types migrations\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const qb = strapi.db?.queryBuilder(uid);\n await qb\n .update({ published_at: qb.ref('created_at') })\n .where({ published_at: null })\n .execute();\n }\n }\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypes","contentTypesUtils"],"mappings":";AAQA,MAAM,wBAAwB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"draft-publish.mjs","sources":["../../src/migrations/draft-publish.ts"],"sourcesContent":["import { contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { Schema } from '@strapi/types';\n\ninterface Input {\n oldContentTypes: Record<string, Schema.ContentType>;\n contentTypes: Record<string, Schema.ContentType>;\n}\n\nconst enableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n // run the after content types migrations\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was enabled set publishedAt to eq createdAt\n if (\n !contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n const qb = strapi.db?.queryBuilder(uid);\n await qb\n .update({ published_at: qb.ref('created_at') })\n .where({ published_at: null })\n .execute();\n }\n }\n};\n\nconst disableDraftAndPublish = async ({ oldContentTypes, contentTypes }: Input) => {\n if (!oldContentTypes) {\n return;\n }\n\n for (const uid in contentTypes) {\n if (!oldContentTypes[uid]) {\n continue;\n }\n\n const oldContentType = oldContentTypes[uid];\n const contentType = contentTypes[uid];\n\n // if d&p was disabled remove unpublish content before sync\n if (\n contentTypesUtils.hasDraftAndPublish(oldContentType) &&\n !contentTypesUtils.hasDraftAndPublish(contentType)\n ) {\n await strapi.db?.queryBuilder(uid).delete().where({ published_at: null }).execute();\n }\n }\n};\n\nexport { enableDraftAndPublish as enable, disableDraftAndPublish as disable };\n"],"names":["contentTypes","contentTypesUtils"],"mappings":";AAQA,MAAM,wBAAwB,OAAO,EAAE,iBAAA,cAAiBA,qBAA0B;AAChF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAGA,aAAW,OAAOA,gBAAc;AAC9B,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEA,UAAM,iBAAiB,gBAAgB,GAAG;AAC1C,UAAM,cAAcA,eAAa,GAAG;AAGpC,QACE,CAACC,aAAkB,mBAAmB,cAAc,KACpDA,aAAkB,mBAAmB,WAAW,GAChD;AACA,YAAM,KAAK,OAAO,IAAI,aAAa,GAAG;AACtC,YAAM,GACH,OAAO,EAAE,cAAc,GAAG,IAAI,YAAY,EAAA,CAAG,EAC7C,MAAM,EAAE,cAAc,KAAA,CAAM,EAC5B,QAAA;AAAA,IACL;AAAA,EACF;AACF;AAEA,MAAM,yBAAyB,OAAO,EAAE,iBAAA,cAAiBD,qBAA0B;AACjF,MAAI,CAAC,iBAAiB;AACpB;AAAA,EACF;AAEA,aAAW,OAAOA,gBAAc;AAC9B,QAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB;AAAA,IACF;AAEA,UAAM,iBAAiB,gBAAgB,GAAG;AAC1C,UAAM,cAAcA,eAAa,GAAG;AAGpC,QACEC,aAAkB,mBAAmB,cAAc,KACnD,CAACA,aAAkB,mBAAmB,WAAW,GACjD;AACA,YAAM,OAAO,IAAI,aAAa,GAAG,EAAE,SAAS,MAAM,EAAE,cAAc,KAAA,CAAM,EAAE,QAAA;AAAA,IAC5E;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash/fp';\n\nimport { errors } from '@strapi/utils';\nimport type { Common } 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: Common.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Common.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Common.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('authenticate', strategy), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has('verify', strategy)) {\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: Common.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":["assert","has","errors"],"mappings":";;;;;;AAgCA,MAAM,uBACJ;AAEF,MAAM,gBAAgB,CAAC,aAAuB;AAC5CA,kBAAAA,QAAOC,GAAAA,IAAI,gBAAgB,QAAQ,GAAG,oBAAoB;AAC1DD,kBAAAA,QAAO,OAAO,SAAS,iBAAiB,YAAY,oBAAoB;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash/fp';\n\nimport { errors } from '@strapi/utils';\nimport type { Common } 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: Common.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Common.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Common.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('authenticate', strategy), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has('verify', strategy)) {\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: Common.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":["assert","has","errors"],"mappings":";;;;;;AAgCA,MAAM,uBACJ;AAEF,MAAM,gBAAgB,CAAC,aAAuB;AAC5CA,kBAAAA,QAAOC,GAAAA,IAAI,gBAAgB,QAAQ,GAAG,oBAAoB;AAC1DD,kBAAAA,QAAO,OAAO,SAAS,iBAAiB,YAAY,oBAAoB;AAExE,MAAIC,GAAAA,IAAI,UAAU,QAAQ,GAAG;AAC3BD,oBAAAA,QAAO,OAAO,SAAS,WAAW,YAAY,oBAAoB;AAAA,EACpE;AACF;AAEA,MAAM,uBAAuB,MAAsB;AACjD,QAAM,aAAyC,CAAA;AAE/C,SAAO;AAAA,IACL,SAAS,MAAM,UAAU;AACvB,oBAAc,QAAQ;AAEtB,UAAI,CAAC,WAAW,IAAI,GAAG;AACrB,mBAAW,IAAI,IAAI,CAAA;AAAA,MACrB;AAEA,iBAAW,IAAI,EAAE,KAAK,QAAQ;AAE9B,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,KAAK,MAAM;AAC5B,YAAM,QAAsB,IAAI,MAAM;AAGtC,YAAM,SAAS,OAAO,QAAQ;AAE9B,UAAI,WAAW,OAAO;AACpB,eAAO,KAAA;AAAA,MACT;AAEA,YAAM,kBAAkB,MAAM,KAAK,OAAO,WAAW,MAAM,KAAK,IAAI,IAAI,CAAA;AACxE,YAAM,mBAAoB,QAAQ,cAAc,mBAAmB,CAAA;AAInE,YAAM,kBAA8B,iBAAiB;AAAA,QACnD,CAAC,KAAK,aAAgC;AAEpC,cAAI,OAAO,aAAa,UAAU;AAChC,kBAAM,gBAAgB,gBAAgB,KAAK,CAAC,OAAO,GAAG,SAAS,QAAQ;AAEvE,gBAAI,eAAe;AACjB,kBAAI,KAAK,aAAa;AAAA,YACxB;AAAA,UACF,WAGS,OAAO,aAAa,UAAU;AACrC,0BAAc,QAAQ;AAEtB,gBAAI,KAAK,QAAQ;AAAA,UACnB;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,CAAA;AAAA,MAAC;AAGH,iBAAW,YAAY,iBAAiB;AACtC,cAAM,SAAS,MAAM,SAAS,aAAa,GAAG;AAE9C,cAAM,EAAE,gBAAgB,OAAO,aAAa,UAAU,MAAM,QAAQ,SAAS,UAAU,CAAA;AAEvF,YAAI,UAAU,MAAM;AAClB,iBAAO,IAAI,aAAa,KAAK;AAAA,QAC/B;AAEA,YAAI,eAAe;AACjB,cAAI,MAAM,kBAAkB;AAC5B,cAAI,MAAM,OAAO;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAGF,iBAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,aAAO,IAAI,aAAa,gCAAgC;AAAA,IAC1D;AAAA,IAEA,MAAM,OAAO,MAAM,SAAS,IAAI;AAC9B,UAAI,WAAW,OAAO;AACpB;AAAA,MACF;AAEA,UAAI,CAAC,MAAM;AACT,cAAM,IAAIE,YAAAA,OAAO,kBAAA;AAAA,MACnB;AAEA,UAAI,OAAO,KAAK,SAAS,WAAW,YAAY;AAC9C,eAAO,KAAK,SAAS,OAAO,MAAM,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash/fp';\n\nimport { errors } from '@strapi/utils';\nimport type { Common } 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: Common.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Common.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Common.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('authenticate', strategy), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has('verify', strategy)) {\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: Common.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":[],"mappings":";;;AAgCA,MAAM,uBACJ;AAEF,MAAM,gBAAgB,CAAC,aAAuB;AAC5C,SAAO,IAAI,gBAAgB,QAAQ,GAAG,oBAAoB;AAC1D,SAAO,OAAO,SAAS,iBAAiB,YAAY,oBAAoB;
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash/fp';\n\nimport { errors } from '@strapi/utils';\nimport type { Common } 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: Common.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Common.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Common.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('authenticate', strategy), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has('verify', strategy)) {\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: Common.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":[],"mappings":";;;AAgCA,MAAM,uBACJ;AAEF,MAAM,gBAAgB,CAAC,aAAuB;AAC5C,SAAO,IAAI,gBAAgB,QAAQ,GAAG,oBAAoB;AAC1D,SAAO,OAAO,SAAS,iBAAiB,YAAY,oBAAoB;AAExE,MAAI,IAAI,UAAU,QAAQ,GAAG;AAC3B,WAAO,OAAO,SAAS,WAAW,YAAY,oBAAoB;AAAA,EACpE;AACF;AAEA,MAAM,uBAAuB,MAAsB;AACjD,QAAM,aAAyC,CAAA;AAE/C,SAAO;AAAA,IACL,SAAS,MAAM,UAAU;AACvB,oBAAc,QAAQ;AAEtB,UAAI,CAAC,WAAW,IAAI,GAAG;AACrB,mBAAW,IAAI,IAAI,CAAA;AAAA,MACrB;AAEA,iBAAW,IAAI,EAAE,KAAK,QAAQ;AAE9B,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,KAAK,MAAM;AAC5B,YAAM,QAAsB,IAAI,MAAM;AAGtC,YAAM,SAAS,OAAO,QAAQ;AAE9B,UAAI,WAAW,OAAO;AACpB,eAAO,KAAA;AAAA,MACT;AAEA,YAAM,kBAAkB,MAAM,KAAK,OAAO,WAAW,MAAM,KAAK,IAAI,IAAI,CAAA;AACxE,YAAM,mBAAoB,QAAQ,cAAc,mBAAmB,CAAA;AAInE,YAAM,kBAA8B,iBAAiB;AAAA,QACnD,CAAC,KAAK,aAAgC;AAEpC,cAAI,OAAO,aAAa,UAAU;AAChC,kBAAM,gBAAgB,gBAAgB,KAAK,CAAC,OAAO,GAAG,SAAS,QAAQ;AAEvE,gBAAI,eAAe;AACjB,kBAAI,KAAK,aAAa;AAAA,YACxB;AAAA,UACF,WAGS,OAAO,aAAa,UAAU;AACrC,0BAAc,QAAQ;AAEtB,gBAAI,KAAK,QAAQ;AAAA,UACnB;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,CAAA;AAAA,MAAC;AAGH,iBAAW,YAAY,iBAAiB;AACtC,cAAM,SAAS,MAAM,SAAS,aAAa,GAAG;AAE9C,cAAM,EAAE,gBAAgB,OAAO,aAAa,UAAU,MAAM,QAAQ,SAAS,UAAU,CAAA;AAEvF,YAAI,UAAU,MAAM;AAClB,iBAAO,IAAI,aAAa,KAAK;AAAA,QAC/B;AAEA,YAAI,eAAe;AACjB,cAAI,MAAM,kBAAkB;AAC5B,cAAI,MAAM,OAAO;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAGF,iBAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,aAAO,IAAI,aAAa,gCAAgC;AAAA,IAC1D;AAAA,IAEA,MAAM,OAAO,MAAM,SAAS,IAAI;AAC9B,UAAI,WAAW,OAAO;AACpB;AAAA,MACF;AAEA,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,OAAO,kBAAA;AAAA,MACnB;AAEA,UAAI,OAAO,KAAK,SAAS,WAAW,YAAY;AAC9C,eAAO,KAAK,SAAS,OAAO,MAAM,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Strapi, Common } from '@strapi/types';\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Common.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Common.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Common.Route[]> = {};\n\n _.forEach(strapi.api, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n };\n};\n\nexport default createContentAPI;\n"],"names":["_","instantiatePermissionsUtilities"],"mappings":";;;;;AAIA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAwB;AAC/E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Strapi, Common } from '@strapi/types';\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Common.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Common.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Common.Route[]> = {};\n\n _.forEach(strapi.api, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n };\n};\n\nexport default createContentAPI;\n"],"names":["_","instantiatePermissionsUtilities"],"mappings":";;;;;AAIA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAwB;AAC/E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;AAE1F,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAAwB,MAAM,KAAK,SAAS;AAKtE,MAAM,mBAAmB,CAAC,WAAmB;AAC3C,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA4C,CAAA;AAElDA,eAAAA,QAAE,QAAQ,OAAO,KAAK,CAAC,KAAK,YAAY;AACtC,YAAM,SAASA,WAAAA,QAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QACf;AAEA,eAAO;AAAA,MACT,CAAC,EAAE,OAAO,gBAAgB;AAE1B,UAAI,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,QAAQ,OAAO,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QACpD,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAAA,EAC/B;AAAA,IACJ,CAAC;AAEDA,eAAAA,QAAE,QAAQ,OAAO,SAAS,CAAC,QAAQ,eAAe;AAChD,YAAM,kBAAkB,wBAAwB,UAAU;AAE1D,UAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,eAAO,OAAO,OAAO,IAAI,eAAe,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAEA,YAAM,SAASA,WAAAA,QAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MAAA;AAGF,UAAI,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,WAAW,UAAU,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QAC1D,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAAA,EAC/B;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,aAAaC,MAAgC,MAAM;AAAA,IACnD;AAAA,EAAA;AAEJ;;"}
|