fortify-schema
Version:
TypeScript interface-like schema validation system that's easier to use than Zod
110 lines (106 loc) • 3.04 kB
JavaScript
;
var FormValidator = require('./FormValidator.js');
var LiveValidator = require('./LiveValidator.js');
var StreamValidator = require('./StreamValidator.js');
/**
* Real-time Validation - Revolutionary live validation system
*
* This module provides real-time validation with reactive updates,
* perfect for forms and live data validation.
*
* Uses modular validation engine for consistent validation logic.
*/
/**
* Real-time validation utilities
*/
const Live = {
/**
* Create a reactive validator that validates in real-time
*
* @example
* ```typescript
* const UserSchema = Interface({
* email: "email",
* username: "string(3,20)",
* password: "string(8,)"
* });
*
* const liveValidator = Live.validator(UserSchema);
*
* // Listen for validation changes
* liveValidator.onValidation((result) => {
* console.log('Validation result:', result);
* updateUI(result);
* });
*
* // Validate field by field
* liveValidator.validateField('email', 'user@example.com');
* liveValidator.validateField('username', 'johndoe');
*
* // Get current state
* console.log(liveValidator.isValid); // true/false
* console.log(liveValidator.errors); // Current errors
* ```
*/
validator(schema) {
return new LiveValidator.LiveValidator(schema);
},
/**
* Create a form validator with field-level validation
*
* @example
* ```typescript
* const formValidator = Live.form(UserSchema);
*
* // Bind to form fields
* formValidator.bindField('email', emailInput);
* formValidator.bindField('username', usernameInput);
*
* // Auto-validation on input
* formValidator.enableAutoValidation();
*
* // Submit validation
* formValidator.onSubmit((isValid, data, errors) => {
* if (isValid) {
* submitForm(data);
* } else {
* showErrors(errors);
* }
* });
* ```
*/
form(schema) {
return new FormValidator.FormValidator(schema);
},
/**
* Create a stream validator for continuous data validation
*
* @example
* ```typescript
* const streamValidator = Live.stream(DataSchema);
*
* // Validate streaming data
* dataStream.subscribe((data) => {
* streamValidator.validate(data);
* });
*
* // Handle validation results
* streamValidator.onValid((data) => {
* processValidData(data);
* });
*
* streamValidator.onInvalid((data, errors) => {
* logInvalidData(data, errors);
* });
* ```
*/
stream(schema) {
return new StreamValidator.StreamValidator(schema);
}
};
exports.FormValidator = FormValidator.FormValidator;
exports.LiveValidator = LiveValidator.LiveValidator;
exports.StreamValidator = StreamValidator.StreamValidator;
exports.Live = Live;
exports.default = Live;
//# sourceMappingURL=index.js.map