@openapi-typescript-infra/service
Version:
An opinionated framework for building configuration driven services - web, api, or ob. Uses OpenAPI, pino logging, express, confit, Typescript and vitest.
24 lines (20 loc) • 662 B
text/typescript
import { ConfigurationSchema } from './schema.js';
export interface ConfigValidationError {
path: string;
message: string;
}
export type ConfigurationValidator<Config extends ConfigurationSchema> = (config: Config) => {
success: boolean;
errors: ConfigValidationError[];
};
export function validateConfiguration<Config extends ConfigurationSchema>(
config: Config,
validator: ConfigurationValidator<Config>,
) {
const result = validator(config);
if (!result.success) {
const errorMessages = result.errors.map((e) => ` - ${e.path}: ${e.message}`).join('\n');
throw new Error(`Configuration validation failed:
${errorMessages}`);
}
}