Primitives & Literals
Validate strings, numbers, bigints, booleans, dates, and unit types.
String Constraints & Formats
Strings support bounds, prefixes, suffixes, regex checks, and standard formats (UUID, CUID, ULID, NanoID, Email, URL, IPv4, IPv6, Datetime):
Schema Definition
infer.string().min(3).max(255);
infer.string().length(8);
infer.string().email();
infer.string().url();
infer.string().httpUrl();
infer.string().uuid();
infer.string().cuid();
infer.string().cuid2();
infer.string().ulid();
infer.string().nanoid();
infer.string().datetime();
infer.string().time();
infer.string().duration();
infer.string().ipv4();
infer.string().ipv6();
infer.string().hostname();
infer.string().trim().toLowerCase();Numbers & Floating Point Rules
Number validators include bounds, integer checks, IEEE-754 safety checks, and step multiples:
Schema Definition
infer.number().min(0).max(100);
infer.number().gt(0).lt(10);
infer.number().int(); // Must be integer
infer.number().safe(); // Safe within Number.MAX_SAFE_INTEGER
infer.number().finite(); // No Infinity
infer.number().positive(); // > 0
infer.number().nonnegative(); // >= 0
infer.number().multipleOf(5); // Floating-point safe moduloBigInt Rules
Native BigInt validation for large integers and blockchain balances:
Schema Definition
infer.bigint().min(100n).max(1_000_000n);
infer.bigint().positive();
infer.bigint().multipleOf(10n);Booleans, Dates & Unit Types
Subatom Infer provides full support for unit and top/bottom types:
Schema Definition
infer.boolean();
infer.date().min(new Date("2026-01-01"));
infer.literal("ACTIVE");
infer.null();
infer.undefined();
infer.void();
infer.any();
infer.unknown();
infer.never();
infer.symbol();
infer.nan();