@cratestack/validator-yup
v0.8.6
Published
An RpcLink for CrateStack's generated TypeScript RPC client that validates request input against per-op yup schemas.
Downloads
4,348
Maintainers
Readme
@cratestack/validator-yup
An RpcLink
(issue #182) for CrateStack's generated
TypeScript RPC client (transport rpc schemas) that validates request.input against a per-op
yup schema before the call reaches the network — client-side
validation with the exact same schema shape your server-side procedure/model input already has,
instead of hoping the generated types alone catch a bad call at compile time.
Usage
import { createYupValidatorLink } from "@cratestack/validator-yup";
import { CratestackRpcRuntime } from "./generated/runtime"; // your project's generated client
import * as yup from "yup";
const runtime = new CratestackRpcRuntime("https://api.example.com", {
links: [
createYupValidatorLink({
"model.Order.create": yup.object({ total: yup.number().positive().required() }),
}),
],
});Ops with no configured schema pass through unvalidated — this is opt-in per op, not a blanket
gate. On success, the schema's cast output (defaults, type coercion) becomes the actual request
input, not just a type-level assertion. On failure, the chain short-circuits — the real network
call never happens — and the call rejects the same way a server-side validation failure would,
with an RpcErrorBody carrying code: "invalid_argument".
