This commit is contained in:
@@ -2,12 +2,12 @@ import { Schema } from "effect"
|
|||||||
import type * as FormField from "./FormField.js"
|
import type * as FormField from "./FormField.js"
|
||||||
|
|
||||||
|
|
||||||
export type FormTree<S> = (
|
export type Formify<S> = (
|
||||||
|
S extends Schema.Literal<infer Literals> ? FormField.LiteralFormField<S, Literals> :
|
||||||
|
S extends Schema.Union<infer Members> ? FormField.UnionFormField<S, Members> :
|
||||||
S extends Schema.TupleType<infer Elements, infer Rest> ? FormField.TupleFormField<S, Elements, Rest> :
|
S extends Schema.TupleType<infer Elements, infer Rest> ? FormField.TupleFormField<S, Elements, Rest> :
|
||||||
S extends Schema.Array$<infer Value> ? FormField.ArrayFormField<S, Value> :
|
S extends Schema.Array$<infer Value> ? FormField.ArrayFormField<S, Value> :
|
||||||
S extends Schema.Struct<infer Fields> ? FormField.StructFormField<S, Fields> :
|
S extends Schema.Struct<infer Fields> ? FormField.StructFormField<S, Fields> :
|
||||||
S extends Schema.Literal<infer Literals> ? FormField.LiteralFormField<S, Literals> :
|
|
||||||
S extends Schema.Union<infer Members> ? FormField.UnionFormField<S, Members> :
|
|
||||||
S extends Schema.Schema.Any ? FormField.GenericFormField<S> :
|
S extends Schema.Schema.Any ? FormField.GenericFormField<S> :
|
||||||
S extends Schema.PropertySignature<
|
S extends Schema.PropertySignature<
|
||||||
infer TypeToken,
|
infer TypeToken,
|
||||||
@@ -35,7 +35,7 @@ const LoginForm = Schema.Union(
|
|||||||
password: Schema.RedactedFromSelf(Schema.String),
|
password: Schema.RedactedFromSelf(Schema.String),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
type LoginFormTree = FormTree<typeof LoginForm>
|
type LoginFormTree = Formify<typeof LoginForm>
|
||||||
declare const loginFormTree: LoginFormTree
|
declare const loginFormTree: LoginFormTree
|
||||||
|
|
||||||
switch (loginFormTree.member.fields._tag.value) {
|
switch (loginFormTree.member.fields._tag.value) {
|
||||||
@@ -53,7 +53,7 @@ const User = Schema.Struct({
|
|||||||
values: Schema.Array(Schema.String),
|
values: Schema.Array(Schema.String),
|
||||||
})
|
})
|
||||||
|
|
||||||
type TestFormTree = FormTree<typeof User>
|
type TestFormTree = Formify<typeof User>
|
||||||
declare const testFormTree: TestFormTree
|
declare const testFormTree: TestFormTree
|
||||||
|
|
||||||
testFormTree.fields._tag
|
testFormTree.fields._tag
|
||||||
Reference in New Issue
Block a user