unthrown 5.0.0-beta.2 → 5.0.0-beta.4
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.cjs +19 -14
- package/dist/index.d.cts +43 -38
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +43 -38
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +19 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -152,7 +152,7 @@ var Res = class {
|
|
|
152
152
|
return defectRes(cause);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
|
|
155
|
+
mapErrCases(f) {
|
|
156
156
|
if (this.tag !== "Err") return passThrough(this);
|
|
157
157
|
try {
|
|
158
158
|
const out = runMatch(f, this.error);
|
|
@@ -162,7 +162,7 @@ var Res = class {
|
|
|
162
162
|
return defectRes(cause);
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
-
|
|
165
|
+
flatMapErrCases(f) {
|
|
166
166
|
if (this.tag !== "Err") return passThrough(this);
|
|
167
167
|
try {
|
|
168
168
|
const out = runMatch(f, this.error);
|
|
@@ -173,7 +173,7 @@ var Res = class {
|
|
|
173
173
|
return defectRes(cause);
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
|
|
176
|
+
recoverErrCases(f) {
|
|
177
177
|
if (this.tag !== "Err") return passThrough(this);
|
|
178
178
|
try {
|
|
179
179
|
const out = runMatch(f, this.error);
|
|
@@ -183,7 +183,7 @@ var Res = class {
|
|
|
183
183
|
return defectRes(cause);
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
|
|
186
|
+
tapErrCases(f) {
|
|
187
187
|
if (this.tag !== "Err") return this;
|
|
188
188
|
try {
|
|
189
189
|
runMatch(f, this.error);
|
|
@@ -192,7 +192,7 @@ var Res = class {
|
|
|
192
192
|
return observerThrowToDefect(cause, this.error);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
|
|
195
|
+
flatTapErrCases(f) {
|
|
196
196
|
if (this.tag !== "Err") return this;
|
|
197
197
|
try {
|
|
198
198
|
const r = runMatch(f, this.error);
|
|
@@ -410,7 +410,7 @@ function runMatch(f, error) {
|
|
|
410
410
|
return f((0, ts_pattern.match)(error), defect).run();
|
|
411
411
|
}
|
|
412
412
|
/**
|
|
413
|
-
* A throw inside a *failure observer* (`
|
|
413
|
+
* A throw inside a *failure observer* (`tapErrCases` / `tapDefect` / `flatTapErrCases`)
|
|
414
414
|
* must not destroy the failure being observed — that is the exact place (e.g. a
|
|
415
415
|
* failing error-logger) where losing the underlying failure hurts most. The
|
|
416
416
|
* resulting Defect aggregates both: `errors[0]` is the observer's throw,
|
|
@@ -547,7 +547,7 @@ var AsyncRes = class AsyncRes {
|
|
|
547
547
|
}
|
|
548
548
|
}));
|
|
549
549
|
}
|
|
550
|
-
|
|
550
|
+
mapErrCases(f) {
|
|
551
551
|
return new AsyncRes(this.#promise.then((r) => {
|
|
552
552
|
if (r.tag !== "Err") return passThrough(r);
|
|
553
553
|
try {
|
|
@@ -559,7 +559,7 @@ var AsyncRes = class AsyncRes {
|
|
|
559
559
|
}
|
|
560
560
|
}));
|
|
561
561
|
}
|
|
562
|
-
|
|
562
|
+
flatMapErrCases(f) {
|
|
563
563
|
return new AsyncRes(this.#promise.then(async (r) => {
|
|
564
564
|
if (r.tag !== "Err") return passThrough(r);
|
|
565
565
|
try {
|
|
@@ -573,7 +573,7 @@ var AsyncRes = class AsyncRes {
|
|
|
573
573
|
}
|
|
574
574
|
}));
|
|
575
575
|
}
|
|
576
|
-
|
|
576
|
+
recoverErrCases(f) {
|
|
577
577
|
return new AsyncRes(this.#promise.then((r) => {
|
|
578
578
|
if (r.tag !== "Err") return passThrough(r);
|
|
579
579
|
try {
|
|
@@ -585,7 +585,7 @@ var AsyncRes = class AsyncRes {
|
|
|
585
585
|
}
|
|
586
586
|
}));
|
|
587
587
|
}
|
|
588
|
-
|
|
588
|
+
tapErrCases(f) {
|
|
589
589
|
return new AsyncRes(this.#promise.then((r) => {
|
|
590
590
|
if (r.tag !== "Err") return r;
|
|
591
591
|
try {
|
|
@@ -596,7 +596,7 @@ var AsyncRes = class AsyncRes {
|
|
|
596
596
|
}
|
|
597
597
|
}));
|
|
598
598
|
}
|
|
599
|
-
|
|
599
|
+
flatTapErrCases(f) {
|
|
600
600
|
return new AsyncRes(this.#promise.then(async (r) => {
|
|
601
601
|
if (r.tag !== "Err") return passThrough(r);
|
|
602
602
|
try {
|
|
@@ -1006,6 +1006,11 @@ function fromSafeThrowable(fn) {
|
|
|
1006
1006
|
* @param promise - the promise, or a thunk returning one.
|
|
1007
1007
|
* @param qualify - triages a rejection `cause` into a modeled `E`, or marks it
|
|
1008
1008
|
* unmodeled by returning `defect(cause)` (the helper passed as its second arg).
|
|
1009
|
+
* @param _guard - compile-time only; never pass it. The phantom rest-tuple that
|
|
1010
|
+
* enforces "qualify is synchronous": an `async` qualify makes this demand an
|
|
1011
|
+
* impossible extra argument (whose type spells out the error), while a
|
|
1012
|
+
* synchronous one leaves it empty. Encoded here — not on `qualify`'s return
|
|
1013
|
+
* type — so `T`'s inference from `promise` is undisturbed.
|
|
1009
1014
|
*
|
|
1010
1015
|
* @category Interop
|
|
1011
1016
|
*
|
|
@@ -1022,7 +1027,7 @@ function fromSafeThrowable(fn) {
|
|
|
1022
1027
|
* // when fetchUser rejects with NotFoundError: user is Err("not_found")
|
|
1023
1028
|
* ```
|
|
1024
1029
|
*/
|
|
1025
|
-
function fromPromise(promise, qualify) {
|
|
1030
|
+
function fromPromise(promise, qualify, ..._guard) {
|
|
1026
1031
|
const triage = qualify;
|
|
1027
1032
|
return new AsyncRes((typeof promise === "function" ? Promise.resolve().then(promise) : Promise.resolve(promise)).then((value) => okRes(value), (cause) => qualifyToResult(cause, triage)));
|
|
1028
1033
|
}
|
|
@@ -1337,7 +1342,7 @@ const AsyncResult = {
|
|
|
1337
1342
|
* *narrowing* structured field.
|
|
1338
1343
|
*
|
|
1339
1344
|
* `_tag` is the discriminant matched by {@link tag} in the error combinators
|
|
1340
|
-
* (`result.
|
|
1345
|
+
* (`result.mapErrCases((matcher) => matcher.with(tag("NotFound"), …))`) and in
|
|
1341
1346
|
* `match`; `Error.name` is the human-facing label in stack traces and logs. By
|
|
1342
1347
|
* default they coincide, but
|
|
1343
1348
|
* they can be **decoupled** with `options.name` — so a tag can be namespaced for
|
|
@@ -1411,7 +1416,7 @@ function TaggedError(tag, options) {
|
|
|
1411
1416
|
*
|
|
1412
1417
|
* @example
|
|
1413
1418
|
* ```ts
|
|
1414
|
-
* result.
|
|
1419
|
+
* result.mapErrCases((matcher) =>
|
|
1415
1420
|
* matcher
|
|
1416
1421
|
* .with(tag("NotFound"), () => new NotFoundException())
|
|
1417
1422
|
* .with(tag("Conflict"), (e) => new ConflictException(e.key)),
|
package/dist/index.d.cts
CHANGED
|
@@ -99,7 +99,7 @@ type MatchOut<M> = M extends ExhaustiveMatch<infer O> ? O : never;
|
|
|
99
99
|
type MatchErrOut<M> = Exclude<MatchOut<M>, Defect>;
|
|
100
100
|
/**
|
|
101
101
|
* The fluent method surface every {@link Result} variant carries — the
|
|
102
|
-
* combinators (`map`, `flatMap`, `
|
|
102
|
+
* combinators (`map`, `flatMap`, `mapErrCases`, `match`, `get`, …), documented one
|
|
103
103
|
* per entry below. Factored out so the three variants ({@link OkView},
|
|
104
104
|
* {@link ErrView}, {@link DefectView}) can each intersect it; {@link AsyncResult}
|
|
105
105
|
* mirrors this surface with async signatures.
|
|
@@ -272,7 +272,7 @@ type ResultMethods<out T, out E> = {
|
|
|
272
272
|
* @remarks
|
|
273
273
|
* The callback receives `match(error)` (an {@link ErrMatcher}) and the
|
|
274
274
|
* injected `defect` helper. Chain `.with(pattern, handler)` and **return the
|
|
275
|
-
* un-terminated builder** — `
|
|
275
|
+
* un-terminated builder** — `mapErrCases` calls `.exhaustive()` itself, so a
|
|
276
276
|
* missing case is a compile error at the call site (there is no `.exhaustive()`
|
|
277
277
|
* to forget, and no way to slip in `.otherwise()`). The outgoing error type is
|
|
278
278
|
* the union of the branch returns with the `Defect` arm subtracted
|
|
@@ -287,7 +287,7 @@ type ResultMethods<out T, out E> = {
|
|
|
287
287
|
* @typeParam M - the exhaustive builder the callback returns.
|
|
288
288
|
* @param f - builds the match over the error (returns the un-terminated builder).
|
|
289
289
|
*/
|
|
290
|
-
|
|
290
|
+
mapErrCases<M extends ExhaustiveMatch<unknown>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): Result$1<T, MatchErrOut<M>>;
|
|
291
291
|
/**
|
|
292
292
|
* Sequence from an `Err` by producing another `Result` — the error-channel
|
|
293
293
|
* mirror of {@link ResultMethods.flatMap | flatMap}, **matching the error
|
|
@@ -300,7 +300,7 @@ type ResultMethods<out T, out E> = {
|
|
|
300
300
|
* @typeParam M - the exhaustive builder the callback returns.
|
|
301
301
|
* @param f - builds the match; each branch produces a fallback `Result`.
|
|
302
302
|
*/
|
|
303
|
-
|
|
303
|
+
flatMapErrCases<M extends ExhaustiveMatch<Result$1<unknown, unknown> | Defect>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): Result$1<T | OkOf<MatchOut<M>>, ErrOf<MatchOut<M>>>;
|
|
304
304
|
/**
|
|
305
305
|
* Recover from an `Err` by producing a success value, emptying the error
|
|
306
306
|
* channel — **matching the error exhaustively** ({@link ErrMatcher}). Pairs
|
|
@@ -315,7 +315,7 @@ type ResultMethods<out T, out E> = {
|
|
|
315
315
|
* @typeParam M - the exhaustive builder the callback returns.
|
|
316
316
|
* @param f - builds the match; each branch produces a success value.
|
|
317
317
|
*/
|
|
318
|
-
|
|
318
|
+
recoverErrCases<M extends ExhaustiveMatch<unknown>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): Result$1<T | MatchErrOut<M>, never>;
|
|
319
319
|
/**
|
|
320
320
|
* Run a side effect on the error — **matched exhaustively** ({@link ErrMatcher})
|
|
321
321
|
* — and pass the `Result` through unchanged.
|
|
@@ -330,11 +330,11 @@ type ResultMethods<out T, out E> = {
|
|
|
330
330
|
* because the branch results are discarded, a returned `Promise` would float
|
|
331
331
|
* unobserved and its rejection would vanish. A failable
|
|
332
332
|
* `Result`-returning effect belongs in
|
|
333
|
-
* {@link ResultMethods.
|
|
333
|
+
* {@link ResultMethods.flatTapErrCases | flatTapErrCases}.
|
|
334
334
|
*
|
|
335
335
|
* @param f - builds the match; branch returns are ignored.
|
|
336
336
|
*/
|
|
337
|
-
|
|
337
|
+
tapErrCases<R>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => ExhaustiveMatch<R & NotThenable<R>>): Result$1<T, E>;
|
|
338
338
|
/**
|
|
339
339
|
* Run a **failable** side effect on the error, keeping the original error but
|
|
340
340
|
* threading the effect's own error — **matched exhaustively**
|
|
@@ -353,7 +353,7 @@ type ResultMethods<out T, out E> = {
|
|
|
353
353
|
* @typeParam M - the exhaustive builder the callback returns.
|
|
354
354
|
* @param f - builds the match; each branch is a failable effect (its `Ok` is ignored).
|
|
355
355
|
*/
|
|
356
|
-
|
|
356
|
+
flatTapErrCases<E2>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => ExhaustiveMatch<Result$1<unknown, E2>>): Result$1<T, E | E2>;
|
|
357
357
|
/**
|
|
358
358
|
* Recover from a `Defect` — the **only** combinator that can touch one.
|
|
359
359
|
*
|
|
@@ -382,7 +382,7 @@ type ResultMethods<out T, out E> = {
|
|
|
382
382
|
* Run a side effect on **any failure** — `Err` or `Defect` — and pass the
|
|
383
383
|
* `Result` through unchanged. The one cross-channel observer, for the shared
|
|
384
384
|
* "it went KO" concern (logging, metrics, rollback) that would otherwise be
|
|
385
|
-
* duplicated across {@link ResultMethods.
|
|
385
|
+
* duplicated across {@link ResultMethods.tapErrCases | tapErrCases} and
|
|
386
386
|
* {@link ResultMethods.tapDefect | tapDefect}.
|
|
387
387
|
*
|
|
388
388
|
* @remarks
|
|
@@ -393,7 +393,7 @@ type ResultMethods<out T, out E> = {
|
|
|
393
393
|
* treat it opaquely for a shared logger. Runs on `Err` and `Defect`; `Ok`
|
|
394
394
|
* passes through. It **observes without consuming**: the failure flows on
|
|
395
395
|
* unchanged — to also recover, use
|
|
396
|
-
* {@link ResultMethods.
|
|
396
|
+
* {@link ResultMethods.recoverErrCases | recoverErrCases} /
|
|
397
397
|
* {@link ResultMethods.recoverDefect | recoverDefect} (deliberately separate
|
|
398
398
|
* acts) or {@link ResultMethods.match | match} at the edge. If `f` throws, the
|
|
399
399
|
* result is a `Defect` whose cause is an `AggregateError` of `[thrown,
|
|
@@ -437,7 +437,7 @@ type ResultMethods<out T, out E> = {
|
|
|
437
437
|
*
|
|
438
438
|
* @remarks
|
|
439
439
|
* Compiles only when the error channel is empty (`E = never`) — eliminate
|
|
440
|
-
* modeled errors first (`match` / `
|
|
440
|
+
* modeled errors first (`match` / `recoverErrCases` / `flatMapErrCases`), or reach for the
|
|
441
441
|
* `getOr` / `getOrElse` / `getOrNull` / `getOrUndefined` family (which
|
|
442
442
|
* recover an `Err`). If you get a `'this' context` type error here, that is
|
|
443
443
|
* the gate: the receiver still has a non-`never` error channel.
|
|
@@ -501,8 +501,8 @@ type ResultMethods<out T, out E> = {
|
|
|
501
501
|
* `throw` behind a method, so a `no-throw` lint rule can ban raw throws while
|
|
502
502
|
* this one sanctioned extraction remains — _not_ to replace principled
|
|
503
503
|
* handling. When you can keep the error a value, prefer
|
|
504
|
-
* {@link ResultMethods.match | match} / {@link ResultMethods.
|
|
505
|
-
* {@link ResultMethods.
|
|
504
|
+
* {@link ResultMethods.match | match} / {@link ResultMethods.recoverErrCases | recoverErrCases} /
|
|
505
|
+
* {@link ResultMethods.flatMapErrCases | flatMapErrCases}.
|
|
506
506
|
*
|
|
507
507
|
* Type-gated as the **complement** of {@link ResultMethods.get | get}: it
|
|
508
508
|
* compiles only when the error channel is **non-empty** (`E` is not `never`) —
|
|
@@ -537,10 +537,10 @@ type ResultMethods<out T, out E> = {
|
|
|
537
537
|
*
|
|
538
538
|
* @category Types
|
|
539
539
|
*/
|
|
540
|
-
|
|
540
|
+
interface OkView<out T, out E = never> extends ResultMethods<T, E> {
|
|
541
541
|
readonly tag: "Ok";
|
|
542
542
|
readonly value: T;
|
|
543
|
-
}
|
|
543
|
+
}
|
|
544
544
|
/**
|
|
545
545
|
* The `Err` variant of a {@link Result}: a modeled failure carrying an `error`.
|
|
546
546
|
* This is what a successful `isErr` guard narrows to, exposing `.error`. It also
|
|
@@ -561,10 +561,10 @@ type OkView<T, E = never> = ResultMethods<T, E> & {
|
|
|
561
561
|
*
|
|
562
562
|
* @category Types
|
|
563
563
|
*/
|
|
564
|
-
|
|
564
|
+
interface ErrView<out E, out T = never> extends ResultMethods<T, E> {
|
|
565
565
|
readonly tag: "Err";
|
|
566
566
|
readonly error: E;
|
|
567
|
-
}
|
|
567
|
+
}
|
|
568
568
|
/**
|
|
569
569
|
* The `Defect` variant of a {@link Result}: an unmodeled failure carrying a
|
|
570
570
|
* `cause`. This is what a successful `isDefect` guard narrows to, exposing
|
|
@@ -577,10 +577,10 @@ type ErrView<E, T = never> = ResultMethods<T, E> & {
|
|
|
577
577
|
*
|
|
578
578
|
* @category Types
|
|
579
579
|
*/
|
|
580
|
-
|
|
580
|
+
interface DefectView<out T = never, out E = never> extends ResultMethods<T, E> {
|
|
581
581
|
readonly tag: "Defect";
|
|
582
582
|
readonly cause: unknown;
|
|
583
|
-
}
|
|
583
|
+
}
|
|
584
584
|
/**
|
|
585
585
|
* A failure variant of a {@link Result}: an {@link ErrView} **or** a
|
|
586
586
|
* {@link DefectView}. This is what a `tapFailure` callback receives — the
|
|
@@ -666,7 +666,7 @@ type Awaitable<out T> = {
|
|
|
666
666
|
};
|
|
667
667
|
/**
|
|
668
668
|
* The async method surface every {@link AsyncResult} carries — the combinators
|
|
669
|
-
* (`map`, `flatMap`, `
|
|
669
|
+
* (`map`, `flatMap`, `mapErrCases`, `match`, `get`, …) with their asynchronous
|
|
670
670
|
* signatures, documented one per entry below. The async mirror of
|
|
671
671
|
* {@link ResultMethods}: each entry links its synchronous counterpart and states
|
|
672
672
|
* only the async delta.
|
|
@@ -756,24 +756,24 @@ type AsyncResultMethods<out T, out E> = {
|
|
|
756
756
|
/** Boolean form of the asynchronous {@link ResultMethods.ensure | ensure} — validates without refining, keeping `T`. */
|
|
757
757
|
ensure<E2>(predicate: (value: T) => boolean, onFail: (value: T) => E2 & NotThenable<E2>): AsyncResult$1<T, E | E2>;
|
|
758
758
|
/**
|
|
759
|
-
* Asynchronous {@link ResultMethods.
|
|
759
|
+
* Asynchronous {@link ResultMethods.mapErrCases | mapErrCases} — the same exhaustive
|
|
760
760
|
* {@link ErrMatcher} form; the combinator calls `.exhaustive()`.
|
|
761
761
|
*/
|
|
762
|
-
|
|
762
|
+
mapErrCases<M extends ExhaustiveMatch<unknown>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): AsyncResult$1<T, MatchErrOut<M>>;
|
|
763
763
|
/**
|
|
764
|
-
* Asynchronous {@link ResultMethods.
|
|
764
|
+
* Asynchronous {@link ResultMethods.flatMapErrCases | flatMapErrCases} — the same
|
|
765
765
|
* exhaustive {@link ErrMatcher} form. Unlike the sync form, a branch may
|
|
766
766
|
* return a `Result` **or** an `AsyncResult`.
|
|
767
767
|
*/
|
|
768
|
-
|
|
768
|
+
flatMapErrCases<M extends ExhaustiveMatch<Result$1<unknown, unknown> | AsyncResult$1<unknown, unknown> | Defect>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): AsyncResult$1<T | OkOf<MatchOut<M>> | AsyncOkOf<MatchOut<M>>, ErrOf<MatchOut<M>> | AsyncErrOf<MatchOut<M>>>;
|
|
769
769
|
/**
|
|
770
|
-
* Asynchronous {@link ResultMethods.
|
|
770
|
+
* Asynchronous {@link ResultMethods.recoverErrCases | recoverErrCases} — the same
|
|
771
771
|
* exhaustive {@link ErrMatcher} form. Branches are synchronous; a throw
|
|
772
772
|
* becomes a `Defect`.
|
|
773
773
|
*/
|
|
774
|
-
|
|
774
|
+
recoverErrCases<M extends ExhaustiveMatch<unknown>>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => M): AsyncResult$1<T | MatchErrOut<M>, never>;
|
|
775
775
|
/**
|
|
776
|
-
* Asynchronous {@link ResultMethods.
|
|
776
|
+
* Asynchronous {@link ResultMethods.tapErrCases | tapErrCases}. `f` is synchronous; if it
|
|
777
777
|
* throws, the result is a `Defect` whose cause is an `AggregateError` of
|
|
778
778
|
* `[thrown, original failure]` — observing a failure never destroys it. An
|
|
779
779
|
* async branch is rejected at compile time ({@link NotThenable} on the
|
|
@@ -781,18 +781,18 @@ type AsyncResultMethods<out T, out E> = {
|
|
|
781
781
|
* would float unobserved. The
|
|
782
782
|
* {@link AsyncResultMethods.tap | tap} fire-and-forget caveat applies here
|
|
783
783
|
* too — a failable effect belongs in
|
|
784
|
-
* {@link AsyncResultMethods.
|
|
784
|
+
* {@link AsyncResultMethods.flatTapErrCases | flatTapErrCases}.
|
|
785
785
|
*/
|
|
786
|
-
|
|
786
|
+
tapErrCases<R>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => ExhaustiveMatch<R & NotThenable<R>>): AsyncResult$1<T, E>;
|
|
787
787
|
/**
|
|
788
|
-
* Asynchronous {@link ResultMethods.
|
|
788
|
+
* Asynchronous {@link ResultMethods.flatTapErrCases | flatTapErrCases} — the
|
|
789
789
|
* error-channel mirror of `flatTap`. `f` may return a `Result` **or** an
|
|
790
790
|
* `AsyncResult`; its `Ok` value is discarded, an `Err`/`Defect` from `f`
|
|
791
791
|
* threads through, and if `f` throws, the result is a `Defect` whose cause is
|
|
792
792
|
* an `AggregateError` of `[thrown, original failure]` — observing a failure
|
|
793
793
|
* never destroys it.
|
|
794
794
|
*/
|
|
795
|
-
|
|
795
|
+
flatTapErrCases<E2>(f: (matcher: ErrMatcher<E>, defect: (cause: unknown) => Defect) => ExhaustiveMatch<Result$1<unknown, E2> | AsyncResult$1<unknown, E2>>): AsyncResult$1<T, E | E2>;
|
|
796
796
|
/**
|
|
797
797
|
* Asynchronous {@link ResultMethods.recoverDefect | recoverDefect}. `f` may
|
|
798
798
|
* return a `Result` or an `AsyncResult`.
|
|
@@ -864,7 +864,7 @@ type AsyncResultMethods<out T, out E> = {
|
|
|
864
864
|
* {@link fromPromise} forces. To do further async work, re-enter through a
|
|
865
865
|
* qualified boundary and compose it: `ar.flatMap((v) => fromPromise(work(v),
|
|
866
866
|
* qualify))`. The eliminators (`get`, …) return promises; the binds
|
|
867
|
-
* (`flatMap`, `flatTap`, `
|
|
867
|
+
* (`flatMap`, `flatTap`, `flatMapErrCases`, `recoverDefect`) additionally accept an
|
|
868
868
|
* `AsyncResult`. Its combinators are documented one per entry on
|
|
869
869
|
* {@link AsyncResultMethods}.
|
|
870
870
|
*
|
|
@@ -873,7 +873,7 @@ type AsyncResultMethods<out T, out E> = {
|
|
|
873
873
|
* @typeParam T - the success value type.
|
|
874
874
|
* @typeParam E - the modeled error type.
|
|
875
875
|
*/
|
|
876
|
-
|
|
876
|
+
interface AsyncResult$1<out T, out E> extends Awaitable<Result$1<T, E>>, AsyncResultMethods<T, E> {}
|
|
877
877
|
/**
|
|
878
878
|
* Extract the success type `T` from a `Result` type — derive one type from
|
|
879
879
|
* another instead of restating it (e.g. the payload a function returns).
|
|
@@ -1375,6 +1375,11 @@ declare function fromSafeThrowable<A extends unknown[], T>(fn: (...args: A) => T
|
|
|
1375
1375
|
* @param promise - the promise, or a thunk returning one.
|
|
1376
1376
|
* @param qualify - triages a rejection `cause` into a modeled `E`, or marks it
|
|
1377
1377
|
* unmodeled by returning `defect(cause)` (the helper passed as its second arg).
|
|
1378
|
+
* @param _guard - compile-time only; never pass it. The phantom rest-tuple that
|
|
1379
|
+
* enforces "qualify is synchronous": an `async` qualify makes this demand an
|
|
1380
|
+
* impossible extra argument (whose type spells out the error), while a
|
|
1381
|
+
* synchronous one leaves it empty. Encoded here — not on `qualify`'s return
|
|
1382
|
+
* type — so `T`'s inference from `promise` is undisturbed.
|
|
1378
1383
|
*
|
|
1379
1384
|
* @category Interop
|
|
1380
1385
|
*
|
|
@@ -1391,7 +1396,7 @@ declare function fromSafeThrowable<A extends unknown[], T>(fn: (...args: A) => T
|
|
|
1391
1396
|
* // when fetchUser rejects with NotFoundError: user is Err("not_found")
|
|
1392
1397
|
* ```
|
|
1393
1398
|
*/
|
|
1394
|
-
declare function fromPromise<T, R>(promise: Promise<T> | (() => Promise<T>), qualify: (cause: unknown, defect: (cause: unknown) => Defect) => R
|
|
1399
|
+
declare function fromPromise<T, R>(promise: Promise<T> | (() => Promise<T>), qualify: (cause: unknown, defect: (cause: unknown) => Defect) => R, ..._guard: [Extract<R, PromiseLike<unknown>>] extends [never] ? [] : ["unthrown: qualify must be synchronous — its Promise would land in E un-triaged"]): AsyncResult$1<T, Exclude<R, Defect>>;
|
|
1395
1400
|
/**
|
|
1396
1401
|
* Wrap a `Promise` asserted **not** to fail in any modeled way: any rejection
|
|
1397
1402
|
* becomes a `Defect`.
|
|
@@ -1578,7 +1583,7 @@ declare const Result: {
|
|
|
1578
1583
|
* alias. Its fluent combinators (`map`, `flatMap`, `match`, `get`, …) are
|
|
1579
1584
|
* documented one per entry on {@link ResultMethods} — the shared method surface
|
|
1580
1585
|
* every variant carries. For "which one do I reach for?", see the
|
|
1581
|
-
* [Choosing a combinator](/
|
|
1586
|
+
* [Choosing a combinator](/reference/combinators) guide.
|
|
1582
1587
|
*
|
|
1583
1588
|
* @category Facade
|
|
1584
1589
|
*/
|
|
@@ -1629,7 +1634,7 @@ declare const AsyncResult: {
|
|
|
1629
1634
|
* `AsyncResult` carries the async fluent surface; its combinators (`map`,
|
|
1630
1635
|
* `flatMap`, `match`, `get`, …) are documented one per entry — with their
|
|
1631
1636
|
* async signatures — on {@link AsyncResultMethods}. For "which one do I reach
|
|
1632
|
-
* for?", see the [Choosing a combinator](/
|
|
1637
|
+
* for?", see the [Choosing a combinator](/reference/combinators) guide.
|
|
1633
1638
|
*
|
|
1634
1639
|
* @category Facade
|
|
1635
1640
|
*/
|
|
@@ -1699,7 +1704,7 @@ type TaggedErrorConstructor<Tag extends string> = {
|
|
|
1699
1704
|
* *narrowing* structured field.
|
|
1700
1705
|
*
|
|
1701
1706
|
* `_tag` is the discriminant matched by {@link tag} in the error combinators
|
|
1702
|
-
* (`result.
|
|
1707
|
+
* (`result.mapErrCases((matcher) => matcher.with(tag("NotFound"), …))`) and in
|
|
1703
1708
|
* `match`; `Error.name` is the human-facing label in stack traces and logs. By
|
|
1704
1709
|
* default they coincide, but
|
|
1705
1710
|
* they can be **decoupled** with `options.name` — so a tag can be namespaced for
|
|
@@ -1751,7 +1756,7 @@ declare function TaggedError<Tag extends string>(tag: Tag, options?: {
|
|
|
1751
1756
|
*
|
|
1752
1757
|
* @example
|
|
1753
1758
|
* ```ts
|
|
1754
|
-
* result.
|
|
1759
|
+
* result.mapErrCases((matcher) =>
|
|
1755
1760
|
* matcher
|
|
1756
1761
|
* .with(tag("NotFound"), () => new NotFoundException())
|
|
1757
1762
|
* .with(tag("Conflict"), (e) => new ConflictException(e.key)),
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/defect.ts","../src/types.ts","../src/constructors.ts","../src/core.ts","../src/do.ts","../src/interop.ts","../src/facade.ts","../src/tagged.ts"],"mappings":";;cAEM;;;;;;;;;;;;;;;KAgBM;YACA;WACD;;;;;;;;;;KCRC,SAAS,QAAQ,WAAW,IAAI,EAAE;;;;;;;;;KAUlC,MAAM,GAAG,kBAAkB,KAAK,SAAS,KAAK,GAAG,iBAAiB,KAAK,IAAI;;;;;;;;;;;;;;;;;KAkB3E,YAAY,MAAM,YAAY;;;;;;;;;;;;;;KAiB9B,WAAW,KAAK,kBAAkB,QAAM;;;;;;;;;;;KAYxC,gBAAgB;EAC1B,gBAAgB;EAChB,WAAW;;;;;;;KAQD,SAAS,KAAK,UAAU,sBAAsB,KAAK;;;;;;;;;KAUnD,YAAY,KAAK,QAAQ,SAAS,IAAI;;;;;;;;;;;;;;;;;KAkBtC,kBAAkB,OAAO;;;;;;;;;;;;EAYnC,IAAI,GAAG,IAAI,OAAO,MAAM,IAAI,YAAY,KAAK,SAAO,GAAG;;;;;;;;;;;EAWvD,QAAQ,GAAG,IAAI,IAAI,OAAO,MAAM,SAAO,GAAG,MAAM,SAAO,GAAG,IAAI;;;;;;;;;;;;;;;;;;;EAmB9D,IAAI,GAAG,IAAI,OAAO,MAAM,IAAI,YAAY,KAAK,SAAO,GAAG;;;;;;;;;;;;;;;;;EAiBvD,QAAQ,IAAI,IAAI,OAAO,MAAM,kBAAgB,MAAM,SAAO,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;EAoBjE,KAAK,kBAAkB,GAAG,IACxB,MAAM,GACN,IAAI,OAAO,MAAM,SAAO,GAAG,MAC1B,SAAO,MAAM,GAAG,GAAG,IAAI,IAAI;;;;;;;;;;;;;;;;EAgB9B,IAAI,kBAAkB,GAAG,MAAM,GAAG,IAAI,OAAO,MAAM,IAAI,YAAY,KAAK,SAAO,MAAM,GAAG,GAAG,IAAI;;;;;;;;EAQ/F,GAAG,GAAG,OAAO,IAAI,SAAO,GAAG;;;;;;;;;EAS3B,WAAW,eAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCxB,OAAO,UAAU,GAAG,IAClB,YAAY,OAAO,MAAM,SAAS,GAClC,SAAS,OAAO,MAAM,KAAK,YAAY,MACtC,SAAO,GAAG,IAAI;;;;;EAKjB,OAAO,IACL,YAAY,OAAO,eACnB,SAAS,OAAO,MAAM,KAAK,YAAY,MACtC,SAAO,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;EAuBjB,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/defect.ts","../src/types.ts","../src/constructors.ts","../src/core.ts","../src/do.ts","../src/interop.ts","../src/facade.ts","../src/tagged.ts"],"mappings":"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"}
|