retuple 1.0.0-next.33 → 1.0.0-next.36
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/index.cjs +20 -11
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +20 -11
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -490,6 +490,10 @@ function $anyPromised(results) {
|
|
|
490
490
|
function $collect(results) {
|
|
491
491
|
const oks = {};
|
|
492
492
|
for (const [key, result] of Object.entries(results)) {
|
|
493
|
+
if (!result) {
|
|
494
|
+
oks[key] = Ok(result);
|
|
495
|
+
continue;
|
|
496
|
+
}
|
|
493
497
|
const { ok, value } = result[retuple_symbols_1.ResultLikeSymbol]();
|
|
494
498
|
if (ok) {
|
|
495
499
|
oks[key] = value;
|
|
@@ -506,17 +510,22 @@ function $collect(results) {
|
|
|
506
510
|
*/
|
|
507
511
|
function $collectPromised(results) {
|
|
508
512
|
return new ResultAsync(new Promise((resolve, reject) => {
|
|
509
|
-
void Promise.all(Object.entries(results).map(([key, result]) =>
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
513
|
+
void Promise.all(Object.entries(results).map(([key, result]) => {
|
|
514
|
+
if (!result) {
|
|
515
|
+
return [key, result];
|
|
516
|
+
}
|
|
517
|
+
return Promise.resolve(result).then((result) => {
|
|
518
|
+
const { ok, value } = result[retuple_symbols_1.ResultLikeSymbol]();
|
|
519
|
+
return ok ? [key, value] : Promise.reject(value);
|
|
520
|
+
}, (err) => {
|
|
521
|
+
reject(err);
|
|
522
|
+
// Because reject has been called, we can safely return an
|
|
523
|
+
// empty rejection to ensure we don't end up with undefined
|
|
524
|
+
// in the Ok path. The subsequent call to resolve will not
|
|
525
|
+
// change the state of the Promise.
|
|
526
|
+
return Promise.reject();
|
|
527
|
+
});
|
|
528
|
+
})).then((values) => resolve(Ok(Object.fromEntries(values))), (err) => resolve(Err(err)));
|
|
520
529
|
}));
|
|
521
530
|
}
|
|
522
531
|
function $pipe(f0, ...fnx) {
|
package/dist/index.d.cts
CHANGED
|
@@ -132,8 +132,8 @@ export declare namespace Result {
|
|
|
132
132
|
var $allPromised: <const TResults extends ResultLikeAwaitable<any, any>[]>(results: TResults) => ResultAsync<AllOk<TResults>, AllErr<TResults>>;
|
|
133
133
|
var $any: <const TResults extends ResultLike<any, any>[]>(results: TResults) => Result<AnyOk<TResults>, AnyErr<TResults>>;
|
|
134
134
|
var $anyPromised: <const TResults extends ResultLikeAwaitable<any, any>[]>(results: TResults) => ResultAsync<AnyOk<TResults>, AnyErr<TResults>>;
|
|
135
|
-
var $collect: <TResults extends Record<string, ResultLike<any, any
|
|
136
|
-
var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
135
|
+
var $collect: <TResults extends Record<string, ResultLike<any, any> | false | null | undefined>>(results: TResults) => Result<CollectOk<TResults>, CollectErr<TResults>>;
|
|
136
|
+
var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>>(results: TResults) => ResultAsync<CollectOk<TResults>, CollectErr<TResults>>;
|
|
137
137
|
var $pipe: {
|
|
138
138
|
<T0, E0, T1, E1>(f0: () => ResultLike<T0, E0>, f1: (val0: T0) => ResultLike<T1, E1>): Result<T1, E0 | E1>;
|
|
139
139
|
<T0, E0, T1, E1, T2, E2>(f0: () => ResultLike<T0, E0>, f1: (val0: T0) => ResultLike<T1, E1>, f2: (val1: T1) => ResultLike<T2, E2>): Result<T2, E0 | E1 | E2>;
|
|
@@ -1638,10 +1638,10 @@ type AnyOk<TResult extends ResultLikeAwaitable<any, any>[]> = TResult[number] ex
|
|
|
1638
1638
|
type AnyErr<TResults extends ResultLikeAwaitable<any, any>[]> = {
|
|
1639
1639
|
[K in keyof TResults]: TResults[K] extends ResultLikeAwaitable<any, infer E> ? E : never;
|
|
1640
1640
|
};
|
|
1641
|
-
type CollectOk<TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
1642
|
-
[K in keyof TResults]: TResults[K] extends ResultLikeAwaitable<infer T, any> ? T :
|
|
1641
|
+
type CollectOk<TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>> = {
|
|
1642
|
+
[K in keyof TResults]: Exclude<TResults[K], false | null | undefined> extends ResultLikeAwaitable<infer T, any> ? T | Extract<TResults[K], false | null | undefined> : Extract<TResults[K], false | null | undefined>;
|
|
1643
1643
|
} & {};
|
|
1644
|
-
type CollectErr<TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
1644
|
+
type CollectErr<TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>> = TResults[keyof TResults] extends ResultLikeAwaitable<any, infer E> ? E : never;
|
|
1645
1645
|
type Truthy<T> = Exclude<T, false | null | undefined | 0 | 0n | "">;
|
|
1646
1646
|
type Falsey<T> = Extract<T, false | null | undefined | 0 | 0n | "">;
|
|
1647
1647
|
type NonZero<N extends number> = N & (`${N}` extends "0" ? never : N);
|
package/dist/index.d.ts
CHANGED
|
@@ -132,8 +132,8 @@ export declare namespace Result {
|
|
|
132
132
|
var $allPromised: <const TResults extends ResultLikeAwaitable<any, any>[]>(results: TResults) => ResultAsync<AllOk<TResults>, AllErr<TResults>>;
|
|
133
133
|
var $any: <const TResults extends ResultLike<any, any>[]>(results: TResults) => Result<AnyOk<TResults>, AnyErr<TResults>>;
|
|
134
134
|
var $anyPromised: <const TResults extends ResultLikeAwaitable<any, any>[]>(results: TResults) => ResultAsync<AnyOk<TResults>, AnyErr<TResults>>;
|
|
135
|
-
var $collect: <TResults extends Record<string, ResultLike<any, any
|
|
136
|
-
var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
135
|
+
var $collect: <TResults extends Record<string, ResultLike<any, any> | false | null | undefined>>(results: TResults) => Result<CollectOk<TResults>, CollectErr<TResults>>;
|
|
136
|
+
var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>>(results: TResults) => ResultAsync<CollectOk<TResults>, CollectErr<TResults>>;
|
|
137
137
|
var $pipe: {
|
|
138
138
|
<T0, E0, T1, E1>(f0: () => ResultLike<T0, E0>, f1: (val0: T0) => ResultLike<T1, E1>): Result<T1, E0 | E1>;
|
|
139
139
|
<T0, E0, T1, E1, T2, E2>(f0: () => ResultLike<T0, E0>, f1: (val0: T0) => ResultLike<T1, E1>, f2: (val1: T1) => ResultLike<T2, E2>): Result<T2, E0 | E1 | E2>;
|
|
@@ -1638,10 +1638,10 @@ type AnyOk<TResult extends ResultLikeAwaitable<any, any>[]> = TResult[number] ex
|
|
|
1638
1638
|
type AnyErr<TResults extends ResultLikeAwaitable<any, any>[]> = {
|
|
1639
1639
|
[K in keyof TResults]: TResults[K] extends ResultLikeAwaitable<any, infer E> ? E : never;
|
|
1640
1640
|
};
|
|
1641
|
-
type CollectOk<TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
1642
|
-
[K in keyof TResults]: TResults[K] extends ResultLikeAwaitable<infer T, any> ? T :
|
|
1641
|
+
type CollectOk<TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>> = {
|
|
1642
|
+
[K in keyof TResults]: Exclude<TResults[K], false | null | undefined> extends ResultLikeAwaitable<infer T, any> ? T | Extract<TResults[K], false | null | undefined> : Extract<TResults[K], false | null | undefined>;
|
|
1643
1643
|
} & {};
|
|
1644
|
-
type CollectErr<TResults extends Record<string, ResultLikeAwaitable<any, any
|
|
1644
|
+
type CollectErr<TResults extends Record<string, ResultLikeAwaitable<any, any> | false | null | undefined>> = TResults[keyof TResults] extends ResultLikeAwaitable<any, infer E> ? E : never;
|
|
1645
1645
|
type Truthy<T> = Exclude<T, false | null | undefined | 0 | 0n | "">;
|
|
1646
1646
|
type Falsey<T> = Extract<T, false | null | undefined | 0 | 0n | "">;
|
|
1647
1647
|
type NonZero<N extends number> = N & (`${N}` extends "0" ? never : N);
|
package/dist/index.js
CHANGED
|
@@ -476,6 +476,10 @@ function $anyPromised(results) {
|
|
|
476
476
|
function $collect(results) {
|
|
477
477
|
const oks = {};
|
|
478
478
|
for (const [key, result] of Object.entries(results)) {
|
|
479
|
+
if (!result) {
|
|
480
|
+
oks[key] = Ok(result);
|
|
481
|
+
continue;
|
|
482
|
+
}
|
|
479
483
|
const { ok, value } = result[ResultLikeSymbol]();
|
|
480
484
|
if (ok) {
|
|
481
485
|
oks[key] = value;
|
|
@@ -492,17 +496,22 @@ function $collect(results) {
|
|
|
492
496
|
*/
|
|
493
497
|
function $collectPromised(results) {
|
|
494
498
|
return new ResultAsync(new Promise((resolve, reject) => {
|
|
495
|
-
void Promise.all(Object.entries(results).map(([key, result]) =>
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
499
|
+
void Promise.all(Object.entries(results).map(([key, result]) => {
|
|
500
|
+
if (!result) {
|
|
501
|
+
return [key, result];
|
|
502
|
+
}
|
|
503
|
+
return Promise.resolve(result).then((result) => {
|
|
504
|
+
const { ok, value } = result[ResultLikeSymbol]();
|
|
505
|
+
return ok ? [key, value] : Promise.reject(value);
|
|
506
|
+
}, (err) => {
|
|
507
|
+
reject(err);
|
|
508
|
+
// Because reject has been called, we can safely return an
|
|
509
|
+
// empty rejection to ensure we don't end up with undefined
|
|
510
|
+
// in the Ok path. The subsequent call to resolve will not
|
|
511
|
+
// change the state of the Promise.
|
|
512
|
+
return Promise.reject();
|
|
513
|
+
});
|
|
514
|
+
})).then((values) => resolve(Ok(Object.fromEntries(values))), (err) => resolve(Err(err)));
|
|
506
515
|
}));
|
|
507
516
|
}
|
|
508
517
|
function $pipe(f0, ...fnx) {
|