{"version":3,"file":"base.mjs","sources":["../../../src/validation/route-validators/base.ts"],"sourcesContent":["import * as z from 'zod/v4';\nimport { queryParameterSchemas, type QueryParam } from './query-params';\n\n/**\n * AbstractRouteValidator provides the foundation for validating routes.\n *\n * This abstract class provides common query parameter validators that can be reused\n * across different route validators in Strapi. It serves as a building block for\n * both generic validation (plugins, external packages) and schema-aware validation\n * (core content types).\n */\nexport abstract class AbstractRouteValidator {\n /**\n * Creates a fields query parameter validator\n * Validates field selection for API responses\n */\n get queryFields() {\n return queryParameterSchemas.fields;\n }\n\n /**\n * Creates a populate query parameter validator\n * Validates which relations to populate in the response\n */\n get queryPopulate() {\n return queryParameterSchemas.populate;\n }\n\n /**\n * Creates a sort query parameter validator\n * Validates sorting options for list endpoints\n */\n get querySort() {\n return queryParameterSchemas.sort;\n }\n\n /**\n * Creates a pagination query parameter validator\n * Supports both page-based and offset-based pagination\n */\n get pagination() {\n return queryParameterSchemas.pagination;\n }\n\n /**\n * Creates a filters query parameter validator\n * Validates filtering options for list endpoints\n */\n get filters() {\n return queryParameterSchemas.filters;\n }\n\n /**\n * Creates a locale query parameter validator\n * Used for internationalization\n */\n get locale() {\n return queryParameterSchemas.locale;\n }\n\n /**\n * Creates a status query parameter validator\n * Used for draft & publish functionality\n */\n get status() {\n return queryParameterSchemas.status;\n }\n\n /**\n * Creates a search query parameter validator\n * Used for text search functionality\n */\n get query() {\n return queryParameterSchemas._q;\n }\n\n /**\n * Provides access to all base query parameter validators\n */\n protected get baseQueryValidators() {\n return {\n fields: () => this.queryFields.optional(),\n populate: () => this.queryPopulate.optional(),\n sort: () => this.querySort.optional(),\n filters: () => this.filters.optional(),\n pagination: () => this.pagination.optional(),\n locale: () => this.locale.optional(),\n status: () => this.status.optional(),\n _q: () => this.query.optional(),\n };\n }\n\n /**\n * Helper method to create a query parameters object with specified validators\n *\n * @param params - Array of query parameter names to include\n * @returns Object containing Zod schemas for the requested query parameters\n */\n queryParams(params: QueryParam[]): Record {\n const validators = this.baseQueryValidators;\n\n return params.reduce(\n (acc, param) => {\n if (param in validators) {\n acc[param] = validators[param]();\n }\n return acc;\n },\n {} as Record\n );\n }\n}\n"],"names":["AbstractRouteValidator","queryFields","queryParameterSchemas","fields","queryPopulate","populate","querySort","sort","pagination","filters","locale","status","query","_q","baseQueryValidators","optional","queryParams","params","validators","reduce","acc","param"],"mappings":";;AAGA;;;;;;;AAOC,IACM,MAAeA,sBAAAA,CAAAA;AACpB;;;AAGC,MACD,IAAIC,WAAc,GAAA;AAChB,QAAA,OAAOC,sBAAsBC,MAAM;AACrC;AAEA;;;AAGC,MACD,IAAIC,aAAgB,GAAA;AAClB,QAAA,OAAOF,sBAAsBG,QAAQ;AACvC;AAEA;;;AAGC,MACD,IAAIC,SAAY,GAAA;AACd,QAAA,OAAOJ,sBAAsBK,IAAI;AACnC;AAEA;;;AAGC,MACD,IAAIC,UAAa,GAAA;AACf,QAAA,OAAON,sBAAsBM,UAAU;AACzC;AAEA;;;AAGC,MACD,IAAIC,OAAU,GAAA;AACZ,QAAA,OAAOP,sBAAsBO,OAAO;AACtC;AAEA;;;AAGC,MACD,IAAIC,MAAS,GAAA;AACX,QAAA,OAAOR,sBAAsBQ,MAAM;AACrC;AAEA;;;AAGC,MACD,IAAIC,MAAS,GAAA;AACX,QAAA,OAAOT,sBAAsBS,MAAM;AACrC;AAEA;;;AAGC,MACD,IAAIC,KAAQ,GAAA;AACV,QAAA,OAAOV,sBAAsBW,EAAE;AACjC;AAEA;;AAEC,MACD,IAAcC,mBAAsB,GAAA;QAClC,OAAO;AACLX,YAAAA,MAAAA,EAAQ,IAAM,IAAI,CAACF,WAAW,CAACc,QAAQ,EAAA;AACvCV,YAAAA,QAAAA,EAAU,IAAM,IAAI,CAACD,aAAa,CAACW,QAAQ,EAAA;AAC3CR,YAAAA,IAAAA,EAAM,IAAM,IAAI,CAACD,SAAS,CAACS,QAAQ,EAAA;AACnCN,YAAAA,OAAAA,EAAS,IAAM,IAAI,CAACA,OAAO,CAACM,QAAQ,EAAA;AACpCP,YAAAA,UAAAA,EAAY,IAAM,IAAI,CAACA,UAAU,CAACO,QAAQ,EAAA;AAC1CL,YAAAA,MAAAA,EAAQ,IAAM,IAAI,CAACA,MAAM,CAACK,QAAQ,EAAA;AAClCJ,YAAAA,MAAAA,EAAQ,IAAM,IAAI,CAACA,MAAM,CAACI,QAAQ,EAAA;AAClCF,YAAAA,EAAAA,EAAI,IAAM,IAAI,CAACD,KAAK,CAACG,QAAQ;AAC/B,SAAA;AACF;AAEA;;;;;MAMAC,WAAAA,CAAYC,MAAoB,EAA+B;QAC7D,MAAMC,UAAAA,GAAa,IAAI,CAACJ,mBAAmB;AAE3C,QAAA,OAAOG,MAAOE,CAAAA,MAAM,CAClB,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AACJ,YAAA,IAAIA,SAASH,UAAY,EAAA;AACvBE,gBAAAA,GAAG,CAACC,KAAAA,CAAM,GAAGH,UAAU,CAACG,KAAM,CAAA,EAAA;AAChC;YACA,OAAOD,GAAAA;AACT,SAAA,EACA,EAAC,CAAA;AAEL;AACF;;;;"}