@strapi/core 5.52.1 → 5.52.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.d.ts +1 -0
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +5 -1
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +5 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/core-api/routes/validation/common.d.ts +3 -3
- package/dist/core-api/routes/validation/common.js +3 -3
- package/dist/core-api/routes/validation/common.js.map +1 -1
- package/dist/core-api/routes/validation/common.mjs +3 -3
- package/dist/core-api/routes/validation/common.mjs.map +1 -1
- package/dist/core-api/routes/validation/content-type.d.ts +3 -3
- package/dist/core-api/routes/validation/content-type.d.ts.map +1 -1
- package/dist/core-api/routes/validation/content-type.js +1 -1
- package/dist/core-api/routes/validation/content-type.js.map +1 -1
- package/dist/core-api/routes/validation/content-type.mjs +1 -1
- package/dist/core-api/routes/validation/content-type.mjs.map +1 -1
- package/dist/core-api/routes/validation/schema-registry.d.ts +21 -0
- package/dist/core-api/routes/validation/schema-registry.d.ts.map +1 -0
- package/dist/core-api/routes/validation/schema-registry.js +99 -0
- package/dist/core-api/routes/validation/schema-registry.js.map +1 -0
- package/dist/core-api/routes/validation/schema-registry.mjs +77 -0
- package/dist/core-api/routes/validation/schema-registry.mjs.map +1 -0
- package/dist/core-api/routes/validation/utils.d.ts +6 -6
- package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
- package/dist/core-api/routes/validation/utils.js +34 -34
- package/dist/core-api/routes/validation/utils.js.map +1 -1
- package/dist/core-api/routes/validation/utils.mjs +34 -34
- package/dist/core-api/routes/validation/utils.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +2 -7
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.mjs +2 -3
- package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.d.ts +6 -1
- package/dist/loaders/plugins/get-user-plugins-config.d.ts.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +4 -0
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.mjs +4 -0
- package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
- package/dist/migrations/database/serialize-json-columns.d.ts +12 -0
- package/dist/migrations/database/serialize-json-columns.d.ts.map +1 -0
- package/dist/migrations/database/serialize-json-columns.js +35 -0
- package/dist/migrations/database/serialize-json-columns.js.map +1 -0
- package/dist/migrations/database/serialize-json-columns.mjs +33 -0
- package/dist/migrations/database/serialize-json-columns.mjs.map +1 -0
- package/dist/package.json.js +14 -14
- package/dist/package.json.mjs +14 -14
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +33 -41
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +33 -38
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-api/permissions/index.js +2 -2
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/index.mjs +2 -2
- package/dist/services/content-api/permissions/index.mjs.map +1 -1
- package/dist/services/server/register-routes.js +7 -7
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/register-routes.mjs +7 -7
- package/dist/services/server/register-routes.mjs.map +1 -1
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +9 -9
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-manager.mjs +9 -9
- package/dist/services/session-manager.mjs.map +1 -1
- package/dist/utils/zod.d.ts +23 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +46 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/utils/zod.mjs +43 -0
- package/dist/utils/zod.mjs.map +1 -0
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n sanitize,\n validate,\n sanitizeRoutesMapForSerialization,\n ALLOWED_QUERY_PARAM_KEYS,\n RESERVED_INPUT_PARAM_KEYS,\n} from '@strapi/utils';\nimport * as z from 'zod/v4';\n\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.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: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Runtime check for addQueryParams: we only allow scalar or array-of-scalar schemas (no nested objects).\n * We keep this in addition to the ZodQueryParamSchema type because: (1) TypeScript can be bypassed (JS,\n * any, or schema from another Zod instance); (2) it gives a clear, immediate error at registration\n * time instead of a later failure in validate/sanitize. This list is intentionally tied to Zod v4\n * constructor names; if Zod changes internals, this may need updating.\n * Compatibility: Zod 3 and Zod 4 Classic (zod/v4) both use these constructor names and\n * expose ._def with .innerType / .element for Optional/Default/Array. Zod 4 Core/Mini use\n * ._zod.def instead; we only accept schemas from the same zod/v4 instance used here.\n */\nconst ALLOWED_QUERY_SCHEMA_NAMES = new Set([\n 'ZodString',\n 'ZodNumber',\n 'ZodBoolean',\n 'ZodEnum',\n 'ZodOptional',\n 'ZodDefault',\n 'ZodArray',\n]);\n\nfunction assertQueryParamSchema(schema: unknown, param: string): void {\n const name = (schema as { constructor?: { name?: string } })?.constructor?.name ?? '';\n if (!ALLOWED_QUERY_SCHEMA_NAMES.has(name)) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" schema must be a scalar (string, number, boolean, enum) or array of scalars; got ${name}. Use addInputParams for nested objects.`\n );\n }\n if (name === 'ZodOptional' || name === 'ZodDefault') {\n const inner = (schema as { _def?: { innerType?: unknown } })?._def?.innerType;\n if (inner) assertQueryParamSchema(inner, param);\n return;\n }\n if (name === 'ZodArray') {\n const element = (schema as { _def?: { element?: unknown } })?._def?.element;\n if (element) assertQueryParamSchema(element, param);\n }\n}\n\nfunction resolveSchema<T>(schemaOrFactory: T | ((zInstance: typeof z) => T)): T {\n if (typeof schemaOrFactory === 'function') {\n return (schemaOrFactory as (zInstance: typeof z) => T)(z);\n }\n return schemaOrFactory;\n}\n\nconst mergeOneQueryParamIntoRoute = (\n route: Core.Route,\n param: string,\n schema: z.ZodType,\n matchRoute?: (route: Core.Route) => boolean\n): void => {\n if (matchRoute && !matchRoute(route)) return;\n const query = { ...route.request?.query };\n if (param in query) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" already exists on route ${route.method} ${route.path}`\n );\n }\n route.request = { ...route.request, query: { ...query, [param]: schema } };\n};\n\nconst mergeOneInputParamIntoRoute = (\n route: Core.Route,\n param: string,\n schema: z.ZodType,\n matchRoute?: (route: Core.Route) => boolean\n): void => {\n if (matchRoute && !matchRoute(route)) return;\n const jsonKey = 'application/json';\n type RouteBody = NonNullable<NonNullable<Core.Route['request']>['body']>;\n const body: RouteBody = route.request?.body ? { ...route.request.body } : ({} as RouteBody);\n const existing = body[jsonKey];\n const base =\n existing && typeof existing === 'object' && 'shape' in existing\n ? (existing as { shape: Record<string, z.ZodType> }).shape\n : {};\n if (param in base) {\n throw new Error(\n `contentAPI.addInputParams: param \"${param}\" already exists on route ${route.method} ${route.path}`\n );\n }\n body[jsonKey] = z.object({ ...base, [param]: schema }) as RouteBody[keyof RouteBody];\n route.request = { ...route.request, body };\n};\n\n/** Stored options with schema always resolved (never a function). */\ntype ResolvedQueryParamEntry = {\n param: string;\n schema: z.ZodType;\n matchRoute?: (route: Core.Route) => boolean;\n};\ntype ResolvedInputParamEntry = {\n param: string;\n schema: z.ZodType;\n matchRoute?: (route: Core.Route) => boolean;\n};\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const extraQueryParams: ResolvedQueryParamEntry[] = [];\n const extraInputParams: ResolvedInputParamEntry[] = [];\n\n const addQueryParam = (options: Modules.ContentAPI.QueryParamEntry & { param: string }) => {\n const { param, schema: schemaOrFactory, matchRoute } = options;\n const schema = resolveSchema(schemaOrFactory);\n assertQueryParamSchema(schema, param);\n if ((ALLOWED_QUERY_PARAM_KEYS as readonly string[]).includes(param)) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" is reserved by Strapi; use a different name`\n );\n }\n if (extraQueryParams.some((o) => o.param === param)) {\n throw new Error(`contentAPI.addQueryParams: param \"${param}\" has already been added`);\n }\n extraQueryParams.push({ param, schema, matchRoute });\n // Params are merged into routes when initRouting() runs (applyExtraParamsToRoutes).\n // We do not merge here: at register() time routes may not exist yet (lazy creation), and\n // merging here would cause double-merge when initRouting runs and 400 \"invalid param\" or\n // \"param already exists\" errors.\n };\n\n const addInputParam = (options: Modules.ContentAPI.InputParamEntry & { param: string }) => {\n const { param, schema: schemaOrFactory, matchRoute } = options;\n const schema = resolveSchema(schemaOrFactory);\n if ((RESERVED_INPUT_PARAM_KEYS as readonly string[]).includes(param)) {\n throw new Error(\n `contentAPI.addInputParams: param \"${param}\" is reserved by Strapi; use a different name`\n );\n }\n if (extraInputParams.some((o) => o.param === param)) {\n throw new Error(`contentAPI.addInputParams: param \"${param}\" has already been added`);\n }\n extraInputParams.push({ param, schema, matchRoute });\n // Params are merged into routes when initRouting() runs (applyExtraParamsToRoutes).\n };\n\n /**\n * Register extra query params. Keys = param names; values = { schema, matchRoute? }.\n * Schemas must be Zod scalar or array-of-scalars (enforced at runtime via assertQueryParamSchema).\n */\n const addQueryParams = (options: Modules.ContentAPI.AddQueryParamsOptions) => {\n Object.entries(options).forEach(([param, rest]) => addQueryParam({ param, ...rest }));\n };\n\n /**\n * Register extra input params (root-level body.data). Keys = param names; values = { schema, matchRoute? }.\n * Any Zod type allowed; enforced at registration time.\n */\n const addInputParams = (options: Modules.ContentAPI.AddInputParamsOptions) => {\n Object.entries(options).forEach(([param, rest]) => addInputParam({ param, ...rest }));\n };\n\n /** Merge all registered extra params into the given routes (mutates in place). Called at route registration. Throws if a param key already exists. */\n const applyExtraParamsToRoutes = (routes: Core.Route[]): void => {\n routes.forEach((route) => {\n for (const { param, schema, matchRoute } of extraQueryParams) {\n mergeOneQueryParamIntoRoute(route, param, schema, matchRoute);\n }\n for (const { param, schema, matchRoute } of extraInputParams) {\n mergeOneInputParamIntoRoute(route, param, schema, matchRoute);\n }\n });\n };\n\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (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 sanitizeRoutesMapForSerialization(routesMap);\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n addQueryParams,\n addInputParams,\n applyExtraParamsToRoutes,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","ALLOWED_QUERY_SCHEMA_NAMES","Set","assertQueryParamSchema","schema","param","name","has","Error","inner","_def","innerType","element","resolveSchema","schemaOrFactory","z","mergeOneQueryParamIntoRoute","matchRoute","query","request","method","mergeOneInputParamIntoRoute","jsonKey","body","existing","base","shape","object","createContentAPI","strapi","extraQueryParams","extraInputParams","addQueryParam","options","ALLOWED_QUERY_PARAM_KEYS","includes","some","o","push","addInputParam","RESERVED_INPUT_PARAM_KEYS","addQueryParams","Object","entries","forEach","rest","addInputParams","applyExtraParamsToRoutes","routes","getRoutesMap","routesMap","_","apis","api","apiName","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizeRoutesMapForSerialization","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import {\n sanitize,\n validate,\n sanitizeRoutesMapForSerialization,\n ALLOWED_QUERY_PARAM_KEYS,\n RESERVED_INPUT_PARAM_KEYS,\n} from '@strapi/utils';\nimport * as z from 'zod/v4';\n\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { inspectZodSchema, isZodType } from '../../utils/zod';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.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: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Runtime check for addQueryParams: we only allow scalar or array-of-scalar schemas (no nested objects).\n * We keep this in addition to the ZodQueryParamSchema type because: (1) TypeScript can be bypassed (JS,\n * any, or schema from another Zod instance); (2) it gives a clear, immediate error at registration\n * time instead of a later failure in validate/sanitize.\n */\nconst ALLOWED_QUERY_SCHEMA_TYPES = new Set(['string', 'number', 'boolean', 'enum']);\n\nconst formatZodSchemaName = (type: string): string => {\n if (type.length === 0) {\n return '';\n }\n\n return `Zod${type\n .split('_')\n .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join('')}`;\n};\n\nfunction assertQueryParamSchema(schema: unknown, param: string): void {\n if (!isZodType(schema)) {\n const name =\n typeof schema === 'object' && schema !== null\n ? ((schema as { constructor?: { name?: string } }).constructor?.name ?? 'Object')\n : typeof schema;\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" schema must be a scalar (string, number, boolean, enum) or array of scalars; got ${name}. Use addInputParams for nested objects.`\n );\n }\n\n const inspection = inspectZodSchema(schema);\n\n if (inspection.type === 'optional' || inspection.type === 'default') {\n assertQueryParamSchema(inspection.innerType, param);\n return;\n }\n\n if (inspection.type === 'array') {\n assertQueryParamSchema(inspection.element, param);\n return;\n }\n\n if (!ALLOWED_QUERY_SCHEMA_TYPES.has(inspection.type)) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" schema must be a scalar (string, number, boolean, enum) or array of scalars; got ${formatZodSchemaName(inspection.type)}. Use addInputParams for nested objects.`\n );\n }\n}\n\nfunction resolveSchema<T>(schemaOrFactory: T | ((zInstance: typeof z) => T)): T {\n if (typeof schemaOrFactory === 'function') {\n return (schemaOrFactory as (zInstance: typeof z) => T)(z);\n }\n return schemaOrFactory;\n}\n\nconst mergeOneQueryParamIntoRoute = (\n route: Core.Route,\n param: string,\n schema: z.ZodType,\n matchRoute?: (route: Core.Route) => boolean\n): void => {\n if (matchRoute && !matchRoute(route)) return;\n const query = { ...route.request?.query };\n if (param in query) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" already exists on route ${route.method} ${route.path}`\n );\n }\n route.request = { ...route.request, query: { ...query, [param]: schema } };\n};\n\nconst mergeOneInputParamIntoRoute = (\n route: Core.Route,\n param: string,\n schema: z.ZodType,\n matchRoute?: (route: Core.Route) => boolean\n): void => {\n if (matchRoute && !matchRoute(route)) return;\n const jsonKey = 'application/json';\n type RouteBody = NonNullable<NonNullable<Core.Route['request']>['body']>;\n const body: RouteBody = route.request?.body ? { ...route.request.body } : ({} as RouteBody);\n const existing = body[jsonKey];\n const base =\n existing && typeof existing === 'object' && 'shape' in existing\n ? (existing as { shape: Record<string, z.ZodType> }).shape\n : {};\n if (param in base) {\n throw new Error(\n `contentAPI.addInputParams: param \"${param}\" already exists on route ${route.method} ${route.path}`\n );\n }\n body[jsonKey] = z.object({ ...base, [param]: schema }) as RouteBody[keyof RouteBody];\n route.request = { ...route.request, body };\n};\n\n/** Stored options with schema always resolved (never a function). */\ntype ResolvedQueryParamEntry = {\n param: string;\n schema: z.ZodType;\n matchRoute?: (route: Core.Route) => boolean;\n};\ntype ResolvedInputParamEntry = {\n param: string;\n schema: z.ZodType;\n matchRoute?: (route: Core.Route) => boolean;\n};\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const extraQueryParams: ResolvedQueryParamEntry[] = [];\n const extraInputParams: ResolvedInputParamEntry[] = [];\n\n const addQueryParam = (options: Modules.ContentAPI.QueryParamEntry & { param: string }) => {\n const { param, schema: schemaOrFactory, matchRoute } = options;\n const schema = resolveSchema(schemaOrFactory);\n assertQueryParamSchema(schema, param);\n if ((ALLOWED_QUERY_PARAM_KEYS as readonly string[]).includes(param)) {\n throw new Error(\n `contentAPI.addQueryParams: param \"${param}\" is reserved by Strapi; use a different name`\n );\n }\n if (extraQueryParams.some((o) => o.param === param)) {\n throw new Error(`contentAPI.addQueryParams: param \"${param}\" has already been added`);\n }\n extraQueryParams.push({ param, schema, matchRoute });\n // Params are merged into routes when initRouting() runs (applyExtraParamsToRoutes).\n // We do not merge here: at register() time routes may not exist yet (lazy creation), and\n // merging here would cause double-merge when initRouting runs and 400 \"invalid param\" or\n // \"param already exists\" errors.\n };\n\n const addInputParam = (options: Modules.ContentAPI.InputParamEntry & { param: string }) => {\n const { param, schema: schemaOrFactory, matchRoute } = options;\n const schema = resolveSchema(schemaOrFactory);\n if ((RESERVED_INPUT_PARAM_KEYS as readonly string[]).includes(param)) {\n throw new Error(\n `contentAPI.addInputParams: param \"${param}\" is reserved by Strapi; use a different name`\n );\n }\n if (extraInputParams.some((o) => o.param === param)) {\n throw new Error(`contentAPI.addInputParams: param \"${param}\" has already been added`);\n }\n extraInputParams.push({ param, schema, matchRoute });\n // Params are merged into routes when initRouting() runs (applyExtraParamsToRoutes).\n };\n\n /**\n * Register extra query params. Keys = param names; values = { schema, matchRoute? }.\n * Schemas must be Zod scalar or array-of-scalars (enforced at runtime via assertQueryParamSchema).\n */\n const addQueryParams = (options: Modules.ContentAPI.AddQueryParamsOptions) => {\n Object.entries(options).forEach(([param, rest]) => addQueryParam({ param, ...rest }));\n };\n\n /**\n * Register extra input params (root-level body.data). Keys = param names; values = { schema, matchRoute? }.\n * Any Zod type allowed; enforced at registration time.\n */\n const addInputParams = (options: Modules.ContentAPI.AddInputParamsOptions) => {\n Object.entries(options).forEach(([param, rest]) => addInputParam({ param, ...rest }));\n };\n\n /** Merge all registered extra params into the given routes (mutates in place). Called at route registration. Throws if a param key already exists. */\n const applyExtraParamsToRoutes = (routes: Core.Route[]): void => {\n routes.forEach((route) => {\n for (const { param, schema, matchRoute } of extraQueryParams) {\n mergeOneQueryParamIntoRoute(route, param, schema, matchRoute);\n }\n for (const { param, schema, matchRoute } of extraInputParams) {\n mergeOneInputParamIntoRoute(route, param, schema, matchRoute);\n }\n });\n };\n\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n for (const [apiName, api] of Object.entries(strapi.apis)) {\n const routes = Object.values(api.routes)\n .flatMap((route) => ('routes' in route ? route.routes : route))\n .filter(filterContentAPI);\n\n if (routes.length === 0) {\n continue;\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 for (const [pluginName, plugin] of Object.entries(strapi.plugins)) {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n const pluginRoutes = Array.isArray(plugin.routes)\n ? plugin.routes\n : Object.values(plugin.routes).flatMap((route) => route.routes);\n\n const routes = pluginRoutes.map(transformPrefix).filter(filterContentAPI);\n\n if (routes.length === 0) {\n continue;\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 sanitizeRoutesMapForSerialization(routesMap);\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n addQueryParams,\n addInputParams,\n applyExtraParamsToRoutes,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","ALLOWED_QUERY_SCHEMA_TYPES","Set","formatZodSchemaName","length","split","map","part","charAt","toUpperCase","slice","join","assertQueryParamSchema","schema","param","isZodType","name","Error","inspection","inspectZodSchema","innerType","element","has","resolveSchema","schemaOrFactory","z","mergeOneQueryParamIntoRoute","matchRoute","query","request","method","mergeOneInputParamIntoRoute","jsonKey","body","existing","base","shape","object","createContentAPI","strapi","extraQueryParams","extraInputParams","addQueryParam","options","ALLOWED_QUERY_PARAM_KEYS","includes","some","o","push","addInputParam","RESERVED_INPUT_PARAM_KEYS","addQueryParams","Object","entries","forEach","rest","addInputParams","applyExtraParamsToRoutes","routes","getRoutesMap","routesMap","apiName","api","apis","values","flatMap","filter","apiPrefix","get","plugin","plugins","transformPrefix","pluginRoutes","Array","isArray","sanitizeRoutesMapForSerialization","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ const typeSymbol = Symbol.for('__type__');
|
|
|
50
50
|
/**
|
|
51
51
|
* Register actions from a specific API source into the result tree
|
|
52
52
|
*/ const registerAPIsActions = (apis, source)=>{
|
|
53
|
-
|
|
53
|
+
for (const [apiName, api] of Object.entries(apis ?? {})){
|
|
54
54
|
const controllers = ___default.default.reduce(api.controllers, (acc, controller, controllerName)=>{
|
|
55
55
|
const contentApiActions = ___default.default.pickBy(controller, isContentApi);
|
|
56
56
|
if (___default.default.isEmpty(contentApiActions)) {
|
|
@@ -64,7 +64,7 @@ const typeSymbol = Symbol.for('__type__');
|
|
|
64
64
|
controllers
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
}
|
|
67
|
+
}
|
|
68
68
|
};
|
|
69
69
|
registerAPIsActions(strapi1.apis, 'api');
|
|
70
70
|
registerAPIsActions(strapi1.plugins, 'plugin');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n for (const [apiName, api] of Object.entries(apis ?? {})) {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = Object.keys(contentApiActions);\n\n return acc;\n },\n {} as Record<string, string[]>\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`${source}::${apiName}`] = { controllers };\n }\n }\n };\n\n registerAPIsActions(strapi.apis, 'api');\n registerAPIsActions(strapi.plugins, 'plugin');\n\n return actionMap;\n };\n\n /**\n * Register all the content-API controllers actions into the action provider.\n * This method make use of the {@link getActionsMap} to generate the list of actions to register.\n */\n const registerActions = async () => {\n const actionsMap = getActionsMap();\n\n // For each API\n for (const [api, value] of Object.entries(actionsMap)) {\n const { controllers } = value;\n\n // Register controllers methods as actions\n for (const [controller, actions] of Object.entries(controllers)) {\n // Register each action individually\n await Promise.all(\n actions.map((action) => {\n const actionUID = `${api}.${controller}.${action}`;\n\n return providers.action.register(actionUID, {\n api,\n controller,\n action,\n uid: actionUID,\n });\n })\n );\n }\n }\n };\n\n // Create an instance of a content-API permission engine\n // and binds a custom validation handler to it\n const engine = createPermissionEngine({ providers });\n\n engine.on(\n 'before-format::validate.permission',\n createValidatePermissionHandler(providers.action)\n );\n\n return {\n engine,\n providers,\n registerActions,\n getActionsMap,\n };\n};\n"],"names":["typeSymbol","Symbol","for","createValidatePermissionHandler","actionProvider","permission","action","get","strapi","log","debug","providers","createActionProvider","condition","createConditionProvider","getActionsMap","actionMap","isContentApi","_","has","includes","registerAPIsActions","apis","source","apiName","api","Object","entries","controllers","reduce","acc","controller","controllerName","contentApiActions","pickBy","isEmpty","keys","plugins","registerActions","actionsMap","value","actions","Promise","all","map","actionUID","register","uid","engine","createPermissionEngine","on"],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ const typeSymbol = Symbol.for('__type__');
|
|
|
44
44
|
/**
|
|
45
45
|
* Register actions from a specific API source into the result tree
|
|
46
46
|
*/ const registerAPIsActions = (apis, source)=>{
|
|
47
|
-
|
|
47
|
+
for (const [apiName, api] of Object.entries(apis ?? {})){
|
|
48
48
|
const controllers = _.reduce(api.controllers, (acc, controller, controllerName)=>{
|
|
49
49
|
const contentApiActions = _.pickBy(controller, isContentApi);
|
|
50
50
|
if (_.isEmpty(contentApiActions)) {
|
|
@@ -58,7 +58,7 @@ const typeSymbol = Symbol.for('__type__');
|
|
|
58
58
|
controllers
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
};
|
|
63
63
|
registerAPIsActions(strapi1.apis, 'api');
|
|
64
64
|
registerAPIsActions(strapi1.plugins, 'plugin');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n for (const [apiName, api] of Object.entries(apis ?? {})) {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = Object.keys(contentApiActions);\n\n return acc;\n },\n {} as Record<string, string[]>\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`${source}::${apiName}`] = { controllers };\n }\n }\n };\n\n registerAPIsActions(strapi.apis, 'api');\n registerAPIsActions(strapi.plugins, 'plugin');\n\n return actionMap;\n };\n\n /**\n * Register all the content-API controllers actions into the action provider.\n * This method make use of the {@link getActionsMap} to generate the list of actions to register.\n */\n const registerActions = async () => {\n const actionsMap = getActionsMap();\n\n // For each API\n for (const [api, value] of Object.entries(actionsMap)) {\n const { controllers } = value;\n\n // Register controllers methods as actions\n for (const [controller, actions] of Object.entries(controllers)) {\n // Register each action individually\n await Promise.all(\n actions.map((action) => {\n const actionUID = `${api}.${controller}.${action}`;\n\n return providers.action.register(actionUID, {\n api,\n controller,\n action,\n uid: actionUID,\n });\n })\n );\n }\n }\n };\n\n // Create an instance of a content-API permission engine\n // and binds a custom validation handler to it\n const engine = createPermissionEngine({ providers });\n\n engine.on(\n 'before-format::validate.permission',\n createValidatePermissionHandler(providers.action)\n );\n\n return {\n engine,\n providers,\n registerActions,\n getActionsMap,\n };\n};\n"],"names":["typeSymbol","Symbol","for","createValidatePermissionHandler","actionProvider","permission","action","get","strapi","log","debug","providers","createActionProvider","condition","createConditionProvider","getActionsMap","actionMap","isContentApi","_","has","includes","registerAPIsActions","apis","source","apiName","api","Object","entries","controllers","reduce","acc","controller","controllerName","contentApiActions","pickBy","isEmpty","keys","plugins","registerActions","actionsMap","value","actions","Promise","all","map","actionUID","register","uid","engine","createPermissionEngine","on"],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
37
37
|
// Instantiate function-like routers
|
|
38
38
|
// Mutate admin.routes in-place and make sure router factories are instantiated correctly
|
|
39
39
|
strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);
|
|
40
|
-
|
|
40
|
+
for (const router of Object.values(strapi.admin.routes)){
|
|
41
41
|
router.type = router.type || 'admin';
|
|
42
42
|
router.prefix = router.prefix || `/admin`;
|
|
43
43
|
router.routes.forEach((route)=>{
|
|
@@ -47,7 +47,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
47
47
|
};
|
|
48
48
|
});
|
|
49
49
|
strapi.server.routes(router);
|
|
50
|
-
}
|
|
50
|
+
}
|
|
51
51
|
};
|
|
52
52
|
/**
|
|
53
53
|
* Register plugin routes
|
|
@@ -73,7 +73,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
73
73
|
// Instantiate function-like routers
|
|
74
74
|
// Mutate plugin.routes in-place and make sure router factories are instantiated correctly
|
|
75
75
|
plugin.routes = instantiateRouterInputs(plugin.routes, strapi);
|
|
76
|
-
|
|
76
|
+
for (const router of Object.values(plugin.routes)){
|
|
77
77
|
router.type = router.type ?? 'admin';
|
|
78
78
|
router.prefix = router.prefix ?? `/${pluginName}`;
|
|
79
79
|
router.routes.forEach((route)=>{
|
|
@@ -84,7 +84,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
84
84
|
});
|
|
85
85
|
strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);
|
|
86
86
|
strapi.server.routes(router);
|
|
87
|
-
}
|
|
87
|
+
}
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
};
|
|
@@ -96,7 +96,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
96
96
|
const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);
|
|
97
97
|
// Mutate api.routes in-place and make sure router factories are instantiated correctly
|
|
98
98
|
api.routes = instantiateRouterInputs(api.routes, strapi);
|
|
99
|
-
|
|
99
|
+
for (const router of Object.values(api.routes)){
|
|
100
100
|
// TODO: remove once auth setup
|
|
101
101
|
// pass meta down to compose endpoint
|
|
102
102
|
router.type = 'content-api';
|
|
@@ -107,8 +107,8 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
107
107
|
};
|
|
108
108
|
});
|
|
109
109
|
strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);
|
|
110
|
-
|
|
111
|
-
}
|
|
110
|
+
strapi.server.routes(router);
|
|
111
|
+
}
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
const instantiateRouterInputs = (routers, strapi)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-routes.js","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { registerOpenAPIRoute } from './openapi';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n registerOpenAPIRoute(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n
|
|
1
|
+
{"version":3,"file":"register-routes.js","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { registerOpenAPIRoute } from './openapi';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n registerOpenAPIRoute(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n for (const router of Object.values(strapi.admin.routes)) {\n router.type = router.type || 'admin';\n router.prefix = router.prefix || `/admin`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName: 'admin' };\n });\n strapi.server.routes(router);\n }\n};\n\n/**\n * Register plugin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerPluginRoutes = (strapi: Core.Strapi) => {\n for (const pluginName of Object.keys(strapi.plugins)) {\n const plugin = strapi.plugins[pluginName];\n\n const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);\n\n if (Array.isArray(plugin.routes)) {\n plugin.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(plugin.routes);\n\n strapi.server.routes({\n type: 'admin',\n prefix: `/${pluginName}`,\n routes: plugin.routes,\n });\n } else {\n // Instantiate function-like routers\n // Mutate plugin.routes in-place and make sure router factories are instantiated correctly\n plugin.routes = instantiateRouterInputs(plugin.routes, strapi);\n\n for (const router of Object.values(plugin.routes)) {\n router.type = router.type ?? 'admin';\n router.prefix = router.prefix ?? `/${pluginName}`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);\n\n strapi.server.routes(router);\n }\n }\n }\n};\n\n/**\n * Register api routes\n */\nconst registerAPIRoutes = (strapi: Core.Strapi) => {\n for (const apiName of Object.keys(strapi.apis)) {\n const api = strapi.api(apiName);\n\n const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);\n\n // Mutate api.routes in-place and make sure router factories are instantiated correctly\n api.routes = instantiateRouterInputs(api.routes, strapi);\n\n for (const router of Object.values(api.routes)) {\n // TODO: remove once auth setup\n // pass meta down to compose endpoint\n router.type = 'content-api';\n router.routes?.forEach((route) => {\n generateRouteScope(route);\n route.info = { apiName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);\n\n strapi.server.routes(router);\n }\n }\n};\n\nconst instantiateRouterInputs = (\n routers: Record<string, Core.RouterConfig>,\n strapi: Core.Strapi\n): Record<string, Core.Router> => {\n const entries = Object.entries(routers);\n\n return entries.reduce((record, [key, inputOrCallback]) => {\n const isCallback = typeof inputOrCallback === 'function';\n\n return { ...record, [key]: isCallback ? inputOrCallback({ strapi }) : inputOrCallback };\n }, {});\n};\n"],"names":["createRouteScopeGenerator","namespace","route","prefix","endsWith","handler","_","defaultsDeep","config","auth","scope","startsWith","strapi","registerAdminRoutes","registerAPIRoutes","registerPluginRoutes","registerOpenAPIRoute","generateRouteScope","admin","routes","instantiateRouterInputs","router","Object","values","type","forEach","info","pluginName","server","keys","plugins","plugin","Array","isArray","contentAPI","applyExtraParamsToRoutes","apiName","apis","api","routers","entries","reduce","record","key","inputOrCallback","isCallback"],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
31
31
|
// Instantiate function-like routers
|
|
32
32
|
// Mutate admin.routes in-place and make sure router factories are instantiated correctly
|
|
33
33
|
strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);
|
|
34
|
-
|
|
34
|
+
for (const router of Object.values(strapi.admin.routes)){
|
|
35
35
|
router.type = router.type || 'admin';
|
|
36
36
|
router.prefix = router.prefix || `/admin`;
|
|
37
37
|
router.routes.forEach((route)=>{
|
|
@@ -41,7 +41,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
41
41
|
};
|
|
42
42
|
});
|
|
43
43
|
strapi.server.routes(router);
|
|
44
|
-
}
|
|
44
|
+
}
|
|
45
45
|
};
|
|
46
46
|
/**
|
|
47
47
|
* Register plugin routes
|
|
@@ -67,7 +67,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
67
67
|
// Instantiate function-like routers
|
|
68
68
|
// Mutate plugin.routes in-place and make sure router factories are instantiated correctly
|
|
69
69
|
plugin.routes = instantiateRouterInputs(plugin.routes, strapi);
|
|
70
|
-
|
|
70
|
+
for (const router of Object.values(plugin.routes)){
|
|
71
71
|
router.type = router.type ?? 'admin';
|
|
72
72
|
router.prefix = router.prefix ?? `/${pluginName}`;
|
|
73
73
|
router.routes.forEach((route)=>{
|
|
@@ -78,7 +78,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
78
78
|
});
|
|
79
79
|
strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);
|
|
80
80
|
strapi.server.routes(router);
|
|
81
|
-
}
|
|
81
|
+
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
};
|
|
@@ -90,7 +90,7 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
90
90
|
const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);
|
|
91
91
|
// Mutate api.routes in-place and make sure router factories are instantiated correctly
|
|
92
92
|
api.routes = instantiateRouterInputs(api.routes, strapi);
|
|
93
|
-
|
|
93
|
+
for (const router of Object.values(api.routes)){
|
|
94
94
|
// TODO: remove once auth setup
|
|
95
95
|
// pass meta down to compose endpoint
|
|
96
96
|
router.type = 'content-api';
|
|
@@ -101,8 +101,8 @@ const createRouteScopeGenerator = (namespace)=>(route)=>{
|
|
|
101
101
|
};
|
|
102
102
|
});
|
|
103
103
|
strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);
|
|
104
|
-
|
|
105
|
-
}
|
|
104
|
+
strapi.server.routes(router);
|
|
105
|
+
}
|
|
106
106
|
}
|
|
107
107
|
};
|
|
108
108
|
const instantiateRouterInputs = (routers, strapi)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-routes.mjs","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { registerOpenAPIRoute } from './openapi';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n registerOpenAPIRoute(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n
|
|
1
|
+
{"version":3,"file":"register-routes.mjs","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { registerOpenAPIRoute } from './openapi';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n registerOpenAPIRoute(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n for (const router of Object.values(strapi.admin.routes)) {\n router.type = router.type || 'admin';\n router.prefix = router.prefix || `/admin`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName: 'admin' };\n });\n strapi.server.routes(router);\n }\n};\n\n/**\n * Register plugin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerPluginRoutes = (strapi: Core.Strapi) => {\n for (const pluginName of Object.keys(strapi.plugins)) {\n const plugin = strapi.plugins[pluginName];\n\n const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);\n\n if (Array.isArray(plugin.routes)) {\n plugin.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(plugin.routes);\n\n strapi.server.routes({\n type: 'admin',\n prefix: `/${pluginName}`,\n routes: plugin.routes,\n });\n } else {\n // Instantiate function-like routers\n // Mutate plugin.routes in-place and make sure router factories are instantiated correctly\n plugin.routes = instantiateRouterInputs(plugin.routes, strapi);\n\n for (const router of Object.values(plugin.routes)) {\n router.type = router.type ?? 'admin';\n router.prefix = router.prefix ?? `/${pluginName}`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);\n\n strapi.server.routes(router);\n }\n }\n }\n};\n\n/**\n * Register api routes\n */\nconst registerAPIRoutes = (strapi: Core.Strapi) => {\n for (const apiName of Object.keys(strapi.apis)) {\n const api = strapi.api(apiName);\n\n const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);\n\n // Mutate api.routes in-place and make sure router factories are instantiated correctly\n api.routes = instantiateRouterInputs(api.routes, strapi);\n\n for (const router of Object.values(api.routes)) {\n // TODO: remove once auth setup\n // pass meta down to compose endpoint\n router.type = 'content-api';\n router.routes?.forEach((route) => {\n generateRouteScope(route);\n route.info = { apiName };\n });\n strapi.contentAPI.applyExtraParamsToRoutes(router.routes ?? []);\n\n strapi.server.routes(router);\n }\n }\n};\n\nconst instantiateRouterInputs = (\n routers: Record<string, Core.RouterConfig>,\n strapi: Core.Strapi\n): Record<string, Core.Router> => {\n const entries = Object.entries(routers);\n\n return entries.reduce((record, [key, inputOrCallback]) => {\n const isCallback = typeof inputOrCallback === 'function';\n\n return { ...record, [key]: isCallback ? inputOrCallback({ strapi }) : inputOrCallback };\n }, {});\n};\n"],"names":["createRouteScopeGenerator","namespace","route","prefix","endsWith","handler","_","defaultsDeep","config","auth","scope","startsWith","strapi","registerAdminRoutes","registerAPIRoutes","registerPluginRoutes","registerOpenAPIRoute","generateRouteScope","admin","routes","instantiateRouterInputs","router","Object","values","type","forEach","info","pluginName","server","keys","plugins","plugin","Array","isArray","contentAPI","applyExtraParamsToRoutes","apiName","apis","api","routers","entries","reduce","record","key","inputOrCallback","isCallback"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -403,12 +403,16 @@ class SessionManager {
|
|
|
403
403
|
try {
|
|
404
404
|
const config = this.getConfigForOrigin(origin);
|
|
405
405
|
const algorithm = config.algorithm || constants.DEFAULT_ALGORITHM;
|
|
406
|
-
const
|
|
407
|
-
const
|
|
406
|
+
const verifyKey = this.getJwtKey(config, algorithm, 'verify');
|
|
407
|
+
const signKey = this.getJwtKey(config, algorithm, 'sign');
|
|
408
|
+
// Filter out conflicting options that are already handled by the payload or key selection
|
|
409
|
+
const jwtOptions = config.jwtOptions || {};
|
|
410
|
+
const { expiresIn: _expiresIn, privateKey: _privateKey, publicKey: _publicKey, ...jwtSignOptions } = jwtOptions;
|
|
411
|
+
const payload = jwt__default.default.verify(refreshToken, verifyKey, {
|
|
408
412
|
algorithms: [
|
|
409
413
|
algorithm
|
|
410
414
|
],
|
|
411
|
-
...
|
|
415
|
+
...jwtSignOptions
|
|
412
416
|
});
|
|
413
417
|
if (!payload || payload.type !== 'refresh') {
|
|
414
418
|
return {
|
|
@@ -434,9 +438,7 @@ class SessionManager {
|
|
|
434
438
|
iat: childIat,
|
|
435
439
|
exp: childExp
|
|
436
440
|
};
|
|
437
|
-
|
|
438
|
-
const { expiresIn: _expiresIn, ...jwtSignOptions } = config.jwtOptions || {};
|
|
439
|
-
const childToken = jwt__default.default.sign(childPayload, jwtKey, {
|
|
441
|
+
const childToken = jwt__default.default.sign(childPayload, signKey, {
|
|
440
442
|
algorithm,
|
|
441
443
|
noTimestamp: true,
|
|
442
444
|
...jwtSignOptions
|
|
@@ -501,9 +503,7 @@ class SessionManager {
|
|
|
501
503
|
iat: childIat,
|
|
502
504
|
exp: childExp
|
|
503
505
|
};
|
|
504
|
-
|
|
505
|
-
const { expiresIn: _expiresIn, ...jwtSignOptions } = config.jwtOptions || {};
|
|
506
|
-
const childToken = jwt__default.default.sign(payloadOut, jwtKey, {
|
|
506
|
+
const childToken = jwt__default.default.sign(payloadOut, signKey, {
|
|
507
507
|
algorithm,
|
|
508
508
|
noTimestamp: true,
|
|
509
509
|
...jwtSignOptions
|