@zokugun/xtry 0.11.5 → 0.12.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 +118 -79
- package/lib/cjs/async.cjs +14 -9
- package/lib/cjs/async.d.cts +8 -7
- package/lib/cjs/defer.cjs +12 -12
- package/lib/cjs/defer.d.cts +9 -9
- package/lib/cjs/index.cjs +13 -8
- package/lib/cjs/index.d.cts +6 -5
- package/lib/cjs/partial.cjs +18 -18
- package/lib/cjs/partial.d.cts +16 -13
- package/lib/cjs/result.cjs +9 -9
- package/lib/cjs/result.d.cts +11 -11
- package/lib/cjs/sync.cjs +17 -12
- package/lib/cjs/sync.d.cts +9 -8
- package/lib/cjs/try.cjs +46 -42
- package/lib/cjs/try.d.cts +4 -4
- package/lib/cjs/tryify.cjs +5 -0
- package/lib/cjs/tryify.d.cts +22 -22
- package/lib/cjs/unwrap.cjs +43 -0
- package/lib/cjs/unwrap.d.cts +8 -0
- package/lib/cjs/utils/is-promise-like.d.cts +1 -1
- package/lib/cjs/utils/types.d.cts +2 -2
- package/lib/esm/async.d.mts +8 -7
- package/lib/esm/async.mjs +5 -4
- package/lib/esm/defer.d.mts +9 -9
- package/lib/esm/defer.mjs +12 -12
- package/lib/esm/index.d.mts +6 -5
- package/lib/esm/index.mjs +3 -2
- package/lib/esm/partial.d.mts +16 -13
- package/lib/esm/partial.mjs +15 -15
- package/lib/esm/result.d.mts +11 -11
- package/lib/esm/result.mjs +8 -8
- package/lib/esm/sync.d.mts +9 -8
- package/lib/esm/sync.mjs +6 -5
- package/lib/esm/try.d.mts +4 -4
- package/lib/esm/try.mjs +44 -40
- package/lib/esm/tryify.d.mts +22 -22
- package/lib/esm/tryify.mjs +5 -0
- package/lib/esm/unwrap.d.mts +8 -0
- package/lib/esm/unwrap.mjs +37 -0
- package/lib/esm/utils/is-promise-like.d.mts +1 -1
- package/lib/esm/utils/types.d.mts +2 -2
- package/package.json +60 -24
package/lib/esm/async.d.mts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export type { XDeferAsync, XDeferSync } from './defer.mjs';
|
|
2
|
-
export {
|
|
2
|
+
export { xdeferAsync as xdefer, xdeferSync, xdefer as xdeferUnknown } from './defer.mjs';
|
|
3
3
|
export { parseJSON, parseJson } from './json.mjs';
|
|
4
|
-
export type {
|
|
5
|
-
export {
|
|
6
|
-
export type {
|
|
7
|
-
export {
|
|
4
|
+
export type { AsyncYDResult, AsyncYResult, YDResult, YFailure, YResult, YSuccess } from './partial.mjs';
|
|
5
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yresAsync as yres, yresSync, yres as yresUnknown } from './partial.mjs';
|
|
6
|
+
export type { AsyncDResult, AsyncResult, DResult, Failure, Result, Success } from './result.mjs';
|
|
7
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
8
8
|
export { stringifyError } from './stringify-error.mjs';
|
|
9
9
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
10
|
-
export {
|
|
11
|
-
export type { AsyncFunction, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement,
|
|
10
|
+
export { xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable, xtry as xtryUnknown } from './try.mjs';
|
|
11
|
+
export type { AsyncFunction, AsyncFunctionResult, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement, PreserveAsyncIterableOverloads, PreserveAsyncOverloads, PreserveSyncIterableOverloads, PreserveSyncOverloads, SyncFunction, SyncFunctionResult, SyncIterableFunction, SyncIteratableFunctionResult, SyncIteratorElement } from './tryify.mjs';
|
|
12
12
|
export { xtryifyAsync as xtryify, xtryifyAsyncIterable as xtryifyIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
|
|
13
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/async.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { xdeferAsync as xdefer, xdeferSync, xdefer as xdeferUnknown } from './defer.mjs';
|
|
2
2
|
export { parseJSON, parseJson } from './json.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
3
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yresAsync as yres, yresSync, yres as yresUnknown } from './partial.mjs';
|
|
4
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
5
5
|
export { stringifyError } from './stringify-error.mjs';
|
|
6
6
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
7
|
-
export {
|
|
7
|
+
export { xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable, xtry as xtryUnknown } from './try.mjs';
|
|
8
8
|
export { xtryifyAsync as xtryify, xtryifyAsyncIterable as xtryifyIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
|
|
9
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/defer.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { NonPromiseCallback } from './utils/types.mjs';
|
|
1
2
|
import { type Failure, type Result, type Success } from './result.mjs';
|
|
2
|
-
import { type NonPromiseCallback } from './utils/types.mjs';
|
|
3
3
|
export type XDeferAsync<E> = {
|
|
4
4
|
(): Promise<Success<void>>;
|
|
5
5
|
<T>(result: Success<T>): Promise<Result<T, E>>;
|
|
@@ -12,17 +12,17 @@ export type XDeferSync<E> = {
|
|
|
12
12
|
<F>(result: Failure<F>): Failure<F>;
|
|
13
13
|
<T, F>(result: Result<T, F>): Result<T, E | F>;
|
|
14
14
|
};
|
|
15
|
-
export declare function xdefer<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<void, E>, Args>,
|
|
16
|
-
export declare function xdefer<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<unknown, E>, Args>,
|
|
15
|
+
export declare function xdefer<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<void, E>, Args>, thisArg?: object | null, ...args: Args): XDeferSync<E>;
|
|
16
|
+
export declare function xdefer<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<unknown, E>, Args>, thisArg?: object | null, ...args: Args): XDeferSync<E>;
|
|
17
17
|
export declare function xdefer<E>(callback: Promise<Result<void, E>>): XDeferAsync<E>;
|
|
18
18
|
export declare function xdefer<E>(callback: Promise<Result<unknown, E>>): XDeferAsync<E>;
|
|
19
|
-
export declare function xdefer<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<void, E>>,
|
|
20
|
-
export declare function xdefer<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<unknown, E>>,
|
|
19
|
+
export declare function xdefer<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<void, E>>, thisArg?: object | null, ...args: Args): XDeferAsync<E>;
|
|
20
|
+
export declare function xdefer<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<unknown, E>>, thisArg?: object | null, ...args: Args): XDeferAsync<E>;
|
|
21
21
|
export declare function xdeferAsync<E>(callback: Promise<Result<void, E>>): XDeferAsync<E>;
|
|
22
22
|
export declare function xdeferAsync<E>(callback: Promise<Result<unknown, E>>): XDeferAsync<E>;
|
|
23
|
-
export declare function xdeferAsync<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<void, E>>,
|
|
24
|
-
export declare function xdeferAsync<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<unknown, E>>,
|
|
23
|
+
export declare function xdeferAsync<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<void, E>>, thisArg?: object | null, ...args: Args): XDeferAsync<E>;
|
|
24
|
+
export declare function xdeferAsync<E, Args extends unknown[]>(callback: (...args: Args) => Promise<Result<unknown, E>>, thisArg?: object | null, ...args: Args): XDeferAsync<E>;
|
|
25
25
|
export declare function xdeferSync<E>(callback: NonPromiseCallback<Result<void, E>>): XDeferSync<E>;
|
|
26
26
|
export declare function xdeferSync<E>(callback: NonPromiseCallback<Result<unknown, E>>): XDeferSync<E>;
|
|
27
|
-
export declare function xdeferSync<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<void, E>, Args>,
|
|
28
|
-
export declare function xdeferSync<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<unknown, E>, Args>,
|
|
27
|
+
export declare function xdeferSync<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<void, E>, Args>, thisArg?: object | null, ...args: Args): XDeferSync<E>;
|
|
28
|
+
export declare function xdeferSync<E, Args extends unknown[]>(callback: NonPromiseCallback<Result<unknown, E>, Args>, thisArg?: object | null, ...args: Args): XDeferSync<E>;
|
package/lib/esm/defer.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ok } from './result.mjs';
|
|
2
2
|
import { isPromiseLike } from './utils/is-promise-like.mjs';
|
|
3
|
-
/* eslint-enable
|
|
4
|
-
export function xdefer(callback,
|
|
5
|
-
// eslint-disable-next-line
|
|
3
|
+
/* eslint-enable ts/unified-signatures */
|
|
4
|
+
export function xdefer(callback, thisArg, ...args) {
|
|
5
|
+
// eslint-disable-next-line ts/promise-function-async
|
|
6
6
|
return ((result) => {
|
|
7
7
|
const finalize = (deferResult) => {
|
|
8
8
|
if (deferResult.fails) {
|
|
@@ -15,8 +15,8 @@ export function xdefer(callback, bind, ...args) {
|
|
|
15
15
|
};
|
|
16
16
|
let deferredValue;
|
|
17
17
|
if (callback instanceof Function) {
|
|
18
|
-
if (
|
|
19
|
-
deferredValue = Reflect.apply(callback,
|
|
18
|
+
if (thisArg) {
|
|
19
|
+
deferredValue = Reflect.apply(callback, thisArg, args);
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
22
|
deferredValue = callback(...args);
|
|
@@ -31,15 +31,15 @@ export function xdefer(callback, bind, ...args) {
|
|
|
31
31
|
return finalize(deferredValue);
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
/* eslint-enable
|
|
35
|
-
export function xdeferAsync(callback,
|
|
34
|
+
/* eslint-enable ts/unified-signatures */
|
|
35
|
+
export function xdeferAsync(callback, thisArg, ...args) {
|
|
36
36
|
return (async (result) => {
|
|
37
37
|
let deferResult;
|
|
38
38
|
if (callback instanceof Promise) {
|
|
39
39
|
deferResult = await callback;
|
|
40
40
|
}
|
|
41
|
-
else if (
|
|
42
|
-
deferResult = await callback.apply(
|
|
41
|
+
else if (thisArg) {
|
|
42
|
+
deferResult = await callback.apply(thisArg, args);
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
45
45
|
deferResult = await callback(...args);
|
|
@@ -53,10 +53,10 @@ export function xdeferAsync(callback, bind, ...args) {
|
|
|
53
53
|
return result ?? ok();
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
/* eslint-enable
|
|
57
|
-
export function xdeferSync(callback,
|
|
56
|
+
/* eslint-enable ts/unified-signatures */
|
|
57
|
+
export function xdeferSync(callback, thisArg, ...args) {
|
|
58
58
|
return ((result) => {
|
|
59
|
-
const deferResult =
|
|
59
|
+
const deferResult = thisArg ? callback.apply(thisArg, args) : callback(...args);
|
|
60
60
|
if (deferResult.fails) {
|
|
61
61
|
if (result?.fails) {
|
|
62
62
|
return result;
|
package/lib/esm/index.d.mts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export type { XDeferAsync, XDeferSync } from './defer.mjs';
|
|
2
2
|
export { xdefer, xdeferAsync, xdeferSync } from './defer.mjs';
|
|
3
3
|
export { parseJSON, parseJson } from './json.mjs';
|
|
4
|
-
export type {
|
|
5
|
-
export {
|
|
6
|
-
export type {
|
|
7
|
-
export {
|
|
4
|
+
export type { AsyncYDResult, AsyncYResult, YDResult, YFailure, YResult, YSuccess } from './partial.mjs';
|
|
5
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yres, yresAsync, yresSync } from './partial.mjs';
|
|
6
|
+
export type { AsyncDResult, AsyncResult, DResult, Failure, Result, Success } from './result.mjs';
|
|
7
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
8
8
|
export { stringifyError } from './stringify-error.mjs';
|
|
9
9
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
10
10
|
export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
|
11
|
-
export type { AsyncFunction, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement,
|
|
11
|
+
export type { AsyncFunction, AsyncFunctionResult, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement, PreserveAsyncIterableOverloads, PreserveAsyncOverloads, PreserveSyncIterableOverloads, PreserveSyncOverloads, SyncFunction, SyncFunctionResult, SyncIterableFunction, SyncIteratableFunctionResult, SyncIteratorElement } from './tryify.mjs';
|
|
12
12
|
export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
|
|
13
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { xdefer, xdeferAsync, xdeferSync } from './defer.mjs';
|
|
2
2
|
export { parseJSON, parseJson } from './json.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
3
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yres, yresAsync, yresSync } from './partial.mjs';
|
|
4
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
5
5
|
export { stringifyError } from './stringify-error.mjs';
|
|
6
6
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
7
7
|
export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
|
8
8
|
export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
|
|
9
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/partial.d.mts
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import type { Failure, Result, Success } from './result.mjs';
|
|
2
|
+
import type { NotPromise } from './utils/types.mjs';
|
|
3
|
+
export type AsyncYDResult<T = void, E = string, I = string> = Promise<YResult<T, E, I>>;
|
|
4
|
+
export type AsyncYResult<T, E, I> = Promise<YResult<T, E, I>>;
|
|
5
|
+
export type YDResult<T = void, E = string, I = string> = YResult<T, E, I>;
|
|
6
|
+
export type YFailure<I> = {
|
|
7
|
+
error: undefined;
|
|
8
8
|
fails: false;
|
|
9
|
+
issue: I;
|
|
9
10
|
success: false;
|
|
10
|
-
miscue: M;
|
|
11
11
|
value: undefined;
|
|
12
|
-
error: undefined;
|
|
13
12
|
};
|
|
13
|
+
export type YResult<T, E, I> = Failure<E> | YFailure<I> | YSuccess<T>;
|
|
14
|
+
export type YSuccess<T> = {
|
|
15
|
+
success: true;
|
|
16
|
+
} & Success<T>;
|
|
17
|
+
type YRResult<T, E> = Failure<E> | YSuccess<T>;
|
|
18
|
+
export declare function yep<T>(result: Success<T>): YSuccess<T>;
|
|
19
|
+
export declare function yerr<I>(issue: I): YFailure<I>;
|
|
14
20
|
export declare function yok(): YSuccess<void>;
|
|
15
21
|
export declare function yok<T>(value: T): YSuccess<T>;
|
|
16
|
-
export declare function yerr<M>(miscue: M): YFailure<M>;
|
|
17
|
-
type YRResult<T, E> = Failure<E> | YSuccess<T>;
|
|
18
22
|
export declare function yres<T, E>(result: NotPromise<Result<T, E>>): YRResult<T, E>;
|
|
19
23
|
export declare function yres<T, E>(result: Promise<Result<T, E>>): Promise<YRResult<T, E>>;
|
|
20
|
-
export declare function yresSync<T, E>(result: NotPromise<Result<T, E>>): YRResult<T, E>;
|
|
21
24
|
export declare function yresAsync<T, E>(promise: Promise<Result<T, E>>): Promise<YRResult<T, E>>;
|
|
22
|
-
export declare function
|
|
25
|
+
export declare function yresSync<T, E>(result: NotPromise<Result<T, E>>): YRResult<T, E>;
|
|
23
26
|
export declare const YOK: Readonly<YSuccess<void>>;
|
|
24
27
|
export declare const YOK_FALSE: Readonly<YSuccess<boolean>>;
|
|
25
28
|
export declare const YOK_NULL: Readonly<YSuccess<null>>;
|
package/lib/esm/partial.mjs
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { isPromiseLike } from './utils/is-promise-like.mjs';
|
|
2
|
-
export function
|
|
2
|
+
export function yep(result) {
|
|
3
3
|
return {
|
|
4
|
-
|
|
4
|
+
...result,
|
|
5
5
|
success: true,
|
|
6
|
-
value: value,
|
|
7
|
-
error: undefined,
|
|
8
6
|
};
|
|
9
7
|
}
|
|
10
|
-
export function yerr(
|
|
8
|
+
export function yerr(issue) {
|
|
11
9
|
return {
|
|
10
|
+
error: undefined,
|
|
12
11
|
fails: false,
|
|
12
|
+
issue,
|
|
13
13
|
success: false,
|
|
14
|
-
miscue,
|
|
15
14
|
value: undefined,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function yok(value) {
|
|
18
|
+
return {
|
|
16
19
|
error: undefined,
|
|
20
|
+
fails: false,
|
|
21
|
+
success: true,
|
|
22
|
+
value: value,
|
|
17
23
|
};
|
|
18
24
|
}
|
|
19
25
|
export function yres(result) {
|
|
@@ -22,21 +28,15 @@ export function yres(result) {
|
|
|
22
28
|
}
|
|
23
29
|
return yresSync(result);
|
|
24
30
|
}
|
|
31
|
+
export async function yresAsync(promise) {
|
|
32
|
+
return promise.then(yresSync);
|
|
33
|
+
}
|
|
25
34
|
export function yresSync(result) {
|
|
26
35
|
if (result.fails) {
|
|
27
36
|
return result;
|
|
28
37
|
}
|
|
29
38
|
return yep(result);
|
|
30
39
|
}
|
|
31
|
-
export async function yresAsync(promise) {
|
|
32
|
-
return promise.then(yresSync);
|
|
33
|
-
}
|
|
34
|
-
export function yep(result) {
|
|
35
|
-
return {
|
|
36
|
-
...result,
|
|
37
|
-
success: true,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
40
|
export const YOK = Object.freeze(yok());
|
|
41
41
|
export const YOK_FALSE = Object.freeze(yok(false));
|
|
42
42
|
export const YOK_NULL = Object.freeze(yok(null));
|
package/lib/esm/result.d.mts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
error: undefined;
|
|
5
|
-
};
|
|
1
|
+
export type AsyncDResult<T = void, E = string> = AsyncResult<T, E>;
|
|
2
|
+
export type AsyncResult<T, E> = Promise<Result<T, E>>;
|
|
3
|
+
export type DResult<T = void, E = string> = Result<T, E>;
|
|
6
4
|
export type Failure<E> = {
|
|
5
|
+
error: E;
|
|
7
6
|
fails: true;
|
|
8
7
|
value: undefined;
|
|
9
|
-
error: E;
|
|
10
8
|
};
|
|
11
|
-
export type Result<T, E> =
|
|
12
|
-
export type
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
export type Result<T, E> = Failure<E> | Success<T>;
|
|
10
|
+
export type Success<T> = {
|
|
11
|
+
error: undefined;
|
|
12
|
+
fails: false;
|
|
13
|
+
value: T;
|
|
14
|
+
};
|
|
15
|
+
export declare function err<E>(error: E): Failure<E>;
|
|
15
16
|
export declare function ok(): Success<void>;
|
|
16
17
|
export declare function ok<T>(value: T): Success<T>;
|
|
17
|
-
export declare function err<E>(error: E): Failure<E>;
|
|
18
18
|
export declare const OK: Readonly<Success<void>>;
|
|
19
19
|
export declare const OK_FALSE: Readonly<Success<boolean>>;
|
|
20
20
|
export declare const OK_NULL: Readonly<Success<null>>;
|
package/lib/esm/result.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export function ok(value) {
|
|
2
|
-
return {
|
|
3
|
-
fails: false,
|
|
4
|
-
value: value,
|
|
5
|
-
error: undefined,
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
1
|
export function err(error) {
|
|
9
2
|
return {
|
|
3
|
+
error,
|
|
10
4
|
fails: true,
|
|
11
5
|
value: undefined,
|
|
12
|
-
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function ok(value) {
|
|
9
|
+
return {
|
|
10
|
+
error: undefined,
|
|
11
|
+
fails: false,
|
|
12
|
+
value: value,
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
export const OK = Object.freeze(ok());
|
package/lib/esm/sync.d.mts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export type { XDeferAsync, XDeferSync } from './defer.mjs';
|
|
2
|
-
export {
|
|
2
|
+
export { xdeferSync as xdefer, xdeferAsync, xdefer as xdeferUnknown } from './defer.mjs';
|
|
3
3
|
export { parseJSON, parseJson } from './json.mjs';
|
|
4
|
-
export type {
|
|
5
|
-
export {
|
|
6
|
-
export type {
|
|
7
|
-
export {
|
|
4
|
+
export type { AsyncYDResult, AsyncYResult, YDResult, YFailure, YResult, YSuccess } from './partial.mjs';
|
|
5
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yresSync as yres, yresAsync, yres as yresUnknown } from './partial.mjs';
|
|
6
|
+
export type { AsyncDResult, AsyncResult, DResult, Failure, Result, Success } from './result.mjs';
|
|
7
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
8
8
|
export { stringifyError } from './stringify-error.mjs';
|
|
9
9
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
10
|
-
export {
|
|
11
|
-
export type { AsyncFunction, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement,
|
|
12
|
-
export {
|
|
10
|
+
export { xtrySync as xtry, xtryAsync, xtryAsyncIterable, xtrySyncIterable as xtryIterable, xtry as xtryUnknown } from './try.mjs';
|
|
11
|
+
export type { AsyncFunction, AsyncFunctionResult, AsyncIterableFunction, AsyncIteratableFunctionResult, AsyncIteratorElement, PreserveAsyncIterableOverloads, PreserveAsyncOverloads, PreserveSyncIterableOverloads, PreserveSyncOverloads, SyncFunction, SyncFunctionResult, SyncIterableFunction, SyncIteratableFunctionResult, SyncIteratorElement } from './tryify.mjs';
|
|
12
|
+
export { xtryifySync as xtryify, xtryifyAsync, xtryifyAsyncIterable, xtryifySyncIterable as xtryifyIterable } from './tryify.mjs';
|
|
13
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/sync.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { xdeferSync as xdefer, xdeferAsync, xdefer as xdeferUnknown } from './defer.mjs';
|
|
2
2
|
export { parseJSON, parseJson } from './json.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
3
|
+
export { yep, yerr, yok, YOK, YOK_FALSE, YOK_NULL, YOK_TRUE, YOK_UNDEFINED, yresSync as yres, yresAsync, yres as yresUnknown } from './partial.mjs';
|
|
4
|
+
export { err, ok, OK, OK_FALSE, OK_NULL, OK_TRUE, OK_UNDEFINED } from './result.mjs';
|
|
5
5
|
export { stringifyError } from './stringify-error.mjs';
|
|
6
6
|
export { toStringFailure } from './to-string-failure.mjs';
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
7
|
+
export { xtrySync as xtry, xtryAsync, xtryAsyncIterable, xtrySyncIterable as xtryIterable, xtry as xtryUnknown } from './try.mjs';
|
|
8
|
+
export { xtryifySync as xtryify, xtryifyAsync, xtryifyAsyncIterable, xtryifySyncIterable as xtryifyIterable } from './tryify.mjs';
|
|
9
|
+
export { map, match, unwrap, unwrapOr } from './unwrap.mjs';
|
package/lib/esm/try.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { MaybePromise, NonPromiseCallback, PromiseCallback } from './utils/types.mjs';
|
|
1
2
|
import { type Result } from './result.mjs';
|
|
2
|
-
import { type MaybePromise, type NonPromiseCallback, type PromiseCallback } from './utils/types.mjs';
|
|
3
3
|
type AsyncIterableCallback<T> = (() => AsyncIterable<T>) | AsyncIterable<T>;
|
|
4
4
|
type AsyncIterableResult<T, E> = AsyncIterable<VoidableResult<T, E>>;
|
|
5
5
|
type ErrorHandler<T> = (error: unknown) => T | undefined;
|
|
@@ -10,8 +10,8 @@ export declare function xtry<T, E = unknown>(iterable: SyncIterableCallback<T>,
|
|
|
10
10
|
export declare function xtry<T, E = unknown>(iterable: AsyncIterableCallback<T>, handler?: ErrorHandler<E>): AsyncIterableResult<T, E>;
|
|
11
11
|
export declare function xtry<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
12
12
|
export declare function xtry<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
13
|
-
export declare function xtrySync<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
14
13
|
export declare function xtryAsync<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function
|
|
14
|
+
export declare function xtryAsyncIterable<T, E = unknown>(iterable: (() => MaybePromise<AsyncIterable<T>>) | AsyncIterable<T> | Promise<AsyncIterable<T>>, handler?: ErrorHandler<E>): AsyncIterable<VoidableResult<T, E>>;
|
|
15
|
+
export declare function xtrySync<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
16
|
+
export declare function xtrySyncIterable<T, E = unknown>(iterable: (() => Iterable<T>) | Iterable<T>, handler?: ErrorHandler<E>): Iterable<VoidableResult<T, E>>;
|
|
17
17
|
export {};
|
package/lib/esm/try.mjs
CHANGED
|
@@ -2,22 +2,15 @@ import { err, ok } from './result.mjs';
|
|
|
2
2
|
import { isAsyncIterable } from './utils/is-async-iterable.mjs';
|
|
3
3
|
import { isPromiseLike } from './utils/is-promise-like.mjs';
|
|
4
4
|
import { isSyncIterable } from './utils/is-sync-iterable.mjs';
|
|
5
|
-
function handleError(handler, error) {
|
|
6
|
-
if (handler) {
|
|
7
|
-
const newError = handler(error);
|
|
8
|
-
if (newError !== undefined) {
|
|
9
|
-
return err(newError);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return err(error);
|
|
13
|
-
} // }}}
|
|
14
5
|
export function xtry(func, handler) {
|
|
15
6
|
try {
|
|
16
7
|
const value = typeof func === 'function' ? func() : func;
|
|
17
8
|
if (isPromiseLike(value)) {
|
|
18
9
|
return Promise.resolve(value).then(
|
|
19
|
-
// eslint-disable-next-line
|
|
20
|
-
(value) => ok(value),
|
|
10
|
+
// eslint-disable-next-line ts/no-unsafe-return, ts/no-explicit-any
|
|
11
|
+
(value) => ok(value),
|
|
12
|
+
// eslint-disable-next-line ts/use-unknown-in-catch-callback-variable
|
|
13
|
+
(error) => handleError(handler, error));
|
|
21
14
|
}
|
|
22
15
|
if (isAsyncIterable(value)) {
|
|
23
16
|
return xtryAsyncIterable(value, handler);
|
|
@@ -25,17 +18,7 @@ export function xtry(func, handler) {
|
|
|
25
18
|
if (isSyncIterable(value)) {
|
|
26
19
|
return xtrySyncIterable(value, handler);
|
|
27
20
|
}
|
|
28
|
-
// eslint-disable-next-line
|
|
29
|
-
return ok(value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
return handleError(handler, error);
|
|
33
|
-
}
|
|
34
|
-
} // }}}
|
|
35
|
-
export function xtrySync(func, handler) {
|
|
36
|
-
try {
|
|
37
|
-
const value = func();
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
21
|
+
// eslint-disable-next-line ts/no-unsafe-return, ts/no-explicit-any
|
|
39
22
|
return ok(value);
|
|
40
23
|
}
|
|
41
24
|
catch (error) {
|
|
@@ -45,32 +28,33 @@ export function xtrySync(func, handler) {
|
|
|
45
28
|
export async function xtryAsync(func, handler) {
|
|
46
29
|
try {
|
|
47
30
|
const value = await (func instanceof Promise || isAsyncIterable(func) ? func : Promise.resolve().then(func));
|
|
48
|
-
// eslint-disable-next-line
|
|
31
|
+
// eslint-disable-next-line ts/no-unsafe-return, ts/no-explicit-any
|
|
49
32
|
return ok(value);
|
|
50
33
|
}
|
|
51
34
|
catch (error) {
|
|
52
35
|
return handleError(handler, error);
|
|
53
36
|
}
|
|
54
37
|
} // }}}
|
|
55
|
-
export function
|
|
56
|
-
function
|
|
57
|
-
|
|
38
|
+
export function xtryAsyncIterable(iterable, handler) {
|
|
39
|
+
const generator = typeof iterable === 'function' ? iterable : () => iterable;
|
|
40
|
+
async function* iterate() {
|
|
41
|
+
let source;
|
|
58
42
|
try {
|
|
59
|
-
|
|
43
|
+
source = await Promise.resolve(generator());
|
|
60
44
|
}
|
|
61
45
|
catch (error) {
|
|
62
46
|
yield handleError(handler, error);
|
|
63
47
|
return;
|
|
64
48
|
}
|
|
65
|
-
if (!
|
|
66
|
-
yield handleError(handler, new TypeError('
|
|
49
|
+
if (!source || typeof source[Symbol.asyncIterator] !== 'function') {
|
|
50
|
+
yield handleError(handler, new TypeError('xtryAsyncIterable expects an AsyncIterable'));
|
|
67
51
|
return;
|
|
68
52
|
}
|
|
69
|
-
const iterator =
|
|
53
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
70
54
|
while (true) {
|
|
71
55
|
let step;
|
|
72
56
|
try {
|
|
73
|
-
step = iterator.next();
|
|
57
|
+
step = await iterator.next();
|
|
74
58
|
}
|
|
75
59
|
catch (error) {
|
|
76
60
|
yield handleError(handler, error);
|
|
@@ -79,31 +63,41 @@ export function xtrySyncIterable(iterable, handler) {
|
|
|
79
63
|
if (step.done) {
|
|
80
64
|
return;
|
|
81
65
|
}
|
|
66
|
+
// eslint-disable-next-line ts/no-explicit-any
|
|
82
67
|
yield ok(step.value);
|
|
83
68
|
}
|
|
84
69
|
}
|
|
85
70
|
return iterate();
|
|
86
71
|
} // }}}
|
|
87
|
-
export function
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
72
|
+
export function xtrySync(func, handler) {
|
|
73
|
+
try {
|
|
74
|
+
const value = func();
|
|
75
|
+
// eslint-disable-next-line ts/no-unsafe-return, ts/no-explicit-any
|
|
76
|
+
return ok(value);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return handleError(handler, error);
|
|
80
|
+
}
|
|
81
|
+
} // }}}
|
|
82
|
+
export function xtrySyncIterable(iterable, handler) {
|
|
83
|
+
function* iterate() {
|
|
84
|
+
let generator;
|
|
91
85
|
try {
|
|
92
|
-
|
|
86
|
+
generator = typeof iterable === 'function' ? iterable() : iterable;
|
|
93
87
|
}
|
|
94
88
|
catch (error) {
|
|
95
89
|
yield handleError(handler, error);
|
|
96
90
|
return;
|
|
97
91
|
}
|
|
98
|
-
if (!
|
|
99
|
-
yield handleError(handler, new TypeError('
|
|
92
|
+
if (!generator || typeof generator[Symbol.iterator] !== 'function') {
|
|
93
|
+
yield handleError(handler, new TypeError('xtryIterable expects an Iterable'));
|
|
100
94
|
return;
|
|
101
95
|
}
|
|
102
|
-
const iterator =
|
|
96
|
+
const iterator = generator[Symbol.iterator]();
|
|
103
97
|
while (true) {
|
|
104
98
|
let step;
|
|
105
99
|
try {
|
|
106
|
-
step =
|
|
100
|
+
step = iterator.next();
|
|
107
101
|
}
|
|
108
102
|
catch (error) {
|
|
109
103
|
yield handleError(handler, error);
|
|
@@ -112,8 +106,18 @@ export function xtryAsyncIterable(iterable, handler) {
|
|
|
112
106
|
if (step.done) {
|
|
113
107
|
return;
|
|
114
108
|
}
|
|
109
|
+
// eslint-disable-next-line ts/no-explicit-any
|
|
115
110
|
yield ok(step.value);
|
|
116
111
|
}
|
|
117
112
|
}
|
|
118
113
|
return iterate();
|
|
119
114
|
} // }}}
|
|
115
|
+
function handleError(handler, error) {
|
|
116
|
+
if (handler) {
|
|
117
|
+
const newError = handler(error);
|
|
118
|
+
if (newError !== undefined) {
|
|
119
|
+
return err(newError);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return err(error);
|
|
123
|
+
} // }}}
|
package/lib/esm/tryify.d.mts
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Result } from './result.mjs';
|
|
2
|
+
import type { NotPromise } from './utils/types.mjs';
|
|
3
|
+
export type AsyncFunction<Fn extends (...args: any[]) => any> = ReturnType<Fn> extends Promise<any> ? Fn : never;
|
|
4
|
+
export type AsyncFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Promise<Result<Awaited<ReturnType<T>>, Err>>;
|
|
5
|
+
export type AsyncIterableFunction = (...args: any[]) => AsyncIterable<unknown>;
|
|
6
|
+
export type AsyncIteratableFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = AsyncIterable<Result<AsyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
|
|
7
|
+
export type AsyncIteratorElement<T> = T extends Promise<infer P> ? AsyncIteratorElement<P> : T extends AsyncIterator<infer E> ? E : T extends AsyncIterable<infer E> ? E : T extends {
|
|
8
|
+
[Symbol.asyncIterator]: (...args: unknown[]) => infer I;
|
|
9
|
+
} ? AsyncIteratorElement<I> : unknown;
|
|
10
|
+
export type PreserveAsyncIterableOverloads<Fn extends AsyncIterableFunction, Err extends Error> = UnionToIntersection<WrapAsyncIterableOverload<OverloadsUnion<Fn>, Err>>;
|
|
11
|
+
export type PreserveAsyncOverloads<Fn extends AnyAsyncFunction, Err extends Error> = UnionToIntersection<WrapAsyncOverload<OverloadsUnion<Fn>, Err>>;
|
|
12
|
+
export type PreserveSyncIterableOverloads<Fn extends SyncIterableFunction, Err extends Error> = UnionToIntersection<WrapSyncIterableOverload<OverloadsUnion<Fn>, Err>>;
|
|
13
|
+
export type PreserveSyncOverloads<Fn extends AnySyncFunction, Err extends Error> = UnionToIntersection<WrapSyncOverload<OverloadsUnion<Fn>, Err>>;
|
|
14
|
+
export type SyncFunction<Fn extends (...args: any[]) => any> = LastIsFunction<Parameters<Fn>> extends true ? never : ReturnType<Fn> extends Promise<any> ? never : Fn;
|
|
15
|
+
export type SyncFunctionResult<T extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error> = Result<ReturnType<T>, Err>;
|
|
16
|
+
export type SyncIterableFunction = (...args: any[]) => Iterable<unknown>;
|
|
17
|
+
export type SyncIteratableFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Iterable<Result<SyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
|
|
18
|
+
export type SyncIteratorElement<T> = T extends Iterator<infer E> ? E : T extends Iterable<infer E> ? E : T extends {
|
|
19
|
+
[Symbol.iterator]: (...args: unknown[]) => infer I;
|
|
20
|
+
} ? SyncIteratorElement<I> : unknown;
|
|
3
21
|
type AnyAsyncFunction = (...args: any[]) => Promise<unknown>;
|
|
4
22
|
type AnySyncFunction = (...args: any[]) => unknown;
|
|
5
23
|
type LastIsFunction<T extends readonly any[]> = T extends [...infer Rest, infer Last] ? Last extends (...args: any[]) => any ? true : false : false;
|
|
@@ -16,28 +34,10 @@ type OverloadsUnion<Fn extends Function> = Fn extends {
|
|
|
16
34
|
(...args: infer A10): infer R10;
|
|
17
35
|
} ? ((...args: A1) => R1) | ((...args: A2) => R2) | ((...args: A3) => R3) | ((...args: A4) => R4) | ((...args: A5) => R5) | ((...args: A6) => R6) | ((...args: A7) => R7) | ((...args: A8) => R8) | ((...args: A9) => R9) | ((...args: A10) => R10) : Fn;
|
|
18
36
|
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
19
|
-
type WrapAsyncOverload<Fn extends AnyAsyncFunction, Err extends Error> = Fn extends (...args: infer Args) => unknown ? (...args: Args) => AsyncFunctionResult<Fn, Err> : never;
|
|
20
37
|
type WrapAsyncIterableOverload<Fn extends AsyncIterableFunction, Err extends Error> = Fn extends (...args: infer Args) => AsyncIterable<unknown> ? (...args: Args) => AsyncIteratableFunctionResult<Fn, Err> : never;
|
|
21
|
-
type
|
|
38
|
+
type WrapAsyncOverload<Fn extends AnyAsyncFunction, Err extends Error> = Fn extends (...args: infer Args) => unknown ? (...args: Args) => AsyncFunctionResult<Fn, Err> : never;
|
|
22
39
|
type WrapSyncIterableOverload<Fn extends SyncIterableFunction, Err extends Error> = Fn extends (...args: infer Args) => Iterable<unknown> ? (...args: Args) => SyncIteratableFunctionResult<Fn, Err> : never;
|
|
23
|
-
|
|
24
|
-
export type AsyncIterableFunction = (...args: any[]) => AsyncIterable<unknown>;
|
|
25
|
-
export type AsyncIteratorElement<T> = T extends Promise<infer P> ? AsyncIteratorElement<P> : T extends AsyncIterator<infer E> ? E : T extends AsyncIterable<infer E> ? E : T extends {
|
|
26
|
-
[Symbol.asyncIterator]: (...args: unknown[]) => infer I;
|
|
27
|
-
} ? AsyncIteratorElement<I> : unknown;
|
|
28
|
-
export type AsyncFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Promise<Result<Awaited<ReturnType<T>>, Err>>;
|
|
29
|
-
export type AsyncIteratableFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = AsyncIterable<Result<AsyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
|
|
30
|
-
export type PreserveAsyncOverloads<Fn extends AnyAsyncFunction, Err extends Error> = UnionToIntersection<WrapAsyncOverload<OverloadsUnion<Fn>, Err>>;
|
|
31
|
-
export type PreserveAsyncIterableOverloads<Fn extends AsyncIterableFunction, Err extends Error> = UnionToIntersection<WrapAsyncIterableOverload<OverloadsUnion<Fn>, Err>>;
|
|
32
|
-
export type PreserveSyncOverloads<Fn extends AnySyncFunction, Err extends Error> = UnionToIntersection<WrapSyncOverload<OverloadsUnion<Fn>, Err>>;
|
|
33
|
-
export type PreserveSyncIterableOverloads<Fn extends SyncIterableFunction, Err extends Error> = UnionToIntersection<WrapSyncIterableOverload<OverloadsUnion<Fn>, Err>>;
|
|
34
|
-
export type SyncFunction<Fn extends (...args: any[]) => any> = LastIsFunction<Parameters<Fn>> extends true ? never : ReturnType<Fn> extends Promise<any> ? never : Fn;
|
|
35
|
-
export type SyncIterableFunction = (...args: any[]) => Iterable<unknown>;
|
|
36
|
-
export type SyncIteratorElement<T> = T extends Iterator<infer E> ? E : T extends Iterable<infer E> ? E : T extends {
|
|
37
|
-
[Symbol.iterator]: (...args: unknown[]) => infer I;
|
|
38
|
-
} ? SyncIteratorElement<I> : unknown;
|
|
39
|
-
export type SyncFunctionResult<T extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error> = Result<ReturnType<T>, Err>;
|
|
40
|
-
export type SyncIteratableFunctionResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Iterable<Result<SyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
|
|
40
|
+
type WrapSyncOverload<Fn extends AnySyncFunction, Err extends Error> = Fn extends (...args: infer Args) => unknown ? (...args: Args) => SyncFunctionResult<Fn, Err> : never;
|
|
41
41
|
export declare function xtryifyAsync<Err extends Error, Fn extends AnyAsyncFunction = any>(fn: AsyncFunction<Fn>): PreserveAsyncOverloads<Fn, Err>;
|
|
42
42
|
export declare function xtryifyAsyncIterable<Err extends Error, Fn extends AsyncIterableFunction = any>(fn: Fn): PreserveAsyncIterableOverloads<Fn, Err>;
|
|
43
43
|
export declare function xtryifySync<Err extends Error, Fn extends AnySyncFunction = any>(fn: SyncFunction<Fn>): PreserveSyncOverloads<Fn, Err>;
|