@lucas-barake/effect-form 0.1.0 → 0.2.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/Field/package.json +6 -0
- package/dist/cjs/Field.js +171 -0
- package/dist/cjs/Field.js.map +1 -0
- package/dist/cjs/Form.js +11 -132
- package/dist/cjs/Form.js.map +1 -1
- package/dist/cjs/FormAtoms.js +8 -7
- package/dist/cjs/FormAtoms.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/dts/Field.d.ts +145 -0
- package/dist/dts/Field.d.ts.map +1 -0
- package/dist/dts/Form.d.ts +6 -126
- package/dist/dts/Form.d.ts.map +1 -1
- package/dist/dts/FormAtoms.d.ts +13 -12
- package/dist/dts/FormAtoms.d.ts.map +1 -1
- package/dist/dts/index.d.ts +6 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/Field.js +137 -0
- package/dist/esm/Field.js.map +1 -0
- package/dist/esm/Form.js +7 -121
- package/dist/esm/Form.js.map +1 -1
- package/dist/esm/FormAtoms.js +8 -7
- package/dist/esm/FormAtoms.js.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +9 -1
- package/src/Field.ts +220 -0
- package/src/Form.ts +17 -197
- package/src/FormAtoms.ts +30 -30
- package/src/index.ts +7 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field definitions for type-safe forms.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
/**
|
|
8
|
+
* Unique identifier for Field instances.
|
|
9
|
+
*
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category Symbols
|
|
12
|
+
*/
|
|
13
|
+
export declare const TypeId: unique symbol;
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
* @category Symbols
|
|
17
|
+
*/
|
|
18
|
+
export type TypeId = typeof TypeId;
|
|
19
|
+
/**
|
|
20
|
+
* A scalar field definition containing the key and schema.
|
|
21
|
+
*
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category Models
|
|
24
|
+
*/
|
|
25
|
+
export interface FieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
26
|
+
readonly _tag: "field";
|
|
27
|
+
readonly key: K;
|
|
28
|
+
readonly schema: S;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* An array field definition containing a schema for items.
|
|
32
|
+
*
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
* @category Models
|
|
35
|
+
*/
|
|
36
|
+
export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
37
|
+
readonly _tag: "array";
|
|
38
|
+
readonly key: K;
|
|
39
|
+
readonly itemSchema: S;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Union of all field definition types.
|
|
43
|
+
*
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
* @category Models
|
|
46
|
+
*/
|
|
47
|
+
export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>;
|
|
48
|
+
/**
|
|
49
|
+
* A record of field definitions.
|
|
50
|
+
*
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @category Models
|
|
53
|
+
*/
|
|
54
|
+
export type FieldsRecord = Record<string, AnyFieldDef>;
|
|
55
|
+
/**
|
|
56
|
+
* Checks if a field definition is an array field.
|
|
57
|
+
*
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category Guards
|
|
60
|
+
*/
|
|
61
|
+
export declare const isArrayFieldDef: (def: AnyFieldDef) => def is ArrayFieldDef<string, Schema.Schema.Any>;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if a field definition is a scalar field.
|
|
64
|
+
*
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @category Guards
|
|
67
|
+
*/
|
|
68
|
+
export declare const isFieldDef: (def: AnyFieldDef) => def is FieldDef<string, Schema.Schema.Any>;
|
|
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
|
+
* @since 1.0.0
|
|
81
|
+
* @category Constructors
|
|
82
|
+
*/
|
|
83
|
+
export declare const makeField: <K extends string, S extends Schema.Schema.Any>(key: K, schema: S) => FieldDef<K, S>;
|
|
84
|
+
/**
|
|
85
|
+
* Creates an array field definition.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* import * as Field from "@lucas-barake/effect-form/Field"
|
|
90
|
+
* import * as Schema from "effect/Schema"
|
|
91
|
+
*
|
|
92
|
+
* // Array of primitives
|
|
93
|
+
* const TagsField = Field.makeArrayField("tags", Schema.String)
|
|
94
|
+
*
|
|
95
|
+
* // Array of objects
|
|
96
|
+
* const ItemsField = Field.makeArrayField("items", Schema.Struct({
|
|
97
|
+
* name: Schema.String,
|
|
98
|
+
* quantity: Schema.Number
|
|
99
|
+
* }))
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @since 1.0.0
|
|
103
|
+
* @category Constructors
|
|
104
|
+
*/
|
|
105
|
+
export declare const makeArrayField: <K extends string, S extends Schema.Schema.Any>(key: K, itemSchema: S) => ArrayFieldDef<K, S>;
|
|
106
|
+
/**
|
|
107
|
+
* Extracts the encoded (input) type from a fields record.
|
|
108
|
+
*
|
|
109
|
+
* @since 1.0.0
|
|
110
|
+
* @category Type Helpers
|
|
111
|
+
*/
|
|
112
|
+
export type EncodedFromFields<T extends FieldsRecord> = {
|
|
113
|
+
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;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Extracts the decoded (output) type from a fields record.
|
|
117
|
+
*
|
|
118
|
+
* @since 1.0.0
|
|
119
|
+
* @category Type Helpers
|
|
120
|
+
*/
|
|
121
|
+
export type DecodedFromFields<T extends FieldsRecord> = {
|
|
122
|
+
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;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Gets a default encoded value from a schema.
|
|
126
|
+
*
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
* @category Helpers
|
|
129
|
+
*/
|
|
130
|
+
export declare const getDefaultFromSchema: (schema: Schema.Schema.Any) => unknown;
|
|
131
|
+
/**
|
|
132
|
+
* Gets default encoded values for a fields record.
|
|
133
|
+
*
|
|
134
|
+
* @since 1.0.0
|
|
135
|
+
* @category Helpers
|
|
136
|
+
*/
|
|
137
|
+
export declare const getDefaultEncodedValues: (fields: FieldsRecord) => Record<string, unknown>;
|
|
138
|
+
/**
|
|
139
|
+
* Creates a touched record with all fields set to the given value.
|
|
140
|
+
*
|
|
141
|
+
* @since 1.0.0
|
|
142
|
+
* @category Helpers
|
|
143
|
+
*/
|
|
144
|
+
export declare const createTouchedRecord: (fields: FieldsRecord, value: boolean) => Record<string, boolean>;
|
|
145
|
+
//# sourceMappingURL=Field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/Field.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/Form.d.ts
CHANGED
|
@@ -3,18 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type * as Effect from "effect/Effect";
|
|
5
5
|
import * as Schema from "effect/Schema";
|
|
6
|
-
|
|
7
|
-
* Unique identifier for FormBuilder instances.
|
|
8
|
-
*
|
|
9
|
-
* @since 1.0.0
|
|
10
|
-
* @category Symbols
|
|
11
|
-
*/
|
|
12
|
-
export declare const TypeId: unique symbol;
|
|
13
|
-
/**
|
|
14
|
-
* @since 1.0.0
|
|
15
|
-
* @category Symbols
|
|
16
|
-
*/
|
|
17
|
-
export type TypeId = typeof TypeId;
|
|
6
|
+
import type { ArrayFieldDef, DecodedFromFields, EncodedFromFields, FieldDef, FieldsRecord } from "./Field.js";
|
|
18
7
|
/**
|
|
19
8
|
* A field reference carrying type and path info for type-safe setValue operations.
|
|
20
9
|
*
|
|
@@ -27,91 +16,17 @@ export interface Field<S> {
|
|
|
27
16
|
readonly key: string;
|
|
28
17
|
}
|
|
29
18
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* @since 1.0.0
|
|
33
|
-
* @category Models
|
|
34
|
-
*/
|
|
35
|
-
export interface FieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
36
|
-
readonly _tag: "field";
|
|
37
|
-
readonly key: K;
|
|
38
|
-
readonly schema: S;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* An array field definition containing a schema for items.
|
|
42
|
-
*
|
|
43
|
-
* @since 1.0.0
|
|
44
|
-
* @category Models
|
|
45
|
-
*/
|
|
46
|
-
export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any> {
|
|
47
|
-
readonly _tag: "array";
|
|
48
|
-
readonly key: K;
|
|
49
|
-
readonly itemSchema: S;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Union of all field definition types.
|
|
53
|
-
*
|
|
54
|
-
* @since 1.0.0
|
|
55
|
-
* @category Models
|
|
56
|
-
*/
|
|
57
|
-
export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>;
|
|
58
|
-
/**
|
|
59
|
-
* Creates a scalar field definition.
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```ts
|
|
63
|
-
* const NameField = Form.makeField("name", Schema.String)
|
|
64
|
-
* const form = Form.empty.addField(NameField)
|
|
65
|
-
* ```
|
|
66
|
-
*
|
|
67
|
-
* @since 1.0.0
|
|
68
|
-
* @category Constructors
|
|
69
|
-
*/
|
|
70
|
-
export declare const makeField: <K extends string, S extends Schema.Schema.Any>(key: K, schema: S) => FieldDef<K, S>;
|
|
71
|
-
/**
|
|
72
|
-
* Creates an array field definition.
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```ts
|
|
76
|
-
* // Array of primitives
|
|
77
|
-
* const TagsField = Form.makeArrayField("tags", Schema.String)
|
|
78
|
-
*
|
|
79
|
-
* // Array of objects
|
|
80
|
-
* const ItemsField = Form.makeArrayField("items", Schema.Struct({
|
|
81
|
-
* name: Schema.String,
|
|
82
|
-
* quantity: Schema.Number
|
|
83
|
-
* }))
|
|
84
|
-
* ```
|
|
85
|
-
*
|
|
86
|
-
* @since 1.0.0
|
|
87
|
-
* @category Constructors
|
|
88
|
-
*/
|
|
89
|
-
export declare const makeArrayField: <K extends string, S extends Schema.Schema.Any>(key: K, itemSchema: S) => ArrayFieldDef<K, S>;
|
|
90
|
-
/**
|
|
91
|
-
* A record of field definitions.
|
|
92
|
-
*
|
|
93
|
-
* @since 1.0.0
|
|
94
|
-
* @category Models
|
|
95
|
-
*/
|
|
96
|
-
export type FieldsRecord = Record<string, AnyFieldDef>;
|
|
97
|
-
/**
|
|
98
|
-
* Extracts the encoded (input) type from a fields record.
|
|
19
|
+
* Unique identifier for FormBuilder instances.
|
|
99
20
|
*
|
|
100
21
|
* @since 1.0.0
|
|
101
|
-
* @category
|
|
22
|
+
* @category Symbols
|
|
102
23
|
*/
|
|
103
|
-
export
|
|
104
|
-
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;
|
|
105
|
-
};
|
|
24
|
+
export declare const TypeId: unique symbol;
|
|
106
25
|
/**
|
|
107
|
-
* Extracts the decoded (output) type from a fields record.
|
|
108
|
-
*
|
|
109
26
|
* @since 1.0.0
|
|
110
|
-
* @category
|
|
27
|
+
* @category Symbols
|
|
111
28
|
*/
|
|
112
|
-
export type
|
|
113
|
-
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;
|
|
114
|
-
};
|
|
29
|
+
export type TypeId = typeof TypeId;
|
|
115
30
|
/**
|
|
116
31
|
* The state of a form at runtime.
|
|
117
32
|
*
|
|
@@ -246,27 +161,6 @@ export interface FormBuilder<TFields extends FieldsRecord, R> {
|
|
|
246
161
|
* @category Guards
|
|
247
162
|
*/
|
|
248
163
|
export declare const isFormBuilder: (u: unknown) => u is FormBuilder<any, any>;
|
|
249
|
-
/**
|
|
250
|
-
* Checks if a field definition is an array field.
|
|
251
|
-
*
|
|
252
|
-
* @since 1.0.0
|
|
253
|
-
* @category Guards
|
|
254
|
-
*/
|
|
255
|
-
export declare const isArrayFieldDef: (def: AnyFieldDef) => def is ArrayFieldDef<string, any>;
|
|
256
|
-
/**
|
|
257
|
-
* Checks if a field definition is a simple field.
|
|
258
|
-
*
|
|
259
|
-
* @since 1.0.0
|
|
260
|
-
* @category Guards
|
|
261
|
-
*/
|
|
262
|
-
export declare const isFieldDef: (def: AnyFieldDef) => def is FieldDef<string, Schema.Schema.Any>;
|
|
263
|
-
/**
|
|
264
|
-
* Gets a default encoded value from a schema.
|
|
265
|
-
*
|
|
266
|
-
* @since 1.0.0
|
|
267
|
-
* @category Helpers
|
|
268
|
-
*/
|
|
269
|
-
export declare const getDefaultFromSchema: (schema: Schema.Schema.Any) => unknown;
|
|
270
164
|
/**
|
|
271
165
|
* An empty `FormBuilder` to start building a form.
|
|
272
166
|
*
|
|
@@ -299,19 +193,5 @@ export declare const empty: FormBuilder<{}, never>;
|
|
|
299
193
|
* @category Schema
|
|
300
194
|
*/
|
|
301
195
|
export declare const buildSchema: <TFields extends FieldsRecord, R>(self: FormBuilder<TFields, R>) => Schema.Schema<DecodedFromFields<TFields>, EncodedFromFields<TFields>, R>;
|
|
302
|
-
/**
|
|
303
|
-
* Gets default encoded values for a fields record.
|
|
304
|
-
*
|
|
305
|
-
* @since 1.0.0
|
|
306
|
-
* @category Helpers
|
|
307
|
-
*/
|
|
308
|
-
export declare const getDefaultEncodedValues: (fields: FieldsRecord) => Record<string, unknown>;
|
|
309
|
-
/**
|
|
310
|
-
* Creates a touched record with all fields set to the given value.
|
|
311
|
-
*
|
|
312
|
-
* @since 1.0.0
|
|
313
|
-
* @category Helpers
|
|
314
|
-
*/
|
|
315
|
-
export declare const createTouchedRecord: (fields: FieldsRecord, value: boolean) => Record<string, boolean>;
|
|
316
196
|
export {};
|
|
317
197
|
//# sourceMappingURL=Form.d.ts.map
|
package/dist/dts/Form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC
|
|
1
|
+
{"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/FormAtoms.d.ts
CHANGED
|
@@ -11,7 +11,8 @@ import type * as Registry from "@effect-atom/atom/Registry";
|
|
|
11
11
|
import * as Option from "effect/Option";
|
|
12
12
|
import type * as ParseResult from "effect/ParseResult";
|
|
13
13
|
import * as Schema from "effect/Schema";
|
|
14
|
-
import
|
|
14
|
+
import * as Field from "./Field.js";
|
|
15
|
+
import * as Form from "./Form.js";
|
|
15
16
|
import { type WeakRegistry } from "./internal/weak-registry.js";
|
|
16
17
|
/**
|
|
17
18
|
* Atoms for a single field.
|
|
@@ -31,7 +32,7 @@ export interface FieldAtoms {
|
|
|
31
32
|
* @since 1.0.0
|
|
32
33
|
* @category Models
|
|
33
34
|
*/
|
|
34
|
-
export interface FormAtomsConfig<TFields extends
|
|
35
|
+
export interface FormAtomsConfig<TFields extends Field.FieldsRecord, R> {
|
|
35
36
|
readonly runtime: Atom.AtomRuntime<R, any>;
|
|
36
37
|
readonly formBuilder: Form.FormBuilder<TFields, R>;
|
|
37
38
|
}
|
|
@@ -41,8 +42,8 @@ export interface FormAtomsConfig<TFields extends Form.FieldsRecord, R> {
|
|
|
41
42
|
* @since 1.0.0
|
|
42
43
|
* @category Models
|
|
43
44
|
*/
|
|
44
|
-
export type FieldRefs<TFields extends
|
|
45
|
-
readonly [K in keyof TFields]: TFields[K] extends
|
|
45
|
+
export type FieldRefs<TFields extends Field.FieldsRecord> = {
|
|
46
|
+
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S> ? Form.Field<Schema.Schema.Encoded<S>> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? Form.Field<ReadonlyArray<Schema.Schema.Encoded<S>>> : never;
|
|
46
47
|
};
|
|
47
48
|
/**
|
|
48
49
|
* The complete form atoms infrastructure.
|
|
@@ -50,15 +51,15 @@ export type FieldRefs<TFields extends Form.FieldsRecord> = {
|
|
|
50
51
|
* @since 1.0.0
|
|
51
52
|
* @category Models
|
|
52
53
|
*/
|
|
53
|
-
export interface FormAtoms<TFields extends
|
|
54
|
+
export interface FormAtoms<TFields extends Field.FieldsRecord, R> {
|
|
54
55
|
readonly stateAtom: Atom.Writable<Option.Option<Form.FormState<TFields>>, Option.Option<Form.FormState<TFields>>>;
|
|
55
56
|
readonly crossFieldErrorsAtom: Atom.Writable<Map<string, string>, Map<string, string>>;
|
|
56
57
|
readonly dirtyFieldsAtom: Atom.Atom<ReadonlySet<string>>;
|
|
57
58
|
readonly isDirtyAtom: Atom.Atom<boolean>;
|
|
58
59
|
readonly submitCountAtom: Atom.Atom<number>;
|
|
59
|
-
readonly onSubmitAtom: Atom.Writable<Atom.AtomResultFn<
|
|
60
|
-
readonly decodeAndSubmit: Atom.AtomResultFn<
|
|
61
|
-
readonly combinedSchema: Schema.Schema<
|
|
60
|
+
readonly onSubmitAtom: Atom.Writable<Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null, Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null>;
|
|
61
|
+
readonly decodeAndSubmit: Atom.AtomResultFn<Field.EncodedFromFields<TFields>, unknown, unknown>;
|
|
62
|
+
readonly combinedSchema: Schema.Schema<Field.DecodedFromFields<TFields>, Field.EncodedFromFields<TFields>, R>;
|
|
62
63
|
readonly fieldRefs: FieldRefs<TFields>;
|
|
63
64
|
readonly validationAtomsRegistry: WeakRegistry<Atom.AtomResultFn<unknown, void, ParseResult.ParseError>>;
|
|
64
65
|
readonly fieldAtomsRegistry: WeakRegistry<FieldAtoms>;
|
|
@@ -73,11 +74,11 @@ export interface FormAtoms<TFields extends Form.FieldsRecord, R> {
|
|
|
73
74
|
* @since 1.0.0
|
|
74
75
|
* @category Models
|
|
75
76
|
*/
|
|
76
|
-
export interface FormOperations<TFields extends
|
|
77
|
+
export interface FormOperations<TFields extends Field.FieldsRecord> {
|
|
77
78
|
/**
|
|
78
79
|
* Creates the initial form state from default values.
|
|
79
80
|
*/
|
|
80
|
-
readonly createInitialState: (defaultValues:
|
|
81
|
+
readonly createInitialState: (defaultValues: Field.EncodedFromFields<TFields>) => Form.FormState<TFields>;
|
|
81
82
|
/**
|
|
82
83
|
* Creates a reset state (back to initial values).
|
|
83
84
|
*/
|
|
@@ -93,7 +94,7 @@ export interface FormOperations<TFields extends Form.FieldsRecord> {
|
|
|
93
94
|
/**
|
|
94
95
|
* Sets all form values, recalculating dirty fields.
|
|
95
96
|
*/
|
|
96
|
-
readonly setFormValues: (state: Form.FormState<TFields>, values:
|
|
97
|
+
readonly setFormValues: (state: Form.FormState<TFields>, values: Field.EncodedFromFields<TFields>) => Form.FormState<TFields>;
|
|
97
98
|
/**
|
|
98
99
|
* Sets a field as touched.
|
|
99
100
|
*/
|
|
@@ -141,5 +142,5 @@ export interface FormOperations<TFields extends Form.FieldsRecord> {
|
|
|
141
142
|
* @since 1.0.0
|
|
142
143
|
* @category Constructors
|
|
143
144
|
*/
|
|
144
|
-
export declare const make: <TFields extends
|
|
145
|
+
export declare const make: <TFields extends Field.FieldsRecord, R>(config: FormAtomsConfig<TFields, R>) => FormAtoms<TFields, R>;
|
|
145
146
|
//# sourceMappingURL=FormAtoms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAA;AAC9C,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAI3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;GAOG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;GAIG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;;;;GAOG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;;;GAIG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field definitions for type-safe forms.
|
|
3
|
+
*
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
/**
|
|
8
|
+
* Unique identifier for Field instances.
|
|
9
|
+
*
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category Symbols
|
|
12
|
+
*/
|
|
13
|
+
export const TypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Field");
|
|
14
|
+
/**
|
|
15
|
+
* Checks if a field definition is an array field.
|
|
16
|
+
*
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category Guards
|
|
19
|
+
*/
|
|
20
|
+
export const isArrayFieldDef = def => def._tag === "array";
|
|
21
|
+
/**
|
|
22
|
+
* Checks if a field definition is a scalar field.
|
|
23
|
+
*
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category Guards
|
|
26
|
+
*/
|
|
27
|
+
export const isFieldDef = def => def._tag === "field";
|
|
28
|
+
/**
|
|
29
|
+
* Creates a scalar field definition.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import * as Field from "@lucas-barake/effect-form/Field"
|
|
34
|
+
* import * as Schema from "effect/Schema"
|
|
35
|
+
*
|
|
36
|
+
* const NameField = Field.makeField("name", Schema.String)
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category Constructors
|
|
41
|
+
*/
|
|
42
|
+
export const makeField = (key, schema) => ({
|
|
43
|
+
_tag: "field",
|
|
44
|
+
key,
|
|
45
|
+
schema
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Creates an array field definition.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* import * as Field from "@lucas-barake/effect-form/Field"
|
|
53
|
+
* import * as Schema from "effect/Schema"
|
|
54
|
+
*
|
|
55
|
+
* // Array of primitives
|
|
56
|
+
* const TagsField = Field.makeArrayField("tags", Schema.String)
|
|
57
|
+
*
|
|
58
|
+
* // Array of objects
|
|
59
|
+
* const ItemsField = Field.makeArrayField("items", Schema.Struct({
|
|
60
|
+
* name: Schema.String,
|
|
61
|
+
* quantity: Schema.Number
|
|
62
|
+
* }))
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @category Constructors
|
|
67
|
+
*/
|
|
68
|
+
export const makeArrayField = (key, itemSchema) => ({
|
|
69
|
+
_tag: "array",
|
|
70
|
+
key,
|
|
71
|
+
itemSchema
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Gets a default encoded value from a schema.
|
|
75
|
+
*
|
|
76
|
+
* @since 1.0.0
|
|
77
|
+
* @category Helpers
|
|
78
|
+
*/
|
|
79
|
+
export const getDefaultFromSchema = schema => {
|
|
80
|
+
const ast = schema.ast;
|
|
81
|
+
switch (ast._tag) {
|
|
82
|
+
case "StringKeyword":
|
|
83
|
+
case "TemplateLiteral":
|
|
84
|
+
return "";
|
|
85
|
+
case "NumberKeyword":
|
|
86
|
+
return 0;
|
|
87
|
+
case "BooleanKeyword":
|
|
88
|
+
return false;
|
|
89
|
+
case "TypeLiteral":
|
|
90
|
+
{
|
|
91
|
+
const result = {};
|
|
92
|
+
for (const prop of ast.propertySignatures) {
|
|
93
|
+
result[prop.name] = getDefaultFromSchema(Schema.make(prop.type));
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
case "Transformation":
|
|
98
|
+
return getDefaultFromSchema(Schema.make(ast.from));
|
|
99
|
+
case "Refinement":
|
|
100
|
+
return getDefaultFromSchema(Schema.make(ast.from));
|
|
101
|
+
case "Suspend":
|
|
102
|
+
return getDefaultFromSchema(Schema.make(ast.f()));
|
|
103
|
+
default:
|
|
104
|
+
return "";
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Gets default encoded values for a fields record.
|
|
109
|
+
*
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
* @category Helpers
|
|
112
|
+
*/
|
|
113
|
+
export const getDefaultEncodedValues = fields => {
|
|
114
|
+
const result = {};
|
|
115
|
+
for (const [key, def] of Object.entries(fields)) {
|
|
116
|
+
if (isArrayFieldDef(def)) {
|
|
117
|
+
result[key] = [];
|
|
118
|
+
} else {
|
|
119
|
+
result[key] = "";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Creates a touched record with all fields set to the given value.
|
|
126
|
+
*
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
* @category Helpers
|
|
129
|
+
*/
|
|
130
|
+
export const createTouchedRecord = (fields, value) => {
|
|
131
|
+
const result = {};
|
|
132
|
+
for (const key of Object.keys(fields)) {
|
|
133
|
+
result[key] = value;
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=Field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Field.js","names":["Schema","TypeId","Symbol","for","isArrayFieldDef","def","_tag","isFieldDef","makeField","key","schema","makeArrayField","itemSchema","getDefaultFromSchema","ast","result","prop","propertySignatures","name","make","type","from","f","getDefaultEncodedValues","fields","Object","entries","createTouchedRecord","value","keys"],"sources":["../../src/Field.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;AAMA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,iCAAiC,CAAC;AAgDlF;;;;;;AAMA,OAAO,MAAMC,eAAe,GAAIC,GAAgB,IAC9CA,GAAG,CAACC,IAAI,KAAK,OAAO;AAEtB;;;;;;AAMA,OAAO,MAAMC,UAAU,GAAIF,GAAgB,IAAiDA,GAAG,CAACC,IAAI,KAAK,OAAO;AAEhH;;;;;;;;;;;;;;AAcA,OAAO,MAAME,SAAS,GAAGA,CACvBC,GAAM,EACNC,MAAS,MACW;EACpBJ,IAAI,EAAE,OAAO;EACbG,GAAG;EACHC;CACD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,MAAMC,cAAc,GAAGA,CAC5BF,GAAM,EACNG,UAAa,MACY;EACzBN,IAAI,EAAE,OAAO;EACbG,GAAG;EACHG;CACD,CAAC;AA0BF;;;;;;AAMA,OAAO,MAAMC,oBAAoB,GAAIH,MAAyB,IAAa;EACzE,MAAMI,GAAG,GAAGJ,MAAM,CAACI,GAAG;EACtB,QAAQA,GAAG,CAACR,IAAI;IACd,KAAK,eAAe;IACpB,KAAK,iBAAiB;MACpB,OAAO,EAAE;IACX,KAAK,eAAe;MAClB,OAAO,CAAC;IACV,KAAK,gBAAgB;MACnB,OAAO,KAAK;IACd,KAAK,aAAa;MAAE;QAClB,MAAMS,MAAM,GAA4B,EAAE;QAC1C,KAAK,MAAMC,IAAI,IAAIF,GAAG,CAACG,kBAAkB,EAAE;UACzCF,MAAM,CAACC,IAAI,CAACE,IAAc,CAAC,GAAGL,oBAAoB,CAACb,MAAM,CAACmB,IAAI,CAACH,IAAI,CAACI,IAAI,CAAC,CAAC;QAC5E;QACA,OAAOL,MAAM;MACf;IACA,KAAK,gBAAgB;MACnB,OAAOF,oBAAoB,CAACb,MAAM,CAACmB,IAAI,CAACL,GAAG,CAACO,IAAI,CAAC,CAAC;IACpD,KAAK,YAAY;MACf,OAAOR,oBAAoB,CAACb,MAAM,CAACmB,IAAI,CAACL,GAAG,CAACO,IAAI,CAAC,CAAC;IACpD,KAAK,SAAS;MACZ,OAAOR,oBAAoB,CAACb,MAAM,CAACmB,IAAI,CAACL,GAAG,CAACQ,CAAC,EAAE,CAAC,CAAC;IACnD;MACE,OAAO,EAAE;EACb;AACF,CAAC;AAED;;;;;;AAMA,OAAO,MAAMC,uBAAuB,GAAIC,MAAoB,IAA6B;EACvF,MAAMT,MAAM,GAA4B,EAAE;EAC1C,KAAK,MAAM,CAACN,GAAG,EAAEJ,GAAG,CAAC,IAAIoB,MAAM,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IAC/C,IAAIpB,eAAe,CAACC,GAAG,CAAC,EAAE;MACxBU,MAAM,CAACN,GAAG,CAAC,GAAG,EAAE;IAClB,CAAC,MAAM;MACLM,MAAM,CAACN,GAAG,CAAC,GAAG,EAAE;IAClB;EACF;EACA,OAAOM,MAAM;AACf,CAAC;AAED;;;;;;AAMA,OAAO,MAAMY,mBAAmB,GAAGA,CAACH,MAAoB,EAAEI,KAAc,KAA6B;EACnG,MAAMb,MAAM,GAA4B,EAAE;EAC1C,KAAK,MAAMN,GAAG,IAAIgB,MAAM,CAACI,IAAI,CAACL,MAAM,CAAC,EAAE;IACrCT,MAAM,CAACN,GAAG,CAAC,GAAGmB,KAAK;EACrB;EACA,OAAOb,MAAM;AACf,CAAC","ignoreList":[]}
|