fortify-schema
Version:
TypeScript interface-like schema validation system that's easier to use than Zod
133 lines (108 loc) • 5.53 kB
Markdown
# Changelog
All notable changes to Fortify Schema are documented in this file, following the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format and adhering to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- **Conditional Validation**: Enhanced support for conditional fields with full TypeScript inference.
- `*?` syntax: `"when role=admin *? string[] : string[]?"`
- Parentheses syntax: `"when(role=admin) then(string[]) else(string[]?)"`
- Import-based syntax: `When.field("role").is("admin").then("string[]").else("string[]?")`
- Provides compile-time type checking and runtime validation.
- Supports IDE autocompletion and error detection.
- **Schema Transformation Utilities**: Introduced `Mod` module for schema manipulation.
- `Mod.merge()`: Combine multiple schemas.
- `Mod.pick()`: Select specific fields.
- `Mod.omit()`: Remove specific fields.
- `Mod.partial()`: Make all fields optional.
- `Mod.required()`: Make all fields required.
- `Mod.extend()`: Add fields to existing schemas.
- **Extension System**: Added modular extensions with TypeScript support.
- `Smart`: Generates schemas from sample data or types.
- `When`: Supports advanced conditional validation.
- `Live`: Enables real-time validation for dynamic data.
- `Docs`: Generates schema documentation automatically.
- `Extensions`: Provides unified access to extension features.
- `Quick`: Offers shortcuts for common extension tasks.
- `TypeScriptGenerator`: Creates TypeScript types from schemas.
- **Value Creation**: Renamed `SchemaHelpers` to `Make` for clarity.
- `Make.const()`: Defines exact constant values.
- `Make.union()`: Creates union types with precise inference.
- **Strict Validation**: Enabled by default for precise type enforcement.
- **Documentation**: Overhauled for clarity and accessibility.
- [Complete Documentation](./docs/README.md)
- [Quick Reference](./docs/QUICK-REFERENCE.md)
- [Field Types Reference](./docs/FIELD-TYPES.md)
- [Examples](./docs/EXAMPLES.md)
- [Migration Guide](./docs/MIGRATION.md)
### Fixed
- ✅ **Regex Pattern Validation**: Resolved issue with regex pattern validation.
- ✅ **Optional Field Type Inference**: Improved TypeScript inference for optional fields.
- ✅ **Constraint Parsing**: Enhanced reliability of constraint parsing logic.
### Changed
- **API Naming**: Renamed `SchemaHelpers` to `Make` for improved developer experience.
- **Documentation Structure**: Reorganized for better navigation and discoverability.
- **Type System**: Strengthened type inference for seamless TypeScript integration.
### Performance
- Optimized validation performance for faster processing.
- Maintained minimal bundle size despite new features.
- Improved tree-shaking for better build optimization.
## [1.0.0] - 2025-06-14/2025-06-13
### Added
- **Interface-based Schema Definition**: TypeScript-like syntax for schema creation.
- **Basic Field Types**: Support for string, number, boolean, date, and array validation.
- **Format Validation**: Includes email, URL, UUID, and phone number formats.
- **Constraint System**: Supports length, range, and size constraints.
- **Array Validation**: Validates arrays with size constraints.
- **Union Types**: Allows multiple values with type safety.
- **Validation Methods**: Includes `parse()`, `safeParse()`, and `safeParseUnknown()`.
- **Error Handling**: Provides detailed error messages and warnings.
- **Loose Mode**: Optional type coercion for external data.
- **Documentation**: Includes getting started guide and basic examples.
### Features
- TypeScript-first design with zero dependencies.
- Small, tree-shakable bundle size.
- Precise type inference for robust type safety.
- Intuitive API for ease of use.
## Migration Notes
### From Pre-1.0 to 1.0+
For users upgrading from pre-release versions:
1. **Update Imports**
```typescript
// Old
import { Interface, SchemaHelpers } from 'fortify-schema';
// New
import { Interface, Make, Mod } from 'fortify-schema';
```
2. **Update Helper Usage**
```typescript
// Old
status: SchemaHelpers.union("active", "inactive"),
role: SchemaHelpers.const("admin")
// New
status: Make.union("active", "inactive"),
role: Make.const("admin")
```
3. **Use Transformation Utilities**
```typescript
const PublicSchema = Mod.omit(UserSchema, ["password"]);
const PartialSchema = Mod.partial(UserSchema);
```
### Breaking Changes
- Renamed `SchemaHelpers` to `Make` (use find/replace).
- Requires TypeScript 4.5+ for enhanced type inference.
- Default validation is stricter; use `.loose()` for previous behavior.
## Roadmap
### Upcoming Features
- **Async Validation**: Support for asynchronous validation rules.
- **Internationalization**: Multi-language error messages.
- **Plugin System**: Extensible validation plugins.
- **Performance Monitoring**: Built-in metrics for validation performance.
- **Custom Error Formatting**: Flexible error message customization.
### Long-term Goals
- **Runtime Schema Generation**: Generate schemas from TypeScript types.
- **Advanced Introspection**: Tools for schema analysis and documentation.
- **IDE Extensions**: Enhanced IDE support for schema development.
- **Framework Integrations**: Native support for popular frameworks.
## Contributing
Contributions are welcome! See the [Contributing Guide](./CONTRIBUTING.md) for details.
## License
MIT License - see [LICENSE](./LICENSE) for details.