@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 +23 -0
- package/_cjs/form.cjs +98 -17
- package/_cjs/form.cjs.map +1 -1
- package/dist/form.d.ts +50 -10
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +100 -20
- package/package.json +5 -5
- package/src/form.ts +178 -27
- package/test/dist/form.test.d.ts.map +1 -0
- package/test/form.test.ts +262 -0
- package/vitest.config.ts.timestamp-1711744615240-85d4d02f24414.mjs +37 -0
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 =
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
45
|
-
return
|
|
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
|
|
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":";;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAGA,IAAAG,IAAA,GAAAH,OAAA;AAA4C,SAAAI,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,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE5C;AACA;AAEM,SAAUW,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,MAA8D;EAE9D,MAAMC,GAAG,GAAG,QAAQ,IAAID,MAAM,IAAIA,MAAM,CAACE,MAAM,GAC1CC,YAAC,CAACC,MAAM,CAACJ,MAAM,CAACE,MAAM,CAA8B,CAACD,GAAG,GACzDD,MAAM,CAACC,GAAG;EACd;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,CAACE,YAAC,CAACE,GAAG,CAACC,aAAa,CAACL,GAAG,CAAC,EAAE,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;EACnE,OAAON,GAAG,CAACO,kBAAkB,CAACC,MAAM,CAClC,CAACC,IAAI,EAAEC,GAAG,KAAI;IACZ;IAAED,IAAY,CAACC,GAAG,CAACC,IAAI,CAAC,GAAGC,cAAc,CAACF,GAAG,CAAC;IAC9C,OAAOD,IAAI;EACb,CAAC,EACD,EAEC,CACF;AACH;AAQA,MAAMI,CAAC,GAAGC,MAAM,EAAE;AAClB,MAAeC,oBAAoB;AAanC,MAAMC,WAAW,GAAG,IAAAC,gBAAU,EAAC;EAAEC,MAAM,EAAE;AAAI,CAAE,CAAC;AAEzC,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,EACnC,IAAII,GAAG,EAAE,CACV;AAED,SAASb,cAAcA,CACrBc,QAAiC;EAEjC,MAAMC,WAAW,GAAGD,QAAQ,CAACf,IAAI;EACjC,MAAMZ,MAAM,GAAGG,YAAC,CAAC0B,IAAI,CAA0BF,QAAQ,CAACnC,IAAI,CAAC;EAC7D,MAAMsC,QAAQ,GAAGC,qBAAqB,CAACJ,QAAQ,CAACnC,IAAI,CAAC,EAAC;EACtD,MAAMwC,KAAK,GAAG7B,YAAC,CAAC8B,mBAAmB,CAACjC,MAAM,CAAC;EAE3C,MAAMkC,mBAAmB,GAAG/B,YAAC,CAACE,GAAG,CAAC8B,OAAO,CAACR,QAAQ,CAACnC,IAAI,CAAC,KAClDmC,QAAQ,CAACnC,IAAI,CAAC4C,KAAK,CAACC,QAAQ,CAAClC,YAAC,CAACmC,IAAI,CAACrC,GAAG,CAAC,IAAI0B,QAAQ,CAACnC,IAAI,CAAC4C,KAAK,CAACG,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAK,kBAAkB,CAAC,CAAC;EACjH,MAAMC,QAAQ,GAAGR,mBAAmB,IAAI/B,YAAC,CAACE,GAAG,CAAC8B,OAAO,CAACR,QAAQ,CAACnC,IAAI,CAAC,GAChEmC,QAAQ,CAACnC,IAAI,CAAC4C,KAAK,CAACO,MAAM,CAAEH,CAAC,IAAKA,CAAC,KAAKrC,YAAC,CAACmC,IAAI,CAACrC,GAAG,IAAIuC,CAAC,CAACC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAE,GACxFd,QAAQ,CAACnC,IAAI;EACjB,MAAMoD,EAAE,GAAGzC,YAAC,CAACE,GAAG,CAACwC,uBAAuB,CAAClB,QAAQ,CAACnC,IAAI,CAAC;EACvD,MAAMsD,GAAG,GAAG3C,YAAC,CAACE,GAAG,CAACwC,uBAAuB,CAACH,QAAQ,CAAC;EAEnD,SAASK,WAAWA,CAAC5E,CAAa,EAAEoB,CAAU;IAC5C,MAAMyD,GAAG,GAAG7E,CAAC,CAAC8E,QAAQ,EAAE;IAExB,MAAMC,MAAM,GAAGzB,kBAAkB,CAAC0B,KAAK,CAACzE,GAAG,CAACiD,QAAQ,CAACnC,IAAI,CAAC,IACrDiC,kBAAkB,CAAC0B,KAAK,CAACzE,GAAG,CAACgE,QAAQ,CAAC,KACrCU,iBAAM,CAACC,MAAM,CAACT,EAAE,CAAC,GAAGnB,kBAAkB,CAAC0B,KAAK,CAACzE,GAAG,CAACkE,EAAE,CAACO,KAAK,CAAC,GAAGG,SAAS,CAAC,KACvEF,iBAAM,CAACC,MAAM,CAACP,GAAG,CAAC,GAAGrB,kBAAkB,CAAC0B,KAAK,CAACzE,GAAG,CAACoE,GAAG,CAACK,KAAK,CAAC,GAAGG,SAAS,CAAC;IAE/E,OAAOJ,MAAM,GAAGA,MAAM,CAACF,GAAG,EAAE7E,CAAC,EAAEoB,CAAC,CAAC,GAAG6B,SAAS,CAAC+B,KAAK,CACjD;MAAEI,cAAc,EAAE,oDAAoD;MAAEX,EAAE,EAAE;IAAwB,CAAE,EACtG;MACEpD,IAAI,EAAE4B,SAAS,CAAC+B,KAAK,CAAC;QACpBI,cAAc,EAAE,IAAAC,eAAU,EAAC5B,WAAW,CAACqB,QAAQ,EAAE,CAAC;QAClDL,EAAE,EAAE,cAAca,MAAM,CAAC7B,WAAW,CAAC;OACtC,CAAC;MACF8B,OAAO,EAAE5B,QAAQ,CAAC6B,WAAW,GAAG,WAAW,GAAG7B,QAAQ,CAAC6B,WAAW,GAAGX,GAAG,CAACY,KAAK,CAACZ,GAAG,CAACa,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KACzG,CACF;EACH;EAEA,MAAMC,WAAW,GAAG,CACjBvE,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPuC,QAAQ,CAACiC,SAAS,KAAKT,SAAS,IAChC/D,CAAC,CAACyE,MAAM,IAAIlC,QAAQ,CAACiC,SAAS,IAC9B3C,SAAS,CAAC+B,KAAK,CAAC;IACjBI,cAAc,EAAE,oDAAoD;IACpEX,EAAE,EAAE;GACL,EAAE;IACDmB,SAAS,EAAEjC,QAAQ,CAACiC;GACrB,CAAC,EACHxE,CAAgB,IACfA,CAAC,KAAK,IAAI,IACPuC,QAAQ,CAACmC,SAAS,KAAKX,SAAS,IAChC/D,CAAC,CAACyE,MAAM,IAAIlC,QAAQ,CAACmC,SAAS,IAC9B7C,SAAS,CAAC+B,KAAK,CAAC;IACjBI,cAAc,EAAE,wDAAwD;IACxEX,EAAE,EAAE;GACL,EAAE;IACDqB,SAAS,EAAEnC,QAAQ,CAACmC;GACrB,CAAC,CACL;EAED,MAAMC,WAAW,GAAG,CACjB3E,CAAgB,IACfA,CAAC,KAAK,IAAI,IACNuC,QAAQ,CAACqC,OAAO,KAAKb,SAAS,IAAIxB,QAAQ,CAACsC,gBAAgB,KAAKd,SAAU,IAC3ExB,QAAQ,CAACsC,gBAAgB,KAAKd,SAAS,IAAI/D,CAAC,GAAGuC,QAAQ,CAACsC,gBAAgB,IACxEtC,QAAQ,CAACqC,OAAO,KAAKb,SAAS,IAAI/D,CAAC,IAAIuC,QAAQ,CAACqC,OAAO,IACvD/C,SAAS,CAAC+B,KAAK,CAAC;IACjBI,cAAc,EAAE,0FAA0F;IAC1GX,EAAE,EAAE;GACL,EAAE;IACDyB,WAAW,EAAEvC,QAAQ,CAACsC,gBAAgB,KAAKd,SAAS;IACpDa,OAAO,EAAErC,QAAQ,CAACsC,gBAAgB,IAAItC,QAAQ,CAACqC;GAChD,CAAC,EACH5E,CAAgB,IACfA,CAAC,KAAK,IAAI,IACNuC,QAAQ,CAACwC,OAAO,KAAKhB,SAAS,IAAIxB,QAAQ,CAACyC,gBAAgB,KAAKjB,SAAU,IAC3ExB,QAAQ,CAACyC,gBAAgB,KAAKjB,SAAS,IAAI/D,CAAC,GAAGuC,QAAQ,CAACyC,gBAAgB,IACxEzC,QAAQ,CAACwC,OAAO,KAAKhB,SAAS,IAAI/D,CAAC,IAAIuC,QAAQ,CAACwC,OAAO,IACvDlD,SAAS,CAAC+B,KAAK,CAAC;IACjBI,cAAc,EAAE,0FAA0F;IAC1GX,EAAE,EAAE;GACL,EAAE;IACDyB,WAAW,EAAEvC,QAAQ,CAACyC,gBAAgB,KAAKjB,SAAS;IACpDgB,OAAO,EAAExC,QAAQ,CAACyC,gBAAgB,IAAIzC,QAAQ,CAACwC;GAChD,CAAC,CACL;EAED,MAAME,SAAS,GAAIjF,CAAU,IAC3B,IAAAkF,eAAI,EACFzC,KAAK,CAACzC,CAAC,CAAC,EACRmF,iBAAM,CAACC,KAAK,CAAC;IACXC,MAAM,EAAGpC,CAAC,IAAKO,WAAW,CAACP,CAAC,EAAEjD,CAAC,CAAC;IAChCsF,OAAO,EAAEA,CAAA,KAAM;GAChB,CAAC,CACH;EAGH,MAAMC,KAAK,GAAkB,CAC3B,IAAIhD,QAAQ,CAACtC,IAAI,KAAK,MAAM,GACxBsE,WAAW,GACXI,WAAW,CAAkB,EACjCM,SAAwB,CACzB;EAED,MAAMO,IAAI,GAAG;IACXvF,IAAI,EAAEsC,QAAQ,CAACtC,IAAI;IACnBsF,KAAK,EAAE,CACJvF,CAAS,IACR,CAACuC,QAAQ,CAACkD,QAAQ,IACfzF,CAAC,KAAK,EAAE,IACR6B,SAAS,CAAC+B,KAAK,CAAC;MAAEI,cAAc,EAAE,2BAA2B;MAAEX,EAAE,EAAE;IAAkB,CAAE,CAAC,EAC5FrD,CAAS,IAAI;MACZ,MAAM0F,SAAS,GAAGxF,aAAa,CAACF,CAAC,EAAEuC,QAAQ,CAACtC,IAAI,CAAC;MAEjD,KAAK,MAAMnB,CAAC,IAAIyG,KAAK,EAAE;QACrB,MAAMI,GAAG,GAAG7G,CAAC,CAAC4G,SAAS,CAAC;QACxB,IAAIC,GAAG,KAAK,IAAI,EAAE;UAChB,OAAOA,GAAG;QACZ;MACF;MAEA,OAAO,IAAI;IACb,CAAC,CACF;IACDpD;GACD;EAED,OAAOiD,IAAW;AACpB;AAEO,MAAMI,mBAAmB,GAAGA,CAKjCC,CAIC,EACDC,KAAgB,EAChBC,QAAuC,KACrC;EACF,MAAMpF,MAAM,GAAGH,wBAAwB,CAACqF,CAAC,CAAC;EAC1C,MAAMpD,KAAK,GAAG7B,YAAC,CAACoF,UAAU,CAACH,CAAC,CAAC;EAC7B,MAAMI,OAAO,GAAG,IAAAlE,QAAG,EAAC,KAAK,CAAC;EAC1B,MAAMmE,OAAO,GAAG,IAAAnE,QAAG,EAAC,IAAI,CAAC;EAEzB,MAAMoE,OAAO,GAAOJ,QAA+B,IAAK,MAA8CnH,CAAI,IAAI;IAC5G,MAAME,CAAC,GAAG,MAAMF,CAAC;IACjB,IAAI,CAACE,CAAC,CAACsH,KAAK,EAAE;IACd,OAAOL,QAAQ,CAACtD,KAAK,CAACqD,KAAK,CAAClC,KAAK,CAAC,CAAC;EACrC,CAAC;EACD,MAAMyC,MAAM,GAAGF,OAAO,CAACJ,QAAQ,CAAC;EAEhC,IAAAO,UAAK,EACHR,KAAK,EACJ9F,CAAC,IAAI;IACJ;IACAiG,OAAO,CAACrC,KAAK,GAAG2C,IAAI,CAACC,SAAS,CAACxG,CAAC,CAAC,KAAKuG,IAAI,CAACC,SAAS,CAACV,KAAK,CAAClC,KAAK,CAAC;EACnE,CAAC,EACD;IAAE6C,IAAI,EAAE;EAAI,CAAE,CACf;EAED,MAAMC,eAAe,GAAGA,CAAA,KAAML,MAAM,CAACM,OAAO,CAACC,OAAO,CAAC;IAAER,KAAK,EAAEF,OAAO,CAACtC;EAAK,CAAE,CAAC,CAAC;EAE/E,OAAO;IAAEjD,MAAM;IAAE0F,MAAM;IAAEK,eAAe;IAAET,OAAO;IAAEC;EAAO,CAAE;AAC9D,CAAC;AAAApE,OAAA,CAAA8D,mBAAA,GAAAA,mBAAA;AAEK,SAAUpD,qBAAqBA,CACnC9B,GAAc;EAYd,MAAMmG,QAAQ,GAAGjG,YAAC,CAACE,GAAG,CAAC8B,OAAO,CAAClC,GAAG,CAAC,IAAIA,GAAG,CAACmC,KAAK,CAACC,QAAQ,CAAClC,YAAC,CAACmC,IAAI,CAACrC,GAAG,CAAC;EACrE,MAAMyC,QAAQ,GAAG0D,QAAQ,IAAIjG,YAAC,CAACE,GAAG,CAAC8B,OAAO,CAAClC,GAAG,CAAC,GAC3CA,GAAG,CAACmC,KAAK,CAACO,MAAM,CAAEH,CAAC,IAAKA,CAAC,KAAKrC,YAAC,CAACmC,IAAI,CAACrC,GAAG,CAAC,CAAC,CAAC,CAAE,GAC7CA,GAAG;EAEP,IAAIoG,OAAY;EAChB,IAAI;IACFA,OAAO,GAAGzI,UAAU,CAACiE,IAAI,CAAC1B,YAAC,CAAC0B,IAAI,CAACa,QAAQ,CAAC,CAAQ;EACpD,CAAC,CAAC,OAAOM,GAAG,EAAE;IACZqD,OAAO,GAAG,EAAE;IACZ;EACF;EACA,OAAOA,OAAO,CAAC,MAAM,CAAC,IAAIA,OAAO,CAAC,MAAM,CAAC,CAACC,UAAU,CAAC,UAAU,CAAC,EAAE;IAChE,MAAM;MAAEC,IAAI,EAAE/D,CAAC;MAAE,GAAGgE;IAAI,CAAE,GAAGH,OAAO;IACpCA,OAAO,GAAG;MAAE,GAAGA,OAAO,CAAC,OAAO,CAAC,CAACA,OAAO,CAAC,MAAM,CAAC,CAACI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;MAAE,GAAGD;IAAI,CAAE;EACrF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAME,QAAQ,GAAGL,OAAO,CAAC7G,IAAI,KAAK,QAAQ,IAAI6G,OAAO,CAAC7G,IAAI,KAAK,SAAS;EACxE,MAAMmH,KAAK,GAAGN,OAAO,CAAC7G,IAAI,KAAK,SAAS;EACxC,OAAO;IACLA,IAAI,EAAEmH,KAAK,GAAG,KAAc,GAAGD,QAAQ,GAAG,OAAgB,GAAG,MAAe;IAC5EvC,OAAO,EAAEkC,OAAO,CAAClC,OAAO;IACxBC,gBAAgB,EAAEiC,OAAO,CAACjC,gBAAgB;IAC1CE,OAAO,EAAE+B,OAAO,CAAC/B,OAAO;IACxBC,gBAAgB,EAAE8B,OAAO,CAAC9B,gBAAgB;IAC1CR,SAAS,EAAEsC,OAAO,CAACtC,SAAS;IAC5BE,SAAS,EAAEoC,OAAO,CAACpC,SAAS;IAC5BN,WAAW,EAAE0C,OAAO,CAAC1C,WAAW;IAChCqB,QAAQ,EAAE,CAACoB;GACZ;AACH","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
|
-
}):
|
|
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]-?:
|
|
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>;
|
package/dist/form.d.ts.map
CHANGED
|
@@ -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;
|
|
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 =
|
|
20
|
-
|
|
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((
|
|
108
|
+
return ast.propertySignatures.reduce((acc, cur) => {
|
|
31
109
|
;
|
|
32
|
-
|
|
33
|
-
return
|
|
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
|
-
:
|
|
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
|
|
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.
|
|
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/
|
|
12
|
-
"@effect-app/
|
|
13
|
-
"effect-app": "0.198.
|
|
14
|
-
"@effect-app/schema": "0.217.
|
|
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 =
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
(
|
|
42
|
-
;(
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
:
|
|
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
|
|
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
|