@ereo/forms 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/a11y.d.ts +52 -0
  2. package/dist/a11y.d.ts.map +1 -0
  3. package/dist/accessibility.d.ts +152 -0
  4. package/dist/accessibility.d.ts.map +1 -0
  5. package/dist/action-integration.d.ts +104 -0
  6. package/dist/action-integration.d.ts.map +1 -0
  7. package/dist/action.d.ts +33 -0
  8. package/dist/action.d.ts.map +1 -0
  9. package/dist/adapters.d.ts +25 -0
  10. package/dist/adapters.d.ts.map +1 -0
  11. package/dist/array-field.d.ts +49 -0
  12. package/dist/array-field.d.ts.map +1 -0
  13. package/dist/components.d.ts +8 -0
  14. package/dist/components.d.ts.map +1 -0
  15. package/dist/composition.d.ts +4 -0
  16. package/dist/composition.d.ts.map +1 -0
  17. package/dist/context.d.ts +9 -0
  18. package/dist/context.d.ts.map +1 -0
  19. package/dist/field.d.ts +88 -0
  20. package/dist/field.d.ts.map +1 -0
  21. package/dist/form.d.ts +59 -0
  22. package/dist/form.d.ts.map +1 -0
  23. package/dist/hooks.d.ts +13 -0
  24. package/dist/hooks.d.ts.map +1 -0
  25. package/dist/index.d.ts +16 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +2945 -0
  28. package/dist/proxy.d.ts +3 -0
  29. package/dist/proxy.d.ts.map +1 -0
  30. package/dist/schema.d.ts +31 -0
  31. package/dist/schema.d.ts.map +1 -0
  32. package/dist/store.d.ts +69 -0
  33. package/dist/store.d.ts.map +1 -0
  34. package/dist/types.d.ts +243 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/utils.d.ts +8 -0
  37. package/dist/utils.d.ts.map +1 -0
  38. package/dist/validation-engine.d.ts +33 -0
  39. package/dist/validation-engine.d.ts.map +1 -0
  40. package/dist/validation.d.ts +241 -0
  41. package/dist/validation.d.ts.map +1 -0
  42. package/dist/validators.d.ts +51 -0
  43. package/dist/validators.d.ts.map +1 -0
  44. package/dist/wizard.d.ts +52 -0
  45. package/dist/wizard.d.ts.map +1 -0
  46. package/package.json +60 -0
@@ -0,0 +1,3 @@
1
+ import type { FormStoreInterface } from './types';
2
+ export declare function createValuesProxy<T extends Record<string, any>>(store: FormStoreInterface<T>, basePath?: string, proxyCache?: Map<string, any>): T;
3
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,SAAK,EACb,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,CAAC,CA2EH"}
@@ -0,0 +1,31 @@
1
+ import type { ValidationSchema, ValidatorFunction } from './types';
2
+ export declare function zodAdapter<T>(zodSchema: {
3
+ parse: (data: unknown) => T;
4
+ safeParse: (data: unknown) => any;
5
+ }): ValidationSchema<unknown, T>;
6
+ export declare function valibotAdapter<T>(schema: unknown, parse: (schema: unknown, data: unknown) => T, safeParse: (schema: unknown, data: unknown) => any): ValidationSchema<unknown, T>;
7
+ export declare function createSchemaValidator<T>(opts: {
8
+ validate: (data: unknown) => {
9
+ success: true;
10
+ data: T;
11
+ } | {
12
+ success: false;
13
+ errors: Record<string, string[]>;
14
+ };
15
+ }): ValidationSchema<unknown, T>;
16
+ declare const EREO_SCHEMA_MARKER: unique symbol;
17
+ interface EreoSchemaDefinition {
18
+ [key: string]: ValidatorFunction | ValidatorFunction[] | EreoSchemaDefinition;
19
+ }
20
+ interface EreoSchema<T> extends ValidationSchema<unknown, T> {
21
+ [EREO_SCHEMA_MARKER]: true;
22
+ }
23
+ export declare function ereoSchema<T>(definition: EreoSchemaDefinition): EreoSchema<T>;
24
+ export declare function isEreoSchema(value: unknown): value is EreoSchema<unknown>;
25
+ export interface FormDataToObjectOptions {
26
+ coerce?: boolean;
27
+ arrays?: string[];
28
+ }
29
+ export declare function formDataToObject<T extends Record<string, any> = Record<string, any>>(formData: FormData, opts?: FormDataToObjectOptions): T;
30
+ export {};
31
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAA+B,MAAM,SAAS,CAAC;AAKhG,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC;CACnC,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAmB/B;AAID,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,CAAC,EAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,GAAG,GACjD,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAmB9B;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE;IAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;CAChH,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAyB/B;AAID,QAAA,MAAM,kBAAkB,eAAwB,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,oBAAoB,CAAC;CAC/E;AAED,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,oBAAoB,GAAG,UAAU,CAAC,CAAC,CAAC,CA2B7E;AA+CD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,CAMzE;AAID,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClF,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,uBAAuB,GAC7B,CAAC,CAoBH"}
@@ -0,0 +1,69 @@
1
+ import { Signal } from '@ereo/state';
2
+ import type { FormConfig, FormStoreInterface, FormSubmitState, FieldOptions, FieldRegistration, SubmitHandler, WatchCallback, DeepPartial } from './types';
3
+ export declare class FormStore<T extends Record<string, any> = Record<string, any>> implements FormStoreInterface<T> {
4
+ readonly config: FormConfig<T>;
5
+ private _signals;
6
+ private _errorSignals;
7
+ private _formErrors;
8
+ private _baseline;
9
+ private _touchedSet;
10
+ private _dirtySet;
11
+ private _fieldRefs;
12
+ private _fieldOptions;
13
+ private _subscribers;
14
+ private _watchers;
15
+ private _submitAbort;
16
+ private _submitGeneration;
17
+ private _validationEngine;
18
+ readonly isValid: Signal<boolean>;
19
+ readonly isDirty: Signal<boolean>;
20
+ readonly isSubmitting: Signal<boolean>;
21
+ readonly submitState: Signal<FormSubmitState>;
22
+ readonly submitCount: Signal<number>;
23
+ readonly values: T;
24
+ constructor(config: FormConfig<T>);
25
+ getSignal(path: string): Signal<unknown>;
26
+ getErrors(path: string): Signal<string[]>;
27
+ getFormErrors(): Signal<string[]>;
28
+ getValue<P extends string>(path: P): unknown;
29
+ setValue<P extends string>(path: P, value: unknown): void;
30
+ setValues(partial: DeepPartial<T>): void;
31
+ getValues(): T;
32
+ private _syncChildSignals;
33
+ private _updateParentSignals;
34
+ private _reconstructValue;
35
+ setErrors(path: string, errors: string[]): void;
36
+ clearErrors(path?: string): void;
37
+ setFormErrors(errors: string[]): void;
38
+ private _updateIsValid;
39
+ getTouched(path: string): boolean;
40
+ setTouched(path: string, touched?: boolean): void;
41
+ triggerBlurValidation(path: string): void;
42
+ getDirty(path: string): boolean;
43
+ register<V = unknown>(path: string, options?: FieldOptions<V>): FieldRegistration<V>;
44
+ unregister(path: string): void;
45
+ handleSubmit(e?: Event): Promise<void>;
46
+ submitWith(handler: SubmitHandler<T>, _submitId?: string): Promise<void>;
47
+ validate(): Promise<boolean>;
48
+ reset(): void;
49
+ resetTo(values: T): void;
50
+ setBaseline(values: T): void;
51
+ getChanges(): DeepPartial<T>;
52
+ watch(path: string, callback: WatchCallback): () => void;
53
+ watchFields(paths: string[], callback: WatchCallback): () => void;
54
+ subscribe(callback: () => void): () => void;
55
+ toJSON(): T;
56
+ toFormData(): FormData;
57
+ getFieldRef(path: string): HTMLElement | null;
58
+ setFieldRef(path: string, el: HTMLElement | null): void;
59
+ getFieldOptions(path: string): FieldOptions<any> | undefined;
60
+ getBaseline(): T;
61
+ getFieldValidating(path: string): Signal<boolean>;
62
+ dispose(): void;
63
+ _getCurrentValues(): T;
64
+ private _buildFormData;
65
+ private _notifyWatchers;
66
+ private _notifySubscribers;
67
+ }
68
+ export declare function createFormStore<T extends Record<string, any>>(config: FormConfig<T>): FormStore<T>;
69
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ import type { Signal } from '@ereo/state';
2
+ import type { ReactNode } from 'react';
3
+ export type DeepPartial<T> = T extends object ? {
4
+ [K in keyof T]?: DeepPartial<T[K]>;
5
+ } : T;
6
+ type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
7
+ export type PathsOf<T, D extends number = 5> = [D] extends [never] ? never : T extends readonly (infer U)[] ? `${number}` | `${number}.${PathsOf<U, Prev[D]>}` : T extends object ? {
8
+ [K in keyof T & string]: T[K] extends object ? K | `${K}.${PathsOf<T[K], Prev[D]>}` : K;
9
+ }[keyof T & string] : never;
10
+ export type PathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? PathValue<T[K], Rest> : K extends `${number}` ? T extends readonly (infer U)[] ? PathValue<U, Rest> : never : never : P extends keyof T ? T[P] : P extends `${number}` ? T extends readonly (infer U)[] ? U : never : never;
11
+ export type FormPath<T> = PathsOf<T> & string;
12
+ export type ValidateOn = 'change' | 'blur' | 'submit';
13
+ export interface ValidatorFunction<T = unknown> {
14
+ (value: T, context?: CrossFieldValidationContext<any>): string | undefined | Promise<string | undefined>;
15
+ _isAsync?: boolean;
16
+ _isRequired?: boolean;
17
+ _crossField?: boolean;
18
+ _debounce?: number;
19
+ }
20
+ export interface ValidationRule<T = unknown> {
21
+ validate: ValidatorFunction<T>;
22
+ message?: string;
23
+ validateOn?: ValidateOn;
24
+ }
25
+ export interface ValidationResult {
26
+ success: boolean;
27
+ errors?: Record<string, string[]>;
28
+ }
29
+ export interface ValidationSchema<TInput = unknown, TOutput = unknown> {
30
+ parse(data: TInput): TOutput;
31
+ safeParse?(data: TInput): {
32
+ success: true;
33
+ data: TOutput;
34
+ } | {
35
+ success: false;
36
+ error: {
37
+ issues: Array<{
38
+ path: (string | number)[];
39
+ message: string;
40
+ }>;
41
+ };
42
+ };
43
+ }
44
+ export interface CrossFieldValidationContext<T> {
45
+ getValue: <P extends string>(path: P) => unknown;
46
+ getValues: () => T;
47
+ signal?: AbortSignal;
48
+ }
49
+ export interface FieldState<V = unknown> {
50
+ value: V;
51
+ errors: string[];
52
+ touched: boolean;
53
+ dirty: boolean;
54
+ validating: boolean;
55
+ }
56
+ export interface FieldInputProps<V = unknown> {
57
+ name: string;
58
+ value: V;
59
+ onChange: (e: any) => void;
60
+ onBlur: (e: any) => void;
61
+ onFocus?: (e: any) => void;
62
+ ref?: (el: HTMLElement | null) => void;
63
+ 'aria-invalid'?: boolean;
64
+ 'aria-describedby'?: string;
65
+ 'aria-required'?: boolean;
66
+ }
67
+ export interface FieldRegistration<V = unknown> {
68
+ inputProps: FieldInputProps<V>;
69
+ state: FieldState<V>;
70
+ setValue: (value: V) => void;
71
+ setError: (errors: string[]) => void;
72
+ clearErrors: () => void;
73
+ setTouched: (touched: boolean) => void;
74
+ reset: () => void;
75
+ }
76
+ export interface FieldHandle<V = unknown> {
77
+ inputProps: FieldInputProps<V>;
78
+ value: V;
79
+ errors: string[];
80
+ touched: boolean;
81
+ dirty: boolean;
82
+ validating: boolean;
83
+ setValue: (value: V) => void;
84
+ setError: (errors: string[]) => void;
85
+ clearErrors: () => void;
86
+ setTouched: (touched: boolean) => void;
87
+ reset: () => void;
88
+ }
89
+ export interface FieldOptions<V = unknown> {
90
+ validate?: ValidatorFunction<V> | ValidatorFunction<V>[];
91
+ validateOn?: ValidateOn;
92
+ defaultValue?: V;
93
+ transform?: (value: unknown) => V;
94
+ parse?: (event: any) => V;
95
+ }
96
+ export interface ArrayFieldItem<T> {
97
+ id: string;
98
+ value: T;
99
+ index: number;
100
+ }
101
+ export interface ArrayFieldHelpers<T> {
102
+ fields: ArrayFieldItem<T>[];
103
+ append: (value: T) => void;
104
+ prepend: (value: T) => void;
105
+ insert: (index: number, value: T) => void;
106
+ remove: (index: number) => void;
107
+ swap: (indexA: number, indexB: number) => void;
108
+ move: (from: number, to: number) => void;
109
+ replace: (index: number, value: T) => void;
110
+ replaceAll: (values: T[]) => void;
111
+ clone: (index: number) => void;
112
+ }
113
+ export type FormSubmitState = 'idle' | 'submitting' | 'success' | 'error';
114
+ export interface SubmitContext<T = unknown> {
115
+ values: T;
116
+ formData: FormData;
117
+ signal: AbortSignal;
118
+ }
119
+ export type SubmitHandler<T = unknown> = (values: T, context: SubmitContext<T>) => void | Promise<void>;
120
+ export interface FormConfig<T extends Record<string, any> = Record<string, any>> {
121
+ defaultValues: T;
122
+ onSubmit?: SubmitHandler<T>;
123
+ schema?: ValidationSchema<unknown, T>;
124
+ validators?: Partial<Record<FormPath<T>, ValidatorFunction<any> | ValidatorFunction<any>[]>>;
125
+ validateOn?: ValidateOn;
126
+ validateOnMount?: boolean;
127
+ resetOnSubmit?: boolean;
128
+ }
129
+ export interface FormState<T = unknown> {
130
+ values: T;
131
+ errors: Record<string, string[]>;
132
+ formErrors: string[];
133
+ touched: Set<string>;
134
+ dirty: Set<string>;
135
+ isValid: boolean;
136
+ isDirty: boolean;
137
+ isSubmitting: boolean;
138
+ submitState: FormSubmitState;
139
+ submitCount: number;
140
+ }
141
+ export type WatchCallback<V = unknown> = (value: V, path: string) => void;
142
+ export interface FormStoreInterface<T extends Record<string, any> = Record<string, any>> {
143
+ values: T;
144
+ config: FormConfig<T>;
145
+ getValue<P extends string>(path: P): unknown;
146
+ setValue<P extends string>(path: P, value: unknown): void;
147
+ setValues(partial: DeepPartial<T>): void;
148
+ getValues(): T;
149
+ getSignal(path: string): Signal<unknown>;
150
+ getErrors(path: string): Signal<string[]>;
151
+ setErrors(path: string, errors: string[]): void;
152
+ clearErrors(path?: string): void;
153
+ getFormErrors(): Signal<string[]>;
154
+ setFormErrors(errors: string[]): void;
155
+ getTouched(path: string): boolean;
156
+ setTouched(path: string, touched?: boolean): void;
157
+ getDirty(path: string): boolean;
158
+ triggerBlurValidation(path: string): void;
159
+ getFieldValidating(path: string): Signal<boolean>;
160
+ isValid: Signal<boolean>;
161
+ isDirty: Signal<boolean>;
162
+ isSubmitting: Signal<boolean>;
163
+ submitState: Signal<FormSubmitState>;
164
+ submitCount: Signal<number>;
165
+ register<V = unknown>(path: string, options?: FieldOptions<V>): FieldRegistration<V>;
166
+ unregister(path: string): void;
167
+ handleSubmit(e?: Event): Promise<void>;
168
+ submitWith(handler: SubmitHandler<T>, submitId?: string): Promise<void>;
169
+ validate(): Promise<boolean>;
170
+ reset(): void;
171
+ resetTo(values: T): void;
172
+ setBaseline(values: T): void;
173
+ getChanges(): DeepPartial<T>;
174
+ watch(path: string, callback: WatchCallback): () => void;
175
+ watchFields(paths: string[], callback: WatchCallback): () => void;
176
+ subscribe(callback: () => void): () => void;
177
+ toJSON(): T;
178
+ toFormData(): FormData;
179
+ dispose(): void;
180
+ }
181
+ export interface ActionResult<T = unknown> {
182
+ success: boolean;
183
+ data?: T;
184
+ errors?: Record<string, string[]>;
185
+ }
186
+ export interface FormActionConfig<T, TResult = unknown> {
187
+ schema?: ValidationSchema<unknown, T>;
188
+ onSubmit: (values: T) => Promise<ActionResult<TResult>>;
189
+ onSuccess?: (result: TResult) => void;
190
+ onError?: (errors: Record<string, string[]>) => void;
191
+ }
192
+ export interface WizardStepConfig {
193
+ id: string;
194
+ fields?: string[];
195
+ validate?: () => Promise<boolean> | boolean;
196
+ }
197
+ export interface WizardConfig<T extends Record<string, any> = Record<string, any>> {
198
+ steps: WizardStepConfig[];
199
+ form: FormConfig<T>;
200
+ persist?: 'localStorage' | 'sessionStorage' | false;
201
+ persistKey?: string;
202
+ onComplete?: SubmitHandler<T>;
203
+ }
204
+ export interface WizardState {
205
+ currentStep: number;
206
+ currentStepId: string;
207
+ completedSteps: Set<string>;
208
+ totalSteps: number;
209
+ isFirst: boolean;
210
+ isLast: boolean;
211
+ progress: number;
212
+ }
213
+ export interface FieldComponentProps<T extends Record<string, any>, K extends string = string> {
214
+ form?: FormStoreInterface<T>;
215
+ name: K;
216
+ type?: string;
217
+ label?: string;
218
+ placeholder?: string;
219
+ required?: boolean;
220
+ disabled?: boolean;
221
+ className?: string;
222
+ children?: (field: FieldHandle<PathValue<T, K>>) => ReactNode;
223
+ }
224
+ export interface TextareaFieldProps<T extends Record<string, any>, K extends string = string> extends FieldComponentProps<T, K> {
225
+ rows?: number;
226
+ cols?: number;
227
+ maxLength?: number;
228
+ }
229
+ export interface SelectFieldProps<T extends Record<string, any>, K extends string = string> extends FieldComponentProps<T, K> {
230
+ options: Array<{
231
+ value: string;
232
+ label: string;
233
+ disabled?: boolean;
234
+ }>;
235
+ multiple?: boolean;
236
+ }
237
+ export interface FieldArrayComponentProps<T extends Record<string, any>, K extends string = string> {
238
+ form?: FormStoreInterface<T>;
239
+ name: K;
240
+ children: (helpers: ArrayFieldHelpers<any>) => ReactNode;
241
+ }
242
+ export {};
243
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function parsePath(path: string): (string | number)[];
2
+ export declare function getPath(obj: any, path: string): unknown;
3
+ export declare function setPath<T>(obj: T, path: string, value: unknown): T;
4
+ export declare function deepClone<T>(obj: T): T;
5
+ export declare function deepEqual(a: unknown, b: unknown): boolean;
6
+ export declare function flattenToPaths(obj: any, prefix?: string): Map<string, unknown>;
7
+ export declare function reconstructFromPaths(paths: Map<string, unknown>): Record<string, any>;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAwC3D;AAQD,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAWvD;AAID,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAKlE;AA2CD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA0BtC;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CA+DzD;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,SAAK,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAsC1E;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA0BrF"}
@@ -0,0 +1,33 @@
1
+ import { Signal } from '@ereo/state';
2
+ import type { ValidatorFunction, ValidateOn, ValidationResult } from './types';
3
+ import type { FormStore } from './store';
4
+ export declare class ValidationEngine<T extends Record<string, any>> {
5
+ private _store;
6
+ private _fieldValidations;
7
+ private _abortControllers;
8
+ private _debounceTimers;
9
+ private _validatingFields;
10
+ private _validatingSignals;
11
+ private _fieldGenerations;
12
+ private _validateAllController;
13
+ constructor(store: FormStore<T>);
14
+ registerFieldValidators(path: string, validators: ValidatorFunction[], explicitTrigger?: ValidateOn): void;
15
+ private _deriveValidateOn;
16
+ onFieldChange(path: string): void;
17
+ onFieldBlur(path: string): void;
18
+ isFieldValidating(path: string): boolean;
19
+ getFieldValidatingSignal(path: string): Signal<boolean>;
20
+ private _setFieldValidating;
21
+ validateField(path: string): Promise<string[]>;
22
+ validateFields(paths: string[]): Promise<ValidationResult>;
23
+ validateAll(): Promise<ValidationResult>;
24
+ private _validateSchema;
25
+ unregisterField(path: string): void;
26
+ dispose(): void;
27
+ private _createContext;
28
+ private _getDebounceMs;
29
+ private _debounceValidation;
30
+ private _runFieldValidation;
31
+ private _cancelFieldValidation;
32
+ }
33
+ //# sourceMappingURL=validation-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-engine.d.ts","sourceRoot":"","sources":["../src/validation-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQzC,qBAAa,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACzD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,eAAe,CAAoD;IAC3E,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAAgC;gBAElD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAmB/B,uBAAuB,CACrB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,iBAAiB,EAAE,EAC/B,eAAe,CAAC,EAAE,UAAU,GAC3B,IAAI;IAWP,OAAO,CAAC,iBAAiB;IAUzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBjC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAiB/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IASvD,OAAO,CAAC,mBAAmB;IAYrB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+C9C,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB1D,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;YA6EhC,eAAe;IA2C7B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,IAAI,IAAI;IAoBf,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;CAa/B"}