@vaadin/hilla-lit-form 24.4.6 → 24.5.0-alpha10
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/Field.d.ts +2 -2
- package/Field.d.ts.map +1 -1
- package/Models.d.ts +46 -3
- package/Models.d.ts.map +1 -1
- package/Models.js +62 -9
- package/Models.js.map +2 -2
- package/Validation.d.ts +1 -1
- package/Validation.d.ts.map +1 -1
- package/Validation.js +5 -4
- package/Validation.js.map +2 -2
- package/index.js +1 -1
- package/package.json +4 -4
package/Field.d.ts
CHANGED
|
@@ -115,8 +115,8 @@ export declare function getDefaultFieldStrategy<T>(elm: FieldElement<T>, model?:
|
|
|
115
115
|
*/
|
|
116
116
|
export declare const field: (_model: AbstractModel<any>, _effect?: ((element: Element) => void) | undefined) => import("lit-html/directive.js").DirectiveResult<{
|
|
117
117
|
new (partInfo: PartInfo): {
|
|
118
|
-
fieldState?: FieldState<any
|
|
119
|
-
render(_model: AbstractModel<any>, _effect?: (
|
|
118
|
+
fieldState?: FieldState<any>;
|
|
119
|
+
render(_model: AbstractModel<any>, _effect?: (element: Element) => void): symbol;
|
|
120
120
|
update(part: ElementPart | PropertyPart, [model, effect]: [_model: AbstractModel<any>, _effect?: ((element: Element) => void) | undefined]): symbol;
|
|
121
121
|
readonly _$isConnected: boolean;
|
|
122
122
|
};
|
package/Field.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["src/Field.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAqB,KAAK,YAAY,EAAE,MAAM,KAAK,CAAC;AAC7E,OAAO,EAAkD,KAAK,QAAQ,EAAY,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAe,KAAK,aAAa,EAAwD,MAAM,aAAa,CAAC;AAIpH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,QAAQ,EAAE,aAAa,CAAC;IACxB,aAAa,IAAI,OAAO,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAIxG,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAElF;AAED,UAAU,kBAAkB,CAAC,CAAC;IAC5B,IAAI,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B;;;OAGG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;CACvC;AAED,UAAU,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAC3C,yBAAyB,GAAG;IAC1B,oBAAoB,IAAI,IAAI,CAAC;CAC9B,CAAC;AAEJ,8BAAsB,qBAAqB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAC9F,YAAW,aAAa,CAAC,CAAC,CAAC;;IAE3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;gBAUtB,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAKhD,IAAI,OAAO,IAAI,CAAC,CAEf;IAED;;;OAGG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,EAErB;IAED,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAEzB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,EAE7B;IAED,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,EAAI;IAE9B,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,aAAa,IAAI,OAAO;IAcxB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAQzC,oBAAoB,IAAI,IAAI;CAqB7B;AAED,qBAAa,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAClH,CAAC,EACD,CAAC,CACF;;gBAIa,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAKhD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAGzB;IAED,IAAa,YAAY,CAAC,KAAK,EAAE,MAAM,EAEtC;IAEQ,oBAAoB,IAAI,IAAI;CAgBtC;AAED,qBAAa,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CACnH,CAAC,EACD,CAAC,CACF;IACC,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;CACF;AAED,KAAK,mBAAmB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAAa,oBAAoB,CAC/B,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CACzD,SAAQ,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,IAAa,KAAK,IAAI,CAAC,GAAG,SAAS,CAMlC;IAED,IAAa,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,EAEpC;CACF;AAED,KAAK,oBAAoB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,qBAAa,qBAAqB,CAChC,CAAC,EACD,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAC3D,SAAQ,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,IAAa,KAAK,IAAI,CAAC,GAAG,SAAS,CAOlC;IAED,IAAa,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,EAMpC;CACF;AAED,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,MAAM,CAAC;IACxE,IAAa,KAAK,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED,IAAa,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAIzC;CACF;AAED,KAAK,+BAA+B,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAC1D,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,CAAC,CAAC;CAClB,CAAC;AAEF,qBAAa,gCAAgC,CAC3C,CAAC,EACD,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CACjF,SAAQ,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,IAAa,KAAK,IAAI,CAAC,CAEtB;IAED,IAAa,KAAK,CAAC,GAAG,EAAE,GAAG,EAE1B;CACF;AAED,KAAK,oBAAoB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAC/C,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,CAAC,CAAC;CACb,CAAC;AAEF,qBAAa,qBAAqB,CAChC,CAAC,EACD,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAC3D,SAAQ,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,IAAa,KAAK,IAAI,CAAC,CAEtB;IAED,IAAa,KAAK,CAAC,GAAG,EAAE,CAAC,EAExB;CACF;AAMD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA0BnH;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,oDAakD,OAAO,KAAK,IAAI;mBAT1D,QAAQ
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["src/Field.ts"],"names":[],"mappings":"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"}
|
package/Models.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const _validators: unique symbol;
|
|
|
8
8
|
export declare const _meta: unique symbol;
|
|
9
9
|
export declare const _getPropertyModel: unique symbol;
|
|
10
10
|
export declare const _enum: unique symbol;
|
|
11
|
+
export declare const _items: unique symbol;
|
|
11
12
|
declare const _optional: unique symbol;
|
|
12
13
|
export interface HasFromString<T> {
|
|
13
14
|
[_fromString](value: string): T;
|
|
@@ -44,7 +45,23 @@ export declare abstract class AbstractModel<T = unknown> {
|
|
|
44
45
|
readonly [_optional]: boolean;
|
|
45
46
|
[_key]: keyof any;
|
|
46
47
|
constructor(parent: ModelParent, key: keyof any, optional: boolean, options?: ModelOptions<T>);
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use {@link BinderNode.value} with string conversion instead
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const result = String(binder.for(model).value);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
47
56
|
toString(): string;
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Use {@link BinderNode.value} instead
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const result = binder.for(model).value;
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
48
65
|
valueOf(): T;
|
|
49
66
|
}
|
|
50
67
|
export declare abstract class PrimitiveModel<T> extends AbstractModel<T> {
|
|
@@ -74,7 +91,7 @@ export declare function makeObjectEmptyValueCreator<M extends ObjectModel>(type:
|
|
|
74
91
|
type ChildModel<T extends Record<never, never>, K extends keyof T> = AbstractModel<NonNullable<T[K]>>;
|
|
75
92
|
export declare class ObjectModel<T extends Record<never, never> = Record<never, never>> extends AbstractModel<T> {
|
|
76
93
|
#private;
|
|
77
|
-
static createEmptyValue: () => Record<never, never
|
|
94
|
+
static createEmptyValue: () => Value<ObjectModel<Record<never, never>>>;
|
|
78
95
|
protected [_getPropertyModel]<K extends keyof T, M extends ChildModel<T, K>>(key: K, init: (parent: this, key: K) => M): M;
|
|
79
96
|
}
|
|
80
97
|
export type ArrayItemModel<M> = M extends ArrayModel<infer MItem> ? MItem : never;
|
|
@@ -82,11 +99,37 @@ export declare class ArrayModel<MItem extends AbstractModel = AbstractModel> ext
|
|
|
82
99
|
#private;
|
|
83
100
|
static createEmptyValue(): [];
|
|
84
101
|
[_createEmptyItemValue]: () => Value<MItem>;
|
|
85
|
-
constructor(parent: ModelParent, key: keyof any, optional: boolean, createItem: (parent:
|
|
102
|
+
constructor(parent: ModelParent, key: keyof any, optional: boolean, createItem: (parent: AbstractModel, key: number) => MItem, options?: ModelOptions<Array<Value<MItem>>>);
|
|
103
|
+
[_items](): Generator<MItem, void, void>;
|
|
86
104
|
/**
|
|
87
|
-
* Iterates the current
|
|
105
|
+
* Iterates over the current model and yields a binder node for every item
|
|
106
|
+
* model.
|
|
107
|
+
*
|
|
108
|
+
* @deprecated Use the {@link m.items} function instead. For example, in React:
|
|
109
|
+
* ```tsx
|
|
110
|
+
* const {model, field} = useForm(GroupModel);
|
|
111
|
+
* return Array.from(m.items(model.people), (personModel) =>
|
|
112
|
+
* <TextField label="Full name" {...field(personModel.fullName)} />
|
|
113
|
+
* );
|
|
114
|
+
* ```
|
|
115
|
+
* In Lit:
|
|
116
|
+
* ```ts
|
|
117
|
+
* return html`${repeat(
|
|
118
|
+
* m.items(this.binder.model.people),
|
|
119
|
+
* (personModel) => html`<vaadin-text-field label="Full name" ${field(personModel.fullName)}></vaadin-text-field>`,
|
|
120
|
+
* )}`;
|
|
121
|
+
* ```
|
|
88
122
|
*/
|
|
89
123
|
[Symbol.iterator](): IterableIterator<BinderNode<MItem>>;
|
|
90
124
|
}
|
|
125
|
+
export declare const m: {
|
|
126
|
+
/**
|
|
127
|
+
* Returns an iterator over item models in the array model.
|
|
128
|
+
*
|
|
129
|
+
* @param model - The array model to iterate over.
|
|
130
|
+
* @returns An iterator over item models.
|
|
131
|
+
*/
|
|
132
|
+
items<M extends ArrayModel>(model: M): Generator<ArrayItemModel<M>, void, void>;
|
|
133
|
+
};
|
|
91
134
|
export {};
|
|
92
135
|
//# sourceMappingURL=Models.d.ts.map
|
package/Models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["src/Models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["src/Models.ts"],"names":[],"mappings":"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"}
|
package/Models.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import isNumeric from "validator/es/lib/isNumeric.js";
|
|
2
2
|
import { getBinderNode } from "./BinderNode.js";
|
|
3
3
|
import { IsNumber } from "./Validators.js";
|
|
4
|
-
const _createEmptyItemValue = Symbol("
|
|
4
|
+
const _createEmptyItemValue = Symbol("createEmptyItemValue");
|
|
5
5
|
const _parent = Symbol("parent");
|
|
6
6
|
const _key = Symbol("key");
|
|
7
7
|
const _fromString = Symbol("fromString");
|
|
@@ -9,6 +9,7 @@ const _validators = Symbol("validators");
|
|
|
9
9
|
const _meta = Symbol("meta");
|
|
10
10
|
const _getPropertyModel = Symbol("getPropertyModel");
|
|
11
11
|
const _enum = Symbol("enum");
|
|
12
|
+
const _items = Symbol("items");
|
|
12
13
|
const _optional = Symbol("optional");
|
|
13
14
|
function hasFromString(model) {
|
|
14
15
|
return _fromString in model;
|
|
@@ -33,9 +34,25 @@ class AbstractModel {
|
|
|
33
34
|
this[_validators] = options?.validators ?? [];
|
|
34
35
|
this[_meta] = options?.meta ?? {};
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use {@link BinderNode.value} with string conversion instead
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const result = String(binder.for(model).value);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
36
45
|
toString() {
|
|
37
46
|
return String(this.valueOf());
|
|
38
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use {@link BinderNode.value} instead
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const result = binder.for(model).value;
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
39
56
|
valueOf() {
|
|
40
57
|
const { value } = getBinderNode(this);
|
|
41
58
|
if (value === void 0) {
|
|
@@ -116,6 +133,8 @@ class ArrayModel extends AbstractModel {
|
|
|
116
133
|
return [];
|
|
117
134
|
}
|
|
118
135
|
[_createEmptyItemValue];
|
|
136
|
+
// The `parent` parameter is AbstractModel here for purpose; for some reason, setting it to `ArrayModel<MItem>` or
|
|
137
|
+
// `this` breaks the type inference in TS (v5.3.2).
|
|
119
138
|
#createItem;
|
|
120
139
|
#items = [];
|
|
121
140
|
constructor(parent, key, optional, createItem, options) {
|
|
@@ -123,24 +142,56 @@ class ArrayModel extends AbstractModel {
|
|
|
123
142
|
this.#createItem = createItem;
|
|
124
143
|
this[_createEmptyItemValue] = createItem(this, 0).constructor.createEmptyValue;
|
|
125
144
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const array = this.valueOf();
|
|
131
|
-
if (array.length !== this.#items.length) {
|
|
132
|
-
this.#items.length = array.length;
|
|
145
|
+
*[_items]() {
|
|
146
|
+
const values = getBinderNode(this).value ?? [];
|
|
147
|
+
if (values.length !== this.#items.length) {
|
|
148
|
+
this.#items.length = values.length;
|
|
133
149
|
}
|
|
134
|
-
for (let i = 0; i <
|
|
150
|
+
for (let i = 0; i < values.length; i++) {
|
|
135
151
|
let item = this.#items[i];
|
|
136
152
|
if (!item) {
|
|
137
153
|
item = this.#createItem(this, i);
|
|
138
154
|
this.#items[i] = item;
|
|
139
155
|
}
|
|
156
|
+
yield item;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Iterates over the current model and yields a binder node for every item
|
|
161
|
+
* model.
|
|
162
|
+
*
|
|
163
|
+
* @deprecated Use the {@link m.items} function instead. For example, in React:
|
|
164
|
+
* ```tsx
|
|
165
|
+
* const {model, field} = useForm(GroupModel);
|
|
166
|
+
* return Array.from(m.items(model.people), (personModel) =>
|
|
167
|
+
* <TextField label="Full name" {...field(personModel.fullName)} />
|
|
168
|
+
* );
|
|
169
|
+
* ```
|
|
170
|
+
* In Lit:
|
|
171
|
+
* ```ts
|
|
172
|
+
* return html`${repeat(
|
|
173
|
+
* m.items(this.binder.model.people),
|
|
174
|
+
* (personModel) => html`<vaadin-text-field label="Full name" ${field(personModel.fullName)}></vaadin-text-field>`,
|
|
175
|
+
* )}`;
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
*[Symbol.iterator]() {
|
|
179
|
+
for (const item of this[_items]()) {
|
|
140
180
|
yield getBinderNode(item);
|
|
141
181
|
}
|
|
142
182
|
}
|
|
143
183
|
}
|
|
184
|
+
const m = {
|
|
185
|
+
/**
|
|
186
|
+
* Returns an iterator over item models in the array model.
|
|
187
|
+
*
|
|
188
|
+
* @param model - The array model to iterate over.
|
|
189
|
+
* @returns An iterator over item models.
|
|
190
|
+
*/
|
|
191
|
+
items(model) {
|
|
192
|
+
return model[_items]();
|
|
193
|
+
}
|
|
194
|
+
};
|
|
144
195
|
export {
|
|
145
196
|
AbstractModel,
|
|
146
197
|
ArrayModel,
|
|
@@ -154,6 +205,7 @@ export {
|
|
|
154
205
|
_enum,
|
|
155
206
|
_fromString,
|
|
156
207
|
_getPropertyModel,
|
|
208
|
+
_items,
|
|
157
209
|
_key,
|
|
158
210
|
_meta,
|
|
159
211
|
_parent,
|
|
@@ -161,6 +213,7 @@ export {
|
|
|
161
213
|
createDetachedModel,
|
|
162
214
|
getObjectModelOwnAndParentGetters,
|
|
163
215
|
hasFromString,
|
|
216
|
+
m,
|
|
164
217
|
makeEnumEmptyValueCreator,
|
|
165
218
|
makeObjectEmptyValueCreator,
|
|
166
219
|
modelDetachedParent
|
package/Models.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["src/Models.ts"],
|
|
4
|
-
"sourcesContent": ["import isNumeric from 'validator/es/lib/isNumeric.js';\nimport { type BinderNode, getBinderNode } from './BinderNode.js';\nimport type { Validator } from './Validation.js';\nimport { IsNumber } from './Validators.js';\n\nexport const _createEmptyItemValue = Symbol('
|
|
5
|
-
"mappings": "AAAA,OAAO,eAAe;AACtB,SAA0B,qBAAqB;AAE/C,SAAS,gBAAgB;AAElB,MAAM,wBAAwB,OAAO,
|
|
4
|
+
"sourcesContent": ["import isNumeric from 'validator/es/lib/isNumeric.js';\nimport { type BinderNode, getBinderNode } from './BinderNode.js';\nimport type { Validator } from './Validation.js';\nimport { IsNumber } from './Validators.js';\n\nexport const _createEmptyItemValue = Symbol('createEmptyItemValue');\nexport const _parent = Symbol('parent');\nexport const _key = Symbol('key');\nexport const _fromString = Symbol('fromString');\nexport const _validators = Symbol('validators');\nexport const _meta = Symbol('meta');\nexport const _getPropertyModel = Symbol('getPropertyModel');\nexport const _enum = Symbol('enum');\nexport const _items = Symbol('items');\n\nconst _optional = Symbol('optional');\n\nexport interface HasFromString<T> {\n [_fromString](value: string): T;\n}\n\nexport function hasFromString<T>(model: AbstractModel<T>): model is AbstractModel<T> & HasFromString<T> {\n return _fromString in model;\n}\n\nexport type Value<M> = M extends AbstractModel<infer T> ? T : never;\n\nexport const modelDetachedParent = { $value$: undefined };\n\nexport type ModelParent = AbstractModel | BinderNode | typeof modelDetachedParent;\n\nexport interface Annotation {\n name: string;\n attributes?: Record<string, unknown>;\n}\n\nexport interface ModelMetadata {\n javaType?: string;\n annotations?: Annotation[];\n}\n\nexport interface ModelOptions<T> {\n validators?: ReadonlyArray<Validator<T>>;\n meta?: ModelMetadata;\n}\n\nexport type DetachedModelConstructor<M> = {\n prototype: object;\n new (parent: typeof modelDetachedParent, key: '$value$', optional: boolean): M;\n};\n\nexport function createDetachedModel<M extends AbstractModel>(type: DetachedModelConstructor<M>): M {\n return new type(modelDetachedParent, '$value$', false);\n}\n\nexport abstract class AbstractModel<T = unknown> {\n static createEmptyValue(): unknown {\n return undefined;\n }\n\n declare readonly ['constructor']: typeof AbstractModel<T>;\n\n readonly [_parent]?: ModelParent;\n\n readonly [_validators]: ReadonlyArray<Validator<T>>;\n\n readonly [_meta]: ModelMetadata;\n\n readonly [_optional]: boolean;\n\n [_key]: keyof any;\n\n constructor(parent: ModelParent, key: keyof any, optional: boolean, options?: ModelOptions<T>) {\n this[_parent] = parent;\n this[_key] = key;\n this[_optional] = optional;\n this[_validators] = options?.validators ?? [];\n this[_meta] = options?.meta ?? {};\n }\n\n /**\n * @deprecated Use {@link BinderNode.value} with string conversion instead\n *\n * @example\n * ```ts\n * const result = String(binder.for(model).value);\n * ```\n */\n toString(): string {\n return String(this.valueOf());\n }\n\n /**\n * @deprecated Use {@link BinderNode.value} instead\n *\n * @example\n * ```ts\n * const result = binder.for(model).value;\n * ```\n */\n valueOf(): T {\n const { value } = getBinderNode(this);\n\n if (value === undefined) {\n throw new TypeError('Value is undefined');\n }\n\n return value! as T;\n }\n}\n\nexport abstract class PrimitiveModel<T> extends AbstractModel<T> {}\n\nexport class BooleanModel extends PrimitiveModel<boolean> implements HasFromString<boolean> {\n static override createEmptyValue = Boolean;\n\n [_fromString](str: string): boolean {\n // This implementation matches the values accepted by validator.js and converts all other values to false\n // See https://github.com/validatorjs/validator.js/blob/master/src/lib/isBoolean.js\n return ['true', '1', 'yes'].includes(str.toLowerCase());\n }\n}\n\nexport class NumberModel extends PrimitiveModel<number> implements HasFromString<number | undefined> {\n static override createEmptyValue(): number {\n return NaN;\n }\n\n constructor(parent: ModelParent, key: keyof any, optional: boolean, options?: ModelOptions<number>) {\n // Prepend a built-in validator to indicate NaN input\n const validators = [new IsNumber(optional), ...(options?.validators ?? [])];\n super(parent, key, optional, { ...options, validators });\n }\n\n [_fromString](str: string): number | undefined {\n // Returning undefined is needed to support passing the validation when the value of an optional number field is\n // an empty string\n if (str === '') return undefined;\n return isNumeric(str) ? Number.parseFloat(str) : NaN;\n }\n}\n\nexport class StringModel extends PrimitiveModel<string> implements HasFromString<string> {\n static override createEmptyValue = String;\n [_fromString] = String;\n}\n\ndeclare enum Enum {}\n\nexport function makeEnumEmptyValueCreator<M extends EnumModel>(type: DetachedModelConstructor<M>): () => Value<M> {\n const { [_enum]: enumObject } = createDetachedModel(type);\n const defaultValue = Object.values(enumObject)[0] as Value<M>;\n\n return () => defaultValue;\n}\n\nexport abstract class EnumModel<E extends typeof Enum = typeof Enum>\n extends AbstractModel<E[keyof E]>\n implements HasFromString<E[keyof E] | undefined>\n{\n abstract readonly [_enum]: E;\n\n [_fromString](value: string): E[keyof E] | undefined {\n return value in this[_enum] ? (value as E[keyof E]) : undefined;\n }\n}\n\nexport function* getObjectModelOwnAndParentGetters<M extends ObjectModel>(\n model: M,\n): Generator<readonly [key: keyof Value<M>, getter: () => AbstractModel]> {\n for (\n let proto = Object.getPrototypeOf(model);\n proto !== ObjectModel.prototype;\n proto = Object.getPrototypeOf(proto)\n ) {\n const descriptors = Object.getOwnPropertyDescriptors(proto);\n for (const [name, { get }] of Object.entries(descriptors)) {\n if (get) {\n yield [name as keyof Value<M>, get];\n }\n }\n }\n}\n\nexport function makeObjectEmptyValueCreator<M extends ObjectModel>(type: DetachedModelConstructor<M>): () => Value<M> {\n const model = createDetachedModel(type);\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const obj: Partial<Value<M>> = {};\n\n // Iterate the model class hierarchy up to the ObjectModel, and extract\n // the property getter names from every prototypes\n for (const [key, getter] of getObjectModelOwnAndParentGetters(model)) {\n const propertyModel = getter.call(model);\n obj[key] = (\n propertyModel[_optional] ? undefined : propertyModel.constructor.createEmptyValue()\n ) as Value<M>[keyof Value<M>];\n }\n\n return obj as Value<M>;\n };\n}\n\ntype ChildModel<T extends Record<never, never>, K extends keyof T> = AbstractModel<NonNullable<T[K]>>;\n\nexport class ObjectModel<T extends Record<never, never> = Record<never, never>> extends AbstractModel<T> {\n static override createEmptyValue = makeObjectEmptyValueCreator(ObjectModel);\n\n #properties: { [K in keyof T]?: ChildModel<T, K> } = {};\n\n protected [_getPropertyModel]<K extends keyof T, M extends ChildModel<T, K>>(\n key: K,\n init: (parent: this, key: K) => M,\n ): M {\n if (!this.#properties[key]) {\n this.#properties[key] = init(this, key);\n }\n\n return this.#properties[key] as M;\n }\n}\n\nexport type ArrayItemModel<M> = M extends ArrayModel<infer MItem> ? MItem : never;\n\nexport class ArrayModel<MItem extends AbstractModel = AbstractModel> extends AbstractModel<Array<Value<MItem>>> {\n static override createEmptyValue(): [] {\n return [];\n }\n\n [_createEmptyItemValue]: () => Value<MItem>;\n\n // The `parent` parameter is AbstractModel here for purpose; for some reason, setting it to `ArrayModel<MItem>` or\n // `this` breaks the type inference in TS (v5.3.2).\n readonly #createItem: (parent: AbstractModel, index: number) => MItem;\n #items: Array<MItem | undefined> = [];\n\n constructor(\n parent: ModelParent,\n key: keyof any,\n optional: boolean,\n createItem: (parent: AbstractModel, key: number) => MItem,\n options?: ModelOptions<Array<Value<MItem>>>,\n ) {\n super(parent, key, optional, options);\n this.#createItem = createItem;\n this[_createEmptyItemValue] = createItem(this, 0).constructor.createEmptyValue as () => Value<MItem>;\n }\n\n *[_items](): Generator<MItem, void, void> {\n const values = getBinderNode(this).value ?? [];\n\n if (values.length !== this.#items.length) {\n this.#items.length = values.length;\n }\n\n for (let i = 0; i < values.length; i++) {\n let item: MItem | undefined = this.#items[i];\n\n if (!item) {\n item = this.#createItem(this, i);\n this.#items[i] = item;\n }\n\n yield item;\n }\n }\n\n /**\n * Iterates over the current model and yields a binder node for every item\n * model.\n *\n * @deprecated Use the {@link m.items} function instead. For example, in React:\n * ```tsx\n * const {model, field} = useForm(GroupModel);\n * return Array.from(m.items(model.people), (personModel) =>\n * <TextField label=\"Full name\" {...field(personModel.fullName)} />\n * );\n * ```\n * In Lit:\n * ```ts\n * return html`${repeat(\n * m.items(this.binder.model.people),\n * (personModel) => html`<vaadin-text-field label=\"Full name\" ${field(personModel.fullName)}></vaadin-text-field>`,\n * )}`;\n * ```\n */\n *[Symbol.iterator](): IterableIterator<BinderNode<MItem>> {\n for (const item of this[_items]()) {\n yield getBinderNode(item);\n }\n }\n}\n\nexport const m = {\n /**\n * Returns an iterator over item models in the array model.\n *\n * @param model - The array model to iterate over.\n * @returns An iterator over item models.\n */\n items<M extends ArrayModel>(model: M): Generator<ArrayItemModel<M>, void, void> {\n return model[_items]() as Generator<ArrayItemModel<M>, void, void>;\n },\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/Validation.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BinderNode } from './BinderNode.js';
|
|
2
2
|
import type { BinderRoot } from './BinderRoot.js';
|
|
3
|
-
import {
|
|
3
|
+
import { AbstractModel, type Value } from './Models.js';
|
|
4
4
|
export interface ValueError<T = unknown> {
|
|
5
5
|
property: AbstractModel | string;
|
|
6
6
|
message: string;
|
package/Validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["src/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["src/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAe,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;gBAElB,MAAM,EAAE,SAAS,UAAU,EAAE;CAa1C;AAED,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,aAAa,IAAI,CAChE,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC9B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KACtB,MAAM,CAAC;AAEZ,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CACN,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,UAAU,GAEhB,OAAO,CAAC,gBAAgB,GAAG,OAAO,GAAG,SAAS,gBAAgB,EAAE,CAAC,GACjE,gBAAgB,GAChB,OAAO,GACP,SAAS,gBAAgB,EAAE,CAAC;CACjC;AAED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,IAAI,SAAqB;IACzB,OAAO,EAAE,MAAM,CAAC;gBAEJ,OAAO,EAAE,MAAM;IAI3B,QAAQ,QAAO,OAAO,CAAU;CACjC;AAUD,wBAAsB,YAAY,CAAC,CAAC,SAAS,aAAa,EACxD,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC9B,0BAA0B,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACzD,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAyD9C"}
|
package/Validation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getBinderNode } from "./BinderNode.js";
|
|
2
|
-
import { NumberModel } from "./Models.js";
|
|
2
|
+
import { AbstractModel, NumberModel } from "./Models.js";
|
|
3
3
|
import { Required } from "./Validators.js";
|
|
4
4
|
class ValidationError extends Error {
|
|
5
5
|
errors;
|
|
@@ -7,9 +7,10 @@ class ValidationError extends Error {
|
|
|
7
7
|
super(
|
|
8
8
|
[
|
|
9
9
|
"There are validation errors in the form.",
|
|
10
|
-
...errors.map(
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
...errors.map((e) => {
|
|
11
|
+
const property = e.property instanceof AbstractModel ? String(getBinderNode(e.property).value) : e.property;
|
|
12
|
+
return `${property} - ${e.validator.constructor.name}${e.message ? `: ${e.message}` : ""}`;
|
|
13
|
+
})
|
|
13
14
|
].join("\n - ")
|
|
14
15
|
);
|
|
15
16
|
this.errors = errors;
|
package/Validation.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["src/Validation.ts"],
|
|
4
|
-
"sourcesContent": ["import type { BinderNode } from './BinderNode.js';\nimport { getBinderNode } from './BinderNode.js';\nimport type { BinderRoot } from './BinderRoot.js';\nimport {
|
|
5
|
-
"mappings": "AACA,SAAS,qBAAqB;AAE9B,
|
|
4
|
+
"sourcesContent": ["import type { BinderNode } from './BinderNode.js';\nimport { getBinderNode } from './BinderNode.js';\nimport type { BinderRoot } from './BinderRoot.js';\nimport { AbstractModel, NumberModel, type Value } from './Models.js';\nimport { Required } from './Validators.js';\n\nexport interface ValueError<T = unknown> {\n property: AbstractModel | string;\n message: string;\n value: T;\n validator: Validator<T>;\n validatorMessage?: string;\n}\n\nexport interface ValidationResult {\n property: AbstractModel | string;\n message?: string;\n}\n\nexport class ValidationError extends Error {\n errors: readonly ValueError[];\n\n constructor(errors: readonly ValueError[]) {\n super(\n [\n 'There are validation errors in the form.',\n ...errors.map((e) => {\n const property = e.property instanceof AbstractModel ? String(getBinderNode(e.property).value) : e.property;\n return `${property} - ${e.validator.constructor.name}${e.message ? `: ${e.message}` : ''}`;\n }),\n ].join('\\n - '),\n );\n this.errors = errors;\n this.name = this.constructor.name;\n }\n}\n\nexport type InterpolateMessageCallback<M extends AbstractModel> = (\n message: string,\n validator: Validator<Value<M>>,\n binderNode: BinderNode<M>,\n) => string;\n\nexport interface Validator<T = unknown> {\n message: string;\n impliesRequired?: boolean;\n name?: string;\n validate(\n value: T,\n binder: BinderRoot,\n ):\n | Promise<ValidationResult | boolean | readonly ValidationResult[]>\n | ValidationResult\n | boolean\n | readonly ValidationResult[];\n}\n\nexport class ServerValidator implements Validator {\n name = 'ServerValidator';\n message: string;\n\n constructor(message: string) {\n this.message = message;\n }\n\n validate = (): boolean => false;\n}\n\n// The `property` field of `ValidationResult`s is a path relative to the parent.\nfunction setPropertyAbsolutePath(binderNodeName: string, result: ValidationResult): ValidationResult {\n if (typeof result.property === 'string' && binderNodeName.length > 0) {\n result.property = `${binderNodeName}.${result.property}`;\n }\n return result;\n}\n\nexport async function runValidator<M extends AbstractModel>(\n model: M,\n validator: Validator<Value<M>>,\n interpolateMessageCallback?: InterpolateMessageCallback<M>,\n): Promise<ReadonlyArray<ValueError<Value<M>>>> {\n const binderNode = getBinderNode(model);\n const value = binderNode.value as Value<M>;\n\n const interpolateMessage = (message: string) => {\n if (!interpolateMessageCallback) {\n return message;\n }\n return interpolateMessageCallback(message, validator, binderNode);\n };\n\n // If model is not required and value empty, do not run any validator. Except\n // always validate NumberModel, which has a mandatory builtin validator\n // to indicate NaN input.\n if (!binderNode.required && !new Required().validate(value) && !(model instanceof NumberModel)) {\n return [];\n }\n\n try {\n const result = await validator.validate(value, binderNode.binder);\n\n if (result === false) {\n return [\n {\n message: interpolateMessage(validator.message),\n property: binderNode.name,\n validator,\n value,\n },\n ];\n }\n\n if (result === true || (Array.isArray(result) && result.length === 0)) {\n return [];\n }\n\n if (Array.isArray(result)) {\n return result.map((result2) => ({\n message: interpolateMessage(validator.message),\n ...setPropertyAbsolutePath(binderNode.name, result2),\n validator,\n value,\n }));\n }\n\n return [\n {\n message: interpolateMessage(validator.message),\n ...setPropertyAbsolutePath(binderNode.name, result as ValidationResult),\n validator,\n value,\n },\n ];\n } catch (error: unknown) {\n console.error(`${binderNode.name} - Validator ${validator.constructor.name} threw an error:`, error);\n return [{ message: 'Validator threw an error', property: binderNode.name, validator, value }];\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,qBAAqB;AAE9B,SAAS,eAAe,mBAA+B;AACvD,SAAS,gBAAgB;AAelB,MAAM,wBAAwB,MAAM;AAAA,EACzC;AAAA,EAEA,YAAY,QAA+B;AACzC;AAAA,MACE;AAAA,QACE;AAAA,QACA,GAAG,OAAO,IAAI,CAAC,MAAM;AACnB,gBAAM,WAAW,EAAE,oBAAoB,gBAAgB,OAAO,cAAc,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;AACnG,iBAAO,GAAG,QAAQ,MAAM,EAAE,UAAU,YAAY,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE,OAAO,KAAK,EAAE;AAAA,QAC1F,CAAC;AAAA,MACH,EAAE,KAAK,OAAO;AAAA,IAChB;AACA,SAAK,SAAS;AACd,SAAK,OAAO,KAAK,YAAY;AAAA,EAC/B;AACF;AAsBO,MAAM,gBAAqC;AAAA,EAChD,OAAO;AAAA,EACP;AAAA,EAEA,YAAY,SAAiB;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,WAAW,MAAe;AAC5B;AAGA,SAAS,wBAAwB,gBAAwB,QAA4C;AACnG,MAAI,OAAO,OAAO,aAAa,YAAY,eAAe,SAAS,GAAG;AACpE,WAAO,WAAW,GAAG,cAAc,IAAI,OAAO,QAAQ;AAAA,EACxD;AACA,SAAO;AACT;AAEA,eAAsB,aACpB,OACA,WACA,4BAC8C;AAC9C,QAAM,aAAa,cAAc,KAAK;AACtC,QAAM,QAAQ,WAAW;AAEzB,QAAM,qBAAqB,CAAC,YAAoB;AAC9C,QAAI,CAAC,4BAA4B;AAC/B,aAAO;AAAA,IACT;AACA,WAAO,2BAA2B,SAAS,WAAW,UAAU;AAAA,EAClE;AAKA,MAAI,CAAC,WAAW,YAAY,CAAC,IAAI,SAAS,EAAE,SAAS,KAAK,KAAK,EAAE,iBAAiB,cAAc;AAC9F,WAAO,CAAC;AAAA,EACV;AAEA,MAAI;AACF,UAAM,SAAS,MAAM,UAAU,SAAS,OAAO,WAAW,MAAM;AAEhE,QAAI,WAAW,OAAO;AACpB,aAAO;AAAA,QACL;AAAA,UACE,SAAS,mBAAmB,UAAU,OAAO;AAAA,UAC7C,UAAU,WAAW;AAAA,UACrB;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,WAAW,QAAS,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAI;AACrE,aAAO,CAAC;AAAA,IACV;AAEA,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,OAAO,IAAI,CAAC,aAAa;AAAA,QAC9B,SAAS,mBAAmB,UAAU,OAAO;AAAA,QAC7C,GAAG,wBAAwB,WAAW,MAAM,OAAO;AAAA,QACnD;AAAA,QACA;AAAA,MACF,EAAE;AAAA,IACJ;AAEA,WAAO;AAAA,MACL;AAAA,QACE,SAAS,mBAAmB,UAAU,OAAO;AAAA,QAC7C,GAAG,wBAAwB,WAAW,MAAM,MAA0B;AAAA,QACtE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,OAAgB;AACvB,YAAQ,MAAM,GAAG,WAAW,IAAI,gBAAgB,UAAU,YAAY,IAAI,oBAAoB,KAAK;AACnG,WAAO,CAAC,EAAE,SAAS,4BAA4B,UAAU,WAAW,MAAM,WAAW,MAAM,CAAC;AAAA,EAC9F;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/index.js
CHANGED
|
@@ -2,7 +2,7 @@ function __REGISTER__(feature, vaadinObj = window.Vaadin ??= {}) {
|
|
|
2
2
|
vaadinObj.registrations ??= [];
|
|
3
3
|
vaadinObj.registrations.push({
|
|
4
4
|
is: feature ? `${"@vaadin/hilla-lit-form"}/${feature}` : "@vaadin/hilla-lit-form",
|
|
5
|
-
version: "24.
|
|
5
|
+
version: "24.5.0-alpha10"
|
|
6
6
|
});
|
|
7
7
|
}
|
|
8
8
|
export * from "./Binder.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/hilla-lit-form",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.5.0-alpha10",
|
|
4
4
|
"description": "Hilla form utils",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"build:dts": "tsc --isolatedModules -p tsconfig.build.json",
|
|
22
22
|
"lint": "eslint src test",
|
|
23
23
|
"lint:fix": "npm run lint -- --fix",
|
|
24
|
-
"test": "karma start ../../../karma.config.cjs --port
|
|
24
|
+
"test": "karma start ../../../karma.config.cjs --port 9876",
|
|
25
25
|
"test:coverage": "npm run test -- --coverage",
|
|
26
26
|
"test:watch": "npm run test -- --watch",
|
|
27
27
|
"typecheck": "tsc --noEmit"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@vaadin/hilla-frontend": "24.
|
|
74
|
+
"@vaadin/hilla-frontend": "24.5.0-alpha10",
|
|
75
75
|
"validator": "^13.11.0"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
@@ -88,6 +88,6 @@
|
|
|
88
88
|
"chai-dom": "^1.11.0",
|
|
89
89
|
"sinon": "^16.0.0",
|
|
90
90
|
"sinon-chai": "^3.7.0",
|
|
91
|
-
"typescript": "5.
|
|
91
|
+
"typescript": "5.5.2"
|
|
92
92
|
}
|
|
93
93
|
}
|