@vaadin/hilla-lit-form 24.4.0-alpha1
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/.lintstagedrc.js +6 -0
- package/Binder.d.ts +28 -0
- package/Binder.d.ts.map +1 -0
- package/Binder.js +29 -0
- package/Binder.js.map +7 -0
- package/BinderNode.d.ts +123 -0
- package/BinderNode.d.ts.map +1 -0
- package/BinderNode.js +414 -0
- package/BinderNode.js.map +7 -0
- package/BinderRoot.d.ts +98 -0
- package/BinderRoot.d.ts.map +1 -0
- package/BinderRoot.js +242 -0
- package/BinderRoot.js.map +7 -0
- package/Field.d.ts +125 -0
- package/Field.d.ts.map +1 -0
- package/Field.js +293 -0
- package/Field.js.map +7 -0
- package/LICENSE +201 -0
- package/Models.d.ts +92 -0
- package/Models.d.ts.map +1 -0
- package/Models.js +166 -0
- package/Models.js.map +7 -0
- package/README.md +26 -0
- package/Validation.d.ts +33 -0
- package/Validation.d.ts.map +1 -0
- package/Validation.js +86 -0
- package/Validation.js.map +7 -0
- package/Validators.d.ts +165 -0
- package/Validators.d.ts.map +1 -0
- package/Validators.js +342 -0
- package/Validators.js.map +7 -0
- package/Validity.d.ts +9 -0
- package/Validity.d.ts.map +1 -0
- package/Validity.js +19 -0
- package/Validity.js.map +7 -0
- package/index.d.ts +9 -0
- package/index.d.ts.map +1 -0
- package/index.js +18 -0
- package/index.js.map +7 -0
- package/package.json +93 -0
- package/types.d.js +1 -0
- package/types.d.js.map +7 -0
package/Validators.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import isAfter from "validator/es/lib/isAfter.js";
|
|
2
|
+
import isBefore from "validator/es/lib/isBefore.js";
|
|
3
|
+
import isBoolean from "validator/es/lib/isBoolean.js";
|
|
4
|
+
import isDecimal from "validator/es/lib/isDecimal.js";
|
|
5
|
+
import isEmail from "validator/es/lib/isEmail.js";
|
|
6
|
+
import isFloat from "validator/es/lib/isFloat.js";
|
|
7
|
+
import isLength from "validator/es/lib/isLength.js";
|
|
8
|
+
import isNumeric from "validator/es/lib/isNumeric.js";
|
|
9
|
+
import matches from "validator/es/lib/matches.js";
|
|
10
|
+
import toFloat from "validator/es/lib/toFloat.js";
|
|
11
|
+
class AbstractValidator {
|
|
12
|
+
message = "invalid";
|
|
13
|
+
impliesRequired = false;
|
|
14
|
+
constructor(attrs) {
|
|
15
|
+
if (attrs?.message) {
|
|
16
|
+
this.message = attrs.message;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class Required extends AbstractValidator {
|
|
21
|
+
impliesRequired = true;
|
|
22
|
+
validate(value) {
|
|
23
|
+
if (typeof value === "string" || Array.isArray(value)) {
|
|
24
|
+
return value.length > 0;
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === "number") {
|
|
27
|
+
return Number.isFinite(value);
|
|
28
|
+
}
|
|
29
|
+
return value !== void 0;
|
|
30
|
+
}
|
|
31
|
+
name = "Required";
|
|
32
|
+
}
|
|
33
|
+
function _asValidatorAttributes(attrs) {
|
|
34
|
+
return typeof attrs === "object" ? attrs : {};
|
|
35
|
+
}
|
|
36
|
+
function _value(attrs) {
|
|
37
|
+
return typeof attrs === "object" ? attrs.value : attrs;
|
|
38
|
+
}
|
|
39
|
+
class NumberValidator extends AbstractValidator {
|
|
40
|
+
validate(value) {
|
|
41
|
+
return isNumeric(String(value));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class IsNumber extends NumberValidator {
|
|
45
|
+
optional;
|
|
46
|
+
constructor(optional, attrs) {
|
|
47
|
+
super({ message: "must be a number", ...attrs });
|
|
48
|
+
this.optional = optional;
|
|
49
|
+
}
|
|
50
|
+
validate(value) {
|
|
51
|
+
return this.optional && value == null || super.validate(value);
|
|
52
|
+
}
|
|
53
|
+
name = "IsNumber";
|
|
54
|
+
}
|
|
55
|
+
class ValueNumberValidator extends NumberValidator {
|
|
56
|
+
value;
|
|
57
|
+
constructor(attrs) {
|
|
58
|
+
super(_asValidatorAttributes(attrs));
|
|
59
|
+
const val = _value(attrs);
|
|
60
|
+
this.value = typeof val === "string" ? parseFloat(val) : val;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
class Email extends AbstractValidator {
|
|
64
|
+
constructor(attrs) {
|
|
65
|
+
super({ message: "must be a well-formed email address", ...attrs });
|
|
66
|
+
}
|
|
67
|
+
validate(value) {
|
|
68
|
+
return !value || isEmail(value);
|
|
69
|
+
}
|
|
70
|
+
name = "Email";
|
|
71
|
+
}
|
|
72
|
+
class Null extends AbstractValidator {
|
|
73
|
+
constructor(attrs) {
|
|
74
|
+
super({ message: "must be null", ...attrs });
|
|
75
|
+
}
|
|
76
|
+
validate(value) {
|
|
77
|
+
return value == null;
|
|
78
|
+
}
|
|
79
|
+
name = "Null";
|
|
80
|
+
}
|
|
81
|
+
class NotNull extends Required {
|
|
82
|
+
constructor(attrs) {
|
|
83
|
+
super({ message: "must not be null", ...attrs });
|
|
84
|
+
}
|
|
85
|
+
validate(value) {
|
|
86
|
+
return !new Null().validate(value);
|
|
87
|
+
}
|
|
88
|
+
name = "NotNull";
|
|
89
|
+
}
|
|
90
|
+
class NotEmpty extends Required {
|
|
91
|
+
constructor(attrs) {
|
|
92
|
+
super({ message: "must not be empty", ...attrs });
|
|
93
|
+
}
|
|
94
|
+
validate(value) {
|
|
95
|
+
return super.validate(value) && new NotNull().validate(value) && (value.length ?? 0) > 0;
|
|
96
|
+
}
|
|
97
|
+
name = "NotEmpty";
|
|
98
|
+
}
|
|
99
|
+
class NotBlank extends Required {
|
|
100
|
+
constructor(attrs) {
|
|
101
|
+
super({ message: "must not be blank", ...attrs });
|
|
102
|
+
}
|
|
103
|
+
validate(value) {
|
|
104
|
+
return super.validate(value) && new NotNull().validate(value) && String(value).trim().length > 0;
|
|
105
|
+
}
|
|
106
|
+
name = "NotBlank";
|
|
107
|
+
}
|
|
108
|
+
class AssertTrue extends AbstractValidator {
|
|
109
|
+
constructor(attrs) {
|
|
110
|
+
super({ message: "must be true", ...attrs });
|
|
111
|
+
}
|
|
112
|
+
validate(value) {
|
|
113
|
+
return isBoolean(String(value)) && String(value) === "true";
|
|
114
|
+
}
|
|
115
|
+
name = "AssertTrue";
|
|
116
|
+
}
|
|
117
|
+
class AssertFalse extends AbstractValidator {
|
|
118
|
+
constructor(attrs) {
|
|
119
|
+
super({ message: "must be false", ...attrs });
|
|
120
|
+
}
|
|
121
|
+
validate(value) {
|
|
122
|
+
return !new AssertTrue().validate(value);
|
|
123
|
+
}
|
|
124
|
+
name = "AssertFalse";
|
|
125
|
+
}
|
|
126
|
+
function _asValueNumberAttributes(attrs) {
|
|
127
|
+
return typeof attrs === "object" ? attrs : { value: attrs };
|
|
128
|
+
}
|
|
129
|
+
class Min extends ValueNumberValidator {
|
|
130
|
+
constructor(attrs) {
|
|
131
|
+
super({
|
|
132
|
+
message: `must be greater than or equal to ${_value(attrs)}`,
|
|
133
|
+
..._asValueNumberAttributes(attrs)
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
validate(value) {
|
|
137
|
+
return super.validate(value) && isFloat(String(value), { min: this.value });
|
|
138
|
+
}
|
|
139
|
+
name = "Min";
|
|
140
|
+
}
|
|
141
|
+
class Max extends ValueNumberValidator {
|
|
142
|
+
constructor(attrs) {
|
|
143
|
+
super({
|
|
144
|
+
message: `must be less than or equal to ${_value(attrs)}`,
|
|
145
|
+
..._asValueNumberAttributes(attrs)
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
validate(value) {
|
|
149
|
+
return super.validate(value) && isFloat(String(value), { max: this.value });
|
|
150
|
+
}
|
|
151
|
+
name = "Max";
|
|
152
|
+
}
|
|
153
|
+
function _inclusive(attrs) {
|
|
154
|
+
return typeof attrs !== "object" || attrs.inclusive !== false;
|
|
155
|
+
}
|
|
156
|
+
class DecimalMin extends ValueNumberValidator {
|
|
157
|
+
inclusive;
|
|
158
|
+
constructor(attrs) {
|
|
159
|
+
super({
|
|
160
|
+
message: `must be greater than ${_inclusive(attrs) ? "or equal to " : ""}${_value(attrs)}`,
|
|
161
|
+
..._asValueNumberAttributes(attrs)
|
|
162
|
+
});
|
|
163
|
+
this.inclusive = _inclusive(attrs);
|
|
164
|
+
}
|
|
165
|
+
validate(value) {
|
|
166
|
+
return super.validate(value) && isFloat(String(value), { [this.inclusive ? "min" : "gt"]: this.value });
|
|
167
|
+
}
|
|
168
|
+
name = "DecimalMin";
|
|
169
|
+
}
|
|
170
|
+
class DecimalMax extends ValueNumberValidator {
|
|
171
|
+
inclusive;
|
|
172
|
+
constructor(attrs) {
|
|
173
|
+
super({
|
|
174
|
+
message: `must be less than ${_inclusive(attrs) ? "or equal to " : ""}${_value(attrs)}`,
|
|
175
|
+
..._asValueNumberAttributes(attrs)
|
|
176
|
+
});
|
|
177
|
+
this.inclusive = _inclusive(attrs);
|
|
178
|
+
}
|
|
179
|
+
validate(value) {
|
|
180
|
+
return super.validate(value) && isFloat(String(value), { [this.inclusive ? "max" : "lt"]: this.value });
|
|
181
|
+
}
|
|
182
|
+
name = "DecimalMax";
|
|
183
|
+
}
|
|
184
|
+
class Negative extends AbstractValidator {
|
|
185
|
+
constructor(attrs) {
|
|
186
|
+
super({ message: "must be less than 0", ...attrs });
|
|
187
|
+
}
|
|
188
|
+
validate(value) {
|
|
189
|
+
return toFloat(String(value)) < 0;
|
|
190
|
+
}
|
|
191
|
+
name = "Negative";
|
|
192
|
+
}
|
|
193
|
+
class NegativeOrZero extends AbstractValidator {
|
|
194
|
+
constructor(attrs) {
|
|
195
|
+
super({ message: "must be less than or equal to 0", ...attrs });
|
|
196
|
+
}
|
|
197
|
+
validate(value) {
|
|
198
|
+
return toFloat(String(value)) <= 0;
|
|
199
|
+
}
|
|
200
|
+
name = "NegativeOrZero";
|
|
201
|
+
}
|
|
202
|
+
class Positive extends AbstractValidator {
|
|
203
|
+
constructor(attrs) {
|
|
204
|
+
super({ message: "must be greater than 0", ...attrs });
|
|
205
|
+
}
|
|
206
|
+
validate(value) {
|
|
207
|
+
return toFloat(String(value)) > 0;
|
|
208
|
+
}
|
|
209
|
+
name = "Positive";
|
|
210
|
+
}
|
|
211
|
+
class PositiveOrZero extends AbstractValidator {
|
|
212
|
+
constructor(attrs) {
|
|
213
|
+
super({ message: "must be greater than or equal to 0", ...attrs });
|
|
214
|
+
}
|
|
215
|
+
validate(value) {
|
|
216
|
+
return toFloat(String(value)) >= 0;
|
|
217
|
+
}
|
|
218
|
+
name = "PositiveOrZero";
|
|
219
|
+
}
|
|
220
|
+
function _min(attrs) {
|
|
221
|
+
return attrs.min ?? 0;
|
|
222
|
+
}
|
|
223
|
+
function _max(attrs) {
|
|
224
|
+
return attrs.max ?? Number.MAX_SAFE_INTEGER;
|
|
225
|
+
}
|
|
226
|
+
class Size extends AbstractValidator {
|
|
227
|
+
min;
|
|
228
|
+
max;
|
|
229
|
+
constructor(attrs = {}) {
|
|
230
|
+
super({ message: `size must be between ${_min(attrs)} and ${_max(attrs)}`, ...attrs });
|
|
231
|
+
this.min = _min(attrs);
|
|
232
|
+
this.max = _max(attrs);
|
|
233
|
+
if (this.min > 0) {
|
|
234
|
+
this.impliesRequired = true;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
validate(value) {
|
|
238
|
+
if (this.min && this.min > 0 && !new Required().validate(value)) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
return isLength(value, { min: this.min, max: this.max });
|
|
242
|
+
}
|
|
243
|
+
name = "Size";
|
|
244
|
+
}
|
|
245
|
+
class Digits extends AbstractValidator {
|
|
246
|
+
integer;
|
|
247
|
+
fraction;
|
|
248
|
+
constructor(attrs) {
|
|
249
|
+
super({
|
|
250
|
+
message: `numeric value out of bounds (<${attrs.integer} digits>.<${attrs.fraction} digits> expected)`,
|
|
251
|
+
...attrs
|
|
252
|
+
});
|
|
253
|
+
this.integer = attrs.integer;
|
|
254
|
+
this.fraction = attrs.fraction;
|
|
255
|
+
}
|
|
256
|
+
validate(value) {
|
|
257
|
+
return String(Math.floor(Math.abs(toFloat(String(value))))).length <= this.integer && // eslint-disable-next-line camelcase
|
|
258
|
+
isDecimal(String(value), { decimal_digits: `0,${this.fraction}` });
|
|
259
|
+
}
|
|
260
|
+
name = "Digits";
|
|
261
|
+
}
|
|
262
|
+
class Past extends AbstractValidator {
|
|
263
|
+
constructor(attrs) {
|
|
264
|
+
super({ message: "must be a past date", ...attrs });
|
|
265
|
+
}
|
|
266
|
+
validate(value) {
|
|
267
|
+
return isBefore(String(value));
|
|
268
|
+
}
|
|
269
|
+
name = "Past";
|
|
270
|
+
}
|
|
271
|
+
class Future extends AbstractValidator {
|
|
272
|
+
constructor(attrs) {
|
|
273
|
+
super({ message: "must be a future date", ...attrs });
|
|
274
|
+
}
|
|
275
|
+
validate(value) {
|
|
276
|
+
return isAfter(String(value));
|
|
277
|
+
}
|
|
278
|
+
name = "Future";
|
|
279
|
+
}
|
|
280
|
+
function _regexp(attrs) {
|
|
281
|
+
if (typeof attrs === "string") {
|
|
282
|
+
return new RegExp(attrs, "u");
|
|
283
|
+
}
|
|
284
|
+
if (attrs instanceof RegExp) {
|
|
285
|
+
return attrs;
|
|
286
|
+
}
|
|
287
|
+
if (typeof attrs.regexp === "string") {
|
|
288
|
+
return new RegExp(attrs.regexp, "u");
|
|
289
|
+
}
|
|
290
|
+
return attrs.regexp;
|
|
291
|
+
}
|
|
292
|
+
class Pattern extends AbstractValidator {
|
|
293
|
+
regexp;
|
|
294
|
+
constructor(attrs) {
|
|
295
|
+
super({
|
|
296
|
+
message: `must match the following regular expression: ${_regexp(attrs).toString()}`,
|
|
297
|
+
..._asValidatorAttributes(attrs)
|
|
298
|
+
});
|
|
299
|
+
this.regexp = _regexp(attrs);
|
|
300
|
+
}
|
|
301
|
+
validate(value) {
|
|
302
|
+
return matches(value, this.regexp);
|
|
303
|
+
}
|
|
304
|
+
name = "Pattern";
|
|
305
|
+
}
|
|
306
|
+
class ValidityStateValidator extends AbstractValidator {
|
|
307
|
+
message = "";
|
|
308
|
+
// eslint-disable-next-line no-useless-constructor,@typescript-eslint/no-useless-constructor
|
|
309
|
+
constructor() {
|
|
310
|
+
super();
|
|
311
|
+
}
|
|
312
|
+
validate() {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
name = "ValidityStateValidator";
|
|
316
|
+
}
|
|
317
|
+
export {
|
|
318
|
+
AssertFalse,
|
|
319
|
+
AssertTrue,
|
|
320
|
+
DecimalMax,
|
|
321
|
+
DecimalMin,
|
|
322
|
+
Digits,
|
|
323
|
+
Email,
|
|
324
|
+
Future,
|
|
325
|
+
IsNumber,
|
|
326
|
+
Max,
|
|
327
|
+
Min,
|
|
328
|
+
Negative,
|
|
329
|
+
NegativeOrZero,
|
|
330
|
+
NotBlank,
|
|
331
|
+
NotEmpty,
|
|
332
|
+
NotNull,
|
|
333
|
+
Null,
|
|
334
|
+
Past,
|
|
335
|
+
Pattern,
|
|
336
|
+
Positive,
|
|
337
|
+
PositiveOrZero,
|
|
338
|
+
Required,
|
|
339
|
+
Size,
|
|
340
|
+
ValidityStateValidator
|
|
341
|
+
};
|
|
342
|
+
//# sourceMappingURL=Validators.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/Validators.ts"],
|
|
4
|
+
"sourcesContent": ["import isAfter from 'validator/es/lib/isAfter.js';\nimport isBefore from 'validator/es/lib/isBefore.js';\nimport isBoolean from 'validator/es/lib/isBoolean.js';\nimport isDecimal from 'validator/es/lib/isDecimal.js';\nimport isEmail from 'validator/es/lib/isEmail.js';\nimport isFloat from 'validator/es/lib/isFloat.js';\nimport isLength from 'validator/es/lib/isLength.js';\nimport isNumeric from 'validator/es/lib/isNumeric.js';\nimport matches from 'validator/es/lib/matches.js';\nimport toFloat from 'validator/es/lib/toFloat.js';\nimport type { Validator } from './Validation.js';\n\ninterface ValidatorAttributes {\n message?: string;\n}\ninterface ValueNumberAttributes extends ValidatorAttributes {\n value: number | string;\n}\ninterface DigitAttributes extends ValidatorAttributes {\n integer: number;\n fraction: number;\n}\ninterface SizeAttributes extends ValidatorAttributes {\n min?: number;\n max?: number;\n}\ninterface PatternAttributes extends ValidatorAttributes {\n regexp: RegExp | string;\n}\ninterface DecimalAttributes extends ValueNumberAttributes {\n inclusive?: boolean;\n}\n\nabstract class AbstractValidator<T> implements Validator<T> {\n message = 'invalid';\n\n impliesRequired = false;\n\n constructor(attrs?: ValidatorAttributes) {\n if (attrs?.message) {\n this.message = attrs.message;\n }\n }\n\n abstract validate(value: T): Promise<boolean> | boolean;\n abstract get name(): string;\n}\n\nexport class Required<T> extends AbstractValidator<T> {\n override impliesRequired = true;\n\n override validate(value: T): boolean {\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value);\n }\n return value !== undefined;\n }\n\n readonly name: string = 'Required';\n}\n\nfunction _asValidatorAttributes(attrs: PatternAttributes | RegExp | ValueNumberAttributes | number | string) {\n return typeof attrs === 'object' ? attrs : {};\n}\n\nfunction _value(attrs: ValueNumberAttributes | number | string) {\n return typeof attrs === 'object' ? attrs.value : attrs;\n}\n\nabstract class NumberValidator<T> extends AbstractValidator<T> {\n override validate(value: T) {\n return isNumeric(String(value));\n }\n}\n\nexport class IsNumber extends NumberValidator<number | null | undefined> {\n optional: boolean;\n\n constructor(optional: boolean, attrs?: ValidatorAttributes) {\n super({ message: 'must be a number', ...attrs });\n this.optional = optional;\n }\n\n override validate(value: number | null | undefined): boolean {\n return (this.optional && value == null) || super.validate(value);\n }\n\n readonly name = 'IsNumber';\n}\n\nabstract class ValueNumberValidator<T> extends NumberValidator<T> {\n value: number;\n\n protected constructor(attrs: ValueNumberAttributes | number | string) {\n super(_asValidatorAttributes(attrs));\n const val = _value(attrs);\n this.value = typeof val === 'string' ? parseFloat(val) : val;\n }\n}\n\n// JSR380 equivalent (https://beanvalidation.org/2.0/spec/#builtinconstraints)\nexport class Email extends AbstractValidator<string> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be a well-formed email address', ...attrs });\n }\n\n override validate(value: string | null | undefined): boolean {\n return !value || isEmail(value);\n }\n\n readonly name = 'Email';\n}\n\nexport class Null extends AbstractValidator<any> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be null', ...attrs });\n }\n\n override validate(value: any): boolean {\n return value == null;\n }\n\n readonly name = 'Null';\n}\n\nexport class NotNull<T> extends Required<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must not be null', ...attrs });\n }\n\n override validate(value: T): value is NonNullable<T> {\n return !new Null().validate(value);\n }\n\n override readonly name = 'NotNull';\n}\n\nexport class NotEmpty<T> extends Required<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must not be empty', ...attrs });\n }\n\n override validate(value: T): boolean {\n return (\n super.validate(value) && new NotNull<T>().validate(value) && ((value as { length?: number }).length ?? 0) > 0\n );\n }\n\n override readonly name = 'NotEmpty';\n}\n\nexport class NotBlank<T> extends Required<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must not be blank', ...attrs });\n }\n\n override validate(value: T): boolean {\n return super.validate(value) && new NotNull<T>().validate(value) && String(value).trim().length > 0;\n }\n\n override readonly name = 'NotBlank';\n}\n\nexport class AssertTrue<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be true', ...attrs });\n }\n\n override validate(value: T): boolean {\n return isBoolean(String(value)) && String(value) === 'true';\n }\n\n readonly name = 'AssertTrue';\n}\n\nexport class AssertFalse<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be false', ...attrs });\n }\n\n override validate(value: T): boolean {\n return !new AssertTrue<T>().validate(value);\n }\n\n readonly name = 'AssertFalse';\n}\n\nfunction _asValueNumberAttributes(attrs: ValueNumberAttributes | number | string) {\n return typeof attrs === 'object' ? attrs : { value: attrs };\n}\n\nexport class Min<T> extends ValueNumberValidator<T> {\n constructor(attrs: ValueNumberAttributes | number | string) {\n super({\n message: `must be greater than or equal to ${_value(attrs)}`,\n ..._asValueNumberAttributes(attrs),\n });\n }\n\n override validate(value: T): boolean {\n return super.validate(value) && isFloat(String(value), { min: this.value });\n }\n\n readonly name = 'Min';\n}\n\nexport class Max<T> extends ValueNumberValidator<T> {\n constructor(attrs: ValueNumberAttributes | number | string) {\n super({\n message: `must be less than or equal to ${_value(attrs)}`,\n ..._asValueNumberAttributes(attrs),\n });\n }\n\n override validate(value: T): boolean {\n return super.validate(value) && isFloat(String(value), { max: this.value });\n }\n\n readonly name = 'Max';\n}\n\nfunction _inclusive(attrs: DecimalAttributes | number | string) {\n return typeof attrs !== 'object' || attrs.inclusive !== false;\n}\n\nexport class DecimalMin<T> extends ValueNumberValidator<T> {\n inclusive: boolean;\n\n constructor(attrs: DecimalAttributes | number | string) {\n super({\n message: `must be greater than ${_inclusive(attrs) ? 'or equal to ' : ''}${_value(attrs)}`,\n ..._asValueNumberAttributes(attrs),\n });\n this.inclusive = _inclusive(attrs);\n }\n\n override validate(value: T): boolean {\n return super.validate(value) && isFloat(String(value), { [this.inclusive ? 'min' : 'gt']: this.value });\n }\n\n readonly name = 'DecimalMin';\n}\n\nexport class DecimalMax<T> extends ValueNumberValidator<T> {\n inclusive: boolean;\n\n constructor(attrs: DecimalAttributes | number | string) {\n super({\n message: `must be less than ${_inclusive(attrs) ? 'or equal to ' : ''}${_value(attrs)}`,\n ..._asValueNumberAttributes(attrs),\n });\n this.inclusive = _inclusive(attrs);\n }\n\n override validate(value: T): boolean {\n return super.validate(value) && isFloat(String(value), { [this.inclusive ? 'max' : 'lt']: this.value });\n }\n\n readonly name = 'DecimalMax';\n}\n\nexport class Negative<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be less than 0', ...attrs });\n }\n\n override validate(value: T): boolean {\n return toFloat(String(value)) < 0;\n }\n\n readonly name = 'Negative';\n}\n\nexport class NegativeOrZero<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be less than or equal to 0', ...attrs });\n }\n\n override validate(value: T): boolean {\n return toFloat(String(value)) <= 0;\n }\n\n readonly name = 'NegativeOrZero';\n}\n\nexport class Positive<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be greater than 0', ...attrs });\n }\n\n override validate(value: T): boolean {\n return toFloat(String(value)) > 0;\n }\n\n readonly name = 'Positive';\n}\n\nexport class PositiveOrZero<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be greater than or equal to 0', ...attrs });\n }\n\n override validate(value: T): boolean {\n return toFloat(String(value)) >= 0;\n }\n\n readonly name = 'PositiveOrZero';\n}\n\nfunction _min(attrs: SizeAttributes) {\n return attrs.min ?? 0;\n}\n\nfunction _max(attrs: SizeAttributes) {\n return attrs.max ?? Number.MAX_SAFE_INTEGER;\n}\n\nexport class Size extends AbstractValidator<string> {\n min: number;\n max: number;\n\n constructor(attrs: SizeAttributes = {}) {\n super({ message: `size must be between ${_min(attrs)} and ${_max(attrs)}`, ...attrs });\n this.min = _min(attrs);\n this.max = _max(attrs);\n if (this.min > 0) {\n this.impliesRequired = true;\n }\n }\n\n override validate(value: string): boolean {\n if (this.min && this.min > 0 && !new Required().validate(value)) {\n return false;\n }\n // eslint-disable-next-line sort-keys\n return isLength(value, { min: this.min, max: this.max });\n }\n\n readonly name = 'Size';\n}\n\nexport class Digits<T> extends AbstractValidator<T> {\n integer: number;\n fraction: number;\n\n constructor(attrs: DigitAttributes) {\n super({\n message: `numeric value out of bounds (<${attrs.integer} digits>.<${attrs.fraction} digits> expected)`,\n ...attrs,\n });\n this.integer = attrs.integer;\n this.fraction = attrs.fraction;\n }\n\n override validate(value: T): boolean {\n return (\n String(Math.floor(Math.abs(toFloat(String(value))))).length <= this.integer &&\n // eslint-disable-next-line camelcase\n isDecimal(String(value), { decimal_digits: `0,${this.fraction}` })\n );\n }\n\n readonly name = 'Digits';\n}\n\nexport class Past<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be a past date', ...attrs });\n }\n\n override validate(value: T): boolean {\n return isBefore(String(value));\n }\n\n readonly name = 'Past';\n}\n\n/*\n @PastOrPresent has no client-side implementation yet.\n It would consider any input valid and let the server-side to do validation.\n (It's not trivial to ensure the same granularity of _present_ as on the server-side:\n year / month / day / minute).\n*/\n// export class PastOrPresent extends AbstractValidator<any> {\n// constructor(attrs?: ValidatorAttributes) {\n// super({ message: 'must be a date in the past or in the present', ...attrs });\n// }\n// validate() {\n// return true;\n// }\n// }\n\nexport class Future<T> extends AbstractValidator<T> {\n constructor(attrs?: ValidatorAttributes) {\n super({ message: 'must be a future date', ...attrs });\n }\n\n override validate(value: T): boolean {\n return isAfter(String(value));\n }\n\n readonly name = 'Future';\n}\n\n/*\n @FutureOrPresent has no client-side implementation yet.\n It would consider any input valid and let the server-side to do validation.\n (It's not trivial to ensure the same granularity of _present_ as on the server-side:\n year / month / day / minute).\n*/\n// export class FutureOrPresent extends AbstractValidator<any> {\n// constructor(attrs?: ValidatorAttributes) {\n// super({ message: 'must be a date in the present or in the future', ...attrs });\n// }\n// validate = () => true;\n// }\n\nfunction _regexp(attrs: PatternAttributes | RegExp | string) {\n if (typeof attrs === 'string') {\n return new RegExp(attrs, 'u');\n }\n\n if (attrs instanceof RegExp) {\n return attrs;\n }\n\n if (typeof attrs.regexp === 'string') {\n return new RegExp(attrs.regexp, 'u');\n }\n\n return attrs.regexp;\n}\n\nexport class Pattern extends AbstractValidator<string> {\n regexp: RegExp;\n\n constructor(attrs: PatternAttributes | RegExp | string) {\n super({\n message: `must match the following regular expression: ${_regexp(attrs).toString()}`,\n ..._asValidatorAttributes(attrs),\n });\n this.regexp = _regexp(attrs);\n }\n\n override validate(value: any): boolean {\n return matches(value, this.regexp);\n }\n\n readonly name = 'Pattern';\n}\n\n/**\n * Validator that reports an error when the bound HTML element validation\n * returns false from `element.checkValidity()` and `element.validity.valid`.\n */\nexport class ValidityStateValidator<T> extends AbstractValidator<T> {\n override message = '';\n\n // eslint-disable-next-line no-useless-constructor,@typescript-eslint/no-useless-constructor\n constructor() {\n super();\n }\n\n override validate(): boolean {\n return false;\n }\n\n readonly name = 'ValidityStateValidator';\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/Validity.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol for storing `ValidityState` in the binder nodes.
|
|
3
|
+
*/
|
|
4
|
+
export declare const _validity: unique symbol;
|
|
5
|
+
/**
|
|
6
|
+
* Default validity state with `valid` flag set, assuming a valid state.
|
|
7
|
+
*/
|
|
8
|
+
export declare const defaultValidity: ValidityState;
|
|
9
|
+
//# sourceMappingURL=Validity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validity.d.ts","sourceRoot":"","sources":["src/Validity.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS,eAAqB,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAY7B,CAAC"}
|
package/Validity.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const _validity = Symbol("validity");
|
|
2
|
+
const defaultValidity = {
|
|
3
|
+
badInput: false,
|
|
4
|
+
customError: false,
|
|
5
|
+
patternMismatch: false,
|
|
6
|
+
rangeOverflow: false,
|
|
7
|
+
rangeUnderflow: false,
|
|
8
|
+
stepMismatch: false,
|
|
9
|
+
tooLong: false,
|
|
10
|
+
tooShort: false,
|
|
11
|
+
typeMismatch: false,
|
|
12
|
+
valueMissing: false,
|
|
13
|
+
valid: true
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
_validity,
|
|
17
|
+
defaultValidity
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=Validity.js.map
|
package/Validity.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["src/Validity.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Symbol for storing `ValidityState` in the binder nodes.\n */\nexport const _validity = Symbol('validity');\n\n/**\n * Default validity state with `valid` flag set, assuming a valid state.\n */\nexport const defaultValidity: ValidityState = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true,\n};\n"],
|
|
5
|
+
"mappings": "AAGO,MAAM,YAAY,OAAO,UAAU;AAKnC,MAAM,kBAAiC;AAAA,EAC5C,UAAU;AAAA,EACV,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,cAAc;AAAA,EACd,OAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './Binder.js';
|
|
2
|
+
export * from './BinderRoot.js';
|
|
3
|
+
export * from './BinderNode.js';
|
|
4
|
+
export * from './Field.js';
|
|
5
|
+
export * from './Models.js';
|
|
6
|
+
export * from './Validation.js';
|
|
7
|
+
export * from './Validators.js';
|
|
8
|
+
export * from './Validity.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
package/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function __REGISTER__(feature) {
|
|
2
|
+
window.Vaadin ??= {};
|
|
3
|
+
window.Vaadin.registrations ??= [];
|
|
4
|
+
window.Vaadin.registrations.push({
|
|
5
|
+
is: feature ? `${"@vaadin/hilla-lit-form"}/${feature}` : "@vaadin/hilla-lit-form",
|
|
6
|
+
version: "24.4.0-alpha1"
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export * from "./Binder.js";
|
|
10
|
+
export * from "./BinderRoot.js";
|
|
11
|
+
export * from "./BinderNode.js";
|
|
12
|
+
export * from "./Field.js";
|
|
13
|
+
export * from "./Models.js";
|
|
14
|
+
export * from "./Validation.js";
|
|
15
|
+
export * from "./Validators.js";
|
|
16
|
+
export * from "./Validity.js";
|
|
17
|
+
__REGISTER__();
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../scripts/register.js", "src/index.ts"],
|
|
4
|
+
"sourcesContent": ["export function __REGISTER__(feature) {\n window.Vaadin ??= {};\n window.Vaadin.registrations ??= [];\n window.Vaadin.registrations.push({\n is: feature ? `${__NAME__}/${feature}` : __NAME__,\n version: __VERSION__,\n });\n}\n", "export * from './Binder.js';\nexport * from './BinderRoot.js';\nexport * from './BinderNode.js';\nexport * from './Field.js';\nexport * from './Models.js';\nexport * from './Validation.js';\nexport * from './Validators.js';\nexport * from './Validity.js';\n\n// @ts-expect-error: esbuild injection\n// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n__REGISTER__();\n"],
|
|
5
|
+
"mappings": "AAAO,SAAS,aAAa,SAAS;AACpC,SAAO,WAAW,CAAC;AACnB,SAAO,OAAO,kBAAkB,CAAC;AACjC,SAAO,OAAO,cAAc,KAAK;AAAA,IAC/B,IAAI,UAAU,GAAG,wBAAQ,IAAI,OAAO,KAAK;AAAA,IACzC,SAAS;AAAA,EACX,CAAC;AACH;ACPA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAId,aAAa;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vaadin/hilla-lit-form",
|
|
3
|
+
"version": "24.4.0-alpha1",
|
|
4
|
+
"description": "Hilla form utils",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"module": "index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/vaadin/hilla.git",
|
|
11
|
+
"directory": "packages/ts/lit-form"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"Hilla",
|
|
15
|
+
"Form"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"clean:build": "git clean -fx . -e .vite -e node_modules",
|
|
19
|
+
"build": "concurrently npm:build:*",
|
|
20
|
+
"build:esbuild": "tsx ../../../scripts/build.ts",
|
|
21
|
+
"build:dts": "tsc --isolatedModules -p tsconfig.build.json",
|
|
22
|
+
"lint": "eslint src/**/*.ts test/**/*.ts",
|
|
23
|
+
"lint:fix": "eslint src/**/*.ts test/**/*.ts --fix",
|
|
24
|
+
"test": "karma start ../../../karma.config.cjs --port 9877",
|
|
25
|
+
"test:coverage": "npm run test -- --coverage",
|
|
26
|
+
"test:watch": "npm run test -- --watch",
|
|
27
|
+
"typecheck": "tsc --noEmit"
|
|
28
|
+
},
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"default": "./index.js"
|
|
32
|
+
},
|
|
33
|
+
"./Binder.js": {
|
|
34
|
+
"default": "./Binder.js"
|
|
35
|
+
},
|
|
36
|
+
"./BinderNode.js": {
|
|
37
|
+
"default": "./BinderNode.js"
|
|
38
|
+
},
|
|
39
|
+
"./BinderRoot.js": {
|
|
40
|
+
"default": "./BinderRoot.js"
|
|
41
|
+
},
|
|
42
|
+
"./Field.js": {
|
|
43
|
+
"default": "./Field.js"
|
|
44
|
+
},
|
|
45
|
+
"./index.js": {
|
|
46
|
+
"default": "./index.js"
|
|
47
|
+
},
|
|
48
|
+
"./Models.js": {
|
|
49
|
+
"default": "./Models.js"
|
|
50
|
+
},
|
|
51
|
+
"./types.js": {
|
|
52
|
+
"types": "./types.d.ts"
|
|
53
|
+
},
|
|
54
|
+
"./Validation.js": {
|
|
55
|
+
"default": "./Validation.js"
|
|
56
|
+
},
|
|
57
|
+
"./Validators.js": {
|
|
58
|
+
"default": "./Validators.js"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"author": "Vaadin Ltd",
|
|
62
|
+
"license": "Apache-2.0",
|
|
63
|
+
"bugs": {
|
|
64
|
+
"url": "https://github.com/vaadin/hilla/issues"
|
|
65
|
+
},
|
|
66
|
+
"homepage": "https://hilla.dev",
|
|
67
|
+
"files": [
|
|
68
|
+
"*.{d.ts.map,d.ts,js.map,js}"
|
|
69
|
+
],
|
|
70
|
+
"publishConfig": {
|
|
71
|
+
"access": "public"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"@vaadin/hilla-core": "24.4.0-alpha1",
|
|
75
|
+
"validator": "^13.11.0"
|
|
76
|
+
},
|
|
77
|
+
"peerDependencies": {
|
|
78
|
+
"lit": "^3.0.0"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@esm-bundle/chai": "^4.3.4-fix.0",
|
|
82
|
+
"@types/chai": "^4.3.6",
|
|
83
|
+
"@types/chai-dom": "^1.11.1",
|
|
84
|
+
"@types/mocha": "^10.0.2",
|
|
85
|
+
"@types/sinon": "^10.0.17",
|
|
86
|
+
"@types/sinon-chai": "^3.2.10",
|
|
87
|
+
"@types/validator": "^13.11.2",
|
|
88
|
+
"chai-dom": "^1.11.0",
|
|
89
|
+
"sinon": "^16.0.0",
|
|
90
|
+
"sinon-chai": "^3.7.0",
|
|
91
|
+
"typescript": "5.3.2"
|
|
92
|
+
}
|
|
93
|
+
}
|
package/types.d.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.d.js.map
|