@strapi/utils
Version:
Shared utilities for the Strapi packages
1 lines • 6.36 kB
Source Map (JSON)
{"version":3,"file":"query-params.mjs","sources":["../../../src/validation/route-validators/query-params.ts"],"sourcesContent":["import * as z from 'zod/v4';\n\n/**\n * Standard query parameter validators that can be reused across different route validators\n *\n * These schemas provide the basic structure validation for common Strapi API query parameters.\n * They can be used as building blocks for both generic validation and schema-aware validation.\n */\n\n/**\n * Fields parameter validation\n * Supports: 'title', ['title', 'name'], or '*'\n */\nexport const queryFieldsSchema = z\n .union([z.string(), z.array(z.string())])\n .describe('Select specific fields to return in the response');\n\n/**\n * Populate parameter validation\n * Supports: '*', 'relation', ['relation1', 'relation2'], or complex objects\n */\nexport const queryPopulateSchema = z\n .union([z.literal('*'), z.string(), z.array(z.string()), z.record(z.string(), z.any())])\n .describe('Specify which relations to populate in the response');\n\n/**\n * Sort parameter validation\n * Supports: 'name', ['name', 'title'], { name: 'asc' }, or [{ name: 'desc' }]\n */\nexport const querySortSchema = z\n .union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.enum(['asc', 'desc'])),\n z.array(z.record(z.string(), z.enum(['asc', 'desc']))),\n ])\n .describe('Sort the results by specified fields');\n\n/**\n * Pagination parameter validation\n * Supports both page-based and offset-based pagination\n */\nexport const paginationSchema = z\n .intersection(\n z.object({\n withCount: z.boolean().optional().describe('Include total count in response'),\n }),\n z.union([\n z\n .object({\n page: z.number().int().positive().describe('Page number (1-based)'),\n pageSize: z.number().int().positive().describe('Number of entries per page'),\n })\n .describe('Page-based pagination'),\n z\n .object({\n start: z.number().int().min(0).describe('Number of entries to skip'),\n limit: z.number().int().positive().describe('Maximum number of entries to return'),\n })\n .describe('Offset-based pagination'),\n ])\n )\n .describe('Pagination parameters');\n\n/**\n * Filters parameter validation\n * Supports any object structure for filtering\n */\nexport const filtersSchema = z.record(z.string(), z.any()).describe('Apply filters to the query');\n\n/**\n * Locale parameter validation\n * Used for internationalization\n */\nexport const localeSchema = z.string().describe('Specify the locale for localized content');\n\n/**\n * Status parameter validation\n * Used for draft & publish functionality\n */\nexport const statusSchema = z.enum(['draft', 'published']).describe('Filter by publication status');\n\n/**\n * Search query parameter validation\n * Used for text search functionality\n */\nexport const searchQuerySchema = z.string().describe('Search query string');\n\n/**\n * Complete collection of all standard query parameter schemas\n * This object provides easy access to all available query parameter validators\n */\nexport const queryParameterSchemas = {\n fields: queryFieldsSchema,\n populate: queryPopulateSchema,\n sort: querySortSchema,\n pagination: paginationSchema,\n filters: filtersSchema,\n locale: localeSchema,\n status: statusSchema,\n _q: searchQuerySchema,\n} as const;\n\n/**\n * Query parameter names supported by Strapi's API\n */\nexport type QueryParam = keyof typeof queryParameterSchemas;\n"],"names":["queryFieldsSchema","z","union","string","array","describe","queryPopulateSchema","literal","record","any","querySortSchema","enum","paginationSchema","intersection","object","withCount","boolean","optional","page","number","int","positive","pageSize","start","min","limit","filtersSchema","localeSchema","statusSchema","searchQuerySchema","queryParameterSchemas","fields","populate","sort","pagination","filters","locale","status","_q"],"mappings":"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"}