@@ -15,10 +15,6 @@ export type Final<A, E = never, P = never> = (Success<A> | Failure<E>) & ({} | F
|
|||||||
export type Flags<P = never> = WillFetch | WillRefresh | Refreshing<P>
|
export type Flags<P = never> = WillFetch | WillRefresh | Refreshing<P>
|
||||||
|
|
||||||
export declare namespace Result {
|
export declare namespace Result {
|
||||||
export interface Prototype extends Pipeable.Pipeable, Equal.Equal {
|
|
||||||
readonly [ResultTypeId]: ResultTypeId
|
|
||||||
}
|
|
||||||
|
|
||||||
export type Success<R extends Result<any, any, any>> = [R] extends [Result<infer A, infer _E, infer _P>] ? A : never
|
export type Success<R extends Result<any, any, any>> = [R] extends [Result<infer A, infer _E, infer _P>] ? A : never
|
||||||
export type Failure<R extends Result<any, any, any>> = [R] extends [Result<infer _A, infer E, infer _P>] ? E : never
|
export type Failure<R extends Result<any, any, any>> = [R] extends [Result<infer _A, infer E, infer _P>] ? E : never
|
||||||
export type Progress<R extends Result<any, any, any>> = [R] extends [Result<infer _A, infer _E, infer P>] ? P : never
|
export type Progress<R extends Result<any, any, any>> = [R] extends [Result<infer _A, infer _E, infer P>] ? P : never
|
||||||
@@ -28,21 +24,21 @@ export declare namespace Flags {
|
|||||||
export type Keys = keyof WillFetch & WillRefresh & Refreshing<any>
|
export type Keys = keyof WillFetch & WillRefresh & Refreshing<any>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Initial extends Result.Prototype {
|
export interface Initial extends ResultPrototype {
|
||||||
readonly _tag: "Initial"
|
readonly _tag: "Initial"
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Running<P = never> extends Result.Prototype {
|
export interface Running<P = never> extends ResultPrototype {
|
||||||
readonly _tag: "Running"
|
readonly _tag: "Running"
|
||||||
readonly progress: P
|
readonly progress: P
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Success<A> extends Result.Prototype {
|
export interface Success<A> extends ResultPrototype {
|
||||||
readonly _tag: "Success"
|
readonly _tag: "Success"
|
||||||
readonly value: A
|
readonly value: A
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Failure<E = never> extends Result.Prototype {
|
export interface Failure<E = never> extends ResultPrototype {
|
||||||
readonly _tag: "Failure"
|
readonly _tag: "Failure"
|
||||||
readonly cause: Cause.Cause<E>
|
readonly cause: Cause.Cause<E>
|
||||||
}
|
}
|
||||||
@@ -61,7 +57,11 @@ export interface Refreshing<P = never> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const ResultPrototype = Object.freeze({
|
export interface ResultPrototype extends Pipeable.Pipeable, Equal.Equal {
|
||||||
|
readonly [ResultTypeId]: ResultTypeId
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ResultPrototype: ResultPrototype = Object.freeze({
|
||||||
...Pipeable.Prototype,
|
...Pipeable.Prototype,
|
||||||
[ResultTypeId]: ResultTypeId,
|
[ResultTypeId]: ResultTypeId,
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ const ResultPrototype = Object.freeze({
|
|||||||
Hash.cached(this),
|
Hash.cached(this),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
} as const satisfies Result.Prototype)
|
} as const)
|
||||||
|
|
||||||
|
|
||||||
export const isResult = (u: unknown): u is Result<unknown, unknown, unknown> => Predicate.hasProperty(u, ResultTypeId)
|
export const isResult = (u: unknown): u is Result<unknown, unknown, unknown> => Predicate.hasProperty(u, ResultTypeId)
|
||||||
|
|||||||
Reference in New Issue
Block a user