@lucas-barake/effect-form 0.8.0 → 0.9.1
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/Path/package.json +6 -0
- package/dist/cjs/Field.js +0 -10
- package/dist/cjs/Field.js.map +1 -1
- package/dist/cjs/FormAtoms.js +43 -33
- package/dist/cjs/FormAtoms.js.map +1 -1
- package/dist/cjs/FormBuilder.js +0 -6
- package/dist/cjs/FormBuilder.js.map +1 -1
- package/dist/cjs/Mode.js +0 -3
- package/dist/cjs/Mode.js.map +1 -1
- package/dist/cjs/{internal/path.js → Path.js} +2 -4
- package/dist/cjs/Path.js.map +1 -0
- package/dist/cjs/Validation.js +2 -6
- package/dist/cjs/Validation.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/dirty.js +7 -7
- package/dist/cjs/internal/dirty.js.map +1 -1
- package/dist/dts/Field.d.ts +0 -17
- package/dist/dts/Field.d.ts.map +1 -1
- package/dist/dts/FormAtoms.d.ts +0 -6
- package/dist/dts/FormAtoms.d.ts.map +1 -1
- package/dist/dts/FormBuilder.d.ts +0 -12
- package/dist/dts/FormBuilder.d.ts.map +1 -1
- package/dist/dts/Mode.d.ts +0 -6
- package/dist/dts/Mode.d.ts.map +1 -1
- package/dist/dts/{internal/path.d.ts → Path.d.ts} +2 -4
- package/dist/dts/Path.d.ts.map +1 -0
- package/dist/dts/Validation.d.ts +0 -4
- package/dist/dts/Validation.d.ts.map +1 -1
- package/dist/dts/index.d.ts +5 -8
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/Field.js +0 -10
- package/dist/esm/Field.js.map +1 -1
- package/dist/esm/FormAtoms.js +27 -17
- package/dist/esm/FormAtoms.js.map +1 -1
- package/dist/esm/FormBuilder.js +0 -6
- package/dist/esm/FormBuilder.js.map +1 -1
- package/dist/esm/Mode.js +0 -3
- package/dist/esm/Mode.js.map +1 -1
- package/dist/esm/{internal/path.js → Path.js} +2 -4
- package/dist/esm/Path.js.map +1 -0
- package/dist/esm/Validation.js +1 -5
- package/dist/esm/Validation.js.map +1 -1
- package/dist/esm/index.js +5 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/dirty.js +1 -1
- package/dist/esm/internal/dirty.js.map +1 -1
- package/package.json +9 -1
- package/src/Field.ts +0 -17
- package/src/FormAtoms.ts +40 -30
- package/src/FormBuilder.ts +0 -15
- package/src/Mode.ts +0 -6
- package/src/{internal/path.ts → Path.ts} +1 -3
- package/src/Validation.ts +1 -5
- package/src/index.ts +6 -8
- package/src/internal/dirty.ts +1 -1
- package/dist/cjs/internal/path.js.map +0 -1
- package/dist/dts/internal/path.d.ts.map +0 -1
- package/dist/esm/internal/path.js.map +0 -1
package/src/FormBuilder.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
1
|
import type * as Registry from "@effect-atom/atom/Registry"
|
|
5
2
|
import type * as Effect from "effect/Effect"
|
|
6
3
|
import type * as Option from "effect/Option"
|
|
@@ -18,7 +15,6 @@ import type {
|
|
|
18
15
|
import { isArrayFieldDef, isFieldDef } from "./Field.js"
|
|
19
16
|
|
|
20
17
|
/**
|
|
21
|
-
* @since 1.0.0
|
|
22
18
|
* @category Models
|
|
23
19
|
*/
|
|
24
20
|
export interface SubmittedValues<TFields extends FieldsRecord> {
|
|
@@ -29,14 +25,12 @@ export interface SubmittedValues<TFields extends FieldsRecord> {
|
|
|
29
25
|
/**
|
|
30
26
|
* Unique identifier for Field references.
|
|
31
27
|
*
|
|
32
|
-
* @since 1.0.0
|
|
33
28
|
* @category Symbols
|
|
34
29
|
* @internal
|
|
35
30
|
*/
|
|
36
31
|
export const FieldTypeId: unique symbol = Symbol.for("@lucas-barake/effect-form/Field")
|
|
37
32
|
|
|
38
33
|
/**
|
|
39
|
-
* @since 1.0.0
|
|
40
34
|
* @category Symbols
|
|
41
35
|
* @internal
|
|
42
36
|
*/
|
|
@@ -45,7 +39,6 @@ export type FieldTypeId = typeof FieldTypeId
|
|
|
45
39
|
/**
|
|
46
40
|
* A field reference carrying type and path info for type-safe setValue operations.
|
|
47
41
|
*
|
|
48
|
-
* @since 1.0.0
|
|
49
42
|
* @category Models
|
|
50
43
|
*/
|
|
51
44
|
export interface FieldRef<S> {
|
|
@@ -57,7 +50,6 @@ export interface FieldRef<S> {
|
|
|
57
50
|
/**
|
|
58
51
|
* Creates a field reference for type-safe setValue operations.
|
|
59
52
|
*
|
|
60
|
-
* @since 1.0.0
|
|
61
53
|
* @category Constructors
|
|
62
54
|
* @internal
|
|
63
55
|
*/
|
|
@@ -74,13 +66,11 @@ export const makeFieldRef = <S>(key: string): FieldRef<S> => ({
|
|
|
74
66
|
/**
|
|
75
67
|
* Unique identifier for FormBuilder instances.
|
|
76
68
|
*
|
|
77
|
-
* @since 1.0.0
|
|
78
69
|
* @category Symbols
|
|
79
70
|
*/
|
|
80
71
|
export const TypeId: unique symbol = Symbol.for("@lucas-barake/effect-form/Form")
|
|
81
72
|
|
|
82
73
|
/**
|
|
83
|
-
* @since 1.0.0
|
|
84
74
|
* @category Symbols
|
|
85
75
|
*/
|
|
86
76
|
export type TypeId = typeof TypeId
|
|
@@ -88,7 +78,6 @@ export type TypeId = typeof TypeId
|
|
|
88
78
|
/**
|
|
89
79
|
* The state of a form at runtime.
|
|
90
80
|
*
|
|
91
|
-
* @since 1.0.0
|
|
92
81
|
* @category Models
|
|
93
82
|
*/
|
|
94
83
|
export interface FormState<TFields extends FieldsRecord> {
|
|
@@ -121,7 +110,6 @@ type Refinement = SyncRefinement | AsyncRefinement
|
|
|
121
110
|
* includes a Schema for validation. The builder accumulates field definitions
|
|
122
111
|
* and context requirements (`R`) from schemas that use Effect services.
|
|
123
112
|
*
|
|
124
|
-
* @since 1.0.0
|
|
125
113
|
* @category Models
|
|
126
114
|
*/
|
|
127
115
|
export interface FormBuilder<TFields extends FieldsRecord, R> {
|
|
@@ -281,7 +269,6 @@ const FormBuilderProto = {
|
|
|
281
269
|
* // Output: false
|
|
282
270
|
* ```
|
|
283
271
|
*
|
|
284
|
-
* @since 1.0.0
|
|
285
272
|
* @category Guards
|
|
286
273
|
*/
|
|
287
274
|
export const isFormBuilder = (u: unknown): u is FormBuilder<any, any> => Predicate.hasProperty(u, TypeId)
|
|
@@ -307,7 +294,6 @@ export const isFormBuilder = (u: unknown): u is FormBuilder<any, any> => Predica
|
|
|
307
294
|
* .addField(PasswordField)
|
|
308
295
|
* ```
|
|
309
296
|
*
|
|
310
|
-
* @since 1.0.0
|
|
311
297
|
* @category Constructors
|
|
312
298
|
*/
|
|
313
299
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
@@ -321,7 +307,6 @@ export const empty: FormBuilder<{}, never> = (() => {
|
|
|
321
307
|
/**
|
|
322
308
|
* Builds a combined Schema from a FormBuilder's field definitions.
|
|
323
309
|
*
|
|
324
|
-
* @since 1.0.0
|
|
325
310
|
* @category Schema
|
|
326
311
|
*/
|
|
327
312
|
export const buildSchema = <TFields extends FieldsRecord, R>(
|
package/src/Mode.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Form validation mode configuration.
|
|
3
|
-
*
|
|
4
|
-
* @since 1.0.0
|
|
5
3
|
*/
|
|
6
4
|
import * as Duration from "effect/Duration"
|
|
7
5
|
|
|
@@ -17,7 +15,6 @@ import * as Duration from "effect/Duration"
|
|
|
17
15
|
* - `{ onChange: { debounce, autoSubmit? } }`: Debounced validation, optional auto-submit
|
|
18
16
|
* - `{ onBlur: { autoSubmit: true } }`: Validate on blur, auto-submit when valid
|
|
19
17
|
*
|
|
20
|
-
* @since 1.0.0
|
|
21
18
|
* @category Models
|
|
22
19
|
*/
|
|
23
20
|
export type FormMode =
|
|
@@ -32,7 +29,6 @@ export type FormMode =
|
|
|
32
29
|
* Form mode without auto-submit options.
|
|
33
30
|
* Used when SubmitArgs is not void, since auto-submit cannot provide custom arguments.
|
|
34
31
|
*
|
|
35
|
-
* @since 1.0.0
|
|
36
32
|
* @category Models
|
|
37
33
|
*/
|
|
38
34
|
export type FormModeWithoutAutoSubmit =
|
|
@@ -44,7 +40,6 @@ export type FormModeWithoutAutoSubmit =
|
|
|
44
40
|
/**
|
|
45
41
|
* Parsed form mode with resolved values.
|
|
46
42
|
*
|
|
47
|
-
* @since 1.0.0
|
|
48
43
|
* @category Models
|
|
49
44
|
*/
|
|
50
45
|
export interface ParsedMode {
|
|
@@ -56,7 +51,6 @@ export interface ParsedMode {
|
|
|
56
51
|
/**
|
|
57
52
|
* Parses a FormMode into a normalized ParsedMode.
|
|
58
53
|
*
|
|
59
|
-
* @since 1.0.0
|
|
60
54
|
* @category Parsing
|
|
61
55
|
*/
|
|
62
56
|
export const parse = (mode: FormMode = "onSubmit"): ParsedMode => {
|
package/src/Validation.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Validation utilities for form error handling.
|
|
3
|
-
*
|
|
4
|
-
* @since 1.0.0
|
|
5
3
|
*/
|
|
6
4
|
import * as Option from "effect/Option"
|
|
7
5
|
import * as ParseResult from "effect/ParseResult"
|
|
8
|
-
import { schemaPathToFieldPath } from "./
|
|
6
|
+
import { schemaPathToFieldPath } from "./Path.js"
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* Extracts the first error message from a ParseError.
|
|
12
10
|
*
|
|
13
|
-
* @since 1.0.0
|
|
14
11
|
* @category Error Handling
|
|
15
12
|
*/
|
|
16
13
|
export const extractFirstError = (error: ParseResult.ParseError): Option.Option<string> => {
|
|
@@ -25,7 +22,6 @@ export const extractFirstError = (error: ParseResult.ParseError): Option.Option<
|
|
|
25
22
|
* Routes validation errors from a ParseError to a map of field paths to error messages.
|
|
26
23
|
* Used for cross-field validation where schema errors need to be displayed on specific fields.
|
|
27
24
|
*
|
|
28
|
-
* @since 1.0.0
|
|
29
25
|
* @category Error Handling
|
|
30
26
|
*/
|
|
31
27
|
export const routeErrors = (error: ParseResult.ParseError): Map<string, string> => {
|
package/src/index.ts
CHANGED
|
@@ -1,33 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Field definitions for type-safe forms.
|
|
3
|
-
*
|
|
4
|
-
* @since 1.0.0
|
|
5
3
|
*/
|
|
6
4
|
export * as Field from "./Field.js"
|
|
7
5
|
|
|
8
6
|
/**
|
|
9
7
|
* Atoms for a single field.
|
|
10
8
|
*
|
|
11
|
-
* @since 1.0.0
|
|
12
9
|
* @category Models
|
|
13
10
|
*/
|
|
14
11
|
export * as FormAtoms from "./FormAtoms.js"
|
|
15
12
|
|
|
16
13
|
/**
|
|
17
|
-
* @
|
|
14
|
+
* @category Models
|
|
18
15
|
*/
|
|
19
16
|
export * as FormBuilder from "./FormBuilder.js"
|
|
20
17
|
|
|
21
18
|
/**
|
|
22
19
|
* Form validation mode configuration.
|
|
23
|
-
*
|
|
24
|
-
* @since 1.0.0
|
|
25
20
|
*/
|
|
26
21
|
export * as Mode from "./Mode.js"
|
|
27
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Path utilities for form field operations.
|
|
25
|
+
*/
|
|
26
|
+
export * as Path from "./Path.js"
|
|
27
|
+
|
|
28
28
|
/**
|
|
29
29
|
* Validation utilities for form error handling.
|
|
30
|
-
*
|
|
31
|
-
* @since 1.0.0
|
|
32
30
|
*/
|
|
33
31
|
export * as Validation from "./Validation.js"
|
package/src/internal/dirty.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as Equal from "effect/Equal"
|
|
7
7
|
import * as Utils from "effect/Utils"
|
|
8
|
-
import { getNestedValue, isPathUnderRoot } from "
|
|
8
|
+
import { getNestedValue, isPathUnderRoot } from "../Path.js"
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Recalculates dirty fields for an array after mutation.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","names":["BRACKET_NOTATION_REGEX","schemaPathToFieldPath","path","length","result","String","i","segment","exports","isPathUnderRoot","rootPath","startsWith","isPathOrParentDirty","dirtyFields","has","parent","lastDot","lastIndexOf","lastBracket","splitIndex","Math","max","substring","getNestedValue","obj","parts","replace","split","current","part","undefined","setNestedValue","value","Array","isArray"],"sources":["../../../src/internal/path.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;;;;;AAMA,MAAMA,sBAAsB,GAAG,YAAY;AAE3C;;;;;;AAMO,MAAMC,qBAAqB,GAAIC,IAAgC,IAAY;EAChF,IAAIA,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EAEhC,IAAIC,MAAM,GAAGC,MAAM,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,CAACC,MAAM,EAAEG,CAAC,EAAE,EAAE;IACpC,MAAMC,OAAO,GAAGL,IAAI,CAACI,CAAC,CAAC;IACvB,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MAC/BH,MAAM,IAAI,IAAIG,OAAO,GAAG;IAC1B,CAAC,MAAM;MACLH,MAAM,IAAI,IAAIC,MAAM,CAACE,OAAO,CAAC,EAAE;IACjC;EACF;EACA,OAAOH,MAAM;AACf,CAAC;AAED;;;;;;;;;AAAAI,OAAA,CAAAP,qBAAA,GAAAA,qBAAA;AASO,MAAMQ,eAAe,GAAGA,CAACP,IAAY,EAAEQ,QAAgB,KAC5DR,IAAI,KAAKQ,QAAQ,IAAIR,IAAI,CAACS,UAAU,CAACD,QAAQ,GAAG,GAAG,CAAC,IAAIR,IAAI,CAACS,UAAU,CAACD,QAAQ,GAAG,GAAG,CAAC;AAEzF;;;AAAAF,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAGO,MAAMG,mBAAmB,GAAGA,CAACC,WAAgC,EAAEX,IAAY,KAAa;EAC7F,IAAIW,WAAW,CAACC,GAAG,CAACZ,IAAI,CAAC,EAAE,OAAO,IAAI;EAEtC,IAAIa,MAAM,GAAGb,IAAI;EACjB,OAAO,IAAI,EAAE;IACX,MAAMc,OAAO,GAAGD,MAAM,CAACE,WAAW,CAAC,GAAG,CAAC;IACvC,MAAMC,WAAW,GAAGH,MAAM,CAACE,WAAW,CAAC,GAAG,CAAC;IAC3C,MAAME,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACL,OAAO,EAAEE,WAAW,CAAC;IAEjD,IAAIC,UAAU,KAAK,CAAC,CAAC,EAAE;IAEvBJ,MAAM,GAAGA,MAAM,CAACO,SAAS,CAAC,CAAC,EAAEH,UAAU,CAAC;IACxC,IAAIN,WAAW,CAACC,GAAG,CAACC,MAAM,CAAC,EAAE,OAAO,IAAI;EAC1C;EAEA,OAAO,KAAK;AACd,CAAC;AAED;;;;;;AAAAP,OAAA,CAAAI,mBAAA,GAAAA,mBAAA;AAMO,MAAMW,cAAc,GAAGA,CAACC,GAAY,EAAEtB,IAAY,KAAa;EACpE,IAAIA,IAAI,KAAK,EAAE,EAAE,OAAOsB,GAAG;EAC3B,MAAMC,KAAK,GAAGvB,IAAI,CAACwB,OAAO,CAAC1B,sBAAsB,EAAE,KAAK,CAAC,CAAC2B,KAAK,CAAC,GAAG,CAAC;EACpE,IAAIC,OAAO,GAAYJ,GAAG;EAC1B,KAAK,MAAMK,IAAI,IAAIJ,KAAK,EAAE;IACxB,IAAIG,OAAO,IAAI,IAAI,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE,OAAOE,SAAS;IACpEF,OAAO,GAAIA,OAAmC,CAACC,IAAI,CAAC;EACtD;EACA,OAAOD,OAAO;AAChB,CAAC;AAED;;;;;;;AAAApB,OAAA,CAAAe,cAAA,GAAAA,cAAA;AAOO,MAAMQ,cAAc,GAAGA,CAAIP,GAAM,EAAEtB,IAAY,EAAE8B,KAAc,KAAO;EAC3E,IAAI9B,IAAI,KAAK,EAAE,EAAE,OAAO8B,KAAU;EAClC,MAAMP,KAAK,GAAGvB,IAAI,CAACwB,OAAO,CAAC1B,sBAAsB,EAAE,KAAK,CAAC,CAAC2B,KAAK,CAAC,GAAG,CAAC;EACpE,MAAMvB,MAAM,GAAG;IAAE,GAAGoB;EAAG,CAA6B;EAEpD,IAAII,OAAO,GAAGxB,MAAM;EACpB,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmB,KAAK,CAACtB,MAAM,GAAG,CAAC,EAAEG,CAAC,EAAE,EAAE;IACzC,MAAMuB,IAAI,GAAGJ,KAAK,CAACnB,CAAC,CAAC;IACrB,IAAI2B,KAAK,CAACC,OAAO,CAACN,OAAO,CAACC,IAAI,CAAC,CAAC,EAAE;MAChCD,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC,GAAID,OAAO,CAACC,IAAI,CAAoB,CAAC;IACxD,CAAC,MAAM;MACLD,OAAO,CAACC,IAAI,CAAC,GAAG;QAAE,GAAID,OAAO,CAACC,IAAI;MAA6B,CAAE;IACnE;IACAD,OAAO,GAAGA,OAAO,CAACC,IAAI,CAA4B;EACpD;EAEAD,OAAO,CAACH,KAAK,CAACA,KAAK,CAACtB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG6B,KAAK;EACxC,OAAO5B,MAAW;AACpB,CAAC;AAAAI,OAAA,CAAAuB,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/internal/path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,aAAa,CAAC,WAAW,CAAC,KAAG,MAaxE,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,OACwB,CAAA;AAEzF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,aAAa,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,OAgBpF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,EAAE,MAAM,MAAM,KAAG,OAS3D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,OAAO,OAAO,KAAG,CAkBxE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","names":["BRACKET_NOTATION_REGEX","schemaPathToFieldPath","path","length","result","String","i","segment","isPathUnderRoot","rootPath","startsWith","isPathOrParentDirty","dirtyFields","has","parent","lastDot","lastIndexOf","lastBracket","splitIndex","Math","max","substring","getNestedValue","obj","parts","replace","split","current","part","undefined","setNestedValue","value","Array","isArray"],"sources":["../../../src/internal/path.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|