@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.
Files changed (58) hide show
  1. package/Path/package.json +6 -0
  2. package/dist/cjs/Field.js +0 -10
  3. package/dist/cjs/Field.js.map +1 -1
  4. package/dist/cjs/FormAtoms.js +43 -33
  5. package/dist/cjs/FormAtoms.js.map +1 -1
  6. package/dist/cjs/FormBuilder.js +0 -6
  7. package/dist/cjs/FormBuilder.js.map +1 -1
  8. package/dist/cjs/Mode.js +0 -3
  9. package/dist/cjs/Mode.js.map +1 -1
  10. package/dist/cjs/{internal/path.js → Path.js} +2 -4
  11. package/dist/cjs/Path.js.map +1 -0
  12. package/dist/cjs/Validation.js +2 -6
  13. package/dist/cjs/Validation.js.map +1 -1
  14. package/dist/cjs/index.js +3 -1
  15. package/dist/cjs/internal/dirty.js +7 -7
  16. package/dist/cjs/internal/dirty.js.map +1 -1
  17. package/dist/dts/Field.d.ts +0 -17
  18. package/dist/dts/Field.d.ts.map +1 -1
  19. package/dist/dts/FormAtoms.d.ts +0 -6
  20. package/dist/dts/FormAtoms.d.ts.map +1 -1
  21. package/dist/dts/FormBuilder.d.ts +0 -12
  22. package/dist/dts/FormBuilder.d.ts.map +1 -1
  23. package/dist/dts/Mode.d.ts +0 -6
  24. package/dist/dts/Mode.d.ts.map +1 -1
  25. package/dist/dts/{internal/path.d.ts → Path.d.ts} +2 -4
  26. package/dist/dts/Path.d.ts.map +1 -0
  27. package/dist/dts/Validation.d.ts +0 -4
  28. package/dist/dts/Validation.d.ts.map +1 -1
  29. package/dist/dts/index.d.ts +5 -8
  30. package/dist/dts/index.d.ts.map +1 -1
  31. package/dist/esm/Field.js +0 -10
  32. package/dist/esm/Field.js.map +1 -1
  33. package/dist/esm/FormAtoms.js +27 -17
  34. package/dist/esm/FormAtoms.js.map +1 -1
  35. package/dist/esm/FormBuilder.js +0 -6
  36. package/dist/esm/FormBuilder.js.map +1 -1
  37. package/dist/esm/Mode.js +0 -3
  38. package/dist/esm/Mode.js.map +1 -1
  39. package/dist/esm/{internal/path.js → Path.js} +2 -4
  40. package/dist/esm/Path.js.map +1 -0
  41. package/dist/esm/Validation.js +1 -5
  42. package/dist/esm/Validation.js.map +1 -1
  43. package/dist/esm/index.js +5 -8
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/internal/dirty.js +1 -1
  46. package/dist/esm/internal/dirty.js.map +1 -1
  47. package/package.json +9 -1
  48. package/src/Field.ts +0 -17
  49. package/src/FormAtoms.ts +40 -30
  50. package/src/FormBuilder.ts +0 -15
  51. package/src/Mode.ts +0 -6
  52. package/src/{internal/path.ts → Path.ts} +1 -3
  53. package/src/Validation.ts +1 -5
  54. package/src/index.ts +6 -8
  55. package/src/internal/dirty.ts +1 -1
  56. package/dist/cjs/internal/path.js.map +0 -1
  57. package/dist/dts/internal/path.d.ts.map +0 -1
  58. package/dist/esm/internal/path.js.map +0 -1
@@ -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 => {
@@ -1,7 +1,5 @@
1
1
  /**
2
- * Internal path utilities for form field operations.
3
- *
4
- * @internal
2
+ * Path utilities for form field operations.
5
3
  */
6
4
 
7
5
  const BRACKET_NOTATION_REGEX = /\[(\d+)\]/g
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 "./internal/path.js"
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
- * @since 1.0.0
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"
@@ -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 "./path.js"
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":"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","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":[]}