@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
39 lines • 1.15 kB
JavaScript
/**
* @module Utilities
*/
import {} from "@standard-schema/spec";
export class ValidationError extends Error {
constructor(issues) {
const jsonMessage = JSON.stringify(issues, null, 2);
super(`A validation error occurred with the following issues:\n${jsonMessage}`);
this.name = ValidationError.name;
}
}
/**
* @internal
*
* @throws {ValidationError}
*/
export async function validate(schema, value) {
const validationResult = await schema["~standard"].validate(value);
if (validationResult.issues) {
throw new ValidationError(validationResult.issues);
}
return validationResult.value;
}
/**
* @internal
*
* @throws {ValidationError}
*/
export function validateSync(schema, value) {
const validationResult = schema["~standard"].validate(value);
if (validationResult instanceof Promise) {
throw new TypeError("validateSync() does not support async schemas. Use validate() instead.");
}
if (validationResult.issues) {
throw new ValidationError(validationResult.issues);
}
return validationResult.value;
}
//# sourceMappingURL=validate.js.map