neverpanic 0.0.4 → 0.0.5

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.d.ts CHANGED
@@ -5,6 +5,14 @@ export type Result<T = unknown, E = unknown> = {
5
5
  success: false;
6
6
  error: E;
7
7
  };
8
+ type DataOf<R extends Result> = R extends {
9
+ success: true;
10
+ data: infer D;
11
+ } ? D : never;
12
+ type ErrorOf<R extends Result> = R extends {
13
+ success: false;
14
+ error: infer E;
15
+ } ? E : never;
8
16
  /**
9
17
  * Create a safe function from an unsafe one.
10
18
  *
@@ -47,8 +55,10 @@ declare function safeFn<T extends Result | Promise<Result>, A extends unknown[],
47
55
  * }
48
56
  */
49
57
  declare function fromUnsafe<T, E = null, R = T extends Promise<unknown> ? Promise<Result<Awaited<T>, E>> : Result<T, E>>(cb: () => T, eh?: (err: unknown) => E): R;
58
+ declare function resultsToResult<R extends Result[]>(results: R): Result<DataOf<R[number]>[], ErrorOf<R[number]>[]>;
50
59
  export declare const n: {
51
60
  safeFn: typeof safeFn;
52
61
  fromUnsafe: typeof fromUnsafe;
62
+ resultsToResult: typeof resultsToResult;
53
63
  };
54
64
  export {};
package/dist/index.js CHANGED
@@ -74,4 +74,19 @@ function fromUnsafe(cb, eh) {
74
74
  return createErrorResult(e);
75
75
  }
76
76
  }
77
- export const n = { safeFn, fromUnsafe };
77
+ function resultsToResult(results) {
78
+ let success = true;
79
+ const error = [];
80
+ const data = [];
81
+ for (const result of results) {
82
+ if (!result.success) {
83
+ success = false;
84
+ error.push(result.error);
85
+ }
86
+ else {
87
+ data.push(result.data);
88
+ }
89
+ }
90
+ return success ? { success: true, data } : { success: false, error };
91
+ }
92
+ export const n = { safeFn, fromUnsafe, resultsToResult };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "neverpanic",
3
3
  "module": "index.ts",
4
- "version": "0.0.4",
4
+ "version": "0.0.5",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "url": "https://github.com/bgrcs/neverpanic"