retuple 1.0.0-next.34 → 1.0.0-next.37

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 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] = 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]) => Promise.resolve(result).then((result) => {
510
- const { ok, value } = result[retuple_symbols_1.ResultLikeSymbol]();
511
- return ok ? [key, value] : Promise.reject(value);
512
- }, (err) => {
513
- reject(err);
514
- // Because reject has been called, we can safely return an
515
- // empty rejection to ensure we don't end up with undefined
516
- // in the Ok path. The subsequent call to resolve will not
517
- // change the state of the Promise.
518
- return Promise.reject();
519
- }))).then((values) => resolve(Ok(Object.fromEntries(values))), (err) => resolve(Err(err)));
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>>>(results: TResults) => Result<CollectOk<TResults>, CollectErr<TResults>>;
136
- var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any>>>(results: TResults) => ResultAsync<CollectOk<TResults>, CollectErr<TResults>>;
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 : never;
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>>> = TResults[keyof TResults] extends ResultLikeAwaitable<any, infer E> ? E : never;
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>>>(results: TResults) => Result<CollectOk<TResults>, CollectErr<TResults>>;
136
- var $collectPromised: <TResults extends Record<string, ResultLikeAwaitable<any, any>>>(results: TResults) => ResultAsync<CollectOk<TResults>, CollectErr<TResults>>;
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 : never;
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>>> = TResults[keyof TResults] extends ResultLikeAwaitable<any, infer E> ? E : never;
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] = 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]) => Promise.resolve(result).then((result) => {
496
- const { ok, value } = result[ResultLikeSymbol]();
497
- return ok ? [key, value] : Promise.reject(value);
498
- }, (err) => {
499
- reject(err);
500
- // Because reject has been called, we can safely return an
501
- // empty rejection to ensure we don't end up with undefined
502
- // in the Ok path. The subsequent call to resolve will not
503
- // change the state of the Promise.
504
- return Promise.reject();
505
- }))).then((values) => resolve(Ok(Object.fromEntries(values))), (err) => resolve(Err(err)));
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "retuple",
3
- "version": "1.0.0-next.34",
3
+ "version": "1.0.0-next.37",
4
4
  "scripts": {
5
5
  "test": "vitest",
6
6
  "lint": "eslint . --ext .ts -c eslint.config.mjs --fix",