@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/dist/esm/Form.js CHANGED
@@ -1,12 +1,6 @@
1
1
  import * as Predicate from "effect/Predicate";
2
2
  import * as Schema from "effect/Schema";
3
- /**
4
- * Unique identifier for FormBuilder instances.
5
- *
6
- * @since 1.0.0
7
- * @category Symbols
8
- */
9
- export const TypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Form");
3
+ import { isArrayFieldDef, isFieldDef } from "./Field.js";
10
4
  /**
11
5
  * Unique identifier for Field references.
12
6
  *
@@ -27,46 +21,16 @@ export const makeFieldRef = key => ({
27
21
  _S: undefined,
28
22
  key
29
23
  });
24
+ // ================================
25
+ // FormBuilder
26
+ // ================================
30
27
  /**
31
- * Creates a scalar field definition.
32
- *
33
- * @example
34
- * ```ts
35
- * const NameField = Form.makeField("name", Schema.String)
36
- * const form = Form.empty.addField(NameField)
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
- * // Array of primitives
53
- * const TagsField = Form.makeArrayField("tags", Schema.String)
54
- *
55
- * // Array of objects
56
- * const ItemsField = Form.makeArrayField("items", Schema.Struct({
57
- * name: Schema.String,
58
- * quantity: Schema.Number
59
- * }))
60
- * ```
28
+ * Unique identifier for FormBuilder instances.
61
29
  *
62
30
  * @since 1.0.0
63
- * @category Constructors
31
+ * @category Symbols
64
32
  */
65
- export const makeArrayField = (key, itemSchema) => ({
66
- _tag: "array",
67
- key,
68
- itemSchema
69
- });
33
+ export const TypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Form");
70
34
  const FormBuilderProto = {
71
35
  [TypeId]: TypeId,
72
36
  addField(field) {
@@ -126,54 +90,6 @@ const FormBuilderProto = {
126
90
  * @category Guards
127
91
  */
128
92
  export const isFormBuilder = u => Predicate.hasProperty(u, TypeId);
129
- /**
130
- * Checks if a field definition is an array field.
131
- *
132
- * @since 1.0.0
133
- * @category Guards
134
- */
135
- export const isArrayFieldDef = def => def._tag === "array";
136
- /**
137
- * Checks if a field definition is a simple field.
138
- *
139
- * @since 1.0.0
140
- * @category Guards
141
- */
142
- export const isFieldDef = def => def._tag === "field";
143
- /**
144
- * Gets a default encoded value from a schema.
145
- *
146
- * @since 1.0.0
147
- * @category Helpers
148
- */
149
- export const getDefaultFromSchema = schema => {
150
- const ast = schema.ast;
151
- switch (ast._tag) {
152
- case "StringKeyword":
153
- case "TemplateLiteral":
154
- return "";
155
- case "NumberKeyword":
156
- return 0;
157
- case "BooleanKeyword":
158
- return false;
159
- case "TypeLiteral":
160
- {
161
- const result = {};
162
- for (const prop of ast.propertySignatures) {
163
- result[prop.name] = getDefaultFromSchema(Schema.make(prop.type));
164
- }
165
- return result;
166
- }
167
- case "Transformation":
168
- return getDefaultFromSchema(Schema.make(ast.from));
169
- case "Refinement":
170
- return getDefaultFromSchema(Schema.make(ast.from));
171
- case "Suspend":
172
- return getDefaultFromSchema(Schema.make(ast.f()));
173
- default:
174
- return "";
175
- }
176
- };
177
93
  /**
178
94
  * An empty `FormBuilder` to start building a form.
179
95
  *
@@ -230,34 +146,4 @@ export const buildSchema = self => {
230
146
  }
231
147
  return schema;
232
148
  };
233
- /**
234
- * Gets default encoded values for a fields record.
235
- *
236
- * @since 1.0.0
237
- * @category Helpers
238
- */
239
- export const getDefaultEncodedValues = fields => {
240
- const result = {};
241
- for (const [key, def] of Object.entries(fields)) {
242
- if (isArrayFieldDef(def)) {
243
- result[key] = [];
244
- } else {
245
- result[key] = "";
246
- }
247
- }
248
- return result;
249
- };
250
- /**
251
- * Creates a touched record with all fields set to the given value.
252
- *
253
- * @since 1.0.0
254
- * @category Helpers
255
- */
256
- export const createTouchedRecord = (fields, value) => {
257
- const result = {};
258
- for (const key of Object.keys(fields)) {
259
- result[key] = value;
260
- }
261
- return result;
262
- };
263
149
  //# sourceMappingURL=Form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["Predicate","Schema","TypeId","Symbol","for","FieldTypeId","makeFieldRef","key","_S","undefined","makeField","schema","_tag","makeArrayField","itemSchema","FormBuilderProto","addField","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","fn","values","refineEffect","isFormBuilder","u","hasProperty","isArrayFieldDef","def","isFieldDef","getDefaultFromSchema","ast","result","prop","propertySignatures","name","make","type","from","f","empty","self","buildSchema","schemaFields","entries","Array","Struct","refinement","pipe","filter","filterEffect","getDefaultEncodedValues","createTouchedRecord","value","keys"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Form.js","names":["Predicate","Schema","isArrayFieldDef","isFieldDef","FieldTypeId","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","Array","itemSchema","schema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,8 @@ import { pipe } from "effect/Function";
13
13
  import * as Option from "effect/Option";
14
14
  import * as Schema from "effect/Schema";
15
15
  import * as Utils from "effect/Utils";
16
- import { buildSchema, createTouchedRecord, getDefaultFromSchema, makeFieldRef } from "./Form.js";
16
+ import * as Field from "./Field.js";
17
+ import * as Form from "./Form.js";
17
18
  import { recalculateDirtyFieldsForArray, recalculateDirtySubtree } from "./internal/dirty.js";
18
19
  import { getNestedValue, setNestedValue } from "./internal/path.js";
19
20
  import { createWeakRegistry } from "./internal/weak-registry.js";
@@ -51,7 +52,7 @@ export const make = config => {
51
52
  const {
52
53
  fields
53
54
  } = formBuilder;
54
- const combinedSchema = buildSchema(formBuilder);
55
+ const combinedSchema = Form.buildSchema(formBuilder);
55
56
  const stateAtom = Atom.make(Option.none()).pipe(Atom.setIdleTTL(0));
56
57
  const crossFieldErrorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
57
58
  const dirtyFieldsAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields).pipe(Atom.setIdleTTL(0));
@@ -126,25 +127,25 @@ export const make = config => {
126
127
  suspendOnWaiting: true
127
128
  });
128
129
  })).pipe(Atom.setIdleTTL(0));
129
- const fieldRefs = Object.fromEntries(Object.keys(fields).map(key => [key, makeFieldRef(key)]));
130
+ const fieldRefs = Object.fromEntries(Object.keys(fields).map(key => [key, Form.makeFieldRef(key)]));
130
131
  const operations = {
131
132
  createInitialState: defaultValues => ({
132
133
  values: defaultValues,
133
134
  initialValues: defaultValues,
134
- touched: createTouchedRecord(fields, false),
135
+ touched: Field.createTouchedRecord(fields, false),
135
136
  submitCount: 0,
136
137
  dirtyFields: new Set()
137
138
  }),
138
139
  createResetState: state => ({
139
140
  values: state.initialValues,
140
141
  initialValues: state.initialValues,
141
- touched: createTouchedRecord(fields, false),
142
+ touched: Field.createTouchedRecord(fields, false),
142
143
  submitCount: 0,
143
144
  dirtyFields: new Set()
144
145
  }),
145
146
  createSubmitState: state => ({
146
147
  ...state,
147
- touched: createTouchedRecord(fields, true),
148
+ touched: Field.createTouchedRecord(fields, true),
148
149
  submitCount: state.submitCount + 1
149
150
  }),
150
151
  setFieldValue: (state, fieldPath, value) => {
@@ -169,7 +170,7 @@ export const make = config => {
169
170
  touched: setNestedValue(state.touched, fieldPath, touched)
170
171
  }),
171
172
  appendArrayItem: (state, arrayPath, itemSchema, value) => {
172
- const newItem = value ?? getDefaultFromSchema(itemSchema);
173
+ const newItem = value ?? Field.getDefaultFromSchema(itemSchema);
173
174
  const currentItems = getNestedValue(state.values, arrayPath) ?? [];
174
175
  const newItems = [...currentItems, newItem];
175
176
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"FormAtoms.js","names":["Atom","Effect","Equal","pipe","Option","Schema","Utils","buildSchema","createTouchedRecord","getDefaultFromSchema","makeFieldRef","recalculateDirtyFieldsForArray","recalculateDirtySubtree","getNestedValue","setNestedValue","createWeakRegistry","make","config","formBuilder","runtime","fields","combinedSchema","stateAtom","none","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","get","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","onSubmitAtom","updateDirtyFields","state","fieldPath","newValue","initialValue","initialValues","isEqual","structuralRegion","equals","newDirtyFields","Set","add","delete","validationAtomsRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","schema","existing","validationAtom","fn","value","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","values","ctx","currentState","some","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","Object","fromEntries","keys","map","key","operations","createInitialState","defaultValues","createResetState","createSubmitState","setFieldValue","newValues","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormAtoms.js","names":["Atom","Effect","Equal","pipe","Option","Schema","Utils","Field","Form","recalculateDirtyFieldsForArray","recalculateDirtySubtree","getNestedValue","setNestedValue","createWeakRegistry","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","get","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","onSubmitAtom","updateDirtyFields","state","fieldPath","newValue","initialValue","initialValues","isEqual","structuralRegion","equals","newDirtyFields","Set","add","delete","validationAtomsRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","schema","existing","validationAtom","fn","value","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","values","ctx","currentState","some","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","Object","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newValues","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Field definitions for type-safe forms.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ export * as Field from "./Field.js";
1
7
  /**
2
8
  * @since 1.0.0
3
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Form","FormAtoms","Mode","Validation"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,IAAI,MAAM,WAAW;AAEjC;;;;;;;;AAQA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;;;AAKA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;;;AAKA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Field","Form","FormAtoms","Mode","Validation"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,OAAO,KAAKA,KAAK,MAAM,YAAY;AAEnC;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;;;;;;AAQA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;;;AAKA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;;;AAKA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucas-barake/effect-form",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Type-safe form builder powered by Effect Schema",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,6 +24,11 @@
24
24
  "import": "./dist/esm/index.js",
25
25
  "default": "./dist/cjs/index.js"
26
26
  },
27
+ "./Field": {
28
+ "types": "./dist/dts/Field.d.ts",
29
+ "import": "./dist/esm/Field.js",
30
+ "default": "./dist/cjs/Field.js"
31
+ },
27
32
  "./Form": {
28
33
  "types": "./dist/dts/Form.d.ts",
29
34
  "import": "./dist/esm/Form.js",
@@ -47,6 +52,9 @@
47
52
  },
48
53
  "typesVersions": {
49
54
  "*": {
55
+ "Field": [
56
+ "./dist/dts/Field.d.ts"
57
+ ],
50
58
  "Form": [
51
59
  "./dist/dts/Form.d.ts"
52
60
  ],
package/src/Field.ts ADDED
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Field definitions for type-safe forms.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import * as Schema from "effect/Schema"
7
+
8
+ /**
9
+ * Unique identifier for Field instances.
10
+ *
11
+ * @since 1.0.0
12
+ * @category Symbols
13
+ */
14
+ export const TypeId: unique symbol = Symbol.for("@lucas-barake/effect-form/Field")
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category Symbols
19
+ */
20
+ export type TypeId = typeof TypeId
21
+
22
+ /**
23
+ * A scalar field definition containing the key and schema.
24
+ *
25
+ * @since 1.0.0
26
+ * @category Models
27
+ */
28
+ export interface FieldDef<K extends string, S extends Schema.Schema.Any> {
29
+ readonly _tag: "field"
30
+ readonly key: K
31
+ readonly schema: S
32
+ }
33
+
34
+ /**
35
+ * An array field definition containing a schema for items.
36
+ *
37
+ * @since 1.0.0
38
+ * @category Models
39
+ */
40
+ export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any> {
41
+ readonly _tag: "array"
42
+ readonly key: K
43
+ readonly itemSchema: S
44
+ }
45
+
46
+ /**
47
+ * Union of all field definition types.
48
+ *
49
+ * @since 1.0.0
50
+ * @category Models
51
+ */
52
+ export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>
53
+
54
+ /**
55
+ * A record of field definitions.
56
+ *
57
+ * @since 1.0.0
58
+ * @category Models
59
+ */
60
+ export type FieldsRecord = Record<string, AnyFieldDef>
61
+
62
+ /**
63
+ * Checks if a field definition is an array field.
64
+ *
65
+ * @since 1.0.0
66
+ * @category Guards
67
+ */
68
+ export const isArrayFieldDef = (def: AnyFieldDef): def is ArrayFieldDef<string, Schema.Schema.Any> =>
69
+ def._tag === "array"
70
+
71
+ /**
72
+ * Checks if a field definition is a scalar field.
73
+ *
74
+ * @since 1.0.0
75
+ * @category Guards
76
+ */
77
+ export const isFieldDef = (def: AnyFieldDef): def is FieldDef<string, Schema.Schema.Any> => def._tag === "field"
78
+
79
+ /**
80
+ * Creates a scalar field definition.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * import * as Field from "@lucas-barake/effect-form/Field"
85
+ * import * as Schema from "effect/Schema"
86
+ *
87
+ * const NameField = Field.makeField("name", Schema.String)
88
+ * ```
89
+ *
90
+ * @since 1.0.0
91
+ * @category Constructors
92
+ */
93
+ export const makeField = <K extends string, S extends Schema.Schema.Any>(
94
+ key: K,
95
+ schema: S,
96
+ ): FieldDef<K, S> => ({
97
+ _tag: "field",
98
+ key,
99
+ schema,
100
+ })
101
+
102
+ /**
103
+ * Creates an array field definition.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * import * as Field from "@lucas-barake/effect-form/Field"
108
+ * import * as Schema from "effect/Schema"
109
+ *
110
+ * // Array of primitives
111
+ * const TagsField = Field.makeArrayField("tags", Schema.String)
112
+ *
113
+ * // Array of objects
114
+ * const ItemsField = Field.makeArrayField("items", Schema.Struct({
115
+ * name: Schema.String,
116
+ * quantity: Schema.Number
117
+ * }))
118
+ * ```
119
+ *
120
+ * @since 1.0.0
121
+ * @category Constructors
122
+ */
123
+ export const makeArrayField = <K extends string, S extends Schema.Schema.Any>(
124
+ key: K,
125
+ itemSchema: S,
126
+ ): ArrayFieldDef<K, S> => ({
127
+ _tag: "array",
128
+ key,
129
+ itemSchema,
130
+ })
131
+
132
+ /**
133
+ * Extracts the encoded (input) type from a fields record.
134
+ *
135
+ * @since 1.0.0
136
+ * @category Type Helpers
137
+ */
138
+ export type EncodedFromFields<T extends FieldsRecord> = {
139
+ readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Encoded<S>
140
+ : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Encoded<S>>
141
+ : never
142
+ }
143
+
144
+ /**
145
+ * Extracts the decoded (output) type from a fields record.
146
+ *
147
+ * @since 1.0.0
148
+ * @category Type Helpers
149
+ */
150
+ export type DecodedFromFields<T extends FieldsRecord> = {
151
+ readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Type<S>
152
+ : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Type<S>>
153
+ : never
154
+ }
155
+
156
+ /**
157
+ * Gets a default encoded value from a schema.
158
+ *
159
+ * @since 1.0.0
160
+ * @category Helpers
161
+ */
162
+ export const getDefaultFromSchema = (schema: Schema.Schema.Any): unknown => {
163
+ const ast = schema.ast
164
+ switch (ast._tag) {
165
+ case "StringKeyword":
166
+ case "TemplateLiteral":
167
+ return ""
168
+ case "NumberKeyword":
169
+ return 0
170
+ case "BooleanKeyword":
171
+ return false
172
+ case "TypeLiteral": {
173
+ const result: Record<string, unknown> = {}
174
+ for (const prop of ast.propertySignatures) {
175
+ result[prop.name as string] = getDefaultFromSchema(Schema.make(prop.type))
176
+ }
177
+ return result
178
+ }
179
+ case "Transformation":
180
+ return getDefaultFromSchema(Schema.make(ast.from))
181
+ case "Refinement":
182
+ return getDefaultFromSchema(Schema.make(ast.from))
183
+ case "Suspend":
184
+ return getDefaultFromSchema(Schema.make(ast.f()))
185
+ default:
186
+ return ""
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Gets default encoded values for a fields record.
192
+ *
193
+ * @since 1.0.0
194
+ * @category Helpers
195
+ */
196
+ export const getDefaultEncodedValues = (fields: FieldsRecord): Record<string, unknown> => {
197
+ const result: Record<string, unknown> = {}
198
+ for (const [key, def] of Object.entries(fields)) {
199
+ if (isArrayFieldDef(def)) {
200
+ result[key] = []
201
+ } else {
202
+ result[key] = ""
203
+ }
204
+ }
205
+ return result
206
+ }
207
+
208
+ /**
209
+ * Creates a touched record with all fields set to the given value.
210
+ *
211
+ * @since 1.0.0
212
+ * @category Helpers
213
+ */
214
+ export const createTouchedRecord = (fields: FieldsRecord, value: boolean): Record<string, boolean> => {
215
+ const result: Record<string, boolean> = {}
216
+ for (const key of Object.keys(fields)) {
217
+ result[key] = value
218
+ }
219
+ return result
220
+ }