@strapi/utils
Version:
Shared utilities for the Strapi packages
1 lines • 2.48 kB
Source Map (JSON)
{"version":3,"file":"content-api-route-params.mjs","sources":["../src/content-api-route-params.ts"],"sourcesContent":["import type { z } from 'zod/v4';\n\nimport { ALLOWED_QUERY_PARAM_KEYS } from './content-api-constants';\n\n/**\n * Minimal route shape used by sanitize/validate to derive allowed extra query/input params\n * from the route's request schema. When present, extra keys are taken from route.request.query\n * / route.request.body and validated or sanitized with Zod.\n */\nexport interface RouteLike {\n request?: {\n query?: Record<string, z.ZodTypeAny>;\n body?: Record<string, z.ZodTypeAny>;\n };\n}\n\n/** Extra query param keys from the route's request.query (excluding core ALLOWED_QUERY_PARAM_KEYS). */\nexport function getExtraQueryKeysFromRoute(route?: RouteLike): string[] {\n if (!route?.request?.query) return [];\n const coreKeys = new Set<string>(ALLOWED_QUERY_PARAM_KEYS as readonly string[]);\n return Object.keys(route.request.query).filter((key) => !coreKeys.has(key));\n}\n\n/** Root-level keys from the route's request.body['application/json'] schema shape (for Zod object schemas). */\nexport function getExtraRootKeysFromRouteBody(route?: RouteLike): string[] {\n const bodySchema = route?.request?.body?.['application/json'];\n if (!bodySchema || typeof bodySchema !== 'object') return [];\n if (\n 'shape' in bodySchema &&\n typeof (bodySchema as { shape: Record<string, unknown> }).shape === 'object'\n ) {\n return Object.keys((bodySchema as { shape: Record<string, unknown> }).shape);\n }\n return [];\n}\n"],"names":["getExtraQueryKeysFromRoute","route","request","query","coreKeys","Set","ALLOWED_QUERY_PARAM_KEYS","Object","keys","filter","key","has","getExtraRootKeysFromRouteBody","bodySchema","body","shape"],"mappings":";;AAgBA,wGACO,SAASA,0BAAAA,CAA2BC,KAAiB,EAAA;AAC1D,IAAA,IAAI,CAACA,KAAAA,EAAOC,OAAAA,EAASC,KAAAA,EAAO,OAAO,EAAE;IACrC,MAAMC,QAAAA,GAAW,IAAIC,GAAAA,CAAYC,wBAAAA,CAAAA;AACjC,IAAA,OAAOC,MAAAA,CAAOC,IAAI,CAACP,KAAAA,CAAMC,OAAO,CAACC,KAAK,CAAA,CAAEM,MAAM,CAAC,CAACC,GAAAA,GAAQ,CAACN,QAAAA,CAASO,GAAG,CAACD,GAAAA,CAAAA,CAAAA;AACxE;AAEA,gHACO,SAASE,6BAAAA,CAA8BX,KAAiB,EAAA;AAC7D,IAAA,MAAMY,UAAAA,GAAaZ,KAAAA,EAAOC,OAAAA,EAASY,IAAAA,GAAO,kBAAA,CAAmB;AAC7D,IAAA,IAAI,CAACD,UAAAA,IAAc,OAAOA,UAAAA,KAAe,QAAA,EAAU,OAAO,EAAE;AAC5D,IAAA,IACE,WAAWA,UAAAA,IACX,OAAO,UAACA,CAAkDE,KAAK,KAAK,QAAA,EACpE;AACA,QAAA,OAAOR,MAAAA,CAAOC,IAAI,CAAEK,WAAkDE,KAAK,CAAA;AAC7E,IAAA;AACA,IAAA,OAAO,EAAE;AACX;;;;"}