Form work
All checks were successful
Lint / lint (push) Successful in 15s

This commit is contained in:
Julien Valverdé
2025-04-18 23:52:58 +02:00
parent cb61713cce
commit 596e0942c5

View File

@@ -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