@goodbyenjn/utils 1.3.1 → 26.1.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/README.md +625 -87
- package/dist/chunks/chunk-267b337b.js +2782 -0
- package/dist/{libs/result-c7c586dd.d.ts → chunks/chunk-4b76d1c4.d.ts} +69 -84
- package/dist/chunks/chunk-72aa7743.js +1082 -0
- package/dist/{libs/types-92e74e19.d.ts → chunks/chunk-a07ed28f.d.ts} +4113 -2427
- package/dist/{index.d.ts → common.d.ts} +50 -20
- package/dist/common.js +3 -0
- package/dist/fs.d.ts +187 -32
- package/dist/fs.js +2640 -174
- package/dist/global-types.d.ts +59 -84
- package/dist/remeda.d.ts +6305 -1228
- package/dist/remeda.js +2 -2
- package/dist/result.d.ts +2 -3
- package/dist/result.js +2 -3
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -0
- package/package.json +24 -16
- package/dist/index.js +0 -5
- package/dist/libs/common-7c67f2df.js +0 -334
- package/dist/libs/remeda-16106be4.js +0 -2726
- package/dist/libs/result-a10bbd74.js +0 -243
|
@@ -1,40 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jn as NonEmptyTuple, ri as AsyncFn, si as SyncFn } from "./chunk-a07ed28f.js";
|
|
2
2
|
|
|
3
|
-
//#region src/result/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
* Default is "standard".
|
|
13
|
-
*/
|
|
14
|
-
type PrintPresets = "full" | "standard" | "minimal";
|
|
15
|
-
/**
|
|
16
|
-
* Options for printing the `Err` result
|
|
17
|
-
*/
|
|
18
|
-
interface PrintOptions {
|
|
19
|
-
/**
|
|
20
|
-
* The log level to use. Default is "error".
|
|
21
|
-
*/
|
|
22
|
-
level?: "error" | "warn" | "info";
|
|
23
|
-
/**
|
|
24
|
-
* Whether to include the context messages. Default is `true`.
|
|
25
|
-
*/
|
|
26
|
-
context?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Whether to include the stack trace. Default is `false`.
|
|
29
|
-
*/
|
|
30
|
-
stack?: boolean;
|
|
3
|
+
//#region src/result/error.d.ts
|
|
4
|
+
declare class ResultError extends Error {
|
|
5
|
+
#private;
|
|
6
|
+
static isResultError(value: unknown): value is ResultError;
|
|
7
|
+
constructor(message: string | undefined, error: unknown, contexts: string[], caller?: Function);
|
|
8
|
+
get msg(): string;
|
|
9
|
+
get ctx(): string[];
|
|
10
|
+
toString(): string;
|
|
31
11
|
}
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/result/types.d.ts
|
|
32
14
|
type ExtractOkTypes<T extends readonly Result[]> = { [K in keyof T]: T[K] extends Result<infer U, unknown> ? U : never };
|
|
33
15
|
type ExtractErrTypes<T extends readonly Result[]> = { [K in keyof T]: T[K] extends Result<unknown, infer E> ? E : never };
|
|
34
|
-
type InferOkType<R> = R extends Result<infer T, unknown> ? T : never;
|
|
35
|
-
type InferErrType<R> = R extends Result<unknown, infer E> ? E : never;
|
|
16
|
+
type InferOkType<R$1> = R$1 extends Result<infer T, unknown> ? T : never;
|
|
17
|
+
type InferErrType<R$1> = R$1 extends Result<unknown, infer E> ? E : never;
|
|
36
18
|
type ResultAll<T extends readonly Result[]> = IsLiteralArray<T> extends 1 ? Traverse<T> : Result<ExtractOkTypes<T>, ExtractErrTypes<T>[number]>;
|
|
37
|
-
type ResultAllSettled<T extends readonly Result[]> = IsLiteralArray<T> extends 1 ? TraverseWithAllErrors<T> : Result<ExtractOkTypes<T>, ExtractErrTypes<T>[number][]>;
|
|
38
19
|
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, ...0[]];
|
|
39
20
|
type CollectResults<T, Collected extends unknown[] = [], Depth extends number = 50> = [Depth] extends [never] ? [] : T extends [infer H, ...infer Rest] ? H extends Result<infer L, infer R> ? CollectResults<Rest, [...Collected, [L, R]], Prev[Depth]> : never : Collected;
|
|
40
21
|
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;
|
|
@@ -46,28 +27,41 @@ type IsLiteralArray<T> = T extends {
|
|
|
46
27
|
length: infer L;
|
|
47
28
|
} ? L extends number ? number extends L ? 0 : 1 : 0 : 0;
|
|
48
29
|
type Traverse<T, Depth extends number = 5> = Combine<T, Depth> extends [infer Oks, infer Errs] ? Result<EmptyArrayToNever<Oks, 1>, MembersToUnion<Errs>> : never;
|
|
49
|
-
type TraverseWithAllErrors<T, Depth extends number = 5> = Traverse<T, Depth> extends Result<infer Oks, infer Errs> ? Result<Oks, Errs[]> : never;
|
|
50
30
|
//#endregion
|
|
51
31
|
//#region src/result/result.d.ts
|
|
52
|
-
|
|
32
|
+
type Ok<T = unknown> = Result<T, never>;
|
|
33
|
+
type Err<E = unknown> = Result<never, E>;
|
|
34
|
+
declare class Result<T = unknown, E = unknown> {
|
|
35
|
+
#private;
|
|
53
36
|
static ok(): Ok<void>;
|
|
54
37
|
static ok<T>(value: T): Ok<T>;
|
|
55
38
|
static err(): Err<void>;
|
|
56
39
|
static err<E>(error: E): Err<E>;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
static
|
|
61
|
-
static
|
|
62
|
-
static
|
|
63
|
-
static
|
|
64
|
-
static
|
|
40
|
+
/**
|
|
41
|
+
* Creates a `Result` from a callable that may throw or return a promise that may reject
|
|
42
|
+
*/
|
|
43
|
+
static fromCallable<T, E = unknown>(callable: SyncFn<T>): Result<T, E>;
|
|
44
|
+
static fromCallable<T>(callable: SyncFn<T>, onThrow: ErrorConstructor): Result<T, Error>;
|
|
45
|
+
static fromCallable<T, E>(callable: SyncFn<T>, onThrow: (error: unknown) => E): Result<T, E>;
|
|
46
|
+
static fromCallable<T, E = unknown>(callable: AsyncFn<T>): Promise<Result<Awaited<T>, E>>;
|
|
47
|
+
static fromCallable<T>(callable: AsyncFn<T>, onThrowOrReject: ErrorConstructor): Promise<Result<Awaited<T>, Error>>;
|
|
48
|
+
static fromCallable<T, E>(callable: AsyncFn<T>, onThrowOrReject: (error: unknown) => E): Promise<Result<Awaited<T>, E>>;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a safe callable that always returns a `Result`, catching any thrown errors or rejected promises
|
|
51
|
+
*/
|
|
52
|
+
static toSafeCallable<A extends any[], T, E = unknown>(callable: SyncFn<T, A>): SyncFn<Result<T, E>, A>;
|
|
53
|
+
static toSafeCallable<A extends any[], T>(callable: SyncFn<T, A>, onThrow: ErrorConstructor): SyncFn<Result<T, Error>, A>;
|
|
54
|
+
static toSafeCallable<A extends any[], T, E>(callable: SyncFn<T, A>, onThrow: (error: unknown) => E): SyncFn<Result<T, E>, A>;
|
|
55
|
+
static toSafeCallable<A extends any[], T, E = unknown>(callable: AsyncFn<T, A>): AsyncFn<Result<Awaited<T>, E>, A>;
|
|
56
|
+
static toSafeCallable<A extends any[], T>(callable: AsyncFn<T, A>, onThrowOrReject: ErrorConstructor): AsyncFn<Result<Awaited<T>, Error>, A>;
|
|
57
|
+
static toSafeCallable<A extends any[], T, E>(callable: AsyncFn<T, A>, onThrowOrReject: (error: unknown) => E): AsyncFn<Result<Awaited<T>, E>, A>;
|
|
58
|
+
/**
|
|
59
|
+
* Combines multiple `Result` instances into one `Result` containing an array of all `Ok` values,
|
|
60
|
+
* or the first `Err` encountered
|
|
61
|
+
*/
|
|
65
62
|
static all<T extends NonEmptyTuple<Result>>(results: T): ResultAll<T>;
|
|
66
63
|
static all<T extends readonly Result[]>(results: T): ResultAll<T>;
|
|
67
|
-
|
|
68
|
-
static allSettled<T extends readonly Result[]>(results: T): ResultAllSettled<T>;
|
|
69
|
-
protected readonly ctxs: (string | Fn<string>)[];
|
|
70
|
-
abstract readonly ok: boolean;
|
|
64
|
+
private constructor();
|
|
71
65
|
/**
|
|
72
66
|
* Check if `Result` is `OK`
|
|
73
67
|
*/
|
|
@@ -87,7 +81,7 @@ declare abstract class Result<T = unknown, E = unknown> {
|
|
|
87
81
|
/**
|
|
88
82
|
* Maps `Result<T, E>` to `Result<U, E>`
|
|
89
83
|
*/
|
|
90
|
-
map<U>(fn: (value: T) => U): Result<U, E>;
|
|
84
|
+
map<U$1>(fn: (value: T) => U$1): Result<U$1, E>;
|
|
91
85
|
/**
|
|
92
86
|
* Maps `Result<T, E>` to `Result<T, F>`
|
|
93
87
|
*/
|
|
@@ -95,23 +89,23 @@ declare abstract class Result<T = unknown, E = unknown> {
|
|
|
95
89
|
/**
|
|
96
90
|
* Returns a new `Result` by combining the current `Result` with another `Result`
|
|
97
91
|
*/
|
|
98
|
-
and<R extends Result<unknown, E>>(result: R): Result<InferOkType<R>, E>;
|
|
99
|
-
and<U>(result: Result<U, E>): Result<U, E>;
|
|
92
|
+
and<R$1 extends Result<unknown, E>>(result: R$1): Result<InferOkType<R$1>, E>;
|
|
93
|
+
and<U$1>(result: Result<U$1, E>): Result<U$1, E>;
|
|
100
94
|
/**
|
|
101
95
|
* Maps `Result<T, E>` to `Result<U, E | F>` with a function that returns a `Result`
|
|
102
96
|
*/
|
|
103
|
-
andThen<R extends Result>(fn: (value: T) => R): Result<InferOkType<R>, InferErrType<R> | E>;
|
|
104
|
-
andThen<U, F>(fn: (value: T) => Result<U, F>): Result<U, E | F>;
|
|
97
|
+
andThen<R$1 extends Result>(fn: (value: T) => R$1): Result<InferOkType<R$1>, InferErrType<R$1> | E>;
|
|
98
|
+
andThen<U$1, F>(fn: (value: T) => Result<U$1, F>): Result<U$1, E | F>;
|
|
105
99
|
/**
|
|
106
100
|
* Returns a new `Result` by combining the current `Result` with another `Result`
|
|
107
101
|
*/
|
|
108
|
-
or<R extends Result<T, unknown>>(result: R): Result<T, InferErrType<R>>;
|
|
102
|
+
or<R$1 extends Result<T, unknown>>(result: R$1): Result<T, InferErrType<R$1>>;
|
|
109
103
|
or<F>(result: Result<T, F>): Result<T, F>;
|
|
110
104
|
/**
|
|
111
105
|
* Maps `Result<T, E>` to `Result<T | U, F>` with a function that returns a `Result`
|
|
112
106
|
*/
|
|
113
|
-
orElse<R extends Result>(fn: (error: E) => R): Result<InferOkType<R> | T, InferErrType<R>>;
|
|
114
|
-
orElse<U, F>(fn: (error: E) => Result<U, F>): Result<T | U, F>;
|
|
107
|
+
orElse<R$1 extends Result>(fn: (error: E) => R$1): Result<InferOkType<R$1> | T, InferErrType<R$1>>;
|
|
108
|
+
orElse<U$1, F>(fn: (error: E) => Result<U$1, F>): Result<T | U$1, F>;
|
|
115
109
|
/**
|
|
116
110
|
* Calls the function with the value if `Result` is `Ok` and returns the result unchanged
|
|
117
111
|
*/
|
|
@@ -120,50 +114,41 @@ declare abstract class Result<T = unknown, E = unknown> {
|
|
|
120
114
|
* Calls the function with the error if `Result` is `Err` and returns the result unchanged
|
|
121
115
|
*/
|
|
122
116
|
inspectErr(fn: (error: E) => unknown): Result<T, E>;
|
|
117
|
+
/**
|
|
118
|
+
* Unwrap the `Ok` value, or throw an error if `Result` is `Err`
|
|
119
|
+
*/
|
|
120
|
+
unwrap(message?: string | null): T;
|
|
121
|
+
/**
|
|
122
|
+
* Unwrap the `Err` value, or throw an error if `Result` is `Ok`
|
|
123
|
+
*/
|
|
124
|
+
unwrapErr(message?: string | null): E;
|
|
123
125
|
/**
|
|
124
126
|
* Unwrap the `Ok` value, or return the provided value if `Result` is `Err`
|
|
125
127
|
*/
|
|
126
|
-
unwrapOr
|
|
128
|
+
unwrapOr(defaultValue: T): T;
|
|
129
|
+
/**
|
|
130
|
+
* Unwrap the `Ok` value, or compute it from a function if `Result` is `Err`
|
|
131
|
+
*/
|
|
132
|
+
unwrapOrElse(defaultValueGetter: (error: E) => T): T;
|
|
127
133
|
/**
|
|
128
134
|
* Matches the `Result` variant and executes the corresponding function
|
|
129
135
|
*/
|
|
130
|
-
match<U, F = U>(ok: (value: T) => U, err: (error: E) => F): U | F;
|
|
136
|
+
match<U$1, F = U$1>(ok: (value: T) => U$1, err: (error: E) => F): U$1 | F;
|
|
131
137
|
/**
|
|
132
138
|
* Returns an iterable object that yields the `Ok` value and `Err` value
|
|
133
139
|
*/
|
|
134
140
|
iter(): [ok: boolean, error: E, value: T];
|
|
135
141
|
[Symbol.iterator](): Generator<Err<E>, T>;
|
|
136
142
|
context(context: string): this;
|
|
137
|
-
|
|
138
|
-
abstract get value(): T;
|
|
139
|
-
abstract get error(): E;
|
|
140
|
-
}
|
|
141
|
-
declare class Ok<T = unknown> extends Result<T, never> {
|
|
142
|
-
readonly ok = true;
|
|
143
|
-
private readonly _value;
|
|
144
|
-
constructor(value: T);
|
|
145
|
-
get value(): T;
|
|
146
|
-
get error(): never;
|
|
147
|
-
}
|
|
148
|
-
declare class Err<E = unknown> extends Result<never, E> {
|
|
149
|
-
readonly ok = false;
|
|
150
|
-
private readonly _error;
|
|
151
|
-
private stack;
|
|
152
|
-
constructor(error: E);
|
|
153
|
-
get value(): never;
|
|
154
|
-
get error(): E;
|
|
155
|
-
print(): void;
|
|
156
|
-
print(preset: PrintPresets): void;
|
|
157
|
-
print(options: PrintOptions): void;
|
|
158
|
-
private format;
|
|
143
|
+
toString(): string;
|
|
159
144
|
}
|
|
160
145
|
declare const ok: typeof Result.ok;
|
|
161
146
|
declare const err: typeof Result.err;
|
|
162
147
|
//#endregion
|
|
163
|
-
//#region src/result/
|
|
164
|
-
declare function safeTry<T, E>(body: () => Generator<Err<E>, Result<T, E
|
|
165
|
-
declare function safeTry<YieldErr extends Err, GeneratorReturnResult extends Result>(body: () => Generator<YieldErr, GeneratorReturnResult
|
|
166
|
-
declare function safeTry<T, E>(body: () => AsyncGenerator<Err<E>, Result<T, E
|
|
167
|
-
declare function safeTry<YieldErr extends Err, GeneratorReturnResult extends Result>(body: () => AsyncGenerator<YieldErr, GeneratorReturnResult
|
|
148
|
+
//#region src/result/helper.d.ts
|
|
149
|
+
declare function safeTry<T, E, This>(body: (this: This) => Generator<Err<E>, Result<T, E>>, self?: This): Result<T, E>;
|
|
150
|
+
declare function safeTry<YieldErr extends Err, GeneratorReturnResult extends Result, This>(body: (this: This) => Generator<YieldErr, GeneratorReturnResult>, self?: This): Result<InferOkType<GeneratorReturnResult>, InferErrType<YieldErr> | InferErrType<GeneratorReturnResult>>;
|
|
151
|
+
declare function safeTry<T, E, This>(body: (this: This) => AsyncGenerator<Err<E>, Result<T, E>>, self?: This): Promise<Result<T, E>>;
|
|
152
|
+
declare function safeTry<YieldErr extends Err, GeneratorReturnResult extends Result, This>(body: (this: This) => AsyncGenerator<YieldErr, GeneratorReturnResult>, self?: This): Promise<Result<InferOkType<GeneratorReturnResult>, InferErrType<YieldErr> | InferErrType<GeneratorReturnResult>>>;
|
|
168
153
|
//#endregion
|
|
169
|
-
export {
|
|
154
|
+
export { err as a, ExtractOkTypes as c, ResultAll as d, ResultError as f, Result as i, InferErrType as l, Err as n, ok as o, Ok as r, ExtractErrTypes as s, safeTry as t, InferOkType as u };
|