@strapi/utils
Version:
Shared utilities for the Strapi packages
91 lines (88 loc) • 3.01 kB
JavaScript
import { queryParameterSchemas } from './query-params.mjs';
/**
* AbstractRouteValidator provides the foundation for validating routes.
*
* This abstract class provides common query parameter validators that can be reused
* across different route validators in Strapi. It serves as a building block for
* both generic validation (plugins, external packages) and schema-aware validation
* (core content types).
*/ class AbstractRouteValidator {
/**
* Creates a fields query parameter validator
* Validates field selection for API responses
*/ get queryFields() {
return queryParameterSchemas.fields;
}
/**
* Creates a populate query parameter validator
* Validates which relations to populate in the response
*/ get queryPopulate() {
return queryParameterSchemas.populate;
}
/**
* Creates a sort query parameter validator
* Validates sorting options for list endpoints
*/ get querySort() {
return queryParameterSchemas.sort;
}
/**
* Creates a pagination query parameter validator
* Supports both page-based and offset-based pagination
*/ get pagination() {
return queryParameterSchemas.pagination;
}
/**
* Creates a filters query parameter validator
* Validates filtering options for list endpoints
*/ get filters() {
return queryParameterSchemas.filters;
}
/**
* Creates a locale query parameter validator
* Used for internationalization
*/ get locale() {
return queryParameterSchemas.locale;
}
/**
* Creates a status query parameter validator
* Used for draft & publish functionality
*/ get status() {
return queryParameterSchemas.status;
}
/**
* Creates a search query parameter validator
* Used for text search functionality
*/ get query() {
return queryParameterSchemas._q;
}
/**
* Provides access to all base query parameter validators
*/ get baseQueryValidators() {
return {
fields: ()=>this.queryFields.optional(),
populate: ()=>this.queryPopulate.optional(),
sort: ()=>this.querySort.optional(),
filters: ()=>this.filters.optional(),
pagination: ()=>this.pagination.optional(),
locale: ()=>this.locale.optional(),
status: ()=>this.status.optional(),
_q: ()=>this.query.optional()
};
}
/**
* Helper method to create a query parameters object with specified validators
*
* @param params - Array of query parameter names to include
* @returns Object containing Zod schemas for the requested query parameters
*/ queryParams(params) {
const validators = this.baseQueryValidators;
return params.reduce((acc, param)=>{
if (param in validators) {
acc[param] = validators[param]();
}
return acc;
}, {});
}
}
export { AbstractRouteValidator };
//# sourceMappingURL=base.mjs.map