@effect-app/vue 0.162.1 → 0.163.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 CHANGED
@@ -1,5 +1,28 @@
1
1
  # @effect-app/vue
2
2
 
3
+ ## 0.163.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 7b1ff1c: enhance field info generation
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [7b1ff1c]
12
+ - @effect-app/core@0.167.0
13
+ - @effect-app/vue@0.163.0
14
+ - effect-app@0.198.2
15
+ - @effect-app/schema@0.217.2
16
+
17
+ ## 0.162.2
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [e165c07]
22
+ - @effect-app/schema@0.217.1
23
+ - effect-app@0.198.1
24
+ - @effect-app/vue@0.162.2
25
+
3
26
  ## 0.162.1
4
27
 
5
28
  ### Patch Changes
package/_cjs/form.cjs CHANGED
@@ -19,6 +19,24 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
19
19
  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 && {}.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; }
20
20
  // type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S
21
21
  // : never
22
+ function getTypeLiteralAST(ast) {
23
+ switch (ast._tag) {
24
+ case "TypeLiteral":
25
+ {
26
+ return ast;
27
+ }
28
+ case "Transformation":
29
+ {
30
+ // this may be not correct for transformations from a type literal to something
31
+ // that is not a type literal nor a class because we would prefer the from AST
32
+ return getTypeLiteralAST(ast.to) ?? getTypeLiteralAST(ast.from);
33
+ }
34
+ default:
35
+ {
36
+ return null;
37
+ }
38
+ }
39
+ }
22
40
  function convertIn(v, type) {
23
41
  return v === null ? "" : type === "text" ? v : `${v}`;
24
42
  }
@@ -30,22 +48,84 @@ function convertOutInt(v, type) {
30
48
  function convertOut(v, set, type) {
31
49
  return set(convertOutInt(v, type));
32
50
  }
51
+ const f = Symbol();
52
+ function handlePropertySignature(propertySignature) {
53
+ const schema = _effectApp.S.make(propertySignature.type);
54
+ switch (schema.ast._tag) {
55
+ case "Transformation":
56
+ {
57
+ const tl = getTypeLiteralAST(schema.ast);
58
+ return tl ? handlePropertySignature(new _effectApp.S.AST.PropertySignature(propertySignature.name, tl, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations)) : buildFieldInfo(propertySignature);
59
+ }
60
+ case "TypeLiteral":
61
+ {
62
+ return buildFieldInfoFromFields(schema);
63
+ }
64
+ case "Union":
65
+ {
66
+ const allTypeLiterals = schema.ast.types.every(getTypeLiteralAST);
67
+ if (allTypeLiterals) {
68
+ const members = schema.ast.types.map(elAst =>
69
+ // syntehtic property signature as if each union member were the only member
70
+ new _effectApp.S.AST.PropertySignature(propertySignature.name, elAst, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations)).flatMap(ps => {
71
+ // try to retrieve the _tag literal to set _infoTag later
72
+ const typeLiteral = getTypeLiteralAST(ps.type);
73
+ const tagPropertySignature = typeLiteral?.propertySignatures.find(_ => _.name === "_tag");
74
+ const tagLiteral = tagPropertySignature && _effectApp.S.AST.isLiteral(tagPropertySignature.type) && typeof tagPropertySignature.type.literal === "string" ? tagPropertySignature.type.literal : void 0;
75
+ const toRet = handlePropertySignature(ps);
76
+ if (toRet._tag === "UnionFieldInfo") {
77
+ return toRet.members;
78
+ } else if (toRet._tag === "NestedFieldInfo") {
79
+ return [{
80
+ ...toRet,
81
+ _infoTag: tagLiteral
82
+ }];
83
+ } else if (toRet._tag === "DiscriminatedUnionFieldInfo") {
84
+ return Object.values(toRet.members);
85
+ } else {
86
+ return [toRet];
87
+ }
88
+ });
89
+ // support only _tag as discriminating key and it has to be a string
90
+ const isDiscriminatedUnion = members.every(_ => _._tag === "NestedFieldInfo" && _._infoTag !== undefined);
91
+ if (isDiscriminatedUnion) {
92
+ return {
93
+ members: members.reduce((acc, cur) => {
94
+ // see the definiton of isDiscriminatedUnion
95
+ const tag = cur._infoTag;
96
+ acc[tag] = cur;
97
+ return acc;
98
+ }, {}),
99
+ _tag: "DiscriminatedUnionFieldInfo"
100
+ };
101
+ } else {
102
+ return {
103
+ members,
104
+ _tag: "UnionFieldInfo"
105
+ };
106
+ }
107
+ } else {
108
+ return buildFieldInfo(propertySignature);
109
+ }
110
+ }
111
+ default:
112
+ {
113
+ return buildFieldInfo(propertySignature);
114
+ }
115
+ }
116
+ }
33
117
  function buildFieldInfoFromFields(schema) {
34
- const ast = "fields" in schema && schema.fields ? _effectApp.S.struct(schema.fields).ast : schema.ast;
35
- // // todo: or look at from?
36
- // if (S.AST.isTransform(ast)) {
37
- // if (S.AST.isDeclaration(ast.to)) {
38
- // ast = ast.to.type //no longer eists
39
- // }
40
- // }
41
- if (!_effectApp.S.AST.isTypeLiteral(ast)) throw new Error("not a struct type");
42
- return ast.propertySignatures.reduce((prev, cur) => {
118
+ const ast = getTypeLiteralAST(schema.ast);
119
+ if (!ast) throw new Error("not a struct type");
120
+ return ast.propertySignatures.reduce((acc, cur) => {
43
121
  ;
44
- prev[cur.name] = buildFieldInfo(cur);
45
- return prev;
46
- }, {});
122
+ acc.fields[cur.name] = handlePropertySignature(cur);
123
+ return acc;
124
+ }, {
125
+ _tag: "NestedFieldInfo",
126
+ fields: {}
127
+ });
47
128
  }
48
- const f = Symbol();
49
129
  class PhantomTypeParameter {}
50
130
  const defaultIntl = (0, _intl.createIntl)({
51
131
  locale: "en"
@@ -103,7 +183,7 @@ function buildFieldInfo(property) {
103
183
  onLeft: _ => renderError(_, v),
104
184
  onRight: () => true
105
185
  }));
106
- const rules = [...(metadata.type === "text" ? stringRules : numberRules), parseRule];
186
+ const rules = [...(metadata.type === "text" ? stringRules : metadata.type === "float" || metadata.type === "int" ? numberRules : []), parseRule];
107
187
  const info = {
108
188
  type: metadata.type,
109
189
  rules: [v => !metadata.required || v !== "" || translate.value({
@@ -119,12 +199,13 @@ function buildFieldInfo(property) {
119
199
  }
120
200
  return true;
121
201
  }],
122
- metadata
202
+ metadata,
203
+ _tag: "FieldInfo"
123
204
  };
124
205
  return info;
125
206
  }
126
207
  const buildFormFromSchema = (s, state, onSubmit) => {
127
- const fields = buildFieldInfoFromFields(s);
208
+ const fields = buildFieldInfoFromFields(s).fields;
128
209
  const parse = _effectApp.S.decodeSync(s);
129
210
  const isDirty = (0, _vue.ref)(false);
130
211
  const isValid = (0, _vue.ref)(true);
@@ -172,7 +253,7 @@ function getMetadataFromSchema(ast) {
172
253
  ...rest
173
254
  };
174
255
  }
175
- // or we need to add these infos directly in the refinement like the minimum
256
+ // or we need to add these info directly in the refinement like the minimum
176
257
  // or find a jsonschema parser whojoins all of them
177
258
  // todo, we have to use $ref: "#/$defs/Int"
178
259
  // and look up
package/_cjs/form.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"form.cjs","names":["JSONSchema","_interopRequireWildcard","require","_intl","_effectApp","_vue","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","convertIn","v","type","convertOutInt","trim","c","parseFloat","parseInt","convertOut","buildFieldInfoFromFields","schema","ast","fields","S","struct","AST","isTypeLiteral","Error","propertySignatures","reduce","prev","cur","name","buildFieldInfo","f","Symbol","PhantomTypeParameter","defaultIntl","createIntl","locale","translate","exports","ref","formatMessage","bind","customSchemaErrors","Map","property","propertyKey","make","metadata","getMetadataFromSchema","parse","decodeUnknownEither","nullableOrUndefined","isUnion","types","includes","null","some","_","_tag","realSelf","filter","id","getIdentifierAnnotation","id2","renderError","err","toString","custom","value","Option","isSome","undefined","defaultMessage","capitalize","String","message","description","slice","indexOf","stringRules","minLength","length","maxLength","numberRules","minimum","exclusiveMinimum","isExclusive","maximum","exclusiveMaximum","parseRule","pipe","Either","match","onLeft","onRight","rules","info","required","converted","res","buildFormFromSchema","s","state","onSubmit","decodeSync","isDirty","isValid","submit1","valid","submit","watch","JSON","stringify","deep","submitFromState","Promise","resolve","nullable","jschema","startsWith","$ref","rest","replace","isNumber","isInt"],"sources":["../src/form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"form.cjs","names":["JSONSchema","_interopRequireWildcard","require","_intl","_effectApp","_vue","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getTypeLiteralAST","ast","_tag","to","from","convertIn","v","type","convertOutInt","trim","c","parseFloat","parseInt","convertOut","f","Symbol","handlePropertySignature","propertySignature","schema","S","make","tl","AST","PropertySignature","name","isOptional","isReadonly","annotations","buildFieldInfo","buildFieldInfoFromFields","allTypeLiterals","types","every","members","map","elAst","flatMap","ps","typeLiteral","tagPropertySignature","propertySignatures","find","_","tagLiteral","isLiteral","literal","toRet","_infoTag","values","isDiscriminatedUnion","undefined","reduce","acc","cur","tag","Error","fields","PhantomTypeParameter","defaultIntl","createIntl","locale","translate","exports","ref","formatMessage","bind","customSchemaErrors","Map","property","propertyKey","metadata","getMetadataFromSchema","parse","decodeUnknownEither","nullableOrUndefined","isUnion","includes","null","some","realSelf","filter","id","getIdentifierAnnotation","id2","renderError","err","toString","custom","value","Option","isSome","defaultMessage","capitalize","String","message","description","slice","indexOf","stringRules","minLength","length","maxLength","numberRules","minimum","exclusiveMinimum","isExclusive","maximum","exclusiveMaximum","parseRule","pipe","Either","match","onLeft","onRight","rules","info","required","converted","res","buildFormFromSchema","s","state","onSubmit","decodeSync","isDirty","isValid","submit1","valid","submit","watch","JSON","stringify","deep","submitFromState","Promise","resolve","nullable","jschema","startsWith","$ref","rest","replace","isNumber","isInt"],"sources":["../src/form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/form.d.ts CHANGED
@@ -1,37 +1,77 @@
1
+ import type { Unbranded } from "@effect-app/schema/brand";
1
2
  import { S } from "effect-app";
2
3
  import type { Schema } from "effect-app/schema";
4
+ import type { IsUnion } from "effect-app/utils";
3
5
  import type { Ref } from "vue";
4
6
  export declare function convertIn(v: string | null, type?: "text" | "float" | "int"): string;
5
7
  export declare function convertOutInt(v: string, type?: "text" | "float" | "int"): string | number | null;
6
8
  export declare function convertOut(v: string, set: (v: unknown | null) => void, type?: "text" | "float" | "int"): void;
9
+ declare const f: unique symbol;
10
+ export interface FieldInfo<Tout> extends PhantomTypeParameter<typeof f, {
11
+ out: Tout;
12
+ }> {
13
+ rules: ((v: string) => boolean | string)[];
14
+ metadata: FieldMetadata;
15
+ type: "text" | "float" | "int";
16
+ _tag: "FieldInfo";
17
+ }
18
+ export interface UnionFieldInfo<T> {
19
+ members: T;
20
+ _tag: "UnionFieldInfo";
21
+ }
22
+ export interface DiscriminatedUnionFieldInfo<T> {
23
+ members: T;
24
+ _tag: "DiscriminatedUnionFieldInfo";
25
+ }
26
+ type NestedFieldInfoKey<Key> = [Key] extends [Record<PropertyKey, any>] ? Unbranded<Key> extends Record<PropertyKey, any> ? NestedFieldInfo<Key> : FieldInfo<Key> : FieldInfo<Key>;
27
+ type DistributiveNestedFieldInfoKey<Key> = Key extends any ? NestedFieldInfoKey<Key> : never;
28
+ export type NestedFieldInfo<To extends Record<PropertyKey, any>> = {
29
+ fields: {
30
+ [K in keyof To]-?: {
31
+ "true": {
32
+ "true": To[K] extends {
33
+ "_tag": string;
34
+ } ? DiscriminatedUnionFieldInfo<{
35
+ [P in DistributiveNestedFieldInfoKey<To[K]> as (P["_infoTag" & keyof P] & string)]: P;
36
+ }> : UnionFieldInfo<DistributiveNestedFieldInfoKey<To[K]>[]>;
37
+ "false": NestedFieldInfoKey<To[K]>;
38
+ }[`${To[K] extends object ? true : false}`];
39
+ "false": NestedFieldInfoKey<To[K]>;
40
+ }[`${IsUnion<To[K]>}`];
41
+ };
42
+ _tag: "NestedFieldInfo";
43
+ _infoTag: To extends {
44
+ "_tag": string;
45
+ } ? To["_tag"] : undefined;
46
+ };
7
47
  export declare function buildFieldInfoFromFields<From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>>(schema: Schema<To, From, never> & {
8
48
  fields?: S.Struct.Fields;
9
- }): { [K in keyof To]-?: FieldInfo<To[K]>; };
49
+ }): NestedFieldInfo<To>;
10
50
  export interface FieldMetadata {
11
51
  minLength: number | undefined;
12
52
  maxLength: number | undefined;
13
53
  required: boolean;
14
54
  }
15
- declare const f: unique symbol;
16
55
  declare abstract class PhantomTypeParameter<Identifier extends keyof any, InstantiatedType> {
17
56
  protected abstract readonly _: {
18
57
  readonly [NameP in Identifier]: (_: InstantiatedType) => InstantiatedType;
19
58
  };
20
59
  }
21
- export interface FieldInfo<Tout> extends PhantomTypeParameter<typeof f, {
22
- out: Tout;
23
- }> {
24
- rules: ((v: string) => boolean | string)[];
25
- metadata: FieldMetadata;
26
- type: "text" | "float" | "int";
27
- }
28
60
  export declare const translate: Ref<{
29
61
  (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
62
  <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
63
  }>;
32
64
  export declare const customSchemaErrors: Ref<Map<string | S.AST.AST, (message: string, e: unknown, v: unknown) => string>>;
33
65
  export declare const buildFormFromSchema: <From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>, OnSubmitA>(s: Schema<To, From, never>, state: Ref<From>, onSubmit: (a: To) => Promise<OnSubmitA>) => {
34
- fields: { [K in keyof To]-?: FieldInfo<To[K]>; };
66
+ fields: { [K in keyof To]-?: {
67
+ true: {
68
+ true: To[K] extends {
69
+ _tag: string;
70
+ } ? DiscriminatedUnionFieldInfo<{ [P in DistributiveNestedFieldInfoKey<To[K]> as P["_infoTag" & keyof P] & string]: P; }> : UnionFieldInfo<DistributiveNestedFieldInfoKey<To[K]>[]>;
71
+ false: NestedFieldInfoKey<To[K]>;
72
+ }[`${To[K] extends object ? true : false}`];
73
+ false: NestedFieldInfoKey<To[K]>;
74
+ }[`${IsUnion<To[K]>}`]; };
35
75
  submit: <T extends Promise<{
36
76
  valid: boolean;
37
77
  }>>(e: T) => Promise<OnSubmitA | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,CAAC,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAM9B,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,IAAI,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EACjH,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;CAAE,4CAqB/D;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,IAAI,CAAE,SAAQ,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;IACpF,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;AAGD,eAAO,MAAM,SAAS;;;EAAoF,CAAA;AAC1G,eAAO,MAAM,kBAAkB,wCAAyC,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM,EAEhH,CAAA;AAmID,eAAO,MAAM,mBAAmB,6FAK3B,OACD,EAAE,EACF,IAAI,EACJ,KAAK,CACN,SACM,IAAI,IAAI,CAAC,gBACF,EAAE,KAAK,QAAQ,SAAS,CAAC;;;eAOmD,OAAO;;;;;CAmBlG,CAAA;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GACb;IACD,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAyCA"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
package/dist/form.js CHANGED
@@ -4,6 +4,21 @@ import { Either, Option, pipe, S } from "effect-app";
4
4
  import { capitalize, ref, watch } from "vue";
5
5
  // type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S
6
6
  // : never
7
+ function getTypeLiteralAST(ast) {
8
+ switch (ast._tag) {
9
+ case "TypeLiteral": {
10
+ return ast;
11
+ }
12
+ case "Transformation": {
13
+ // this may be not correct for transformations from a type literal to something
14
+ // that is not a type literal nor a class because we would prefer the from AST
15
+ return getTypeLiteralAST(ast.to) ?? getTypeLiteralAST(ast.from);
16
+ }
17
+ default: {
18
+ return null;
19
+ }
20
+ }
21
+ }
7
22
  export function convertIn(v, type) {
8
23
  return v === null ? "" : type === "text" ? v : `${v}`;
9
24
  }
@@ -15,25 +30,87 @@ export function convertOutInt(v, type) {
15
30
  export function convertOut(v, set, type) {
16
31
  return set(convertOutInt(v, type));
17
32
  }
33
+ const f = Symbol();
34
+ function handlePropertySignature(propertySignature) {
35
+ const schema = S.make(propertySignature.type);
36
+ switch (schema.ast._tag) {
37
+ case "Transformation": {
38
+ const tl = getTypeLiteralAST(schema.ast);
39
+ return tl
40
+ ? handlePropertySignature(new S.AST.PropertySignature(propertySignature.name, tl, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations))
41
+ : buildFieldInfo(propertySignature);
42
+ }
43
+ case "TypeLiteral": {
44
+ return buildFieldInfoFromFields(schema);
45
+ }
46
+ case "Union": {
47
+ const allTypeLiterals = schema.ast.types.every(getTypeLiteralAST);
48
+ if (allTypeLiterals) {
49
+ const members = schema
50
+ .ast
51
+ .types
52
+ .map((elAst) =>
53
+ // syntehtic property signature as if each union member were the only member
54
+ new S.AST.PropertySignature(propertySignature.name, elAst, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations))
55
+ .flatMap((ps) => {
56
+ // try to retrieve the _tag literal to set _infoTag later
57
+ const typeLiteral = getTypeLiteralAST(ps.type);
58
+ const tagPropertySignature = typeLiteral?.propertySignatures.find((_) => _.name === "_tag");
59
+ const tagLiteral = tagPropertySignature
60
+ && S.AST.isLiteral(tagPropertySignature.type)
61
+ && typeof tagPropertySignature.type.literal === "string"
62
+ ? tagPropertySignature.type.literal
63
+ : void 0;
64
+ const toRet = handlePropertySignature(ps);
65
+ if (toRet._tag === "UnionFieldInfo") {
66
+ return toRet.members;
67
+ }
68
+ else if (toRet._tag === "NestedFieldInfo") {
69
+ return [{ ...toRet, _infoTag: tagLiteral }];
70
+ }
71
+ else if (toRet._tag === "DiscriminatedUnionFieldInfo") {
72
+ return Object.values(toRet.members);
73
+ }
74
+ else {
75
+ return [toRet];
76
+ }
77
+ });
78
+ // support only _tag as discriminating key and it has to be a string
79
+ const isDiscriminatedUnion = members.every((_) => _._tag === "NestedFieldInfo" && _._infoTag !== undefined);
80
+ if (isDiscriminatedUnion) {
81
+ return {
82
+ members: members.reduce((acc, cur) => {
83
+ // see the definiton of isDiscriminatedUnion
84
+ const tag = cur._infoTag;
85
+ acc[tag] = cur;
86
+ return acc;
87
+ }, {}),
88
+ _tag: "DiscriminatedUnionFieldInfo"
89
+ };
90
+ }
91
+ else {
92
+ return { members, _tag: "UnionFieldInfo" };
93
+ }
94
+ }
95
+ else {
96
+ return buildFieldInfo(propertySignature);
97
+ }
98
+ }
99
+ default: {
100
+ return buildFieldInfo(propertySignature);
101
+ }
102
+ }
103
+ }
18
104
  export function buildFieldInfoFromFields(schema) {
19
- const ast = "fields" in schema && schema.fields
20
- ? S.struct(schema.fields).ast
21
- : schema.ast;
22
- // // todo: or look at from?
23
- // if (S.AST.isTransform(ast)) {
24
- // if (S.AST.isDeclaration(ast.to)) {
25
- // ast = ast.to.type //no longer eists
26
- // }
27
- // }
28
- if (!S.AST.isTypeLiteral(ast))
105
+ const ast = getTypeLiteralAST(schema.ast);
106
+ if (!ast)
29
107
  throw new Error("not a struct type");
30
- return ast.propertySignatures.reduce((prev, cur) => {
108
+ return ast.propertySignatures.reduce((acc, cur) => {
31
109
  ;
32
- prev[cur.name] = buildFieldInfo(cur);
33
- return prev;
34
- }, {});
110
+ acc.fields[cur.name] = handlePropertySignature(cur);
111
+ return acc;
112
+ }, { _tag: "NestedFieldInfo", fields: {} });
35
113
  }
36
- const f = Symbol();
37
114
  class PhantomTypeParameter {
38
115
  }
39
116
  const defaultIntl = createIntl({ locale: "en" });
@@ -116,7 +193,9 @@ function buildFieldInfo(property) {
116
193
  const rules = [
117
194
  ...(metadata.type === "text"
118
195
  ? stringRules
119
- : numberRules),
196
+ : metadata.type === "float" || metadata.type === "int"
197
+ ? numberRules
198
+ : []),
120
199
  parseRule
121
200
  ];
122
201
  const info = {
@@ -136,12 +215,13 @@ function buildFieldInfo(property) {
136
215
  return true;
137
216
  }
138
217
  ],
139
- metadata
218
+ metadata,
219
+ _tag: "FieldInfo"
140
220
  };
141
221
  return info;
142
222
  }
143
223
  export const buildFormFromSchema = (s, state, onSubmit) => {
144
- const fields = buildFieldInfoFromFields(s);
224
+ const fields = buildFieldInfoFromFields(s).fields;
145
225
  const parse = S.decodeSync(s);
146
226
  const isDirty = ref(false);
147
227
  const isValid = ref(true);
@@ -176,7 +256,7 @@ export function getMetadataFromSchema(ast) {
176
256
  const { $ref: _, ...rest } = jschema;
177
257
  jschema = { ...jschema["$defs"][jschema["$ref"].replace("#/$defs/", "")], ...rest };
178
258
  }
179
- // or we need to add these infos directly in the refinement like the minimum
259
+ // or we need to add these info directly in the refinement like the minimum
180
260
  // or find a jsonschema parser whojoins all of them
181
261
  // todo, we have to use $ref: "#/$defs/Int"
182
262
  // and look up
@@ -201,4 +281,4 @@ export function getMetadataFromSchema(ast) {
201
281
  required: !nullable
202
282
  };
203
283
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUE7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBR3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUU1QywwRUFBMEU7QUFDMUUsWUFBWTtBQUVaLE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBZ0IsRUFBRSxJQUErQjtJQUN6RSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFBO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVMsRUFBRSxJQUErQjtJQUN0RSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9GLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQztBQUVELE1B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
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUE7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUdoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUU1QywwRUFBMEU7QUFDMUUsWUFBWTtBQUVaLFNBQVMsaUJBQWlCLENBQUMsR0FBYztJQUN2QyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDbkIsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBQ0QsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDdEIsK0VBQStFO1lBQy9FLDhFQUE4RTtZQUM5RSxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBZ0IsRUFBRSxJQUErQjtJQUN6RSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFBO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue",
3
- "version": "0.162.1",
3
+ "version": "0.163.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
@@ -8,10 +8,10 @@
8
8
  "@formatjs/intl": "^2.10.1",
9
9
  "@tanstack/vue-query": "^5.28.9",
10
10
  "query-string": "^9.0.0",
11
- "@effect-app/core": "0.166.0",
12
- "@effect-app/vue": "0.162.1",
13
- "effect-app": "0.198.0",
14
- "@effect-app/schema": "0.217.0"
11
+ "@effect-app/vue": "0.163.0",
12
+ "@effect-app/core": "0.167.0",
13
+ "effect-app": "0.198.2",
14
+ "@effect-app/schema": "0.217.2"
15
15
  },
16
16
  "peerDependencies": {
17
17
  "@effect/platform": "^0.48.21",
package/src/form.ts CHANGED
@@ -2,14 +2,33 @@ import * as JSONSchema from "@effect/schema/JSONSchema"
2
2
  import type { ParseError } from "@effect/schema/ParseResult"
3
3
  import { createIntl, type IntlFormatters } from "@formatjs/intl"
4
4
  import type {} from "intl-messageformat"
5
+ import type { Unbranded } from "@effect-app/schema/brand"
5
6
  import { Either, Option, pipe, S } from "effect-app"
6
7
  import type { Schema } from "effect-app/schema"
8
+
9
+ import type { IsUnion } from "effect-app/utils"
7
10
  import type { Ref } from "vue"
8
11
  import { capitalize, ref, watch } from "vue"
9
12
 
10
13
  // type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S
11
14
  // : never
12
15
 
16
+ function getTypeLiteralAST(ast: S.AST.AST): S.AST.TypeLiteral | null {
17
+ switch (ast._tag) {
18
+ case "TypeLiteral": {
19
+ return ast
20
+ }
21
+ case "Transformation": {
22
+ // this may be not correct for transformations from a type literal to something
23
+ // that is not a type literal nor a class because we would prefer the from AST
24
+ return getTypeLiteralAST(ast.to) ?? getTypeLiteralAST(ast.from)
25
+ }
26
+ default: {
27
+ return null
28
+ }
29
+ }
30
+ }
31
+
13
32
  export function convertIn(v: string | null, type?: "text" | "float" | "int") {
14
33
  return v === null ? "" : type === "text" ? v : `${v}`
15
34
  }
@@ -24,27 +43,161 @@ export function convertOut(v: string, set: (v: unknown | null) => void, type?: "
24
43
  return set(convertOutInt(v, type))
25
44
  }
26
45
 
46
+ const f = Symbol()
47
+ export interface FieldInfo<Tout> extends PhantomTypeParameter<typeof f, { out: Tout }> {
48
+ rules: ((v: string) => boolean | string)[]
49
+ metadata: FieldMetadata
50
+ type: "text" | "float" | "int" // todo; multi-line vs single line text
51
+ _tag: "FieldInfo"
52
+ }
53
+
54
+ export interface UnionFieldInfo<T> {
55
+ members: T
56
+ _tag: "UnionFieldInfo"
57
+ }
58
+
59
+ export interface DiscriminatedUnionFieldInfo<T> {
60
+ members: T
61
+ _tag: "DiscriminatedUnionFieldInfo"
62
+ }
63
+
64
+ type NestedFieldInfoKey<Key> = [Key] extends [Record<PropertyKey, any>]
65
+ ? Unbranded<Key> extends Record<PropertyKey, any> ? NestedFieldInfo<Key>
66
+ : FieldInfo<Key>
67
+ : FieldInfo<Key>
68
+
69
+ type DistributiveNestedFieldInfoKey<Key> = Key extends any ? NestedFieldInfoKey<Key> : never
70
+
71
+ export type NestedFieldInfo<To extends Record<PropertyKey, any>> = // exploit eventual _tag field to propagate the unique tag
72
+ {
73
+ fields: {
74
+ [K in keyof To]-?: {
75
+ "true": {
76
+ "true": To[K] extends { "_tag": string } ? DiscriminatedUnionFieldInfo<
77
+ { [P in DistributiveNestedFieldInfoKey<To[K]> as (P["_infoTag" & keyof P] & string)]: P }
78
+ >
79
+ : UnionFieldInfo<DistributiveNestedFieldInfoKey<To[K]>[]>
80
+ "false": NestedFieldInfoKey<To[K]>
81
+ }[`${To[K] extends object ? true : false}`]
82
+ "false": NestedFieldInfoKey<To[K]>
83
+ }[`${IsUnion<To[K]>}`]
84
+ }
85
+ _tag: "NestedFieldInfo"
86
+ _infoTag: To extends { "_tag": string } ? To["_tag"] : undefined
87
+ }
88
+
89
+ function handlePropertySignature(
90
+ propertySignature: S.AST.PropertySignature
91
+ ):
92
+ | NestedFieldInfo<Record<PropertyKey, any>>
93
+ | FieldInfo<any>
94
+ | UnionFieldInfo<(NestedFieldInfo<Record<PropertyKey, any>> | FieldInfo<any>)[]>
95
+ | DiscriminatedUnionFieldInfo<Record<PropertyKey, any>>
96
+ {
97
+ const schema = S.make(propertySignature.type)
98
+
99
+ switch (schema.ast._tag) {
100
+ case "Transformation": {
101
+ const tl = getTypeLiteralAST(schema.ast)
102
+
103
+ return tl
104
+ ? handlePropertySignature(
105
+ new S.AST.PropertySignature(
106
+ propertySignature.name,
107
+ tl,
108
+ propertySignature.isOptional,
109
+ propertySignature.isReadonly,
110
+ propertySignature.annotations
111
+ )
112
+ )
113
+ : buildFieldInfo(propertySignature)
114
+ }
115
+ case "TypeLiteral": {
116
+ return buildFieldInfoFromFields(
117
+ schema as S.Schema<Record<PropertyKey, any>, Record<PropertyKey, any>, never>
118
+ )
119
+ }
120
+ case "Union": {
121
+ const allTypeLiterals = schema.ast.types.every(getTypeLiteralAST)
122
+
123
+ if (allTypeLiterals) {
124
+ const members = schema
125
+ .ast
126
+ .types
127
+ .map((elAst) =>
128
+ // syntehtic property signature as if each union member were the only member
129
+ new S.AST.PropertySignature(
130
+ propertySignature.name,
131
+ elAst,
132
+ propertySignature.isOptional,
133
+ propertySignature.isReadonly,
134
+ propertySignature.annotations
135
+ )
136
+ )
137
+ .flatMap((ps) => {
138
+ // try to retrieve the _tag literal to set _infoTag later
139
+ const typeLiteral = getTypeLiteralAST(ps.type)
140
+
141
+ const tagPropertySignature = typeLiteral?.propertySignatures.find((_) => _.name === "_tag")
142
+ const tagLiteral = tagPropertySignature
143
+ && S.AST.isLiteral(tagPropertySignature.type)
144
+ && typeof tagPropertySignature.type.literal === "string"
145
+ ? tagPropertySignature.type.literal
146
+ : void 0
147
+
148
+ const toRet = handlePropertySignature(ps)
149
+
150
+ if (toRet._tag === "UnionFieldInfo") {
151
+ return toRet.members
152
+ } else if (toRet._tag === "NestedFieldInfo") {
153
+ return [{ ...toRet, _infoTag: tagLiteral as never }]
154
+ } else if (toRet._tag === "DiscriminatedUnionFieldInfo") {
155
+ return Object.values(toRet.members) as (NestedFieldInfo<Record<PropertyKey, any>> | FieldInfo<any>)[]
156
+ } else {
157
+ return [toRet]
158
+ }
159
+ })
160
+
161
+ // support only _tag as discriminating key and it has to be a string
162
+ const isDiscriminatedUnion = members.every((_) => _._tag === "NestedFieldInfo" && _._infoTag !== undefined)
163
+
164
+ if (isDiscriminatedUnion) {
165
+ return {
166
+ members: members.reduce((acc, cur) => {
167
+ // see the definiton of isDiscriminatedUnion
168
+ const tag = (cur as NestedFieldInfo<Record<PropertyKey, any>>)._infoTag as unknown as string
169
+ acc[tag] = cur
170
+ return acc
171
+ }, {} as Record<string, NestedFieldInfo<Record<PropertyKey, any>> | FieldInfo<any>>),
172
+ _tag: "DiscriminatedUnionFieldInfo"
173
+ }
174
+ } else {
175
+ return { members, _tag: "UnionFieldInfo" }
176
+ }
177
+ } else {
178
+ return buildFieldInfo(propertySignature)
179
+ }
180
+ }
181
+
182
+ default: {
183
+ return buildFieldInfo(propertySignature)
184
+ }
185
+ }
186
+ }
187
+
27
188
  export function buildFieldInfoFromFields<From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>>(
28
189
  schema: Schema<To, From, never> & { fields?: S.Struct.Fields }
29
- ) {
30
- const ast = "fields" in schema && schema.fields
31
- ? (S.struct(schema.fields) as unknown as typeof schema).ast
32
- : schema.ast
33
- // // todo: or look at from?
34
- // if (S.AST.isTransform(ast)) {
35
- // if (S.AST.isDeclaration(ast.to)) {
36
- // ast = ast.to.type //no longer eists
37
- // }
38
- // }
39
- if (!S.AST.isTypeLiteral(ast)) throw new Error("not a struct type")
190
+ ): NestedFieldInfo<To> {
191
+ const ast = getTypeLiteralAST(schema.ast)
192
+
193
+ if (!ast) throw new Error("not a struct type")
40
194
  return ast.propertySignatures.reduce(
41
- (prev, cur) => {
42
- ;(prev as any)[cur.name] = buildFieldInfo(cur)
43
- return prev
195
+ (acc, cur) => {
196
+ ;(acc.fields as any)[cur.name] = handlePropertySignature(cur)
197
+
198
+ return acc
44
199
  },
45
- {} as {
46
- [K in keyof To]-?: FieldInfo<To[K]>
47
- }
200
+ { _tag: "NestedFieldInfo", fields: {} } as NestedFieldInfo<To>
48
201
  )
49
202
  }
50
203
 
@@ -54,7 +207,6 @@ export interface FieldMetadata {
54
207
  required: boolean
55
208
  }
56
209
 
57
- const f = Symbol()
58
210
  abstract class PhantomTypeParameter<
59
211
  Identifier extends keyof any,
60
212
  InstantiatedType
@@ -63,11 +215,7 @@ abstract class PhantomTypeParameter<
63
215
  readonly [NameP in Identifier]: (_: InstantiatedType) => InstantiatedType
64
216
  }
65
217
  }
66
- export interface FieldInfo<Tout> extends PhantomTypeParameter<typeof f, { out: Tout }> {
67
- rules: ((v: string) => boolean | string)[]
68
- metadata: FieldMetadata
69
- type: "text" | "float" | "int" // todo; multi-line vs single line text
70
- }
218
+
71
219
  const defaultIntl = createIntl({ locale: "en" })
72
220
 
73
221
  export const translate = ref<IntlFormatters["formatMessage"]>(defaultIntl.formatMessage.bind(defaultIntl))
@@ -174,7 +322,9 @@ function buildFieldInfo(
174
322
  const rules: UnknownRule[] = [
175
323
  ...(metadata.type === "text"
176
324
  ? stringRules
177
- : numberRules) as UnknownRule[],
325
+ : metadata.type === "float" || metadata.type === "int"
326
+ ? numberRules
327
+ : []) as UnknownRule[],
178
328
  parseRule as UnknownRule
179
329
  ]
180
330
 
@@ -198,7 +348,8 @@ function buildFieldInfo(
198
348
  return true
199
349
  }
200
350
  ],
201
- metadata
351
+ metadata,
352
+ _tag: "FieldInfo"
202
353
  }
203
354
 
204
355
  return info as any
@@ -217,7 +368,7 @@ export const buildFormFromSchema = <
217
368
  state: Ref<From>,
218
369
  onSubmit: (a: To) => Promise<OnSubmitA>
219
370
  ) => {
220
- const fields = buildFieldInfoFromFields(s)
371
+ const fields = buildFieldInfoFromFields(s).fields
221
372
  const parse = S.decodeSync(s)
222
373
  const isDirty = ref(false)
223
374
  const isValid = ref(true)
@@ -272,7 +423,7 @@ export function getMetadataFromSchema(
272
423
  const { $ref: _, ...rest } = jschema
273
424
  jschema = { ...jschema["$defs"][jschema["$ref"].replace("#/$defs/", "")], ...rest }
274
425
  }
275
- // or we need to add these infos directly in the refinement like the minimum
426
+ // or we need to add these info directly in the refinement like the minimum
276
427
  // or find a jsonschema parser whojoins all of them
277
428
  // todo, we have to use $ref: "#/$defs/Int"
278
429
  // and look up
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../form.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI9B,qBAAa,YAAa,SAAQ,iBAShC;CAAG;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAEvC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAK/B;CAAG;;;;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;;;;;;;;;;AAEL,cAAM,QAAS,SAAQ,aAGrB;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBL,qBAAa,cAAe,SAAQ,mBAGlC;CAAG"}
@@ -0,0 +1,262 @@
1
+ import { Effect } from "@effect-app/core"
2
+ import { S } from "effect-app"
3
+ import type { DiscriminatedUnionFieldInfo, FieldInfo, NestedFieldInfo, UnionFieldInfo } from "../src/form.js"
4
+ import { buildFieldInfoFromFields } from "../src/form.js"
5
+
6
+ export class NestedSchema extends S.Class<NestedSchema>()({
7
+ shallow: S.string,
8
+ nested: S.struct({
9
+ deep: S.NonEmptyString,
10
+ nested: S.struct({
11
+ deepest: S.number
12
+ })
13
+ }),
14
+ age: S.propertySignature(S.struct({ nfs: S.NumberFromString.pipe(S.compose(S.PositiveInt)) }))
15
+ }) {}
16
+
17
+ export class SchemaContainsClass extends S.Class<SchemaContainsClass>()({
18
+ inner: NestedSchema
19
+ }) {}
20
+
21
+ export class UnionSchema extends S.Class<UnionSchema>()({
22
+ generalUnion: S.union(S.string, S.struct({ unionNested: NestedSchema })),
23
+ structsUnion: S.union(NestedSchema, SchemaContainsClass),
24
+ optional: S.optional(S.string),
25
+ nullable: S.nullable(S.string)
26
+ }) {}
27
+
28
+ class Circle extends S.TaggedClass<Circle>()("Circle", {
29
+ radius: S.PositiveInt
30
+ }) {}
31
+
32
+ class Square extends S.TaggedClass<Square>()("Square", {
33
+ sideLength: S.PositiveInt
34
+ }) {}
35
+
36
+ class Triangle extends S.TaggedClass<Triangle>()("Triangle", {
37
+ base: S.PositiveInt,
38
+ height: S.number
39
+ }) {}
40
+
41
+ const CircleStruct = S.struct({
42
+ _tag: S.literal("CircleStruct"),
43
+ radius: S.PositiveInt
44
+ })
45
+
46
+ const SquareStruct = S.struct({
47
+ _tag: S.literal("SquareStruct"),
48
+ sideLength: S.PositiveInt
49
+ })
50
+
51
+ const TriangleStruct = S.struct({
52
+ _tag: S.literal("TriangleStruct"),
53
+ base: S.PositiveInt,
54
+ height: S.number
55
+ })
56
+
57
+ const ShapeWithStructs = S.union(CircleStruct, SquareStruct, TriangleStruct)
58
+ const ShapeWithClasses = S.union(Circle, Square, Triangle)
59
+
60
+ export class ShapeContainer extends S.Class<ShapeContainer>()({
61
+ shapeWithStruct: ShapeWithStructs,
62
+ shapeWithClasses: ShapeWithClasses
63
+ }) {}
64
+
65
+ function testFieldInfo<T>(fi: FieldInfo<T>) {
66
+ expect(fi).toBeInstanceOf(Object)
67
+ expect(fi._tag).toBe("FieldInfo")
68
+ expect(["text", "float", "int"]).toContain(fi.type)
69
+ expect(fi.rules).toBeInstanceOf(Array)
70
+ fi.rules.forEach((r) => {
71
+ expect(r).toBeInstanceOf(Function)
72
+ })
73
+ expect(fi.metadata).toBeInstanceOf(Object)
74
+ expect(fi.metadata.maxLength === void 0 || typeof fi.metadata.maxLength === "number").toBeTruthy()
75
+ expect(fi.metadata.minLength === void 0 || typeof fi.metadata.minLength === "number").toBeTruthy()
76
+ expect(typeof fi.metadata.required === "boolean").toBeTruthy()
77
+ }
78
+
79
+ function testUnionFieldInfo<T>(ufi: UnionFieldInfo<T[]>) {
80
+ expect(ufi).toBeInstanceOf(Object)
81
+ expect(ufi._tag).toBe("UnionFieldInfo")
82
+ expect(ufi.members).toBeInstanceOf(Array)
83
+ ufi.members.forEach(
84
+ (
85
+ i: any
86
+ ) => {
87
+ switch (i._tag) {
88
+ case "FieldInfo":
89
+ testFieldInfo(i as FieldInfo<any>)
90
+ break
91
+ case "NestedFieldInfo":
92
+ testNestedFieldInfo(i as NestedFieldInfo<any>)
93
+ break
94
+ case "UnionFieldInfo":
95
+ testUnionFieldInfo(i as UnionFieldInfo<any>)
96
+ break
97
+ case "DiscriminatedUnionFieldInfo":
98
+ testDiscriminatedUnionFieldInfo(i as DiscriminatedUnionFieldInfo<any>)
99
+ break
100
+ }
101
+ }
102
+ )
103
+ }
104
+
105
+ function testNestedFieldInfo<T extends Record<PropertyKey, any>>(nfi: NestedFieldInfo<T>) {
106
+ expect(nfi).toBeInstanceOf(Object)
107
+ expect(nfi._tag).toBe("NestedFieldInfo")
108
+ expect(nfi.fields).toBeInstanceOf(Object)
109
+
110
+ // remove the value of _infoTag from the object when it is undefined
111
+ // when it isn't undefined, the followin switch will ignore it
112
+ Object.values(nfi).filter(Boolean).forEach(
113
+ (
114
+ i: any
115
+ ) => {
116
+ switch (i._tag) {
117
+ case "FieldInfo":
118
+ testFieldInfo(i as FieldInfo<any>)
119
+ break
120
+ case "NestedFieldInfo":
121
+ testNestedFieldInfo(i as NestedFieldInfo<any>)
122
+ break
123
+ case "UnionFieldInfo":
124
+ testUnionFieldInfo(i as UnionFieldInfo<any>)
125
+ break
126
+ case "DiscriminatedUnionFieldInfo":
127
+ testDiscriminatedUnionFieldInfo(i as DiscriminatedUnionFieldInfo<any>)
128
+ break
129
+ }
130
+ }
131
+ )
132
+ }
133
+
134
+ function testDiscriminatedUnionFieldInfo<T extends Record<PropertyKey, any>>(dufi: DiscriminatedUnionFieldInfo<T>) {
135
+ expect(dufi).toBeInstanceOf(Object)
136
+ expect(dufi._tag).toBe("DiscriminatedUnionFieldInfo")
137
+ expect(dufi.members).toBeInstanceOf(Object)
138
+
139
+ Object.values(dufi.members).forEach(
140
+ (
141
+ i: any
142
+ ) => {
143
+ switch (i._tag) {
144
+ case "FieldInfo":
145
+ testFieldInfo(i as FieldInfo<any>)
146
+ break
147
+ case "NestedFieldInfo":
148
+ testNestedFieldInfo(i as NestedFieldInfo<any>)
149
+ break
150
+ case "UnionFieldInfo":
151
+ testUnionFieldInfo(i as UnionFieldInfo<any>)
152
+ break
153
+ case "DiscriminatedUnionFieldInfo":
154
+ testDiscriminatedUnionFieldInfo(i as DiscriminatedUnionFieldInfo<any>)
155
+ break
156
+ }
157
+ }
158
+ )
159
+ }
160
+
161
+ it("buildFieldInfo", () =>
162
+ Effect
163
+ .gen(function*() {
164
+ const nestedFieldinfo = buildFieldInfoFromFields(NestedSchema)
165
+ expectTypeOf(nestedFieldinfo).toEqualTypeOf<NestedFieldInfo<NestedSchema>>()
166
+ expectTypeOf(nestedFieldinfo.fields.shallow).toEqualTypeOf<FieldInfo<string>>()
167
+ expectTypeOf(nestedFieldinfo.fields.age).toEqualTypeOf<NestedFieldInfo<NestedSchema["age"]>>()
168
+ expectTypeOf(nestedFieldinfo.fields.age.fields.nfs).toEqualTypeOf<FieldInfo<number & S.PositiveIntBrand>>()
169
+ expectTypeOf(nestedFieldinfo.fields.nested).toEqualTypeOf<NestedFieldInfo<NestedSchema["nested"]>>()
170
+ expectTypeOf(nestedFieldinfo.fields.nested.fields.deep).toEqualTypeOf<FieldInfo<string & S.NonEmptyStringBrand>>()
171
+ expectTypeOf(nestedFieldinfo.fields.nested.fields.nested).toEqualTypeOf<
172
+ NestedFieldInfo<NestedSchema["nested"]["nested"]>
173
+ >()
174
+ expectTypeOf(nestedFieldinfo.fields.nested.fields.nested.fields.deepest).toEqualTypeOf<FieldInfo<number>>()
175
+
176
+ // it's a recursive check on actual runtime structure
177
+ testNestedFieldInfo(nestedFieldinfo)
178
+ testNestedFieldInfo(nestedFieldinfo.fields.nested)
179
+ testNestedFieldInfo(nestedFieldinfo.fields.age)
180
+ })
181
+ .pipe(Effect.runPromise))
182
+
183
+ it("buildFieldInfo schema containing class", () =>
184
+ Effect
185
+ .gen(function*() {
186
+ const fieldinfo = buildFieldInfoFromFields(SchemaContainsClass)
187
+
188
+ // the type system says that these are NestedFieldInfo<NestedSchema>s
189
+ // are they really? let's check
190
+ testNestedFieldInfo(fieldinfo.fields.inner)
191
+ testNestedFieldInfo(fieldinfo.fields.inner.fields.nested.fields.nested)
192
+ })
193
+ .pipe(Effect.runPromise))
194
+
195
+ it("buildFieldInfo with simple union", () =>
196
+ Effect
197
+ .gen(function*() {
198
+ const unionFieldinfo = buildFieldInfoFromFields(UnionSchema)
199
+ expectTypeOf(unionFieldinfo).toEqualTypeOf<NestedFieldInfo<UnionSchema>>()
200
+ expectTypeOf(unionFieldinfo.fields.nullable).toEqualTypeOf<
201
+ FieldInfo<string | null>
202
+ >()
203
+ expectTypeOf(unionFieldinfo.fields.optional).toEqualTypeOf<
204
+ FieldInfo<string | undefined>
205
+ >()
206
+ expectTypeOf(unionFieldinfo.fields.structsUnion).toEqualTypeOf<
207
+ UnionFieldInfo<(NestedFieldInfo<NestedSchema> | NestedFieldInfo<SchemaContainsClass>)[]>
208
+ >()
209
+ expectTypeOf(unionFieldinfo.fields.generalUnion).toEqualTypeOf<
210
+ FieldInfo<
211
+ string | {
212
+ readonly unionNested: NestedSchema
213
+ }
214
+ >
215
+ >
216
+
217
+ // it's a recursive check on actual runtime structure
218
+ testNestedFieldInfo(unionFieldinfo)
219
+ testFieldInfo(unionFieldinfo.fields.nullable)
220
+ testFieldInfo(unionFieldinfo.fields.optional)
221
+ console.log({ asd: unionFieldinfo.fields.structsUnion })
222
+ testUnionFieldInfo(unionFieldinfo.fields.structsUnion)
223
+ testFieldInfo(unionFieldinfo.fields.generalUnion)
224
+ })
225
+ .pipe(Effect.runPromise))
226
+
227
+ it("buildFieldInfo with tagged unions", () =>
228
+ Effect
229
+ .gen(function*() {
230
+ const shapeFieldinfo = buildFieldInfoFromFields(ShapeContainer)
231
+
232
+ // check at runtime if the structure is really an union
233
+ testDiscriminatedUnionFieldInfo(shapeFieldinfo.fields.shapeWithClasses)
234
+ testDiscriminatedUnionFieldInfo(shapeFieldinfo.fields.shapeWithStruct)
235
+
236
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Square)
237
+ expect(shapeFieldinfo.fields.shapeWithClasses.members.Square._infoTag).toBe("Square")
238
+ testFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Square.fields.sideLength)
239
+
240
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Triangle)
241
+ expect(shapeFieldinfo.fields.shapeWithClasses.members.Triangle._infoTag).toBe("Triangle")
242
+ testFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Triangle.fields.base)
243
+ testFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Triangle.fields.height)
244
+
245
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Circle)
246
+ expect(shapeFieldinfo.fields.shapeWithClasses.members.Circle._infoTag).toBe("Circle")
247
+ testFieldInfo(shapeFieldinfo.fields.shapeWithClasses.members.Circle.fields.radius)
248
+
249
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.SquareStruct)
250
+ expect(shapeFieldinfo.fields.shapeWithStruct.members.SquareStruct._infoTag).toBe("SquareStruct")
251
+ testFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.SquareStruct.fields.sideLength)
252
+
253
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.TriangleStruct)
254
+ expect(shapeFieldinfo.fields.shapeWithStruct.members.TriangleStruct._infoTag).toBe("TriangleStruct")
255
+ testFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.TriangleStruct.fields.base)
256
+ testFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.TriangleStruct.fields.height)
257
+
258
+ testNestedFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.CircleStruct)
259
+ expect(shapeFieldinfo.fields.shapeWithStruct.members.CircleStruct._infoTag).toBe("CircleStruct")
260
+ testFieldInfo(shapeFieldinfo.fields.shapeWithStruct.members.CircleStruct.fields.radius)
261
+ })
262
+ .pipe(Effect.runPromise))
@@ -0,0 +1,37 @@
1
+ // packages/vue/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: {
20
+ alias: packages.reduce((acc, cur) => {
21
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
22
+ return acc;
23
+ }, {})
24
+ // "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
25
+ }
26
+ };
27
+ console.log(cfg);
28
+ return cfg;
29
+ }
30
+
31
+ // packages/vue/vitest.config.ts
32
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/vue";
33
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
34
+ export {
35
+ vitest_config_default as default
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHMiLCAidml0ZS5jb25maWcuYmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3Z1ZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvdnVlL3ZpdGVzdC5jb25maWcudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgbWFrZUNvbmZpZyBmcm9tIFwiLi4vLi4vdml0ZS5jb25maWcuYmFzZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyhtYWtlQ29uZmlnKF9fZGlybmFtZSkpXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjsvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInZpdGVzdFwiIC8+XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzXCJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gXCJ1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlXCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlc3QvY29uZmlnXCJcblxuLy8gY29uc3QgYXV0b0ltcG9ydCA9IEF1dG9JbXBvcnQoe1xuLy8gICBkdHM6IFwiLi90ZXN0L2F1dG8taW1wb3J0cy5kLnRzXCIsXG4vLyAgIC8vIGluY2x1ZGU6IFtcbi8vICAgLy8gICAvXFwudGVzdFxcLlt0al1zeD8kLyAvLyAudHMsIC50c3gsIC5qcywgLmpzeFxuLy8gICAvLyBdLFxuLy8gICBpbXBvcnRzOiBbXG4vLyAgICAgXCJ2aXRlc3RcIlxuLy8gICBdXG4vLyB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlQ29uZmlnKGRpck5hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCJwYWNrYWdlc1wiKVxuICBjb25zdCBwYWNrYWdlcyA9IGZzLnJlYWRkaXJTeW5jKHByZWZpeCkubWFwKGYgPT4gcHJlZml4ICsgXCIvXCIgKyBmKS5maWx0ZXIoZiA9PiBmcy5sc3RhdFN5bmMoZikuaXNEaXJlY3RvcnkoKSApXG4gIGNvbnN0IGNmZyA9IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIC8vcGx1Z2luczogW2F1dG9JbXBvcnRdLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6ICBbXCIuL3Rlc3QvKiovKi50ZXN0LntqcyxtanMsY2pzLHRzLG10cyxjdHMsanN4LHRzeH1cIl0sXG4gICAgICByZXBvcnRlcnM6IFwidmVyYm9zZVwiLFxuICAgICAgZ2xvYmFsczogdHJ1ZVxuICAgIH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHsgLy8gd29ya2Fyb3VuZCBmb3IgL1ByZWx1ZGUgaXNzdWVcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBjdXIuZW5kc1dpdGgoXCJjb3JlXCIpID8gXCJkaXN0XCIgOiBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHsgfSkgLy8gXCJAZWZmZWN0LWFwcC9jb3JlL1ByZWx1ZGVcIjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCJwYWNrYWdlcy9jb3JlL3NyYy9QcmVsdWRlLmNvZGUudHNcIilcbiAgfVxuICB9XG4gIGNvbnNvbGUubG9nKGNmZylcbiAgcmV0dXJuIGNmZ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVMsb0JBQW9COzs7QUNBN0IsT0FBTyxVQUFVO0FBQ2pCLE9BQU8sUUFBUTtBQUZmLElBQU0sbUNBQW1DO0FBZ0IxQixTQUFSLFdBQTRCLFNBQWtCO0FBQ25ELFFBQU0sU0FBUyxLQUFLLFFBQVEsa0NBQVcsVUFBVTtBQUNqRCxRQUFNLFdBQVcsR0FBRyxZQUFZLE1BQU0sRUFBRSxJQUFJLE9BQUssU0FBUyxNQUFNLENBQUMsRUFBRSxPQUFPLE9BQUssR0FBRyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUU7QUFDN0csUUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBLElBR1YsTUFBTTtBQUFBLE1BQ0osU0FBVSxDQUFDLGtEQUFrRDtBQUFBLE1BQzdELFdBQVc7QUFBQSxNQUNYLFNBQVM7QUFBQSxJQUNYO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxPQUFPLFNBQVMsT0FBTyxDQUFDLEtBQUssUUFBUTtBQUNyQyxZQUFJLEtBQUssTUFBTSxHQUFHLGFBQWEsTUFBTSxpQkFBaUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLEtBQUssUUFBUSxLQUFLLElBQUksU0FBUyxNQUFNLElBQUksU0FBUyxLQUFLO0FBQy9ILGVBQU87QUFBQSxNQUNULEdBQUcsQ0FBRSxDQUFDO0FBQUE7QUFBQSxJQUNSO0FBQUEsRUFDQTtBQUNBLFVBQVEsSUFBSSxHQUFHO0FBQ2YsU0FBTztBQUNUOzs7QURwQ0EsSUFBTUEsb0NBQW1DO0FBSXpDLElBQU8sd0JBQVEsYUFBYSxXQUFXQyxpQ0FBUyxDQUFDOyIsCiAgIm5hbWVzIjogWyJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSJdCn0K