diff --git a/packages/effect-fc/src/Result.ts b/packages/effect-fc/src/Result.ts index a47f747..ad2cf69 100644 --- a/packages/effect-fc/src/Result.ts +++ b/packages/effect-fc/src/Result.ts @@ -15,10 +15,6 @@ export type Final = (Success | Failure) & ({} | F export type Flags

= WillFetch | WillRefresh | Refreshing

export declare namespace Result { - export interface Prototype extends Pipeable.Pipeable, Equal.Equal { - readonly [ResultTypeId]: ResultTypeId - } - export type Success> = [R] extends [Result] ? A : never export type Failure> = [R] extends [Result] ? E : never export type Progress> = [R] extends [Result] ? P : never @@ -28,21 +24,21 @@ export declare namespace Flags { export type Keys = keyof WillFetch & WillRefresh & Refreshing } -export interface Initial extends Result.Prototype { +export interface Initial extends ResultPrototype { readonly _tag: "Initial" } -export interface Running

extends Result.Prototype { +export interface Running

extends ResultPrototype { readonly _tag: "Running" readonly progress: P } -export interface Success extends Result.Prototype { +export interface Success extends ResultPrototype { readonly _tag: "Success" readonly value: A } -export interface Failure extends Result.Prototype { +export interface Failure extends ResultPrototype { readonly _tag: "Failure" readonly cause: Cause.Cause } @@ -61,7 +57,11 @@ export interface Refreshing

{ } -const ResultPrototype = Object.freeze({ +export interface ResultPrototype extends Pipeable.Pipeable, Equal.Equal { + readonly [ResultTypeId]: ResultTypeId +} + +export const ResultPrototype: ResultPrototype = Object.freeze({ ...Pipeable.Prototype, [ResultTypeId]: ResultTypeId, @@ -95,7 +95,7 @@ const ResultPrototype = Object.freeze({ Hash.cached(this), ) }, -} as const satisfies Result.Prototype) +} as const) export const isResult = (u: unknown): u is Result => Predicate.hasProperty(u, ResultTypeId)