typed-utilities
Version:
Strongly typed general purpose utilities
462 lines (461 loc) • 12.8 kB
TypeScript
declare enum AsyncResultTag {
Pending = "pending",
Resolved = "resolved",
Rejected = "rejected"
}
export declare type Pending = [tag: AsyncResultTag.Pending];
export declare type Rejected<Error> = [tag: AsyncResultTag.Rejected, error: Error];
export declare type Resolved<Value> = [tag: AsyncResultTag.Resolved, value: Value];
export declare type AsyncResult<Value = unknown, Error = unknown> = Pending | Rejected<Error> | Resolved<Value>;
export declare type AsyncResultDependencyList<Value = unknown, Error = unknown> = readonly [tag: AsyncResultTag.Pending, value: null, error: null] | readonly [tag: AsyncResultTag.Rejected, value: null, error: Error] | readonly [tag: AsyncResultTag.Resolved, value: Value, error: null];
declare function isPending(result: AsyncResult<unknown, unknown>): result is Pending;
declare function assertPending(result: AsyncResult<unknown, unknown>, message?: string): asserts result is Pending;
declare function isRejected<Error = unknown>(result: AsyncResult<unknown, Error>): result is Rejected<Error>;
declare function assertRejected<Error = unknown>(result: AsyncResult<unknown, Error>, message?: string): asserts result is Rejected<Error>;
declare function isResolved<Value = unknown>(result: AsyncResult<Value, unknown>): result is Resolved<Value>;
declare function assertResolved<Value = unknown>(result: AsyncResult<Value>, message?: string): asserts result is Resolved<Value>;
declare type Match<IfPending, IfRejected, IfResolved, Value = unknown, Error = unknown> = {
readonly pending: () => IfPending;
readonly rejected: (error: Error) => IfRejected;
readonly resolved: (value: Value) => IfResolved;
};
declare type Join = {
<V1>(values: readonly [AsyncResult<V1>]): AsyncResult<[V1], AggregateError>;
<V1, V2>(values: readonly [AsyncResult<V1>, AsyncResult<V2>]): AsyncResult<[
V1,
V2
], AggregateError>;
<V1, V2, V3>(values: readonly [AsyncResult<V1>, AsyncResult<V2>, AsyncResult<V3>]): AsyncResult<[V1, V2, V3], AggregateError>;
<V1, V2, V3, V4>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>
]): AsyncResult<[V1, V2, V3, V4], AggregateError>;
<V1, V2, V3, V4, V5>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>
]): AsyncResult<[V1, V2, V3, V4, V5], AggregateError>;
<V1, V2, V3, V4, V5, V6>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>
]): AsyncResult<[V1, V2, V3, V4, V5, V6], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>
]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>
]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>
]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8, V9], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>
]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8, V9, V10], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>,
AsyncResult<V16>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>,
AsyncResult<V16>,
AsyncResult<V17>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
V17
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>,
AsyncResult<V16>,
AsyncResult<V17>,
AsyncResult<V18>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
V17,
V18
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>,
AsyncResult<V16>,
AsyncResult<V17>,
AsyncResult<V18>,
AsyncResult<V19>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
V17,
V18,
V19
], AggregateError>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(values: readonly [
AsyncResult<V1>,
AsyncResult<V2>,
AsyncResult<V3>,
AsyncResult<V4>,
AsyncResult<V5>,
AsyncResult<V6>,
AsyncResult<V7>,
AsyncResult<V8>,
AsyncResult<V9>,
AsyncResult<V10>,
AsyncResult<V11>,
AsyncResult<V12>,
AsyncResult<V13>,
AsyncResult<V14>,
AsyncResult<V15>,
AsyncResult<V16>,
AsyncResult<V17>,
AsyncResult<V18>,
AsyncResult<V19>,
AsyncResult<V20>
]): AsyncResult<[
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
V17,
V18,
V19,
V20
], AggregateError>;
<V>(values: readonly AsyncResult<V>[]): AsyncResult<V[], AggregateError>;
};
export declare const AsyncResult: {
Tag: typeof AsyncResultTag;
is: {
pending: typeof isPending;
rejected: typeof isRejected;
resolved: typeof isResolved;
};
assert: {
pending: typeof assertPending;
rejected: typeof assertRejected;
resolved: typeof assertResolved;
};
of: {
pending: () => Pending & AsyncResult<never, never>;
rejected: <Error_1 = unknown>(error: Error_1) => Rejected<Error_1>;
resolved: <Value = unknown>(value: Value) => Resolved<Value>;
};
to: {
resolvedValue: <Value_1 = unknown>(resolved: Resolved<Value_1>) => Value_1;
rejectedError: <Error_2 = unknown>(rejected: Rejected<Error_2>) => Error_2;
dependencyList: <Value_2 = unknown, Error_3 = unknown>(result: AsyncResult<Value_2, Error_3>) => AsyncResultDependencyList<Value_2, Error_3>;
};
match: <IfPending, IfRejected, IfResolved, Value_3 = unknown, Error_4 = unknown>(result: AsyncResult<Value_3, Error_4>, match: Match<IfPending, IfRejected, IfResolved, Value_3, Error_4>) => IfPending | IfRejected | IfResolved;
join: Join;
pipe: <T, U>(result: AsyncResult<T, unknown>, fn: (value: T) => U) => AsyncResult<U, unknown>;
catch: <T_1, E, S>(result: AsyncResult<T_1, E>, fn: (error: E) => S) => AsyncResult<T_1 | S, unknown>;
};
export {};