JSPM

@schemini/core

2.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q37584F
  • License MIT

TypeScript-first schema validation library with JSON Schema support

Package Exports

  • @schemini/core
  • @schemini/core/json-schema
  • @schemini/core/validators

Readme

schemini

@schemini/core

CI npm version TypeScript License: MIT

A lightweight, TypeScript-first schema validation library with JSON Schema support.

Features

  • TypeScript-first - Full type inference with s.infer<>
  • Zero dependencies - Lightweight core (~15KB)
  • JSON Schema support - Bidirectional conversion to/from JSON Schema
  • Brazilian validators - CPF, CNPJ, CEP validation built-in
  • Coercion - Automatic type conversion for form data
  • Extensible - Custom validators with refine() and transform()

Installation

npm install @schemini/core

For Portuguese error messages:

npm install @schemini/locale

Quick Start

import { s } from "@schemini/core";

// Define a schema
const userSchema = s.object({
  name: s.string().min(1).max(100),
  email: s.string().email(),
  age: s.number().int().positive().optional(),
});

// Infer the type
type User = s.infer<typeof userSchema>;

// Parse data (throws on error)
const user = userSchema.parse({
  name: "John Doe",
  email: "john@example.com",
  age: 30,
});

// Safe parse (returns result object)
const result = userSchema.safeParse(data);
if (result.success) {
  console.log(result.data);
} else {
  console.log(result.error.issues);
}

Available Types

// Primitives
s.string()    // String with .min(), .max(), .email(), .uuid(), .pattern()
s.number()    // Number with .int(), .min(), .max(), .positive(), .negative()
s.boolean()   // Boolean

// Complex
s.object({})  // Object with .pick(), .omit(), .partial(), .extend()
s.array()     // Array with .min(), .max(), .nonempty()
s.union([])   // Union types
s.literal()   // Literal values
s.enum([])    // Enum values

// Brazilian Validators
s.string().cpf()      // CPF validation
s.string().cnpj()     // CNPJ validation
s.string().cep()      // CEP validation
s.string().phone()    // Phone validation
s.string().currency() // Currency format

// Modifiers
.optional()   // T | undefined
.nullable()   // T | null
.default()    // Default value
.transform()  // Transform output
.refine()     // Custom validation

JSON Schema

// Convert to JSON Schema
const jsonSchema = s.toJsonSchema(userSchema);

// Convert from JSON Schema
const schema = s.fromJsonSchema(jsonSchema);

Comparison with Zod

Feature schemini Zod
Type inference Yes Yes
JSON Schema support Built-in Plugin
Brazilian validators Built-in No
Bundle size ~15KB ~50KB

Documentation

Full documentation →

License

MIT