@lucas-barake/effect-form 0.1.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/Form/package.json +6 -0
- package/FormAtoms/package.json +6 -0
- package/LICENSE +21 -0
- package/Mode/package.json +6 -0
- package/README.md +5 -0
- package/Validation/package.json +6 -0
- package/dist/cjs/Form.js +299 -0
- package/dist/cjs/Form.js.map +1 -0
- package/dist/cjs/FormAtoms.js +266 -0
- package/dist/cjs/FormAtoms.js.map +1 -0
- package/dist/cjs/Mode.js +64 -0
- package/dist/cjs/Mode.js.map +1 -0
- package/dist/cjs/Validation.js +69 -0
- package/dist/cjs/Validation.js.map +1 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/dirty.js +101 -0
- package/dist/cjs/internal/dirty.js.map +1 -0
- package/dist/cjs/internal/path.js +96 -0
- package/dist/cjs/internal/path.js.map +1 -0
- package/dist/cjs/internal/weak-registry.js +52 -0
- package/dist/cjs/internal/weak-registry.js.map +1 -0
- package/dist/dts/Form.d.ts +317 -0
- package/dist/dts/Form.d.ts.map +1 -0
- package/dist/dts/FormAtoms.d.ts +145 -0
- package/dist/dts/FormAtoms.d.ts.map +1 -0
- package/dist/dts/Mode.d.ts +55 -0
- package/dist/dts/Mode.d.ts.map +1 -0
- package/dist/dts/Validation.d.ts +23 -0
- package/dist/dts/Validation.d.ts.map +1 -0
- package/dist/dts/index.d.ts +26 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/dirty.d.ts +13 -0
- package/dist/dts/internal/dirty.d.ts.map +1 -0
- package/dist/dts/internal/path.d.ts +32 -0
- package/dist/dts/internal/path.d.ts.map +1 -0
- package/dist/dts/internal/weak-registry.d.ts +7 -0
- package/dist/dts/internal/weak-registry.d.ts.map +1 -0
- package/dist/esm/Form.js +263 -0
- package/dist/esm/Form.js.map +1 -0
- package/dist/esm/FormAtoms.js +238 -0
- package/dist/esm/FormAtoms.js.map +1 -0
- package/dist/esm/Mode.js +36 -0
- package/dist/esm/Mode.js.map +1 -0
- package/dist/esm/Validation.js +40 -0
- package/dist/esm/Validation.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/dirty.js +72 -0
- package/dist/esm/internal/dirty.js.map +1 -0
- package/dist/esm/internal/path.js +86 -0
- package/dist/esm/internal/path.js.map +1 -0
- package/dist/esm/internal/weak-registry.js +45 -0
- package/dist/esm/internal/weak-registry.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +64 -0
- package/src/Form.ts +522 -0
- package/src/FormAtoms.ts +485 -0
- package/src/Mode.ts +59 -0
- package/src/Validation.ts +43 -0
- package/src/index.ts +28 -0
- package/src/internal/dirty.ts +96 -0
- package/src/internal/path.ts +93 -0
- package/src/internal/weak-registry.ts +60 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Lucas Barake
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/dist/cjs/Form.js
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeFieldRef = exports.makeField = exports.makeArrayField = exports.isFormBuilder = exports.isFieldDef = exports.isArrayFieldDef = exports.getDefaultFromSchema = exports.getDefaultEncodedValues = exports.empty = exports.createTouchedRecord = exports.buildSchema = exports.TypeId = exports.FieldTypeId = void 0;
|
|
7
|
+
var Predicate = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Predicate"));
|
|
8
|
+
var Schema = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Schema"));
|
|
9
|
+
function _interopRequireWildcard(e, t) {
|
|
10
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
11
|
+
n = new WeakMap();
|
|
12
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
13
|
+
if (!t && e && e.__esModule) return e;
|
|
14
|
+
var o,
|
|
15
|
+
i,
|
|
16
|
+
f = {
|
|
17
|
+
__proto__: null,
|
|
18
|
+
default: e
|
|
19
|
+
};
|
|
20
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
21
|
+
if (o = t ? n : r) {
|
|
22
|
+
if (o.has(e)) return o.get(e);
|
|
23
|
+
o.set(e, f);
|
|
24
|
+
}
|
|
25
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
26
|
+
return f;
|
|
27
|
+
})(e, t);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Unique identifier for FormBuilder instances.
|
|
31
|
+
*
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category Symbols
|
|
34
|
+
*/
|
|
35
|
+
const TypeId = exports.TypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Form");
|
|
36
|
+
/**
|
|
37
|
+
* Unique identifier for Field references.
|
|
38
|
+
*
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category Symbols
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
const FieldTypeId = exports.FieldTypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Field");
|
|
44
|
+
/**
|
|
45
|
+
* Creates a field reference for type-safe setValue operations.
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category Constructors
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
const makeFieldRef = key => ({
|
|
52
|
+
[FieldTypeId]: FieldTypeId,
|
|
53
|
+
_S: undefined,
|
|
54
|
+
key
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Creates a scalar field definition.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* const NameField = Form.makeField("name", Schema.String)
|
|
62
|
+
* const form = Form.empty.addField(NameField)
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @category Constructors
|
|
67
|
+
*/
|
|
68
|
+
exports.makeFieldRef = makeFieldRef;
|
|
69
|
+
const makeField = (key, schema) => ({
|
|
70
|
+
_tag: "field",
|
|
71
|
+
key,
|
|
72
|
+
schema
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Creates an array field definition.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* // Array of primitives
|
|
80
|
+
* const TagsField = Form.makeArrayField("tags", Schema.String)
|
|
81
|
+
*
|
|
82
|
+
* // Array of objects
|
|
83
|
+
* const ItemsField = Form.makeArrayField("items", Schema.Struct({
|
|
84
|
+
* name: Schema.String,
|
|
85
|
+
* quantity: Schema.Number
|
|
86
|
+
* }))
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @since 1.0.0
|
|
90
|
+
* @category Constructors
|
|
91
|
+
*/
|
|
92
|
+
exports.makeField = makeField;
|
|
93
|
+
const makeArrayField = (key, itemSchema) => ({
|
|
94
|
+
_tag: "array",
|
|
95
|
+
key,
|
|
96
|
+
itemSchema
|
|
97
|
+
});
|
|
98
|
+
exports.makeArrayField = makeArrayField;
|
|
99
|
+
const FormBuilderProto = {
|
|
100
|
+
[TypeId]: TypeId,
|
|
101
|
+
addField(field) {
|
|
102
|
+
const newSelf = Object.create(FormBuilderProto);
|
|
103
|
+
newSelf.fields = {
|
|
104
|
+
...this.fields,
|
|
105
|
+
[field.key]: field
|
|
106
|
+
};
|
|
107
|
+
newSelf.refinements = this.refinements;
|
|
108
|
+
return newSelf;
|
|
109
|
+
},
|
|
110
|
+
merge(other) {
|
|
111
|
+
const newSelf = Object.create(FormBuilderProto);
|
|
112
|
+
newSelf.fields = {
|
|
113
|
+
...this.fields,
|
|
114
|
+
...other.fields
|
|
115
|
+
};
|
|
116
|
+
newSelf.refinements = [...this.refinements, ...other.refinements];
|
|
117
|
+
return newSelf;
|
|
118
|
+
},
|
|
119
|
+
refine(predicate) {
|
|
120
|
+
const newSelf = Object.create(FormBuilderProto);
|
|
121
|
+
newSelf.fields = this.fields;
|
|
122
|
+
newSelf.refinements = [...this.refinements, {
|
|
123
|
+
_tag: "sync",
|
|
124
|
+
fn: values => predicate(values)
|
|
125
|
+
}];
|
|
126
|
+
return newSelf;
|
|
127
|
+
},
|
|
128
|
+
refineEffect(predicate) {
|
|
129
|
+
const newSelf = Object.create(FormBuilderProto);
|
|
130
|
+
newSelf.fields = this.fields;
|
|
131
|
+
newSelf.refinements = [...this.refinements, {
|
|
132
|
+
_tag: "async",
|
|
133
|
+
fn: values => predicate(values)
|
|
134
|
+
}];
|
|
135
|
+
return newSelf;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Checks if a value is a `FormBuilder`.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import * as Form from "@lucas-barake/effect-form"
|
|
144
|
+
*
|
|
145
|
+
* const builder = Form.empty
|
|
146
|
+
*
|
|
147
|
+
* console.log(Form.isFormBuilder(builder))
|
|
148
|
+
* // Output: true
|
|
149
|
+
*
|
|
150
|
+
* console.log(Form.isFormBuilder({}))
|
|
151
|
+
* // Output: false
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
* @category Guards
|
|
156
|
+
*/
|
|
157
|
+
const isFormBuilder = u => Predicate.hasProperty(u, TypeId);
|
|
158
|
+
/**
|
|
159
|
+
* Checks if a field definition is an array field.
|
|
160
|
+
*
|
|
161
|
+
* @since 1.0.0
|
|
162
|
+
* @category Guards
|
|
163
|
+
*/
|
|
164
|
+
exports.isFormBuilder = isFormBuilder;
|
|
165
|
+
const isArrayFieldDef = def => def._tag === "array";
|
|
166
|
+
/**
|
|
167
|
+
* Checks if a field definition is a simple field.
|
|
168
|
+
*
|
|
169
|
+
* @since 1.0.0
|
|
170
|
+
* @category Guards
|
|
171
|
+
*/
|
|
172
|
+
exports.isArrayFieldDef = isArrayFieldDef;
|
|
173
|
+
const isFieldDef = def => def._tag === "field";
|
|
174
|
+
/**
|
|
175
|
+
* Gets a default encoded value from a schema.
|
|
176
|
+
*
|
|
177
|
+
* @since 1.0.0
|
|
178
|
+
* @category Helpers
|
|
179
|
+
*/
|
|
180
|
+
exports.isFieldDef = isFieldDef;
|
|
181
|
+
const getDefaultFromSchema = schema => {
|
|
182
|
+
const ast = schema.ast;
|
|
183
|
+
switch (ast._tag) {
|
|
184
|
+
case "StringKeyword":
|
|
185
|
+
case "TemplateLiteral":
|
|
186
|
+
return "";
|
|
187
|
+
case "NumberKeyword":
|
|
188
|
+
return 0;
|
|
189
|
+
case "BooleanKeyword":
|
|
190
|
+
return false;
|
|
191
|
+
case "TypeLiteral":
|
|
192
|
+
{
|
|
193
|
+
const result = {};
|
|
194
|
+
for (const prop of ast.propertySignatures) {
|
|
195
|
+
result[prop.name] = getDefaultFromSchema(Schema.make(prop.type));
|
|
196
|
+
}
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
case "Transformation":
|
|
200
|
+
return getDefaultFromSchema(Schema.make(ast.from));
|
|
201
|
+
case "Refinement":
|
|
202
|
+
return getDefaultFromSchema(Schema.make(ast.from));
|
|
203
|
+
case "Suspend":
|
|
204
|
+
return getDefaultFromSchema(Schema.make(ast.f()));
|
|
205
|
+
default:
|
|
206
|
+
return "";
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* An empty `FormBuilder` to start building a form.
|
|
211
|
+
*
|
|
212
|
+
* **Details**
|
|
213
|
+
*
|
|
214
|
+
* This is the entry point for building a form. Use method chaining to add
|
|
215
|
+
* fields and then build the form with a React adapter.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* import * as Form from "@lucas-barake/effect-form"
|
|
220
|
+
* import * as Schema from "effect/Schema"
|
|
221
|
+
*
|
|
222
|
+
* const EmailField = Form.makeField("email", Schema.String)
|
|
223
|
+
* const PasswordField = Form.makeField("password", Schema.String)
|
|
224
|
+
*
|
|
225
|
+
* const loginForm = Form.empty
|
|
226
|
+
* .addField(EmailField)
|
|
227
|
+
* .addField(PasswordField)
|
|
228
|
+
* ```
|
|
229
|
+
*
|
|
230
|
+
* @since 1.0.0
|
|
231
|
+
* @category Constructors
|
|
232
|
+
*/
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
234
|
+
exports.getDefaultFromSchema = getDefaultFromSchema;
|
|
235
|
+
const empty = exports.empty = /*#__PURE__*/(() => {
|
|
236
|
+
const self = /*#__PURE__*/Object.create(FormBuilderProto);
|
|
237
|
+
self.fields = {};
|
|
238
|
+
self.refinements = [];
|
|
239
|
+
return self;
|
|
240
|
+
})();
|
|
241
|
+
/**
|
|
242
|
+
* Builds a combined Schema from a FormBuilder's field definitions.
|
|
243
|
+
*
|
|
244
|
+
* @since 1.0.0
|
|
245
|
+
* @category Schema
|
|
246
|
+
*/
|
|
247
|
+
const buildSchema = self => {
|
|
248
|
+
const schemaFields = {};
|
|
249
|
+
for (const [key, def] of Object.entries(self.fields)) {
|
|
250
|
+
if (isArrayFieldDef(def)) {
|
|
251
|
+
schemaFields[key] = Schema.Array(def.itemSchema);
|
|
252
|
+
} else if (isFieldDef(def)) {
|
|
253
|
+
schemaFields[key] = def.schema;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
let schema = Schema.Struct(schemaFields);
|
|
257
|
+
for (const refinement of self.refinements) {
|
|
258
|
+
if (refinement._tag === "sync") {
|
|
259
|
+
schema = schema.pipe(Schema.filter(refinement.fn));
|
|
260
|
+
} else {
|
|
261
|
+
schema = schema.pipe(Schema.filterEffect(refinement.fn));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return schema;
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Gets default encoded values for a fields record.
|
|
268
|
+
*
|
|
269
|
+
* @since 1.0.0
|
|
270
|
+
* @category Helpers
|
|
271
|
+
*/
|
|
272
|
+
exports.buildSchema = buildSchema;
|
|
273
|
+
const getDefaultEncodedValues = fields => {
|
|
274
|
+
const result = {};
|
|
275
|
+
for (const [key, def] of Object.entries(fields)) {
|
|
276
|
+
if (isArrayFieldDef(def)) {
|
|
277
|
+
result[key] = [];
|
|
278
|
+
} else {
|
|
279
|
+
result[key] = "";
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return result;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Creates a touched record with all fields set to the given value.
|
|
286
|
+
*
|
|
287
|
+
* @since 1.0.0
|
|
288
|
+
* @category Helpers
|
|
289
|
+
*/
|
|
290
|
+
exports.getDefaultEncodedValues = getDefaultEncodedValues;
|
|
291
|
+
const createTouchedRecord = (fields, value) => {
|
|
292
|
+
const result = {};
|
|
293
|
+
for (const key of Object.keys(fields)) {
|
|
294
|
+
result[key] = value;
|
|
295
|
+
}
|
|
296
|
+
return result;
|
|
297
|
+
};
|
|
298
|
+
exports.createTouchedRecord = createTouchedRecord;
|
|
299
|
+
//# sourceMappingURL=Form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.js","names":["Predicate","_interopRequireWildcard","require","Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TypeId","exports","Symbol","for","FieldTypeId","makeFieldRef","key","_S","undefined","makeField","schema","_tag","makeArrayField","itemSchema","FormBuilderProto","addField","field","newSelf","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","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":[]}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.make = void 0;
|
|
7
|
+
var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
|
|
8
|
+
var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
|
|
9
|
+
var Equal = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Equal"));
|
|
10
|
+
var _Function = /*#__PURE__*/require("effect/Function");
|
|
11
|
+
var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
|
|
12
|
+
var Schema = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Schema"));
|
|
13
|
+
var Utils = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Utils"));
|
|
14
|
+
var _Form = /*#__PURE__*/require("./Form.js");
|
|
15
|
+
var _dirty = /*#__PURE__*/require("./internal/dirty.js");
|
|
16
|
+
var _path = /*#__PURE__*/require("./internal/path.js");
|
|
17
|
+
var _weakRegistry = /*#__PURE__*/require("./internal/weak-registry.js");
|
|
18
|
+
function _interopRequireWildcard(e, t) {
|
|
19
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
20
|
+
n = new WeakMap();
|
|
21
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
22
|
+
if (!t && e && e.__esModule) return e;
|
|
23
|
+
var o,
|
|
24
|
+
i,
|
|
25
|
+
f = {
|
|
26
|
+
__proto__: null,
|
|
27
|
+
default: e
|
|
28
|
+
};
|
|
29
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
30
|
+
if (o = t ? n : r) {
|
|
31
|
+
if (o.has(e)) return o.get(e);
|
|
32
|
+
o.set(e, f);
|
|
33
|
+
}
|
|
34
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
35
|
+
return f;
|
|
36
|
+
})(e, t);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Atom infrastructure for form state management.
|
|
40
|
+
*
|
|
41
|
+
* This module provides the core atom infrastructure that framework adapters
|
|
42
|
+
* (React, Vue, Svelte, Solid) can use to build reactive form components.
|
|
43
|
+
*
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Creates the complete form atoms infrastructure.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* import * as FormAtoms from "@lucas-barake/effect-form/FormAtoms"
|
|
53
|
+
* import * as Form from "@lucas-barake/effect-form"
|
|
54
|
+
* import * as Atom from "@effect-atom/atom/Atom"
|
|
55
|
+
* import * as Layer from "effect/Layer"
|
|
56
|
+
*
|
|
57
|
+
* const runtime = Atom.runtime(Layer.empty)
|
|
58
|
+
*
|
|
59
|
+
* const loginForm = Form.empty
|
|
60
|
+
* .addField(Form.makeField("email", Schema.String))
|
|
61
|
+
* .addField(Form.makeField("password", Schema.String))
|
|
62
|
+
*
|
|
63
|
+
* const atoms = FormAtoms.make({
|
|
64
|
+
* runtime,
|
|
65
|
+
* formBuilder: loginForm,
|
|
66
|
+
* parsedMode: { validation: "onChange", debounce: 300, autoSubmit: false }
|
|
67
|
+
* })
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
* @category Constructors
|
|
72
|
+
*/
|
|
73
|
+
const make = config => {
|
|
74
|
+
const {
|
|
75
|
+
formBuilder,
|
|
76
|
+
runtime
|
|
77
|
+
} = config;
|
|
78
|
+
const {
|
|
79
|
+
fields
|
|
80
|
+
} = formBuilder;
|
|
81
|
+
const combinedSchema = (0, _Form.buildSchema)(formBuilder);
|
|
82
|
+
const stateAtom = Atom.make(Option.none()).pipe(Atom.setIdleTTL(0));
|
|
83
|
+
const crossFieldErrorsAtom = Atom.make(new Map()).pipe(Atom.setIdleTTL(0));
|
|
84
|
+
const dirtyFieldsAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields).pipe(Atom.setIdleTTL(0));
|
|
85
|
+
const isDirtyAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields.size > 0).pipe(Atom.setIdleTTL(0));
|
|
86
|
+
const submitCountAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).submitCount).pipe(Atom.setIdleTTL(0));
|
|
87
|
+
const onSubmitAtom = Atom.make(null).pipe(Atom.setIdleTTL(0));
|
|
88
|
+
const updateDirtyFields = (state, fieldPath, newValue) => {
|
|
89
|
+
const initialValue = (0, _path.getNestedValue)(state.initialValues, fieldPath);
|
|
90
|
+
const isEqual = Utils.structuralRegion(() => Equal.equals(newValue, initialValue));
|
|
91
|
+
const newDirtyFields = new Set(state.dirtyFields);
|
|
92
|
+
if (!isEqual) {
|
|
93
|
+
newDirtyFields.add(fieldPath);
|
|
94
|
+
} else {
|
|
95
|
+
newDirtyFields.delete(fieldPath);
|
|
96
|
+
}
|
|
97
|
+
return newDirtyFields;
|
|
98
|
+
};
|
|
99
|
+
const validationAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
|
|
100
|
+
const fieldAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
|
|
101
|
+
const getOrCreateValidationAtom = (fieldPath, schema) => {
|
|
102
|
+
const existing = validationAtomsRegistry.get(fieldPath);
|
|
103
|
+
if (existing) return existing;
|
|
104
|
+
const validationAtom = runtime.fn()(value => (0, _Function.pipe)(Schema.decodeUnknown(schema)(value), Effect.asVoid)).pipe(Atom.setIdleTTL(0));
|
|
105
|
+
validationAtomsRegistry.set(fieldPath, validationAtom);
|
|
106
|
+
return validationAtom;
|
|
107
|
+
};
|
|
108
|
+
const getOrCreateFieldAtoms = fieldPath => {
|
|
109
|
+
const existing = fieldAtomsRegistry.get(fieldPath);
|
|
110
|
+
if (existing) return existing;
|
|
111
|
+
const valueAtom = Atom.writable(get => (0, _path.getNestedValue)(Option.getOrThrow(get(stateAtom)).values, fieldPath), (ctx, value) => {
|
|
112
|
+
const currentState = Option.getOrThrow(ctx.get(stateAtom));
|
|
113
|
+
ctx.set(stateAtom, Option.some({
|
|
114
|
+
...currentState,
|
|
115
|
+
values: (0, _path.setNestedValue)(currentState.values, fieldPath, value),
|
|
116
|
+
dirtyFields: updateDirtyFields(currentState, fieldPath, value)
|
|
117
|
+
}));
|
|
118
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
119
|
+
const initialValueAtom = Atom.readable(get => (0, _path.getNestedValue)(Option.getOrThrow(get(stateAtom)).initialValues, fieldPath)).pipe(Atom.setIdleTTL(0));
|
|
120
|
+
const touchedAtom = Atom.writable(get => (0, _path.getNestedValue)(Option.getOrThrow(get(stateAtom)).touched, fieldPath) ?? false, (ctx, value) => {
|
|
121
|
+
const currentState = Option.getOrThrow(ctx.get(stateAtom));
|
|
122
|
+
ctx.set(stateAtom, Option.some({
|
|
123
|
+
...currentState,
|
|
124
|
+
touched: (0, _path.setNestedValue)(currentState.touched, fieldPath, value)
|
|
125
|
+
}));
|
|
126
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
127
|
+
const crossFieldErrorAtom = Atom.readable(get => {
|
|
128
|
+
const errors = get(crossFieldErrorsAtom);
|
|
129
|
+
const error = errors.get(fieldPath);
|
|
130
|
+
return error !== undefined ? Option.some(error) : Option.none();
|
|
131
|
+
}).pipe(Atom.setIdleTTL(0));
|
|
132
|
+
const atoms = {
|
|
133
|
+
valueAtom,
|
|
134
|
+
initialValueAtom,
|
|
135
|
+
touchedAtom,
|
|
136
|
+
crossFieldErrorAtom
|
|
137
|
+
};
|
|
138
|
+
fieldAtomsRegistry.set(fieldPath, atoms);
|
|
139
|
+
return atoms;
|
|
140
|
+
};
|
|
141
|
+
const resetValidationAtoms = registry => {
|
|
142
|
+
for (const validationAtom of validationAtomsRegistry.values()) {
|
|
143
|
+
registry.set(validationAtom, Atom.Reset);
|
|
144
|
+
}
|
|
145
|
+
validationAtomsRegistry.clear();
|
|
146
|
+
fieldAtomsRegistry.clear();
|
|
147
|
+
};
|
|
148
|
+
const decodeAndSubmit = runtime.fn()((values, get) => Effect.gen(function* () {
|
|
149
|
+
const decoded = yield* Schema.decodeUnknown(combinedSchema)(values);
|
|
150
|
+
const onSubmit = get(onSubmitAtom);
|
|
151
|
+
get.set(onSubmit, decoded);
|
|
152
|
+
return yield* get.result(onSubmit, {
|
|
153
|
+
suspendOnWaiting: true
|
|
154
|
+
});
|
|
155
|
+
})).pipe(Atom.setIdleTTL(0));
|
|
156
|
+
const fieldRefs = Object.fromEntries(Object.keys(fields).map(key => [key, (0, _Form.makeFieldRef)(key)]));
|
|
157
|
+
const operations = {
|
|
158
|
+
createInitialState: defaultValues => ({
|
|
159
|
+
values: defaultValues,
|
|
160
|
+
initialValues: defaultValues,
|
|
161
|
+
touched: (0, _Form.createTouchedRecord)(fields, false),
|
|
162
|
+
submitCount: 0,
|
|
163
|
+
dirtyFields: new Set()
|
|
164
|
+
}),
|
|
165
|
+
createResetState: state => ({
|
|
166
|
+
values: state.initialValues,
|
|
167
|
+
initialValues: state.initialValues,
|
|
168
|
+
touched: (0, _Form.createTouchedRecord)(fields, false),
|
|
169
|
+
submitCount: 0,
|
|
170
|
+
dirtyFields: new Set()
|
|
171
|
+
}),
|
|
172
|
+
createSubmitState: state => ({
|
|
173
|
+
...state,
|
|
174
|
+
touched: (0, _Form.createTouchedRecord)(fields, true),
|
|
175
|
+
submitCount: state.submitCount + 1
|
|
176
|
+
}),
|
|
177
|
+
setFieldValue: (state, fieldPath, value) => {
|
|
178
|
+
const newValues = (0, _path.setNestedValue)(state.values, fieldPath, value);
|
|
179
|
+
const newDirtyFields = (0, _dirty.recalculateDirtySubtree)(state.dirtyFields, state.initialValues, newValues, fieldPath);
|
|
180
|
+
return {
|
|
181
|
+
...state,
|
|
182
|
+
values: newValues,
|
|
183
|
+
dirtyFields: newDirtyFields
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
setFormValues: (state, values) => {
|
|
187
|
+
const newDirtyFields = (0, _dirty.recalculateDirtySubtree)(state.dirtyFields, state.initialValues, values, "");
|
|
188
|
+
return {
|
|
189
|
+
...state,
|
|
190
|
+
values,
|
|
191
|
+
dirtyFields: newDirtyFields
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
setFieldTouched: (state, fieldPath, touched) => ({
|
|
195
|
+
...state,
|
|
196
|
+
touched: (0, _path.setNestedValue)(state.touched, fieldPath, touched)
|
|
197
|
+
}),
|
|
198
|
+
appendArrayItem: (state, arrayPath, itemSchema, value) => {
|
|
199
|
+
const newItem = value ?? (0, _Form.getDefaultFromSchema)(itemSchema);
|
|
200
|
+
const currentItems = (0, _path.getNestedValue)(state.values, arrayPath) ?? [];
|
|
201
|
+
const newItems = [...currentItems, newItem];
|
|
202
|
+
return {
|
|
203
|
+
...state,
|
|
204
|
+
values: (0, _path.setNestedValue)(state.values, arrayPath, newItems),
|
|
205
|
+
dirtyFields: (0, _dirty.recalculateDirtyFieldsForArray)(state.dirtyFields, state.initialValues, arrayPath, newItems)
|
|
206
|
+
};
|
|
207
|
+
},
|
|
208
|
+
removeArrayItem: (state, arrayPath, index) => {
|
|
209
|
+
const currentItems = (0, _path.getNestedValue)(state.values, arrayPath) ?? [];
|
|
210
|
+
const newItems = currentItems.filter((_, i) => i !== index);
|
|
211
|
+
return {
|
|
212
|
+
...state,
|
|
213
|
+
values: (0, _path.setNestedValue)(state.values, arrayPath, newItems),
|
|
214
|
+
dirtyFields: (0, _dirty.recalculateDirtyFieldsForArray)(state.dirtyFields, state.initialValues, arrayPath, newItems)
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
swapArrayItems: (state, arrayPath, indexA, indexB) => {
|
|
218
|
+
const currentItems = (0, _path.getNestedValue)(state.values, arrayPath) ?? [];
|
|
219
|
+
if (indexA < 0 || indexA >= currentItems.length || indexB < 0 || indexB >= currentItems.length || indexA === indexB) {
|
|
220
|
+
return state;
|
|
221
|
+
}
|
|
222
|
+
const newItems = [...currentItems];
|
|
223
|
+
const temp = newItems[indexA];
|
|
224
|
+
newItems[indexA] = newItems[indexB];
|
|
225
|
+
newItems[indexB] = temp;
|
|
226
|
+
return {
|
|
227
|
+
...state,
|
|
228
|
+
values: (0, _path.setNestedValue)(state.values, arrayPath, newItems),
|
|
229
|
+
dirtyFields: (0, _dirty.recalculateDirtyFieldsForArray)(state.dirtyFields, state.initialValues, arrayPath, newItems)
|
|
230
|
+
};
|
|
231
|
+
},
|
|
232
|
+
moveArrayItem: (state, arrayPath, fromIndex, toIndex) => {
|
|
233
|
+
const currentItems = (0, _path.getNestedValue)(state.values, arrayPath) ?? [];
|
|
234
|
+
if (fromIndex < 0 || fromIndex >= currentItems.length || toIndex < 0 || toIndex > currentItems.length || fromIndex === toIndex) {
|
|
235
|
+
return state;
|
|
236
|
+
}
|
|
237
|
+
const newItems = [...currentItems];
|
|
238
|
+
const [item] = newItems.splice(fromIndex, 1);
|
|
239
|
+
newItems.splice(toIndex, 0, item);
|
|
240
|
+
return {
|
|
241
|
+
...state,
|
|
242
|
+
values: (0, _path.setNestedValue)(state.values, arrayPath, newItems),
|
|
243
|
+
dirtyFields: (0, _dirty.recalculateDirtyFieldsForArray)(state.dirtyFields, state.initialValues, arrayPath, newItems)
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
return {
|
|
248
|
+
stateAtom,
|
|
249
|
+
crossFieldErrorsAtom,
|
|
250
|
+
dirtyFieldsAtom,
|
|
251
|
+
isDirtyAtom,
|
|
252
|
+
submitCountAtom,
|
|
253
|
+
onSubmitAtom,
|
|
254
|
+
decodeAndSubmit,
|
|
255
|
+
combinedSchema,
|
|
256
|
+
fieldRefs,
|
|
257
|
+
validationAtomsRegistry,
|
|
258
|
+
fieldAtomsRegistry,
|
|
259
|
+
getOrCreateValidationAtom,
|
|
260
|
+
getOrCreateFieldAtoms,
|
|
261
|
+
resetValidationAtoms,
|
|
262
|
+
operations
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
exports.make = make;
|
|
266
|
+
//# sourceMappingURL=FormAtoms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormAtoms.js","names":["Atom","_interopRequireWildcard","require","Effect","Equal","_Function","Option","Schema","Utils","_Form","_dirty","_path","_weakRegistry","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","pipe","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","onSubmitAtom","updateDirtyFields","state","fieldPath","newValue","initialValue","getNestedValue","initialValues","isEqual","structuralRegion","equals","newDirtyFields","Set","add","delete","validationAtomsRegistry","createWeakRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","schema","existing","validationAtom","fn","value","decodeUnknown","asVoid","getOrCreateFieldAtoms","valueAtom","writable","values","ctx","currentState","some","setNestedValue","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newValues","recalculateDirtySubtree","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","recalculateDirtyFieldsForArray","removeArrayItem","index","filter","_","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","exports"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|