@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.
Files changed (66) hide show
  1. package/README.md +6 -2
  2. package/dist/collections.cjs +181 -9
  3. package/dist/collections.cjs.map +1 -0
  4. package/dist/collections.d.cts +101 -3
  5. package/dist/collections.d.cts.map +1 -0
  6. package/dist/collections.d.mts +101 -3
  7. package/dist/collections.d.mts.map +1 -0
  8. package/dist/collections.mjs +175 -3
  9. package/dist/collections.mjs.map +1 -0
  10. package/dist/errors-CVgC7NII.cjs +278 -0
  11. package/dist/errors-CVgC7NII.cjs.map +1 -0
  12. package/dist/errors-MuakEcnM.mjs +146 -0
  13. package/dist/errors-MuakEcnM.mjs.map +1 -0
  14. package/dist/errors.cjs +22 -130
  15. package/dist/errors.d.cts +9 -9
  16. package/dist/errors.d.cts.map +1 -1
  17. package/dist/errors.d.mts +9 -9
  18. package/dist/errors.d.mts.map +1 -1
  19. package/dist/errors.mjs +2 -109
  20. package/dist/index.cjs +99 -69
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +87 -74
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/index.d.mts +87 -74
  25. package/dist/index.d.mts.map +1 -1
  26. package/dist/index.mjs +64 -34
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/operators.cjs +412 -31
  29. package/dist/operators.cjs.map +1 -0
  30. package/dist/operators.d.cts +211 -3
  31. package/dist/operators.d.cts.map +1 -0
  32. package/dist/operators.d.mts +211 -3
  33. package/dist/operators.d.mts.map +1 -0
  34. package/dist/operators.mjs +384 -3
  35. package/dist/operators.mjs.map +1 -0
  36. package/dist/{result-q9Na2bGa.mjs → result-DQCpkuOJ.mjs} +36 -17
  37. package/dist/result-DQCpkuOJ.mjs.map +1 -0
  38. package/dist/{result-BBOGxvSH.cjs → result-DoqQufvR.cjs} +36 -17
  39. package/dist/result-DoqQufvR.cjs.map +1 -0
  40. package/dist/{sequence-DDwePRLd.d.cts → sequence-CmugKPbu.d.cts} +105 -84
  41. package/dist/sequence-CmugKPbu.d.cts.map +1 -0
  42. package/dist/{sequence-DDwePRLd.d.mts → sequence-CmugKPbu.d.mts} +105 -84
  43. package/dist/sequence-CmugKPbu.d.mts.map +1 -0
  44. package/package.json +20 -12
  45. package/dist/errors.cjs.map +0 -1
  46. package/dist/errors.mjs.map +0 -1
  47. package/dist/flatten-B_XIkaOK.cjs +0 -208
  48. package/dist/flatten-B_XIkaOK.cjs.map +0 -1
  49. package/dist/flatten-C7D6Kttf.d.mts +0 -81
  50. package/dist/flatten-C7D6Kttf.d.mts.map +0 -1
  51. package/dist/flatten-ChTL5BfA.mjs +0 -167
  52. package/dist/flatten-ChTL5BfA.mjs.map +0 -1
  53. package/dist/flatten-D0K8UcQH.d.cts +0 -81
  54. package/dist/flatten-D0K8UcQH.d.cts.map +0 -1
  55. package/dist/result-BBOGxvSH.cjs.map +0 -1
  56. package/dist/result-q9Na2bGa.mjs.map +0 -1
  57. package/dist/sequence-DDwePRLd.d.cts.map +0 -1
  58. package/dist/sequence-DDwePRLd.d.mts.map +0 -1
  59. package/dist/swap-BnyMBdD_.cjs +0 -552
  60. package/dist/swap-BnyMBdD_.cjs.map +0 -1
  61. package/dist/swap-CFD2g1cB.mjs +0 -385
  62. package/dist/swap-CFD2g1cB.mjs.map +0 -1
  63. package/dist/swap-CrHQZIax.d.cts +0 -212
  64. package/dist/swap-CrHQZIax.d.cts.map +0 -1
  65. package/dist/swap-DT4LdRFV.d.mts +0 -212
  66. 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: "Ok";
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: "Err";
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: "Ok";
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: "Ok" | "Err";
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
- * Folds the Result into a single value by applying one of two functions.
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
- * Enables `yield* result` in generators (Do-notation).
168
- *
169
- * The iterator yields the `Result` itself; the runner (see `task`) decides:
170
- * - Ok → sends back the Ok value (`next(value)`), `yield*` yields `T`
171
- * - Err → aborts and returns the Err Result
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
- * Matches on the **Err** value via a `.when(...)` chain.
178
- *
179
- * Not the same as the `match({ ok, err })` pipe operator: that operator resolves
180
- * **both** branches (Ok and Err) via callbacks, whereas this method is **Err-only**
181
- * and returns an {@link ErrorMatchBuilder}.
182
- *
183
- * Note: for type-safety reasons, `.match()` can only be called on a Result already
184
- * narrowed to `Err`, e.g. inside `if (result.isErr()) { ... }`.
185
- *
186
- * @deprecated Use `.matchError()` for clearer Err-only semantics. For Ok+Err handling,
187
- * use the `match({ ok, err })` pipe operator instead.
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
- * Matches on the Err value, but normalizes every branch to a `Result`:
192
- * - Handlers must return a `Result`
193
- * - use `ok(...)` for recovery and `err(...)` for mapped errors
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
- * Serializes the Result into the discriminated shape
199
- * `{ _tag: 'Ok', value }` / `{ _tag: 'Err', error }`.
200
- *
201
- * Unlike {@link serialize}, `Ok(undefined)` stays unambiguous, and the
202
- * shape round-trips through `fromSerialized(...)`. It also matches what
203
- * `JSON.stringify(result)` produces for a Result instance.
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
- * Serializes the Result into a simple object format.
208
- * Preserves the original types.
209
- *
210
- * @deprecated Use {@link toSerialized} instead: with this format,
211
- * `Ok(undefined)` is indistinguishable from a missing `data` field, and
212
- * there is no way to rebuild a Result from it. `toSerialized()`
213
- * round-trips via `fromSerialized(...)`.
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
- * Serializes the Result into a user-friendly format.
222
- * Converts Errors to readable strings.
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 = "Ok";
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 = "Err";
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, matchTag as x, zip as y };
283
- //# sourceMappingURL=sequence-DDwePRLd.d.cts.map
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: "Ok";
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: "Err";
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: "Ok";
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: "Ok" | "Err";
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
- * Folds the Result into a single value by applying one of two functions.
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
- * Enables `yield* result` in generators (Do-notation).
168
- *
169
- * The iterator yields the `Result` itself; the runner (see `task`) decides:
170
- * - Ok → sends back the Ok value (`next(value)`), `yield*` yields `T`
171
- * - Err → aborts and returns the Err Result
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
- * Matches on the **Err** value via a `.when(...)` chain.
178
- *
179
- * Not the same as the `match({ ok, err })` pipe operator: that operator resolves
180
- * **both** branches (Ok and Err) via callbacks, whereas this method is **Err-only**
181
- * and returns an {@link ErrorMatchBuilder}.
182
- *
183
- * Note: for type-safety reasons, `.match()` can only be called on a Result already
184
- * narrowed to `Err`, e.g. inside `if (result.isErr()) { ... }`.
185
- *
186
- * @deprecated Use `.matchError()` for clearer Err-only semantics. For Ok+Err handling,
187
- * use the `match({ ok, err })` pipe operator instead.
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
- * Matches on the Err value, but normalizes every branch to a `Result`:
192
- * - Handlers must return a `Result`
193
- * - use `ok(...)` for recovery and `err(...)` for mapped errors
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
- * Serializes the Result into the discriminated shape
199
- * `{ _tag: 'Ok', value }` / `{ _tag: 'Err', error }`.
200
- *
201
- * Unlike {@link serialize}, `Ok(undefined)` stays unambiguous, and the
202
- * shape round-trips through `fromSerialized(...)`. It also matches what
203
- * `JSON.stringify(result)` produces for a Result instance.
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
- * Serializes the Result into a simple object format.
208
- * Preserves the original types.
209
- *
210
- * @deprecated Use {@link toSerialized} instead: with this format,
211
- * `Ok(undefined)` is indistinguishable from a missing `data` field, and
212
- * there is no way to rebuild a Result from it. `toSerialized()`
213
- * round-trips via `fromSerialized(...)`.
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
- * Serializes the Result into a user-friendly format.
222
- * Converts Errors to readable strings.
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 = "Ok";
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 = "Err";
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, matchTag as x, zip as y };
283
- //# sourceMappingURL=sequence-DDwePRLd.d.mts.map
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