@effect-app/vue 0.162.2 → 0.163.1

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,27 @@
1
1
  # @effect-app/vue
2
2
 
3
+ ## 0.163.1
4
+
5
+ ### Patch Changes
6
+
7
+ - a67ecf4: keep original signature
8
+ - Updated dependencies [a67ecf4]
9
+ - @effect-app/vue@0.163.1
10
+
11
+ ## 0.163.0
12
+
13
+ ### Minor Changes
14
+
15
+ - 7b1ff1c: enhance field info generation
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [7b1ff1c]
20
+ - @effect-app/core@0.167.0
21
+ - @effect-app/vue@0.163.0
22
+ - effect-app@0.198.2
23
+ - @effect-app/schema@0.217.2
24
+
3
25
  ## 0.162.2
4
26
 
5
27
  ### Patch Changes
package/_cjs/form.cjs CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildFieldInfoFromFields = buildFieldInfoFromFields;
7
+ exports.buildFieldInfoFromFieldsRoot = buildFieldInfoFromFieldsRoot;
7
8
  exports.buildFormFromSchema = void 0;
8
9
  exports.convertIn = convertIn;
9
10
  exports.convertOut = convertOut;
@@ -19,6 +20,24 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
19
20
  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
21
  // type GetSchemaFromProp<T> = T extends Field<infer S, any, any, any> ? S
21
22
  // : never
23
+ function getTypeLiteralAST(ast) {
24
+ switch (ast._tag) {
25
+ case "TypeLiteral":
26
+ {
27
+ return ast;
28
+ }
29
+ case "Transformation":
30
+ {
31
+ // this may be not correct for transformations from a type literal to something
32
+ // that is not a type literal nor a class because we would prefer the from AST
33
+ return getTypeLiteralAST(ast.to) ?? getTypeLiteralAST(ast.from);
34
+ }
35
+ default:
36
+ {
37
+ return null;
38
+ }
39
+ }
40
+ }
22
41
  function convertIn(v, type) {
23
42
  return v === null ? "" : type === "text" ? v : `${v}`;
24
43
  }
@@ -30,22 +49,87 @@ function convertOutInt(v, type) {
30
49
  function convertOut(v, set, type) {
31
50
  return set(convertOutInt(v, type));
32
51
  }
52
+ const f = Symbol();
53
+ function handlePropertySignature(propertySignature) {
54
+ const schema = _effectApp.S.make(propertySignature.type);
55
+ switch (schema.ast._tag) {
56
+ case "Transformation":
57
+ {
58
+ const tl = getTypeLiteralAST(schema.ast);
59
+ return tl ? handlePropertySignature(new _effectApp.S.AST.PropertySignature(propertySignature.name, tl, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations)) : buildFieldInfo(propertySignature);
60
+ }
61
+ case "TypeLiteral":
62
+ {
63
+ return buildFieldInfoFromFieldsRoot(schema);
64
+ }
65
+ case "Union":
66
+ {
67
+ const allTypeLiterals = schema.ast.types.every(getTypeLiteralAST);
68
+ if (allTypeLiterals) {
69
+ const members = schema.ast.types.map(elAst =>
70
+ // syntehtic property signature as if each union member were the only member
71
+ new _effectApp.S.AST.PropertySignature(propertySignature.name, elAst, propertySignature.isOptional, propertySignature.isReadonly, propertySignature.annotations)).flatMap(ps => {
72
+ // try to retrieve the _tag literal to set _infoTag later
73
+ const typeLiteral = getTypeLiteralAST(ps.type);
74
+ const tagPropertySignature = typeLiteral?.propertySignatures.find(_ => _.name === "_tag");
75
+ const tagLiteral = tagPropertySignature && _effectApp.S.AST.isLiteral(tagPropertySignature.type) && typeof tagPropertySignature.type.literal === "string" ? tagPropertySignature.type.literal : void 0;
76
+ const toRet = handlePropertySignature(ps);
77
+ if (toRet._tag === "UnionFieldInfo") {
78
+ return toRet.members;
79
+ } else if (toRet._tag === "NestedFieldInfo") {
80
+ return [{
81
+ ...toRet,
82
+ _infoTag: tagLiteral
83
+ }];
84
+ } else if (toRet._tag === "DiscriminatedUnionFieldInfo") {
85
+ return Object.values(toRet.members);
86
+ } else {
87
+ return [toRet];
88
+ }
89
+ });
90
+ // support only _tag as discriminating key and it has to be a string
91
+ const isDiscriminatedUnion = members.every(_ => _._tag === "NestedFieldInfo" && _._infoTag !== undefined);
92
+ if (isDiscriminatedUnion) {
93
+ return {
94
+ members: members.reduce((acc, cur) => {
95
+ // see the definiton of isDiscriminatedUnion
96
+ const tag = cur._infoTag;
97
+ acc[tag] = cur;
98
+ return acc;
99
+ }, {}),
100
+ _tag: "DiscriminatedUnionFieldInfo"
101
+ };
102
+ } else {
103
+ return {
104
+ members,
105
+ _tag: "UnionFieldInfo"
106
+ };
107
+ }
108
+ } else {
109
+ return buildFieldInfo(propertySignature);
110
+ }
111
+ }
112
+ default:
113
+ {
114
+ return buildFieldInfo(propertySignature);
115
+ }
116
+ }
117
+ }
33
118
  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) => {
119
+ return buildFieldInfoFromFieldsRoot(schema).fields;
120
+ }
121
+ function buildFieldInfoFromFieldsRoot(schema) {
122
+ const ast = getTypeLiteralAST(schema.ast);
123
+ if (!ast) throw new Error("not a struct type");
124
+ return ast.propertySignatures.reduce((acc, cur) => {
43
125
  ;
44
- prev[cur.name] = buildFieldInfo(cur);
45
- return prev;
46
- }, {});
126
+ acc.fields[cur.name] = handlePropertySignature(cur);
127
+ return acc;
128
+ }, {
129
+ _tag: "NestedFieldInfo",
130
+ fields: {}
131
+ });
47
132
  }
48
- const f = Symbol();
49
133
  class PhantomTypeParameter {}
50
134
  const defaultIntl = (0, _intl.createIntl)({
51
135
  locale: "en"
@@ -103,7 +187,7 @@ function buildFieldInfo(property) {
103
187
  onLeft: _ => renderError(_, v),
104
188
  onRight: () => true
105
189
  }));
106
- const rules = [...(metadata.type === "text" ? stringRules : numberRules), parseRule];
190
+ const rules = [...(metadata.type === "text" ? stringRules : metadata.type === "float" || metadata.type === "int" ? numberRules : []), parseRule];
107
191
  const info = {
108
192
  type: metadata.type,
109
193
  rules: [v => !metadata.required || v !== "" || translate.value({
@@ -119,12 +203,13 @@ function buildFieldInfo(property) {
119
203
  }
120
204
  return true;
121
205
  }],
122
- metadata
206
+ metadata,
207
+ _tag: "FieldInfo"
123
208
  };
124
209
  return info;
125
210
  }
126
211
  const buildFormFromSchema = (s, state, onSubmit) => {
127
- const fields = buildFieldInfoFromFields(s);
212
+ const fields = buildFieldInfoFromFieldsRoot(s).fields;
128
213
  const parse = _effectApp.S.decodeSync(s);
129
214
  const isDirty = (0, _vue.ref)(false);
130
215
  const isValid = (0, _vue.ref)(true);
@@ -172,7 +257,7 @@ function getMetadataFromSchema(ast) {
172
257
  ...rest
173
258
  };
174
259
  }
175
- // or we need to add these infos directly in the refinement like the minimum
260
+ // or we need to add these info directly in the refinement like the minimum
176
261
  // or find a jsonschema parser whojoins all of them
177
262
  // todo, we have to use $ref: "#/$defs/Int"
178
263
  // 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","buildFieldInfoFromFieldsRoot","allTypeLiterals","types","every","members","map","elAst","flatMap","ps","typeLiteral","tagPropertySignature","propertySignatures","find","_","tagLiteral","isLiteral","literal","toRet","_infoTag","values","isDiscriminatedUnion","undefined","reduce","acc","cur","tag","buildFieldInfoFromFields","fields","Error","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,88 @@
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
+ }): { [K in keyof To]-?: {
50
+ true: {
51
+ true: To[K] extends {
52
+ _tag: string;
53
+ } ? DiscriminatedUnionFieldInfo<{ [P in DistributiveNestedFieldInfoKey<To[K]> as P["_infoTag" & keyof P] & string]: P; }> : UnionFieldInfo<DistributiveNestedFieldInfoKey<To[K]>[]>;
54
+ false: NestedFieldInfoKey<To[K]>;
55
+ }[`${To[K] extends object ? true : false}`];
56
+ false: NestedFieldInfoKey<To[K]>;
57
+ }[`${IsUnion<To[K]>}`]; };
58
+ export declare function buildFieldInfoFromFieldsRoot<From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>>(schema: Schema<To, From, never> & {
59
+ fields?: S.Struct.Fields;
60
+ }): NestedFieldInfo<To>;
10
61
  export interface FieldMetadata {
11
62
  minLength: number | undefined;
12
63
  maxLength: number | undefined;
13
64
  required: boolean;
14
65
  }
15
- declare const f: unique symbol;
16
66
  declare abstract class PhantomTypeParameter<Identifier extends keyof any, InstantiatedType> {
17
67
  protected abstract readonly _: {
18
68
  readonly [NameP in Identifier]: (_: InstantiatedType) => InstantiatedType;
19
69
  };
20
70
  }
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
71
  export declare const translate: Ref<{
29
72
  (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
73
  <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
74
  }>;
32
75
  export declare const customSchemaErrors: Ref<Map<string | S.AST.AST, (message: string, e: unknown, v: unknown) => string>>;
33
76
  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]>; };
77
+ fields: { [K in keyof To]-?: {
78
+ true: {
79
+ true: To[K] extends {
80
+ _tag: string;
81
+ } ? DiscriminatedUnionFieldInfo<{ [P in DistributiveNestedFieldInfoKey<To[K]> as P["_infoTag" & keyof P] & string]: P; }> : UnionFieldInfo<DistributiveNestedFieldInfoKey<To[K]>[]>;
82
+ false: NestedFieldInfoKey<To[K]>;
83
+ }[`${To[K] extends object ? true : false}`];
84
+ false: NestedFieldInfoKey<To[K]>;
85
+ }[`${IsUnion<To[K]>}`]; };
35
86
  submit: <T extends Promise<{
36
87
  valid: boolean;
37
88
  }>>(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,90 @@ 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 buildFieldInfoFromFieldsRoot(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
+ return buildFieldInfoFromFieldsRoot(schema).fields;
106
+ }
107
+ export function buildFieldInfoFromFieldsRoot(schema) {
108
+ const ast = getTypeLiteralAST(schema.ast);
109
+ if (!ast)
29
110
  throw new Error("not a struct type");
30
- return ast.propertySignatures.reduce((prev, cur) => {
111
+ return ast.propertySignatures.reduce((acc, cur) => {
31
112
  ;
32
- prev[cur.name] = buildFieldInfo(cur);
33
- return prev;
34
- }, {});
113
+ acc.fields[cur.name] = handlePropertySignature(cur);
114
+ return acc;
115
+ }, { _tag: "NestedFieldInfo", fields: {} });
35
116
  }
36
- const f = Symbol();
37
117
  class PhantomTypeParameter {
38
118
  }
39
119
  const defaultIntl = createIntl({ locale: "en" });
@@ -116,7 +196,9 @@ function buildFieldInfo(property) {
116
196
  const rules = [
117
197
  ...(metadata.type === "text"
118
198
  ? stringRules
119
- : numberRules),
199
+ : metadata.type === "float" || metadata.type === "int"
200
+ ? numberRules
201
+ : []),
120
202
  parseRule
121
203
  ];
122
204
  const info = {
@@ -136,12 +218,13 @@ function buildFieldInfo(property) {
136
218
  return true;
137
219
  }
138
220
  ],
139
- metadata
221
+ metadata,
222
+ _tag: "FieldInfo"
140
223
  };
141
224
  return info;
142
225
  }
143
226
  export const buildFormFromSchema = (s, state, onSubmit) => {
144
- const fields = buildFieldInfoFromFields(s);
227
+ const fields = buildFieldInfoFromFieldsRoot(s).fields;
145
228
  const parse = S.decodeSync(s);
146
229
  const isDirty = ref(false);
147
230
  const isValid = ref(true);
@@ -176,7 +259,7 @@ export function getMetadataFromSchema(ast) {
176
259
  const { $ref: _, ...rest } = jschema;
177
260
  jschema = { ...jschema["$defs"][jschema["$ref"].replace("#/$defs/", "")], ...rest };
178
261
  }
179
- // or we need to add these infos directly in the refinement like the minimum
262
+ // or we need to add these info directly in the refinement like the minimum
180
263
  // or find a jsonschema parser whojoins all of them
181
264
  // todo, we have to use $ref: "#/$defs/Int"
182
265
  // and look up
@@ -201,4 +284,4 @@ export function getMetadataFromSchema(ast) {
201
284
  required: !nullable
202
285
  };
203
286
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUE7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBR3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUU1QywwRUFBMEU7QUFDMUUsWUFBWTtBQUVaLE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBZ0IsRUFBRSxJQUErQjtJQUN6RSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFBO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVMsRUFBRSxJQUErQjtJQUN0RSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9GLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQztBQUVELE1B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
287
+ //# 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.2",
3
+ "version": "0.163.1",
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.2",
13
- "@effect-app/schema": "0.217.1",
14
- "effect-app": "0.198.1"
11
+ "effect-app": "0.198.2",
12
+ "@effect-app/core": "0.167.0",
13
+ "@effect-app/vue": "0.163.1",
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,173 @@ export function convertOut(v: string, set: (v: unknown | null) => void, type?: "
24
43
  return set(convertOutInt(v, type))
25
44
  }
26
45
 
27
- export function buildFieldInfoFromFields<From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>>(
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 buildFieldInfoFromFieldsRoot(
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
+
188
+ export function buildFieldInfoFromFields<
189
+ From extends Record<PropertyKey, any>,
190
+ To extends Record<PropertyKey, any>
191
+ >(
28
192
  schema: Schema<To, From, never> & { fields?: S.Struct.Fields }
29
193
  ) {
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")
194
+ return buildFieldInfoFromFieldsRoot(schema).fields
195
+ }
196
+
197
+ export function buildFieldInfoFromFieldsRoot<
198
+ From extends Record<PropertyKey, any>,
199
+ To extends Record<PropertyKey, any>
200
+ >(
201
+ schema: Schema<To, From, never> & { fields?: S.Struct.Fields }
202
+ ): NestedFieldInfo<To> {
203
+ const ast = getTypeLiteralAST(schema.ast)
204
+
205
+ if (!ast) throw new Error("not a struct type")
40
206
  return ast.propertySignatures.reduce(
41
- (prev, cur) => {
42
- ;(prev as any)[cur.name] = buildFieldInfo(cur)
43
- return prev
207
+ (acc, cur) => {
208
+ ;(acc.fields as any)[cur.name] = handlePropertySignature(cur)
209
+
210
+ return acc
44
211
  },
45
- {} as {
46
- [K in keyof To]-?: FieldInfo<To[K]>
47
- }
212
+ { _tag: "NestedFieldInfo", fields: {} } as NestedFieldInfo<To>
48
213
  )
49
214
  }
50
215
 
@@ -54,7 +219,6 @@ export interface FieldMetadata {
54
219
  required: boolean
55
220
  }
56
221
 
57
- const f = Symbol()
58
222
  abstract class PhantomTypeParameter<
59
223
  Identifier extends keyof any,
60
224
  InstantiatedType
@@ -63,11 +227,7 @@ abstract class PhantomTypeParameter<
63
227
  readonly [NameP in Identifier]: (_: InstantiatedType) => InstantiatedType
64
228
  }
65
229
  }
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
- }
230
+
71
231
  const defaultIntl = createIntl({ locale: "en" })
72
232
 
73
233
  export const translate = ref<IntlFormatters["formatMessage"]>(defaultIntl.formatMessage.bind(defaultIntl))
@@ -174,7 +334,9 @@ function buildFieldInfo(
174
334
  const rules: UnknownRule[] = [
175
335
  ...(metadata.type === "text"
176
336
  ? stringRules
177
- : numberRules) as UnknownRule[],
337
+ : metadata.type === "float" || metadata.type === "int"
338
+ ? numberRules
339
+ : []) as UnknownRule[],
178
340
  parseRule as UnknownRule
179
341
  ]
180
342
 
@@ -198,7 +360,8 @@ function buildFieldInfo(
198
360
  return true
199
361
  }
200
362
  ],
201
- metadata
363
+ metadata,
364
+ _tag: "FieldInfo"
202
365
  }
203
366
 
204
367
  return info as any
@@ -217,7 +380,7 @@ export const buildFormFromSchema = <
217
380
  state: Ref<From>,
218
381
  onSubmit: (a: To) => Promise<OnSubmitA>
219
382
  ) => {
220
- const fields = buildFieldInfoFromFields(s)
383
+ const fields = buildFieldInfoFromFieldsRoot(s).fields
221
384
  const parse = S.decodeSync(s)
222
385
  const isDirty = ref(false)
223
386
  const isValid = ref(true)
@@ -272,7 +435,7 @@ export function getMetadataFromSchema(
272
435
  const { $ref: _, ...rest } = jschema
273
436
  jschema = { ...jschema["$defs"][jschema["$ref"].replace("#/$defs/", "")], ...rest }
274
437
  }
275
- // or we need to add these infos directly in the refinement like the minimum
438
+ // or we need to add these info directly in the refinement like the minimum
276
439
  // or find a jsonschema parser whojoins all of them
277
440
  // todo, we have to use $ref: "#/$defs/Int"
278
441
  // 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 { buildFieldInfoFromFieldsRoot } 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 = buildFieldInfoFromFieldsRoot(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 = buildFieldInfoFromFieldsRoot(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 = buildFieldInfoFromFieldsRoot(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 = buildFieldInfoFromFieldsRoot(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))