UNPKG

@code-pushup/models

Version:

Model definitions and validators for the Code PushUp CLI

34 lines 1.21 kB
import ansis from 'ansis'; import path from 'node:path'; import { ZodError, z } from 'zod'; export class SchemaValidationError extends Error { constructor(error, schema, { filePath }) { const formattedError = z.prettifyError(error); const schemaTitle = z.globalRegistry.get(schema)?.title; const summary = [ 'Invalid', schemaTitle ? ansis.bold(schemaTitle) : 'data', filePath && `in ${ansis.bold(path.relative(process.cwd(), filePath))} file`, ] .filter(Boolean) .join(' '); super(`${summary}\n${formattedError}\n`); this.name = SchemaValidationError.name; } } export function validate(schema, data, context = {}) { const result = schema.safeParse(data); if (result.success) { return result.data; } throw new SchemaValidationError(result.error, schema, context); } export async function validateAsync(schema, data, context = {}) { const result = await schema.safeParseAsync(data); if (result.success) { return result.data; } throw new SchemaValidationError(result.error, schema, context); } //# sourceMappingURL=validate.js.map