diff --git a/packages/effect-fc-next/src/SynchronizedForm.ts b/packages/effect-fc-next/src/LensForm.ts similarity index 87% rename from packages/effect-fc-next/src/SynchronizedForm.ts rename to packages/effect-fc-next/src/LensForm.ts index 6af4f58..576b486 100644 --- a/packages/effect-fc-next/src/SynchronizedForm.ts +++ b/packages/effect-fc-next/src/LensForm.ts @@ -5,12 +5,12 @@ import * as Lens from "./Lens.js" import * as View from "./View.js" -export const SynchronizedFormTypeId: unique symbol = Symbol.for("@effect-fc/Form/SynchronizedForm") -export type SynchronizedFormTypeId = typeof SynchronizedFormTypeId +export const LensFormTypeId: unique symbol = Symbol.for("@effect-fc/Form/LensForm") +export type LensFormTypeId = typeof LensFormTypeId -export interface SynchronizedForm +export interface LensForm extends Form.Form { - readonly [SynchronizedFormTypeId]: SynchronizedFormTypeId + readonly [LensFormTypeId]: LensFormTypeId readonly schema: Schema.ConstraintCodec readonly context: Context.Context @@ -20,10 +20,10 @@ extends Form.Form { readonly run: Effect.Effect } -export class SynchronizedFormImpl -extends Pipeable.Class implements SynchronizedForm { +export class LensFormImpl +extends Pipeable.Class implements LensForm { readonly [Form.FormTypeId]: Form.FormTypeId = Form.FormTypeId - readonly [SynchronizedFormTypeId]: SynchronizedFormTypeId = SynchronizedFormTypeId + readonly [LensFormTypeId]: LensFormTypeId = LensFormTypeId readonly path = [] as const @@ -150,7 +150,7 @@ extends Pipeable.Class implements SynchronizedForm => Predicate.hasProperty(u, SynchronizedFormTypeId) +export const isLensForm = (u: unknown): u is LensForm => Predicate.hasProperty(u, LensFormTypeId) export declare namespace make { @@ -164,7 +164,7 @@ export declare namespace make { export const make = Effect.fnUntraced(function* ( options: make.Options ): Effect.fn.Return< - SynchronizedForm, + LensForm, Schema.SchemaError | TER, Scope.Scope | RD | RE | TRR | TRW > { @@ -175,7 +175,7 @@ export const make = Effect.fnUntraced(function* (), options.target, @@ -197,7 +197,7 @@ export declare namespace service { export const service = ( options: service.Options ): Effect.Effect< - SynchronizedForm, + LensForm, Schema.SchemaError | TER, Scope.Scope | RD | RE | TRR | TRW > => Effect.tap( diff --git a/packages/effect-fc-next/src/SubmittableForm.ts b/packages/effect-fc-next/src/MutationForm.ts similarity index 85% rename from packages/effect-fc-next/src/SubmittableForm.ts rename to packages/effect-fc-next/src/MutationForm.ts index 68604d7..55d5ebc 100644 --- a/packages/effect-fc-next/src/SubmittableForm.ts +++ b/packages/effect-fc-next/src/MutationForm.ts @@ -7,17 +7,17 @@ import * as Mutation from "./Mutation.js" import * as View from "./View.js" -export const SubmittableFormTypeId: unique symbol = Symbol.for("@effect-fc/Form/SubmittableForm") -export type SubmittableFormTypeId = typeof SubmittableFormTypeId +export const MutationFormTypeId: unique symbol = Symbol.for("@effect-fc/Form/MutationForm") +export type MutationFormTypeId = typeof MutationFormTypeId -export interface SubmittableForm +export interface MutationForm extends Form.Form { - readonly [SubmittableFormTypeId]: SubmittableFormTypeId + readonly [MutationFormTypeId]: MutationFormTypeId readonly schema: Schema.ConstraintCodec readonly context: Context.Context readonly mutation: Mutation.Mutation< - readonly [value: A, form: SubmittableForm], + readonly [value: A, form: MutationForm], MA, ME, MR > readonly validationFiber: View.View>, never, never> @@ -26,10 +26,10 @@ extends Form.Form { readonly submit: Effect.Effect | AsyncResult.Failure>, Cause.NoSuchElementError> } -export class SubmittableFormImpl -extends Pipeable.Class implements SubmittableForm { +export class MutationFormImpl +extends Pipeable.Class implements MutationForm { readonly [Form.FormTypeId]: Form.FormTypeId = Form.FormTypeId - readonly [SubmittableFormTypeId]: SubmittableFormTypeId = SubmittableFormTypeId + readonly [MutationFormTypeId]: MutationFormTypeId = MutationFormTypeId readonly path = [] as const @@ -42,7 +42,7 @@ extends Pipeable.Class implements SubmittableForm { readonly schema: Schema.ConstraintCodec, readonly context: Context.Context, readonly mutation: Mutation.Mutation< - readonly [value: A, form: SubmittableForm], + readonly [value: A, form: MutationForm], MA, ME, MR >, readonly value: Lens.Lens, never, never, never, never>, @@ -161,13 +161,13 @@ extends Pipeable.Class implements SubmittableForm { } } -export const isSubmittableForm = (u: unknown): u is SubmittableForm => Predicate.hasProperty(u, SubmittableFormTypeId) +export const isMutationForm = (u: unknown): u is MutationForm => Predicate.hasProperty(u, MutationFormTypeId) export declare namespace make { export interface Options extends Mutation.make.Options< - readonly [value: NoInfer, form: SubmittableForm, NoInfer, NoInfer, NoInfer, unknown, unknown, unknown>], + readonly [value: NoInfer, form: MutationForm, NoInfer, NoInfer, NoInfer, unknown, unknown, unknown>], MA, ME, MR > { readonly schema: Schema.ConstraintCodec @@ -178,11 +178,11 @@ export declare namespace make { export const make = Effect.fnUntraced(function* ( options: make.Options ): Effect.fn.Return< - SubmittableForm, + MutationForm, never, Scope.Scope | RD | RE | MR > { - return new SubmittableFormImpl( + return new MutationFormImpl( options.schema, yield* Effect.context(), yield* Mutation.make(options), @@ -204,7 +204,7 @@ export declare namespace service { export const service = ( options: service.Options ): Effect.Effect< - SubmittableForm, + MutationForm, never, Scope.Scope | RD | RE | MR > => Effect.tap( diff --git a/packages/effect-fc-next/src/index.ts b/packages/effect-fc-next/src/index.ts index ca7e03d..b114c1c 100644 --- a/packages/effect-fc-next/src/index.ts +++ b/packages/effect-fc-next/src/index.ts @@ -3,8 +3,10 @@ export * as Component from "./Component.js" export * as ErrorObserver from "./ErrorObserver.js" export * as Form from "./Form.js" export * as Lens from "./Lens.js" +export * as LensForm from "./LensForm.js" export * as Memoized from "./Memoized.js" export * as Mutation from "./Mutation.js" +export * as MutationForm from "./MutationForm.js" export * as PubSub from "./PubSub.js" export * as Query from "./Query.js" export * as QueryClient from "./QueryClient.js" @@ -12,6 +14,4 @@ export * as ReactRuntime from "./ReactRuntime.js" export * as Result from "./Result.js" export * as SetStateAction from "./SetStateAction.js" export * as Stream from "./Stream.js" -export * as SubmittableForm from "./SubmittableForm.js" -export * as SynchronizedForm from "./SynchronizedForm.js" export * as View from "./View.js"