@antithrow/standard-schema
v2.0.0
Published
Bridge Standard Schema validators to antithrow Result
Maintainers
Readme
Why
Schema validation libraries like Zod, Valibot, and
ArkType all implement the
Standard Schema spec.
@antithrow/standard-schema wraps any Standard Schema–conforming validator so validation
results come back as Result / Settled instead of raw success/failure objects.
import { validate } from "@antithrow/standard-schema";
import { z } from "zod";
const result = await validate(z.string().email(), input);
if (result.isOk()) {
console.log("valid:", result.value);
} else {
console.error("invalid:", result.error.issues);
}Installation
bun add @antithrow/standard-schemaUsage
Async validation (recommended)
validate returns a Result. Sync schemas settle immediately as Ok or Err;
async schemas return Pending, and await validate(...) yields a Settled result.
import { validate } from "@antithrow/standard-schema";
const result = await validate(schema, input);
const value = result.unwrapOr(fallback);Synchronous validation
validateSync returns a Settled result. It throws TypeError if the schema's
validate method returns a Promise.
import { validateSync } from "@antithrow/standard-schema";
const result = validateSync(schema, input);
const value = result.unwrapOr(fallback);Error handling
Both functions catch exceptions thrown by the validator and wrap them in a
synthetic FailureResult with a single issue containing the error message.
This keeps the error type uniform — you always get FailureResult.
const result = await validate(throwingSchema, input);
// Err({ issues: [{ message: "..." }] })Reference
Full reference: https://antithrow.dev/docs/reference/standard-schema
