Package Exports
- @hazae41/gardien
Readme
Gardien
Type-safe runtime schema validation and parsing
Features
Current features
- 100% TypeScript and ESM
- No external dependencies
- Rust-like patterns
- Fully type-safe
- Unit-tested
- Zod-like syntax
Usage
Parsing a number
const value = Guard.asOrThrow(z.numberable().nonNegative(), "0x123")Validating a complex record
import { Guard, z } from "@hazae41/gardien"
const RpcRequestGuard = z.record({
jsonrpc: z.strong("2.0"),
id: z.union([z.strong(null), z.number(), z.string()]),
method: z.string(),
params: z.optional(z.unknown())
} as const)
function onMessage(message: string) {
const request = Guard.asOrThrow(RpcRequestGuard, JSON.parse(message) as unknown)
if (request.method === "example")
return void example(request)
throw new Error("Unknown method")
}