@shirudo/result 1.1.1 → 1.2.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 +6 -2
- package/dist/collections.cjs +181 -9
- package/dist/collections.cjs.map +1 -0
- package/dist/collections.d.cts +101 -3
- package/dist/collections.d.cts.map +1 -0
- package/dist/collections.d.mts +101 -3
- package/dist/collections.d.mts.map +1 -0
- package/dist/collections.mjs +175 -3
- package/dist/collections.mjs.map +1 -0
- package/dist/errors-CVgC7NII.cjs +278 -0
- package/dist/errors-CVgC7NII.cjs.map +1 -0
- package/dist/errors-MuakEcnM.mjs +146 -0
- package/dist/errors-MuakEcnM.mjs.map +1 -0
- package/dist/errors.cjs +22 -130
- package/dist/errors.d.cts +9 -9
- package/dist/errors.d.cts.map +1 -1
- package/dist/errors.d.mts +9 -9
- package/dist/errors.d.mts.map +1 -1
- package/dist/errors.mjs +2 -109
- package/dist/index.cjs +99 -69
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +87 -74
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +87 -74
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +64 -34
- package/dist/index.mjs.map +1 -1
- package/dist/operators.cjs +412 -31
- package/dist/operators.cjs.map +1 -0
- package/dist/operators.d.cts +211 -3
- package/dist/operators.d.cts.map +1 -0
- package/dist/operators.d.mts +211 -3
- package/dist/operators.d.mts.map +1 -0
- package/dist/operators.mjs +384 -3
- package/dist/operators.mjs.map +1 -0
- package/dist/{result-q9Na2bGa.mjs → result-DQCpkuOJ.mjs} +36 -17
- package/dist/result-DQCpkuOJ.mjs.map +1 -0
- package/dist/{result-BBOGxvSH.cjs → result-DoqQufvR.cjs} +36 -17
- package/dist/result-DoqQufvR.cjs.map +1 -0
- package/dist/{sequence-DDwePRLd.d.cts → sequence-CmugKPbu.d.cts} +105 -84
- package/dist/sequence-CmugKPbu.d.cts.map +1 -0
- package/dist/{sequence-DDwePRLd.d.mts → sequence-CmugKPbu.d.mts} +105 -84
- package/dist/sequence-CmugKPbu.d.mts.map +1 -0
- package/package.json +20 -12
- package/dist/errors.cjs.map +0 -1
- package/dist/errors.mjs.map +0 -1
- package/dist/flatten-B_XIkaOK.cjs +0 -208
- package/dist/flatten-B_XIkaOK.cjs.map +0 -1
- package/dist/flatten-C7D6Kttf.d.mts +0 -81
- package/dist/flatten-C7D6Kttf.d.mts.map +0 -1
- package/dist/flatten-ChTL5BfA.mjs +0 -167
- package/dist/flatten-ChTL5BfA.mjs.map +0 -1
- package/dist/flatten-D0K8UcQH.d.cts +0 -81
- package/dist/flatten-D0K8UcQH.d.cts.map +0 -1
- package/dist/result-BBOGxvSH.cjs.map +0 -1
- package/dist/result-q9Na2bGa.mjs.map +0 -1
- package/dist/sequence-DDwePRLd.d.cts.map +0 -1
- package/dist/sequence-DDwePRLd.d.mts.map +0 -1
- package/dist/swap-BnyMBdD_.cjs +0 -552
- package/dist/swap-BnyMBdD_.cjs.map +0 -1
- package/dist/swap-CFD2g1cB.mjs +0 -385
- package/dist/swap-CFD2g1cB.mjs.map +0 -1
- package/dist/swap-CrHQZIax.d.cts +0 -212
- package/dist/swap-CrHQZIax.d.cts.map +0 -1
- package/dist/swap-DT4LdRFV.d.mts +0 -212
- package/dist/swap-DT4LdRFV.d.mts.map +0 -1
|
@@ -49,19 +49,21 @@ declare abstract class Pipeable {
|
|
|
49
49
|
//#region src/core/matcher.d.ts
|
|
50
50
|
type Ctor<T> = abstract new (...args: any[]) => T;
|
|
51
51
|
type TypeGuard<E, A extends E> = (error: E) => error is A;
|
|
52
|
-
type TaggedBy<K extends PropertyKey, V extends PropertyKey> = { readonly [P in K]: V };
|
|
52
|
+
type TaggedBy<K extends PropertyKey, V extends PropertyKey> = { readonly [P in K]: V; };
|
|
53
53
|
type Awaitable<T> = T | Promise<T>;
|
|
54
54
|
type TagValue<E, K extends keyof E> = Extract<E[K], PropertyKey>;
|
|
55
|
-
type TagHandlerMap<E, K extends keyof E> = { readonly [V in TagValue<E, K>]: (error: Extract<E, Record<K, V>>) => unknown };
|
|
56
|
-
type TagHandlerReturn<Handlers> = { [K in keyof Handlers]: Handlers[K] extends ((...args: any[]) => infer R) ? R : never }[keyof Handlers];
|
|
55
|
+
type TagHandlerMap<E, K extends keyof E> = { readonly [V in TagValue<E, K>]: (error: Extract<E, Record<K, V>>) => unknown; };
|
|
56
|
+
type TagHandlerReturn<Handlers> = { [K in keyof Handlers]: Handlers[K] extends ((...args: any[]) => infer R) ? R : never; }[keyof Handlers];
|
|
57
57
|
declare function matchTag<T, K extends keyof E & PropertyKey, E extends Record<K, PropertyKey>, Handlers extends TagHandlerMap<E, K>>(result: Result<T, E>, key: K, handlers: Handlers): TagHandlerReturn<Handlers>;
|
|
58
58
|
/**
|
|
59
|
-
* Matcher for Err values (returns an arbitrary return type, e.g. string messages).
|
|
60
|
-
*
|
|
61
|
-
* - `.when(Ctor, handler)` matches via `instanceof`
|
|
62
|
-
* - `.whenGuard(guard, handler)` matches via Type-Guard
|
|
63
|
-
* - `.run()` is only allowed if all error cases have been handled (`E` has been reduced to `never`)
|
|
64
|
-
|
|
59
|
+
* Matcher for Err values (returns an arbitrary return type, e.g. string messages).
|
|
60
|
+
*
|
|
61
|
+
* - `.when(Ctor, handler)` matches via `instanceof`
|
|
62
|
+
* - `.whenGuard(guard, handler)` matches via Type-Guard
|
|
63
|
+
* - `.run()` is only allowed if all error cases have been handled (`E` has been reduced to `never`).
|
|
64
|
+
* The reduction is structural: two error classes of the same shape count as one case, so each
|
|
65
|
+
* class needs a distinguishing member, for example a literal `readonly code`.
|
|
66
|
+
*/
|
|
65
67
|
declare class ErrorMatchBuilder<E, R> {
|
|
66
68
|
#private;
|
|
67
69
|
constructor(error: unknown, matched?: boolean, value?: unknown);
|
|
@@ -83,11 +85,11 @@ declare class AsyncErrorMatchBuilder<E, R> {
|
|
|
83
85
|
type OkOfResult<R> = R extends Result<infer T, any> ? T : never;
|
|
84
86
|
type ErrOfResult<R> = R extends Result<any, infer E> ? E : never;
|
|
85
87
|
/**
|
|
86
|
-
* Matcher for `Result` Errors, which returns a `Result` again.
|
|
87
|
-
*
|
|
88
|
-
* Handlers must return a `Result`.
|
|
89
|
-
* Wrap recovered values with `ok(...)` and mapped errors with `err(...)`.
|
|
90
|
-
*/
|
|
88
|
+
* Matcher for `Result` Errors, which returns a `Result` again.
|
|
89
|
+
*
|
|
90
|
+
* Handlers must return a `Result`.
|
|
91
|
+
* Wrap recovered values with `ok(...)` and mapped errors with `err(...)`.
|
|
92
|
+
*/
|
|
91
93
|
declare class ErrMatchBuilder<T, E, OutT, OutE> {
|
|
92
94
|
#private;
|
|
93
95
|
private constructor();
|
|
@@ -111,43 +113,49 @@ declare class AsyncErrMatchBuilder<T, E, OutT, OutE> {
|
|
|
111
113
|
//#endregion
|
|
112
114
|
//#region src/core/isResult.d.ts
|
|
113
115
|
/**
|
|
114
|
-
* Checks whether a value is a Result.
|
|
115
|
-
* Pure function alternative for runtime checks.
|
|
116
|
-
*/
|
|
116
|
+
* Checks whether a value is a Result.
|
|
117
|
+
* Pure function alternative for runtime checks.
|
|
118
|
+
*/
|
|
117
119
|
declare function isResult(value: unknown): value is Result<any, any>;
|
|
118
120
|
//#endregion
|
|
119
121
|
//#region src/core/zip.d.ts
|
|
120
122
|
/**
|
|
121
|
-
* Combines two Results into a Result of a tuple.
|
|
122
|
-
* Short-circuits on the first Err (left before right).
|
|
123
|
-
*/
|
|
123
|
+
* Combines two Results into a Result of a tuple.
|
|
124
|
+
* Short-circuits on the first Err (left before right).
|
|
125
|
+
*/
|
|
124
126
|
declare function zip<A, AE, B, BE>(left: Result<A, AE>, right: Result<B, BE>): Result<[A, B], AE | BE>;
|
|
125
127
|
declare function zip<A, AE, B, BE>(right: Result<B, BE>): (left: Result<A, AE>) => Result<[A, B], AE | BE>;
|
|
126
128
|
/**
|
|
127
|
-
* Combines two Results and collects errors.
|
|
128
|
-
* - Ok only if both are Ok
|
|
129
|
-
* - Err([errors]) if at least one is Err (left before right)
|
|
130
|
-
*/
|
|
129
|
+
* Combines two Results and collects errors.
|
|
130
|
+
* - Ok only if both are Ok
|
|
131
|
+
* - Err([errors]) if at least one is Err (left before right)
|
|
132
|
+
*/
|
|
131
133
|
declare function combine<A, AE, B, BE>(left: Result<A, AE>, right: Result<B, BE>): Result<[A, B], Array<AE | BE>>;
|
|
132
134
|
declare function combine<A, AE, B, BE>(right: Result<B, BE>): (left: Result<A, AE>) => Result<[A, B], Array<AE | BE>>;
|
|
133
135
|
//#endregion
|
|
134
136
|
//#region src/core/result.d.ts
|
|
135
137
|
type OperatorFunction<T, E, R> = (input: Result<T, E>) => R;
|
|
136
138
|
type AsyncOperatorFunction<T, E, R> = (input: Result<T, E>) => Promise<R>;
|
|
137
|
-
type ResultType<T, E> = {
|
|
138
|
-
readonly _tag:
|
|
139
|
+
type ResultType<T, E> = (undefined extends T ? {
|
|
140
|
+
readonly _tag: 'Ok';
|
|
141
|
+
readonly value?: T;
|
|
142
|
+
} : {
|
|
143
|
+
readonly _tag: 'Ok';
|
|
139
144
|
readonly value: T;
|
|
140
|
-
} | {
|
|
141
|
-
readonly _tag:
|
|
145
|
+
}) | (undefined extends E ? {
|
|
146
|
+
readonly _tag: 'Err';
|
|
147
|
+
readonly error?: E;
|
|
148
|
+
} : {
|
|
149
|
+
readonly _tag: 'Err';
|
|
142
150
|
readonly error: E;
|
|
143
|
-
};
|
|
151
|
+
});
|
|
144
152
|
type Result<T, E> = Ok<T, E> | Err<T, E>;
|
|
145
153
|
type OkValue<R> = R extends {
|
|
146
|
-
readonly _tag:
|
|
154
|
+
readonly _tag: 'Ok';
|
|
147
155
|
readonly value: infer T;
|
|
148
156
|
} ? T : never;
|
|
149
157
|
declare abstract class ResultBase extends Pipeable {
|
|
150
|
-
abstract readonly _tag:
|
|
158
|
+
abstract readonly _tag: 'Ok' | 'Err';
|
|
151
159
|
isOk<T, E>(this: Result<T, E>): this is Ok<T, E>;
|
|
152
160
|
isErr<T, E>(this: Result<T, E>): this is Err<T, E>;
|
|
153
161
|
unwrapOr<T, E>(this: Result<T, E>, defaultValue: T): T;
|
|
@@ -160,67 +168,80 @@ declare abstract class ResultBase extends Pipeable {
|
|
|
160
168
|
toPromise<T, E>(this: Result<T, E>): Promise<T>;
|
|
161
169
|
toNullable<T, E>(this: Result<T, E>): T | null;
|
|
162
170
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
171
|
+
* Folds the Result into a single value by applying one of two functions.
|
|
172
|
+
*/
|
|
165
173
|
fold<T, E, R1, R2 = R1>(this: Result<T, E>, onOk: (value: T) => R1, onErr: (error: E) => R2): R1 | R2;
|
|
166
174
|
/**
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
175
|
+
* Enables `yield* result` in generators (Do-notation).
|
|
176
|
+
*
|
|
177
|
+
* The iterator yields the `Result` itself; the runner (see `task`) decides:
|
|
178
|
+
* - Ok → sends back the Ok value (`next(value)`), `yield*` yields `T`
|
|
179
|
+
* - Err → aborts and returns the Err Result
|
|
180
|
+
*/
|
|
173
181
|
[Symbol.iterator](): Generator<this, OkValue<this>, unknown>;
|
|
174
182
|
matchError<T, E>(this: Result<T, E>): ErrorMatchBuilder<E, never>;
|
|
175
183
|
matchErrorAsync<T, E>(this: Result<T, E>): AsyncErrorMatchBuilder<E, never>;
|
|
176
184
|
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
* Matches on the **Err** value via a `.when(...)` chain.
|
|
186
|
+
*
|
|
187
|
+
* Not the same as the `match({ ok, err })` pipe operator: that operator resolves
|
|
188
|
+
* **both** branches (Ok and Err) via callbacks, whereas this method is **Err-only**
|
|
189
|
+
* and returns an {@link ErrorMatchBuilder}.
|
|
190
|
+
*
|
|
191
|
+
* Note: for type-safety reasons, `.match()` can only be called on a Result already
|
|
192
|
+
* narrowed to `Err`, e.g. inside `if (result.isErr()) { ... }`.
|
|
193
|
+
*
|
|
194
|
+
* @deprecated Use `.matchError()` for clearer Err-only semantics. For Ok+Err handling,
|
|
195
|
+
* use the `match({ ok, err })` pipe operator instead.
|
|
196
|
+
*/
|
|
189
197
|
match<T, E>(this: Result<T, E>): ErrorMatchBuilder<E, never>;
|
|
190
198
|
/**
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
199
|
+
* Matches on the Err value, but normalizes every branch to a `Result`:
|
|
200
|
+
* - Handlers must return a `Result`
|
|
201
|
+
* - use `ok(...)` for recovery and `err(...)` for mapped errors
|
|
202
|
+
*/
|
|
195
203
|
matchErr<T, E>(this: Result<T, E>): ErrMatchBuilder<T, E, never, never>;
|
|
196
204
|
matchErrAsync<T, E>(this: Result<T, E>): AsyncErrMatchBuilder<T, E, never, never>;
|
|
197
205
|
/**
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
* Converts the Result into its plain discriminated shape
|
|
207
|
+
* `{ _tag: 'Ok', value }` / `{ _tag: 'Err', error }` (`ResultType<T, E>`),
|
|
208
|
+
* with no prototype, methods, or brand attached.
|
|
209
|
+
*
|
|
210
|
+
* Unlike {@link serialize}, `Ok(undefined)` stays unambiguous, because the
|
|
211
|
+
* `_tag` discriminant carries the state. The returned `Ok` object holds
|
|
212
|
+
* the `value` key, and `JSON.stringify` encodes it exactly as it encodes
|
|
213
|
+
* the Result instance, so the shape is safe for JSON, `structuredClone`,
|
|
214
|
+
* and `postMessage`. JSON is the lossy step: `JSON.stringify` drops a key
|
|
215
|
+
* whose value is `undefined`, so `Ok(undefined)` crosses the wire as
|
|
216
|
+
* `{"_tag":"Ok"}`, and `ok(parsed.value)` rebuilds it.
|
|
217
|
+
*
|
|
218
|
+
* To rebuild a Result on the other side, validate the payload with your
|
|
219
|
+
* schema tool and then call `ok`/`err` on the discriminant:
|
|
220
|
+
*
|
|
221
|
+
* ```ts
|
|
222
|
+
* const restored = parsed._tag === 'Ok' ? ok(parsed.value) : err(parsed.error);
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
205
225
|
toSerialized<T, E>(this: Result<T, E>): ResultType<T, E>;
|
|
206
226
|
/**
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
227
|
+
* Serializes the Result into a simple object format.
|
|
228
|
+
* Preserves the original types.
|
|
229
|
+
*
|
|
230
|
+
* @deprecated Use {@link toSerialized} instead: with this format,
|
|
231
|
+
* `Ok(undefined)` is indistinguishable from a missing `data` field, and
|
|
232
|
+
* the shape does not match what `JSON.stringify(result)` produces.
|
|
233
|
+
* `toSerialized()` returns the discriminated `ResultType<T, E>`, which
|
|
234
|
+
* rebuilds unambiguously via `ok`/`err`.
|
|
235
|
+
*/
|
|
215
236
|
serialize<T, E>(this: Result<T, E>): {
|
|
216
237
|
isSuccess: boolean;
|
|
217
238
|
data?: T;
|
|
218
239
|
error?: E;
|
|
219
240
|
};
|
|
220
241
|
/**
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
242
|
+
* Serializes the Result into a user-friendly format.
|
|
243
|
+
* Converts Errors to readable strings.
|
|
244
|
+
*/
|
|
224
245
|
toUserFriendly<T, E>(this: Result<T, E>): {
|
|
225
246
|
isSuccess: boolean;
|
|
226
247
|
data?: T;
|
|
@@ -228,12 +249,12 @@ declare abstract class ResultBase extends Pipeable {
|
|
|
228
249
|
};
|
|
229
250
|
}
|
|
230
251
|
declare class Ok<T, E = never> extends ResultBase {
|
|
231
|
-
readonly _tag
|
|
252
|
+
readonly _tag: 'Ok';
|
|
232
253
|
readonly value: T;
|
|
233
254
|
constructor(value: T);
|
|
234
255
|
}
|
|
235
256
|
declare class Err<T = never, E = never> extends ResultBase {
|
|
236
|
-
readonly _tag
|
|
257
|
+
readonly _tag: 'Err';
|
|
237
258
|
readonly error: E;
|
|
238
259
|
constructor(error: E);
|
|
239
260
|
}
|
|
@@ -267,17 +288,17 @@ declare const Result: {
|
|
|
267
288
|
//#region src/core/sequence.d.ts
|
|
268
289
|
type OkValueOf<R> = R extends Result<infer T, any> ? T : never;
|
|
269
290
|
type ErrValueOf<R> = R extends Result<any, infer E> ? E : never;
|
|
270
|
-
type SequenceValues<Results extends readonly Result<any, any>[]> = { -readonly [K in keyof Results]: OkValueOf<Results[K]
|
|
291
|
+
type SequenceValues<Results extends readonly Result<any, any>[]> = { -readonly [K in keyof Results]: OkValueOf<Results[K]>; };
|
|
271
292
|
/**
|
|
272
|
-
* Combines a list of Results into a single Result of a list.
|
|
273
|
-
* Short-circuits on the first Err.
|
|
274
|
-
* Analogous to Rust `collect::<Result<Vec<_>, _>>()`.
|
|
275
|
-
*/
|
|
293
|
+
* Combines a list of Results into a single Result of a list.
|
|
294
|
+
* Short-circuits on the first Err.
|
|
295
|
+
* Analogous to Rust `collect::<Result<Vec<_>, _>>()`.
|
|
296
|
+
*/
|
|
276
297
|
declare function sequence<const Results extends readonly Result<any, any>[]>(results: Results): Result<SequenceValues<Results>, ErrValueOf<Results[number]>>;
|
|
277
298
|
/**
|
|
278
|
-
* Alias for `sequence`.
|
|
279
|
-
*/
|
|
299
|
+
* Alias for `sequence`.
|
|
300
|
+
*/
|
|
280
301
|
declare function all<const Results extends readonly Result<any, any>[]>(results: Results): Result<SequenceValues<Results>, ErrValueOf<Results[number]>>;
|
|
281
302
|
//#endregion
|
|
282
|
-
export { Awaitable$1 as S, tryFn as _, Ok as a, isResult as b, ResultType as c, fromPromise as d, fromThrowable as f, tryAsync as g, okIfLazy as h, Err as i, err as l, okIf as m, sequence as n, OperatorFunction as o, ok as p, AsyncOperatorFunction as r, Result as s, all as t, fromNullable as u, combine as v,
|
|
283
|
-
//# sourceMappingURL=sequence-
|
|
303
|
+
export { ErrMatchBuilder as C, Awaitable$1 as E, AsyncErrorMatchBuilder as S, matchTag as T, tryFn as _, Ok as a, isResult as b, ResultType as c, fromPromise as d, fromThrowable as f, tryAsync as g, okIfLazy as h, Err as i, err as l, okIf as m, sequence as n, OperatorFunction as o, ok as p, AsyncOperatorFunction as r, Result as s, all as t, fromNullable as u, combine as v, ErrorMatchBuilder as w, AsyncErrMatchBuilder as x, zip as y };
|
|
304
|
+
//# sourceMappingURL=sequence-CmugKPbu.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence-CmugKPbu.d.cts","names":[],"sources":["../src/core/pipeable.ts","../src/core/matcher.ts","../src/core/isResult.ts","../src/core/zip.ts","../src/core/result.ts","../src/core/sequence.ts"],"mappings":"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"}
|
|
@@ -49,19 +49,21 @@ declare abstract class Pipeable {
|
|
|
49
49
|
//#region src/core/matcher.d.ts
|
|
50
50
|
type Ctor<T> = abstract new (...args: any[]) => T;
|
|
51
51
|
type TypeGuard<E, A extends E> = (error: E) => error is A;
|
|
52
|
-
type TaggedBy<K extends PropertyKey, V extends PropertyKey> = { readonly [P in K]: V };
|
|
52
|
+
type TaggedBy<K extends PropertyKey, V extends PropertyKey> = { readonly [P in K]: V; };
|
|
53
53
|
type Awaitable<T> = T | Promise<T>;
|
|
54
54
|
type TagValue<E, K extends keyof E> = Extract<E[K], PropertyKey>;
|
|
55
|
-
type TagHandlerMap<E, K extends keyof E> = { readonly [V in TagValue<E, K>]: (error: Extract<E, Record<K, V>>) => unknown };
|
|
56
|
-
type TagHandlerReturn<Handlers> = { [K in keyof Handlers]: Handlers[K] extends ((...args: any[]) => infer R) ? R : never }[keyof Handlers];
|
|
55
|
+
type TagHandlerMap<E, K extends keyof E> = { readonly [V in TagValue<E, K>]: (error: Extract<E, Record<K, V>>) => unknown; };
|
|
56
|
+
type TagHandlerReturn<Handlers> = { [K in keyof Handlers]: Handlers[K] extends ((...args: any[]) => infer R) ? R : never; }[keyof Handlers];
|
|
57
57
|
declare function matchTag<T, K extends keyof E & PropertyKey, E extends Record<K, PropertyKey>, Handlers extends TagHandlerMap<E, K>>(result: Result<T, E>, key: K, handlers: Handlers): TagHandlerReturn<Handlers>;
|
|
58
58
|
/**
|
|
59
|
-
* Matcher for Err values (returns an arbitrary return type, e.g. string messages).
|
|
60
|
-
*
|
|
61
|
-
* - `.when(Ctor, handler)` matches via `instanceof`
|
|
62
|
-
* - `.whenGuard(guard, handler)` matches via Type-Guard
|
|
63
|
-
* - `.run()` is only allowed if all error cases have been handled (`E` has been reduced to `never`)
|
|
64
|
-
|
|
59
|
+
* Matcher for Err values (returns an arbitrary return type, e.g. string messages).
|
|
60
|
+
*
|
|
61
|
+
* - `.when(Ctor, handler)` matches via `instanceof`
|
|
62
|
+
* - `.whenGuard(guard, handler)` matches via Type-Guard
|
|
63
|
+
* - `.run()` is only allowed if all error cases have been handled (`E` has been reduced to `never`).
|
|
64
|
+
* The reduction is structural: two error classes of the same shape count as one case, so each
|
|
65
|
+
* class needs a distinguishing member, for example a literal `readonly code`.
|
|
66
|
+
*/
|
|
65
67
|
declare class ErrorMatchBuilder<E, R> {
|
|
66
68
|
#private;
|
|
67
69
|
constructor(error: unknown, matched?: boolean, value?: unknown);
|
|
@@ -83,11 +85,11 @@ declare class AsyncErrorMatchBuilder<E, R> {
|
|
|
83
85
|
type OkOfResult<R> = R extends Result<infer T, any> ? T : never;
|
|
84
86
|
type ErrOfResult<R> = R extends Result<any, infer E> ? E : never;
|
|
85
87
|
/**
|
|
86
|
-
* Matcher for `Result` Errors, which returns a `Result` again.
|
|
87
|
-
*
|
|
88
|
-
* Handlers must return a `Result`.
|
|
89
|
-
* Wrap recovered values with `ok(...)` and mapped errors with `err(...)`.
|
|
90
|
-
*/
|
|
88
|
+
* Matcher for `Result` Errors, which returns a `Result` again.
|
|
89
|
+
*
|
|
90
|
+
* Handlers must return a `Result`.
|
|
91
|
+
* Wrap recovered values with `ok(...)` and mapped errors with `err(...)`.
|
|
92
|
+
*/
|
|
91
93
|
declare class ErrMatchBuilder<T, E, OutT, OutE> {
|
|
92
94
|
#private;
|
|
93
95
|
private constructor();
|
|
@@ -111,43 +113,49 @@ declare class AsyncErrMatchBuilder<T, E, OutT, OutE> {
|
|
|
111
113
|
//#endregion
|
|
112
114
|
//#region src/core/isResult.d.ts
|
|
113
115
|
/**
|
|
114
|
-
* Checks whether a value is a Result.
|
|
115
|
-
* Pure function alternative for runtime checks.
|
|
116
|
-
*/
|
|
116
|
+
* Checks whether a value is a Result.
|
|
117
|
+
* Pure function alternative for runtime checks.
|
|
118
|
+
*/
|
|
117
119
|
declare function isResult(value: unknown): value is Result<any, any>;
|
|
118
120
|
//#endregion
|
|
119
121
|
//#region src/core/zip.d.ts
|
|
120
122
|
/**
|
|
121
|
-
* Combines two Results into a Result of a tuple.
|
|
122
|
-
* Short-circuits on the first Err (left before right).
|
|
123
|
-
*/
|
|
123
|
+
* Combines two Results into a Result of a tuple.
|
|
124
|
+
* Short-circuits on the first Err (left before right).
|
|
125
|
+
*/
|
|
124
126
|
declare function zip<A, AE, B, BE>(left: Result<A, AE>, right: Result<B, BE>): Result<[A, B], AE | BE>;
|
|
125
127
|
declare function zip<A, AE, B, BE>(right: Result<B, BE>): (left: Result<A, AE>) => Result<[A, B], AE | BE>;
|
|
126
128
|
/**
|
|
127
|
-
* Combines two Results and collects errors.
|
|
128
|
-
* - Ok only if both are Ok
|
|
129
|
-
* - Err([errors]) if at least one is Err (left before right)
|
|
130
|
-
*/
|
|
129
|
+
* Combines two Results and collects errors.
|
|
130
|
+
* - Ok only if both are Ok
|
|
131
|
+
* - Err([errors]) if at least one is Err (left before right)
|
|
132
|
+
*/
|
|
131
133
|
declare function combine<A, AE, B, BE>(left: Result<A, AE>, right: Result<B, BE>): Result<[A, B], Array<AE | BE>>;
|
|
132
134
|
declare function combine<A, AE, B, BE>(right: Result<B, BE>): (left: Result<A, AE>) => Result<[A, B], Array<AE | BE>>;
|
|
133
135
|
//#endregion
|
|
134
136
|
//#region src/core/result.d.ts
|
|
135
137
|
type OperatorFunction<T, E, R> = (input: Result<T, E>) => R;
|
|
136
138
|
type AsyncOperatorFunction<T, E, R> = (input: Result<T, E>) => Promise<R>;
|
|
137
|
-
type ResultType<T, E> = {
|
|
138
|
-
readonly _tag:
|
|
139
|
+
type ResultType<T, E> = (undefined extends T ? {
|
|
140
|
+
readonly _tag: 'Ok';
|
|
141
|
+
readonly value?: T;
|
|
142
|
+
} : {
|
|
143
|
+
readonly _tag: 'Ok';
|
|
139
144
|
readonly value: T;
|
|
140
|
-
} | {
|
|
141
|
-
readonly _tag:
|
|
145
|
+
}) | (undefined extends E ? {
|
|
146
|
+
readonly _tag: 'Err';
|
|
147
|
+
readonly error?: E;
|
|
148
|
+
} : {
|
|
149
|
+
readonly _tag: 'Err';
|
|
142
150
|
readonly error: E;
|
|
143
|
-
};
|
|
151
|
+
});
|
|
144
152
|
type Result<T, E> = Ok<T, E> | Err<T, E>;
|
|
145
153
|
type OkValue<R> = R extends {
|
|
146
|
-
readonly _tag:
|
|
154
|
+
readonly _tag: 'Ok';
|
|
147
155
|
readonly value: infer T;
|
|
148
156
|
} ? T : never;
|
|
149
157
|
declare abstract class ResultBase extends Pipeable {
|
|
150
|
-
abstract readonly _tag:
|
|
158
|
+
abstract readonly _tag: 'Ok' | 'Err';
|
|
151
159
|
isOk<T, E>(this: Result<T, E>): this is Ok<T, E>;
|
|
152
160
|
isErr<T, E>(this: Result<T, E>): this is Err<T, E>;
|
|
153
161
|
unwrapOr<T, E>(this: Result<T, E>, defaultValue: T): T;
|
|
@@ -160,67 +168,80 @@ declare abstract class ResultBase extends Pipeable {
|
|
|
160
168
|
toPromise<T, E>(this: Result<T, E>): Promise<T>;
|
|
161
169
|
toNullable<T, E>(this: Result<T, E>): T | null;
|
|
162
170
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
171
|
+
* Folds the Result into a single value by applying one of two functions.
|
|
172
|
+
*/
|
|
165
173
|
fold<T, E, R1, R2 = R1>(this: Result<T, E>, onOk: (value: T) => R1, onErr: (error: E) => R2): R1 | R2;
|
|
166
174
|
/**
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
175
|
+
* Enables `yield* result` in generators (Do-notation).
|
|
176
|
+
*
|
|
177
|
+
* The iterator yields the `Result` itself; the runner (see `task`) decides:
|
|
178
|
+
* - Ok → sends back the Ok value (`next(value)`), `yield*` yields `T`
|
|
179
|
+
* - Err → aborts and returns the Err Result
|
|
180
|
+
*/
|
|
173
181
|
[Symbol.iterator](): Generator<this, OkValue<this>, unknown>;
|
|
174
182
|
matchError<T, E>(this: Result<T, E>): ErrorMatchBuilder<E, never>;
|
|
175
183
|
matchErrorAsync<T, E>(this: Result<T, E>): AsyncErrorMatchBuilder<E, never>;
|
|
176
184
|
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
* Matches on the **Err** value via a `.when(...)` chain.
|
|
186
|
+
*
|
|
187
|
+
* Not the same as the `match({ ok, err })` pipe operator: that operator resolves
|
|
188
|
+
* **both** branches (Ok and Err) via callbacks, whereas this method is **Err-only**
|
|
189
|
+
* and returns an {@link ErrorMatchBuilder}.
|
|
190
|
+
*
|
|
191
|
+
* Note: for type-safety reasons, `.match()` can only be called on a Result already
|
|
192
|
+
* narrowed to `Err`, e.g. inside `if (result.isErr()) { ... }`.
|
|
193
|
+
*
|
|
194
|
+
* @deprecated Use `.matchError()` for clearer Err-only semantics. For Ok+Err handling,
|
|
195
|
+
* use the `match({ ok, err })` pipe operator instead.
|
|
196
|
+
*/
|
|
189
197
|
match<T, E>(this: Result<T, E>): ErrorMatchBuilder<E, never>;
|
|
190
198
|
/**
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
199
|
+
* Matches on the Err value, but normalizes every branch to a `Result`:
|
|
200
|
+
* - Handlers must return a `Result`
|
|
201
|
+
* - use `ok(...)` for recovery and `err(...)` for mapped errors
|
|
202
|
+
*/
|
|
195
203
|
matchErr<T, E>(this: Result<T, E>): ErrMatchBuilder<T, E, never, never>;
|
|
196
204
|
matchErrAsync<T, E>(this: Result<T, E>): AsyncErrMatchBuilder<T, E, never, never>;
|
|
197
205
|
/**
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
* Converts the Result into its plain discriminated shape
|
|
207
|
+
* `{ _tag: 'Ok', value }` / `{ _tag: 'Err', error }` (`ResultType<T, E>`),
|
|
208
|
+
* with no prototype, methods, or brand attached.
|
|
209
|
+
*
|
|
210
|
+
* Unlike {@link serialize}, `Ok(undefined)` stays unambiguous, because the
|
|
211
|
+
* `_tag` discriminant carries the state. The returned `Ok` object holds
|
|
212
|
+
* the `value` key, and `JSON.stringify` encodes it exactly as it encodes
|
|
213
|
+
* the Result instance, so the shape is safe for JSON, `structuredClone`,
|
|
214
|
+
* and `postMessage`. JSON is the lossy step: `JSON.stringify` drops a key
|
|
215
|
+
* whose value is `undefined`, so `Ok(undefined)` crosses the wire as
|
|
216
|
+
* `{"_tag":"Ok"}`, and `ok(parsed.value)` rebuilds it.
|
|
217
|
+
*
|
|
218
|
+
* To rebuild a Result on the other side, validate the payload with your
|
|
219
|
+
* schema tool and then call `ok`/`err` on the discriminant:
|
|
220
|
+
*
|
|
221
|
+
* ```ts
|
|
222
|
+
* const restored = parsed._tag === 'Ok' ? ok(parsed.value) : err(parsed.error);
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
205
225
|
toSerialized<T, E>(this: Result<T, E>): ResultType<T, E>;
|
|
206
226
|
/**
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
227
|
+
* Serializes the Result into a simple object format.
|
|
228
|
+
* Preserves the original types.
|
|
229
|
+
*
|
|
230
|
+
* @deprecated Use {@link toSerialized} instead: with this format,
|
|
231
|
+
* `Ok(undefined)` is indistinguishable from a missing `data` field, and
|
|
232
|
+
* the shape does not match what `JSON.stringify(result)` produces.
|
|
233
|
+
* `toSerialized()` returns the discriminated `ResultType<T, E>`, which
|
|
234
|
+
* rebuilds unambiguously via `ok`/`err`.
|
|
235
|
+
*/
|
|
215
236
|
serialize<T, E>(this: Result<T, E>): {
|
|
216
237
|
isSuccess: boolean;
|
|
217
238
|
data?: T;
|
|
218
239
|
error?: E;
|
|
219
240
|
};
|
|
220
241
|
/**
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
242
|
+
* Serializes the Result into a user-friendly format.
|
|
243
|
+
* Converts Errors to readable strings.
|
|
244
|
+
*/
|
|
224
245
|
toUserFriendly<T, E>(this: Result<T, E>): {
|
|
225
246
|
isSuccess: boolean;
|
|
226
247
|
data?: T;
|
|
@@ -228,12 +249,12 @@ declare abstract class ResultBase extends Pipeable {
|
|
|
228
249
|
};
|
|
229
250
|
}
|
|
230
251
|
declare class Ok<T, E = never> extends ResultBase {
|
|
231
|
-
readonly _tag
|
|
252
|
+
readonly _tag: 'Ok';
|
|
232
253
|
readonly value: T;
|
|
233
254
|
constructor(value: T);
|
|
234
255
|
}
|
|
235
256
|
declare class Err<T = never, E = never> extends ResultBase {
|
|
236
|
-
readonly _tag
|
|
257
|
+
readonly _tag: 'Err';
|
|
237
258
|
readonly error: E;
|
|
238
259
|
constructor(error: E);
|
|
239
260
|
}
|
|
@@ -267,17 +288,17 @@ declare const Result: {
|
|
|
267
288
|
//#region src/core/sequence.d.ts
|
|
268
289
|
type OkValueOf<R> = R extends Result<infer T, any> ? T : never;
|
|
269
290
|
type ErrValueOf<R> = R extends Result<any, infer E> ? E : never;
|
|
270
|
-
type SequenceValues<Results extends readonly Result<any, any>[]> = { -readonly [K in keyof Results]: OkValueOf<Results[K]
|
|
291
|
+
type SequenceValues<Results extends readonly Result<any, any>[]> = { -readonly [K in keyof Results]: OkValueOf<Results[K]>; };
|
|
271
292
|
/**
|
|
272
|
-
* Combines a list of Results into a single Result of a list.
|
|
273
|
-
* Short-circuits on the first Err.
|
|
274
|
-
* Analogous to Rust `collect::<Result<Vec<_>, _>>()`.
|
|
275
|
-
*/
|
|
293
|
+
* Combines a list of Results into a single Result of a list.
|
|
294
|
+
* Short-circuits on the first Err.
|
|
295
|
+
* Analogous to Rust `collect::<Result<Vec<_>, _>>()`.
|
|
296
|
+
*/
|
|
276
297
|
declare function sequence<const Results extends readonly Result<any, any>[]>(results: Results): Result<SequenceValues<Results>, ErrValueOf<Results[number]>>;
|
|
277
298
|
/**
|
|
278
|
-
* Alias for `sequence`.
|
|
279
|
-
*/
|
|
299
|
+
* Alias for `sequence`.
|
|
300
|
+
*/
|
|
280
301
|
declare function all<const Results extends readonly Result<any, any>[]>(results: Results): Result<SequenceValues<Results>, ErrValueOf<Results[number]>>;
|
|
281
302
|
//#endregion
|
|
282
|
-
export { Awaitable$1 as S, tryFn as _, Ok as a, isResult as b, ResultType as c, fromPromise as d, fromThrowable as f, tryAsync as g, okIfLazy as h, Err as i, err as l, okIf as m, sequence as n, OperatorFunction as o, ok as p, AsyncOperatorFunction as r, Result as s, all as t, fromNullable as u, combine as v,
|
|
283
|
-
//# sourceMappingURL=sequence-
|
|
303
|
+
export { ErrMatchBuilder as C, Awaitable$1 as E, AsyncErrorMatchBuilder as S, matchTag as T, tryFn as _, Ok as a, isResult as b, ResultType as c, fromPromise as d, fromThrowable as f, tryAsync as g, okIfLazy as h, Err as i, err as l, okIf as m, sequence as n, OperatorFunction as o, ok as p, AsyncOperatorFunction as r, Result as s, all as t, fromNullable as u, combine as v, ErrorMatchBuilder as w, AsyncErrMatchBuilder as x, zip as y };
|
|
304
|
+
//# sourceMappingURL=sequence-CmugKPbu.d.mts.map
|