diff --git a/packages/extension-form/src/internal/Form.ts b/packages/extension-form/src/internal/Form.ts
index 1b8bed4..914aae1 100644
--- a/packages/extension-form/src/internal/Form.ts
+++ b/packages/extension-form/src/internal/Form.ts
@@ -1,26 +1,6 @@
import { Schema } from "effect"
-import type * as FormField from "./FormField.js"
export interface Form {
readonly schema: Schema.Schema
}
-
-
-export type FormTree> = (
- S extends Schema.Array$ ? FormField.ArrayFormField :
- S extends Schema.Struct ? FormField.StructFormField :
- FormField.GenericFormField
-)
-
-
-const MySchema = Schema.Struct({
- name: Schema.String,
- symbol: Schema.SymbolFromSelf,
- values: Schema.Array(Schema.String),
-})
-
-type TestFormTree = FormTree
-declare const testFormTree: TestFormTree
-
-testFormTree.fields.values.elements
diff --git a/packages/extension-form/src/internal/FormField.ts b/packages/extension-form/src/internal/FormField.ts
index a07df9d..673aaa5 100644
--- a/packages/extension-form/src/internal/FormField.ts
+++ b/packages/extension-form/src/internal/FormField.ts
@@ -1,25 +1,31 @@
import type { Schema } from "effect"
-import type * as Form from "./Form.ts"
+import type * as FormTree from "./FormTree.ts"
export interface FormField {
-
+ readonly schema: S
}
export interface GenericFormField extends FormField {
readonly _tag: "GenericFormField"
- readonly schema: S
readonly value: S["Type"]
}
-export interface ArrayFormField> extends FormField {
- readonly _tag: "ArrayFormField"
- readonly schema: S
- readonly elements: readonly Form.FormTree[]
+export interface TupleFormField> extends FormField {
+ readonly _tag: "TupleFormField"
+ readonly elements: { readonly [K in keyof S["elements"]]: FormTree.FormTree }
}
-export interface StructFormField> extends FormField {
- readonly _tag: "StructFormField"
- readonly schema: S
- readonly fields: { [K in keyof S["fields"]]: Form.FormTree }
+export interface ArrayFormField> extends FormField {
+ readonly _tag: "ArrayFormField"
+ readonly elements: readonly FormTree.FormTree[]
+}
+
+export interface StructFormField> extends FormField {
+ readonly _tag: "StructFormField"
+ readonly fields: { [K in keyof S["fields"]]: FormTree.FormTree }
}
diff --git a/packages/extension-form/src/internal/FormTree.ts b/packages/extension-form/src/internal/FormTree.ts
new file mode 100644
index 0000000..f741222
--- /dev/null
+++ b/packages/extension-form/src/internal/FormTree.ts
@@ -0,0 +1,21 @@
+import { Schema } from "effect"
+import type * as FormField from "./FormField.js"
+
+
+export type FormTree> = (
+ S extends Schema.Array$ ? FormField.ArrayFormField :
+ S extends Schema.Struct ? FormField.StructFormField :
+ FormField.GenericFormField
+)
+
+
+const MySchema = Schema.Struct({
+ name: Schema.String,
+ symbol: Schema.SymbolFromSelf,
+ values: Schema.Array(Schema.String),
+})
+
+type TestFormTree = FormTree
+declare const testFormTree: TestFormTree
+
+testFormTree.fields.values.elements