@lucas-barake/effect-form 0.12.0 → 0.14.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/Field.js +0 -67
- package/dist/cjs/Field.js.map +1 -1
- package/dist/cjs/FormAtoms.js +0 -25
- package/dist/cjs/FormAtoms.js.map +1 -1
- package/dist/cjs/FormBuilder.js +0 -66
- package/dist/cjs/FormBuilder.js.map +1 -1
- package/dist/cjs/Mode.js +0 -9
- package/dist/cjs/Mode.js.map +1 -1
- package/dist/cjs/Path.js +0 -34
- package/dist/cjs/Path.js.map +1 -1
- package/dist/cjs/Validation.js +2 -33
- package/dist/cjs/Validation.js.map +1 -1
- package/dist/cjs/internal/dirty.js +0 -16
- package/dist/cjs/internal/dirty.js.map +1 -1
- package/dist/cjs/internal/weak-registry.js +0 -11
- package/dist/cjs/internal/weak-registry.js.map +1 -1
- package/dist/dts/Field.d.ts +0 -99
- package/dist/dts/Field.d.ts.map +1 -1
- package/dist/dts/FormAtoms.d.ts +0 -54
- package/dist/dts/FormAtoms.d.ts.map +1 -1
- package/dist/dts/FormBuilder.d.ts +3 -152
- package/dist/dts/FormBuilder.d.ts.map +1 -1
- package/dist/dts/Mode.d.ts +0 -33
- package/dist/dts/Mode.d.ts.map +1 -1
- package/dist/dts/Path.d.ts +0 -34
- package/dist/dts/Path.d.ts.map +1 -1
- package/dist/dts/Validation.d.ts +0 -37
- package/dist/dts/Validation.d.ts.map +1 -1
- package/dist/dts/index.d.ts +17 -19
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/dirty.d.ts +0 -10
- package/dist/dts/internal/dirty.d.ts.map +1 -1
- package/dist/dts/internal/weak-registry.d.ts +8 -6
- package/dist/dts/internal/weak-registry.d.ts.map +1 -1
- package/dist/esm/Field.js +0 -66
- package/dist/esm/Field.js.map +1 -1
- package/dist/esm/FormAtoms.js +0 -25
- package/dist/esm/FormAtoms.js.map +1 -1
- package/dist/esm/FormBuilder.js +0 -66
- package/dist/esm/FormBuilder.js.map +1 -1
- package/dist/esm/Mode.js +0 -8
- package/dist/esm/Mode.js.map +1 -1
- package/dist/esm/Path.js +0 -34
- package/dist/esm/Path.js.map +1 -1
- package/dist/esm/Validation.js +2 -32
- package/dist/esm/Validation.js.map +1 -1
- package/dist/esm/index.js +17 -19
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/dirty.js +0 -15
- package/dist/esm/internal/dirty.js.map +1 -1
- package/dist/esm/internal/weak-registry.js +0 -11
- package/dist/esm/internal/weak-registry.js.map +1 -1
- package/package.json +1 -1
- package/src/Field.ts +0 -99
- package/src/FormAtoms.ts +0 -54
- package/src/FormBuilder.ts +0 -172
- package/src/Mode.ts +0 -33
- package/src/Path.ts +0 -35
- package/src/Validation.ts +3 -44
- package/src/index.ts +22 -19
- package/src/internal/dirty.ts +0 -15
- package/src/internal/weak-registry.ts +0 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirty.js","names":["Equal","_interopRequireWildcard","require","Utils","_Path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","getNestedValue","nextDirty","Set","Array","from","filter","path","isPathUnderRoot","loopLength","Math","max","length","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","exports","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":";;;;;;
|
|
1
|
+
{"version":3,"file":"dirty.js","names":["Equal","_interopRequireWildcard","require","Utils","_Path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","getNestedValue","nextDirty","Set","Array","from","filter","path","isPathUnderRoot","loopLength","Math","max","length","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","exports","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":[]}
|
|
@@ -4,17 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createWeakRegistry = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Internal WeakRef-based registry for caching atoms.
|
|
9
|
-
*
|
|
10
|
-
* @internal
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Creates a WeakRef-based registry with automatic cleanup via FinalizationRegistry.
|
|
14
|
-
* Falls back to a regular Map in environments without WeakRef support.
|
|
15
|
-
*
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
7
|
const createWeakRegistry = () => {
|
|
19
8
|
if (typeof WeakRef === "undefined" || typeof FinalizationRegistry === "undefined") {
|
|
20
9
|
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","exports"],"sources":["../../../src/internal/weak-registry.ts"],"sourcesContent":[null],"mappings":";;;;;;
|
|
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","exports"],"sources":["../../../src/internal/weak-registry.ts"],"sourcesContent":[null],"mappings":";;;;;;AAQO,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;AAAAS,OAAA,CAAAjB,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
package/dist/dts/Field.d.ts
CHANGED
|
@@ -1,128 +1,29 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Field definitions for type-safe forms.
|
|
3
|
-
*/
|
|
4
1
|
import * as Schema from "effect/Schema";
|
|
5
|
-
/**
|
|
6
|
-
* Unique identifier for Field instances.
|
|
7
|
-
*
|
|
8
|
-
* @category Symbols
|
|
9
|
-
*/
|
|
10
2
|
export declare const TypeId: unique symbol;
|
|
11
|
-
/**
|
|
12
|
-
* @category Symbols
|
|
13
|
-
*/
|
|
14
3
|
export type TypeId = typeof TypeId;
|
|
15
|
-
/**
|
|
16
|
-
* A scalar field definition containing the key and schema.
|
|
17
|
-
*
|
|
18
|
-
* @category Models
|
|
19
|
-
*/
|
|
20
4
|
export interface FieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
21
5
|
readonly _tag: "field";
|
|
22
6
|
readonly key: K;
|
|
23
7
|
readonly schema: S;
|
|
24
8
|
}
|
|
25
|
-
/**
|
|
26
|
-
* An array field definition containing a schema for items.
|
|
27
|
-
*
|
|
28
|
-
* @category Models
|
|
29
|
-
*/
|
|
30
9
|
export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
31
10
|
readonly _tag: "array";
|
|
32
11
|
readonly key: K;
|
|
33
12
|
readonly itemSchema: S;
|
|
34
13
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Union of all field definition types.
|
|
37
|
-
*
|
|
38
|
-
* @category Models
|
|
39
|
-
*/
|
|
40
14
|
export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>;
|
|
41
|
-
/**
|
|
42
|
-
* A record of field definitions.
|
|
43
|
-
*
|
|
44
|
-
* @category Models
|
|
45
|
-
*/
|
|
46
15
|
export type FieldsRecord = Record<string, AnyFieldDef>;
|
|
47
|
-
/**
|
|
48
|
-
* Checks if a field definition is an array field.
|
|
49
|
-
*
|
|
50
|
-
* @category Guards
|
|
51
|
-
*/
|
|
52
16
|
export declare const isArrayFieldDef: (def: AnyFieldDef) => def is ArrayFieldDef<string, Schema.Schema.Any>;
|
|
53
|
-
/**
|
|
54
|
-
* Checks if a field definition is a scalar field.
|
|
55
|
-
*
|
|
56
|
-
* @category Guards
|
|
57
|
-
*/
|
|
58
17
|
export declare const isFieldDef: (def: AnyFieldDef) => def is FieldDef<string, Schema.Schema.Any>;
|
|
59
|
-
/**
|
|
60
|
-
* Creates a scalar field definition.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```ts
|
|
64
|
-
* import * as Field from "@lucas-barake/effect-form/Field"
|
|
65
|
-
* import * as Schema from "effect/Schema"
|
|
66
|
-
*
|
|
67
|
-
* const NameField = Field.makeField("name", Schema.String)
|
|
68
|
-
* ```
|
|
69
|
-
*
|
|
70
|
-
* @category Constructors
|
|
71
|
-
*/
|
|
72
18
|
export declare const makeField: <K extends string, S extends Schema.Schema.Any>(key: K, schema: S) => FieldDef<K, S>;
|
|
73
|
-
/**
|
|
74
|
-
* Creates an array field definition.
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```ts
|
|
78
|
-
* import * as Field from "@lucas-barake/effect-form/Field"
|
|
79
|
-
* import * as Schema from "effect/Schema"
|
|
80
|
-
*
|
|
81
|
-
* // Array of primitives
|
|
82
|
-
* const TagsField = Field.makeArrayField("tags", Schema.String)
|
|
83
|
-
*
|
|
84
|
-
* // Array of objects
|
|
85
|
-
* const ItemsField = Field.makeArrayField("items", Schema.Struct({
|
|
86
|
-
* name: Schema.String,
|
|
87
|
-
* quantity: Schema.Number
|
|
88
|
-
* }))
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @category Constructors
|
|
92
|
-
*/
|
|
93
19
|
export declare const makeArrayField: <K extends string, S extends Schema.Schema.Any>(key: K, itemSchema: S) => ArrayFieldDef<K, S>;
|
|
94
|
-
/**
|
|
95
|
-
* Extracts the encoded (input) type from a fields record.
|
|
96
|
-
*
|
|
97
|
-
* @category Type Helpers
|
|
98
|
-
*/
|
|
99
20
|
export type EncodedFromFields<T extends FieldsRecord> = {
|
|
100
21
|
readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Encoded<S> : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Encoded<S>> : never;
|
|
101
22
|
};
|
|
102
|
-
/**
|
|
103
|
-
* Extracts the decoded (output) type from a fields record.
|
|
104
|
-
*
|
|
105
|
-
* @category Type Helpers
|
|
106
|
-
*/
|
|
107
23
|
export type DecodedFromFields<T extends FieldsRecord> = {
|
|
108
24
|
readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Type<S> : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Type<S>> : never;
|
|
109
25
|
};
|
|
110
|
-
/**
|
|
111
|
-
* Gets a default encoded value from a schema.
|
|
112
|
-
*
|
|
113
|
-
* @category Helpers
|
|
114
|
-
*/
|
|
115
26
|
export declare const getDefaultFromSchema: (schema: Schema.Schema.Any) => unknown;
|
|
116
|
-
/**
|
|
117
|
-
* Gets default encoded values for a fields record.
|
|
118
|
-
*
|
|
119
|
-
* @category Helpers
|
|
120
|
-
*/
|
|
121
27
|
export declare const getDefaultEncodedValues: (fields: FieldsRecord) => Record<string, unknown>;
|
|
122
|
-
/**
|
|
123
|
-
* Creates a touched record with all fields set to the given value.
|
|
124
|
-
*
|
|
125
|
-
* @category Helpers
|
|
126
|
-
*/
|
|
127
28
|
export declare const createTouchedRecord: (fields: FieldsRecord, value: boolean) => Record<string, boolean>;
|
|
128
29
|
//# sourceMappingURL=Field.d.ts.map
|
package/dist/dts/Field.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/Field.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/Field.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/FormAtoms.d.ts
CHANGED
|
@@ -7,22 +7,12 @@ 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
9
|
import * as Validation from "./Validation.js";
|
|
10
|
-
/**
|
|
11
|
-
* Atoms for a single field.
|
|
12
|
-
*
|
|
13
|
-
* @category Models
|
|
14
|
-
*/
|
|
15
10
|
export interface FieldAtoms {
|
|
16
11
|
readonly valueAtom: Atom.Writable<unknown, unknown>;
|
|
17
12
|
readonly initialValueAtom: Atom.Atom<unknown>;
|
|
18
13
|
readonly touchedAtom: Atom.Writable<boolean, boolean>;
|
|
19
14
|
readonly errorAtom: Atom.Atom<Option.Option<Validation.ErrorEntry>>;
|
|
20
15
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Configuration for creating form atoms.
|
|
23
|
-
*
|
|
24
|
-
* @category Models
|
|
25
|
-
*/
|
|
26
16
|
export interface FormAtomsConfig<TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = void> {
|
|
27
17
|
readonly runtime: Atom.AtomRuntime<R, any>;
|
|
28
18
|
readonly formBuilder: FormBuilder.FormBuilder<TFields, R>;
|
|
@@ -32,19 +22,9 @@ export interface FormAtomsConfig<TFields extends Field.FieldsRecord, R, A, E, Su
|
|
|
32
22
|
readonly get: Atom.FnContext;
|
|
33
23
|
}) => A | Effect.Effect<A, E, R>;
|
|
34
24
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Maps field names to their type-safe Field references for setValue operations.
|
|
37
|
-
*
|
|
38
|
-
* @category Models
|
|
39
|
-
*/
|
|
40
25
|
export type FieldRefs<TFields extends Field.FieldsRecord> = {
|
|
41
26
|
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S> ? FormBuilder.FieldRef<Schema.Schema.Encoded<S>> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? FormBuilder.FieldRef<ReadonlyArray<Schema.Schema.Encoded<S>>> : never;
|
|
42
27
|
};
|
|
43
|
-
/**
|
|
44
|
-
* The complete form atoms infrastructure.
|
|
45
|
-
*
|
|
46
|
-
* @category Models
|
|
47
|
-
*/
|
|
48
28
|
export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E = never, SubmitArgs = void> {
|
|
49
29
|
readonly stateAtom: Atom.Writable<Option.Option<FormBuilder.FormState<TFields>>, Option.Option<FormBuilder.FormState<TFields>>>;
|
|
50
30
|
readonly errorsAtom: Atom.Writable<Map<string, Validation.ErrorEntry>, Map<string, Validation.ErrorEntry>>;
|
|
@@ -93,11 +73,6 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R, A = void, E =
|
|
|
93
73
|
readonly mountAtom: Atom.Atom<void>;
|
|
94
74
|
readonly keepAliveActiveAtom: Atom.Writable<boolean, boolean>;
|
|
95
75
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Pure state operations for form manipulation.
|
|
98
|
-
*
|
|
99
|
-
* @category Models
|
|
100
|
-
*/
|
|
101
76
|
export interface FormOperations<TFields extends Field.FieldsRecord> {
|
|
102
77
|
readonly createInitialState: (defaultValues: Field.EncodedFromFields<TFields>) => FormBuilder.FormState<TFields>;
|
|
103
78
|
readonly createResetState: (state: FormBuilder.FormState<TFields>) => FormBuilder.FormState<TFields>;
|
|
@@ -109,36 +84,7 @@ export interface FormOperations<TFields extends Field.FieldsRecord> {
|
|
|
109
84
|
readonly removeArrayItem: (state: FormBuilder.FormState<TFields>, arrayPath: string, index: number) => FormBuilder.FormState<TFields>;
|
|
110
85
|
readonly swapArrayItems: (state: FormBuilder.FormState<TFields>, arrayPath: string, indexA: number, indexB: number) => FormBuilder.FormState<TFields>;
|
|
111
86
|
readonly moveArrayItem: (state: FormBuilder.FormState<TFields>, arrayPath: string, fromIndex: number, toIndex: number) => FormBuilder.FormState<TFields>;
|
|
112
|
-
/**
|
|
113
|
-
* Reverts values to the last submitted state.
|
|
114
|
-
* No-op if form has never been submitted or is already in sync.
|
|
115
|
-
*/
|
|
116
87
|
readonly revertToLastSubmit: (state: FormBuilder.FormState<TFields>) => FormBuilder.FormState<TFields>;
|
|
117
88
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Creates the complete form atoms infrastructure.
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* ```ts
|
|
123
|
-
* import * as FormAtoms from "@lucas-barake/effect-form/FormAtoms"
|
|
124
|
-
* import * as Form from "@lucas-barake/effect-form"
|
|
125
|
-
* import * as Atom from "@effect-atom/atom/Atom"
|
|
126
|
-
* import * as Layer from "effect/Layer"
|
|
127
|
-
*
|
|
128
|
-
* const runtime = Atom.runtime(Layer.empty)
|
|
129
|
-
*
|
|
130
|
-
* const loginForm = FormBuilder.empty
|
|
131
|
-
* .addField(FormBuilder.makeField("email", Schema.String))
|
|
132
|
-
* .addField(FormBuilder.makeField("password", Schema.String))
|
|
133
|
-
*
|
|
134
|
-
* const atoms = FormAtoms.make({
|
|
135
|
-
* runtime,
|
|
136
|
-
* formBuilder: loginForm,
|
|
137
|
-
* parsedMode: { validation: "onChange", debounce: 300, autoSubmit: false }
|
|
138
|
-
* })
|
|
139
|
-
* ```
|
|
140
|
-
*
|
|
141
|
-
* @category Constructors
|
|
142
|
-
*/
|
|
143
89
|
export declare const make: <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = void>(config: FormAtomsConfig<TFields, R, A, E, SubmitArgs>) => FormAtoms<TFields, R, A, E, SubmitArgs>;
|
|
144
90
|
//# sourceMappingURL=FormAtoms.d.ts.map
|
|
@@ -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;AAEnF,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C
|
|
1
|
+
{"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,38 +3,20 @@ import type * as Effect from "effect/Effect";
|
|
|
3
3
|
import type * as Option from "effect/Option";
|
|
4
4
|
import * as Schema from "effect/Schema";
|
|
5
5
|
import type { ArrayFieldDef, DecodedFromFields, EncodedFromFields, FieldDef, FieldsRecord } from "./Field.js";
|
|
6
|
-
/**
|
|
7
|
-
* @category Models
|
|
8
|
-
*/
|
|
9
6
|
export interface SubmittedValues<TFields extends FieldsRecord> {
|
|
10
7
|
readonly encoded: EncodedFromFields<TFields>;
|
|
11
8
|
readonly decoded: DecodedFromFields<TFields>;
|
|
12
9
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
* @category Models
|
|
17
|
-
*/
|
|
10
|
+
export declare const FieldTypeId: unique symbol;
|
|
11
|
+
export type FieldTypeId = typeof FieldTypeId;
|
|
18
12
|
export interface FieldRef<S> {
|
|
19
13
|
readonly [FieldTypeId]: FieldTypeId;
|
|
20
14
|
readonly _S: S;
|
|
21
15
|
readonly key: string;
|
|
22
16
|
}
|
|
23
|
-
|
|
24
|
-
* Unique identifier for FormBuilder instances.
|
|
25
|
-
*
|
|
26
|
-
* @category Symbols
|
|
27
|
-
*/
|
|
17
|
+
export declare const makeFieldRef: <S>(key: string) => FieldRef<S>;
|
|
28
18
|
export declare const TypeId: unique symbol;
|
|
29
|
-
/**
|
|
30
|
-
* @category Symbols
|
|
31
|
-
*/
|
|
32
19
|
export type TypeId = typeof TypeId;
|
|
33
|
-
/**
|
|
34
|
-
* The state of a form at runtime.
|
|
35
|
-
*
|
|
36
|
-
* @category Models
|
|
37
|
-
*/
|
|
38
20
|
export interface FormState<TFields extends FieldsRecord> {
|
|
39
21
|
readonly values: EncodedFromFields<TFields>;
|
|
40
22
|
readonly initialValues: EncodedFromFields<TFields>;
|
|
@@ -54,157 +36,26 @@ interface AsyncRefinement {
|
|
|
54
36
|
readonly fn: (values: unknown) => Effect.Effect<Schema.FilterOutput, never, unknown>;
|
|
55
37
|
}
|
|
56
38
|
type Refinement = SyncRefinement | AsyncRefinement;
|
|
57
|
-
/**
|
|
58
|
-
* A builder for constructing type-safe forms with Effect Schema validation.
|
|
59
|
-
*
|
|
60
|
-
* **Details**
|
|
61
|
-
*
|
|
62
|
-
* FormBuilder uses a fluent API pattern to define form fields. Each field
|
|
63
|
-
* includes a Schema for validation. The builder accumulates field definitions
|
|
64
|
-
* and context requirements (`R`) from schemas that use Effect services.
|
|
65
|
-
*
|
|
66
|
-
* @category Models
|
|
67
|
-
*/
|
|
68
39
|
export interface FormBuilder<TFields extends FieldsRecord, R> {
|
|
69
40
|
readonly [TypeId]: TypeId;
|
|
70
41
|
readonly fields: TFields;
|
|
71
42
|
readonly refinements: ReadonlyArray<Refinement>;
|
|
72
43
|
readonly _R?: R;
|
|
73
|
-
/**
|
|
74
|
-
* Adds a scalar field to the form builder.
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```ts
|
|
78
|
-
* const NameField = Field.makeField("name", Schema.String)
|
|
79
|
-
* const form = FormBuilder.empty.addField(NameField)
|
|
80
|
-
* ```
|
|
81
|
-
*/
|
|
82
44
|
addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, field: FieldDef<K, S>): FormBuilder<TFields & {
|
|
83
45
|
readonly [key in K]: FieldDef<K, S>;
|
|
84
46
|
}, R | Schema.Schema.Context<S>>;
|
|
85
|
-
/**
|
|
86
|
-
* Adds an array field to the form builder.
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```ts
|
|
90
|
-
* const ItemsField = Field.makeArrayField("items", Schema.Struct({ name: Schema.String }))
|
|
91
|
-
* const form = FormBuilder.empty.addField(ItemsField)
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
47
|
addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, field: ArrayFieldDef<K, S>): FormBuilder<TFields & {
|
|
95
48
|
readonly [key in K]: ArrayFieldDef<K, S>;
|
|
96
49
|
}, R | Schema.Schema.Context<S>>;
|
|
97
|
-
/**
|
|
98
|
-
* Adds a scalar field using inline key and schema.
|
|
99
|
-
* Shorthand for `Field.makeField(key, schema)` when field reuse is not needed.
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```ts
|
|
103
|
-
* const form = FormBuilder.empty
|
|
104
|
-
* .addField("email", Schema.String)
|
|
105
|
-
* .addField("age", Schema.Number)
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
50
|
addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, key: K, schema: S): FormBuilder<TFields & {
|
|
109
51
|
readonly [key in K]: FieldDef<K, S>;
|
|
110
52
|
}, R | Schema.Schema.Context<S>>;
|
|
111
|
-
/**
|
|
112
|
-
* Merges another FormBuilder's fields into this one.
|
|
113
|
-
* Useful for composing reusable field groups.
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```ts
|
|
117
|
-
* const addressFields = FormBuilder.empty
|
|
118
|
-
* .addField("street", Schema.String)
|
|
119
|
-
* .addField("city", Schema.String)
|
|
120
|
-
*
|
|
121
|
-
* const userForm = FormBuilder.empty
|
|
122
|
-
* .addField("name", Schema.String)
|
|
123
|
-
* .merge(addressFields)
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
53
|
merge<TFields2 extends FieldsRecord, R2>(this: FormBuilder<TFields, R>, other: FormBuilder<TFields2, R2>): FormBuilder<TFields & TFields2, R | R2>;
|
|
127
|
-
/**
|
|
128
|
-
* Adds a synchronous cross-field validation refinement to the form.
|
|
129
|
-
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```ts
|
|
132
|
-
* const form = FormBuilder.empty
|
|
133
|
-
* .addField("password", Schema.String)
|
|
134
|
-
* .addField("confirmPassword", Schema.String)
|
|
135
|
-
* .refine((values) => {
|
|
136
|
-
* if (values.password !== values.confirmPassword) {
|
|
137
|
-
* return { path: ["confirmPassword"], message: "Passwords must match" }
|
|
138
|
-
* }
|
|
139
|
-
* })
|
|
140
|
-
* ```
|
|
141
|
-
*/
|
|
142
54
|
refine(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => Schema.FilterOutput): FormBuilder<TFields, R>;
|
|
143
|
-
/**
|
|
144
|
-
* Adds an asynchronous cross-field validation refinement to the form.
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```ts
|
|
148
|
-
* const form = FormBuilder.empty
|
|
149
|
-
* .addField("username", Schema.String)
|
|
150
|
-
* .refineEffect((values) =>
|
|
151
|
-
* Effect.gen(function* () {
|
|
152
|
-
* const taken = yield* checkUsername(values.username)
|
|
153
|
-
* if (taken) return { path: ["username"], message: "Already taken" }
|
|
154
|
-
* })
|
|
155
|
-
* )
|
|
156
|
-
* ```
|
|
157
|
-
*/
|
|
158
55
|
refineEffect<RD>(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => Effect.Effect<Schema.FilterOutput, never, RD>): FormBuilder<TFields, R | Exclude<RD, Registry.AtomRegistry>>;
|
|
159
56
|
}
|
|
160
|
-
/**
|
|
161
|
-
* Checks if a value is a `FormBuilder`.
|
|
162
|
-
*
|
|
163
|
-
* @example
|
|
164
|
-
* ```ts
|
|
165
|
-
* import { FormBuilder } from "@lucas-barake/effect-form"
|
|
166
|
-
*
|
|
167
|
-
* const builder = FormBuilder.empty
|
|
168
|
-
*
|
|
169
|
-
* console.log(FormBuilder.isFormBuilder(builder))
|
|
170
|
-
* // Output: true
|
|
171
|
-
*
|
|
172
|
-
* console.log(FormBuilder.isFormBuilder({}))
|
|
173
|
-
* // Output: false
|
|
174
|
-
* ```
|
|
175
|
-
*
|
|
176
|
-
* @category Guards
|
|
177
|
-
*/
|
|
178
57
|
export declare const isFormBuilder: (u: unknown) => u is FormBuilder<any, any>;
|
|
179
|
-
/**
|
|
180
|
-
* An empty `FormBuilder` to start building a form.
|
|
181
|
-
*
|
|
182
|
-
* **Details**
|
|
183
|
-
*
|
|
184
|
-
* This is the entry point for building a form. Use method chaining to add
|
|
185
|
-
* fields and then build the form with a React adapter.
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```ts
|
|
189
|
-
* import { Field, FormBuilder } from "@lucas-barake/effect-form"
|
|
190
|
-
* import * as Schema from "effect/Schema"
|
|
191
|
-
*
|
|
192
|
-
* const EmailField = Field.makeField("email", Schema.String)
|
|
193
|
-
* const PasswordField = Field.makeField("password", Schema.String)
|
|
194
|
-
*
|
|
195
|
-
* const loginForm = FormBuilder.empty
|
|
196
|
-
* .addField(EmailField)
|
|
197
|
-
* .addField(PasswordField)
|
|
198
|
-
* ```
|
|
199
|
-
*
|
|
200
|
-
* @category Constructors
|
|
201
|
-
*/
|
|
202
58
|
export declare const empty: FormBuilder<{}, never>;
|
|
203
|
-
/**
|
|
204
|
-
* Builds a combined Schema from a FormBuilder's field definitions.
|
|
205
|
-
*
|
|
206
|
-
* @category Schema
|
|
207
|
-
*/
|
|
208
59
|
export declare const buildSchema: <TFields extends FieldsRecord, R>(self: FormBuilder<TFields, R>) => Schema.Schema<DecodedFromFields<TFields>, EncodedFromFields<TFields>, R>;
|
|
209
60
|
export {};
|
|
210
61
|
//# sourceMappingURL=FormBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../src/FormBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAEV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACb,MAAM,YAAY,CAAA;AAGnB
|
|
1
|
+
{"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../src/FormBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/Mode.d.ts
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Form validation mode configuration.
|
|
3
|
-
*/
|
|
4
1
|
import * as Duration from "effect/Duration";
|
|
5
|
-
/**
|
|
6
|
-
* Controls when field validation is triggered and whether form auto-submits.
|
|
7
|
-
*
|
|
8
|
-
* Simple modes (string):
|
|
9
|
-
* - `"onSubmit"`: Validation only runs when the form is submitted (default)
|
|
10
|
-
* - `"onBlur"`: Validation runs when a field loses focus
|
|
11
|
-
* - `"onChange"`: Validation runs on every value change (sync)
|
|
12
|
-
*
|
|
13
|
-
* Object modes (with options):
|
|
14
|
-
* - `{ onChange: { debounce, autoSubmit? } }`: Debounced validation, optional auto-submit
|
|
15
|
-
* - `{ onBlur: { autoSubmit: true } }`: Validate on blur, auto-submit when valid
|
|
16
|
-
*
|
|
17
|
-
* @category Models
|
|
18
|
-
*/
|
|
19
2
|
export type FormMode = "onSubmit" | "onBlur" | "onChange" | {
|
|
20
3
|
readonly onChange: {
|
|
21
4
|
readonly debounce: Duration.DurationInput;
|
|
@@ -31,32 +14,16 @@ export type FormMode = "onSubmit" | "onBlur" | "onChange" | {
|
|
|
31
14
|
readonly autoSubmit: true;
|
|
32
15
|
};
|
|
33
16
|
};
|
|
34
|
-
/**
|
|
35
|
-
* Form mode without auto-submit options.
|
|
36
|
-
* Used when SubmitArgs is not void, since auto-submit cannot provide custom arguments.
|
|
37
|
-
*
|
|
38
|
-
* @category Models
|
|
39
|
-
*/
|
|
40
17
|
export type FormModeWithoutAutoSubmit = "onSubmit" | "onBlur" | "onChange" | {
|
|
41
18
|
readonly onChange: {
|
|
42
19
|
readonly debounce: Duration.DurationInput;
|
|
43
20
|
readonly autoSubmit?: false;
|
|
44
21
|
};
|
|
45
22
|
};
|
|
46
|
-
/**
|
|
47
|
-
* Parsed form mode with resolved values.
|
|
48
|
-
*
|
|
49
|
-
* @category Models
|
|
50
|
-
*/
|
|
51
23
|
export interface ParsedMode {
|
|
52
24
|
readonly validation: "onSubmit" | "onBlur" | "onChange";
|
|
53
25
|
readonly debounce: number | null;
|
|
54
26
|
readonly autoSubmit: boolean;
|
|
55
27
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Parses a FormMode into a normalized ParsedMode.
|
|
58
|
-
*
|
|
59
|
-
* @category Parsing
|
|
60
|
-
*/
|
|
61
28
|
export declare const parse: (mode?: FormMode) => ParsedMode;
|
|
62
29
|
//# sourceMappingURL=Mode.d.ts.map
|
package/dist/dts/Mode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mode.d.ts","sourceRoot":"","sources":["../../src/Mode.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Mode.d.ts","sourceRoot":"","sources":["../../src/Mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,QAAQ,GACR,UAAU,GACV;IAAE,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC;QAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;KAAE,CAAA;CAAE,GACjG;IAAE,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;KAAE,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;KAAE,CAAA;CAAE,CAAA;AAEnG,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,QAAQ,GACR,UAAU,GACV;IAAE,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC;QAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;KAAE,CAAA;CAAE,CAAA;AAErG,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,KAAK,GAAI,OAAM,QAAqB,KAAG,UAUnD,CAAA"}
|
package/dist/dts/Path.d.ts
CHANGED
|
@@ -1,40 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Path utilities for form field operations.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Converts a schema path array to a dot/bracket notation string.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* schemaPathToFieldPath(["items", 0, "name"]) // "items[0].name"
|
|
9
|
-
*/
|
|
10
1
|
export declare const schemaPathToFieldPath: (path: ReadonlyArray<PropertyKey>) => string;
|
|
11
|
-
/**
|
|
12
|
-
* Checks if a path matches a root path or is a descendant of it.
|
|
13
|
-
* Handles both dot notation (root.child) and bracket notation (root[0]).
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* isPathUnderRoot("items[0].name", "items[0]") // true
|
|
17
|
-
* isPathUnderRoot("items[0].name", "items") // true
|
|
18
|
-
* isPathUnderRoot("other", "items") // false
|
|
19
|
-
*/
|
|
20
2
|
export declare const isPathUnderRoot: (path: string, rootPath: string) => boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Checks if a field path or any of its parent paths are in the dirty set.
|
|
23
|
-
*/
|
|
24
3
|
export declare const isPathOrParentDirty: (dirtyFields: ReadonlySet<string>, path: string) => boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Gets a nested value from an object using dot/bracket notation path.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* getNestedValue({ items: [{ name: "A" }] }, "items[0].name") // "A"
|
|
30
|
-
*/
|
|
31
4
|
export declare const getNestedValue: (obj: unknown, path: string) => unknown;
|
|
32
|
-
/**
|
|
33
|
-
* Sets a nested value in an object immutably using dot/bracket notation path.
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* setNestedValue({ items: [{ name: "A" }] }, "items[0].name", "B")
|
|
37
|
-
* // { items: [{ name: "B" }] }
|
|
38
|
-
*/
|
|
39
5
|
export declare const setNestedValue: <T>(obj: T, path: string, value: unknown) => T;
|
|
40
6
|
//# sourceMappingURL=Path.d.ts.map
|
package/dist/dts/Path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../src/Path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../src/Path.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,GAAI,MAAM,aAAa,CAAC,WAAW,CAAC,KAAG,MAaxE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,OACwB,CAAA;AAEzF,eAAO,MAAM,mBAAmB,GAAI,aAAa,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,OAgBpF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,EAAE,MAAM,MAAM,KAAG,OAS3D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,OAAO,OAAO,KAAG,CAkBxE,CAAA"}
|