Introduction
Optimal is a system for building and validating any value with typed schemas, and first-class support for defined object structures, like options objects, configuration files, validation fields, and many more. Optimal aims to provide a powerful API, with high performance, the lowest possible filesize, and TypeScript-first support.
// Import schemas to build validators withimport { array, string, number, optimal } from 'optimal';
// Define and validate values with individual schemasconst maxSizeSchema = number().positive().lte(10000);
maxSizeSchema.validate(1234);
// Or define an explicit shaped blueprintconst schema = optimal({ name: string().notEmpty(), include: array().of(string()), exclude: array().of(string()), maxSize: maxSizeSchema});
// Pass a full or partial object to validateconst options = schema.validate({ name: 'Optimal' });
// Which validates, builds, and returns the following object{ name: 'Optimal', include: [], exclude: [], maxSize: 10000,}
#
Features- Zero dependencies, with a tree-shakable API.
- Powerful inferrence using a TypeScript first design.
- Runs in both Node.js and the browser.
- Smallest filesize: 5kB minified and gzipped!
- Immutable & fluent schema builder pattern.
- Recursively builds and validates nested structures.
- Supports common data types.
- Autofills missing or undefined fields with default values.
- Allows or restricts unknown fields.
- Mark fields as nullable, undefinable, optional, or required.
- Handles logical operators AND, OR, and XOR.
#
Requirements- Node v12.17 (server)
- Edge, Chrome, Firefox, Safari (browser)
#
InstallationInstall optimal with yarn or npm.
- Yarn
- npm
yarn add optimal
npm install optimal
If using TypeScript, we highly encourage the use of strict mode. We cannot guarantee types will infer correctly otherwise.
tsconfig.json
{ "compilerOptions": { "strict": true }}