unthrown 1.0.0 → 2.0.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/dist/index.d.mts CHANGED
@@ -158,6 +158,23 @@ type ResultMethods<T, E> = {
158
158
  * @param f - the side effect (its return value is ignored).
159
159
  */
160
160
  tapErr(f: (error: E) => void): Result$1<T, E>;
161
+ /**
162
+ * Run a **failable** side effect on the error, keeping the original error but
163
+ * threading the effect's own error.
164
+ *
165
+ * @remarks
166
+ * The error-channel mirror of {@link ResultMethods.flatTap | flatTap}: `f`
167
+ * returns a `Result`, but its **success value is discarded** — on the effect's
168
+ * `Ok` the original `Err` flows through unchanged, while an `Err` (or `Defect`)
169
+ * from `f` short-circuits and threads its error (`Result<T, E | E2>`). Runs only
170
+ * on `Err`; `Ok` and `Defect` pass through. If `f` throws, the throw becomes a
171
+ * `Defect`. Use it for a failable effect _during_ error handling (e.g. writing
172
+ * the error to an audit log that may itself fail).
173
+ *
174
+ * @typeParam E2 - the error type the effect may introduce.
175
+ * @param f - the failable side effect; its `Ok` value is ignored.
176
+ */
177
+ flatTapErr<E2>(f: (error: E) => Result$1<unknown, E2>): Result$1<T, E | E2>;
161
178
  /**
162
179
  * Recover from a `Defect` — the **only** combinator that can touch one.
163
180
  *
@@ -244,7 +261,7 @@ type ResultMethods<T, E> = {
244
261
  isOk(): this is OkView<T, E>; /** Whether this result is `Err` — narrows `this` to its {@link ErrView} on `true`. */
245
262
  isErr(): this is ErrView<E, T>; /** Whether this result is a `Defect` — narrows `this` to its {@link DefectView} on `true`. */
246
263
  isDefect(): this is DefectView<T, E>; /** Lift this synchronous `Result` into an {@link AsyncResult}. */
247
- toAsync(): AsyncResult<T, E>;
264
+ toAsync(): AsyncResult$1<T, E>;
248
265
  };
249
266
  /** The `Ok` variant of a {@link Result}: a success carrying a `value`. */
250
267
  type OkView<T, E = never> = ResultMethods<T, E> & {
@@ -334,33 +351,40 @@ type Awaitable<T> = {
334
351
  * @typeParam T - the success value type.
335
352
  * @typeParam E - the modeled error type.
336
353
  */
337
- type AsyncResult<T, E> = Awaitable<Result$1<T, E>> & {
338
- /** Asynchronous `map`. `f` is synchronous; a throw becomes a `Defect`. */map<U>(f: (value: T) => U): AsyncResult<U, E>;
354
+ type AsyncResult$1<T, E> = Awaitable<Result$1<T, E>> & {
355
+ /** Asynchronous `map`. `f` is synchronous; a throw becomes a `Defect`. */map<U>(f: (value: T) => U): AsyncResult$1<U, E>;
339
356
  /**
340
357
  * Asynchronous `flatMap`. `f` may return a `Result` **or** an `AsyncResult`
341
358
  * (never a raw `Promise`); a throw becomes a `Defect`.
342
359
  */
343
- flatMap<U, E2>(f: (value: T) => Result$1<U, E2> | AsyncResult<U, E2>): AsyncResult<U, E | E2>; /** Asynchronous `tap`. `f` is synchronous; a throw becomes a `Defect`. */
344
- tap(f: (value: T) => void): AsyncResult<T, E>;
360
+ flatMap<U, E2>(f: (value: T) => Result$1<U, E2> | AsyncResult$1<U, E2>): AsyncResult$1<U, E | E2>; /** Asynchronous `tap`. `f` is synchronous; a throw becomes a `Defect`. */
361
+ tap(f: (value: T) => void): AsyncResult$1<T, E>;
345
362
  /**
346
363
  * Asynchronous `flatTap` — a failable tap that keeps the original value. `f`
347
364
  * may return a `Result` **or** an `AsyncResult`; its `Ok` value is discarded,
348
365
  * an `Err`/`Defect` short-circuits, and a throw becomes a `Defect`.
349
366
  */
350
- flatTap<E2>(f: (value: T) => Result$1<unknown, E2> | AsyncResult<unknown, E2>): AsyncResult<T, E | E2>;
367
+ flatTap<E2>(f: (value: T) => Result$1<unknown, E2> | AsyncResult$1<unknown, E2>): AsyncResult$1<T, E | E2>;
351
368
  /**
352
369
  * Asynchronous `bind` (do-notation). `f` may return a `Result` **or** an
353
370
  * `AsyncResult`; its value is bound under `name` in the accumulating scope.
354
371
  */
355
- bind<K extends string, U, E2>(name: K, f: (scope: T) => Result$1<U, E2> | AsyncResult<U, E2>): AsyncResult<Bound<T, K, U>, E | E2>; /** Asynchronous `let` (do-notation). `f` returns a plain value, bound under `name`. */
356
- let<K extends string, U>(name: K, f: (scope: T) => U): AsyncResult<Bound<T, K, U>, E>; /** Asynchronous `as`. */
357
- as<U>(value: U): AsyncResult<U, E>; /** Asynchronous `mapErr`. `f` is synchronous; a throw becomes a `Defect`. */
358
- mapErr<E2>(f: (error: E) => E2): AsyncResult<T, E2>; /** Asynchronous `orElse`. `f` may return a `Result` or an `AsyncResult`. */
359
- orElse<U, E2>(f: (error: E) => Result$1<U, E2> | AsyncResult<U, E2>): AsyncResult<T | U, E2>; /** Asynchronous `recover`. `f` is synchronous; a throw becomes a `Defect`. */
360
- recover<U>(f: (error: E) => U): AsyncResult<T | U, never>; /** Asynchronous `tapErr`. `f` is synchronous; a throw becomes a `Defect`. */
361
- tapErr(f: (error: E) => void): AsyncResult<T, E>; /** Asynchronous `recoverDefect`. `f` may return a `Result` or an `AsyncResult`. */
362
- recoverDefect<U, E2>(f: (cause: unknown) => Result$1<U, E2> | AsyncResult<U, E2>): AsyncResult<T | U, E | E2>; /** Asynchronous `tapDefect`. */
363
- tapDefect(f: (cause: unknown) => void): AsyncResult<T, E>; /** Asynchronous `match`. Handlers are synchronous; resolves to `R`. */
372
+ bind<K extends string, U, E2>(name: K, f: (scope: T) => Result$1<U, E2> | AsyncResult$1<U, E2>): AsyncResult$1<Bound<T, K, U>, E | E2>; /** Asynchronous `let` (do-notation). `f` returns a plain value, bound under `name`. */
373
+ let<K extends string, U>(name: K, f: (scope: T) => U): AsyncResult$1<Bound<T, K, U>, E>; /** Asynchronous `as`. */
374
+ as<U>(value: U): AsyncResult$1<U, E>; /** Asynchronous `mapErr`. `f` is synchronous; a throw becomes a `Defect`. */
375
+ mapErr<E2>(f: (error: E) => E2): AsyncResult$1<T, E2>; /** Asynchronous `orElse`. `f` may return a `Result` or an `AsyncResult`. */
376
+ orElse<U, E2>(f: (error: E) => Result$1<U, E2> | AsyncResult$1<U, E2>): AsyncResult$1<T | U, E2>; /** Asynchronous `recover`. `f` is synchronous; a throw becomes a `Defect`. */
377
+ recover<U>(f: (error: E) => U): AsyncResult$1<T | U, never>; /** Asynchronous `tapErr`. `f` is synchronous; a throw becomes a `Defect`. */
378
+ tapErr(f: (error: E) => void): AsyncResult$1<T, E>;
379
+ /**
380
+ * Asynchronous `flatTapErr` a failable tap on the error that keeps the
381
+ * original error. `f` may return a `Result` **or** an `AsyncResult`; its `Ok`
382
+ * value is discarded, an `Err`/`Defect` from `f` threads through, and a throw
383
+ * becomes a `Defect`.
384
+ */
385
+ flatTapErr<E2>(f: (error: E) => Result$1<unknown, E2> | AsyncResult$1<unknown, E2>): AsyncResult$1<T, E | E2>; /** Asynchronous `recoverDefect`. `f` may return a `Result` or an `AsyncResult`. */
386
+ recoverDefect<U, E2>(f: (cause: unknown) => Result$1<U, E2> | AsyncResult$1<U, E2>): AsyncResult$1<T | U, E | E2>; /** Asynchronous `tapDefect`. */
387
+ tapDefect(f: (cause: unknown) => void): AsyncResult$1<T, E>; /** Asynchronous `match`. Handlers are synchronous; resolves to `R`. */
364
388
  match<R>(cases: {
365
389
  ok: (value: T) => R;
366
390
  err: (error: E) => R;
@@ -396,13 +420,13 @@ type ErrOf<R> = R extends {
396
420
  *
397
421
  * @typeParam R - the `AsyncResult` type to inspect.
398
422
  */
399
- type AsyncOkOf<R> = R extends AsyncResult<infer T, unknown> ? T : never;
423
+ type AsyncOkOf<R> = R extends AsyncResult$1<infer T, unknown> ? T : never;
400
424
  /**
401
425
  * Extract the error type `E` from an {@link AsyncResult}.
402
426
  *
403
427
  * @typeParam R - the `AsyncResult` type to inspect.
404
428
  */
405
- type AsyncErrOf<R> = R extends AsyncResult<unknown, infer E> ? E : never;
429
+ type AsyncErrOf<R> = R extends AsyncResult$1<unknown, infer E> ? E : never;
406
430
  //#endregion
407
431
  //#region src/constructors.d.ts
408
432
  /**
@@ -477,6 +501,19 @@ declare class UnwrapError<E = unknown> extends Error {
477
501
  readonly error: E;
478
502
  constructor(error: E);
479
503
  }
504
+ /**
505
+ * Type guard: is `x` a {@link Result} (any of `Ok` / `Err` / `Defect`)?
506
+ *
507
+ * @remarks
508
+ * Unlike {@link isOk} / {@link isErr} / {@link isDefect}, which narrow a value
509
+ * already known to be a `Result`, this narrows from `unknown` — useful at an
510
+ * untyped boundary. It checks the value carries the `Result` prototype, so a
511
+ * look-alike plain object (`{ tag: "Ok" }`) is **not** matched. An `AsyncResult`
512
+ * is not a `Result` and returns `false`.
513
+ *
514
+ * @returns `true` when `x` is a `Result` produced by this library.
515
+ */
516
+ declare function isResult(x: unknown): x is Result$1<unknown, unknown>;
480
517
  //#endregion
481
518
  //#region src/defect.d.ts
482
519
  declare const DEFECT: unique symbol;
@@ -618,7 +655,7 @@ declare function fromThrowable<A extends unknown[], T, R>(fn: (...args: A) => T,
618
655
  * );
619
656
  * ```
620
657
  */
621
- declare function fromPromise<T, R>(promise: Promise<T> | (() => Promise<T>), qualify: (cause: unknown) => R): AsyncResult<T, Exclude<R, Defect>>;
658
+ declare function fromPromise<T, R>(promise: Promise<T> | (() => Promise<T>), qualify: (cause: unknown) => R): AsyncResult$1<T, Exclude<R, Defect>>;
622
659
  /**
623
660
  * Wrap a `Promise` asserted **not** to fail in any modeled way: any rejection
624
661
  * becomes a `Defect`.
@@ -631,7 +668,7 @@ declare function fromPromise<T, R>(promise: Promise<T> | (() => Promise<T>), qua
631
668
  * @typeParam T - the resolved value type.
632
669
  * @param promise - the promise, or a thunk returning one.
633
670
  */
634
- declare function fromSafePromise<T>(promise: Promise<T> | (() => Promise<T>)): AsyncResult<T, never>;
671
+ declare function fromSafePromise<T>(promise: Promise<T> | (() => Promise<T>)): AsyncResult$1<T, never>;
635
672
  /**
636
673
  * The success channel of {@link all} / {@link allAsync}: a **positional tuple**
637
674
  * for a fixed-length input (including the empty tuple), or a homogeneous
@@ -653,7 +690,7 @@ type AllOk<Rs extends readonly unknown[], Ts extends readonly unknown[]> = numbe
653
690
  /** A record of `Result`s — the input to {@link allFromDict}. */
654
691
  type ResultRecord = Record<string, Result$1<unknown, unknown>>;
655
692
  /** A record of `AsyncResult`s — the input to {@link allFromDictAsync}. */
656
- type AsyncResultRecord = Record<string, AsyncResult<unknown, unknown>>;
693
+ type AsyncResultRecord = Record<string, AsyncResult$1<unknown, unknown>>;
657
694
  /**
658
695
  * Collect a tuple/array of {@link Result}s into a single `Result` of all their
659
696
  * success values.
@@ -707,7 +744,7 @@ declare function allFromDict<R extends ResultRecord>(results: R): Result$1<{ [K
707
744
  * await allAsync([fromSafePromise(a()), fromSafePromise(b())]);
708
745
  * ```
709
746
  */
710
- declare function allAsync<Rs extends readonly AsyncResult<unknown, unknown>[]>(results: readonly [...Rs]): AsyncResult<AllOk<Rs, { [K in keyof Rs]: AsyncOkOf<Rs[K]> }>, AsyncErrOf<Rs[number]>>;
747
+ declare function allAsync<Rs extends readonly AsyncResult$1<unknown, unknown>[]>(results: readonly [...Rs]): AsyncResult$1<AllOk<Rs, { [K in keyof Rs]: AsyncOkOf<Rs[K]> }>, AsyncErrOf<Rs[number]>>;
711
748
  /**
712
749
  * The asynchronous counterpart of {@link allFromDict}: combine a record of
713
750
  * {@link AsyncResult}s into one `AsyncResult` of a record of their values.
@@ -722,17 +759,16 @@ declare function allAsync<Rs extends readonly AsyncResult<unknown, unknown>[]>(r
722
759
  * await allFromDictAsync({ a: fromSafePromise(a()), b: fromSafePromise(b()) });
723
760
  * ```
724
761
  */
725
- declare function allFromDictAsync<R extends AsyncResultRecord>(results: R): AsyncResult<{ [K in keyof R]: AsyncOkOf<R[K]> }, AsyncErrOf<R[keyof R]>>;
762
+ declare function allFromDictAsync<R extends AsyncResultRecord>(results: R): AsyncResult$1<{ [K in keyof R]: AsyncOkOf<R[K]> }, AsyncErrOf<R[keyof R]>>;
726
763
  //#endregion
727
764
  //#region src/facade.d.ts
728
765
  /**
729
- * Companion object grouping the standalone entry points under a single,
730
- * discoverable namespace: {@link Result.Ok}, {@link Result.Err},
731
- * {@link Result.Defect}, {@link Result.fromNullable}, {@link Result.fromThrowable},
732
- * {@link Result.fromPromise}, {@link Result.fromSafePromise}, {@link Result.all},
733
- * {@link Result.allAsync}, {@link Result.allFromDict},
734
- * {@link Result.allFromDictAsync}, {@link Result.isOk}, {@link Result.isErr},
735
- * {@link Result.isDefect}.
766
+ * Companion object grouping the **`Result`-producing** entry points under a
767
+ * single, discoverable namespace: {@link Result.Ok}, {@link Result.Err},
768
+ * {@link Result.Defect}, {@link Result.Do}, {@link Result.fromNullable},
769
+ * {@link Result.fromThrowable}, {@link Result.all}, {@link Result.allFromDict},
770
+ * {@link Result.isOk}, {@link Result.isErr}, {@link Result.isDefect},
771
+ * {@link Result.isResult}.
736
772
  *
737
773
  * @remarks
738
774
  * Purely additive sugar — each member **is** the corresponding free function.
@@ -740,6 +776,10 @@ declare function allFromDictAsync<R extends AsyncResultRecord>(results: R): Asyn
740
776
  * `{ Ok }` never pulls this object in. The value `Result` and the type
741
777
  * {@link Result} share one name (the companion-object pattern).
742
778
  *
779
+ * The **async** entry points live on the sibling {@link AsyncResult} companion
780
+ * (`AsyncResult.fromPromise`, `AsyncResult.all`, …), grouped by what they
781
+ * return — a static lives in exactly one namespace.
782
+ *
743
783
  * @example
744
784
  * ```ts
745
785
  * import { Result } from "unthrown";
@@ -753,17 +793,42 @@ declare const Result: {
753
793
  readonly Do: typeof Do;
754
794
  readonly fromNullable: typeof fromNullable;
755
795
  readonly fromThrowable: typeof fromThrowable;
756
- readonly fromPromise: typeof fromPromise;
757
- readonly fromSafePromise: typeof fromSafePromise;
758
796
  readonly all: typeof all;
759
- readonly allAsync: typeof allAsync;
760
797
  readonly allFromDict: typeof allFromDict;
761
- readonly allFromDictAsync: typeof allFromDictAsync;
762
798
  readonly isOk: typeof isOk;
763
799
  readonly isErr: typeof isErr;
764
800
  readonly isDefect: typeof isDefect;
801
+ readonly isResult: typeof isResult;
765
802
  };
766
803
  type Result<T, E> = Result$1<T, E>;
804
+ /**
805
+ * Companion object grouping the **`AsyncResult`-producing** entry points under
806
+ * the matching namespace: {@link AsyncResult.fromPromise},
807
+ * {@link AsyncResult.fromSafePromise}, {@link AsyncResult.all},
808
+ * {@link AsyncResult.allFromDict}.
809
+ *
810
+ * @remarks
811
+ * The async sibling of {@link Result}. Statics are grouped by what they
812
+ * **return**, so `fromPromise`/`fromSafePromise` and the async aggregates sit
813
+ * here rather than on {@link Result}; the namespace already conveys "async", so
814
+ * the aggregates drop the `Async` suffix (`AsyncResult.all` is the free function
815
+ * `allAsync`; `AsyncResult.allFromDict` is `allFromDictAsync`). Like
816
+ * {@link Result}, the free functions remain the primary, tree-shakeable API; the
817
+ * value `AsyncResult` and the type {@link AsyncResult} share one name.
818
+ *
819
+ * @example
820
+ * ```ts
821
+ * import { AsyncResult, Defect } from "unthrown";
822
+ * const user = await AsyncResult.fromPromise(fetchUser(id), (c) => Defect(c));
823
+ * ```
824
+ */
825
+ declare const AsyncResult: {
826
+ readonly fromPromise: typeof fromPromise;
827
+ readonly fromSafePromise: typeof fromSafePromise;
828
+ readonly all: typeof allAsync;
829
+ readonly allFromDict: typeof allFromDictAsync;
830
+ };
831
+ type AsyncResult<T, E> = AsyncResult$1<T, E>;
767
832
  //#endregion
768
833
  //#region src/tagged.d.ts
769
834
  type Props = Record<string, unknown>;
@@ -885,7 +950,7 @@ declare function matchTags<T, E extends {
885
950
  }, R>(result: Result$1<T, E>, handlers: TagHandlers<T, E, R>): R;
886
951
  declare function matchTags<T, E extends {
887
952
  _tag: string;
888
- }, R>(result: AsyncResult<T, E>, handlers: TagHandlers<T, E, R>): Promise<R>;
953
+ }, R>(result: AsyncResult$1<T, E>, handlers: TagHandlers<T, E, R>): Promise<R>;
889
954
  //#endregion
890
- export { type AsyncErrOf, type AsyncOkOf, type AsyncResult, type Awaitable, Defect, type DefectView, Do, Err, type ErrOf, type ErrView, Ok, type OkOf, type OkView, Result, type TagHandlers, TaggedError, type TaggedErrorConstructor, type TaggedErrorInstance, UnwrapError, all, allAsync, allFromDict, allFromDictAsync, fromNullable, fromPromise, fromSafePromise, fromThrowable, isDefect, isErr, isOk, matchTags };
955
+ export { type AsyncErrOf, type AsyncOkOf, AsyncResult, type Awaitable, Defect, type DefectView, Do, Err, type ErrOf, type ErrView, Ok, type OkOf, type OkView, Result, type TagHandlers, TaggedError, type TaggedErrorConstructor, type TaggedErrorInstance, UnwrapError, all, allAsync, allFromDict, allFromDictAsync, fromNullable, fromPromise, fromSafePromise, fromThrowable, isDefect, isErr, isOk, isResult, matchTags };
891
956
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/constructors.ts","../src/core.ts","../src/defect.ts","../src/do.ts","../src/interop.ts","../src/facade.ts","../src/tagged.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/constructors.ts","../src/core.ts","../src/defect.ts","../src/do.ts","../src/interop.ts","../src/facade.ts","../src/tagged.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -126,6 +126,15 @@ var Res = class {
126
126
  return defectRes(cause);
127
127
  }
128
128
  }
129
+ flatTapErr(f) {
130
+ if (this.tag !== "Err") return this;
131
+ try {
132
+ const r = f(this.error);
133
+ return r.tag === "Ok" ? this : passThrough(r);
134
+ } catch (cause) {
135
+ return defectRes(cause);
136
+ }
137
+ }
129
138
  recoverDefect(f) {
130
139
  if (this.tag !== "Defect") return this;
131
140
  try {
@@ -231,6 +240,21 @@ function defectRes(cause) {
231
240
  });
232
241
  }
233
242
  /**
243
+ * Type guard: is `x` a {@link Result} (any of `Ok` / `Err` / `Defect`)?
244
+ *
245
+ * @remarks
246
+ * Unlike {@link isOk} / {@link isErr} / {@link isDefect}, which narrow a value
247
+ * already known to be a `Result`, this narrows from `unknown` — useful at an
248
+ * untyped boundary. It checks the value carries the `Result` prototype, so a
249
+ * look-alike plain object (`{ tag: "Ok" }`) is **not** matched. An `AsyncResult`
250
+ * is not a `Result` and returns `false`.
251
+ *
252
+ * @returns `true` when `x` is a `Result` produced by this library.
253
+ */
254
+ function isResult(x) {
255
+ return x instanceof Res;
256
+ }
257
+ /**
234
258
  * Reuse a non-matching variant (an `Err` or `Defect`) as a differently-typed
235
259
  * `Result`, with no runtime work. Sound because the passed-through variant
236
260
  * carries no value of the changed success type, so retyping it is a no-op — only
@@ -394,6 +418,17 @@ var AsyncRes = class AsyncRes {
394
418
  }
395
419
  }));
396
420
  }
421
+ flatTapErr(f) {
422
+ return new AsyncRes(this.promise.then(async (r) => {
423
+ if (r.tag !== "Err") return passThrough(r);
424
+ try {
425
+ const inner = await f(r.error);
426
+ return inner.tag === "Ok" ? passThrough(r) : passThrough(inner);
427
+ } catch (cause) {
428
+ return defectRes(cause);
429
+ }
430
+ }));
431
+ }
397
432
  recoverDefect(f) {
398
433
  return new AsyncRes(this.promise.then(async (r) => {
399
434
  if (r.tag !== "Defect") return r;
@@ -809,13 +844,12 @@ function allFromDictAsync(results) {
809
844
  //#endregion
810
845
  //#region src/facade.ts
811
846
  /**
812
- * Companion object grouping the standalone entry points under a single,
813
- * discoverable namespace: {@link Result.Ok}, {@link Result.Err},
814
- * {@link Result.Defect}, {@link Result.fromNullable}, {@link Result.fromThrowable},
815
- * {@link Result.fromPromise}, {@link Result.fromSafePromise}, {@link Result.all},
816
- * {@link Result.allAsync}, {@link Result.allFromDict},
817
- * {@link Result.allFromDictAsync}, {@link Result.isOk}, {@link Result.isErr},
818
- * {@link Result.isDefect}.
847
+ * Companion object grouping the **`Result`-producing** entry points under a
848
+ * single, discoverable namespace: {@link Result.Ok}, {@link Result.Err},
849
+ * {@link Result.Defect}, {@link Result.Do}, {@link Result.fromNullable},
850
+ * {@link Result.fromThrowable}, {@link Result.all}, {@link Result.allFromDict},
851
+ * {@link Result.isOk}, {@link Result.isErr}, {@link Result.isDefect},
852
+ * {@link Result.isResult}.
819
853
  *
820
854
  * @remarks
821
855
  * Purely additive sugar — each member **is** the corresponding free function.
@@ -823,6 +857,10 @@ function allFromDictAsync(results) {
823
857
  * `{ Ok }` never pulls this object in. The value `Result` and the type
824
858
  * {@link Result} share one name (the companion-object pattern).
825
859
  *
860
+ * The **async** entry points live on the sibling {@link AsyncResult} companion
861
+ * (`AsyncResult.fromPromise`, `AsyncResult.all`, …), grouped by what they
862
+ * return — a static lives in exactly one namespace.
863
+ *
826
864
  * @example
827
865
  * ```ts
828
866
  * import { Result } from "unthrown";
@@ -836,15 +874,39 @@ const Result = {
836
874
  Do,
837
875
  fromNullable,
838
876
  fromThrowable,
839
- fromPromise,
840
- fromSafePromise,
841
877
  all,
842
- allAsync,
843
878
  allFromDict,
844
- allFromDictAsync,
845
879
  isOk,
846
880
  isErr,
847
- isDefect
881
+ isDefect,
882
+ isResult
883
+ };
884
+ /**
885
+ * Companion object grouping the **`AsyncResult`-producing** entry points under
886
+ * the matching namespace: {@link AsyncResult.fromPromise},
887
+ * {@link AsyncResult.fromSafePromise}, {@link AsyncResult.all},
888
+ * {@link AsyncResult.allFromDict}.
889
+ *
890
+ * @remarks
891
+ * The async sibling of {@link Result}. Statics are grouped by what they
892
+ * **return**, so `fromPromise`/`fromSafePromise` and the async aggregates sit
893
+ * here rather than on {@link Result}; the namespace already conveys "async", so
894
+ * the aggregates drop the `Async` suffix (`AsyncResult.all` is the free function
895
+ * `allAsync`; `AsyncResult.allFromDict` is `allFromDictAsync`). Like
896
+ * {@link Result}, the free functions remain the primary, tree-shakeable API; the
897
+ * value `AsyncResult` and the type {@link AsyncResult} share one name.
898
+ *
899
+ * @example
900
+ * ```ts
901
+ * import { AsyncResult, Defect } from "unthrown";
902
+ * const user = await AsyncResult.fromPromise(fetchUser(id), (c) => Defect(c));
903
+ * ```
904
+ */
905
+ const AsyncResult = {
906
+ fromPromise,
907
+ fromSafePromise,
908
+ all: allAsync,
909
+ allFromDict: allFromDictAsync
848
910
  };
849
911
  //#endregion
850
912
  //#region src/tagged.ts
@@ -914,6 +976,6 @@ function matchTags(result, handlers) {
914
976
  });
915
977
  }
916
978
  //#endregion
917
- export { Defect, Do, Err, Ok, Result, TaggedError, UnwrapError, all, allAsync, allFromDict, allFromDictAsync, fromNullable, fromPromise, fromSafePromise, fromThrowable, isDefect, isErr, isOk, matchTags };
979
+ export { AsyncResult, Defect, Do, Err, Ok, Result, TaggedError, UnwrapError, all, allAsync, allFromDict, allFromDictAsync, fromNullable, fromPromise, fromSafePromise, fromThrowable, isDefect, isErr, isOk, isResult, matchTags };
918
980
 
919
981
  //# sourceMappingURL=index.mjs.map