@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.
@@ -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 crossFieldErrorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
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 crossFieldErrorAtom = Atom.readable(get => {
128
- const errors = get(crossFieldErrorsAtom);
129
- const error = errors.get(fieldPath);
130
- return error !== undefined ? Option.some(error) : Option.none();
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
- crossFieldErrorAtom
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(crossFieldErrorsAtom, new Map());
153
- const decoded = yield* (0, _Function.pipe)(Schema.decodeUnknown(combinedSchema)(values), Effect.tapError(parseError => Effect.sync(() => {
154
- const routedErrors = Validation.routeErrors(parseError);
155
- get.set(crossFieldErrorsAtom, routedErrors);
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(crossFieldErrorsAtom, new Map());
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(crossFieldErrorsAtom, new Map());
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(crossFieldErrorsAtom, new Map());
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
- const currentErrors = get(crossFieldErrorsAtom);
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
- valueAtom
339
- } = getOrCreateFieldAtoms(field.key);
340
- return valueAtom;
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
- crossFieldErrorsAtom,
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":[]}
@@ -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;AACA,IAAAE,KAAA,gBAAAF,OAAA;AAAiD,SAAAD,wBAAAI,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AALjD;;;;AAOA;;;;;AAKO,MAAMkB,iBAAiB,GAAIC,KAA6B,IAA2B;EACxF,MAAMC,MAAM,GAAGvB,WAAW,CAACwB,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAChE,IAAIC,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;IACvB,OAAO7B,MAAM,CAAC8B,IAAI,EAAE;EACtB;EACA,OAAO9B,MAAM,CAAC+B,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC;AACvC,CAAC;AAED;;;;;;AAAAC,OAAA,CAAAT,iBAAA,GAAAA,iBAAA;AAMO,MAAMU,WAAW,GAAIT,KAA6B,IAAyB;EAChF,MAAMU,MAAM,GAAG,IAAIC,GAAG,EAAkB;EACxC,MAAMV,MAAM,GAAGvB,WAAW,CAACwB,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAEhE,KAAK,MAAMY,KAAK,IAAIX,MAAM,EAAE;IAC1B,MAAMY,SAAS,GAAG,IAAAlC,KAAA,CAAAmC,qBAAqB,EAACF,KAAK,CAACG,IAAI,CAAC;IACnD,IAAIF,SAAS,IAAI,CAACH,MAAM,CAACnB,GAAG,CAACsB,SAAS,CAAC,EAAE;MACvCH,MAAM,CAACjB,GAAG,CAACoB,SAAS,EAAED,KAAK,CAACL,OAAO,CAAC;IACtC;EACF;EAEA,OAAOG,MAAM;AACf,CAAC;AAAAF,OAAA,CAAAC,WAAA,GAAAA,WAAA","ignoreList":[]}
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":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,cAAAC,OAAA;AACA,IAAAC,WAAA,gBAAAF,uBAAA,cAAAC,OAAA;AAEA,IAAAE,KAAA,gBAAAF,OAAA;AAAiD,SAAAD,wBAAAI,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AANjD;;;;AA2BA,MAAMkB,UAAU,GAAIC,GAAY,IAAa;EAC3C,QAAQA,GAAG,CAACC,IAAI;IACd,KAAK,YAAY;IACjB,KAAK,gBAAgB;MACnB,OAAOF,UAAU,CAACC,GAAG,CAACE,IAAI,CAAC;IAC7B;MACE,OAAOF,GAAG;EACd;AACF,CAAC;AAED;;;;AAIA,MAAMG,eAAe,GAAIH,GAAY,IAAa;EAChD,MAAMI,IAAI,GAAGL,UAAU,CAACC,GAAG,CAAC;EAC5B,QAAQI,IAAI,CAACH,IAAI;IACf,KAAK,aAAa,CAAC,CAAC;IACpB,KAAK,WAAW,CAAC,CAAC;IAClB,KAAK,aAAa,CAAC,CAAC;IACpB,KAAK,OAAO,CAAC,CAAC;IACd,KAAK,SAAS;MAAE;MACd,OAAO,IAAI;IACb;MACE,OAAO,KAAK;EAChB;AACF,CAAC;AAED;;;;;AAKO,MAAMI,iBAAiB,GAAIC,KAA6B,IAA2B;EACxF,MAAMC,MAAM,GAAG7B,WAAW,CAAC8B,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAChE,IAAIC,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;IACvB,OAAOnC,MAAM,CAACoC,IAAI,EAAE;EACtB;EACA,OAAOpC,MAAM,CAACqC,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC;AACvC,CAAC;AAED;;;;;;AAAAC,OAAA,CAAAT,iBAAA,GAAAA,iBAAA;AAMO,MAAMU,WAAW,GAAIT,KAA6B,IAAyB;EAChF,MAAMU,MAAM,GAAG,IAAIC,GAAG,EAAkB;EACxC,MAAMV,MAAM,GAAG7B,WAAW,CAAC8B,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAEhE,KAAK,MAAMY,KAAK,IAAIX,MAAM,EAAE;IAC1B,MAAMY,SAAS,GAAG,IAAAxC,KAAA,CAAAyC,qBAAqB,EAACF,KAAK,CAACG,IAAI,CAAC;IACnD,IAAIF,SAAS,IAAI,CAACH,MAAM,CAACzB,GAAG,CAAC4B,SAAS,CAAC,EAAE;MACvCH,MAAM,CAACvB,GAAG,CAAC0B,SAAS,EAAED,KAAK,CAACL,OAAO,CAAC;IACtC;EACF;EAEA,OAAOG,MAAM;AACf,CAAC;AAAAF,OAAA,CAAAC,WAAA,GAAAA,WAAA;AAED,MAAMO,qBAAqB,GAAIhB,KAA6B,IAA8B;EACxF,MAAMiB,OAAO,GAAG,IAAIN,GAAG,EAAuB;EAE9C,MAAMO,IAAI,GAAGA,CAACN,KAA6B,EAAEG,IAAgC,EAAEI,MAAmB,KAAU;IAC1G,QAAQP,KAAK,CAACjB,IAAI;MAChB,KAAK,YAAY;QACf,IAAIiB,KAAK,CAACQ,IAAI,KAAK,WAAW,IAAIvB,eAAe,CAACe,KAAK,CAAClB,GAAG,CAACE,IAAI,CAAC,EAAE;UACjEsB,IAAI,CAACN,KAAK,CAACA,KAAK,EAAEG,IAAI,EAAE,YAAY,CAAC;QACvC,CAAC,MAAM;UACLG,IAAI,CAACN,KAAK,CAACA,KAAK,EAAEG,IAAI,EAAEI,MAAM,CAAC;QACjC;QACA;MACF,KAAK,SAAS;QAAE;UACd,MAAME,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACX,KAAK,CAACG,IAAI,CAAC,GAAGH,KAAK,CAACG,IAAI,GAAG,CAACH,KAAK,CAACG,IAAI,CAAC;UACzEG,IAAI,CAACN,KAAK,CAACA,KAAK,EAAE,CAAC,GAAGG,IAAI,EAAE,GAAGM,WAAW,CAAC,EAAEF,MAAM,CAAC;UACpD;QACF;MACA,KAAK,WAAW;QAAE;UAChB,MAAMlB,MAAM,GAAGqB,KAAK,CAACC,OAAO,CAACX,KAAK,CAACX,MAAM,CAAC,GAAGW,KAAK,CAACX,MAAM,GAAG,CAACW,KAAK,CAACX,MAAM,CAAC;UAC1E,KAAK,MAAMuB,GAAG,IAAIvB,MAAM,EAAE;YACxBiB,IAAI,CAACM,GAAG,EAAET,IAAI,EAAEI,MAAM,CAAC;UACzB;UACA;QACF;MACA,KAAK,MAAM;MACX,KAAK,SAAS;MACd,KAAK,YAAY;MACjB,KAAK,WAAW;QAAE;UAChB,MAAMN,SAAS,GAAG,IAAAxC,KAAA,CAAAyC,qBAAqB,EAACC,IAAI,CAAC;UAC7C,MAAMU,GAAG,GAAGZ,SAAS,IAAI,EAAE;UAC3B,IAAI,CAACI,OAAO,CAAChC,GAAG,CAACwC,GAAG,CAAC,EAAE;YACrBR,OAAO,CAAC9B,GAAG,CAACsC,GAAG,EAAEN,MAAM,CAAC;UAC1B;UACA;QACF;MACA,KAAK,gBAAgB;QACnB;QACA,IACEP,KAAK,CAACQ,IAAI,KAAK,gBAAgB,IAC/BR,KAAK,CAAClB,GAAG,CAACgC,cAAc,CAAC/B,IAAI,KAAK,qBAAqB,IACvDE,eAAe,CAACe,KAAK,CAAClB,GAAG,CAACE,IAAI,CAAC,EAC/B;UACAsB,IAAI,CAACN,KAAK,CAACA,KAAK,EAAEG,IAAI,EAAE,YAAY,CAAC;QACvC,CAAC,MAAM;UACLG,IAAI,CAACN,KAAK,CAACA,KAAK,EAAEG,IAAI,EAAEI,MAAM,CAAC;QACjC;QACA;IACJ;EACF,CAAC;EAEDD,IAAI,CAAClB,KAAK,CAACY,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC;EAC9B,OAAOK,OAAO;AAChB,CAAC;AAED;;;;;;;;;;;AAWO,MAAMU,qBAAqB,GAAI3B,KAA6B,IAA6B;EAC9F,MAAMU,MAAM,GAAG,IAAIC,GAAG,EAAsB;EAC5C,MAAMiB,eAAe,GAAGxD,WAAW,CAAC8B,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EACzE,MAAMiB,OAAO,GAAGD,qBAAqB,CAAChB,KAAK,CAAC;EAE5C,KAAK,MAAMY,KAAK,IAAIgB,eAAe,EAAE;IACnC,MAAMf,SAAS,GAAG,IAAAxC,KAAA,CAAAyC,qBAAqB,EAACF,KAAK,CAACG,IAAI,CAAC;IACnD,MAAMU,GAAG,GAAGZ,SAAS,IAAI,EAAE;IAC3B,IAAI,CAACH,MAAM,CAACzB,GAAG,CAACwC,GAAG,CAAC,EAAE;MACpB,MAAMN,MAAM,GAAGF,OAAO,CAAC/B,GAAG,CAACuC,GAAG,CAAC,IAAI,OAAO;MAC1Cf,MAAM,CAACvB,GAAG,CAACsC,GAAG,EAAE;QAAElB,OAAO,EAAEK,KAAK,CAACL,OAAO;QAAEY;MAAM,CAAE,CAAC;IACrD;EACF;EAEA,OAAOT,MAAM;AACf,CAAC;AAAAF,OAAA,CAAAmB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -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 crossFieldErrorAtom: Atom.Atom<Option.Option<string>>;
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 crossFieldErrorsAtom: Atom.Writable<Map<string, string>, Map<string, string>>;
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":"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"}
1
+ {"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
@@ -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;AAGjD;;;;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"}
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"}
@@ -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, isPathUnderRoot, setNestedValue } from "./Path.js";
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 crossFieldErrorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
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 crossFieldErrorAtom = Atom.readable(get => {
102
- const errors = get(crossFieldErrorsAtom);
103
- const error = errors.get(fieldPath);
104
- return error !== undefined ? Option.some(error) : Option.none();
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
- crossFieldErrorAtom
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(crossFieldErrorsAtom, new Map());
127
- const decoded = yield* pipe(Schema.decodeUnknown(combinedSchema)(values), Effect.tapError(parseError => Effect.sync(() => {
128
- const routedErrors = Validation.routeErrors(parseError);
129
- get.set(crossFieldErrorsAtom, routedErrors);
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(crossFieldErrorsAtom, new Map());
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(crossFieldErrorsAtom, new Map());
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(crossFieldErrorsAtom, new Map());
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
- const currentErrors = get(crossFieldErrorsAtom);
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
- valueAtom
313
- } = getOrCreateFieldAtoms(field.key);
314
- return valueAtom;
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
- crossFieldErrorsAtom,
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":[]}
@@ -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;AACjD,SAASC,qBAAqB,QAAQ,WAAW;AAEjD;;;;;AAKA,OAAO,MAAMC,iBAAiB,GAAIC,KAA6B,IAA2B;EACxF,MAAMC,MAAM,GAAGJ,WAAW,CAACK,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAChE,IAAIC,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;IACvB,OAAOR,MAAM,CAACS,IAAI,EAAE;EACtB;EACA,OAAOT,MAAM,CAACU,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC;AACvC,CAAC;AAED;;;;;;AAMA,OAAO,MAAMC,WAAW,GAAIR,KAA6B,IAAyB;EAChF,MAAMS,MAAM,GAAG,IAAIC,GAAG,EAAkB;EACxC,MAAMT,MAAM,GAAGJ,WAAW,CAACK,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAEhE,KAAK,MAAMW,KAAK,IAAIV,MAAM,EAAE;IAC1B,MAAMW,SAAS,GAAGd,qBAAqB,CAACa,KAAK,CAACE,IAAI,CAAC;IACnD,IAAID,SAAS,IAAI,CAACH,MAAM,CAACK,GAAG,CAACF,SAAS,CAAC,EAAE;MACvCH,MAAM,CAACM,GAAG,CAACH,SAAS,EAAED,KAAK,CAACJ,OAAO,CAAC;IACtC;EACF;EAEA,OAAOE,MAAM;AACf,CAAC","ignoreList":[]}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucas-barake/effect-form",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Type-safe form builder powered by Effect Schema",
5
5
  "license": "MIT",
6
6
  "repository": {
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, isPathUnderRoot, setNestedValue } from "./Path.js"
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 crossFieldErrorAtom: Atom.Atom<Option.Option<string>>
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 crossFieldErrorsAtom: Atom.Writable<Map<string, string>, Map<string, string>>
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 crossFieldErrorsAtom = Atom.make<Map<string, string>>(new Map()).pipe(Atom.setIdleTTL(0))
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 crossFieldErrorAtom = Atom.readable((get) => {
306
- const errors = get(crossFieldErrorsAtom)
307
- const error = errors.get(fieldPath)
308
- return error !== undefined ? Option.some(error) : Option.none<string>()
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, crossFieldErrorAtom }
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(crossFieldErrorsAtom, new Map())
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.routeErrors(parseError)
339
- get.set(crossFieldErrorsAtom, routedErrors)
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(crossFieldErrorsAtom, new Map())
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(crossFieldErrorsAtom, new Map())
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(crossFieldErrorsAtom, new Map())
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 { valueAtom } = getOrCreateFieldAtoms(field.key)
566
- return valueAtom as Atom.Atom<S>
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
- crossFieldErrorsAtom,
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
+ }