@lucas-barake/effect-form 0.23.0 → 0.25.0-beta.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.
@@ -1,8 +1,12 @@
1
- import type * as Registry from "@effect-atom/atom/Registry";
2
1
  import type * as Effect from "effect/Effect";
3
2
  import type * as Option from "effect/Option";
4
3
  import * as Schema from "effect/Schema";
4
+ import type * as AtomRegistry from "effect/unstable/reactivity/AtomRegistry";
5
5
  import type { ArrayFieldDef, DecodedFromFields, EncodedFromFields, FieldDef, FieldsRecord } from "./Field.ts";
6
+ type FilterResult = undefined | boolean | string | {
7
+ readonly path: ReadonlyArray<PropertyKey>;
8
+ readonly message: string;
9
+ };
6
10
  export interface SubmittedValues<TFields extends FieldsRecord> {
7
11
  readonly encoded: EncodedFromFields<TFields>;
8
12
  readonly decoded: DecodedFromFields<TFields>;
@@ -30,11 +34,11 @@ export interface FormState<TFields extends FieldsRecord> {
30
34
  }
31
35
  interface SyncRefinement {
32
36
  readonly _tag: "sync";
33
- readonly fn: (values: unknown) => Schema.FilterOutput;
37
+ readonly fn: (values: unknown) => FilterResult;
34
38
  }
35
39
  interface AsyncRefinement {
36
40
  readonly _tag: "async";
37
- readonly fn: (values: unknown) => Effect.Effect<Schema.FilterOutput, never, unknown>;
41
+ readonly fn: (values: unknown) => Effect.Effect<FilterResult, never, unknown>;
38
42
  }
39
43
  type Refinement = SyncRefinement | AsyncRefinement;
40
44
  export interface FormBuilder<TFields extends FieldsRecord, R> {
@@ -42,21 +46,21 @@ export interface FormBuilder<TFields extends FieldsRecord, R> {
42
46
  readonly fields: TFields;
43
47
  readonly refinements: ReadonlyArray<Refinement>;
44
48
  readonly _R?: R;
45
- addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, field: FieldDef<K, S>): FormBuilder<TFields & {
49
+ addField<K extends string, S extends Schema.Top>(this: FormBuilder<TFields, R>, field: FieldDef<K, S>): FormBuilder<TFields & {
46
50
  readonly [key in K]: FieldDef<K, S>;
47
- }, R | Schema.Schema.Context<S>>;
48
- addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, field: ArrayFieldDef<K, S>): FormBuilder<TFields & {
51
+ }, R | Schema.Codec.DecodingServices<S>>;
52
+ addField<K extends string, S extends Schema.Top>(this: FormBuilder<TFields, R>, field: ArrayFieldDef<K, S>): FormBuilder<TFields & {
49
53
  readonly [key in K]: ArrayFieldDef<K, S>;
50
- }, R | Schema.Schema.Context<S>>;
51
- addField<K extends string, S extends Schema.Schema.Any>(this: FormBuilder<TFields, R>, key: K, schema: S): FormBuilder<TFields & {
54
+ }, R | Schema.Codec.DecodingServices<S>>;
55
+ addField<K extends string, S extends Schema.Top>(this: FormBuilder<TFields, R>, key: K, schema: S): FormBuilder<TFields & {
52
56
  readonly [key in K]: FieldDef<K, S>;
53
- }, R | Schema.Schema.Context<S>>;
57
+ }, R | Schema.Codec.DecodingServices<S>>;
54
58
  merge<TFields2 extends FieldsRecord, R2>(this: FormBuilder<TFields, R>, other: FormBuilder<TFields2, R2>): FormBuilder<TFields & TFields2, R | R2>;
55
- refine(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => Schema.FilterOutput): FormBuilder<TFields, R>;
56
- refineEffect<RD>(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => Effect.Effect<Schema.FilterOutput, never, RD>): FormBuilder<TFields, R | Exclude<RD, Registry.AtomRegistry>>;
59
+ refine(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => FilterResult): FormBuilder<TFields, R>;
60
+ refineEffect<RD>(this: FormBuilder<TFields, R>, predicate: (values: DecodedFromFields<TFields>) => Effect.Effect<FilterResult, never, RD>): FormBuilder<TFields, R | Exclude<RD, AtomRegistry.AtomRegistry>>;
57
61
  }
58
62
  export declare const isFormBuilder: (u: unknown) => u is FormBuilder<any, any>;
59
63
  export declare const empty: FormBuilder<{}, never>;
60
- export declare const buildSchema: <TFields extends FieldsRecord, R>(self: FormBuilder<TFields, R>) => Schema.Schema<DecodedFromFields<TFields>, EncodedFromFields<TFields>, R>;
64
+ export declare const buildSchema: <TFields extends FieldsRecord, R>(self: FormBuilder<TFields, R>) => Schema.Codec<DecodedFromFields<TFields>, EncodedFromFields<TFields>, R>;
61
65
  export {};
62
66
  //# sourceMappingURL=FormBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../src/FormBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../src/FormBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as Predicate from "effect/Predicate";
2
2
  import * as Schema from "effect/Schema";
3
+ import * as SchemaGetter from "effect/SchemaGetter";
3
4
  import { isArrayFieldDef, isFieldDef, makeField } from "./Field.js";
4
5
  export const FieldTypeId = /*#__PURE__*/Symbol.for("@lucas-barake/effect-form/Field");
5
6
  export const makeFieldRef = key => ({
@@ -68,9 +69,12 @@ export const buildSchema = self => {
68
69
  let schema = Schema.Struct(schemaFields);
69
70
  for (const refinement of self.refinements) {
70
71
  if (refinement._tag === "sync") {
71
- schema = schema.pipe(Schema.filter(refinement.fn));
72
+ schema = schema.pipe(Schema.check(Schema.makeFilter(input => refinement.fn(input))));
72
73
  } else {
73
- schema = schema.pipe(Schema.filterEffect(refinement.fn));
74
+ schema = schema.pipe(Schema.decode({
75
+ decode: SchemaGetter.checkEffect(input => refinement.fn(input)),
76
+ encode: SchemaGetter.passthrough()
77
+ }));
74
78
  }
75
79
  }
76
80
  return schema;
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilder.js","names":["Predicate","Schema","isArrayFieldDef","isFieldDef","makeField","FieldTypeId","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","keyOrField","schema","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","Array","itemSchema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../src/FormBuilder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormBuilder.js","names":["Predicate","Schema","SchemaGetter","isArrayFieldDef","isFieldDef","makeField","FieldTypeId","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","keyOrField","schema","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","Array","itemSchema","Struct","refinement","pipe","check","makeFilter","input","decode","checkEffect","encode","passthrough"],"sources":["../src/FormBuilder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Mode.d.ts","sourceRoot":"","sources":["../src/Mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElH,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEhH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,QAAQ,KAAG,UAcvC,CAAA"}
1
+ {"version":3,"file":"Mode.d.ts","sourceRoot":"","sources":["../src/Mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAElH,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEhH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,QAAQ,KAAG,UAgBvC,CAAA"}
package/dist/Mode.js CHANGED
@@ -9,7 +9,7 @@ export const parse = mode => {
9
9
  };
10
10
  }
11
11
  if (validation === "onChange") {
12
- const debounceMs = mode?.debounce === undefined ? null : Duration.toMillis(mode.debounce);
12
+ const debounceMs = mode?.debounce === undefined ? null : Duration.toMillis(Duration.fromDurationInputUnsafe(mode.debounce));
13
13
  const autoSubmit = mode?.autoSubmit === true;
14
14
  return {
15
15
  validation: "onChange",
package/dist/Mode.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Mode.js","names":["Duration","parse","mode","validation","debounce","autoSubmit","debounceMs","undefined","toMillis"],"sources":["../src/Mode.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,iBAAiB;AAkB3C,OAAO,MAAMC,KAAK,GAAIC,IAAe,IAAgB;EACnD,MAAMC,UAAU,GAAGD,IAAI,EAAEC,UAAU,IAAI,UAAU;EAEjD,IAAIA,UAAU,KAAK,QAAQ,EAAE;IAC3B,OAAO;MAAEA,UAAU,EAAE,QAAQ;MAAEC,QAAQ,EAAE,IAAI;MAAEC,UAAU,EAAEH,IAAI,EAAEG,UAAU,KAAK;IAAI,CAAE;EACxF;EAEA,IAAIF,UAAU,KAAK,UAAU,EAAE;IAC7B,MAAMG,UAAU,GAAGJ,IAAI,EAAEE,QAAQ,KAAKG,SAAS,GAAG,IAAI,GAAGP,QAAQ,CAACQ,QAAQ,CAACN,IAAI,CAACE,QAAQ,CAAC;IACzF,MAAMC,UAAU,GAAGH,IAAI,EAAEG,UAAU,KAAK,IAAI;IAC5C,OAAO;MAAEF,UAAU,EAAE,UAAU;MAAEC,QAAQ,EAAEE,UAAU;MAAED;IAAU,CAAE;EACrE;EAEA,OAAO;IAAEF,UAAU,EAAE,UAAU;IAAEC,QAAQ,EAAE,IAAI;IAAEC,UAAU,EAAE;EAAK,CAAE;AACtE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Mode.js","names":["Duration","parse","mode","validation","debounce","autoSubmit","debounceMs","undefined","toMillis","fromDurationInputUnsafe"],"sources":["../src/Mode.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,iBAAiB;AAkB3C,OAAO,MAAMC,KAAK,GAAIC,IAAe,IAAgB;EACnD,MAAMC,UAAU,GAAGD,IAAI,EAAEC,UAAU,IAAI,UAAU;EAEjD,IAAIA,UAAU,KAAK,QAAQ,EAAE;IAC3B,OAAO;MAAEA,UAAU,EAAE,QAAQ;MAAEC,QAAQ,EAAE,IAAI;MAAEC,UAAU,EAAEH,IAAI,EAAEG,UAAU,KAAK;IAAI,CAAE;EACxF;EAEA,IAAIF,UAAU,KAAK,UAAU,EAAE;IAC7B,MAAMG,UAAU,GAAGJ,IAAI,EAAEE,QAAQ,KAAKG,SAAS,GAC3C,IAAI,GACJP,QAAQ,CAACQ,QAAQ,CAACR,QAAQ,CAACS,uBAAuB,CAACP,IAAI,CAACE,QAAQ,CAAC,CAAC;IACtE,MAAMC,UAAU,GAAGH,IAAI,EAAEG,UAAU,KAAK,IAAI;IAC5C,OAAO;MAAEF,UAAU,EAAE,UAAU;MAAEC,QAAQ,EAAEE,UAAU;MAAED;IAAU,CAAE;EACrE;EAEA,OAAO;IAAEF,UAAU,EAAE,UAAU;IAAEC,QAAQ,EAAE,IAAI;IAAEC,UAAU,EAAE;EAAK,CAAE;AACtE,CAAC","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import * as Option from "effect/Option";
2
- import * as ParseResult from "effect/ParseResult";
2
+ import type * as Schema from "effect/Schema";
3
3
  export type ErrorSource = "field" | "refinement";
4
4
  export interface ErrorEntry {
5
5
  readonly message: string;
6
6
  readonly source: ErrorSource;
7
7
  }
8
- export declare const extractFirstError: (error: ParseResult.ParseError) => Option.Option<string>;
9
- export declare const routeErrors: (error: ParseResult.ParseError) => Map<string, string>;
10
- export declare const routeErrorsWithSource: (error: ParseResult.ParseError) => Map<string, ErrorEntry>;
8
+ export declare const extractFirstError: (error: Schema.SchemaError) => Option.Option<string>;
9
+ export declare const routeErrors: (error: Schema.SchemaError) => Map<string, string>;
10
+ export declare const routeErrorsWithSource: (error: Schema.SchemaError) => Map<string, ErrorEntry>;
11
11
  //# sourceMappingURL=Validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../src/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AAIjD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAsFD,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAMrF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAY7E,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,CAAC,UAAU,KAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CA6C3F,CAAA"}
1
+ {"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../src/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAI5C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AA8DD,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,CAAC,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAMjF,CAAA;AAWD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,CAAC,WAAW,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAYzE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,CAAC,WAAW,KAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CA6CvF,CAAA"}
@@ -1,92 +1,75 @@
1
1
  import * as Option from "effect/Option";
2
- import * as ParseResult from "effect/ParseResult";
2
+ import * as SchemaIssue from "effect/SchemaIssue";
3
3
  import { schemaPathToFieldPath } from "./Path.js";
4
- const getBaseAST = ast => {
5
- switch (ast._tag) {
6
- case "Refinement":
7
- case "Transformation":
8
- return getBaseAST(ast.from);
9
- default:
10
- return ast;
11
- }
12
- };
13
- const isCompositeType = ast => {
14
- const base = getBaseAST(ast);
15
- switch (base._tag) {
16
- case "TypeLiteral": // Schema.Struct
17
- case "TupleType": // Schema.Tuple
18
- case "Declaration": // Schema.Class, Schema.TaggedClass
19
- case "Union": // Schema.Union
20
- case "Suspend":
21
- // Recursive schemas
22
- return true;
23
- default:
24
- return false;
25
- }
26
- };
4
+ const standardFormatter = /*#__PURE__*/SchemaIssue.makeFormatterStandardSchemaV1();
27
5
  const collectIssueSources = error => {
28
6
  const entries = [];
29
7
  const walk = (issue, path, source) => {
30
8
  switch (issue._tag) {
31
- case "Refinement":
32
- if (issue.kind === "Predicate" && isCompositeType(issue.ast.from) && path.length === 0) {
9
+ case "Filter":
10
+ if (path.length === 0) {
33
11
  walk(issue.issue, path, "refinement");
34
12
  } else {
35
13
  walk(issue.issue, path, source);
36
14
  }
37
15
  break;
38
- case "Pointer":
39
- {
40
- const pointerPath = Array.isArray(issue.path) ? issue.path : [issue.path];
41
- walk(issue.issue, [...path, ...pointerPath], source);
42
- break;
16
+ case "Encoding":
17
+ if (path.length === 0) {
18
+ walk(issue.issue, path, "refinement");
19
+ } else {
20
+ walk(issue.issue, path, source);
43
21
  }
22
+ break;
23
+ case "Pointer":
24
+ walk(issue.issue, [...path, ...issue.path], source);
25
+ break;
44
26
  case "Composite":
45
- {
46
- const issues = Array.isArray(issue.issues) ? issue.issues : [issue.issues];
47
- for (const sub of issues) {
48
- walk(sub, path, source);
49
- }
50
- break;
27
+ for (const sub of issue.issues) {
28
+ walk(sub, path, source);
29
+ }
30
+ break;
31
+ case "AnyOf":
32
+ for (const sub of issue.issues) {
33
+ walk(sub, path, source);
51
34
  }
52
- case "Type":
53
- case "Missing":
54
- case "Unexpected":
35
+ break;
36
+ case "InvalidType":
37
+ case "InvalidValue":
38
+ case "MissingKey":
39
+ case "UnexpectedKey":
55
40
  case "Forbidden":
41
+ case "OneOf":
56
42
  entries.push({
57
43
  path,
58
44
  source,
59
45
  issue
60
46
  });
61
47
  break;
62
- case "Transformation":
63
- if (issue.kind === "Transformation" && issue.ast.transformation._tag === "FinalTransformation" && isCompositeType(issue.ast.from) && path.length === 0) {
64
- walk(issue.issue, path, "refinement");
65
- } else {
66
- walk(issue.issue, path, source);
67
- }
68
- break;
69
48
  }
70
49
  };
71
50
  walk(error.issue, [], "field");
72
51
  return entries;
73
52
  };
74
53
  const getIssueMessage = issue => {
75
- const formatted = ParseResult.ArrayFormatter.formatIssueSync(issue);
76
- return formatted[0]?.message;
54
+ const formatted = standardFormatter(issue);
55
+ return formatted.issues[0]?.message;
77
56
  };
78
57
  export const extractFirstError = error => {
79
- const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
80
- if (issues.length === 0) {
58
+ const formatted = standardFormatter(error.issue);
59
+ if (formatted.issues.length === 0) {
81
60
  return Option.none();
82
61
  }
83
- return Option.some(issues[0].message);
62
+ return Option.some(formatted.issues[0].message);
63
+ };
64
+ const normalizePath = path => {
65
+ if (!path) return [];
66
+ return path.map(segment => typeof segment === "object" && segment !== null && "key" in segment ? segment.key : segment);
84
67
  };
85
68
  export const routeErrors = error => {
86
69
  const result = new Map();
87
- const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
88
- for (const issue of issues) {
89
- const fieldPath = schemaPathToFieldPath(issue.path);
70
+ const formatted = standardFormatter(error.issue);
71
+ for (const issue of formatted.issues) {
72
+ const fieldPath = schemaPathToFieldPath(normalizePath(issue.path));
90
73
  if (fieldPath && !result.has(fieldPath)) {
91
74
  result.set(fieldPath, issue.message);
92
75
  }
@@ -95,7 +78,7 @@ export const routeErrors = error => {
95
78
  };
96
79
  export const routeErrorsWithSource = error => {
97
80
  const result = new Map();
98
- const formattedIssues = ParseResult.ArrayFormatter.formatErrorSync(error);
81
+ const formattedIssues = standardFormatter(error.issue).issues;
99
82
  const issueSources = collectIssueSources(error);
100
83
  const messageSources = new Map();
101
84
  const refinementPaths = new Set();
@@ -114,7 +97,7 @@ export const routeErrorsWithSource = error => {
114
97
  }
115
98
  }
116
99
  for (const issue of formattedIssues) {
117
- const fieldPath = schemaPathToFieldPath(issue.path) ?? "";
100
+ const fieldPath = schemaPathToFieldPath(normalizePath(issue.path)) ?? "";
118
101
  if (result.has(fieldPath)) continue;
119
102
  const preferredSource = refinementPaths.has(fieldPath) ? "refinement" : "field";
120
103
  const messageKey = `${fieldPath}::${issue.message}`;
@@ -129,7 +112,7 @@ export const routeErrorsWithSource = error => {
129
112
  }
130
113
  if (result.size < formattedIssues.length) {
131
114
  for (const issue of formattedIssues) {
132
- const fieldPath = schemaPathToFieldPath(issue.path) ?? "";
115
+ const fieldPath = schemaPathToFieldPath(normalizePath(issue.path)) ?? "";
133
116
  if (result.has(fieldPath)) continue;
134
117
  const messageKey = `${fieldPath}::${issue.message}`;
135
118
  const issueSource = messageSources.get(messageKey) ?? "field";
@@ -1 +1 @@
1
- {"version":3,"file":"Validation.js","names":["Option","ParseResult","schemaPathToFieldPath","getBaseAST","ast","_tag","from","isCompositeType","base","collectIssueSources","error","entries","walk","issue","path","source","kind","length","pointerPath","Array","isArray","issues","sub","push","transformation","getIssueMessage","formatted","ArrayFormatter","formatIssueSync","message","extractFirstError","formatErrorSync","none","some","routeErrors","result","Map","fieldPath","has","set","routeErrorsWithSource","formattedIssues","issueSources","messageSources","refinementPaths","Set","entry","undefined","messageKey","existing","get","add","preferredSource","issueSource","size"],"sources":["../src/Validation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Validation.js","names":["Option","SchemaIssue","schemaPathToFieldPath","standardFormatter","makeFormatterStandardSchemaV1","collectIssueSources","error","entries","walk","issue","path","source","_tag","length","sub","issues","push","getIssueMessage","formatted","message","extractFirstError","none","some","normalizePath","map","segment","key","routeErrors","result","Map","fieldPath","has","set","routeErrorsWithSource","formattedIssues","issueSources","messageSources","refinementPaths","Set","entry","undefined","messageKey","existing","get","add","preferredSource","issueSource","size"],"sources":["../src/Validation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"dirty.d.ts","sourceRoot":"","sources":["../../src/internal/dirty.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,8BAA8B,GACzC,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,eAAe,OAAO,EACtB,WAAW,MAAM,EACjB,UAAU,aAAa,CAAC,OAAO,CAAC,KAC/B,WAAW,CAAC,MAAM,CAgCpB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,cAAc,WAAW,CAAC,MAAM,CAAC,EACjC,YAAY,OAAO,EACnB,WAAW,OAAO,EAClB,WAAU,MAAW,KACpB,WAAW,CAAC,MAAM,CA0DpB,CAAA"}
1
+ {"version":3,"file":"dirty.d.ts","sourceRoot":"","sources":["../../src/internal/dirty.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,8BAA8B,GACzC,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,eAAe,OAAO,EACtB,WAAW,MAAM,EACjB,UAAU,aAAa,CAAC,OAAO,CAAC,KAC/B,WAAW,CAAC,MAAM,CA+BpB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,cAAc,WAAW,CAAC,MAAM,CAAC,EACjC,YAAY,OAAO,EACnB,WAAW,OAAO,EAClB,WAAU,MAAW,KACpB,WAAW,CAAC,MAAM,CAyDpB,CAAA"}
@@ -1,5 +1,4 @@
1
1
  import * as Equal from "effect/Equal";
2
- import * as Utils from "effect/Utils";
3
2
  import { getNestedValue, isPathUnderRoot } from "../Path.js";
4
3
  export const recalculateDirtyFieldsForArray = (dirtyFields, initialValues, arrayPath, newItems) => {
5
4
  const initialItems = getNestedValue(initialValues, arrayPath) ?? [];
@@ -13,8 +12,7 @@ export const recalculateDirtyFieldsForArray = (dirtyFields, initialValues, array
13
12
  const newItem = newItems[i];
14
13
  const initialItem = initialItems[i];
15
14
  if (newItem === initialItem) continue;
16
- const isEqual = Utils.structuralRegion(() => Equal.equals(newItem, initialItem));
17
- if (!isEqual) {
15
+ if (!Equal.equals(newItem, initialItem)) {
18
16
  nextDirty.add(itemPath);
19
17
  }
20
18
  }
@@ -70,8 +68,7 @@ export const recalculateDirtySubtree = (currentDirty, allInitial, allValues, roo
70
68
  }
71
69
  }
72
70
  } else {
73
- const isEqual = Utils.structuralRegion(() => Equal.equals(current, initial));
74
- if (!isEqual && path) nextDirty.add(path);
71
+ if (!Equal.equals(current, initial) && path) nextDirty.add(path);
75
72
  }
76
73
  };
77
74
  recurse(targetValue, targetInitial, rootPath);
@@ -1 +1 @@
1
- {"version":3,"file":"dirty.js","names":["Equal","Utils","getNestedValue","isPathUnderRoot","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","nextDirty","Set","Array","from","filter","path","loopLength","Math","max","length","i","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","recalculateDirtySubtree","currentDirty","allInitial","allValues","rootPath","targetValue","targetInitial","changed","clear","recurse","current","initial","isArray","initialArr","initialObj","key","undefined"],"sources":["../../src/internal/dirty.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dirty.js","names":["Equal","getNestedValue","isPathUnderRoot","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","initialItems","nextDirty","Set","Array","from","filter","path","loopLength","Math","max","length","i","itemPath","newItem","initialItem","equals","add","delete","recalculateDirtySubtree","currentDirty","allInitial","allValues","rootPath","targetValue","targetInitial","changed","clear","recurse","current","initial","isArray","initialArr","initialObj","key","undefined"],"sources":["../../src/internal/dirty.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,SAASC,cAAc,EAAEC,eAAe,QAAQ,YAAY;AAE5D,OAAO,MAAMC,8BAA8B,GAAGA,CAC5CC,WAAgC,EAChCC,aAAsB,EACtBC,SAAiB,EACjBC,QAAgC,KACT;EACvB,MAAMC,YAAY,GAAIP,cAAc,CAACI,aAAa,EAAEC,SAAS,CAAC,IAAI,EAA6B;EAE/F,IAAIC,QAAQ,KAAKC,YAAY,EAAE;IAC7B,OAAOJ,WAAW;EACpB;EAEA,MAAMK,SAAS,GAAG,IAAIC,GAAG,CACvBC,KAAK,CAACC,IAAI,CAACR,WAAW,CAAC,CAACS,MAAM,CAAEC,IAAI,IAAK,CAACZ,eAAe,CAACY,IAAI,EAAER,SAAS,CAAC,CAAC,CAC5E;EAED,MAAMS,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACV,QAAQ,CAACW,MAAM,EAAEV,YAAY,CAACU,MAAM,CAAC;EACjE,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,UAAU,EAAEI,CAAC,EAAE,EAAE;IACnC,MAAMC,QAAQ,GAAG,GAAGd,SAAS,IAAIa,CAAC,GAAG;IACrC,MAAME,OAAO,GAAGd,QAAQ,CAACY,CAAC,CAAC;IAC3B,MAAMG,WAAW,GAAGd,YAAY,CAACW,CAAC,CAAC;IAEnC,IAAIE,OAAO,KAAKC,WAAW,EAAE;IAE7B,IAAI,CAACtB,KAAK,CAACuB,MAAM,CAACF,OAAO,EAAEC,WAAW,CAAC,EAAE;MACvCb,SAAS,CAACe,GAAG,CAACJ,QAAQ,CAAC;IACzB;EACF;EAEA,IAAIb,QAAQ,CAACW,MAAM,KAAKV,YAAY,CAACU,MAAM,EAAE;IAC3CT,SAAS,CAACe,GAAG,CAAClB,SAAS,CAAC;EAC1B,CAAC,MAAM;IACLG,SAAS,CAACgB,MAAM,CAACnB,SAAS,CAAC;EAC7B;EAEA,OAAOG,SAAS;AAClB,CAAC;AAED,OAAO,MAAMiB,uBAAuB,GAAGA,CACrCC,YAAiC,EACjCC,UAAmB,EACnBC,SAAkB,EAClBC,QAAA,GAAmB,EAAE,KACE;EACvB,MAAMC,WAAW,GAAGD,QAAQ,GAAG7B,cAAc,CAAC4B,SAAS,EAAEC,QAAQ,CAAC,GAAGD,SAAS;EAC9E,MAAMG,aAAa,GAAGF,QAAQ,GAAG7B,cAAc,CAAC2B,UAAU,EAAEE,QAAQ,CAAC,GAAGF,UAAU;EAElF,IAAIG,WAAW,KAAKC,aAAa,EAAE;IACjC,IAAIF,QAAQ,KAAK,EAAE,EAAE;MACnB,OAAO,IAAIpB,GAAG,EAAE;IAClB;IAEA,IAAIuB,OAAO,GAAG,KAAK;IACnB,MAAMxB,SAAS,GAAG,IAAIC,GAAG,CAACiB,YAAY,CAAC;IACvC,KAAK,MAAMb,IAAI,IAAIa,YAAY,EAAE;MAC/B,IAAIzB,eAAe,CAACY,IAAI,EAAEgB,QAAQ,CAAC,EAAE;QACnCrB,SAAS,CAACgB,MAAM,CAACX,IAAI,CAAC;QACtBmB,OAAO,GAAG,IAAI;MAChB;IACF;IACA,OAAOA,OAAO,GAAGxB,SAAS,GAAGkB,YAAY;EAC3C;EAEA,MAAMlB,SAAS,GAAG,IAAIC,GAAG,CAACiB,YAAY,CAAC;EAEvC,IAAIG,QAAQ,KAAK,EAAE,EAAE;IACnBrB,SAAS,CAACyB,KAAK,EAAE;EACnB,CAAC,MAAM;IACL,KAAK,MAAMpB,IAAI,IAAIL,SAAS,EAAE;MAC5B,IAAIP,eAAe,CAACY,IAAI,EAAEgB,QAAQ,CAAC,EAAE;QACnCrB,SAAS,CAACgB,MAAM,CAACX,IAAI,CAAC;MACxB;IACF;EACF;EAEA,MAAMqB,OAAO,GAAGA,CAACC,OAAgB,EAAEC,OAAgB,EAAEvB,IAAY,KAAU;IACzE,IAAIsB,OAAO,KAAKC,OAAO,EAAE;IAEzB,IAAI1B,KAAK,CAAC2B,OAAO,CAACF,OAAO,CAAC,EAAE;MAC1B,MAAMG,UAAU,GAAIF,OAAO,IAAI,EAA6B;MAC5D,KAAK,IAAIlB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACC,GAAG,CAACmB,OAAO,CAAClB,MAAM,EAAEqB,UAAU,CAACrB,MAAM,CAAC,EAAEC,CAAC,EAAE,EAAE;QACpEgB,OAAO,CAACC,OAAO,CAACjB,CAAC,CAAC,EAAEoB,UAAU,CAACpB,CAAC,CAAC,EAAEL,IAAI,GAAG,GAAGA,IAAI,IAAIK,CAAC,GAAG,GAAG,IAAIA,CAAC,GAAG,CAAC;MACvE;IACF,CAAC,MAAM,IAAIiB,OAAO,KAAK,IAAI,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;MAC1D,MAAMI,UAAU,GAAIH,OAAO,IAAI,EAA8B;MAC7D,KAAK,MAAMI,GAAG,IAAIL,OAAiB,EAAE;QACnCD,OAAO,CAAEC,OAAmC,CAACK,GAAG,CAAC,EAAED,UAAU,CAACC,GAAG,CAAC,EAAE3B,IAAI,GAAG,GAAGA,IAAI,IAAI2B,GAAG,EAAE,GAAGA,GAAG,CAAC;MACpG;MACA,KAAK,MAAMA,GAAG,IAAID,UAAU,EAAE;QAC5B,IAAI,EAAEC,GAAG,IAAKL,OAAkB,CAAC,EAAE;UACjCD,OAAO,CAACO,SAAS,EAAEF,UAAU,CAACC,GAAG,CAAC,EAAE3B,IAAI,GAAG,GAAGA,IAAI,IAAI2B,GAAG,EAAE,GAAGA,GAAG,CAAC;QACpE;MACF;IACF,CAAC,MAAM;MACL,IAAI,CAACzC,KAAK,CAACuB,MAAM,CAACa,OAAO,EAAEC,OAAO,CAAC,IAAIvB,IAAI,EAAEL,SAAS,CAACe,GAAG,CAACV,IAAI,CAAC;IAClE;EACF,CAAC;EAEDqB,OAAO,CAACJ,WAAW,EAAEC,aAAa,EAAEF,QAAQ,CAAC;EAC7C,OAAOrB,SAAS;AAClB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucas-barake/effect-form",
3
- "version": "0.23.0",
3
+ "version": "0.25.0-beta.0",
4
4
  "description": "Type-safe form builder powered by Effect Schema",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -36,8 +36,7 @@
36
36
  "license": "MIT",
37
37
  "sideEffects": [],
38
38
  "peerDependencies": {
39
- "@effect-atom/atom": "^0.5.0",
40
- "effect": "^3.19.15"
39
+ "effect": "^4.0.0-beta.0"
41
40
  },
42
41
  "scripts": {
43
42
  "build": "tsc -b tsconfig.json && pnpm babel",
package/src/Field.ts CHANGED
@@ -5,28 +5,27 @@ export const TypeId: unique symbol = Symbol.for("@lucas-barake/effect-form/Field
5
5
 
6
6
  export type TypeId = typeof TypeId
7
7
 
8
- export interface FieldDef<K extends string, S extends Schema.Schema.Any,> {
8
+ export interface FieldDef<K extends string, S extends Schema.Top,> {
9
9
  readonly _tag: "field"
10
10
  readonly key: K
11
11
  readonly schema: S
12
12
  }
13
13
 
14
- export interface ArrayFieldDef<K extends string, S extends Schema.Schema.Any,> {
14
+ export interface ArrayFieldDef<K extends string, S extends Schema.Top,> {
15
15
  readonly _tag: "array"
16
16
  readonly key: K
17
17
  readonly itemSchema: S
18
18
  }
19
19
 
20
- export type AnyFieldDef = FieldDef<string, Schema.Schema.Any> | ArrayFieldDef<string, Schema.Schema.Any>
20
+ export type AnyFieldDef = FieldDef<string, Schema.Top> | ArrayFieldDef<string, Schema.Top>
21
21
 
22
22
  export type FieldsRecord = Record<string, AnyFieldDef>
23
23
 
24
- export const isArrayFieldDef = (def: AnyFieldDef): def is ArrayFieldDef<string, Schema.Schema.Any> =>
25
- def._tag === "array"
24
+ export const isArrayFieldDef = (def: AnyFieldDef): def is ArrayFieldDef<string, Schema.Top> => def._tag === "array"
26
25
 
27
- export const isFieldDef = (def: AnyFieldDef): def is FieldDef<string, Schema.Schema.Any> => def._tag === "field"
26
+ export const isFieldDef = (def: AnyFieldDef): def is FieldDef<string, Schema.Top> => def._tag === "field"
28
27
 
29
- export const makeField = <K extends string, S extends Schema.Schema.Any,>(
28
+ export const makeField = <K extends string, S extends Schema.Top,>(
30
29
  key: K,
31
30
  schema: S
32
31
  ): FieldDef<K, S> => ({
@@ -35,7 +34,7 @@ export const makeField = <K extends string, S extends Schema.Schema.Any,>(
35
34
  schema
36
35
  })
37
36
 
38
- export const makeArrayField = <K extends string, S extends Schema.Schema.Any,>(
37
+ export const makeArrayField = <K extends string, S extends Schema.Top,>(
39
38
  key: K,
40
39
  itemSchema: S
41
40
  ): ArrayFieldDef<K, S> => ({
@@ -45,8 +44,8 @@ export const makeArrayField = <K extends string, S extends Schema.Schema.Any,>(
45
44
  })
46
45
 
47
46
  export type EncodedFromFields<T extends FieldsRecord,> = {
48
- readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Schema.Encoded<S>
49
- : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Schema.Encoded<S>>
47
+ readonly [K in keyof T]: T[K] extends FieldDef<any, infer S> ? Schema.Codec.Encoded<S>
48
+ : T[K] extends ArrayFieldDef<any, infer S> ? ReadonlyArray<Schema.Codec.Encoded<S>>
50
49
  : never
51
50
  }
52
51
 
@@ -56,23 +55,23 @@ export type DecodedFromFields<T extends FieldsRecord,> = {
56
55
  : never
57
56
  }
58
57
 
59
- export const getDefaultFromSchema = (schema: Schema.Schema.Any): unknown => {
60
- const ast = schema.ast
58
+ export const getDefaultFromSchema = (schema: Schema.Top): unknown => {
59
+ const ast = AST.toEncoded(schema.ast)
61
60
  switch (ast._tag) {
62
- case "StringKeyword":
61
+ case "String":
63
62
  case "TemplateLiteral":
64
63
  return ""
65
- case "NumberKeyword":
64
+ case "Number":
66
65
  return 0
67
- case "BooleanKeyword":
66
+ case "Boolean":
68
67
  return false
69
68
  case "Literal":
70
69
  return ast.literal
71
- case "Enums": {
70
+ case "Enum": {
72
71
  const first = ast.enums[0]
73
72
  return first ? first[1] : undefined
74
73
  }
75
- case "TypeLiteral": {
74
+ case "Objects": {
76
75
  const result: Record<string, unknown> = {}
77
76
  for (const prop of ast.propertySignatures) {
78
77
  result[prop.name as string] = getDefaultFromSchema(Schema.make(prop.type))
@@ -83,14 +82,10 @@ export const getDefaultFromSchema = (schema: Schema.Schema.Any): unknown => {
83
82
  const first = ast.types[0]
84
83
  return first ? getDefaultFromSchema(Schema.make(first)) : undefined
85
84
  }
86
- case "NeverKeyword":
85
+ case "Never":
87
86
  return undefined
88
- case "Transformation":
89
- return getDefaultFromSchema(Schema.make(ast.from))
90
- case "Refinement":
91
- return getDefaultFromSchema(Schema.make(ast.from))
92
87
  case "Suspend":
93
- return getDefaultFromSchema(Schema.make(ast.f()))
88
+ return getDefaultFromSchema(Schema.make(ast.thunk()))
94
89
  default:
95
90
  return ""
96
91
  }
@@ -117,20 +112,17 @@ export const createTouchedRecord = (fields: FieldsRecord, value: boolean): Recor
117
112
  }
118
113
 
119
114
  export const extractStructFieldDefs = (
120
- schema: Schema.Schema.Any
121
- ): ReadonlyArray<FieldDef<string, Schema.Schema.Any>> | undefined => {
122
- const unwrapTypeLiteral = (ast: AST.AST): AST.TypeLiteral | undefined => {
123
- if (AST.isTypeLiteral(ast)) return ast
124
- if (AST.isRefinement(ast)) return unwrapTypeLiteral(ast.from)
125
- if (AST.isTransformation(ast)) return unwrapTypeLiteral(ast.from)
126
- if (AST.isSuspend(ast)) return unwrapTypeLiteral(ast.f())
115
+ schema: Schema.Top
116
+ ): ReadonlyArray<FieldDef<string, Schema.Top>> | undefined => {
117
+ const unwrapObjects = (ast: AST.AST): AST.Objects | undefined => {
118
+ const base = AST.toType(ast)
119
+ if (AST.isObjects(base)) return base
120
+ if (AST.isSuspend(base)) return unwrapObjects(base.thunk())
127
121
  return undefined
128
122
  }
129
123
 
130
- const typeLiteral = unwrapTypeLiteral(schema.ast)
131
- if (!typeLiteral) return undefined
124
+ const objects = unwrapObjects(schema.ast)
125
+ if (!objects) return undefined
132
126
 
133
- return typeLiteral.propertySignatures.map((prop) =>
134
- makeField(prop.name as string, { ast: prop.type } as Schema.Schema.Any)
135
- )
127
+ return objects.propertySignatures.map((prop) => makeField(prop.name as string, { ast: prop.type } as Schema.Top))
136
128
  }
package/src/FieldState.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type * as Option from "effect/Option"
2
2
  import type * as Schema from "effect/Schema"
3
3
 
4
- export type FieldValue<T,> = T extends Schema.Schema.Any ? Schema.Schema.Encoded<T> : T
4
+ export type FieldValue<T,> = T extends Schema.Top ? Schema.Codec.Encoded<T> : T
5
5
 
6
6
  export interface FieldState<E,> {
7
7
  readonly value: E