@lucas-barake/effect-form 0.10.0 → 0.12.0
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.
- package/dist/cjs/FormAtoms.js +38 -29
- package/dist/cjs/FormAtoms.js.map +1 -1
- package/dist/cjs/Validation.js +107 -1
- package/dist/cjs/Validation.js.map +1 -1
- package/dist/dts/FormAtoms.d.ts +25 -3
- package/dist/dts/FormAtoms.d.ts.map +1 -1
- package/dist/dts/Validation.d.ts +29 -0
- package/dist/dts/Validation.d.ts.map +1 -1
- package/dist/esm/FormAtoms.js +39 -30
- package/dist/esm/FormAtoms.js.map +1 -1
- package/dist/esm/Validation.js +105 -0
- package/dist/esm/Validation.js.map +1 -1
- package/package.json +1 -1
- package/src/FormAtoms.ts +70 -32
- package/src/Validation.ts +130 -0
package/dist/cjs/FormAtoms.js
CHANGED
|
@@ -70,7 +70,12 @@ const make = config => {
|
|
|
70
70
|
} = formBuilder;
|
|
71
71
|
const combinedSchema = FormBuilder.buildSchema(formBuilder);
|
|
72
72
|
const stateAtom = Atom.make(Option.none()).pipe(Atom.setIdleTTL(0));
|
|
73
|
-
const
|
|
73
|
+
const errorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
|
|
74
|
+
const rootErrorAtom = Atom.readable(get => {
|
|
75
|
+
const errors = get(errorsAtom);
|
|
76
|
+
const entry = errors.get("");
|
|
77
|
+
return entry ? Option.some(entry.message) : Option.none();
|
|
78
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
74
79
|
const valuesAtom = Atom.readable(get => Option.map(get(stateAtom), state => state.values)).pipe(Atom.setIdleTTL(0));
|
|
75
80
|
const dirtyFieldsAtom = Atom.readable(get => Option.match(get(stateAtom), {
|
|
76
81
|
onNone: () => new Set(),
|
|
@@ -102,6 +107,7 @@ const make = config => {
|
|
|
102
107
|
})).pipe(Atom.setIdleTTL(0));
|
|
103
108
|
const validationAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
|
|
104
109
|
const fieldAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
|
|
110
|
+
const publicFieldAtomRegistry = (0, _weakRegistry.createWeakRegistry)();
|
|
105
111
|
const getOrCreateValidationAtom = (fieldPath, schema) => {
|
|
106
112
|
const existing = validationAtomsRegistry.get(fieldPath);
|
|
107
113
|
if (existing) return existing;
|
|
@@ -124,16 +130,16 @@ const make = config => {
|
|
|
124
130
|
touched: (0, _Path.setNestedValue)(currentState.touched, fieldPath, value)
|
|
125
131
|
}));
|
|
126
132
|
}).pipe(Atom.setIdleTTL(0));
|
|
127
|
-
const
|
|
128
|
-
const errors = get(
|
|
129
|
-
const
|
|
130
|
-
return
|
|
133
|
+
const errorAtom = Atom.readable(get => {
|
|
134
|
+
const errors = get(errorsAtom);
|
|
135
|
+
const entry = errors.get(fieldPath);
|
|
136
|
+
return entry ? Option.some(entry) : Option.none();
|
|
131
137
|
}).pipe(Atom.setIdleTTL(0));
|
|
132
138
|
const atoms = {
|
|
133
139
|
valueAtom,
|
|
134
140
|
initialValueAtom,
|
|
135
141
|
touchedAtom,
|
|
136
|
-
|
|
142
|
+
errorAtom
|
|
137
143
|
};
|
|
138
144
|
fieldAtomsRegistry.set(fieldPath, atoms);
|
|
139
145
|
return atoms;
|
|
@@ -149,10 +155,12 @@ const make = config => {
|
|
|
149
155
|
const state = get(stateAtom);
|
|
150
156
|
if (Option.isNone(state)) return yield* Effect.die("Form not initialized");
|
|
151
157
|
const values = state.value.values;
|
|
152
|
-
get.set(
|
|
153
|
-
const decoded = yield* (0, _Function.pipe)(Schema.decodeUnknown(combinedSchema
|
|
154
|
-
|
|
155
|
-
|
|
158
|
+
get.set(errorsAtom, new Map());
|
|
159
|
+
const decoded = yield* (0, _Function.pipe)(Schema.decodeUnknown(combinedSchema, {
|
|
160
|
+
errors: "all"
|
|
161
|
+
})(values), Effect.tapError(parseError => Effect.sync(() => {
|
|
162
|
+
const routedErrors = Validation.routeErrorsWithSource(parseError);
|
|
163
|
+
get.set(errorsAtom, routedErrors);
|
|
156
164
|
get.set(stateAtom, Option.some(operations.createSubmitState(state.value)));
|
|
157
165
|
})));
|
|
158
166
|
const submitState = operations.createSubmitState(state.value);
|
|
@@ -285,7 +293,7 @@ const make = config => {
|
|
|
285
293
|
const state = get(stateAtom);
|
|
286
294
|
if (Option.isNone(state)) return;
|
|
287
295
|
get.set(stateAtom, Option.some(operations.createResetState(state.value)));
|
|
288
|
-
get.set(
|
|
296
|
+
get.set(errorsAtom, new Map());
|
|
289
297
|
resetValidationAtoms(get);
|
|
290
298
|
get.set(submitAtom, Atom.Reset);
|
|
291
299
|
}, {
|
|
@@ -295,7 +303,7 @@ const make = config => {
|
|
|
295
303
|
const state = get(stateAtom);
|
|
296
304
|
if (Option.isNone(state)) return;
|
|
297
305
|
get.set(stateAtom, Option.some(operations.revertToLastSubmit(state.value)));
|
|
298
|
-
get.set(
|
|
306
|
+
get.set(errorsAtom, new Map());
|
|
299
307
|
}, {
|
|
300
308
|
initialValue: undefined
|
|
301
309
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -303,7 +311,7 @@ const make = config => {
|
|
|
303
311
|
const state = get(stateAtom);
|
|
304
312
|
if (Option.isNone(state)) return;
|
|
305
313
|
get.set(stateAtom, Option.some(operations.setFormValues(state.value, _values)));
|
|
306
|
-
get.set(
|
|
314
|
+
get.set(errorsAtom, new Map());
|
|
307
315
|
}, {
|
|
308
316
|
initialValue: undefined
|
|
309
317
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -317,16 +325,7 @@ const make = config => {
|
|
|
317
325
|
const currentValue = (0, _Path.getNestedValue)(state.value.values, field.key);
|
|
318
326
|
const newValue = typeof update === "function" ? update(currentValue) : update;
|
|
319
327
|
get.set(stateAtom, Option.some(operations.setFieldValue(state.value, field.key, newValue)));
|
|
320
|
-
|
|
321
|
-
const nextErrors = new Map();
|
|
322
|
-
for (const [errorPath, message] of currentErrors) {
|
|
323
|
-
if (!(0, _Path.isPathUnderRoot)(errorPath, field.key)) {
|
|
324
|
-
nextErrors.set(errorPath, message);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
if (nextErrors.size !== currentErrors.size) {
|
|
328
|
-
get.set(crossFieldErrorsAtom, nextErrors);
|
|
329
|
-
}
|
|
328
|
+
// Don't clear errors - display logic handles showing/hiding based on source + validation state
|
|
330
329
|
}, {
|
|
331
330
|
initialValue: undefined
|
|
332
331
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -334,14 +333,22 @@ const make = config => {
|
|
|
334
333
|
return atom;
|
|
335
334
|
};
|
|
336
335
|
const getFieldAtom = field => {
|
|
337
|
-
const
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
336
|
+
const existing = publicFieldAtomRegistry.get(field.key);
|
|
337
|
+
if (existing) return existing;
|
|
338
|
+
const safeAtom = Atom.readable(get => Option.map(get(stateAtom), state => (0, _Path.getNestedValue)(state.values, field.key))).pipe(Atom.setIdleTTL(0));
|
|
339
|
+
publicFieldAtomRegistry.set(field.key, safeAtom);
|
|
340
|
+
return safeAtom;
|
|
341
341
|
};
|
|
342
|
+
const mountAtom = Atom.readable(get => {
|
|
343
|
+
get(stateAtom);
|
|
344
|
+
get(errorsAtom);
|
|
345
|
+
get(submitAtom);
|
|
346
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
347
|
+
const keepAliveActiveAtom = Atom.make(false).pipe(Atom.setIdleTTL(0));
|
|
342
348
|
return {
|
|
343
349
|
stateAtom,
|
|
344
|
-
|
|
350
|
+
errorsAtom,
|
|
351
|
+
rootErrorAtom,
|
|
345
352
|
valuesAtom,
|
|
346
353
|
dirtyFieldsAtom,
|
|
347
354
|
isDirtyAtom,
|
|
@@ -362,7 +369,9 @@ const make = config => {
|
|
|
362
369
|
revertToLastSubmitAtom,
|
|
363
370
|
setValuesAtom,
|
|
364
371
|
setValue,
|
|
365
|
-
getFieldAtom
|
|
372
|
+
getFieldAtom,
|
|
373
|
+
mountAtom,
|
|
374
|
+
keepAliveActiveAtom
|
|
366
375
|
};
|
|
367
376
|
};
|
|
368
377
|
exports.make = make;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAtoms.js","names":["Atom","_interopRequireWildcard","require","Effect","_Function","Option","Schema","Field","FormBuilder","_dirty","_weakRegistry","_Path","Validation","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","pipe","setIdleTTL","crossFieldErrorsAtom","Map","valuesAtom","readable","map","state","values","dirtyFieldsAtom","match","onNone","Set","onSome","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","flatMap","lastSubmittedValues","changedSinceSubmitFieldsAtom","lastSubmitted","recalculateDirtySubtree","encoded","hasChangedSinceSubmitAtom","isNone","value","validationAtomsRegistry","createWeakRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","getOrCreateFieldAtoms","valueAtom","writable","getNestedValue","getOrThrow","ctx","currentState","some","operations","setFieldValue","initialValueAtom","initialValues","touchedAtom","touched","setNestedValue","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","Reset","clear","submitAtom","args","gen","die","decoded","tapError","parseError","sync","routedErrors","routeErrors","createSubmitState","submitState","result","onSubmit","isEffect","fieldRefs","fromEntries","keys","key","makeFieldRef","createInitialState","defaultValues","createTouchedRecord","createResetState","newValues","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","recalculateDirtyFieldsForArray","removeArrayItem","index","filter","_","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit","lastEncoded","resetAtom","fnSync","initialValue","revertToLastSubmitAtom","setValuesAtom","_values","setValueAtomsRegistry","setValue","field","cached","atom","update","currentValue","newValue","currentErrors","nextErrors","errorPath","message","isPathUnderRoot","getFieldAtom","exports"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormAtoms.js","names":["Atom","_interopRequireWildcard","require","Effect","_Function","Option","Schema","Field","FormBuilder","_dirty","_weakRegistry","_Path","Validation","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","pipe","setIdleTTL","errorsAtom","Map","rootErrorAtom","readable","errors","entry","some","message","valuesAtom","map","state","values","dirtyFieldsAtom","match","onNone","Set","onSome","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","flatMap","lastSubmittedValues","changedSinceSubmitFieldsAtom","lastSubmitted","recalculateDirtySubtree","encoded","hasChangedSinceSubmitAtom","isNone","value","validationAtomsRegistry","createWeakRegistry","fieldAtomsRegistry","publicFieldAtomRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","getOrCreateFieldAtoms","valueAtom","writable","getNestedValue","getOrThrow","ctx","currentState","operations","setFieldValue","initialValueAtom","initialValues","touchedAtom","touched","setNestedValue","errorAtom","atoms","resetValidationAtoms","Reset","clear","submitAtom","args","gen","die","decoded","tapError","parseError","sync","routedErrors","routeErrorsWithSource","createSubmitState","submitState","result","onSubmit","isEffect","fieldRefs","fromEntries","keys","key","makeFieldRef","createInitialState","defaultValues","createTouchedRecord","createResetState","newValues","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","recalculateDirtyFieldsForArray","removeArrayItem","index","filter","_","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit","lastEncoded","resetAtom","fnSync","initialValue","undefined","revertToLastSubmitAtom","setValuesAtom","_values","setValueAtomsRegistry","setValue","field","cached","atom","update","currentValue","newValue","getFieldAtom","safeAtom","mountAtom","keepAliveActiveAtom","exports"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/Validation.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.routeErrors = exports.extractFirstError = void 0;
|
|
6
|
+
exports.routeErrorsWithSource = exports.routeErrors = exports.extractFirstError = void 0;
|
|
7
7
|
var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
|
|
8
8
|
var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
|
|
9
9
|
var _Path = /*#__PURE__*/require("./Path.js");
|
|
@@ -31,6 +31,33 @@ function _interopRequireWildcard(e, t) {
|
|
|
31
31
|
* Validation utilities for form error handling.
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
|
+
const getBaseAST = ast => {
|
|
35
|
+
switch (ast._tag) {
|
|
36
|
+
case "Refinement":
|
|
37
|
+
case "Transformation":
|
|
38
|
+
return getBaseAST(ast.from);
|
|
39
|
+
default:
|
|
40
|
+
return ast;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Returns true if the AST represents a composite type where refinements indicate cross-field validation.
|
|
45
|
+
* Covers: Schema.Struct, Class, Tuple, Union, Suspend.
|
|
46
|
+
*/
|
|
47
|
+
const isCompositeType = ast => {
|
|
48
|
+
const base = getBaseAST(ast);
|
|
49
|
+
switch (base._tag) {
|
|
50
|
+
case "TypeLiteral": // Schema.Struct
|
|
51
|
+
case "TupleType": // Schema.Tuple
|
|
52
|
+
case "Declaration": // Schema.Class, Schema.TaggedClass
|
|
53
|
+
case "Union": // Schema.Union
|
|
54
|
+
case "Suspend":
|
|
55
|
+
// Recursive schemas
|
|
56
|
+
return true;
|
|
57
|
+
default:
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
34
61
|
/**
|
|
35
62
|
* Extracts the first error message from a ParseError.
|
|
36
63
|
*
|
|
@@ -62,4 +89,83 @@ const routeErrors = error => {
|
|
|
62
89
|
return result;
|
|
63
90
|
};
|
|
64
91
|
exports.routeErrors = routeErrors;
|
|
92
|
+
const determineErrorSources = error => {
|
|
93
|
+
const sources = new Map();
|
|
94
|
+
const walk = (issue, path, source) => {
|
|
95
|
+
switch (issue._tag) {
|
|
96
|
+
case "Refinement":
|
|
97
|
+
if (issue.kind === "Predicate" && isCompositeType(issue.ast.from)) {
|
|
98
|
+
walk(issue.issue, path, "refinement");
|
|
99
|
+
} else {
|
|
100
|
+
walk(issue.issue, path, source);
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case "Pointer":
|
|
104
|
+
{
|
|
105
|
+
const pointerPath = Array.isArray(issue.path) ? issue.path : [issue.path];
|
|
106
|
+
walk(issue.issue, [...path, ...pointerPath], source);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case "Composite":
|
|
110
|
+
{
|
|
111
|
+
const issues = Array.isArray(issue.issues) ? issue.issues : [issue.issues];
|
|
112
|
+
for (const sub of issues) {
|
|
113
|
+
walk(sub, path, source);
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case "Type":
|
|
118
|
+
case "Missing":
|
|
119
|
+
case "Unexpected":
|
|
120
|
+
case "Forbidden":
|
|
121
|
+
{
|
|
122
|
+
const fieldPath = (0, _Path.schemaPathToFieldPath)(path);
|
|
123
|
+
const key = fieldPath ?? "";
|
|
124
|
+
if (!sources.has(key)) {
|
|
125
|
+
sources.set(key, source);
|
|
126
|
+
}
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case "Transformation":
|
|
130
|
+
// filterEffect/transformOrFail produce Transformation with FinalTransformation on composite types
|
|
131
|
+
if (issue.kind === "Transformation" && issue.ast.transformation._tag === "FinalTransformation" && isCompositeType(issue.ast.from)) {
|
|
132
|
+
walk(issue.issue, path, "refinement");
|
|
133
|
+
} else {
|
|
134
|
+
walk(issue.issue, path, source);
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
walk(error.issue, [], "field");
|
|
140
|
+
return sources;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Routes validation errors with source tracking.
|
|
144
|
+
*
|
|
145
|
+
* Source determination:
|
|
146
|
+
* - `kind: "Predicate"` on composite types → "refinement" (cross-field validation)
|
|
147
|
+
* - All other errors → "field" (per-field schema validation)
|
|
148
|
+
*
|
|
149
|
+
* Empty string key ("") stores root-level errors (refinements without specific paths).
|
|
150
|
+
*
|
|
151
|
+
* @category Error Handling
|
|
152
|
+
*/
|
|
153
|
+
const routeErrorsWithSource = error => {
|
|
154
|
+
const result = new Map();
|
|
155
|
+
const formattedIssues = ParseResult.ArrayFormatter.formatErrorSync(error);
|
|
156
|
+
const sources = determineErrorSources(error);
|
|
157
|
+
for (const issue of formattedIssues) {
|
|
158
|
+
const fieldPath = (0, _Path.schemaPathToFieldPath)(issue.path);
|
|
159
|
+
const key = fieldPath ?? "";
|
|
160
|
+
if (!result.has(key)) {
|
|
161
|
+
const source = sources.get(key) ?? "field";
|
|
162
|
+
result.set(key, {
|
|
163
|
+
message: issue.message,
|
|
164
|
+
source
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
};
|
|
170
|
+
exports.routeErrorsWithSource = routeErrorsWithSource;
|
|
65
171
|
//# sourceMappingURL=Validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.js","names":["Option","_interopRequireWildcard","require","ParseResult","_Path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extractFirstError","error","issues","ArrayFormatter","formatErrorSync","length","none","some","message","exports","routeErrors","result","Map","issue","fieldPath","schemaPathToFieldPath","path"],"sources":["../../src/Validation.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,cAAAC,OAAA;AACA,IAAAC,WAAA,gBAAAF,uBAAA,cAAAC,OAAA;
|
|
1
|
+
{"version":3,"file":"Validation.js","names":["Option","_interopRequireWildcard","require","ParseResult","_Path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getBaseAST","ast","_tag","from","isCompositeType","base","extractFirstError","error","issues","ArrayFormatter","formatErrorSync","length","none","some","message","exports","routeErrors","result","Map","issue","fieldPath","schemaPathToFieldPath","path","determineErrorSources","sources","walk","source","kind","pointerPath","Array","isArray","sub","key","transformation","routeErrorsWithSource","formattedIssues"],"sources":["../../src/Validation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/dts/FormAtoms.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as Schema from "effect/Schema";
|
|
|
6
6
|
import * as Field from "./Field.js";
|
|
7
7
|
import * as FormBuilder from "./FormBuilder.js";
|
|
8
8
|
import { type WeakRegistry } from "./internal/weak-registry.js";
|
|
9
|
+
import * as Validation from "./Validation.js";
|
|
9
10
|
/**
|
|
10
11
|
* Atoms for a single field.
|
|
11
12
|
*
|
|
@@ -15,7 +16,7 @@ export interface FieldAtoms {
|
|
|
15
16
|
readonly valueAtom: Atom.Writable<unknown, unknown>;
|
|
16
17
|
readonly initialValueAtom: Atom.Atom<unknown>;
|
|
17
18
|
readonly touchedAtom: Atom.Writable<boolean, boolean>;
|
|
18
|
-
readonly
|
|
19
|
+
readonly errorAtom: Atom.Atom<Option.Option<Validation.ErrorEntry>>;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Configuration for creating form atoms.
|
|
@@ -46,7 +47,8 @@ export type FieldRefs<TFields extends Field.FieldsRecord> = {
|
|
|
46
47
|
*/
|
|
47
48
|
export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E = never, SubmitArgs = void> {
|
|
48
49
|
readonly stateAtom: Atom.Writable<Option.Option<FormBuilder.FormState<TFields>>, Option.Option<FormBuilder.FormState<TFields>>>;
|
|
49
|
-
readonly
|
|
50
|
+
readonly errorsAtom: Atom.Writable<Map<string, Validation.ErrorEntry>, Map<string, Validation.ErrorEntry>>;
|
|
51
|
+
readonly rootErrorAtom: Atom.Atom<Option.Option<string>>;
|
|
50
52
|
readonly valuesAtom: Atom.Atom<Option.Option<Field.EncodedFromFields<TFields>>>;
|
|
51
53
|
readonly dirtyFieldsAtom: Atom.Atom<ReadonlySet<string>>;
|
|
52
54
|
readonly isDirtyAtom: Atom.Atom<boolean>;
|
|
@@ -69,7 +71,27 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E =
|
|
|
69
71
|
readonly revertToLastSubmitAtom: Atom.Writable<void, void>;
|
|
70
72
|
readonly setValuesAtom: Atom.Writable<void, Field.EncodedFromFields<TFields>>;
|
|
71
73
|
readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>;
|
|
72
|
-
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<S
|
|
74
|
+
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>;
|
|
75
|
+
/**
|
|
76
|
+
* Root anchor atom for the form's dependency graph.
|
|
77
|
+
* Mount this atom to keep all form state alive even when field components unmount.
|
|
78
|
+
*
|
|
79
|
+
* Useful for:
|
|
80
|
+
* - Multi-step wizards where steps unmount but state should persist
|
|
81
|
+
* - Conditional fields (toggles) where state should survive visibility changes
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```tsx
|
|
85
|
+
* // Keep form state alive at wizard root level
|
|
86
|
+
* function Wizard() {
|
|
87
|
+
* useAtomMount(step1Form.mount)
|
|
88
|
+
* useAtomMount(step2Form.mount)
|
|
89
|
+
* return currentStep === 1 ? <Step1 /> : <Step2 />
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
readonly mountAtom: Atom.Atom<void>;
|
|
94
|
+
readonly keepAliveActiveAtom: Atom.Writable<boolean, boolean>;
|
|
73
95
|
}
|
|
74
96
|
/**
|
|
75
97
|
* Pure state operations for form manipulation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/Validation.d.ts
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Option from "effect/Option";
|
|
5
5
|
import * as ParseResult from "effect/ParseResult";
|
|
6
|
+
/**
|
|
7
|
+
* Source of a validation error.
|
|
8
|
+
* - 'field': Error from field schema validation (e.g., minLength, pattern)
|
|
9
|
+
* - 'refinement': Error from cross-field refinement (e.g., password !== confirm)
|
|
10
|
+
*
|
|
11
|
+
* @category Models
|
|
12
|
+
*/
|
|
13
|
+
export type ErrorSource = "field" | "refinement";
|
|
14
|
+
/**
|
|
15
|
+
* A validation error entry with its source.
|
|
16
|
+
*
|
|
17
|
+
* @category Models
|
|
18
|
+
*/
|
|
19
|
+
export interface ErrorEntry {
|
|
20
|
+
readonly message: string;
|
|
21
|
+
readonly source: ErrorSource;
|
|
22
|
+
}
|
|
6
23
|
/**
|
|
7
24
|
* Extracts the first error message from a ParseError.
|
|
8
25
|
*
|
|
@@ -16,4 +33,16 @@ export declare const extractFirstError: (error: ParseResult.ParseError) => Optio
|
|
|
16
33
|
* @category Error Handling
|
|
17
34
|
*/
|
|
18
35
|
export declare const routeErrors: (error: ParseResult.ParseError) => Map<string, string>;
|
|
36
|
+
/**
|
|
37
|
+
* Routes validation errors with source tracking.
|
|
38
|
+
*
|
|
39
|
+
* Source determination:
|
|
40
|
+
* - `kind: "Predicate"` on composite types → "refinement" (cross-field validation)
|
|
41
|
+
* - All other errors → "field" (per-field schema validation)
|
|
42
|
+
*
|
|
43
|
+
* Empty string key ("") stores root-level errors (refinements without specific paths).
|
|
44
|
+
*
|
|
45
|
+
* @category Error Handling
|
|
46
|
+
*/
|
|
47
|
+
export declare const routeErrorsWithSource: (error: ParseResult.ParseError) => Map<string, ErrorEntry>;
|
|
19
48
|
//# sourceMappingURL=Validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/Validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/Validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AAIjD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,CAAA;AAEhD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AA8BD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAMrF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAY7E,CAAA;AAwDD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAe3F,CAAA"}
|
package/dist/esm/FormAtoms.js
CHANGED
|
@@ -7,7 +7,7 @@ import * as Field from "./Field.js";
|
|
|
7
7
|
import * as FormBuilder from "./FormBuilder.js";
|
|
8
8
|
import { recalculateDirtyFieldsForArray, recalculateDirtySubtree } from "./internal/dirty.js";
|
|
9
9
|
import { createWeakRegistry } from "./internal/weak-registry.js";
|
|
10
|
-
import { getNestedValue,
|
|
10
|
+
import { getNestedValue, setNestedValue } from "./Path.js";
|
|
11
11
|
import * as Validation from "./Validation.js";
|
|
12
12
|
/**
|
|
13
13
|
* Creates the complete form atoms infrastructure.
|
|
@@ -44,7 +44,12 @@ export const make = config => {
|
|
|
44
44
|
} = formBuilder;
|
|
45
45
|
const combinedSchema = FormBuilder.buildSchema(formBuilder);
|
|
46
46
|
const stateAtom = Atom.make(Option.none()).pipe(Atom.setIdleTTL(0));
|
|
47
|
-
const
|
|
47
|
+
const errorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
|
|
48
|
+
const rootErrorAtom = Atom.readable(get => {
|
|
49
|
+
const errors = get(errorsAtom);
|
|
50
|
+
const entry = errors.get("");
|
|
51
|
+
return entry ? Option.some(entry.message) : Option.none();
|
|
52
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
48
53
|
const valuesAtom = Atom.readable(get => Option.map(get(stateAtom), state => state.values)).pipe(Atom.setIdleTTL(0));
|
|
49
54
|
const dirtyFieldsAtom = Atom.readable(get => Option.match(get(stateAtom), {
|
|
50
55
|
onNone: () => new Set(),
|
|
@@ -76,6 +81,7 @@ export const make = config => {
|
|
|
76
81
|
})).pipe(Atom.setIdleTTL(0));
|
|
77
82
|
const validationAtomsRegistry = createWeakRegistry();
|
|
78
83
|
const fieldAtomsRegistry = createWeakRegistry();
|
|
84
|
+
const publicFieldAtomRegistry = createWeakRegistry();
|
|
79
85
|
const getOrCreateValidationAtom = (fieldPath, schema) => {
|
|
80
86
|
const existing = validationAtomsRegistry.get(fieldPath);
|
|
81
87
|
if (existing) return existing;
|
|
@@ -98,16 +104,16 @@ export const make = config => {
|
|
|
98
104
|
touched: setNestedValue(currentState.touched, fieldPath, value)
|
|
99
105
|
}));
|
|
100
106
|
}).pipe(Atom.setIdleTTL(0));
|
|
101
|
-
const
|
|
102
|
-
const errors = get(
|
|
103
|
-
const
|
|
104
|
-
return
|
|
107
|
+
const errorAtom = Atom.readable(get => {
|
|
108
|
+
const errors = get(errorsAtom);
|
|
109
|
+
const entry = errors.get(fieldPath);
|
|
110
|
+
return entry ? Option.some(entry) : Option.none();
|
|
105
111
|
}).pipe(Atom.setIdleTTL(0));
|
|
106
112
|
const atoms = {
|
|
107
113
|
valueAtom,
|
|
108
114
|
initialValueAtom,
|
|
109
115
|
touchedAtom,
|
|
110
|
-
|
|
116
|
+
errorAtom
|
|
111
117
|
};
|
|
112
118
|
fieldAtomsRegistry.set(fieldPath, atoms);
|
|
113
119
|
return atoms;
|
|
@@ -123,10 +129,12 @@ export const make = config => {
|
|
|
123
129
|
const state = get(stateAtom);
|
|
124
130
|
if (Option.isNone(state)) return yield* Effect.die("Form not initialized");
|
|
125
131
|
const values = state.value.values;
|
|
126
|
-
get.set(
|
|
127
|
-
const decoded = yield* pipe(Schema.decodeUnknown(combinedSchema
|
|
128
|
-
|
|
129
|
-
|
|
132
|
+
get.set(errorsAtom, new Map());
|
|
133
|
+
const decoded = yield* pipe(Schema.decodeUnknown(combinedSchema, {
|
|
134
|
+
errors: "all"
|
|
135
|
+
})(values), Effect.tapError(parseError => Effect.sync(() => {
|
|
136
|
+
const routedErrors = Validation.routeErrorsWithSource(parseError);
|
|
137
|
+
get.set(errorsAtom, routedErrors);
|
|
130
138
|
get.set(stateAtom, Option.some(operations.createSubmitState(state.value)));
|
|
131
139
|
})));
|
|
132
140
|
const submitState = operations.createSubmitState(state.value);
|
|
@@ -259,7 +267,7 @@ export const make = config => {
|
|
|
259
267
|
const state = get(stateAtom);
|
|
260
268
|
if (Option.isNone(state)) return;
|
|
261
269
|
get.set(stateAtom, Option.some(operations.createResetState(state.value)));
|
|
262
|
-
get.set(
|
|
270
|
+
get.set(errorsAtom, new Map());
|
|
263
271
|
resetValidationAtoms(get);
|
|
264
272
|
get.set(submitAtom, Atom.Reset);
|
|
265
273
|
}, {
|
|
@@ -269,7 +277,7 @@ export const make = config => {
|
|
|
269
277
|
const state = get(stateAtom);
|
|
270
278
|
if (Option.isNone(state)) return;
|
|
271
279
|
get.set(stateAtom, Option.some(operations.revertToLastSubmit(state.value)));
|
|
272
|
-
get.set(
|
|
280
|
+
get.set(errorsAtom, new Map());
|
|
273
281
|
}, {
|
|
274
282
|
initialValue: undefined
|
|
275
283
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -277,7 +285,7 @@ export const make = config => {
|
|
|
277
285
|
const state = get(stateAtom);
|
|
278
286
|
if (Option.isNone(state)) return;
|
|
279
287
|
get.set(stateAtom, Option.some(operations.setFormValues(state.value, _values)));
|
|
280
|
-
get.set(
|
|
288
|
+
get.set(errorsAtom, new Map());
|
|
281
289
|
}, {
|
|
282
290
|
initialValue: undefined
|
|
283
291
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -291,16 +299,7 @@ export const make = config => {
|
|
|
291
299
|
const currentValue = getNestedValue(state.value.values, field.key);
|
|
292
300
|
const newValue = typeof update === "function" ? update(currentValue) : update;
|
|
293
301
|
get.set(stateAtom, Option.some(operations.setFieldValue(state.value, field.key, newValue)));
|
|
294
|
-
|
|
295
|
-
const nextErrors = new Map();
|
|
296
|
-
for (const [errorPath, message] of currentErrors) {
|
|
297
|
-
if (!isPathUnderRoot(errorPath, field.key)) {
|
|
298
|
-
nextErrors.set(errorPath, message);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
if (nextErrors.size !== currentErrors.size) {
|
|
302
|
-
get.set(crossFieldErrorsAtom, nextErrors);
|
|
303
|
-
}
|
|
302
|
+
// Don't clear errors - display logic handles showing/hiding based on source + validation state
|
|
304
303
|
}, {
|
|
305
304
|
initialValue: undefined
|
|
306
305
|
}).pipe(Atom.setIdleTTL(0));
|
|
@@ -308,14 +307,22 @@ export const make = config => {
|
|
|
308
307
|
return atom;
|
|
309
308
|
};
|
|
310
309
|
const getFieldAtom = field => {
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
310
|
+
const existing = publicFieldAtomRegistry.get(field.key);
|
|
311
|
+
if (existing) return existing;
|
|
312
|
+
const safeAtom = Atom.readable(get => Option.map(get(stateAtom), state => getNestedValue(state.values, field.key))).pipe(Atom.setIdleTTL(0));
|
|
313
|
+
publicFieldAtomRegistry.set(field.key, safeAtom);
|
|
314
|
+
return safeAtom;
|
|
315
315
|
};
|
|
316
|
+
const mountAtom = Atom.readable(get => {
|
|
317
|
+
get(stateAtom);
|
|
318
|
+
get(errorsAtom);
|
|
319
|
+
get(submitAtom);
|
|
320
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
321
|
+
const keepAliveActiveAtom = Atom.make(false).pipe(Atom.setIdleTTL(0));
|
|
316
322
|
return {
|
|
317
323
|
stateAtom,
|
|
318
|
-
|
|
324
|
+
errorsAtom,
|
|
325
|
+
rootErrorAtom,
|
|
319
326
|
valuesAtom,
|
|
320
327
|
dirtyFieldsAtom,
|
|
321
328
|
isDirtyAtom,
|
|
@@ -336,7 +343,9 @@ export const make = config => {
|
|
|
336
343
|
revertToLastSubmitAtom,
|
|
337
344
|
setValuesAtom,
|
|
338
345
|
setValue,
|
|
339
|
-
getFieldAtom
|
|
346
|
+
getFieldAtom,
|
|
347
|
+
mountAtom,
|
|
348
|
+
keepAliveActiveAtom
|
|
340
349
|
};
|
|
341
350
|
};
|
|
342
351
|
//# sourceMappingURL=FormAtoms.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAtoms.js","names":["Atom","Effect","pipe","Option","Schema","Field","FormBuilder","recalculateDirtyFieldsForArray","recalculateDirtySubtree","createWeakRegistry","getNestedValue","isPathUnderRoot","setNestedValue","Validation","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","setIdleTTL","crossFieldErrorsAtom","Map","valuesAtom","readable","get","map","state","values","dirtyFieldsAtom","match","onNone","Set","onSome","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","flatMap","lastSubmittedValues","changedSinceSubmitFieldsAtom","lastSubmitted","encoded","hasChangedSinceSubmitAtom","isNone","value","validationAtomsRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","getOrThrow","ctx","currentState","some","operations","setFieldValue","initialValueAtom","initialValues","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","Reset","clear","submitAtom","args","gen","die","decoded","tapError","parseError","sync","routedErrors","routeErrors","createSubmitState","submitState","result","onSubmit","isEffect","fieldRefs","Object","fromEntries","keys","key","makeFieldRef","createInitialState","defaultValues","createTouchedRecord","createResetState","newValues","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit","lastEncoded","resetAtom","fnSync","initialValue","revertToLastSubmitAtom","setValuesAtom","_values","setValueAtomsRegistry","setValue","field","cached","atom","update","currentValue","newValue","currentErrors","nextErrors","errorPath","message","getFieldAtom"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormAtoms.js","names":["Atom","Effect","pipe","Option","Schema","Field","FormBuilder","recalculateDirtyFieldsForArray","recalculateDirtySubtree","createWeakRegistry","getNestedValue","setNestedValue","Validation","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","setIdleTTL","errorsAtom","Map","rootErrorAtom","readable","get","errors","entry","some","message","valuesAtom","map","state","values","dirtyFieldsAtom","match","onNone","Set","onSome","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","flatMap","lastSubmittedValues","changedSinceSubmitFieldsAtom","lastSubmitted","encoded","hasChangedSinceSubmitAtom","isNone","value","validationAtomsRegistry","fieldAtomsRegistry","publicFieldAtomRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","getOrThrow","ctx","currentState","operations","setFieldValue","initialValueAtom","initialValues","touchedAtom","touched","errorAtom","atoms","resetValidationAtoms","Reset","clear","submitAtom","args","gen","die","decoded","tapError","parseError","sync","routedErrors","routeErrorsWithSource","createSubmitState","submitState","result","onSubmit","isEffect","fieldRefs","Object","fromEntries","keys","key","makeFieldRef","createInitialState","defaultValues","createTouchedRecord","createResetState","newValues","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit","lastEncoded","resetAtom","fnSync","initialValue","undefined","revertToLastSubmitAtom","setValuesAtom","_values","setValueAtomsRegistry","setValue","field","cached","atom","update","currentValue","newValue","getFieldAtom","safeAtom","mountAtom","keepAliveActiveAtom"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Validation.js
CHANGED
|
@@ -4,6 +4,33 @@
|
|
|
4
4
|
import * as Option from "effect/Option";
|
|
5
5
|
import * as ParseResult from "effect/ParseResult";
|
|
6
6
|
import { schemaPathToFieldPath } from "./Path.js";
|
|
7
|
+
const getBaseAST = ast => {
|
|
8
|
+
switch (ast._tag) {
|
|
9
|
+
case "Refinement":
|
|
10
|
+
case "Transformation":
|
|
11
|
+
return getBaseAST(ast.from);
|
|
12
|
+
default:
|
|
13
|
+
return ast;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if the AST represents a composite type where refinements indicate cross-field validation.
|
|
18
|
+
* Covers: Schema.Struct, Class, Tuple, Union, Suspend.
|
|
19
|
+
*/
|
|
20
|
+
const isCompositeType = ast => {
|
|
21
|
+
const base = getBaseAST(ast);
|
|
22
|
+
switch (base._tag) {
|
|
23
|
+
case "TypeLiteral": // Schema.Struct
|
|
24
|
+
case "TupleType": // Schema.Tuple
|
|
25
|
+
case "Declaration": // Schema.Class, Schema.TaggedClass
|
|
26
|
+
case "Union": // Schema.Union
|
|
27
|
+
case "Suspend":
|
|
28
|
+
// Recursive schemas
|
|
29
|
+
return true;
|
|
30
|
+
default:
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
7
34
|
/**
|
|
8
35
|
* Extracts the first error message from a ParseError.
|
|
9
36
|
*
|
|
@@ -33,4 +60,82 @@ export const routeErrors = error => {
|
|
|
33
60
|
}
|
|
34
61
|
return result;
|
|
35
62
|
};
|
|
63
|
+
const determineErrorSources = error => {
|
|
64
|
+
const sources = new Map();
|
|
65
|
+
const walk = (issue, path, source) => {
|
|
66
|
+
switch (issue._tag) {
|
|
67
|
+
case "Refinement":
|
|
68
|
+
if (issue.kind === "Predicate" && isCompositeType(issue.ast.from)) {
|
|
69
|
+
walk(issue.issue, path, "refinement");
|
|
70
|
+
} else {
|
|
71
|
+
walk(issue.issue, path, source);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case "Pointer":
|
|
75
|
+
{
|
|
76
|
+
const pointerPath = Array.isArray(issue.path) ? issue.path : [issue.path];
|
|
77
|
+
walk(issue.issue, [...path, ...pointerPath], source);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case "Composite":
|
|
81
|
+
{
|
|
82
|
+
const issues = Array.isArray(issue.issues) ? issue.issues : [issue.issues];
|
|
83
|
+
for (const sub of issues) {
|
|
84
|
+
walk(sub, path, source);
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case "Type":
|
|
89
|
+
case "Missing":
|
|
90
|
+
case "Unexpected":
|
|
91
|
+
case "Forbidden":
|
|
92
|
+
{
|
|
93
|
+
const fieldPath = schemaPathToFieldPath(path);
|
|
94
|
+
const key = fieldPath ?? "";
|
|
95
|
+
if (!sources.has(key)) {
|
|
96
|
+
sources.set(key, source);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "Transformation":
|
|
101
|
+
// filterEffect/transformOrFail produce Transformation with FinalTransformation on composite types
|
|
102
|
+
if (issue.kind === "Transformation" && issue.ast.transformation._tag === "FinalTransformation" && isCompositeType(issue.ast.from)) {
|
|
103
|
+
walk(issue.issue, path, "refinement");
|
|
104
|
+
} else {
|
|
105
|
+
walk(issue.issue, path, source);
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
walk(error.issue, [], "field");
|
|
111
|
+
return sources;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Routes validation errors with source tracking.
|
|
115
|
+
*
|
|
116
|
+
* Source determination:
|
|
117
|
+
* - `kind: "Predicate"` on composite types → "refinement" (cross-field validation)
|
|
118
|
+
* - All other errors → "field" (per-field schema validation)
|
|
119
|
+
*
|
|
120
|
+
* Empty string key ("") stores root-level errors (refinements without specific paths).
|
|
121
|
+
*
|
|
122
|
+
* @category Error Handling
|
|
123
|
+
*/
|
|
124
|
+
export const routeErrorsWithSource = error => {
|
|
125
|
+
const result = new Map();
|
|
126
|
+
const formattedIssues = ParseResult.ArrayFormatter.formatErrorSync(error);
|
|
127
|
+
const sources = determineErrorSources(error);
|
|
128
|
+
for (const issue of formattedIssues) {
|
|
129
|
+
const fieldPath = schemaPathToFieldPath(issue.path);
|
|
130
|
+
const key = fieldPath ?? "";
|
|
131
|
+
if (!result.has(key)) {
|
|
132
|
+
const source = sources.get(key) ?? "field";
|
|
133
|
+
result.set(key, {
|
|
134
|
+
message: issue.message,
|
|
135
|
+
source
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
};
|
|
36
141
|
//# sourceMappingURL=Validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.js","names":["Option","ParseResult","schemaPathToFieldPath","extractFirstError","error","issues","ArrayFormatter","formatErrorSync","length","none","some","message","routeErrors","result","Map","issue","fieldPath","path","has","set"],"sources":["../../src/Validation.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,WAAW,MAAM,oBAAoB;
|
|
1
|
+
{"version":3,"file":"Validation.js","names":["Option","ParseResult","schemaPathToFieldPath","getBaseAST","ast","_tag","from","isCompositeType","base","extractFirstError","error","issues","ArrayFormatter","formatErrorSync","length","none","some","message","routeErrors","result","Map","issue","fieldPath","path","has","set","determineErrorSources","sources","walk","source","kind","pointerPath","Array","isArray","sub","key","transformation","routeErrorsWithSource","formattedIssues","get"],"sources":["../../src/Validation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/FormAtoms.ts
CHANGED
|
@@ -8,7 +8,7 @@ import * as Field from "./Field.js"
|
|
|
8
8
|
import * as FormBuilder from "./FormBuilder.js"
|
|
9
9
|
import { recalculateDirtyFieldsForArray, recalculateDirtySubtree } from "./internal/dirty.js"
|
|
10
10
|
import { createWeakRegistry, type WeakRegistry } from "./internal/weak-registry.js"
|
|
11
|
-
import { getNestedValue,
|
|
11
|
+
import { getNestedValue, setNestedValue } from "./Path.js"
|
|
12
12
|
import * as Validation from "./Validation.js"
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -20,7 +20,7 @@ export interface FieldAtoms {
|
|
|
20
20
|
readonly valueAtom: Atom.Writable<unknown, unknown>
|
|
21
21
|
readonly initialValueAtom: Atom.Atom<unknown>
|
|
22
22
|
readonly touchedAtom: Atom.Writable<boolean, boolean>
|
|
23
|
-
readonly
|
|
23
|
+
readonly errorAtom: Atom.Atom<Option.Option<Validation.ErrorEntry>>
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -64,7 +64,8 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E =
|
|
|
64
64
|
Option.Option<FormBuilder.FormState<TFields>>,
|
|
65
65
|
Option.Option<FormBuilder.FormState<TFields>>
|
|
66
66
|
>
|
|
67
|
-
readonly
|
|
67
|
+
readonly errorsAtom: Atom.Writable<Map<string, Validation.ErrorEntry>, Map<string, Validation.ErrorEntry>>
|
|
68
|
+
readonly rootErrorAtom: Atom.Atom<Option.Option<string>>
|
|
68
69
|
readonly valuesAtom: Atom.Atom<Option.Option<Field.EncodedFromFields<TFields>>>
|
|
69
70
|
readonly dirtyFieldsAtom: Atom.Atom<ReadonlySet<string>>
|
|
70
71
|
readonly isDirtyAtom: Atom.Atom<boolean>
|
|
@@ -98,7 +99,29 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E =
|
|
|
98
99
|
readonly setValuesAtom: Atom.Writable<void, Field.EncodedFromFields<TFields>>
|
|
99
100
|
readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>
|
|
100
101
|
|
|
101
|
-
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<S
|
|
102
|
+
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Root anchor atom for the form's dependency graph.
|
|
106
|
+
* Mount this atom to keep all form state alive even when field components unmount.
|
|
107
|
+
*
|
|
108
|
+
* Useful for:
|
|
109
|
+
* - Multi-step wizards where steps unmount but state should persist
|
|
110
|
+
* - Conditional fields (toggles) where state should survive visibility changes
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```tsx
|
|
114
|
+
* // Keep form state alive at wizard root level
|
|
115
|
+
* function Wizard() {
|
|
116
|
+
* useAtomMount(step1Form.mount)
|
|
117
|
+
* useAtomMount(step2Form.mount)
|
|
118
|
+
* return currentStep === 1 ? <Step1 /> : <Step2 />
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
readonly mountAtom: Atom.Atom<void>
|
|
123
|
+
|
|
124
|
+
readonly keepAliveActiveAtom: Atom.Writable<boolean, boolean>
|
|
102
125
|
}
|
|
103
126
|
|
|
104
127
|
/**
|
|
@@ -198,7 +221,13 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
198
221
|
const combinedSchema = FormBuilder.buildSchema(formBuilder)
|
|
199
222
|
|
|
200
223
|
const stateAtom = Atom.make(Option.none<FormBuilder.FormState<TFields>>()).pipe(Atom.setIdleTTL(0))
|
|
201
|
-
const
|
|
224
|
+
const errorsAtom = Atom.make<Map<string, Validation.ErrorEntry>>(new Map()).pipe(Atom.setIdleTTL(0))
|
|
225
|
+
|
|
226
|
+
const rootErrorAtom = Atom.readable((get) => {
|
|
227
|
+
const errors = get(errorsAtom)
|
|
228
|
+
const entry = errors.get("")
|
|
229
|
+
return entry ? Option.some(entry.message) : Option.none<string>()
|
|
230
|
+
}).pipe(Atom.setIdleTTL(0))
|
|
202
231
|
|
|
203
232
|
const valuesAtom = Atom.readable((get) => Option.map(get(stateAtom), (state) => state.values)).pipe(
|
|
204
233
|
Atom.setIdleTTL(0),
|
|
@@ -253,6 +282,7 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
253
282
|
|
|
254
283
|
const validationAtomsRegistry = createWeakRegistry<Atom.AtomResultFn<unknown, void, ParseResult.ParseError>>()
|
|
255
284
|
const fieldAtomsRegistry = createWeakRegistry<FieldAtoms>()
|
|
285
|
+
const publicFieldAtomRegistry = createWeakRegistry<Atom.Atom<Option.Option<unknown>>>()
|
|
256
286
|
|
|
257
287
|
const getOrCreateValidationAtom = (
|
|
258
288
|
fieldPath: string,
|
|
@@ -302,13 +332,13 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
302
332
|
},
|
|
303
333
|
).pipe(Atom.setIdleTTL(0))
|
|
304
334
|
|
|
305
|
-
const
|
|
306
|
-
const errors = get(
|
|
307
|
-
const
|
|
308
|
-
return
|
|
335
|
+
const errorAtom = Atom.readable((get) => {
|
|
336
|
+
const errors = get(errorsAtom)
|
|
337
|
+
const entry = errors.get(fieldPath)
|
|
338
|
+
return entry ? Option.some(entry) : Option.none<Validation.ErrorEntry>()
|
|
309
339
|
}).pipe(Atom.setIdleTTL(0))
|
|
310
340
|
|
|
311
|
-
const atoms: FieldAtoms = { valueAtom, initialValueAtom, touchedAtom,
|
|
341
|
+
const atoms: FieldAtoms = { valueAtom, initialValueAtom, touchedAtom, errorAtom }
|
|
312
342
|
fieldAtomsRegistry.set(fieldPath, atoms)
|
|
313
343
|
return atoms
|
|
314
344
|
}
|
|
@@ -326,17 +356,17 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
326
356
|
const state = get(stateAtom)
|
|
327
357
|
if (Option.isNone(state)) return yield* Effect.die("Form not initialized")
|
|
328
358
|
const values = state.value.values
|
|
329
|
-
get.set(
|
|
359
|
+
get.set(errorsAtom, new Map())
|
|
330
360
|
const decoded = yield* pipe(
|
|
331
|
-
Schema.decodeUnknown(combinedSchema)(values) as Effect.Effect<
|
|
361
|
+
Schema.decodeUnknown(combinedSchema, { errors: "all" })(values) as Effect.Effect<
|
|
332
362
|
Field.DecodedFromFields<TFields>,
|
|
333
363
|
ParseResult.ParseError,
|
|
334
364
|
R
|
|
335
365
|
>,
|
|
336
366
|
Effect.tapError((parseError) =>
|
|
337
367
|
Effect.sync(() => {
|
|
338
|
-
const routedErrors = Validation.
|
|
339
|
-
get.set(
|
|
368
|
+
const routedErrors = Validation.routeErrorsWithSource(parseError)
|
|
369
|
+
get.set(errorsAtom, routedErrors)
|
|
340
370
|
get.set(stateAtom, Option.some(operations.createSubmitState(state.value)))
|
|
341
371
|
})
|
|
342
372
|
),
|
|
@@ -509,7 +539,7 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
509
539
|
const state = get(stateAtom)
|
|
510
540
|
if (Option.isNone(state)) return
|
|
511
541
|
get.set(stateAtom, Option.some(operations.createResetState(state.value)))
|
|
512
|
-
get.set(
|
|
542
|
+
get.set(errorsAtom, new Map())
|
|
513
543
|
resetValidationAtoms(get)
|
|
514
544
|
get.set(submitAtom, Atom.Reset)
|
|
515
545
|
}, { initialValue: undefined as void }).pipe(Atom.setIdleTTL(0))
|
|
@@ -518,14 +548,14 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
518
548
|
const state = get(stateAtom)
|
|
519
549
|
if (Option.isNone(state)) return
|
|
520
550
|
get.set(stateAtom, Option.some(operations.revertToLastSubmit(state.value)))
|
|
521
|
-
get.set(
|
|
551
|
+
get.set(errorsAtom, new Map())
|
|
522
552
|
}, { initialValue: undefined as void }).pipe(Atom.setIdleTTL(0))
|
|
523
553
|
|
|
524
554
|
const setValuesAtom = Atom.fnSync<Field.EncodedFromFields<TFields>>()((_values, get) => {
|
|
525
555
|
const state = get(stateAtom)
|
|
526
556
|
if (Option.isNone(state)) return
|
|
527
557
|
get.set(stateAtom, Option.some(operations.setFormValues(state.value, _values)))
|
|
528
|
-
get.set(
|
|
558
|
+
get.set(errorsAtom, new Map())
|
|
529
559
|
}, { initialValue: undefined as void }).pipe(Atom.setIdleTTL(0))
|
|
530
560
|
|
|
531
561
|
const setValueAtomsRegistry = createWeakRegistry<Atom.Writable<void, any>>()
|
|
@@ -544,31 +574,37 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
544
574
|
: update
|
|
545
575
|
|
|
546
576
|
get.set(stateAtom, Option.some(operations.setFieldValue(state.value, field.key, newValue)))
|
|
547
|
-
|
|
548
|
-
const currentErrors = get(crossFieldErrorsAtom)
|
|
549
|
-
const nextErrors = new Map<string, string>()
|
|
550
|
-
for (const [errorPath, message] of currentErrors) {
|
|
551
|
-
if (!isPathUnderRoot(errorPath, field.key)) {
|
|
552
|
-
nextErrors.set(errorPath, message)
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
if (nextErrors.size !== currentErrors.size) {
|
|
556
|
-
get.set(crossFieldErrorsAtom, nextErrors)
|
|
557
|
-
}
|
|
577
|
+
// Don't clear errors - display logic handles showing/hiding based on source + validation state
|
|
558
578
|
}, { initialValue: undefined as void }).pipe(Atom.setIdleTTL(0))
|
|
559
579
|
|
|
560
580
|
setValueAtomsRegistry.set(field.key, atom)
|
|
561
581
|
return atom
|
|
562
582
|
}
|
|
563
583
|
|
|
564
|
-
const getFieldAtom = <S>(field: FormBuilder.FieldRef<S>): Atom.Atom<S
|
|
565
|
-
const
|
|
566
|
-
return
|
|
584
|
+
const getFieldAtom = <S>(field: FormBuilder.FieldRef<S>): Atom.Atom<Option.Option<S>> => {
|
|
585
|
+
const existing = publicFieldAtomRegistry.get(field.key)
|
|
586
|
+
if (existing) return existing as Atom.Atom<Option.Option<S>>
|
|
587
|
+
|
|
588
|
+
const safeAtom = Atom.readable((get) =>
|
|
589
|
+
Option.map(get(stateAtom), (state) => getNestedValue(state.values, field.key) as S)
|
|
590
|
+
).pipe(Atom.setIdleTTL(0))
|
|
591
|
+
|
|
592
|
+
publicFieldAtomRegistry.set(field.key, safeAtom)
|
|
593
|
+
return safeAtom
|
|
567
594
|
}
|
|
568
595
|
|
|
596
|
+
const mountAtom = Atom.readable((get) => {
|
|
597
|
+
get(stateAtom)
|
|
598
|
+
get(errorsAtom)
|
|
599
|
+
get(submitAtom)
|
|
600
|
+
}).pipe(Atom.setIdleTTL(0))
|
|
601
|
+
|
|
602
|
+
const keepAliveActiveAtom = Atom.make(false).pipe(Atom.setIdleTTL(0))
|
|
603
|
+
|
|
569
604
|
return {
|
|
570
605
|
stateAtom,
|
|
571
|
-
|
|
606
|
+
errorsAtom,
|
|
607
|
+
rootErrorAtom,
|
|
572
608
|
valuesAtom,
|
|
573
609
|
dirtyFieldsAtom,
|
|
574
610
|
isDirtyAtom,
|
|
@@ -590,5 +626,7 @@ export const make = <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = v
|
|
|
590
626
|
setValuesAtom,
|
|
591
627
|
setValue,
|
|
592
628
|
getFieldAtom,
|
|
629
|
+
mountAtom,
|
|
630
|
+
keepAliveActiveAtom,
|
|
593
631
|
} as FormAtoms<TFields, R, A, E, SubmitArgs>
|
|
594
632
|
}
|
package/src/Validation.ts
CHANGED
|
@@ -3,8 +3,56 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Option from "effect/Option"
|
|
5
5
|
import * as ParseResult from "effect/ParseResult"
|
|
6
|
+
import type * as AST from "effect/SchemaAST"
|
|
6
7
|
import { schemaPathToFieldPath } from "./Path.js"
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Source of a validation error.
|
|
11
|
+
* - 'field': Error from field schema validation (e.g., minLength, pattern)
|
|
12
|
+
* - 'refinement': Error from cross-field refinement (e.g., password !== confirm)
|
|
13
|
+
*
|
|
14
|
+
* @category Models
|
|
15
|
+
*/
|
|
16
|
+
export type ErrorSource = "field" | "refinement"
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A validation error entry with its source.
|
|
20
|
+
*
|
|
21
|
+
* @category Models
|
|
22
|
+
*/
|
|
23
|
+
export interface ErrorEntry {
|
|
24
|
+
readonly message: string
|
|
25
|
+
readonly source: ErrorSource
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const getBaseAST = (ast: AST.AST): AST.AST => {
|
|
29
|
+
switch (ast._tag) {
|
|
30
|
+
case "Refinement":
|
|
31
|
+
case "Transformation":
|
|
32
|
+
return getBaseAST(ast.from)
|
|
33
|
+
default:
|
|
34
|
+
return ast
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Returns true if the AST represents a composite type where refinements indicate cross-field validation.
|
|
40
|
+
* Covers: Schema.Struct, Class, Tuple, Union, Suspend.
|
|
41
|
+
*/
|
|
42
|
+
const isCompositeType = (ast: AST.AST): boolean => {
|
|
43
|
+
const base = getBaseAST(ast)
|
|
44
|
+
switch (base._tag) {
|
|
45
|
+
case "TypeLiteral": // Schema.Struct
|
|
46
|
+
case "TupleType": // Schema.Tuple
|
|
47
|
+
case "Declaration": // Schema.Class, Schema.TaggedClass
|
|
48
|
+
case "Union": // Schema.Union
|
|
49
|
+
case "Suspend": // Recursive schemas
|
|
50
|
+
return true
|
|
51
|
+
default:
|
|
52
|
+
return false
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
8
56
|
/**
|
|
9
57
|
* Extracts the first error message from a ParseError.
|
|
10
58
|
*
|
|
@@ -37,3 +85,85 @@ export const routeErrors = (error: ParseResult.ParseError): Map<string, string>
|
|
|
37
85
|
|
|
38
86
|
return result
|
|
39
87
|
}
|
|
88
|
+
|
|
89
|
+
const determineErrorSources = (error: ParseResult.ParseError): Map<string, ErrorSource> => {
|
|
90
|
+
const sources = new Map<string, ErrorSource>()
|
|
91
|
+
|
|
92
|
+
const walk = (issue: ParseResult.ParseIssue, path: ReadonlyArray<PropertyKey>, source: ErrorSource): void => {
|
|
93
|
+
switch (issue._tag) {
|
|
94
|
+
case "Refinement":
|
|
95
|
+
if (issue.kind === "Predicate" && isCompositeType(issue.ast.from)) {
|
|
96
|
+
walk(issue.issue, path, "refinement")
|
|
97
|
+
} else {
|
|
98
|
+
walk(issue.issue, path, source)
|
|
99
|
+
}
|
|
100
|
+
break
|
|
101
|
+
case "Pointer": {
|
|
102
|
+
const pointerPath = Array.isArray(issue.path) ? issue.path : [issue.path]
|
|
103
|
+
walk(issue.issue, [...path, ...pointerPath], source)
|
|
104
|
+
break
|
|
105
|
+
}
|
|
106
|
+
case "Composite": {
|
|
107
|
+
const issues = Array.isArray(issue.issues) ? issue.issues : [issue.issues]
|
|
108
|
+
for (const sub of issues) {
|
|
109
|
+
walk(sub, path, source)
|
|
110
|
+
}
|
|
111
|
+
break
|
|
112
|
+
}
|
|
113
|
+
case "Type":
|
|
114
|
+
case "Missing":
|
|
115
|
+
case "Unexpected":
|
|
116
|
+
case "Forbidden": {
|
|
117
|
+
const fieldPath = schemaPathToFieldPath(path)
|
|
118
|
+
const key = fieldPath ?? ""
|
|
119
|
+
if (!sources.has(key)) {
|
|
120
|
+
sources.set(key, source)
|
|
121
|
+
}
|
|
122
|
+
break
|
|
123
|
+
}
|
|
124
|
+
case "Transformation":
|
|
125
|
+
// filterEffect/transformOrFail produce Transformation with FinalTransformation on composite types
|
|
126
|
+
if (
|
|
127
|
+
issue.kind === "Transformation" &&
|
|
128
|
+
issue.ast.transformation._tag === "FinalTransformation" &&
|
|
129
|
+
isCompositeType(issue.ast.from)
|
|
130
|
+
) {
|
|
131
|
+
walk(issue.issue, path, "refinement")
|
|
132
|
+
} else {
|
|
133
|
+
walk(issue.issue, path, source)
|
|
134
|
+
}
|
|
135
|
+
break
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
walk(error.issue, [], "field")
|
|
140
|
+
return sources
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Routes validation errors with source tracking.
|
|
145
|
+
*
|
|
146
|
+
* Source determination:
|
|
147
|
+
* - `kind: "Predicate"` on composite types → "refinement" (cross-field validation)
|
|
148
|
+
* - All other errors → "field" (per-field schema validation)
|
|
149
|
+
*
|
|
150
|
+
* Empty string key ("") stores root-level errors (refinements without specific paths).
|
|
151
|
+
*
|
|
152
|
+
* @category Error Handling
|
|
153
|
+
*/
|
|
154
|
+
export const routeErrorsWithSource = (error: ParseResult.ParseError): Map<string, ErrorEntry> => {
|
|
155
|
+
const result = new Map<string, ErrorEntry>()
|
|
156
|
+
const formattedIssues = ParseResult.ArrayFormatter.formatErrorSync(error)
|
|
157
|
+
const sources = determineErrorSources(error)
|
|
158
|
+
|
|
159
|
+
for (const issue of formattedIssues) {
|
|
160
|
+
const fieldPath = schemaPathToFieldPath(issue.path)
|
|
161
|
+
const key = fieldPath ?? ""
|
|
162
|
+
if (!result.has(key)) {
|
|
163
|
+
const source = sources.get(key) ?? "field"
|
|
164
|
+
result.set(key, { message: issue.message, source })
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return result
|
|
169
|
+
}
|