fortify-schema
Version:
A modern TypeScript validation library designed around familiar interface syntax and powerful conditional validation. Experience schema validation that feels natural to TypeScript developers while unlocking advanced runtime validation capabilities.
121 lines (94 loc) • 3.43 kB
Markdown
## 📝 Basic Types
| Type | Syntax | Example |
| ----------- | ----------- | --------------------- |
| **String** | `"string"` | `name: "string"` |
| **Number** | `"number"` | `age: "number"` |
| **Boolean** | `"boolean"` | `active: "boolean"` |
| **Date** | `"date"` | `createdAt: "date"` |
| **Any** | `"any"` | `metadata: "any"` |
| **unknown** | `"unknown"` | `property: "unknown"` |
| **object** | `"object"` | `data: "object"` |
_Note: Bool is an aliax for Boolean_
## 🎯 Constrained Types
| Type | Syntax | Example |
| ----------------- | ------------------- | ---------------------- |
| **String Length** | `"string(min,max)"` | `name: "string(2,50)"` |
| **Number Range** | `"number(min,max)"` | `age: "number(0,120)"` |
| **Integer** | `"int"` | `count: "int"` |
| **Positive** | `"positive"` | `id: "positive"` |
| **Negative** | `"negative"` | `debt: "negative"` |
| **double** | `"double"` | `fl: "double"` |
## 📧 Format Types
| Type | Syntax | Example |
| -------------- | ------------ | ---------------------- |
| **Email** | `"email"` | `email: "email"` |
| **text** | `"text"` | `description: "text"` |
| **password** | `"password"` | `userPass: "password"` |
| **URL** | `"url"` | `website: "url"` |
| **UUID** | `"uuid"` | `id: "uuid"` |
| **Phone** | `"phone"` | `mobile: "phone"` |
| **IP Address** | `"ip"` | `server: "ip"` |
| **JSON** | `"json"` | `config: "json"` |
| **Hex Color** | `"hexcolor"` | `color: "hexcolor"` |
| **Base64** | `"base64"` | `data: "base64"` |
| **JWT** | `"jwt"` | `token: "jwt"` |
| **SemVer** | `"semver"` | `version: "semver"` |
| **slug** | `"slug"` | `test: "semver"` |
## 🔗 Union Types
```typescript
// Basic unions
status: "active|inactive|pending";
role: "admin|user|guest";
// Mixed type unions
id: "string|number";
value: "string|number|boolean";
```
## 📋 Array Types
```typescript
// Basic arrays
tags: "string[]";
scores: "number[]";
// Optional arrays
categories: "string[]?";
// Array constraints
limitedTags: "string[](1,5)"; // 1-5 items
minItems: "string[](2,)"; // Minimum 2 items
maxItems: "string[](,10)"; // Maximum 10 items
// Combined constraints
usernames: "string(3,20)[](1,100)"; // 1-100 usernames, each 3-20 chars
```
## ❓ Optional Types
```typescript
// Optional fields (can be undefined)
nickname: "string?";
bio: "string(,500)?";
avatar: "url?";
// Optional arrays
tags: "string[]?";
scores: "number[]?";
```
## 🎨 Literal Values
```typescript
// String literals
type: "=user";
version: "=2.0";
// Number literals
apiVersion: "=1";
maxRetries: "=3";
// Boolean literals
isEnabled: "=true";
isLegacy: "=false";
// Complex literals
config: '={"theme":"dark"}';
tags: '=["default","user"]';
```
## 🔍 Custom Patterns
```typescript
// Regex patterns
zipCode: "string(/^\\d{5}(-\\d{4})?$/)";
username: "string(/^[a-zA-Z0-9_]{3,20}$/)";
hexColor: "string(/^#[0-9A-Fa-f]{6}$/)";
// Common patterns
creditCard: "string(/^\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}$/)";
ssn: "string(/^\\d{3}-\\d{2}-\\d{4}$/)";
```