resultar 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-BSNOKGZS.js → chunk-L5HTB5V7.js} +18 -21
- package/dist/chunk-L5HTB5V7.js.map +1 -0
- package/dist/error.d.cts +1 -1
- package/dist/error.d.ts +1 -1
- package/dist/{index-CV4S5Ys9.d.cts → index-DUO8gZOZ.d.cts} +118 -125
- package/dist/{index-CV4S5Ys9.d.ts → index-DUO8gZOZ.d.ts} +118 -125
- package/dist/index.cjs +12 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/result-async.cjs +10 -13
- package/dist/result-async.cjs.map +1 -1
- package/dist/result-async.d.cts +1 -1
- package/dist/result-async.d.ts +1 -1
- package/dist/result-async.js +1 -1
- package/dist/result.cjs +10 -13
- package/dist/result.cjs.map +1 -1
- package/dist/result.d.cts +1 -1
- package/dist/result.d.ts +1 -1
- package/dist/result.js +1 -1
- package/dist/utils.cjs +8 -11
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/package.json +17 -18
- package/dist/chunk-BSNOKGZS.js.map +0 -1
|
@@ -1,116 +1,30 @@
|
|
|
1
|
-
type
|
|
2
|
-
type MemberListOf<T> = ((T extends unknown ? (t: T) => T : never) extends infer U ? (U extends unknown ? (u: U) => unknown : never) extends (v: infer V) => unknown ? V : never : never) extends (_: unknown) => infer W ? [...MemberListOf<Exclude<T, W>>, W] : [];
|
|
3
|
-
type ExtractOkTypes<T extends ReadonlyArray<Result<unknown, unknown>>> = {
|
|
1
|
+
type ExtractOkTypes<T extends readonly Result<unknown, unknown>[]> = {
|
|
4
2
|
[idx in keyof T]: T[idx] extends Result<infer U, unknown> ? U : never;
|
|
5
3
|
};
|
|
6
|
-
type ExtractOkAsyncTypes<T extends
|
|
4
|
+
type ExtractOkAsyncTypes<T extends readonly ResultAsync<unknown, unknown>[]> = {
|
|
7
5
|
[idx in keyof T]: T[idx] extends ResultAsync<infer U, unknown> ? U : never;
|
|
8
6
|
};
|
|
9
|
-
type ExtractErrTypes<T extends
|
|
7
|
+
type ExtractErrTypes<T extends readonly Result<unknown, unknown>[]> = {
|
|
10
8
|
[idx in keyof T]: T[idx] extends Result<unknown, infer E> ? E : never;
|
|
11
9
|
};
|
|
12
|
-
type ExtractErrAsyncTypes<T extends
|
|
10
|
+
type ExtractErrAsyncTypes<T extends readonly ResultAsync<unknown, unknown>[]> = {
|
|
13
11
|
[idx in keyof T]: T[idx] extends ResultAsync<unknown, infer E> ? E : never;
|
|
14
12
|
};
|
|
15
13
|
type InferOkTypes<R> = R extends Result<infer T, unknown> ? T : never;
|
|
16
14
|
type InferErrTypes<R> = R extends Result<unknown, infer E> ? E : never;
|
|
17
15
|
type InferAsyncOkTypes<R> = R extends ResultAsync<infer T, unknown> ? T : never;
|
|
18
16
|
type InferAsyncErrTypes<R> = R extends ResultAsync<unknown, infer E> ? E : never;
|
|
19
|
-
type IsLiteralArray<T> = T extends {
|
|
20
|
-
length: infer L;
|
|
21
|
-
} ? L extends number ? number extends L ? 0 : 1 : 0 : 0;
|
|
22
|
-
type EmptyArrayToNever<T, NeverArrayToNever extends number = 0> = T extends [] ? never : NeverArrayToNever extends 1 ? T extends [never, ...infer Rest] ? [EmptyArrayToNever<Rest>] extends [never] ? never : T : T : T;
|
|
23
|
-
type Prev = [
|
|
24
|
-
never,
|
|
25
|
-
0,
|
|
26
|
-
1,
|
|
27
|
-
2,
|
|
28
|
-
3,
|
|
29
|
-
4,
|
|
30
|
-
5,
|
|
31
|
-
6,
|
|
32
|
-
7,
|
|
33
|
-
8,
|
|
34
|
-
9,
|
|
35
|
-
10,
|
|
36
|
-
11,
|
|
37
|
-
12,
|
|
38
|
-
13,
|
|
39
|
-
14,
|
|
40
|
-
15,
|
|
41
|
-
16,
|
|
42
|
-
17,
|
|
43
|
-
18,
|
|
44
|
-
19,
|
|
45
|
-
20,
|
|
46
|
-
21,
|
|
47
|
-
22,
|
|
48
|
-
23,
|
|
49
|
-
24,
|
|
50
|
-
25,
|
|
51
|
-
26,
|
|
52
|
-
27,
|
|
53
|
-
28,
|
|
54
|
-
29,
|
|
55
|
-
30,
|
|
56
|
-
31,
|
|
57
|
-
32,
|
|
58
|
-
33,
|
|
59
|
-
34,
|
|
60
|
-
35,
|
|
61
|
-
36,
|
|
62
|
-
37,
|
|
63
|
-
38,
|
|
64
|
-
39,
|
|
65
|
-
40,
|
|
66
|
-
41,
|
|
67
|
-
42,
|
|
68
|
-
43,
|
|
69
|
-
44,
|
|
70
|
-
45,
|
|
71
|
-
46,
|
|
72
|
-
47,
|
|
73
|
-
48,
|
|
74
|
-
49,
|
|
75
|
-
...Array<0>
|
|
76
|
-
];
|
|
77
|
-
type Transpose<A, Transposed extends unknown[][] = [], Depth extends number = 10> = A extends [infer T, ...infer Rest] ? T extends [infer L, infer R] ? Transposed extends [infer PL, infer PR] ? PL extends unknown[] ? PR extends unknown[] ? Transpose<Rest, [[...PL, L], [...PR, R]], Prev[Depth]> : never : never : Transpose<Rest, [[L], [R]], Prev[Depth]> : Transposed : Transposed;
|
|
78
|
-
type CollectResults<T, Collected extends unknown[] = [], Depth extends number = 50> = [
|
|
79
|
-
Depth
|
|
80
|
-
] extends [never] ? [] : T extends [infer H, ...infer Rest] ? H extends Result<infer L, infer R> ? CollectResults<Rest, [
|
|
81
|
-
...Collected,
|
|
82
|
-
[L, R]
|
|
83
|
-
], Prev[Depth]> : never : Collected;
|
|
84
|
-
type UnknownMembersToNever<T> = T extends [infer H, ...infer R] ? [[unknown] extends [H] ? never : H, ...UnknownMembersToNever<R>] : T;
|
|
85
|
-
type MembersToUnion<T> = T extends unknown[] ? T[number] : never;
|
|
86
|
-
type Combine<T, Depth extends number = 5> = Transpose<CollectResults<T>, [], Depth> extends [
|
|
87
|
-
infer L,
|
|
88
|
-
infer R
|
|
89
|
-
] ? [UnknownMembersToNever<L>, UnknownMembersToNever<R>] : Transpose<CollectResults<T>, [], Depth> extends [] ? [[], []] : never;
|
|
90
|
-
type Traverse<T, Depth extends number = 5> = Combine<T, Depth> extends [infer Oks, infer Errs] ? Result<EmptyArrayToNever<Oks, 1>, MembersToUnion<Errs>> : never;
|
|
91
|
-
type TraverseWithAllErrors<T, Depth extends number = 5> = Combine<T, Depth> extends [
|
|
92
|
-
infer Oks,
|
|
93
|
-
infer Errs
|
|
94
|
-
] ? Result<EmptyArrayToNever<Oks>, EmptyArrayToNever<Errs>> : never;
|
|
95
|
-
type CombineResults<T extends ReadonlyArray<Result<unknown, unknown>>> = IsLiteralArray<T> extends 1 ? Traverse<T> : Result<ExtractOkTypes<T>, ExtractErrTypes<T>[number]>;
|
|
96
|
-
type CombineResultsWithAllErrorsArray<T extends ReadonlyArray<Result<unknown, unknown>>> = IsLiteralArray<T> extends 1 ? TraverseWithAllErrors<T> : Result<ExtractOkTypes<T>, Array<ExtractErrTypes<T>[number]>>;
|
|
97
|
-
declare const combineResultAsyncList: <T, E>(asyncResultList: ReadonlyArray<ResultAsync<T, E>>) => ResultAsync<readonly T[], E>;
|
|
98
17
|
/**
|
|
99
18
|
* Short circuits on the FIRST Err value that we find
|
|
100
19
|
*/
|
|
101
|
-
declare const combineResultList: <T, E>(resultList:
|
|
102
|
-
declare const
|
|
20
|
+
declare const combineResultList: <T, E>(resultList: readonly Result<T, E>[]) => Result<readonly T[], E>;
|
|
21
|
+
declare const combineResultAsyncList: <T, E>(asyncResultList: readonly ResultAsync<T, E>[]) => ResultAsync<readonly T[], E>;
|
|
103
22
|
/**
|
|
104
23
|
* Give a list of all the errors we find
|
|
105
24
|
*/
|
|
106
|
-
declare const combineResultListWithAllErrors: <T, E>(resultList:
|
|
25
|
+
declare const combineResultListWithAllErrors: <T, E>(resultList: readonly Result<T, E>[]) => Result<readonly T[], E[]>;
|
|
26
|
+
declare const combineResultAsyncListWithAllErrors: <T, E>(asyncResultList: readonly ResultAsync<T, E>[]) => ResultAsync<readonly T[], E[]>;
|
|
107
27
|
|
|
108
|
-
type CombineResultAsyncs<T extends ReadonlyArray<ResultAsync<unknown, unknown>>> = IsLiteralArray<T> extends 1 ? TraverseAsync<UnwrapAsync<T>> : ResultAsync<ExtractOkAsyncTypes<T>, ExtractErrAsyncTypes<T>[number]>;
|
|
109
|
-
type CombineResultsWithAllErrorsArrayAsync<T extends ReadonlyArray<ResultAsync<unknown, unknown>>> = IsLiteralArray<T> extends 1 ? TraverseWithAllErrorsAsync<UnwrapAsync<T>> : ResultAsync<ExtractOkAsyncTypes<T>, Array<ExtractErrAsyncTypes<T>[number]>>;
|
|
110
|
-
type UnwrapAsync<T> = IsLiteralArray<T> extends 1 ? Writable<T> extends [infer H, ...infer Rest] ? H extends PromiseLike<infer HI> ? HI extends Result<unknown, unknown> ? [Dedup<HI>, ...UnwrapAsync<Rest>] : never : never : [] : T extends Array<infer A> ? A extends PromiseLike<infer HI> ? HI extends Result<infer L, infer R> ? Array<Result<L, R>> : never : never : never;
|
|
111
|
-
type TraverseAsync<T, Depth extends number = 5> = IsLiteralArray<T> extends 1 ? Combine<T, Depth> extends [infer Oks, infer Errs] ? ResultAsync<EmptyArrayToNever<Oks>, MembersToUnion<Errs>> : never : T extends Array<infer I> ? Combine<MemberListOf<I>, Depth> extends [infer Oks, infer Errs] ? Oks extends unknown[] ? Errs extends unknown[] ? ResultAsync<EmptyArrayToNever<Array<Oks[number]>>, MembersToUnion<Array<Errs[number]>>> : ResultAsync<EmptyArrayToNever<Array<Oks[number]>>, Errs> : Errs extends unknown[] ? ResultAsync<Oks, MembersToUnion<Array<Errs[number]>>> : ResultAsync<Oks, Errs> : never : never;
|
|
112
|
-
type TraverseWithAllErrorsAsync<T, Depth extends number = 5> = IsLiteralArray<T> extends 1 ? Combine<T, Depth> extends [infer Oks, infer Errs] ? ResultAsync<EmptyArrayToNever<Oks>, EmptyArrayToNever<Errs>> : never : Writable<T> extends Array<infer I> ? Combine<MemberListOf<I>, Depth> extends [infer Oks, infer Errs] ? Oks extends unknown[] ? Errs extends unknown[] ? ResultAsync<EmptyArrayToNever<Array<Oks[number]>>, EmptyArrayToNever<Array<Errs[number]>>> : ResultAsync<EmptyArrayToNever<Array<Oks[number]>>, Errs> : Errs extends unknown[] ? ResultAsync<Oks, EmptyArrayToNever<Array<Errs[number]>>> : ResultAsync<Oks, Errs> : never : never;
|
|
113
|
-
type Writable<T> = T extends readonly unknown[] ? [...T] : T;
|
|
114
28
|
declare class DisposableResultAsync<T, E> implements PromiseLike<Result<T, E>> {
|
|
115
29
|
private readonly innerPromise;
|
|
116
30
|
constructor(res: Promise<Result<T, E>>);
|
|
@@ -159,10 +73,10 @@ declare class ResultAsync<T, E> implements PromiseLike<Result<T, E>> {
|
|
|
159
73
|
* @return {ResultAsync<T, E>} A ResultAsync instance with the given promise and error type E.
|
|
160
74
|
*/
|
|
161
75
|
static fromPromise<T, E>(promise: PromiseLike<T>, errorFn: (e: unknown) => E): ResultAsync<T, E>;
|
|
162
|
-
static combine<T extends readonly [ResultAsync<unknown, unknown>, ...
|
|
163
|
-
static combine<T extends
|
|
164
|
-
static combineWithAllErrors<T extends readonly [ResultAsync<unknown, unknown>, ...
|
|
165
|
-
static combineWithAllErrors<T extends
|
|
76
|
+
static combine<T extends readonly [ResultAsync<unknown, unknown>, ...ResultAsync<unknown, unknown>[]]>(asyncResultList: T): CombineResultAsyncs<T>;
|
|
77
|
+
static combine<T extends readonly ResultAsync<unknown, unknown>[]>(asyncResultList: T): CombineResultAsyncs<T>;
|
|
78
|
+
static combineWithAllErrors<T extends readonly [ResultAsync<unknown, unknown>, ...ResultAsync<unknown, unknown>[]]>(asyncResultList: T): CombineResultsWithAllErrorsArrayAsync<T>;
|
|
79
|
+
static combineWithAllErrors<T extends readonly ResultAsync<unknown, unknown>[]>(asyncResultList: T): CombineResultsWithAllErrorsArrayAsync<T>;
|
|
166
80
|
/**
|
|
167
81
|
* Wraps a async function with a try catch, creating a new function with the same
|
|
168
82
|
* arguments but returning `Ok` if successful, `Err` if the function throws
|
|
@@ -189,7 +103,7 @@ declare class ResultAsync<T, E> implements PromiseLike<Result<T, E>> {
|
|
|
189
103
|
orElse<R extends Result<unknown, unknown>>(f: (e: E) => R): ResultAsync<InferOkTypes<R> | T, InferErrTypes<R>>;
|
|
190
104
|
orElse<R extends ResultAsync<unknown, unknown>>(f: (e: E) => R): ResultAsync<InferAsyncOkTypes<R> | T, InferAsyncErrTypes<R>>;
|
|
191
105
|
orElse<U, A>(f: (e: E) => Result<U, A> | ResultAsync<U, A>): ResultAsync<U | T, A>;
|
|
192
|
-
match<
|
|
106
|
+
match<A, B = A>(ok: (t: T) => A, fnErr: (e: E) => B): Promise<A | B>;
|
|
193
107
|
unwrapOr<A>(t: A): Promise<T | A>;
|
|
194
108
|
/**
|
|
195
109
|
* Performs a side effect for the `Ok` variant of `ResultAsync`.
|
|
@@ -219,25 +133,25 @@ declare class ResultAsync<T, E> implements PromiseLike<Result<T, E>> {
|
|
|
219
133
|
*/
|
|
220
134
|
safeUnwrap(): AsyncGenerator<Result<never, E>, T>;
|
|
221
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* @deprecated Use `safeTry` instead.
|
|
138
|
+
* @see `safeTry`
|
|
139
|
+
*
|
|
140
|
+
* This will be removed in the next major version.
|
|
141
|
+
*/
|
|
142
|
+
declare function safeTryAsync<T, E>(body: () => AsyncGenerator<Result<never, E>, Result<T, E>>): ResultAsync<T, E>;
|
|
222
143
|
declare const okAsync: typeof ResultAsync.okAsync;
|
|
223
144
|
declare const errAsync: typeof ResultAsync.errAsync;
|
|
224
145
|
declare const fromPromise: typeof ResultAsync.fromPromise;
|
|
225
146
|
declare const fromSafePromise: typeof ResultAsync.fromSafePromise;
|
|
226
147
|
declare const unitAsync: typeof ResultAsync.unitAsync;
|
|
227
148
|
declare const fromThrowableAsync: typeof ResultAsync.fromThrowable;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
* See `/tests/safeTry.test.ts` for examples.
|
|
235
|
-
*
|
|
236
|
-
* @param body - What is evaluated. In body, `yield* result.safeUnwrap()` works as
|
|
237
|
-
* Rust's `result?` expression.
|
|
238
|
-
* @returns The first occurence of either an yielded Err or a returned `ResultAsync`.
|
|
239
|
-
*/
|
|
240
|
-
declare function safeTryAsync<T, E>(body: () => AsyncGenerator<Result<never, E>, Result<T, E>>): ResultAsync<T, E>;
|
|
149
|
+
type CombineResultAsyncs<T extends readonly ResultAsync<unknown, unknown>[]> = IsLiteralArray<T> extends 1 ? TraverseAsync<UnwrapAsync<T>> : ResultAsync<ExtractOkAsyncTypes<T>, ExtractErrAsyncTypes<T>[number]>;
|
|
150
|
+
type CombineResultsWithAllErrorsArrayAsync<T extends readonly ResultAsync<unknown, unknown>[]> = IsLiteralArray<T> extends 1 ? TraverseWithAllErrorsAsync<UnwrapAsync<T>> : ResultAsync<ExtractOkAsyncTypes<T>, ExtractErrAsyncTypes<T>[number][]>;
|
|
151
|
+
type UnwrapAsync<T> = IsLiteralArray<T> extends 1 ? Writable<T> extends [infer H, ...infer Rest] ? H extends PromiseLike<infer HI> ? HI extends Result<unknown, unknown> ? [Dedup<HI>, ...UnwrapAsync<Rest>] : never : never : [] : T extends (infer A)[] ? A extends PromiseLike<infer HI> ? HI extends Result<infer L, infer R> ? Result<L, R>[] : never : never : never;
|
|
152
|
+
type TraverseAsync<T, Depth extends number = 5> = IsLiteralArray<T> extends 1 ? Combine<T, Depth> extends [infer Oks, infer Errs] ? ResultAsync<EmptyArrayToNever<Oks>, MembersToUnion<Errs>> : never : T extends (infer I)[] ? Combine<MemberListOf<I>, Depth> extends [infer Oks, infer Errs] ? Oks extends unknown[] ? Errs extends unknown[] ? ResultAsync<EmptyArrayToNever<Oks[number][]>, MembersToUnion<Errs[number][]>> : ResultAsync<EmptyArrayToNever<Oks[number][]>, Errs> : Errs extends unknown[] ? ResultAsync<Oks, MembersToUnion<Errs[number][]>> : ResultAsync<Oks, Errs> : never : never;
|
|
153
|
+
type TraverseWithAllErrorsAsync<T, Depth extends number = 5> = TraverseAsync<T, Depth> extends ResultAsync<infer Oks, infer Errs> ? ResultAsync<Oks, Errs[]> : never;
|
|
154
|
+
type Writable<T> = T extends readonly unknown[] ? [...T] : T;
|
|
241
155
|
|
|
242
156
|
/**
|
|
243
157
|
* A Result interface that is used to define the methods that are available on a
|
|
@@ -314,10 +228,10 @@ declare class Result<T, E> implements Resultable<T, E> {
|
|
|
314
228
|
*/
|
|
315
229
|
static unit<E = never>(): Result<undefined, E>;
|
|
316
230
|
static err<T = never, E = unknown>(error: E): Result<T, E>;
|
|
317
|
-
static combine<T extends readonly [Result<unknown, unknown>, ...
|
|
318
|
-
static combine<T extends
|
|
319
|
-
static combineWithAllErrors<T extends readonly [Result<unknown, unknown>, ...
|
|
320
|
-
static combineWithAllErrors<T extends
|
|
231
|
+
static combine<T extends readonly [Result<unknown, unknown>, ...Result<unknown, unknown>[]]>(resultList: T): CombineResults<T>;
|
|
232
|
+
static combine<T extends readonly Result<unknown, unknown>[]>(resultList: T): CombineResults<T>;
|
|
233
|
+
static combineWithAllErrors<T extends readonly [Result<unknown, unknown>, ...Result<unknown, unknown>[]]>(resultList: T): CombineResultsWithAllErrorsArray<T>;
|
|
234
|
+
static combineWithAllErrors<T extends readonly Result<unknown, unknown>[]>(resultList: T): CombineResultsWithAllErrorsArray<T>;
|
|
321
235
|
readonly value: T;
|
|
322
236
|
readonly error: E;
|
|
323
237
|
private constructor();
|
|
@@ -414,7 +328,7 @@ declare class Result<T, E> implements Resultable<T, E> {
|
|
|
414
328
|
* @param ok
|
|
415
329
|
* @param err
|
|
416
330
|
*/
|
|
417
|
-
match<
|
|
331
|
+
match<A, B = A>(fnOk: (t: T) => A, fnErr: (e: E) => B): A | B;
|
|
418
332
|
/**
|
|
419
333
|
* Performs a side effect for the `Ok` or `Err` variant of `Result`.
|
|
420
334
|
*
|
|
@@ -470,17 +384,13 @@ declare class DisposableResult<T, E> implements Resultable<T, E>, Disposable {
|
|
|
470
384
|
constructor(result: Resultable<T, E>, finalizer: (value: T, error: E) => void);
|
|
471
385
|
get value(): T;
|
|
472
386
|
get error(): E;
|
|
473
|
-
_unsafeUnwrap(config?: ErrorConfig
|
|
474
|
-
_unsafeUnwrapErr(config?: ErrorConfig
|
|
387
|
+
_unsafeUnwrap(config?: ErrorConfig): T;
|
|
388
|
+
_unsafeUnwrapErr(config?: ErrorConfig): E;
|
|
475
389
|
isOk(): boolean;
|
|
476
390
|
isErr(): boolean;
|
|
477
391
|
unwrapOr<A>(defaultValue: A): T | A;
|
|
478
392
|
[Symbol.dispose](): void;
|
|
479
393
|
}
|
|
480
|
-
declare const ok: typeof Result.ok;
|
|
481
|
-
declare const err: typeof Result.err;
|
|
482
|
-
declare const fromThrowable: typeof Result.fromThrowable;
|
|
483
|
-
declare const unit: typeof Result.unit;
|
|
484
394
|
/**
|
|
485
395
|
* Evaluates the given generator to a Result returned or an Err yielded from it,
|
|
486
396
|
* whichever comes first.
|
|
@@ -494,6 +404,7 @@ declare const unit: typeof Result.unit;
|
|
|
494
404
|
* @returns The first occurence of either an yielded Err or a returned Result.
|
|
495
405
|
*/
|
|
496
406
|
declare function safeTry<T, E>(body: () => Generator<Result<never, E>, Result<T, E>>): Result<T, E>;
|
|
407
|
+
declare function safeTry<YieldErr extends Result<never, unknown>, GeneratorReturnResult extends Result<unknown, unknown>>(body: () => Generator<YieldErr, GeneratorReturnResult>): Result<InferOkTypes<GeneratorReturnResult>, InferErrTypes<YieldErr> | InferErrTypes<GeneratorReturnResult>>;
|
|
497
408
|
/**
|
|
498
409
|
* Evaluates the given generator to a Result returned or an Err yielded from it,
|
|
499
410
|
* whichever comes first.
|
|
@@ -506,7 +417,89 @@ declare function safeTry<T, E>(body: () => Generator<Result<never, E>, Result<T,
|
|
|
506
417
|
* `yield* resultAsync.safeUnwrap()` work as Rust's `result?` expression.
|
|
507
418
|
* @returns The first occurence of either an yielded Err or a returned Result.
|
|
508
419
|
*/
|
|
509
|
-
declare function safeTry<T, E>(body: () => AsyncGenerator<Result<never, E>, Result<T, E>>):
|
|
420
|
+
declare function safeTry<T, E>(body: () => AsyncGenerator<Result<never, E>, Result<T, E>>): ResultAsync<T, E>;
|
|
421
|
+
declare function safeTry<YieldErr extends Result<never, unknown>, GeneratorReturnResult extends Result<unknown, unknown>>(body: () => AsyncGenerator<YieldErr, GeneratorReturnResult>): ResultAsync<InferOkTypes<GeneratorReturnResult>, InferErrTypes<YieldErr> | InferErrTypes<GeneratorReturnResult>>;
|
|
422
|
+
declare const ok: typeof Result.ok;
|
|
423
|
+
declare const err: typeof Result.err;
|
|
424
|
+
declare const fromThrowable: typeof Result.fromThrowable;
|
|
425
|
+
declare const unit: typeof Result.unit;
|
|
426
|
+
type Prev = [
|
|
427
|
+
never,
|
|
428
|
+
0,
|
|
429
|
+
1,
|
|
430
|
+
2,
|
|
431
|
+
3,
|
|
432
|
+
4,
|
|
433
|
+
5,
|
|
434
|
+
6,
|
|
435
|
+
7,
|
|
436
|
+
8,
|
|
437
|
+
9,
|
|
438
|
+
10,
|
|
439
|
+
11,
|
|
440
|
+
12,
|
|
441
|
+
13,
|
|
442
|
+
14,
|
|
443
|
+
15,
|
|
444
|
+
16,
|
|
445
|
+
17,
|
|
446
|
+
18,
|
|
447
|
+
19,
|
|
448
|
+
20,
|
|
449
|
+
21,
|
|
450
|
+
22,
|
|
451
|
+
23,
|
|
452
|
+
24,
|
|
453
|
+
25,
|
|
454
|
+
26,
|
|
455
|
+
27,
|
|
456
|
+
28,
|
|
457
|
+
29,
|
|
458
|
+
30,
|
|
459
|
+
31,
|
|
460
|
+
32,
|
|
461
|
+
33,
|
|
462
|
+
34,
|
|
463
|
+
35,
|
|
464
|
+
36,
|
|
465
|
+
37,
|
|
466
|
+
38,
|
|
467
|
+
39,
|
|
468
|
+
40,
|
|
469
|
+
41,
|
|
470
|
+
42,
|
|
471
|
+
43,
|
|
472
|
+
44,
|
|
473
|
+
45,
|
|
474
|
+
46,
|
|
475
|
+
47,
|
|
476
|
+
48,
|
|
477
|
+
49,
|
|
478
|
+
...0[]
|
|
479
|
+
];
|
|
480
|
+
type CollectResults<T, Collected extends unknown[] = [], Depth extends number = 50> = [
|
|
481
|
+
Depth
|
|
482
|
+
] extends [never] ? [] : T extends [infer H, ...infer Rest] ? H extends Result<infer L, infer R> ? CollectResults<Rest, [
|
|
483
|
+
...Collected,
|
|
484
|
+
[L, R]
|
|
485
|
+
], Prev[Depth]> : never : Collected;
|
|
486
|
+
type Transpose<A, Transposed extends unknown[][] = [], Depth extends number = 10> = A extends [infer T, ...infer Rest] ? T extends [infer L, infer R] ? Transposed extends [infer PL, infer PR] ? PL extends unknown[] ? PR extends unknown[] ? Transpose<Rest, [[...PL, L], [...PR, R]], Prev[Depth]> : never : never : Transpose<Rest, [[L], [R]], Prev[Depth]> : Transposed : Transposed;
|
|
487
|
+
type Combine<T, Depth extends number = 5> = Transpose<CollectResults<T>, [], Depth> extends [
|
|
488
|
+
infer L,
|
|
489
|
+
infer R
|
|
490
|
+
] ? [UnknownMembersToNever<L>, UnknownMembersToNever<R>] : Transpose<CollectResults<T>, [], Depth> extends [] ? [[], []] : never;
|
|
491
|
+
type Dedup<T> = T extends Result<infer RL, infer RR> ? Result<RL, RR> : T;
|
|
492
|
+
type MemberListOf<T> = ((T extends unknown ? (t: T) => T : never) extends infer U ? (U extends unknown ? (u: U) => unknown : never) extends (v: infer V) => unknown ? V : never : never) extends (_: unknown) => infer W ? [...MemberListOf<Exclude<T, W>>, W] : [];
|
|
493
|
+
type EmptyArrayToNever<T, NeverArrayToNever extends number = 0> = T extends [] ? never : NeverArrayToNever extends 1 ? T extends [never, ...infer Rest] ? [EmptyArrayToNever<Rest>] extends [never] ? never : T : T : T;
|
|
494
|
+
type UnknownMembersToNever<T> = T extends [infer H, ...infer R] ? [[unknown] extends [H] ? never : H, ...UnknownMembersToNever<R>] : T;
|
|
495
|
+
type MembersToUnion<T> = T extends unknown[] ? T[number] : never;
|
|
496
|
+
type IsLiteralArray<T> = T extends {
|
|
497
|
+
length: infer L;
|
|
498
|
+
} ? L extends number ? number extends L ? 0 : 1 : 0 : 0;
|
|
499
|
+
type Traverse<T, Depth extends number = 5> = Combine<T, Depth> extends [infer Oks, infer Errs] ? Result<EmptyArrayToNever<Oks, 1>, MembersToUnion<Errs>> : never;
|
|
500
|
+
type TraverseWithAllErrors<T, Depth extends number = 5> = Traverse<T, Depth> extends Result<infer Oks, infer Errs> ? Result<Oks, Errs[]> : never;
|
|
501
|
+
type CombineResults<T extends readonly Result<unknown, unknown>[]> = IsLiteralArray<T> extends 1 ? Traverse<T> : Result<ExtractOkTypes<T>, ExtractErrTypes<T>[number]>;
|
|
502
|
+
type CombineResultsWithAllErrorsArray<T extends readonly Result<unknown, unknown>[]> = IsLiteralArray<T> extends 1 ? TraverseWithAllErrors<T> : Result<ExtractOkTypes<T>, ExtractErrTypes<T>[number][]>;
|
|
510
503
|
|
|
511
504
|
interface ErrorConfig {
|
|
512
505
|
withStackTrace: boolean;
|
|
@@ -524,4 +517,4 @@ interface ResultarError<T, E> extends Error {
|
|
|
524
517
|
}
|
|
525
518
|
declare const createResultarError: <T, E>(message: string, result: Result<T, E>, config?: ErrorConfig) => ResultarError<T, E>;
|
|
526
519
|
|
|
527
|
-
export {
|
|
520
|
+
export { type Dedup as A, type EmptyArrayToNever as B, type CombineResultAsyncs as C, DisposableResultAsync as D, type ExtractOkTypes as E, type MembersToUnion as F, type IsLiteralArray as G, type CombineResults as H, type InferOkTypes as I, type CombineResultsWithAllErrorsArray as J, type ErrorConfig as K, createResultarError as L, type MemberListOf as M, ResultAsync as R, type Transpose as T, type ExtractOkAsyncTypes as a, type ExtractErrTypes as b, type ExtractErrAsyncTypes as c, type InferErrTypes as d, type InferAsyncOkTypes as e, type InferAsyncErrTypes as f, combineResultList as g, combineResultAsyncList as h, combineResultListWithAllErrors as i, combineResultAsyncListWithAllErrors as j, errAsync as k, fromPromise as l, fromSafePromise as m, fromThrowableAsync as n, okAsync as o, type CombineResultsWithAllErrorsArrayAsync as p, Result as q, DisposableResult as r, safeTryAsync as s, safeTry as t, unitAsync as u, ok as v, err as w, fromThrowable as x, unit as y, type Combine as z };
|
package/dist/index.cjs
CHANGED
|
@@ -53,9 +53,6 @@ var createResultarError = (message, result, config = defaultErrorConfig) => {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
// src/utils.ts
|
|
56
|
-
var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(
|
|
57
|
-
combineResultList
|
|
58
|
-
);
|
|
59
56
|
var combineResultList = (resultList) => {
|
|
60
57
|
let acc = ok([]);
|
|
61
58
|
for (const result of resultList) {
|
|
@@ -68,12 +65,9 @@ var combineResultList = (resultList) => {
|
|
|
68
65
|
}
|
|
69
66
|
return acc;
|
|
70
67
|
};
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
);
|
|
75
|
-
return x;
|
|
76
|
-
};
|
|
68
|
+
var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(
|
|
69
|
+
combineResultList
|
|
70
|
+
);
|
|
77
71
|
var combineResultListWithAllErrors = (resultList) => {
|
|
78
72
|
let acc = ok([]);
|
|
79
73
|
for (const result of resultList) {
|
|
@@ -87,6 +81,9 @@ var combineResultListWithAllErrors = (resultList) => {
|
|
|
87
81
|
}
|
|
88
82
|
return acc;
|
|
89
83
|
};
|
|
84
|
+
var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(
|
|
85
|
+
combineResultListWithAllErrors
|
|
86
|
+
);
|
|
90
87
|
|
|
91
88
|
// src/result.ts
|
|
92
89
|
var Ok = class {
|
|
@@ -413,14 +410,14 @@ var DisposableResult = class {
|
|
|
413
410
|
this.finalizer(this.result.value, this.result.error);
|
|
414
411
|
}
|
|
415
412
|
};
|
|
416
|
-
var { ok, err, fromThrowable, unit } = Result;
|
|
417
413
|
function safeTry(body) {
|
|
418
414
|
const n = body().next();
|
|
419
415
|
if (n instanceof Promise) {
|
|
420
|
-
return n.then((r) => r.value);
|
|
416
|
+
return new ResultAsync(n.then((r) => r.value));
|
|
421
417
|
}
|
|
422
418
|
return n.value;
|
|
423
419
|
}
|
|
420
|
+
var { ok, err, fromThrowable, unit } = Result;
|
|
424
421
|
|
|
425
422
|
// src/result-async.ts
|
|
426
423
|
var DisposableResultAsync = class {
|
|
@@ -560,8 +557,8 @@ var ResultAsync = class _ResultAsync {
|
|
|
560
557
|
})
|
|
561
558
|
);
|
|
562
559
|
}
|
|
563
|
-
async match(ok2,
|
|
564
|
-
return this.innerPromise.then((res) => res.match(ok2,
|
|
560
|
+
async match(ok2, fnErr) {
|
|
561
|
+
return this.innerPromise.then((res) => res.match(ok2, fnErr));
|
|
565
562
|
}
|
|
566
563
|
async unwrapOr(t) {
|
|
567
564
|
return this.innerPromise.then((res) => res.unwrapOr(t));
|
|
@@ -650,8 +647,6 @@ var ResultAsync = class _ResultAsync {
|
|
|
650
647
|
return yield* await this.innerPromise.then((res) => res.safeUnwrap());
|
|
651
648
|
}
|
|
652
649
|
};
|
|
653
|
-
var { okAsync, errAsync, fromPromise, fromSafePromise, unitAsync } = ResultAsync;
|
|
654
|
-
var fromThrowableAsync = ResultAsync.fromThrowable;
|
|
655
650
|
function safeTryAsync(body) {
|
|
656
651
|
return new ResultAsync(
|
|
657
652
|
(async () => {
|
|
@@ -663,6 +658,8 @@ function safeTryAsync(body) {
|
|
|
663
658
|
})()
|
|
664
659
|
);
|
|
665
660
|
}
|
|
661
|
+
var { okAsync, errAsync, fromPromise, fromSafePromise, unitAsync } = ResultAsync;
|
|
662
|
+
var fromThrowableAsync = ResultAsync.fromThrowable;
|
|
666
663
|
// Annotate the CommonJS export names for ESM import in node:
|
|
667
664
|
0 && (module.exports = {
|
|
668
665
|
Result,
|