@effect-app/vue 0.86.2 → 0.87.0-next.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/CHANGELOG.md +14 -0
- package/_cjs/routeParams.cjs +8 -8
- package/_cjs/routeParams.cjs.map +1 -1
- package/_src/{form.ts → form.ts.bak} +22 -25
- package/_src/routeParams.ts +16 -21
- package/dist/routeParams.d.ts +7 -8
- package/dist/routeParams.d.ts.map +1 -1
- package/dist/routeParams.js +13 -17
- package/package.json +7 -16
- package/tsconfig.json +2 -1
- package/_cjs/form.cjs +0 -142
- package/_cjs/form.cjs.map +0 -1
- package/dist/form.d.ts +0 -45
- package/dist/form.d.ts.map +0 -1
- package/dist/form.js +0 -139
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @effect-app/vue
|
|
2
2
|
|
|
3
|
+
## 0.87.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 87a6ac2: update packages
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [87a6ac2]
|
|
12
|
+
- @effect-app/prelude@0.107.0-next.0
|
|
13
|
+
- @effect-app/schema2@0.1.0-next.0
|
|
14
|
+
- @effect-app/core@0.97.0-next.0
|
|
15
|
+
- @effect-app/vue@0.87.0-next.0
|
|
16
|
+
|
|
3
17
|
## 0.86.2
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/_cjs/routeParams.cjs
CHANGED
|
@@ -9,9 +9,9 @@ exports.parseRouteParams = parseRouteParams;
|
|
|
9
9
|
exports.parseRouteParamsOption = parseRouteParamsOption;
|
|
10
10
|
var tsplus_module_1 = _interopRequireWildcard(require("effect/Option"));
|
|
11
11
|
var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/Function"));
|
|
12
|
-
var tsplus_module_3 = _interopRequireWildcard(require("@effect
|
|
13
|
-
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/
|
|
14
|
-
var
|
|
12
|
+
var tsplus_module_3 = _interopRequireWildcard(require("@effect/schema/Parser"));
|
|
13
|
+
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Option"));
|
|
14
|
+
var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/prelude/utils"));
|
|
15
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
17
|
function getQueryParam(search, param) {
|
|
@@ -23,18 +23,18 @@ function getQueryParam(search, param) {
|
|
|
23
23
|
}
|
|
24
24
|
const getQueryParamO = exports.getQueryParamO = tsplus_module_2.flow(getQueryParam, tsplus_module_1.fromNullable);
|
|
25
25
|
const parseOpt = t => {
|
|
26
|
-
const dec = tsplus_module_2.flow(
|
|
26
|
+
const dec = tsplus_module_2.flow(tsplus_module_3.parseEither(t), x => x._tag === "Right" ? tsplus_module_1.some(x.right) : tsplus_module_4.none);
|
|
27
27
|
return dec;
|
|
28
28
|
};
|
|
29
29
|
exports.parseOpt = parseOpt;
|
|
30
30
|
const parseOptUnknown = t => {
|
|
31
|
-
const dec = tsplus_module_2.flow(
|
|
31
|
+
const dec = tsplus_module_2.flow(tsplus_module_3.parseEither(t), x => x._tag === "Right" ? tsplus_module_1.some(x.right) : tsplus_module_4.none);
|
|
32
32
|
return dec;
|
|
33
33
|
};
|
|
34
34
|
exports.parseOptUnknown = parseOptUnknown;
|
|
35
35
|
function parseRouteParamsOption(query, t // enforce non empty
|
|
36
36
|
) {
|
|
37
|
-
return
|
|
37
|
+
return tsplus_module_5.RecordKeys(tsplus_module_5.object$(t)).reduce((prev, cur) => {
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
39
39
|
prev[cur] = tsplus_module_1.flatMap(getQueryParamO(query, cur), parseOpt(t[cur]));
|
|
40
40
|
return prev;
|
|
@@ -42,9 +42,9 @@ function parseRouteParamsOption(query, t // enforce non empty
|
|
|
42
42
|
}
|
|
43
43
|
function parseRouteParams(query, t // enforce non empty
|
|
44
44
|
) {
|
|
45
|
-
return
|
|
45
|
+
return tsplus_module_5.RecordKeys(tsplus_module_5.object$(t)).reduce((prev, cur) => {
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
47
|
-
prev[cur] =
|
|
47
|
+
prev[cur] = tsplus_module_3.parseSync(t[cur])(query[cur]);
|
|
48
48
|
return prev;
|
|
49
49
|
}, {});
|
|
50
50
|
}
|
package/_cjs/routeParams.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeParams.cjs","names":["
|
|
1
|
+
{"version":3,"file":"routeParams.cjs","names":["getQueryParam","search","param","v","Array","isArray","getQueryParamO","exports","tsplus_module_2","flow","tsplus_module_1","fromNullable","parseOpt","t","dec","tsplus_module_3","parseEither","x","_tag","some","right","tsplus_module_4","none","parseOptUnknown","parseRouteParamsOption","query","tsplus_module_5","RecordKeys","object$","reduce","prev","cur","flatMap","parseRouteParams","parseSync"],"sources":["../_src/routeParams.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;AAGM,SAAUA,aAAaA,CAACC,MAAmB,EAAEC,KAAa;EAC9D,MAAMC,CAAC,GAAGF,MAAM,CAACC,KAAK,CAAC;EACvB,IAAIE,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,EAAE;IACpB,OAAOA,CAAC,CAAC,CAAC,CAAC;EACb;EACA,OAAOA,CAAC,IAAI,IAAI;AAClB;AAEO,MAAMG,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,eAAA,CAAAC,IAAI,CAACT,aAAa,EAAAU,eAAA,CAAAC,YAAA,CAAsB;AAE/D,MAAMC,QAAQ,GAAUC,CAAoB,IAAI;EACrD,MAAMC,GAAG,GAAGN,eAAA,CAAAC,IAAI,CAAAM,eAAA,CAAAC,WAAA,CAACH,CAAC,GAAeI,CAAC,IAChCA,CAAC,CAACC,IAAI,KAAK,OAAO,GACdR,eAAA,CAAAS,IAAA,CAAOF,CAAC,CAACG,KAAK,CAAC,GAChBC,eAAA,CAAAC,IAAY,CAAC;EAClB,OAAOR,GAAG;AACZ,CAAC;AAAAP,OAAA,CAAAK,QAAA,GAAAA,QAAA;AAEM,MAAMW,eAAe,GAAUV,CAAoB,IAAI;EAC5D,MAAMC,GAAG,GAAGN,eAAA,CAAAC,IAAI,CAAAM,eAAA,CAAAC,WAAA,CAACH,CAAC,GAAeI,CAAC,IAChCA,CAAC,CAACC,IAAI,KAAK,OAAO,GACdR,eAAA,CAAAS,IAAA,CAAOF,CAAC,CAACG,KAAK,CAAC,GAChBC,eAAA,CAAAC,IAAY,CAAC;EAClB,OAAOR,GAAG;AACZ,CAAC;AAAAP,OAAA,CAAAgB,eAAA,GAAAA,eAAA;AAEK,SAAUC,sBAAsBA,CACpCC,KAA0B,EAC1BZ,CAAM,CAAC;AAAA,E;EAIP,OAAOa,eAAA,CAAAC,UAAA,CAAAD,eAAA,CAAAE,OAAA,CAAAf,CAAC,GAASgB,MAAM,CACrB,CAACC,IAAI,EAAEC,GAAG,KAAI;IACZ;IACAD,IAAI,CAACC,GAAG,CAAC,GAAGrB,eAAA,CAAAsB,OAAA,CAAA1B,cAAc,CAACmB,KAAK,EAAEM,GAAa,CAAC,EAASnB,QAAQ,CAACC,CAAC,CAACkB,GAAG,CAAE,CAAC,CAAC;IAE3E,OAAOD,IAAI;EACb,CAAC,EACD,EAEC,CACF;AACH;AAEM,SAAUG,gBAAgBA,CAC9BR,KAA0B,EAC1BZ,CAAM,CAAC;AAAA,E;EAIP,OAAOa,eAAA,CAAAC,UAAA,CAAAD,eAAA,CAAAE,OAAA,CAAAf,CAAC,GAASgB,MAAM,CACrB,CAACC,IAAI,EAAEC,GAAG,KAAI;IACZ;IACAD,IAAI,CAACC,GAAG,CAAC,GAAGhB,eAAA,CAAAmB,SAAA,CAAArB,CAAC,CAACkB,GAAG,CAAE,EAAWN,KAAK,CAACM,GAAU,CAAC,CAAC;IAEhD,OAAOD,IAAI;EACb,CAAC,EACD,EAEC,CACF;AACH"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { drawError,
|
|
2
|
-
import type { AnyField,
|
|
1
|
+
import { type drawError, type Field, getMetadataFromSchemaOrProp } from "@effect-app/prelude/schema"
|
|
2
|
+
import type { AnyField, FromStruct, Schema, StructFields, To, ToStruct } from "@effect-app/schema"
|
|
3
|
+
import { AST } from "@effect-app/schema/schema"
|
|
3
4
|
import { createIntl, type IntlFormatters } from "@formatjs/intl"
|
|
5
|
+
import type { Simplify } from "effect/Types"
|
|
4
6
|
import type { Ref } from "vue"
|
|
5
7
|
import { capitalize, ref, watch } from "vue"
|
|
6
8
|
|
|
@@ -18,7 +20,7 @@ export function convertOut(v: string, set: (v: unknown | null) => void, type?: "
|
|
|
18
20
|
return set(convertOutInt(v, type))
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
export function buildFieldInfoFromFields<Fields extends
|
|
23
|
+
export function buildFieldInfoFromFields<Fields extends StructFields>(
|
|
22
24
|
fields: Fields
|
|
23
25
|
) {
|
|
24
26
|
return fields.$$.keys.reduce(
|
|
@@ -28,8 +30,8 @@ export function buildFieldInfoFromFields<Fields extends FieldRecord>(
|
|
|
28
30
|
},
|
|
29
31
|
{} as {
|
|
30
32
|
[K in keyof Fields]: FieldInfo<
|
|
31
|
-
From<GetSchemaFromProp<Fields[K]>>,
|
|
32
|
-
To<GetSchemaFromProp<Fields[K]>>
|
|
33
|
+
Schema.From<GetSchemaFromProp<Fields[K]>>,
|
|
34
|
+
Schema.To<GetSchemaFromProp<Fields[K]>>
|
|
33
35
|
>
|
|
34
36
|
}
|
|
35
37
|
)
|
|
@@ -61,17 +63,19 @@ type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S
|
|
|
61
63
|
|
|
62
64
|
const defaultIntl = createIntl({ locale: "en" })
|
|
63
65
|
export const translate = ref<IntlFormatters["formatMessage"]>(defaultIntl.formatMessage.bind(defaultIntl))
|
|
64
|
-
export const customSchemaErrors = ref<Map<
|
|
66
|
+
export const customSchemaErrors = ref<Map<Schema<any, any>, (message: string, e: unknown, v: unknown) => string>>(
|
|
67
|
+
new Map()
|
|
68
|
+
)
|
|
65
69
|
|
|
66
70
|
function buildFieldInfo(
|
|
67
|
-
propOrSchema:
|
|
71
|
+
propOrSchema: Schema<any, any>,
|
|
68
72
|
fieldKey: PropertyKey
|
|
69
73
|
): FieldInfo<any, any> {
|
|
70
|
-
const metadata = getMetadataFromSchemaOrProp(propOrSchema)
|
|
71
|
-
const schema =
|
|
72
|
-
const parse =
|
|
74
|
+
const metadata = getMetadataFromSchemaOrProp(propOrSchema) // TODO
|
|
75
|
+
const schema = propOrSchema
|
|
76
|
+
const parse = schema.parseEither
|
|
73
77
|
|
|
74
|
-
const nullable =
|
|
78
|
+
const nullable = AST.isUnion(schema.ast) && schema.ast.types.includes(Schema2.null.ast)
|
|
75
79
|
|
|
76
80
|
function renderError(e: any, v: unknown) {
|
|
77
81
|
const err = drawError(e)
|
|
@@ -136,7 +140,6 @@ function buildFieldInfo(
|
|
|
136
140
|
const parseRule = (v: unknown) =>
|
|
137
141
|
pipe(
|
|
138
142
|
parse(v),
|
|
139
|
-
These.result,
|
|
140
143
|
(_) =>
|
|
141
144
|
_.match(
|
|
142
145
|
{
|
|
@@ -184,24 +187,18 @@ function buildFieldInfo(
|
|
|
184
187
|
}
|
|
185
188
|
|
|
186
189
|
export const buildFormFromSchema = <
|
|
187
|
-
|
|
188
|
-
From,
|
|
189
|
-
ConstructorInput,
|
|
190
|
-
Fields extends FieldRecord,
|
|
190
|
+
Fields extends StructFields,
|
|
191
191
|
OnSubmitA
|
|
192
192
|
>(
|
|
193
|
-
s: Schema
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
ConstructorInput,
|
|
197
|
-
From,
|
|
198
|
-
{ fields: Fields }
|
|
193
|
+
s: Schema<
|
|
194
|
+
Simplify<FromStruct<Fields>>,
|
|
195
|
+
Simplify<ToStruct<Fields>>
|
|
199
196
|
>,
|
|
200
|
-
state: Ref<
|
|
201
|
-
onSubmit: (a:
|
|
197
|
+
state: Ref<FromStruct<Fields>>,
|
|
198
|
+
onSubmit: (a: ToStruct<Fields>) => Promise<OnSubmitA>
|
|
202
199
|
) => {
|
|
203
200
|
const fields = buildFieldInfoFromFields(s.Api.fields)
|
|
204
|
-
const parse =
|
|
201
|
+
const parse = s.parseSync
|
|
205
202
|
const isDirty = ref(false)
|
|
206
203
|
const isValid = ref(true)
|
|
207
204
|
|
package/_src/routeParams.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { EParserFor, Parser, unsafe } from "@effect-app/prelude/schema"
|
|
1
|
+
import type { REST, Schema } from "@effect-app/prelude/schema"
|
|
3
2
|
import type { ParsedQuery } from "query-string"
|
|
4
3
|
|
|
5
4
|
export function getQueryParam(search: ParsedQuery, param: string) {
|
|
@@ -12,31 +11,27 @@ export function getQueryParam(search: ParsedQuery, param: string) {
|
|
|
12
11
|
|
|
13
12
|
export const getQueryParamO = flow(getQueryParam, Option.fromNullable)
|
|
14
13
|
|
|
15
|
-
export const parseOpt = <E, A>(t: ReqRes<E, A>) => {
|
|
16
|
-
const dec = flow(
|
|
17
|
-
x.
|
|
18
|
-
? x.
|
|
19
|
-
? Option(x.effect.right[0])
|
|
20
|
-
: Option.none
|
|
14
|
+
export const parseOpt = <E, A>(t: REST.ReqRes<E, A>) => {
|
|
15
|
+
const dec = flow(t.parseEither, (x) =>
|
|
16
|
+
x._tag === "Right"
|
|
17
|
+
? Option(x.right)
|
|
21
18
|
: Option.none)
|
|
22
19
|
return dec
|
|
23
20
|
}
|
|
24
21
|
|
|
25
|
-
export const parseOptUnknown = <E, A>(t: ReqRes<E, A>) => {
|
|
26
|
-
const dec = flow(
|
|
27
|
-
x.
|
|
28
|
-
? x.
|
|
29
|
-
? Option(x.effect.right[0])
|
|
30
|
-
: Option.none
|
|
22
|
+
export const parseOptUnknown = <E, A>(t: REST.ReqRes<E, A>) => {
|
|
23
|
+
const dec = flow(t.parseEither, (x) =>
|
|
24
|
+
x._tag === "Right"
|
|
25
|
+
? Option(x.right)
|
|
31
26
|
: Option.none)
|
|
32
27
|
return dec
|
|
33
28
|
}
|
|
34
29
|
|
|
35
|
-
export function parseRouteParamsOption<NER extends Record<string,
|
|
30
|
+
export function parseRouteParamsOption<NER extends Record<string, Schema<any, any>>>(
|
|
36
31
|
query: Record<string, any>,
|
|
37
32
|
t: NER // enforce non empty
|
|
38
33
|
): {
|
|
39
|
-
[K in keyof NER]: Option<To<NER[K]>>
|
|
34
|
+
[K in keyof NER]: Option<Schema.To<NER[K]>>
|
|
40
35
|
} {
|
|
41
36
|
return t.$$.keys.reduce(
|
|
42
37
|
(prev, cur) => {
|
|
@@ -46,26 +41,26 @@ export function parseRouteParamsOption<NER extends Record<string, SchemaAny>>(
|
|
|
46
41
|
return prev
|
|
47
42
|
},
|
|
48
43
|
{} as {
|
|
49
|
-
[K in keyof NER]: Option<To<NER[K]>>
|
|
44
|
+
[K in keyof NER]: Option<Schema.To<NER[K]>>
|
|
50
45
|
}
|
|
51
46
|
)
|
|
52
47
|
}
|
|
53
48
|
|
|
54
|
-
export function parseRouteParams<NER extends Record<string,
|
|
49
|
+
export function parseRouteParams<NER extends Record<string, Schema<any, any>>>(
|
|
55
50
|
query: Record<string, any>,
|
|
56
51
|
t: NER // enforce non empty
|
|
57
52
|
): {
|
|
58
|
-
[K in keyof NER]: To<NER[K]>
|
|
53
|
+
[K in keyof NER]: Schema.To<NER[K]>
|
|
59
54
|
} {
|
|
60
55
|
return t.$$.keys.reduce(
|
|
61
56
|
(prev, cur) => {
|
|
62
57
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
63
|
-
prev[cur] =
|
|
58
|
+
prev[cur] = t[cur]!.parseSync(query[cur as any])
|
|
64
59
|
|
|
65
60
|
return prev
|
|
66
61
|
},
|
|
67
62
|
{} as {
|
|
68
|
-
[K in keyof NER]: To<NER[K]>
|
|
63
|
+
[K in keyof NER]: Schema.To<NER[K]>
|
|
69
64
|
}
|
|
70
65
|
)
|
|
71
66
|
}
|
package/dist/routeParams.d.ts
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { Option } from "@effect-app/core/Option";
|
|
2
|
-
import type {
|
|
3
|
-
import { Parser } from "@effect-app/prelude/schema";
|
|
2
|
+
import type { REST, Schema } from "@effect-app/prelude/schema";
|
|
4
3
|
import type { ParsedQuery } from "query-string";
|
|
5
4
|
export declare function getQueryParam(search: ParsedQuery, param: string): string | null | undefined;
|
|
6
5
|
export declare const getQueryParamO: (search: ParsedQuery, param: string) => import("effect/Option").Option<string>;
|
|
7
|
-
export declare const parseOpt: <E, A>(t: ReqRes<E, A>) => (
|
|
8
|
-
export declare const parseOptUnknown: <E, A>(t: ReqRes<E, A>) => (
|
|
9
|
-
export declare function parseRouteParamsOption<NER extends Record<string,
|
|
10
|
-
[K in keyof NER]: Option<To<NER[K]>>;
|
|
6
|
+
export declare const parseOpt: <E, A>(t: REST.ReqRes<E, A>) => (i: unknown, options?: import("@effect/schema/AST").ParseOptions | undefined) => import("effect/Option").None<A> | import("effect/Option").Some<A>;
|
|
7
|
+
export declare const parseOptUnknown: <E, A>(t: REST.ReqRes<E, A>) => (i: unknown, options?: import("@effect/schema/AST").ParseOptions | undefined) => import("effect/Option").None<A> | import("effect/Option").Some<A>;
|
|
8
|
+
export declare function parseRouteParamsOption<NER extends Record<string, Schema<any, any>>>(query: Record<string, any>, t: NER): {
|
|
9
|
+
[K in keyof NER]: Option<Schema.To<NER[K]>>;
|
|
11
10
|
};
|
|
12
|
-
export declare function parseRouteParams<NER extends Record<string,
|
|
13
|
-
[K in keyof NER]: To<NER[K]>;
|
|
11
|
+
export declare function parseRouteParams<NER extends Record<string, Schema<any, any>>>(query: Record<string, any>, t: NER): {
|
|
12
|
+
[K in keyof NER]: Schema.To<NER[K]>;
|
|
14
13
|
};
|
|
15
14
|
//# sourceMappingURL=routeParams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../_src/routeParams.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"routeParams.d.ts","sourceRoot":"","sources":["../_src/routeParams.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,6BAM/D;AAED,eAAO,MAAM,cAAc,gFAA2C,CAAA;AAEtE,eAAO,MAAM,QAAQ,YAAa,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,uJAMlD,CAAA;AAED,eAAO,MAAM,eAAe,YAAa,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,uJAMzD,CAAA;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACjF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAYA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC3E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,CAAC,EAAE,GAAG,GACL;KACA,CAAC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,CAYA"}
|
package/dist/routeParams.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Option";
|
|
2
2
|
import * as tsplus_module_2 from "@effect-app/core/Function";
|
|
3
|
-
import * as tsplus_module_3 from "@effect
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/
|
|
5
|
-
import
|
|
3
|
+
import * as tsplus_module_3 from "@effect/schema/Parser";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/core/Option";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/prelude/utils";
|
|
6
6
|
export function getQueryParam(search, param) {
|
|
7
7
|
const v = search[param];
|
|
8
8
|
if (Array.isArray(v)) {
|
|
@@ -12,24 +12,20 @@ export function getQueryParam(search, param) {
|
|
|
12
12
|
}
|
|
13
13
|
export const getQueryParamO = tsplus_module_2.flow(getQueryParam, tsplus_module_1.fromNullable);
|
|
14
14
|
export const parseOpt = (t) => {
|
|
15
|
-
const dec = tsplus_module_2.flow(
|
|
16
|
-
? x.
|
|
17
|
-
|
|
18
|
-
: tsplus_module_3.none
|
|
19
|
-
: tsplus_module_3.none);
|
|
15
|
+
const dec = tsplus_module_2.flow(tsplus_module_3.parseEither(t), (x) => x._tag === "Right"
|
|
16
|
+
? tsplus_module_1.some(x.right)
|
|
17
|
+
: tsplus_module_4.none);
|
|
20
18
|
return dec;
|
|
21
19
|
};
|
|
22
20
|
export const parseOptUnknown = (t) => {
|
|
23
|
-
const dec = tsplus_module_2.flow(
|
|
24
|
-
? x.
|
|
25
|
-
|
|
26
|
-
: tsplus_module_3.none
|
|
27
|
-
: tsplus_module_3.none);
|
|
21
|
+
const dec = tsplus_module_2.flow(tsplus_module_3.parseEither(t), (x) => x._tag === "Right"
|
|
22
|
+
? tsplus_module_1.some(x.right)
|
|
23
|
+
: tsplus_module_4.none);
|
|
28
24
|
return dec;
|
|
29
25
|
};
|
|
30
26
|
export function parseRouteParamsOption(query, t // enforce non empty
|
|
31
27
|
) {
|
|
32
|
-
return
|
|
28
|
+
return tsplus_module_5.RecordKeys(tsplus_module_5.object$(t)).reduce((prev, cur) => {
|
|
33
29
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
34
30
|
prev[cur] = tsplus_module_1.flatMap(getQueryParamO(query, cur), parseOpt(t[cur]));
|
|
35
31
|
return prev;
|
|
@@ -37,10 +33,10 @@ export function parseRouteParamsOption(query, t // enforce non empty
|
|
|
37
33
|
}
|
|
38
34
|
export function parseRouteParams(query, t // enforce non empty
|
|
39
35
|
) {
|
|
40
|
-
return
|
|
36
|
+
return tsplus_module_5.RecordKeys(tsplus_module_5.object$(t)).reduce((prev, cur) => {
|
|
41
37
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
42
|
-
prev[cur] =
|
|
38
|
+
prev[cur] = tsplus_module_3.parseSync(t[cur])(query[cur]);
|
|
43
39
|
return prev;
|
|
44
40
|
}, {});
|
|
45
41
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVQYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9fc3JjL3JvdXRlUGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFtQixFQUFFLEtBQWE7SUFDOUQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFBLElBQUksQ0FBQyxhQUFhLCtCQUFzQixDQUFBO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFPLENBQW9CLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEdBQUcsR0FBRyxnQkFBQSxJQUFJLDZCQUFDLENBQUMsR0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3BDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUNoQixDQUFDLENBQUMscUJBQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqQixDQUFDLHFCQUFZLENBQUMsQ0FBQTtJQUNsQixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFPLENBQW9CLEVBQUUsRUFBRTtJQUM1RCxNQUFNLEdBQUcsR0FBRyxnQkFBQSxJQUFJLDZCQUFDLENBQUMsR0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3BDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUNoQixDQUFDLENBQUMscUJBQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqQixDQUFDLHFCQUFZLENBQUMsQ0FBQTtJQUNsQixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsS0FBMEIsRUFDMUIsQ0FBTSxDQUFDLG9CQUFvQjs7SUFJM0IsT0FBTyxtREFBQSxDQUFDLEdBQVMsTUFBTSxDQUNyQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsd0JBQUEsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFhLENBQUMsRUFBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBRSxDQUFDLENBQUMsQ0FBQTtRQUUzRSxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUVDLENBQ0YsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEtBQTBCLEVBQzFCLENBQU0sQ0FBQyxvQkFBb0I7O0lBSTNCLE9BQU8sbURBQUEsQ0FBQyxHQUFTLE1BQU0sQ0FDckIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDWixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLDBCQUFBLENBQUMsQ0FBQyxHQUFHLENBQUUsRUFBVyxLQUFLLENBQUMsR0FBVSxDQUFDLENBQUMsQ0FBQTtRQUVoRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUVDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0-next.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@effect/platform-browser": "^0.25.0",
|
|
8
|
+
"@effect/schema": "^0.56.1",
|
|
8
9
|
"@fp-ts/optic": "^0.21.0",
|
|
9
10
|
"@formatjs/intl": "^2.9.9",
|
|
10
11
|
"effect": "^2.0.0-next.62",
|
|
11
12
|
"query-string": "^8.1.0",
|
|
12
13
|
"swrv": "^1.0.4",
|
|
13
14
|
"vue": "^3.3.13",
|
|
14
|
-
"@effect-app/prelude": "0.
|
|
15
|
-
"@effect-app/
|
|
16
|
-
"@effect-app/
|
|
17
|
-
"@effect-app/
|
|
15
|
+
"@effect-app/prelude": "0.107.0-next.0",
|
|
16
|
+
"@effect-app/schema": "0.150.0-next.0",
|
|
17
|
+
"@effect-app/vue": "0.87.0-next.0",
|
|
18
|
+
"@effect-app/core": "0.97.0-next.0"
|
|
18
19
|
},
|
|
19
20
|
"devDependencies": {
|
|
20
21
|
"@rollup/pluginutils": "^5.1.0",
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
"typescript": "npm:@effect-app/typescript@5.4.0-tsplus.202311222",
|
|
26
27
|
"vite": "^5.0.10",
|
|
27
28
|
"vitest": "^1.1.0",
|
|
28
|
-
"@effect-app/compiler": "0.
|
|
29
|
+
"@effect-app/compiler": "0.48.0-next.0"
|
|
29
30
|
},
|
|
30
31
|
"typesVersions": {
|
|
31
32
|
"*": {
|
|
@@ -55,16 +56,6 @@
|
|
|
55
56
|
"default": "./_cjs/_global.cjs"
|
|
56
57
|
}
|
|
57
58
|
},
|
|
58
|
-
"./form": {
|
|
59
|
-
"import": {
|
|
60
|
-
"types": "./dist/form.d.ts",
|
|
61
|
-
"default": "./dist/form.js"
|
|
62
|
-
},
|
|
63
|
-
"require": {
|
|
64
|
-
"types": "./dist/form.d.ts",
|
|
65
|
-
"default": "./_cjs/form.cjs"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
59
|
"./hooks": {
|
|
69
60
|
"import": {
|
|
70
61
|
"types": "./dist/hooks.d.ts",
|
package/tsconfig.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"strict": true,
|
|
4
4
|
"allowUnusedLabels": false,
|
|
5
5
|
"allowUnreachableCode": false,
|
|
6
|
-
"exactOptionalPropertyTypes":
|
|
6
|
+
"exactOptionalPropertyTypes": true,
|
|
7
7
|
"noFallthroughCasesInSwitch": true,
|
|
8
8
|
"noImplicitOverride": true,
|
|
9
9
|
"noImplicitReturns": false,
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"./node_modules/@effect-app/core/vendor/effect-stm-tsplus.json",
|
|
44
44
|
"./node_modules/@effect-app/core/vendor/effect-stream-tsplus.json",
|
|
45
45
|
"./node_modules/@effect-app/core/vendor/fp-ts-optic-tsplus.json",
|
|
46
|
+
"./node_modules/@effect-app/core/vendor/effect-schema-tsplus.json",
|
|
46
47
|
"./node_modules/@effect-app/core/vendor/effect-platform-tsplus.json"
|
|
47
48
|
],
|
|
48
49
|
"plugins": [
|
package/_cjs/form.cjs
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.buildFieldInfoFromFields = buildFieldInfoFromFields;
|
|
7
|
-
exports.buildFormFromSchema = void 0;
|
|
8
|
-
exports.convertIn = convertIn;
|
|
9
|
-
exports.convertOut = convertOut;
|
|
10
|
-
exports.convertOutInt = convertOutInt;
|
|
11
|
-
exports.translate = exports.customSchemaErrors = void 0;
|
|
12
|
-
var tsplus_module_1 = _interopRequireWildcard(require("@effect-app/prelude/utils"));
|
|
13
|
-
var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/prelude"));
|
|
14
|
-
var tsplus_module_3 = _interopRequireWildcard(require("effect/Option"));
|
|
15
|
-
var tsplus_module_4 = _interopRequireWildcard(require("effect/Either"));
|
|
16
|
-
var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/core/Function"));
|
|
17
|
-
var _schema = require("@effect-app/prelude/schema");
|
|
18
|
-
var _intl = require("@formatjs/intl");
|
|
19
|
-
var _vue = require("vue");
|
|
20
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
22
|
-
function convertIn(v, type) {
|
|
23
|
-
return v === null ? "" : type === "text" ? v : `${v}`;
|
|
24
|
-
}
|
|
25
|
-
function convertOutInt(v, type) {
|
|
26
|
-
v = v == null ? v : v.trim();
|
|
27
|
-
const c = v === "" ? null : type === "float" ? parseFloat(v) : type === "int" ? parseInt(v) : v;
|
|
28
|
-
return c;
|
|
29
|
-
}
|
|
30
|
-
function convertOut(v, set, type) {
|
|
31
|
-
return set(convertOutInt(v, type));
|
|
32
|
-
}
|
|
33
|
-
function buildFieldInfoFromFields(fields) {
|
|
34
|
-
return tsplus_module_1.RecordKeys(tsplus_module_1.object$(fields)).reduce((prev, cur) => {
|
|
35
|
-
prev[cur] = buildFieldInfo(fields[cur], cur);
|
|
36
|
-
return prev;
|
|
37
|
-
}, {});
|
|
38
|
-
}
|
|
39
|
-
const f = Symbol();
|
|
40
|
-
class PhantomTypeParameter {}
|
|
41
|
-
const defaultIntl = (0, _intl.createIntl)({
|
|
42
|
-
locale: "en"
|
|
43
|
-
});
|
|
44
|
-
const translate = exports.translate = (0, _vue.ref)(defaultIntl.formatMessage.bind(defaultIntl));
|
|
45
|
-
const customSchemaErrors = exports.customSchemaErrors = (0, _vue.ref)(new Map());
|
|
46
|
-
function buildFieldInfo(propOrSchema, fieldKey) {
|
|
47
|
-
const metadata = (0, _schema.getMetadataFromSchemaOrProp)(propOrSchema);
|
|
48
|
-
const schema = (0, _schema.isSchema)(propOrSchema) ? propOrSchema : propOrSchema._schema;
|
|
49
|
-
const parse = _schema.Parser.for(schema);
|
|
50
|
-
const nullable = tsplus_module_2.Schema.findAnnotation(schema, tsplus_module_2.Schema.nullableIdentifier);
|
|
51
|
-
function renderError(e, v) {
|
|
52
|
-
const err = (0, _schema.drawError)(e);
|
|
53
|
-
const custom = customSchemaErrors.value.get(schema) ?? (nullable?.self ? customSchemaErrors.value.get(nullable.self) : undefined);
|
|
54
|
-
return custom ? custom(err, e, v) : translate.value({
|
|
55
|
-
defaultMessage: "The entered value is not a valid {type}: {message}",
|
|
56
|
-
id: "validation.not_a_valid"
|
|
57
|
-
}, {
|
|
58
|
-
type: translate.value({
|
|
59
|
-
defaultMessage: (0, _vue.capitalize)(fieldKey.toString()),
|
|
60
|
-
id: `fieldNames.${String(fieldKey)}`
|
|
61
|
-
}),
|
|
62
|
-
message: err.slice(err.indexOf("expected")) // TODO: this is not translated.
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
const stringRules = [v => v === null || metadata.minLength === undefined || v.length >= metadata.minLength || translate.value({
|
|
66
|
-
defaultMessage: "The field requires at least {minLength} characters",
|
|
67
|
-
id: "validation.string.minLength"
|
|
68
|
-
}, {
|
|
69
|
-
minLength: metadata.minLength
|
|
70
|
-
}), v => v === null || metadata.maxLength === undefined || v.length <= metadata.maxLength || translate.value({
|
|
71
|
-
defaultMessage: "The field cannot have more than {maxLength} characters",
|
|
72
|
-
id: "validation.string.maxLength"
|
|
73
|
-
}, {
|
|
74
|
-
maxLength: metadata.maxLength
|
|
75
|
-
})];
|
|
76
|
-
const numberRules = [v => v === null || metadata.minimum === undefined || metadata.minimumExclusive && v > metadata.minimum || !metadata.minimumExclusive && v >= metadata.minimum || translate.value({
|
|
77
|
-
defaultMessage: "The value should be {isExclusive, select, true {larger than} other {at least}} {minimum}",
|
|
78
|
-
id: "validation.number.min"
|
|
79
|
-
}, {
|
|
80
|
-
isExclusive: metadata.minimumExclusive,
|
|
81
|
-
minimum: metadata.minimum
|
|
82
|
-
}), v => v === null || metadata.maximum === undefined || metadata.maximumExclusive && v < metadata.maximum || !metadata.maximumExclusive && v <= metadata.maximum || translate.value({
|
|
83
|
-
defaultMessage: "The value should be {isExclusive, select, true {smaller than} other {at most}} {maximum}",
|
|
84
|
-
id: "validation.number.max"
|
|
85
|
-
}, {
|
|
86
|
-
isExclusive: metadata.maximumExclusive,
|
|
87
|
-
maximum: metadata.maximum
|
|
88
|
-
})];
|
|
89
|
-
const parseRule = v => tsplus_module_5.pipe(parse(v), _schema.These.result, _ => tsplus_module_4.match(_, {
|
|
90
|
-
onLeft: _ => renderError(_, v),
|
|
91
|
-
onRight: ([_, optErr]) => tsplus_module_3.isSome(optErr) ? renderError(optErr.value, v) : true
|
|
92
|
-
}));
|
|
93
|
-
const rules = [...(metadata.type === "text" ? stringRules : numberRules), parseRule];
|
|
94
|
-
const info = {
|
|
95
|
-
type: metadata.type,
|
|
96
|
-
rules: [v => !metadata.required || v !== "" || translate.value({
|
|
97
|
-
defaultMessage: "The field cannot be empty",
|
|
98
|
-
id: "validation.empty"
|
|
99
|
-
}), v => {
|
|
100
|
-
const converted = convertOutInt(v, metadata.type);
|
|
101
|
-
for (const r of rules) {
|
|
102
|
-
const res = r(converted);
|
|
103
|
-
if (res !== true) {
|
|
104
|
-
return res;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return true;
|
|
108
|
-
}],
|
|
109
|
-
metadata
|
|
110
|
-
};
|
|
111
|
-
return info;
|
|
112
|
-
}
|
|
113
|
-
const buildFormFromSchema = (s, state, onSubmit) => {
|
|
114
|
-
const fields = buildFieldInfoFromFields(s.Api.fields);
|
|
115
|
-
const parse = (0, _schema.unsafe)(tsplus_module_2.Schema.Parser.for(s));
|
|
116
|
-
const isDirty = (0, _vue.ref)(false);
|
|
117
|
-
const isValid = (0, _vue.ref)(true);
|
|
118
|
-
const submit1 = onSubmit => async e => {
|
|
119
|
-
const r = await e;
|
|
120
|
-
if (!r.valid) return;
|
|
121
|
-
return onSubmit(parse(state.value));
|
|
122
|
-
};
|
|
123
|
-
const submit = submit1(onSubmit);
|
|
124
|
-
(0, _vue.watch)(state, v => {
|
|
125
|
-
// TODO: do better
|
|
126
|
-
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
127
|
-
}, {
|
|
128
|
-
deep: true
|
|
129
|
-
});
|
|
130
|
-
const submitFromState = () => submit(Promise.resolve({
|
|
131
|
-
valid: isValid.value
|
|
132
|
-
}));
|
|
133
|
-
return {
|
|
134
|
-
fields,
|
|
135
|
-
submit,
|
|
136
|
-
submitFromState,
|
|
137
|
-
isDirty,
|
|
138
|
-
isValid
|
|
139
|
-
};
|
|
140
|
-
};
|
|
141
|
-
exports.buildFormFromSchema = buildFormFromSchema;
|
|
142
|
-
//# sourceMappingURL=form.cjs.map
|
package/_cjs/form.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form.cjs","names":["_schema","require","_intl","_vue","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","convertIn","v","type","convertOutInt","trim","c","parseFloat","parseInt","convertOut","buildFieldInfoFromFields","fields","tsplus_module_1","RecordKeys","object$","reduce","prev","cur","buildFieldInfo","f","Symbol","PhantomTypeParameter","defaultIntl","createIntl","locale","translate","exports","ref","formatMessage","bind","customSchemaErrors","Map","propOrSchema","fieldKey","metadata","getMetadataFromSchemaOrProp","schema","isSchema","parse","Parser","for","nullable","tsplus_module_2","Schema","findAnnotation","nullableIdentifier","renderError","err","drawError","custom","value","self","undefined","defaultMessage","id","capitalize","toString","String","message","slice","indexOf","stringRules","minLength","length","maxLength","numberRules","minimum","minimumExclusive","isExclusive","maximum","maximumExclusive","parseRule","tsplus_module_5","pipe","These","result","_","tsplus_module_4","match","onLeft","onRight","optErr","tsplus_module_3","isSome","rules","info","required","converted","res","buildFormFromSchema","s","state","onSubmit","Api","unsafe","isDirty","isValid","submit1","valid","submit","watch","JSON","stringify","deep","submitFromState","Promise","resolve"],"sources":["../_src/form.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAA4C,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAI,wBAAAJ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAe,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAEtC,SAAUY,SAASA,CAACC,CAAgB,EAAEC,IAA+B;EACzE,OAAOD,CAAC,KAAK,IAAI,GAAG,EAAE,GAAGC,IAAI,KAAK,MAAM,GAAGD,CAAC,GAAG,GAAGA,CAAC,EAAE;AACvD;AAEM,SAAUE,aAAaA,CAACF,CAAS,EAAEC,IAA+B;EACtED,CAAC,GAAGA,CAAC,IAAI,IAAI,GAAGA,CAAC,GAAGA,CAAC,CAACG,IAAI,EAAE;EAC5B,MAAMC,CAAC,GAAGJ,CAAC,KAAK,EAAE,GAAG,IAAI,GAAGC,IAAI,KAAK,OAAO,GAAGI,UAAU,CAACL,CAAC,CAAC,GAAGC,IAAI,KAAK,KAAK,GAAGK,QAAQ,CAACN,CAAC,CAAC,GAAGA,CAAC;EAC/F,OAAOI,CAAC;AACV;AAEM,SAAUG,UAAUA,CAACP,CAAS,EAAEF,GAAgC,EAAEG,IAA+B;EACrG,OAAOH,GAAG,CAACI,aAAa,CAACF,CAAC,EAAEC,IAAI,CAAC,CAAC;AACpC;AAEM,SAAUO,wBAAwBA,CACtCC,MAAc;EAEd,OAAOC,eAAA,CAAAC,UAAA,CAAAD,eAAA,CAAAE,OAAA,CAAAH,MAAM,GAASI,MAAM,CAC1B,CAACC,IAAI,EAAEC,GAAG,KAAI;IACZD,IAAI,CAACC,GAAG,CAAC,GAAGC,cAAc,CAACP,MAAM,CAACM,GAAG,CAAa,EAAEA,GAAG,CAAC;IACxD,OAAOD,IAAI;EACb,CAAC,EACD,EAKC,CACF;AACH;AAQA,MAAMG,CAAC,GAAGC,MAAM,EAAE;AAClB,MAAeC,oBAAoB;AAiBnC,MAAMC,WAAW,GAAG,IAAAC,gBAAU,EAAC;EAAEC,MAAM,EAAE;AAAI,CAAE,CAAC;AACzC,MAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,IAAAE,QAAG,EAAkCL,WAAW,CAACM,aAAa,CAACC,IAAI,CAACP,WAAW,CAAC,CAAC;AACnG,MAAMQ,kBAAkB,GAAAJ,OAAA,CAAAI,kBAAA,GAAG,IAAAH,QAAG,EAAsE,IAAII,GAAG,EAAE,CAAC;AAErH,SAASb,cAAcA,CACrBc,YAAkC,EAClCC,QAAqB;EAErB,MAAMC,QAAQ,GAAG,IAAAC,mCAA2B,EAACH,YAAY,CAAC;EAC1D,MAAMI,MAAM,GAAG,IAAAC,gBAAQ,EAACL,YAAY,CAAC,GAAGA,YAAY,GAAGA,YAAY,CAACzD,OAAO;EAC3E,MAAM+D,KAAK,GAAGC,cAAM,CAACC,GAAG,CAACJ,MAAM,CAAC;EAEhC,MAAMK,QAAQ,GAAGC,eAAA,CAAAC,MAAM,CAACC,cAAc,CAACR,MAAM,EAAEM,eAAA,CAAAC,MAAM,CAACE,kBAAkB,CAAC;EAEzE,SAASC,WAAWA,CAAClE,CAAM,EAAEsB,CAAU;IACrC,MAAM6C,GAAG,GAAG,IAAAC,iBAAS,EAACpE,CAAC,CAAC;IACxB,MAAMqE,MAAM,GAAGnB,kBAAkB,CAACoB,KAAK,CAAC9D,GAAG,CAACgD,MAAM,CAAC,KAC7CK,QAAQ,EAAEU,IAAI,GAAGrB,kBAAkB,CAACoB,KAAK,CAAC9D,GAAG,CAACqD,QAAQ,CAACU,IAAI,CAAC,GAAGC,SAAS,CAAC;IAC/E,OAAOH,MAAM,GAAGA,MAAM,CAACF,GAAG,EAAEnE,CAAC,EAAEsB,CAAC,CAAC,GAAGuB,SAAS,CAACyB,KAAK,CACjD;MAAEG,cAAc,EAAE,oDAAoD;MAAEC,EAAE,EAAE;IAAwB,CAAE,EACtG;MACEnD,IAAI,EAAEsB,SAAS,CAACyB,KAAK,CAAC;QACpBG,cAAc,EAAE,IAAAE,eAAU,EAACtB,QAAQ,CAACuB,QAAQ,EAAE,CAAC;QAC/CF,EAAE,EAAE,cAAcG,MAAM,CAACxB,QAAQ,CAAC;OACnC,CAAC;MACFyB,OAAO,EAAEX,GAAG,CAACY,KAAK,CAACZ,GAAG,CAACa,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KAC7C,CACF;EACH;EAEA,MAAMC,WAAW,GAAG,CACjB3D,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPgC,QAAQ,CAAC4B,SAAS,KAAKV,SAAS,IAChClD,CAAC,CAAC6D,MAAM,IAAI7B,QAAQ,CAAC4B,SAAS,IAC9BrC,SAAS,CAACyB,KAAK,CAAC;IACjBG,cAAc,EAAE,oDAAoD;IACpEC,EAAE,EAAE;GACL,EAAE;IACDQ,SAAS,EAAE5B,QAAQ,CAAC4B;GACrB,CAAC,EACH5D,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPgC,QAAQ,CAAC8B,SAAS,KAAKZ,SAAS,IAChClD,CAAC,CAAC6D,MAAM,IAAI7B,QAAQ,CAAC8B,SAAS,IAC9BvC,SAAS,CAACyB,KAAK,CAAC;IACjBG,cAAc,EAAE,wDAAwD;IACxEC,EAAE,EAAE;GACL,EAAE;IACDU,SAAS,EAAE9B,QAAQ,CAAC8B;GACrB,CAAC,CACL;EAED,MAAMC,WAAW,GAAG,CACjB/D,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPgC,QAAQ,CAACgC,OAAO,KAAKd,SAAS,IAC9BlB,QAAQ,CAACiC,gBAAgB,IAAIjE,CAAC,GAAGgC,QAAQ,CAACgC,OAAO,IACjD,CAAChC,QAAQ,CAACiC,gBAAgB,IAAIjE,CAAC,IAAIgC,QAAQ,CAACgC,OAAO,IACnDzC,SAAS,CAACyB,KAAK,CAAC;IACjBG,cAAc,EAAE,0FAA0F;IAC1GC,EAAE,EAAE;GACL,EAAE;IAAEc,WAAW,EAAElC,QAAQ,CAACiC,gBAAgB;IAAED,OAAO,EAAEhC,QAAQ,CAACgC;EAAO,CAAE,CAAC,EAC1EhE,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPgC,QAAQ,CAACmC,OAAO,KAAKjB,SAAS,IAC9BlB,QAAQ,CAACoC,gBAAgB,IAAIpE,CAAC,GAAGgC,QAAQ,CAACmC,OAAO,IACjD,CAACnC,QAAQ,CAACoC,gBAAgB,IAAIpE,CAAC,IAAIgC,QAAQ,CAACmC,OAAO,IACnD5C,SAAS,CAACyB,KAAK,CAAC;IACjBG,cAAc,EAAE,0FAA0F;IAC1GC,EAAE,EAAE;GACL,EAAE;IAAEc,WAAW,EAAElC,QAAQ,CAACoC,gBAAgB;IAAED,OAAO,EAAEnC,QAAQ,CAACmC;EAAO,CAAE,CAAC,CAC5E;EAED,MAAME,SAAS,GAAIrE,CAAU,IAC3BsE,eAAA,CAAAC,IAAI,CACFnC,KAAK,CAACpC,CAAC,CAAC,EACRwE,aAAK,CAACC,MAAM,EACXC,CAAC,IACAC,eAAA,CAAAC,KAAA,CAAAF,CAAC,EACC;IACEG,MAAM,EAAGH,CAAC,IAAK9B,WAAW,CAAC8B,CAAC,EAAE1E,CAAC,CAAC;IAChC8E,OAAO,EAAEA,CAAC,CAACJ,CAAC,EAAEK,MAAM,CAAC,KACnBC,eAAA,CAAAC,MAAA,CAAAF,MAAM,CAAS,GACXnC,WAAW,CAACmC,MAAM,CAAC/B,KAAK,EAAEhD,CAAC,CAAC,GAC5B;GACP,CACF,CACJ;EAGH,MAAMkF,KAAK,GAAkB,CAC3B,IAAIlD,QAAQ,CAAC/B,IAAI,KAAK,MAAM,GACxB0D,WAAW,GACXI,WAAW,CAAkB,EACjCM,SAAwB,CACzB;EAED,MAAMc,IAAI,GAAG;IACXlF,IAAI,EAAE+B,QAAQ,CAAC/B,IAAI;IACnBiF,KAAK,EAAE,CACJlF,CAAS,IACR,CAACgC,QAAQ,CAACoD,QAAQ,IACfpF,CAAC,KAAK,EAAE,IACRuB,SAAS,CAACyB,KAAK,CAAC;MAAEG,cAAc,EAAE,2BAA2B;MAAEC,EAAE,EAAE;IAAkB,CAAE,CAAC,EAC5FpD,CAAS,IAAI;MACZ,MAAMqF,SAAS,GAAGnF,aAAa,CAACF,CAAC,EAAEgC,QAAQ,CAAC/B,IAAI,CAAC;MAEjD,KAAK,MAAMrB,CAAC,IAAIsG,KAAK,EAAE;QACrB,MAAMI,GAAG,GAAG1G,CAAC,CAACyG,SAAS,CAAC;QACxB,IAAIC,GAAG,KAAK,IAAI,EAAE;UAChB,OAAOA,GAAG;QACZ;MACF;MAEA,OAAO,IAAI;IACb,CAAC,CACF;IACDtD;GACD;EAED,OAAOmD,IAAW;AACpB;AAEO,MAAMI,mBAAmB,GAAGA,CAOjCC,CAMC,EACDC,KAAgB,EAChBC,QAAuC,KACrC;EACF,MAAMjF,MAAM,GAAGD,wBAAwB,CAACgF,CAAC,CAACG,GAAG,CAAClF,MAAM,CAAC;EACrD,MAAM2B,KAAK,GAAG,IAAAwD,cAAM,EAACpD,eAAA,CAAAC,MAAM,CAACJ,MAAM,CAACC,GAAG,CAACkD,CAAC,CAAC,CAAC;EAC1C,MAAMK,OAAO,GAAG,IAAApE,QAAG,EAAC,KAAK,CAAC;EAC1B,MAAMqE,OAAO,GAAG,IAAArE,QAAG,EAAC,IAAI,CAAC;EAEzB,MAAMsE,OAAO,GAAOL,QAA+B,IAAK,MAA8ChH,CAAI,IAAI;IAC5G,MAAME,CAAC,GAAG,MAAMF,CAAC;IACjB,IAAI,CAACE,CAAC,CAACoH,KAAK,EAAE;IACd,OAAON,QAAQ,CAACtD,KAAK,CAACqD,KAAK,CAACzC,KAAK,CAAC,CAAC;EACrC,CAAC;EACD,MAAMiD,MAAM,GAAGF,OAAO,CAACL,QAAQ,CAAC;EAEhC,IAAAQ,UAAK,EACHT,KAAK,EACJzF,CAAC,IAAI;IACJ;IACA6F,OAAO,CAAC7C,KAAK,GAAGmD,IAAI,CAACC,SAAS,CAACpG,CAAC,CAAC,KAAKmG,IAAI,CAACC,SAAS,CAACX,KAAK,CAACzC,KAAK,CAAC;EACnE,CAAC,EACD;IAAEqD,IAAI,EAAE;EAAI,CAAE,CACf;EAED,MAAMC,eAAe,GAAGA,CAAA,KAAML,MAAM,CAACM,OAAO,CAACC,OAAO,CAAC;IAAER,KAAK,EAAEF,OAAO,CAAC9C;EAAK,CAAE,CAAC,CAAC;EAE/E,OAAO;IAAEvC,MAAM;IAAEwF,MAAM;IAAEK,eAAe;IAAET,OAAO;IAAEC;EAAO,CAAE;AAC9D,CAAC;AAAAtE,OAAA,CAAA+D,mBAAA,GAAAA,mBAAA"}
|
package/dist/form.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Schema } from "@effect-app/prelude";
|
|
2
|
-
import type { Field, FieldRecord, From, SchemaAny, To } from "@effect-app/prelude/schema";
|
|
3
|
-
import type { Ref } from "vue";
|
|
4
|
-
export declare function convertIn(v: string | null, type?: "text" | "float" | "int"): string;
|
|
5
|
-
export declare function convertOutInt(v: string, type?: "text" | "float" | "int"): string | number | null;
|
|
6
|
-
export declare function convertOut(v: string, set: (v: unknown | null) => void, type?: "text" | "float" | "int"): void;
|
|
7
|
-
export declare function buildFieldInfoFromFields<Fields extends FieldRecord>(fields: Fields): { [K in keyof Fields]: FieldInfo<From<GetSchemaFromProp<Fields[K]>>, To<GetSchemaFromProp<Fields[K]>>>; };
|
|
8
|
-
export interface FieldMetadata {
|
|
9
|
-
minLength: number | undefined;
|
|
10
|
-
maxLength: number | undefined;
|
|
11
|
-
required: boolean;
|
|
12
|
-
}
|
|
13
|
-
declare const f: unique symbol;
|
|
14
|
-
declare abstract class PhantomTypeParameter<Identifier extends keyof any, InstantiatedType> {
|
|
15
|
-
protected abstract readonly _: {
|
|
16
|
-
readonly [NameP in Identifier]: (_: InstantiatedType) => InstantiatedType;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export interface FieldInfo<Tin, Tout> extends PhantomTypeParameter<typeof f, {
|
|
20
|
-
in: Tin;
|
|
21
|
-
out: Tout;
|
|
22
|
-
}> {
|
|
23
|
-
rules: ((v: string) => boolean | string)[];
|
|
24
|
-
metadata: FieldMetadata;
|
|
25
|
-
type: "text" | "float" | "int";
|
|
26
|
-
}
|
|
27
|
-
type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S : never;
|
|
28
|
-
export declare const translate: Ref<{
|
|
29
|
-
(descriptor: import("@formatjs/intl").MessageDescriptor, values?: Record<string, import("intl-messageformat").PrimitiveType | import("intl-messageformat").FormatXMLElementFn<string, string>> | undefined, opts?: import("intl-messageformat").Options | undefined): string;
|
|
30
|
-
<T extends unknown>(descriptor: import("@formatjs/intl").MessageDescriptor, values?: Record<string, import("intl-messageformat").PrimitiveType | T | import("intl-messageformat").FormatXMLElementFn<T>> | undefined, opts?: import("intl-messageformat").Options | undefined): string | T | (string | T)[];
|
|
31
|
-
}>;
|
|
32
|
-
export declare const customSchemaErrors: Ref<Map<SchemaAny, (message: string, e: unknown, v: unknown) => string>>;
|
|
33
|
-
export declare const buildFormFromSchema: <To, From, ConstructorInput, Fields extends FieldRecord, OnSubmitA>(s: Schema.Schema<unknown, To, ConstructorInput, From, {
|
|
34
|
-
fields: Fields;
|
|
35
|
-
}>, state: Ref<From>, onSubmit: (a: To) => Promise<OnSubmitA>) => {
|
|
36
|
-
fields: { [K in keyof Fields]: FieldInfo<import("@effect-app/prelude/schema").From<GetSchemaFromProp<Fields[K]>>, ReturnType<GetSchemaFromProp<Fields[K]>["_To"]>>; };
|
|
37
|
-
submit: <T extends Promise<{
|
|
38
|
-
valid: boolean;
|
|
39
|
-
}>>(e: T) => Promise<OnSubmitA | undefined>;
|
|
40
|
-
submitFromState: () => Promise<OnSubmitA | undefined>;
|
|
41
|
-
isDirty: Ref<boolean>;
|
|
42
|
-
isValid: Ref<boolean>;
|
|
43
|
-
};
|
|
44
|
-
export {};
|
|
45
|
-
//# sourceMappingURL=form.d.ts.map
|
package/dist/form.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../_src/form.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAY,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAEnG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAG9B,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,UAE1E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,0BAIvE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,QAEtG;AAED,wBAAgB,wBAAwB,CAAC,MAAM,SAAS,WAAW,EACjE,MAAM,EAAE,MAAM,6GAcf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,QAAA,MAAM,CAAC,eAAW,CAAA;AAClB,uBAAe,oBAAoB,CACjC,UAAU,SAAS,MAAM,GAAG,EAC5B,gBAAgB;IAEhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;QAC7B,QAAQ,EAAE,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB;KAC1E,CAAA;CACF;AACD,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,IAAI,CAAE,SAAQ,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;IAClG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1C,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;CAC/B;AAED,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GACnE,KAAK,CAAA;AAGT,eAAO,MAAM,SAAS;;;EAAoF,CAAA;AAC1G,eAAO,MAAM,kBAAkB,+BAAgC,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM,EAAa,CAAA;AA0HrH,eAAO,MAAM,mBAAmB,yEAO3B,aAAa,CACd,OAAO,EACP,EAAE,EACF,gBAAgB,EAChB,IAAI,EACJ;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CACnB,SACM,IAAI,IAAI,CAAC,gBACF,EAAE,KAAK,QAAQ,SAAS,CAAC;;;eAOmD,OAAO;;;;;CAmBlG,CAAA"}
|
package/dist/form.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "@effect-app/prelude/utils";
|
|
2
|
-
import * as tsplus_module_2 from "@effect-app/prelude";
|
|
3
|
-
import * as tsplus_module_3 from "effect/Option";
|
|
4
|
-
import * as tsplus_module_4 from "effect/Either";
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/core/Function";
|
|
6
|
-
import { drawError, getMetadataFromSchemaOrProp, isSchema, Parser, These, unsafe } from "@effect-app/prelude/schema";
|
|
7
|
-
import { createIntl } from "@formatjs/intl";
|
|
8
|
-
import { capitalize, ref, watch } from "vue";
|
|
9
|
-
export function convertIn(v, type) {
|
|
10
|
-
return v === null ? "" : type === "text" ? v : `${v}`;
|
|
11
|
-
}
|
|
12
|
-
export function convertOutInt(v, type) {
|
|
13
|
-
v = v == null ? v : v.trim();
|
|
14
|
-
const c = v === "" ? null : type === "float" ? parseFloat(v) : type === "int" ? parseInt(v) : v;
|
|
15
|
-
return c;
|
|
16
|
-
}
|
|
17
|
-
export function convertOut(v, set, type) {
|
|
18
|
-
return set(convertOutInt(v, type));
|
|
19
|
-
}
|
|
20
|
-
export function buildFieldInfoFromFields(fields) {
|
|
21
|
-
return tsplus_module_1.RecordKeys(tsplus_module_1.object$(fields)).reduce((prev, cur) => {
|
|
22
|
-
prev[cur] = buildFieldInfo(fields[cur], cur);
|
|
23
|
-
return prev;
|
|
24
|
-
}, {});
|
|
25
|
-
}
|
|
26
|
-
const f = Symbol();
|
|
27
|
-
class PhantomTypeParameter {
|
|
28
|
-
}
|
|
29
|
-
const defaultIntl = createIntl({ locale: "en" });
|
|
30
|
-
export const translate = ref(defaultIntl.formatMessage.bind(defaultIntl));
|
|
31
|
-
export const customSchemaErrors = ref(new Map());
|
|
32
|
-
function buildFieldInfo(propOrSchema, fieldKey) {
|
|
33
|
-
const metadata = getMetadataFromSchemaOrProp(propOrSchema);
|
|
34
|
-
const schema = isSchema(propOrSchema) ? propOrSchema : propOrSchema._schema;
|
|
35
|
-
const parse = Parser.for(schema);
|
|
36
|
-
const nullable = tsplus_module_2.Schema.findAnnotation(schema, tsplus_module_2.Schema.nullableIdentifier);
|
|
37
|
-
function renderError(e, v) {
|
|
38
|
-
const err = drawError(e);
|
|
39
|
-
const custom = customSchemaErrors.value.get(schema)
|
|
40
|
-
?? (nullable?.self ? customSchemaErrors.value.get(nullable.self) : undefined);
|
|
41
|
-
return custom ? custom(err, e, v) : translate.value({ defaultMessage: "The entered value is not a valid {type}: {message}", id: "validation.not_a_valid" }, {
|
|
42
|
-
type: translate.value({
|
|
43
|
-
defaultMessage: capitalize(fieldKey.toString()),
|
|
44
|
-
id: `fieldNames.${String(fieldKey)}`
|
|
45
|
-
}),
|
|
46
|
-
message: err.slice(err.indexOf("expected")) // TODO: this is not translated.
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const stringRules = [
|
|
50
|
-
(v) => v === null
|
|
51
|
-
|| metadata.minLength === undefined
|
|
52
|
-
|| v.length >= metadata.minLength
|
|
53
|
-
|| translate.value({
|
|
54
|
-
defaultMessage: "The field requires at least {minLength} characters",
|
|
55
|
-
id: "validation.string.minLength"
|
|
56
|
-
}, {
|
|
57
|
-
minLength: metadata.minLength
|
|
58
|
-
}),
|
|
59
|
-
(v) => v === null
|
|
60
|
-
|| metadata.maxLength === undefined
|
|
61
|
-
|| v.length <= metadata.maxLength
|
|
62
|
-
|| translate.value({
|
|
63
|
-
defaultMessage: "The field cannot have more than {maxLength} characters",
|
|
64
|
-
id: "validation.string.maxLength"
|
|
65
|
-
}, {
|
|
66
|
-
maxLength: metadata.maxLength
|
|
67
|
-
})
|
|
68
|
-
];
|
|
69
|
-
const numberRules = [
|
|
70
|
-
(v) => v === null
|
|
71
|
-
|| metadata.minimum === undefined
|
|
72
|
-
|| metadata.minimumExclusive && v > metadata.minimum
|
|
73
|
-
|| !metadata.minimumExclusive && v >= metadata.minimum
|
|
74
|
-
|| translate.value({
|
|
75
|
-
defaultMessage: "The value should be {isExclusive, select, true {larger than} other {at least}} {minimum}",
|
|
76
|
-
id: "validation.number.min"
|
|
77
|
-
}, { isExclusive: metadata.minimumExclusive, minimum: metadata.minimum }),
|
|
78
|
-
(v) => v === null
|
|
79
|
-
|| metadata.maximum === undefined
|
|
80
|
-
|| metadata.maximumExclusive && v < metadata.maximum
|
|
81
|
-
|| !metadata.maximumExclusive && v <= metadata.maximum
|
|
82
|
-
|| translate.value({
|
|
83
|
-
defaultMessage: "The value should be {isExclusive, select, true {smaller than} other {at most}} {maximum}",
|
|
84
|
-
id: "validation.number.max"
|
|
85
|
-
}, { isExclusive: metadata.maximumExclusive, maximum: metadata.maximum })
|
|
86
|
-
];
|
|
87
|
-
const parseRule = (v) => tsplus_module_5.pipe(parse(v), These.result, (_) => tsplus_module_4.match(_, {
|
|
88
|
-
onLeft: (_) => renderError(_, v),
|
|
89
|
-
onRight: ([_, optErr]) => tsplus_module_3.isSome(optErr)
|
|
90
|
-
? renderError(optErr.value, v)
|
|
91
|
-
: true
|
|
92
|
-
}));
|
|
93
|
-
const rules = [
|
|
94
|
-
...(metadata.type === "text"
|
|
95
|
-
? stringRules
|
|
96
|
-
: numberRules),
|
|
97
|
-
parseRule
|
|
98
|
-
];
|
|
99
|
-
const info = {
|
|
100
|
-
type: metadata.type,
|
|
101
|
-
rules: [
|
|
102
|
-
(v) => !metadata.required
|
|
103
|
-
|| v !== ""
|
|
104
|
-
|| translate.value({ defaultMessage: "The field cannot be empty", id: "validation.empty" }),
|
|
105
|
-
(v) => {
|
|
106
|
-
const converted = convertOutInt(v, metadata.type);
|
|
107
|
-
for (const r of rules) {
|
|
108
|
-
const res = r(converted);
|
|
109
|
-
if (res !== true) {
|
|
110
|
-
return res;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
],
|
|
116
|
-
metadata
|
|
117
|
-
};
|
|
118
|
-
return info;
|
|
119
|
-
}
|
|
120
|
-
export const buildFormFromSchema = (s, state, onSubmit) => {
|
|
121
|
-
const fields = buildFieldInfoFromFields(s.Api.fields);
|
|
122
|
-
const parse = unsafe(tsplus_module_2.Schema.Parser.for(s));
|
|
123
|
-
const isDirty = ref(false);
|
|
124
|
-
const isValid = ref(true);
|
|
125
|
-
const submit1 = (onSubmit) => async (e) => {
|
|
126
|
-
const r = await e;
|
|
127
|
-
if (!r.valid)
|
|
128
|
-
return;
|
|
129
|
-
return onSubmit(parse(state.value));
|
|
130
|
-
};
|
|
131
|
-
const submit = submit1(onSubmit);
|
|
132
|
-
watch(state, (v) => {
|
|
133
|
-
// TODO: do better
|
|
134
|
-
isDirty.value = JSON.stringify(v) !== JSON.stringify(state.value);
|
|
135
|
-
}, { deep: true });
|
|
136
|
-
const submitFromState = () => submit(Promise.resolve({ valid: isValid.value }));
|
|
137
|
-
return { fields, submit, submitFromState, isDirty, isValid };
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFcEgsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFNUMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxDQUFnQixFQUFFLElBQStCO0lBQ3pFLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUE7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUyxFQUFFLElBQStCO0lBQ3RFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0YsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFTLEVBQUUsR0FBZ0MsRUFBRSxJQUErQjtJQUNyRyxPQUFPLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsTUFBYztJQUVkLE9BQU8sbURBQUEsTUFBTSxHQUFTLE1BQU0sQ0FDMUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN4RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsRUFDRCxFQUtDLENBQ0YsQ0FBQTtBQUNILENBQUM7QUFRRCxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUNsQixNQUFlLG9CQUFvQjtDQU9sQztBQVVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQWtDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7QUFDMUcsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFzRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUE7QUFFckgsU0FBUyxjQUFjLENBQ3JCLFlBQWtDLEVBQ2xDLFFBQXFCO0lBRXJCLE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFBO0lBQzNFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFaEMsTUFBTSxRQUFRLEdBQUcsZ0JBQUEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZ0JBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFekUsU0FBUyxXQUFXLENBQUMsQ0FBTSxFQUFFLENBQVU7UUFDckMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO2VBQzlDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9FLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FDakQsRUFBRSxjQUFjLEVBQUUsb0RBQW9ELEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQ3RHO1lBQ0UsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BCLGNBQWMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxFQUFFLEVBQUUsY0FBYyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7YUFDckMsQ0FBQztZQUNGLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7U0FDN0UsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHO1FBQ2xCLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQ25CLENBQUMsS0FBSyxJQUFJO2VBQ1AsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTO2VBQ2hDLENBQUMsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFNBQVM7ZUFDOUIsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDakIsY0FBYyxFQUFFLG9EQUFvRDtnQkFDcEUsRUFBRSxFQUFFLDZCQUE2QjthQUNsQyxFQUFFO2dCQUNELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUzthQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUFnQixFQUFFLEVBQUUsQ0FDbkIsQ0FBQyxLQUFLLElBQUk7ZUFDUCxRQUFRLENBQUMsU0FBUyxLQUFLLFNBQVM7ZUFDaEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsU0FBUztlQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNqQixjQUFjLEVBQUUsd0RBQXdEO2dCQUN4RSxFQUFFLEVBQUUsNkJBQTZCO2FBQ2xDLEVBQUU7Z0JBQ0QsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2FBQzlCLENBQUM7S0FDTCxDQUFBO0lBRUQsTUFBTSxXQUFXLEdBQUc7UUFDbEIsQ0FBQyxDQUFnQixFQUFFLEVBQUUsQ0FDbkIsQ0FBQyxLQUFLLElBQUk7ZUFDUCxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7ZUFDOUIsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTztlQUNqRCxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU87ZUFDbkQsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDakIsY0FBYyxFQUFFLDBGQUEwRjtnQkFDMUcsRUFBRSxFQUFFLHVCQUF1QjthQUM1QixFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNFLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQ25CLENBQUMsS0FBSyxJQUFJO2VBQ1AsUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2VBQzlCLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU87ZUFDakQsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPO2VBQ25ELFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pCLGNBQWMsRUFBRSwwRkFBMEY7Z0JBQzFHLEVBQUUsRUFBRSx1QkFBdUI7YUFDNUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUM1RSxDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUMvQixnQkFBQSxJQUFJLENBQ0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLEtBQUssQ0FBQyxNQUFNLEVBQ1osQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLHNCQUFBLENBQUMsRUFDQztRQUNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUN2Qix1QkFBQSxNQUFNLENBQVM7WUFDYixDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxJQUFJO0tBQ1gsQ0FDRixDQUNKLENBQUE7SUFHSCxNQUFNLEtBQUssR0FBa0I7UUFDM0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUMxQixDQUFDLENBQUMsV0FBVztZQUNiLENBQUMsQ0FBQyxXQUFXLENBQWtCO1FBQ2pDLFNBQXdCO0tBQ3pCLENBQUE7SUFFRCxNQUFNLElBQUksR0FBRztRQUNYLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtRQUNuQixLQUFLLEVBQUU7WUFDTCxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ1osQ0FBQyxRQUFRLENBQUMsUUFBUTttQkFDZixDQUFDLEtBQUssRUFBRTttQkFDUixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxFQUFFLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQzdGLENBQUMsQ0FBUyxFQUFFLEVBQUU7Z0JBQ1osTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBRWpELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDeEIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ2pCLE9BQU8sR0FBRyxDQUFBO29CQUNaLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUM7U0FDRjtRQUNELFFBQVE7S0FDVCxDQUFBO0lBRUQsT0FBTyxJQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBT2pDLENBTUMsRUFDRCxLQUFnQixFQUNoQixRQUF1QyxFQUN2QyxFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXpCLE1BQU0sT0FBTyxHQUFHLENBQUksUUFBK0IsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUF5QyxDQUFJLEVBQUUsRUFBRTtRQUM1RyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTtRQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFBRSxPQUFNO1FBQ3BCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUE7SUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFaEMsS0FBSyxDQUNILEtBQUssRUFDTCxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ0osa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRSxDQUFDLEVBQ0QsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQ2YsQ0FBQTtJQUVELE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM5RCxDQUFDLENBQUEifQ==
|