@sjsf-lab/ata-validator
Advanced tools
| import type { FieldValueValidator, FormValueValidator, Validator } from "@sjsf/form"; | ||
| import type { ValidationResult as AtaValidationResult } from "ata-validator"; | ||
| import type { ValueCloner } from "../validator.js"; | ||
| import { type ErrorsTransformerOptions } from "../errors.js"; | ||
@@ -11,3 +12,3 @@ export type CompiledValidator = (data: unknown) => AtaValidationResult | { | ||
| }; | ||
| export interface ValidatorOptions { | ||
| export interface ValidatorOptions extends ValueCloner { | ||
| validateFunctions: ValidateFunctions; | ||
@@ -17,6 +18,6 @@ augmentSuffix?: string; | ||
| export declare function createValidator(options: ValidatorOptions): Validator; | ||
| export interface FormValueValidatorOptions extends ValidatorOptions, ErrorsTransformerOptions { | ||
| export interface FormValueValidatorOptions extends ValidatorOptions, ErrorsTransformerOptions, ValueCloner { | ||
| } | ||
| export declare function createFormValueValidator<T>(options: FormValueValidatorOptions): FormValueValidator<T>; | ||
| export interface FieldValueValidatorOptions extends ValidatorOptions { | ||
| export interface FieldValueValidatorOptions extends ValidatorOptions, ValueCloner { | ||
| } | ||
@@ -26,2 +27,2 @@ export declare function createFieldValueValidator(options: FieldValueValidatorOptions): FieldValueValidator; | ||
| } | ||
| export declare function createFormValidatorFactory<T>(vOptions: ValidatorOptions): (options: Omit<FormValidatorOptions, keyof ValidatorOptions>) => Validator & FormValueValidator<T> & FieldValueValidator; | ||
| export declare function createFormValidatorFactory<T>({ cloneValue, ...vOptions }: Omit<ValidatorOptions, keyof ValueCloner> & Partial<ValueCloner>): (options: Omit<FormValidatorOptions, keyof ValidatorOptions>) => Validator & FormValueValidator<T> & FieldValueValidator; |
@@ -27,3 +27,3 @@ import { DEFAULT_AUGMENT_SUFFIX } from "@sjsf/form/validators/precompile"; | ||
| const validator = getValidator(options, schema); | ||
| return validator(formValue).valid; | ||
| return validator(options.cloneValue(formValue)).valid; | ||
| }, | ||
@@ -37,3 +37,3 @@ }; | ||
| const validator = getValidator(options, rootSchema); | ||
| const { valid, errors } = validator(formValue); | ||
| const { valid, errors } = validator(options.cloneValue(formValue)); | ||
| if (valid) { | ||
@@ -52,3 +52,3 @@ return { | ||
| const validator = getValidator(options, field.schema); | ||
| const { valid, errors } = validator(fieldValue); | ||
| const { valid, errors } = validator(options.cloneValue(fieldValue)); | ||
| if (valid) { | ||
@@ -61,5 +61,6 @@ return []; | ||
| } | ||
| export function createFormValidatorFactory(vOptions) { | ||
| export function createFormValidatorFactory({ cloneValue = structuredClone, ...vOptions }) { | ||
| return (options) => { | ||
| const full = { | ||
| cloneValue, | ||
| ...vOptions, | ||
@@ -66,0 +67,0 @@ ...options, |
+10
-7
@@ -1,5 +0,8 @@ | ||
| import type { Config, FieldValueValidator, FormValueValidator, Schema, Validator } from "@sjsf/form"; | ||
| import type { Config, FieldValueValidator, FormValue, FormValueValidator, Schema, Validator } from "@sjsf/form"; | ||
| import { type MapLike } from "@sjsf/form/lib/memoize"; | ||
| import { Validator as AtaValidator } from "ata-validator"; | ||
| import { type ErrorsTransformerOptions } from "./errors.js"; | ||
| export interface ValueCloner { | ||
| cloneValue: (value: FormValue) => FormValue; | ||
| } | ||
| export type AtaValidatorFactory = (schema: Schema) => AtaValidator; | ||
@@ -19,16 +22,16 @@ export declare const COLOR_FORMAT_REGEX: RegExp; | ||
| export declare function createFieldSchemaValidatorFactory(factory: AtaValidatorFactory, cache?: WeakMap<Schema, AtaValidator>): (config: Config) => AtaValidator; | ||
| export interface ValidatorOptions { | ||
| export interface ValidatorOptions extends ValueCloner { | ||
| createSchemaValidator: (schema: Schema, rootSchema: Schema) => AtaValidator; | ||
| } | ||
| export declare function createValidator({ createSchemaValidator, }: ValidatorOptions): Validator; | ||
| export interface FormValueValidatorOptions extends ValidatorOptions, ErrorsTransformerOptions { | ||
| export declare function createValidator({ createSchemaValidator, cloneValue, }: ValidatorOptions): Validator; | ||
| export interface FormValueValidatorOptions extends ValidatorOptions, ErrorsTransformerOptions, ValueCloner { | ||
| } | ||
| export declare function createFormValueValidator<T>(options: FormValueValidatorOptions): FormValueValidator<T>; | ||
| export interface FieldValueValidatorOptions { | ||
| export interface FieldValueValidatorOptions extends ValueCloner { | ||
| compileFieldSchema: (config: Config) => AtaValidator; | ||
| } | ||
| export declare function createFieldValueValidator({ compileFieldSchema, }: FieldValueValidatorOptions): FieldValueValidator; | ||
| export declare function createFieldValueValidator({ compileFieldSchema, cloneValue, }: FieldValueValidatorOptions): FieldValueValidator; | ||
| export interface FormValidatorOptions extends ValidatorOptions, FormValueValidatorOptions, FieldValueValidatorOptions { | ||
| } | ||
| export declare function createFormValidator<T>({ factory, schemaValidatorsCache, fieldsValidatorsCache, createSchemaValidator, compileFieldSchema, ...rest }?: Partial<FormValidatorOptions> & { | ||
| export declare function createFormValidator<T>({ factory, schemaValidatorsCache, fieldsValidatorsCache, createSchemaValidator, compileFieldSchema, cloneValue, ...rest }?: Partial<FormValidatorOptions> & { | ||
| factory?: AtaValidatorFactory; | ||
@@ -35,0 +38,0 @@ schemaValidatorsCache?: ValidatorsCache; |
@@ -37,3 +37,3 @@ import { DATA_URL_FORMAT, ID_KEY, prefixSchemaRefs, ROOT_SCHEMA_PREFIX, } from "@sjsf/form/core"; | ||
| } | ||
| export function createValidator({ createSchemaValidator, }) { | ||
| export function createValidator({ createSchemaValidator, cloneValue, }) { | ||
| return { | ||
@@ -45,3 +45,3 @@ isValid(schemaDef, rootSchema, formValue) { | ||
| const validator = createSchemaValidator(schemaDef, rootSchema); | ||
| return validator.isValidObject(formValue); | ||
| return validator.isValidObject(cloneValue(formValue)); | ||
| }, | ||
@@ -55,3 +55,3 @@ }; | ||
| const validator = options.createSchemaValidator(rootSchema, rootSchema); | ||
| const { valid, errors } = validator.validate(formValue); | ||
| const { valid, errors } = validator.validate(options.cloneValue(formValue)); | ||
| if (valid) { | ||
@@ -66,7 +66,7 @@ return { | ||
| } | ||
| export function createFieldValueValidator({ compileFieldSchema, }) { | ||
| export function createFieldValueValidator({ compileFieldSchema, cloneValue, }) { | ||
| return { | ||
| validateFieldValue(field, fieldValue) { | ||
| const validator = compileFieldSchema(field); | ||
| const { valid, errors } = validator.validate(fieldValue); | ||
| const { valid, errors } = validator.validate(cloneValue(fieldValue)); | ||
| if (valid) { | ||
@@ -79,5 +79,6 @@ return []; | ||
| } | ||
| export function createFormValidator({ factory = defaultValidatorFactory, schemaValidatorsCache, fieldsValidatorsCache, createSchemaValidator = createSchemaValidatorFactory(factory, schemaValidatorsCache), compileFieldSchema = createFieldSchemaValidatorFactory(factory, fieldsValidatorsCache), ...rest } = {}) { | ||
| export function createFormValidator({ factory = defaultValidatorFactory, schemaValidatorsCache, fieldsValidatorsCache, createSchemaValidator = createSchemaValidatorFactory(factory, schemaValidatorsCache), compileFieldSchema = createFieldSchemaValidatorFactory(factory, fieldsValidatorsCache), cloneValue = structuredClone, ...rest } = {}) { | ||
| const options = { | ||
| ...rest, | ||
| cloneValue, | ||
| createSchemaValidator, | ||
@@ -84,0 +85,0 @@ compileFieldSchema, |
+3
-3
| { | ||
| "name": "@sjsf-lab/ata-validator", | ||
| "version": "3.0.0", | ||
| "version": "3.1.0", | ||
| "description": "The ata based validator for svelte-jsonschema-form", | ||
@@ -44,6 +44,6 @@ "license": "MIT", | ||
| "@sjsf/form": "^3.5.0", | ||
| "ata-validator": "^0.12.6" | ||
| "ata-validator": "^0.13.1" | ||
| }, | ||
| "devDependencies": { | ||
| "ata-validator": "^0.12.6", | ||
| "ata-validator": "^0.13.2", | ||
| "svelte": "^5.55.5", | ||
@@ -50,0 +50,0 @@ "@sjsf/form": "3.6.0", |
16521
3.68%286
2.14%