@lucas-barake/effect-form 0.13.0 → 0.15.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.
Files changed (62) hide show
  1. package/dist/cjs/Field.js +0 -67
  2. package/dist/cjs/Field.js.map +1 -1
  3. package/dist/cjs/FormAtoms.js +6 -26
  4. package/dist/cjs/FormAtoms.js.map +1 -1
  5. package/dist/cjs/FormBuilder.js +0 -66
  6. package/dist/cjs/FormBuilder.js.map +1 -1
  7. package/dist/cjs/Mode.js +0 -9
  8. package/dist/cjs/Mode.js.map +1 -1
  9. package/dist/cjs/Path.js +0 -34
  10. package/dist/cjs/Path.js.map +1 -1
  11. package/dist/cjs/Validation.js +0 -30
  12. package/dist/cjs/Validation.js.map +1 -1
  13. package/dist/cjs/internal/dirty.js +0 -16
  14. package/dist/cjs/internal/dirty.js.map +1 -1
  15. package/dist/cjs/internal/weak-registry.js +0 -11
  16. package/dist/cjs/internal/weak-registry.js.map +1 -1
  17. package/dist/dts/Field.d.ts +0 -99
  18. package/dist/dts/Field.d.ts.map +1 -1
  19. package/dist/dts/FormAtoms.d.ts +1 -54
  20. package/dist/dts/FormAtoms.d.ts.map +1 -1
  21. package/dist/dts/FormBuilder.d.ts +3 -152
  22. package/dist/dts/FormBuilder.d.ts.map +1 -1
  23. package/dist/dts/Mode.d.ts +0 -33
  24. package/dist/dts/Mode.d.ts.map +1 -1
  25. package/dist/dts/Path.d.ts +0 -34
  26. package/dist/dts/Path.d.ts.map +1 -1
  27. package/dist/dts/Validation.d.ts +0 -37
  28. package/dist/dts/Validation.d.ts.map +1 -1
  29. package/dist/dts/index.d.ts +17 -19
  30. package/dist/dts/index.d.ts.map +1 -1
  31. package/dist/dts/internal/dirty.d.ts +0 -10
  32. package/dist/dts/internal/dirty.d.ts.map +1 -1
  33. package/dist/dts/internal/weak-registry.d.ts +8 -6
  34. package/dist/dts/internal/weak-registry.d.ts.map +1 -1
  35. package/dist/esm/Field.js +0 -66
  36. package/dist/esm/Field.js.map +1 -1
  37. package/dist/esm/FormAtoms.js +7 -27
  38. package/dist/esm/FormAtoms.js.map +1 -1
  39. package/dist/esm/FormBuilder.js +0 -66
  40. package/dist/esm/FormBuilder.js.map +1 -1
  41. package/dist/esm/Mode.js +0 -8
  42. package/dist/esm/Mode.js.map +1 -1
  43. package/dist/esm/Path.js +0 -34
  44. package/dist/esm/Path.js.map +1 -1
  45. package/dist/esm/Validation.js +0 -29
  46. package/dist/esm/Validation.js.map +1 -1
  47. package/dist/esm/index.js +17 -19
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/internal/dirty.js +0 -15
  50. package/dist/esm/internal/dirty.js.map +1 -1
  51. package/dist/esm/internal/weak-registry.js +0 -11
  52. package/dist/esm/internal/weak-registry.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/Field.ts +0 -99
  55. package/src/FormAtoms.ts +277 -320
  56. package/src/FormBuilder.ts +0 -172
  57. package/src/Mode.ts +0 -33
  58. package/src/Path.ts +0 -35
  59. package/src/Validation.ts +0 -41
  60. package/src/index.ts +22 -19
  61. package/src/internal/dirty.ts +0 -15
  62. package/src/internal/weak-registry.ts +0 -17
@@ -1,6 +1,3 @@
1
- /**
2
- * Validation utilities for form error handling.
3
- */
4
1
  import * as Option from "effect/Option";
5
2
  import * as ParseResult from "effect/ParseResult";
6
3
  import { schemaPathToFieldPath } from "./Path.js";
@@ -13,10 +10,6 @@ const getBaseAST = ast => {
13
10
  return ast;
14
11
  }
15
12
  };
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
13
  const isCompositeType = ast => {
21
14
  const base = getBaseAST(ast);
22
15
  switch (base._tag) {
@@ -31,11 +24,6 @@ const isCompositeType = ast => {
31
24
  return false;
32
25
  }
33
26
  };
34
- /**
35
- * Extracts the first error message from a ParseError.
36
- *
37
- * @category Error Handling
38
- */
39
27
  export const extractFirstError = error => {
40
28
  const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
41
29
  if (issues.length === 0) {
@@ -43,12 +31,6 @@ export const extractFirstError = error => {
43
31
  }
44
32
  return Option.some(issues[0].message);
45
33
  };
46
- /**
47
- * Routes validation errors from a ParseError to a map of field paths to error messages.
48
- * Used for cross-field validation where schema errors need to be displayed on specific fields.
49
- *
50
- * @category Error Handling
51
- */
52
34
  export const routeErrors = error => {
53
35
  const result = new Map();
54
36
  const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
@@ -109,17 +91,6 @@ const determineErrorSources = error => {
109
91
  walk(error.issue, [], "field");
110
92
  return sources;
111
93
  };
112
- /**
113
- * Routes validation errors with source tracking.
114
- *
115
- * Source determination:
116
- * - `kind: "Predicate"` on composite types → "refinement" (cross-field validation)
117
- * - All other errors → "field" (per-field schema validation)
118
- *
119
- * Empty string key ("") stores root-level errors (refinements without specific paths).
120
- *
121
- * @category Error Handling
122
- */
123
94
  export const routeErrorsWithSource = error => {
124
95
  const result = new Map();
125
96
  const formattedIssues = ParseResult.ArrayFormatter.formatErrorSync(error);
@@ -1 +1 @@
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":[]}
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/dist/esm/index.js CHANGED
@@ -1,27 +1,25 @@
1
- /**
2
- * Field definitions for type-safe forms.
3
- */
4
1
  export * as Field from "./Field.js";
5
2
  /**
6
- * Atoms for a single field.
7
- *
8
- * @category Models
9
- */
3
+ * Root anchor atom for the form's dependency graph.
4
+ * Mount this atom to keep all form state alive even when field components unmount.
5
+ *
6
+ * Useful for:
7
+ * - Multi-step wizards where steps unmount but state should persist
8
+ * - Conditional fields (toggles) where state should survive visibility changes
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * // Keep form state alive at wizard root level
13
+ * function Wizard() {
14
+ * useAtomMount(step1Form.mount)
15
+ * useAtomMount(step2Form.mount)
16
+ * return currentStep === 1 ? <Step1 /> : <Step2 />
17
+ * }
18
+ * ```
19
+ */
10
20
  export * as FormAtoms from "./FormAtoms.js";
11
- /**
12
- * @category Models
13
- */
14
21
  export * as FormBuilder from "./FormBuilder.js";
15
- /**
16
- * Form validation mode configuration.
17
- */
18
22
  export * as Mode from "./Mode.js";
19
- /**
20
- * Path utilities for form field operations.
21
- */
22
23
  export * as Path from "./Path.js";
23
- /**
24
- * Validation utilities for form error handling.
25
- */
26
24
  export * as Validation from "./Validation.js";
27
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Field","FormAtoms","FormBuilder","Mode","Path","Validation"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,YAAY;AAEnC;;;;;AAKA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Field","FormAtoms","FormBuilder","Mode","Path","Validation"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,YAAY;AAEnC;;;;;;;;;;;;;;;;;;AAkBA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAG3C,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAG/C,OAAO,KAAKC,IAAI,MAAM,WAAW;AAGjC,OAAO,KAAKC,IAAI,MAAM,WAAW;AAGjC,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
@@ -1,15 +1,6 @@
1
- /**
2
- * Internal dirty tracking algorithms.
3
- *
4
- * @internal
5
- */
6
1
  import * as Equal from "effect/Equal";
7
2
  import * as Utils from "effect/Utils";
8
3
  import { getNestedValue, isPathUnderRoot } from "../Path.js";
9
- /**
10
- * Recalculates dirty fields for an array after mutation.
11
- * Clears all paths under the array and re-evaluates each item.
12
- */
13
4
  export const recalculateDirtyFieldsForArray = (dirtyFields, initialValues, arrayPath, newItems) => {
14
5
  const initialItems = getNestedValue(initialValues, arrayPath) ?? [];
15
6
  if (newItems === initialItems) {
@@ -34,12 +25,6 @@ export const recalculateDirtyFieldsForArray = (dirtyFields, initialValues, array
34
25
  }
35
26
  return nextDirty;
36
27
  };
37
- /**
38
- * Recalculates dirty fields for a subtree after value change.
39
- * Clears the rootPath and all children, then re-evaluates recursively.
40
- *
41
- * @param rootPath - Empty string for full form, or a specific path for targeted update
42
- */
43
28
  export const recalculateDirtySubtree = (currentDirty, allInitial, allValues, rootPath = "") => {
44
29
  const targetValue = rootPath ? getNestedValue(allValues, rootPath) : allValues;
45
30
  const targetInitial = rootPath ? getNestedValue(allInitial, rootPath) : allInitial;
@@ -1 +1 @@
1
- {"version":3,"file":"dirty.js","names":["Equal","Utils","getNestedValue","isPathUnderRoot","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","nextDirty","Set","Array","from","filter","path","loopLength","Math","max","length","i","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","recalculateDirtySubtree","currentDirty","allInitial","allValues","rootPath","targetValue","targetInitial","changed","clear","recurse","current","initial","isArray","initialArr","initialObj","key","undefined"],"sources":["../../../src/internal/dirty.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dirty.js","names":["Equal","Utils","getNestedValue","isPathUnderRoot","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","nextDirty","Set","Array","from","filter","path","loopLength","Math","max","length","i","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","recalculateDirtySubtree","currentDirty","allInitial","allValues","rootPath","targetValue","targetInitial","changed","clear","recurse","current","initial","isArray","initialArr","initialObj","key","undefined"],"sources":["../../../src/internal/dirty.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,3 @@
1
- /**
2
- * Internal WeakRef-based registry for caching atoms.
3
- *
4
- * @internal
5
- */
6
- /**
7
- * Creates a WeakRef-based registry with automatic cleanup via FinalizationRegistry.
8
- * Falls back to a regular Map in environments without WeakRef support.
9
- *
10
- * @internal
11
- */
12
1
  export const createWeakRegistry = () => {
13
2
  if (typeof WeakRef === "undefined" || typeof FinalizationRegistry === "undefined") {
14
3
  const map = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"weak-registry.js","names":["createWeakRegistry","WeakRef","FinalizationRegistry","map","Map","get","key","set","value","delete","clear","values","registry","deref","register","ref","undefined"],"sources":["../../../src/internal/weak-registry.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAmBA;;;;;;AAMA,OAAO,MAAMA,kBAAkB,GAAGA,CAAA,KAAwC;EACxE,IAAI,OAAOC,OAAO,KAAK,WAAW,IAAI,OAAOC,oBAAoB,KAAK,WAAW,EAAE;IACjF,MAAMC,GAAG,GAAG,IAAIC,GAAG,EAAa;IAChC,OAAO;MACLC,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC;MAC1BC,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;QAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAEE,KAAK,CAAC;MACrB,CAAC;MACDC,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;MAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;MACxBC,MAAM,EAAEA,CAAA,KAAMR,GAAG,CAACQ,MAAM;KACzB;EACH;EAEA,MAAMR,GAAG,GAAG,IAAIC,GAAG,EAAsB;EACzC,MAAMQ,QAAQ,GAAG,IAAIV,oBAAoB,CAAUI,GAAG,IAAI;IACxDH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;EACjB,CAAC,CAAC;EAEF,OAAO;IACLD,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC,EAAEO,KAAK,EAAE;IACnCN,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;MAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAE,IAAIL,OAAO,CAACO,KAAK,CAAC,CAAC;MAChCI,QAAQ,CAACE,QAAQ,CAACN,KAAK,EAAEF,GAAG,CAAC;IAC/B,CAAC;IACDG,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;IAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;IACxB,CAACC,MAAMA,CAAA;MACL,KAAK,MAAMI,GAAG,IAAIZ,GAAG,CAACQ,MAAM,EAAE,EAAE;QAC9B,MAAMH,KAAK,GAAGO,GAAG,CAACF,KAAK,EAAE;QACzB,IAAIL,KAAK,KAAKQ,SAAS,EAAE,MAAMR,KAAK;MACtC;IACF;GACD;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"weak-registry.js","names":["createWeakRegistry","WeakRef","FinalizationRegistry","map","Map","get","key","set","value","delete","clear","values","registry","deref","register","ref","undefined"],"sources":["../../../src/internal/weak-registry.ts"],"sourcesContent":[null],"mappings":"AAQA,OAAO,MAAMA,kBAAkB,GAAGA,CAAA,KAAwC;EACxE,IAAI,OAAOC,OAAO,KAAK,WAAW,IAAI,OAAOC,oBAAoB,KAAK,WAAW,EAAE;IACjF,MAAMC,GAAG,GAAG,IAAIC,GAAG,EAAa;IAChC,OAAO;MACLC,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC;MAC1BC,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;QAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAEE,KAAK,CAAC;MACrB,CAAC;MACDC,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;MAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;MACxBC,MAAM,EAAEA,CAAA,KAAMR,GAAG,CAACQ,MAAM;KACzB;EACH;EAEA,MAAMR,GAAG,GAAG,IAAIC,GAAG,EAAsB;EACzC,MAAMQ,QAAQ,GAAG,IAAIV,oBAAoB,CAAUI,GAAG,IAAI;IACxDH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;EACjB,CAAC,CAAC;EAEF,OAAO;IACLD,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC,EAAEO,KAAK,EAAE;IACnCN,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;MAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAE,IAAIL,OAAO,CAACO,KAAK,CAAC,CAAC;MAChCI,QAAQ,CAACE,QAAQ,CAACN,KAAK,EAAEF,GAAG,CAAC;IAC/B,CAAC;IACDG,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;IAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;IACxB,CAACC,MAAMA,CAAA;MACL,KAAK,MAAMI,GAAG,IAAIZ,GAAG,CAACQ,MAAM,EAAE,EAAE;QAC9B,MAAMH,KAAK,GAAGO,GAAG,CAACF,KAAK,EAAE;QACzB,IAAIL,KAAK,KAAKQ,SAAS,EAAE,MAAMR,KAAK;MACtC;IACF;GACD;AACH,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucas-barake/effect-form",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "Type-safe form builder powered by Effect Schema",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/Field.ts CHANGED
@@ -1,84 +1,30 @@
1
- /**
2
- * Field definitions for type-safe forms.
3
- */
4
1
  import * as Schema from "effect/Schema"
5
2
 
6
- /**
7
- * Unique identifier for Field instances.
8
- *
9
- * @category Symbols
10
- */
11
3
  export const TypeId: unique symbol = Symbol.for("@lucas-barake/effect-form/Field")
12
4
 
13
- /**
14
- * @category Symbols
15
- */
16
5
  export type TypeId = typeof TypeId
17
6
 
18
- /**
19
- * A scalar field definition containing the key and schema.
20
- *
21
- * @category Models
22
- */
23
7
  export interface FieldDef<K extends string, S extends Schema.Schema.Any> {
24
8
  readonly _tag: "field"
25
9
  readonly key: K
26
10
  readonly schema: S
27
11
  }
28
12
 
29
- /**
30
- * An array field definition containing a schema for items.
31
- *
32
- * @category Models
33
- */
34
13
  export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any> {
35
14
  readonly _tag: "array"
36
15
  readonly key: K
37
16
  readonly itemSchema: S
38
17
  }
39
18
 
40
- /**
41
- * Union of all field definition types.
42
- *
43
- * @category Models
44
- */
45
19
  export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>
46
20
 
47
- /**
48
- * A record of field definitions.
49
- *
50
- * @category Models
51
- */
52
21
  export type FieldsRecord = Record<string, AnyFieldDef>
53
22
 
54
- /**
55
- * Checks if a field definition is an array field.
56
- *
57
- * @category Guards
58
- */
59
23
  export const isArrayFieldDef = (def: AnyFieldDef): def is ArrayFieldDef<string, Schema.Schema.Any> =>
60
24
  def._tag === "array"
61
25
 
62
- /**
63
- * Checks if a field definition is a scalar field.
64
- *
65
- * @category Guards
66
- */
67
26
  export const isFieldDef = (def: AnyFieldDef): def is FieldDef<string, Schema.Schema.Any> => def._tag === "field"
68
27
 
69
- /**
70
- * Creates a scalar field definition.
71
- *
72
- * @example
73
- * ```ts
74
- * import * as Field from "@lucas-barake/effect-form/Field"
75
- * import * as Schema from "effect/Schema"
76
- *
77
- * const NameField = Field.makeField("name", Schema.String)
78
- * ```
79
- *
80
- * @category Constructors
81
- */
82
28
  export const makeField = <K extends string, S extends Schema.Schema.Any>(
83
29
  key: K,
84
30
  schema: S,
@@ -88,26 +34,6 @@ export const makeField = <K extends string, S extends Schema.Schema.Any>(
88
34
  schema,
89
35
  })
90
36
 
91
- /**
92
- * Creates an array field definition.
93
- *
94
- * @example
95
- * ```ts
96
- * import * as Field from "@lucas-barake/effect-form/Field"
97
- * import * as Schema from "effect/Schema"
98
- *
99
- * // Array of primitives
100
- * const TagsField = Field.makeArrayField("tags", Schema.String)
101
- *
102
- * // Array of objects
103
- * const ItemsField = Field.makeArrayField("items", Schema.Struct({
104
- * name: Schema.String,
105
- * quantity: Schema.Number
106
- * }))
107
- * ```
108
- *
109
- * @category Constructors
110
- */
111
37
  export const makeArrayField = <K extends string, S extends Schema.Schema.Any>(
112
38
  key: K,
113
39
  itemSchema: S,
@@ -117,33 +43,18 @@ export const makeArrayField = <K extends string, S extends Schema.Schema.Any>(
117
43
  itemSchema,
118
44
  })
119
45
 
120
- /**
121
- * Extracts the encoded (input) type from a fields record.
122
- *
123
- * @category Type Helpers
124
- */
125
46
  export type EncodedFromFields<T extends FieldsRecord> = {
126
47
  readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Encoded<S>
127
48
  : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Encoded<S>>
128
49
  : never
129
50
  }
130
51
 
131
- /**
132
- * Extracts the decoded (output) type from a fields record.
133
- *
134
- * @category Type Helpers
135
- */
136
52
  export type DecodedFromFields<T extends FieldsRecord> = {
137
53
  readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Type<S>
138
54
  : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Type<S>>
139
55
  : never
140
56
  }
141
57
 
142
- /**
143
- * Gets a default encoded value from a schema.
144
- *
145
- * @category Helpers
146
- */
147
58
  export const getDefaultFromSchema = (schema: Schema.Schema.Any): unknown => {
148
59
  const ast = schema.ast
149
60
  switch (ast._tag) {
@@ -172,11 +83,6 @@ export const getDefaultFromSchema = (schema: Schema.Schema.Any): unknown => {
172
83
  }
173
84
  }
174
85
 
175
- /**
176
- * Gets default encoded values for a fields record.
177
- *
178
- * @category Helpers
179
- */
180
86
  export const getDefaultEncodedValues = (fields: FieldsRecord): Record<string, unknown> => {
181
87
  const result: Record<string, unknown> = {}
182
88
  for (const [key, def] of Object.entries(fields)) {
@@ -189,11 +95,6 @@ export const getDefaultEncodedValues = (fields: FieldsRecord): Record<string, un
189
95
  return result
190
96
  }
191
97
 
192
- /**
193
- * Creates a touched record with all fields set to the given value.
194
- *
195
- * @category Helpers
196
- */
197
98
  export const createTouchedRecord = (fields: FieldsRecord, value: boolean): Record<string, boolean> => {
198
99
  const result: Record<string, boolean> = {}
199
100
  for (const key of Object.keys(fields)) {