@zokugun/xtry 0.6.4 → 0.7.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 +18 -3
- package/lib/cjs/async.cjs +11 -1
- package/lib/cjs/async.d.cts +4 -3
- package/lib/cjs/index.cjs +5 -1
- package/lib/cjs/index.d.cts +2 -1
- package/lib/cjs/sync.cjs +11 -1
- package/lib/cjs/sync.d.cts +4 -3
- package/lib/cjs/to-string-failure.cjs +8 -0
- package/lib/cjs/to-string-failure.d.cts +2 -0
- package/lib/cjs/try.cjs +92 -33
- package/lib/cjs/try.d.cts +9 -1
- package/lib/cjs/utils/is-async-iterable.cjs +6 -0
- package/lib/cjs/utils/is-async-iterable.d.cts +1 -0
- package/lib/cjs/utils/is-sync-iterable.cjs +6 -0
- package/lib/cjs/utils/is-sync-iterable.d.cts +1 -0
- package/lib/esm/async.d.mts +4 -3
- package/lib/esm/async.mjs +4 -3
- package/lib/esm/index.d.mts +2 -1
- package/lib/esm/index.mjs +2 -1
- package/lib/esm/sync.d.mts +4 -3
- package/lib/esm/sync.mjs +4 -3
- package/lib/esm/to-string-failure.d.mts +2 -0
- package/lib/esm/to-string-failure.mjs +5 -0
- package/lib/esm/try.d.mts +9 -1
- package/lib/esm/try.mjs +90 -33
- package/lib/esm/utils/is-async-iterable.d.mts +1 -0
- package/lib/esm/utils/is-async-iterable.mjs +3 -0
- package/lib/esm/utils/is-sync-iterable.d.mts +1 -0
- package/lib/esm/utils/is-sync-iterable.mjs +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -147,17 +147,32 @@ To minimize allocations when returning the same `Success` shape, you can reuse t
|
|
|
147
147
|
|
|
148
148
|
```
|
|
149
149
|
function xtry<T, E>(func: (() => MaybePromise<T>) | Promise<T>, handler?: (error: unknown) => void | E): MaybePromise<Result<T, E>>;
|
|
150
|
-
function
|
|
150
|
+
function xtry<T, E>(iterable: (() => Iterable<T>) | Iterable<T>, handler?: (error: unknown) => void | E): Iterable<Result<T, E>>;
|
|
151
|
+
function xtry<T, E>(iterable: (() => AsyncIterable<T>) | AsyncIterable<T>, handler?: (error: unknown) => void | E): AsyncIterable<Result<T, E>>;
|
|
151
152
|
function xtryAsync<T, E>(func: (() => Promise<T>) | Promise<T>, handler?: (error: unknown) => void | E): Promise<Result<T, E>>;
|
|
153
|
+
function xtryAsyncIterable<T, E>(iterable: (() => MaybePromise<AsyncIterable<T>>) | MaybePromise<AsyncIterable<T>>, handler?: (error: unknown) => void | E): AsyncIterable<Result<T, E>>;
|
|
154
|
+
function xtrySync<T, E>(func: () => Exclude<T, Promise<unknown>>, handler?: (error: unknown) => void | E): Result<T, E>;
|
|
155
|
+
function xtrySyncIterable<T, E>(iterable: (() => Iterable<T>) | Iterable<T>, handler?: (error: unknown) => void | E): Iterable<Result<T, E>>;
|
|
156
|
+
(error: unknown) => void | E): AsyncIterable<Result<T, E>>;
|
|
152
157
|
|
|
153
158
|
function stringifyError(error: unknown): string;
|
|
154
159
|
```
|
|
155
160
|
|
|
156
|
-
`xtry` inspects the supplied value
|
|
161
|
+
`xtry` inspects the supplied value and chooses the matching shape:
|
|
162
|
+
|
|
163
|
+
- promises or async factories → `Promise<Result<…>>`
|
|
164
|
+
- async iterables → `AsyncIterable<Result<…>>`
|
|
165
|
+
- iterators/generators → `Iterable<Result<…>>`
|
|
166
|
+
- everything else → plain `Result<…>`
|
|
167
|
+
|
|
168
|
+
Wrap default collections (arrays, sets, maps, strings, typed arrays, …) inside a function if you need them treated as raw values instead of iterables.<br />
|
|
169
|
+
Reach for `xtrySync`/`xtryAsync` when you want to force a specific mode, and prefer the explicit `xtrySyncIterable`/`xtryAsyncIterable` exports whenever you always expect iterable outputs.<br />
|
|
170
|
+
`xtryIterable` and `xtryAsyncIterable` wrap synchronous or asynchronous iterables, yielding a stream of `Result` values and emitting a single `err(...)` before stopping when the underlying iterator throws or rejects.
|
|
171
|
+
|
|
172
|
+
All helpers:
|
|
157
173
|
|
|
158
174
|
- execute the supplied function and capture thrown values;
|
|
159
175
|
- call the optional `handler` before turning that value into `err(error)`;
|
|
160
|
-
- never throw, making the return signature a reliable discriminated union.
|
|
161
176
|
|
|
162
177
|
### Partial helpers
|
|
163
178
|
|
package/lib/cjs/async.cjs
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.xtry = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yres = exports.yerr = exports.yok = exports.xdefer = void 0;
|
|
3
|
+
exports.xtrySyncIterable = exports.xtrySync = exports.xtryIterable = exports.xtry = exports.xtryUnknown = exports.toStringFailure = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yresSync = exports.yres = exports.yresUnknown = exports.yerr = exports.yok = exports.xdeferSync = exports.xdefer = exports.xdeferUnknown = void 0;
|
|
4
4
|
var defer_js_1 = require("./defer.cjs");
|
|
5
|
+
Object.defineProperty(exports, "xdeferUnknown", { enumerable: true, get: function () { return defer_js_1.xdefer; } });
|
|
5
6
|
Object.defineProperty(exports, "xdefer", { enumerable: true, get: function () { return defer_js_1.xdeferAsync; } });
|
|
7
|
+
Object.defineProperty(exports, "xdeferSync", { enumerable: true, get: function () { return defer_js_1.xdeferSync; } });
|
|
6
8
|
var partial_js_1 = require("./partial.cjs");
|
|
7
9
|
Object.defineProperty(exports, "yok", { enumerable: true, get: function () { return partial_js_1.yok; } });
|
|
8
10
|
Object.defineProperty(exports, "yerr", { enumerable: true, get: function () { return partial_js_1.yerr; } });
|
|
11
|
+
Object.defineProperty(exports, "yresUnknown", { enumerable: true, get: function () { return partial_js_1.yres; } });
|
|
9
12
|
Object.defineProperty(exports, "yres", { enumerable: true, get: function () { return partial_js_1.yresAsync; } });
|
|
13
|
+
Object.defineProperty(exports, "yresSync", { enumerable: true, get: function () { return partial_js_1.yresSync; } });
|
|
10
14
|
Object.defineProperty(exports, "yep", { enumerable: true, get: function () { return partial_js_1.yep; } });
|
|
11
15
|
Object.defineProperty(exports, "YOK", { enumerable: true, get: function () { return partial_js_1.YOK; } });
|
|
12
16
|
Object.defineProperty(exports, "YOK_NULL", { enumerable: true, get: function () { return partial_js_1.YOK_NULL; } });
|
|
@@ -21,5 +25,11 @@ Object.defineProperty(exports, "OK_TRUE", { enumerable: true, get: function () {
|
|
|
21
25
|
Object.defineProperty(exports, "OK_FALSE", { enumerable: true, get: function () { return result_js_1.OK_FALSE; } });
|
|
22
26
|
var stringify_error_js_1 = require("./stringify-error.cjs");
|
|
23
27
|
Object.defineProperty(exports, "stringifyError", { enumerable: true, get: function () { return stringify_error_js_1.stringifyError; } });
|
|
28
|
+
var to_string_failure_js_1 = require("./to-string-failure.cjs");
|
|
29
|
+
Object.defineProperty(exports, "toStringFailure", { enumerable: true, get: function () { return to_string_failure_js_1.toStringFailure; } });
|
|
24
30
|
var try_js_1 = require("./try.cjs");
|
|
31
|
+
Object.defineProperty(exports, "xtryUnknown", { enumerable: true, get: function () { return try_js_1.xtry; } });
|
|
25
32
|
Object.defineProperty(exports, "xtry", { enumerable: true, get: function () { return try_js_1.xtryAsync; } });
|
|
33
|
+
Object.defineProperty(exports, "xtryIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
|
|
34
|
+
Object.defineProperty(exports, "xtrySync", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
|
|
35
|
+
Object.defineProperty(exports, "xtrySyncIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
|
package/lib/cjs/async.d.cts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { xdeferAsync as xdefer } from './defer.cjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync as xdefer, xdeferSync } from './defer.cjs';
|
|
2
2
|
export type { YResult, YSuccess, YFailure } from './partial.cjs';
|
|
3
|
-
export { yok, yerr, yresAsync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.cjs';
|
|
3
|
+
export { yok, yerr, yres as yresUnknown, yresAsync as yres, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.cjs';
|
|
4
4
|
export type { Success, Failure, Result } from './result.cjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.cjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.cjs';
|
|
8
|
+
export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.cjs';
|
package/lib/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.xtrySync = exports.xtryAsync = exports.xtry = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yresSync = exports.yresAsync = exports.yres = exports.yerr = exports.yok = exports.xdeferSync = exports.xdeferAsync = exports.xdefer = void 0;
|
|
3
|
+
exports.xtrySyncIterable = exports.xtrySync = exports.xtryAsyncIterable = exports.xtryAsync = exports.xtry = exports.toStringFailure = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yresSync = exports.yresAsync = exports.yres = exports.yerr = exports.yok = exports.xdeferSync = exports.xdeferAsync = exports.xdefer = void 0;
|
|
4
4
|
var defer_js_1 = require("./defer.cjs");
|
|
5
5
|
Object.defineProperty(exports, "xdefer", { enumerable: true, get: function () { return defer_js_1.xdefer; } });
|
|
6
6
|
Object.defineProperty(exports, "xdeferAsync", { enumerable: true, get: function () { return defer_js_1.xdeferAsync; } });
|
|
@@ -25,7 +25,11 @@ Object.defineProperty(exports, "OK_TRUE", { enumerable: true, get: function () {
|
|
|
25
25
|
Object.defineProperty(exports, "OK_FALSE", { enumerable: true, get: function () { return result_js_1.OK_FALSE; } });
|
|
26
26
|
var stringify_error_js_1 = require("./stringify-error.cjs");
|
|
27
27
|
Object.defineProperty(exports, "stringifyError", { enumerable: true, get: function () { return stringify_error_js_1.stringifyError; } });
|
|
28
|
+
var to_string_failure_js_1 = require("./to-string-failure.cjs");
|
|
29
|
+
Object.defineProperty(exports, "toStringFailure", { enumerable: true, get: function () { return to_string_failure_js_1.toStringFailure; } });
|
|
28
30
|
var try_js_1 = require("./try.cjs");
|
|
29
31
|
Object.defineProperty(exports, "xtry", { enumerable: true, get: function () { return try_js_1.xtry; } });
|
|
30
32
|
Object.defineProperty(exports, "xtryAsync", { enumerable: true, get: function () { return try_js_1.xtryAsync; } });
|
|
33
|
+
Object.defineProperty(exports, "xtryAsyncIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
|
|
31
34
|
Object.defineProperty(exports, "xtrySync", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
|
|
35
|
+
Object.defineProperty(exports, "xtrySyncIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
|
package/lib/cjs/index.d.cts
CHANGED
|
@@ -4,4 +4,5 @@ export { yok, yerr, yres, yresAsync, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK
|
|
|
4
4
|
export type { Success, Failure, Result } from './result.cjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.cjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.cjs';
|
|
8
|
+
export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.cjs';
|
package/lib/cjs/sync.cjs
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.xtry = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yres = exports.yerr = exports.yok = exports.xdefer = void 0;
|
|
3
|
+
exports.xtryIterable = exports.xtry = exports.xtryAsyncIterable = exports.xtryAsync = exports.xtryUnknown = exports.toStringFailure = exports.stringifyError = exports.OK_FALSE = exports.OK_TRUE = exports.OK_NULL = exports.OK = exports.err = exports.ok = exports.YOK_FALSE = exports.YOK_TRUE = exports.YOK_NULL = exports.YOK = exports.yep = exports.yres = exports.yresAsync = exports.yresUnknown = exports.yerr = exports.yok = exports.xdefer = exports.xdeferAsync = exports.xdeferUnknown = void 0;
|
|
4
4
|
var defer_js_1 = require("./defer.cjs");
|
|
5
|
+
Object.defineProperty(exports, "xdeferUnknown", { enumerable: true, get: function () { return defer_js_1.xdefer; } });
|
|
6
|
+
Object.defineProperty(exports, "xdeferAsync", { enumerable: true, get: function () { return defer_js_1.xdeferAsync; } });
|
|
5
7
|
Object.defineProperty(exports, "xdefer", { enumerable: true, get: function () { return defer_js_1.xdeferSync; } });
|
|
6
8
|
var partial_js_1 = require("./partial.cjs");
|
|
7
9
|
Object.defineProperty(exports, "yok", { enumerable: true, get: function () { return partial_js_1.yok; } });
|
|
8
10
|
Object.defineProperty(exports, "yerr", { enumerable: true, get: function () { return partial_js_1.yerr; } });
|
|
11
|
+
Object.defineProperty(exports, "yresUnknown", { enumerable: true, get: function () { return partial_js_1.yres; } });
|
|
12
|
+
Object.defineProperty(exports, "yresAsync", { enumerable: true, get: function () { return partial_js_1.yresAsync; } });
|
|
9
13
|
Object.defineProperty(exports, "yres", { enumerable: true, get: function () { return partial_js_1.yresSync; } });
|
|
10
14
|
Object.defineProperty(exports, "yep", { enumerable: true, get: function () { return partial_js_1.yep; } });
|
|
11
15
|
Object.defineProperty(exports, "YOK", { enumerable: true, get: function () { return partial_js_1.YOK; } });
|
|
@@ -21,5 +25,11 @@ Object.defineProperty(exports, "OK_TRUE", { enumerable: true, get: function () {
|
|
|
21
25
|
Object.defineProperty(exports, "OK_FALSE", { enumerable: true, get: function () { return result_js_1.OK_FALSE; } });
|
|
22
26
|
var stringify_error_js_1 = require("./stringify-error.cjs");
|
|
23
27
|
Object.defineProperty(exports, "stringifyError", { enumerable: true, get: function () { return stringify_error_js_1.stringifyError; } });
|
|
28
|
+
var to_string_failure_js_1 = require("./to-string-failure.cjs");
|
|
29
|
+
Object.defineProperty(exports, "toStringFailure", { enumerable: true, get: function () { return to_string_failure_js_1.toStringFailure; } });
|
|
24
30
|
var try_js_1 = require("./try.cjs");
|
|
31
|
+
Object.defineProperty(exports, "xtryUnknown", { enumerable: true, get: function () { return try_js_1.xtry; } });
|
|
32
|
+
Object.defineProperty(exports, "xtryAsync", { enumerable: true, get: function () { return try_js_1.xtryAsync; } });
|
|
33
|
+
Object.defineProperty(exports, "xtryAsyncIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
|
|
25
34
|
Object.defineProperty(exports, "xtry", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
|
|
35
|
+
Object.defineProperty(exports, "xtryIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
|
package/lib/cjs/sync.d.cts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { xdeferSync as xdefer } from './defer.cjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync, xdeferSync as xdefer } from './defer.cjs';
|
|
2
2
|
export type { YResult, YSuccess, YFailure } from './partial.cjs';
|
|
3
|
-
export { yok, yerr, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.cjs';
|
|
3
|
+
export { yok, yerr, yres as yresUnknown, yresAsync, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.cjs';
|
|
4
4
|
export type { Success, Failure, Result } from './result.cjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.cjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.cjs';
|
|
8
|
+
export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.cjs';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toStringFailure = toStringFailure;
|
|
4
|
+
const result_js_1 = require("./result.cjs");
|
|
5
|
+
const stringify_error_js_1 = require("./stringify-error.cjs");
|
|
6
|
+
function toStringFailure(error) {
|
|
7
|
+
return (0, result_js_1.err)((0, stringify_error_js_1.stringifyError)(error));
|
|
8
|
+
}
|
package/lib/cjs/try.cjs
CHANGED
|
@@ -3,35 +3,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.xtry = xtry;
|
|
4
4
|
exports.xtrySync = xtrySync;
|
|
5
5
|
exports.xtryAsync = xtryAsync;
|
|
6
|
+
exports.xtrySyncIterable = xtrySyncIterable;
|
|
7
|
+
exports.xtryAsyncIterable = xtryAsyncIterable;
|
|
6
8
|
const result_js_1 = require("./result.cjs");
|
|
9
|
+
const is_async_iterable_js_1 = require("./utils/is-async-iterable.cjs");
|
|
7
10
|
const is_promise_like_js_1 = require("./utils/is-promise-like.cjs");
|
|
11
|
+
const is_sync_iterable_js_1 = require("./utils/is-sync-iterable.cjs");
|
|
12
|
+
function handleError(handler, error) {
|
|
13
|
+
if (handler) {
|
|
14
|
+
const newError = handler(error);
|
|
15
|
+
if (newError !== undefined) {
|
|
16
|
+
return (0, result_js_1.err)(newError);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return (0, result_js_1.err)(error);
|
|
20
|
+
} // }}}
|
|
8
21
|
function xtry(func, handler) {
|
|
9
22
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
10
23
|
const run = func instanceof Function ? func : () => func;
|
|
11
|
-
const handleError = (error) => {
|
|
12
|
-
if (handler) {
|
|
13
|
-
const newError = handler(error);
|
|
14
|
-
if (newError !== undefined) {
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
16
|
-
return (0, result_js_1.err)(newError);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return (0, result_js_1.err)(error);
|
|
20
|
-
};
|
|
21
|
-
const handleSuccess = (value) => (0, result_js_1.ok)(value);
|
|
22
24
|
try {
|
|
23
25
|
const value = run();
|
|
24
26
|
if ((0, is_promise_like_js_1.isPromiseLike)(value)) {
|
|
25
|
-
return Promise.resolve(value).then(
|
|
27
|
+
return Promise.resolve(value).then(
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
29
|
+
(value) => (0, result_js_1.ok)(value), (error) => handleError(handler, error));
|
|
30
|
+
}
|
|
31
|
+
if ((0, is_async_iterable_js_1.isAsyncIterable)(value)) {
|
|
32
|
+
return xtryAsyncIterable(value, handler);
|
|
33
|
+
}
|
|
34
|
+
if ((0, is_sync_iterable_js_1.isSyncIterable)(value)) {
|
|
35
|
+
return xtrySyncIterable(value, handler);
|
|
26
36
|
}
|
|
27
37
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
28
38
|
return (0, result_js_1.ok)(value);
|
|
29
39
|
}
|
|
30
40
|
catch (error) {
|
|
31
|
-
|
|
32
|
-
return handleError(error);
|
|
41
|
+
return handleError(handler, error);
|
|
33
42
|
}
|
|
34
|
-
}
|
|
43
|
+
} // }}}
|
|
35
44
|
function xtrySync(func, handler) {
|
|
36
45
|
try {
|
|
37
46
|
const value = func();
|
|
@@ -39,17 +48,9 @@ function xtrySync(func, handler) {
|
|
|
39
48
|
return (0, result_js_1.ok)(value);
|
|
40
49
|
}
|
|
41
50
|
catch (error) {
|
|
42
|
-
|
|
43
|
-
const newError = handler(error);
|
|
44
|
-
if (newError !== undefined) {
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
46
|
-
return (0, result_js_1.err)(newError);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
50
|
-
return (0, result_js_1.err)(error);
|
|
51
|
+
return handleError(handler, error);
|
|
51
52
|
}
|
|
52
|
-
}
|
|
53
|
+
} // }}}
|
|
53
54
|
async function xtryAsync(func, handler) {
|
|
54
55
|
try {
|
|
55
56
|
const value = await (func instanceof Promise ? func : Promise.resolve().then(func));
|
|
@@ -57,14 +58,72 @@ async function xtryAsync(func, handler) {
|
|
|
57
58
|
return (0, result_js_1.ok)(value);
|
|
58
59
|
}
|
|
59
60
|
catch (error) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
return handleError(handler, error);
|
|
62
|
+
}
|
|
63
|
+
} // }}}
|
|
64
|
+
function xtrySyncIterable(iterable, handler) {
|
|
65
|
+
const generator = iterable instanceof Function ? iterable : () => iterable;
|
|
66
|
+
function* iterate() {
|
|
67
|
+
let source;
|
|
68
|
+
try {
|
|
69
|
+
source = generator();
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
yield handleError(handler, error);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!source || typeof source[Symbol.iterator] !== 'function') {
|
|
76
|
+
yield handleError(handler, new TypeError('xtryIterable expects an Iterable'));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const iterator = source[Symbol.iterator]();
|
|
80
|
+
while (true) {
|
|
81
|
+
let step;
|
|
82
|
+
try {
|
|
83
|
+
step = iterator.next();
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
yield handleError(handler, error);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (step.done) {
|
|
90
|
+
return;
|
|
65
91
|
}
|
|
92
|
+
yield (0, result_js_1.ok)(step.value);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return iterate();
|
|
96
|
+
} // }}}
|
|
97
|
+
function xtryAsyncIterable(iterable, handler) {
|
|
98
|
+
const generator = iterable instanceof Function ? iterable : async () => iterable;
|
|
99
|
+
async function* iterate() {
|
|
100
|
+
let source;
|
|
101
|
+
try {
|
|
102
|
+
source = await Promise.resolve(generator());
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
yield handleError(handler, error);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (!source || typeof source[Symbol.asyncIterator] !== 'function') {
|
|
109
|
+
yield handleError(handler, new TypeError('xtryAsyncIterable expects an AsyncIterable'));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
113
|
+
while (true) {
|
|
114
|
+
let step;
|
|
115
|
+
try {
|
|
116
|
+
step = await iterator.next();
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
yield handleError(handler, error);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (step.done) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
yield (0, result_js_1.ok)(step.value);
|
|
66
126
|
}
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
68
|
-
return (0, result_js_1.err)(error);
|
|
69
127
|
}
|
|
70
|
-
|
|
128
|
+
return iterate();
|
|
129
|
+
} // }}}
|
package/lib/cjs/try.d.cts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { type Result } from './result.cjs';
|
|
2
|
-
import { type NonPromiseCallback, type PromiseCallback } from './utils/types.cjs';
|
|
2
|
+
import { type MaybePromise, type NonPromiseCallback, type PromiseCallback } from './utils/types.cjs';
|
|
3
|
+
type AsyncIterableCallback<T> = (() => AsyncIterable<T>) | AsyncIterable<T>;
|
|
4
|
+
type AsyncIterableResult<T, E> = AsyncIterable<VoidableResult<T, E>>;
|
|
3
5
|
type ErrorHandler<T> = (error: unknown) => T | undefined;
|
|
6
|
+
type SyncIterableCallback<T> = (() => Iterable<T>) | Iterable<T>;
|
|
7
|
+
type SyncIterableResult<T, E> = Iterable<VoidableResult<T, E>>;
|
|
4
8
|
type VoidableResult<T, E> = E extends void ? Result<T, unknown> : Result<T, E>;
|
|
9
|
+
export declare function xtry<T, E = unknown>(iterable: SyncIterableCallback<T>, handler?: ErrorHandler<E>): SyncIterableResult<T, E>;
|
|
10
|
+
export declare function xtry<T, E = unknown>(iterable: AsyncIterableCallback<T>, handler?: ErrorHandler<E>): AsyncIterableResult<T, E>;
|
|
5
11
|
export declare function xtry<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
6
12
|
export declare function xtry<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
7
13
|
export declare function xtrySync<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
8
14
|
export declare function xtryAsync<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
15
|
+
export declare function xtrySyncIterable<T, E = unknown>(iterable: Iterable<T> | (() => Iterable<T>), handler?: ErrorHandler<E>): Iterable<VoidableResult<T, E>>;
|
|
16
|
+
export declare function xtryAsyncIterable<T, E = unknown>(iterable: AsyncIterable<T> | Promise<AsyncIterable<T>> | (() => MaybePromise<AsyncIterable<T>>), handler?: ErrorHandler<E>): AsyncIterable<VoidableResult<T, E>>;
|
|
9
17
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isAsyncIterable<T>(item: unknown): item is AsyncIterableIterator<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isSyncIterable<T>(item: unknown): item is IterableIterator<T>;
|
package/lib/esm/async.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { xdeferAsync as xdefer } from './defer.mjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync as xdefer, xdeferSync } from './defer.mjs';
|
|
2
2
|
export type { YResult, YSuccess, YFailure } from './partial.mjs';
|
|
3
|
-
export { yok, yerr, yresAsync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
3
|
+
export { yok, yerr, yres as yresUnknown, yresAsync as yres, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
4
4
|
export type { Success, Failure, Result } from './result.mjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.mjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
8
|
+
export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
package/lib/esm/async.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { xdeferAsync as xdefer } from './defer.mjs';
|
|
2
|
-
export { yok, yerr, yresAsync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync as xdefer, xdeferSync } from './defer.mjs';
|
|
2
|
+
export { yok, yerr, yres as yresUnknown, yresAsync as yres, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
3
3
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
4
4
|
export { stringifyError } from './stringify-error.mjs';
|
|
5
|
-
export {
|
|
5
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
6
|
+
export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
package/lib/esm/index.d.mts
CHANGED
|
@@ -4,4 +4,5 @@ export { yok, yerr, yres, yresAsync, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK
|
|
|
4
4
|
export type { Success, Failure, Result } from './result.mjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.mjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
8
|
+
export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
package/lib/esm/index.mjs
CHANGED
|
@@ -2,4 +2,5 @@ export { xdefer, xdeferAsync, xdeferSync } from './defer.mjs';
|
|
|
2
2
|
export { yok, yerr, yres, yresAsync, yresSync, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
3
3
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
4
4
|
export { stringifyError } from './stringify-error.mjs';
|
|
5
|
-
export {
|
|
5
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
6
|
+
export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
|
package/lib/esm/sync.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { xdeferSync as xdefer } from './defer.mjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync, xdeferSync as xdefer } from './defer.mjs';
|
|
2
2
|
export type { YResult, YSuccess, YFailure } from './partial.mjs';
|
|
3
|
-
export { yok, yerr, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
3
|
+
export { yok, yerr, yres as yresUnknown, yresAsync, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
4
4
|
export type { Success, Failure, Result } from './result.mjs';
|
|
5
5
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
6
6
|
export { stringifyError } from './stringify-error.mjs';
|
|
7
|
-
export {
|
|
7
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
8
|
+
export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.mjs';
|
package/lib/esm/sync.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { xdeferSync as xdefer } from './defer.mjs';
|
|
2
|
-
export { yok, yerr, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
1
|
+
export { xdefer as xdeferUnknown, xdeferAsync, xdeferSync as xdefer } from './defer.mjs';
|
|
2
|
+
export { yok, yerr, yres as yresUnknown, yresAsync, yresSync as yres, yep, YOK, YOK_NULL, YOK_TRUE, YOK_FALSE } from './partial.mjs';
|
|
3
3
|
export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
|
|
4
4
|
export { stringifyError } from './stringify-error.mjs';
|
|
5
|
-
export {
|
|
5
|
+
export { toStringFailure } from './to-string-failure.mjs';
|
|
6
|
+
export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.mjs';
|
package/lib/esm/try.d.mts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { type Result } from './result.mjs';
|
|
2
|
-
import { type NonPromiseCallback, type PromiseCallback } from './utils/types.mjs';
|
|
2
|
+
import { type MaybePromise, type NonPromiseCallback, type PromiseCallback } from './utils/types.mjs';
|
|
3
|
+
type AsyncIterableCallback<T> = (() => AsyncIterable<T>) | AsyncIterable<T>;
|
|
4
|
+
type AsyncIterableResult<T, E> = AsyncIterable<VoidableResult<T, E>>;
|
|
3
5
|
type ErrorHandler<T> = (error: unknown) => T | undefined;
|
|
6
|
+
type SyncIterableCallback<T> = (() => Iterable<T>) | Iterable<T>;
|
|
7
|
+
type SyncIterableResult<T, E> = Iterable<VoidableResult<T, E>>;
|
|
4
8
|
type VoidableResult<T, E> = E extends void ? Result<T, unknown> : Result<T, E>;
|
|
9
|
+
export declare function xtry<T, E = unknown>(iterable: SyncIterableCallback<T>, handler?: ErrorHandler<E>): SyncIterableResult<T, E>;
|
|
10
|
+
export declare function xtry<T, E = unknown>(iterable: AsyncIterableCallback<T>, handler?: ErrorHandler<E>): AsyncIterableResult<T, E>;
|
|
5
11
|
export declare function xtry<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
6
12
|
export declare function xtry<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
7
13
|
export declare function xtrySync<T, E = unknown>(func: NonPromiseCallback<T>, handler?: ErrorHandler<E>): VoidableResult<T, E>;
|
|
8
14
|
export declare function xtryAsync<T, E = unknown>(func: PromiseCallback<T>, handler?: ErrorHandler<E>): Promise<VoidableResult<T, E>>;
|
|
15
|
+
export declare function xtrySyncIterable<T, E = unknown>(iterable: Iterable<T> | (() => Iterable<T>), handler?: ErrorHandler<E>): Iterable<VoidableResult<T, E>>;
|
|
16
|
+
export declare function xtryAsyncIterable<T, E = unknown>(iterable: AsyncIterable<T> | Promise<AsyncIterable<T>> | (() => MaybePromise<AsyncIterable<T>>), handler?: ErrorHandler<E>): AsyncIterable<VoidableResult<T, E>>;
|
|
9
17
|
export {};
|
package/lib/esm/try.mjs
CHANGED
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
import { err, ok } from './result.mjs';
|
|
2
|
+
import { isAsyncIterable } from './utils/is-async-iterable.mjs';
|
|
2
3
|
import { isPromiseLike } from './utils/is-promise-like.mjs';
|
|
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
|
+
} // }}}
|
|
3
14
|
export function xtry(func, handler) {
|
|
4
15
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
5
16
|
const run = func instanceof Function ? func : () => func;
|
|
6
|
-
const handleError = (error) => {
|
|
7
|
-
if (handler) {
|
|
8
|
-
const newError = handler(error);
|
|
9
|
-
if (newError !== undefined) {
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
11
|
-
return err(newError);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return err(error);
|
|
15
|
-
};
|
|
16
|
-
const handleSuccess = (value) => ok(value);
|
|
17
17
|
try {
|
|
18
18
|
const value = run();
|
|
19
19
|
if (isPromiseLike(value)) {
|
|
20
|
-
return Promise.resolve(value).then(
|
|
20
|
+
return Promise.resolve(value).then(
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
22
|
+
(value) => ok(value), (error) => handleError(handler, error));
|
|
23
|
+
}
|
|
24
|
+
if (isAsyncIterable(value)) {
|
|
25
|
+
return xtryAsyncIterable(value, handler);
|
|
26
|
+
}
|
|
27
|
+
if (isSyncIterable(value)) {
|
|
28
|
+
return xtrySyncIterable(value, handler);
|
|
21
29
|
}
|
|
22
30
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
23
31
|
return ok(value);
|
|
24
32
|
}
|
|
25
33
|
catch (error) {
|
|
26
|
-
|
|
27
|
-
return handleError(error);
|
|
34
|
+
return handleError(handler, error);
|
|
28
35
|
}
|
|
29
|
-
}
|
|
36
|
+
} // }}}
|
|
30
37
|
export function xtrySync(func, handler) {
|
|
31
38
|
try {
|
|
32
39
|
const value = func();
|
|
@@ -34,17 +41,9 @@ export function xtrySync(func, handler) {
|
|
|
34
41
|
return ok(value);
|
|
35
42
|
}
|
|
36
43
|
catch (error) {
|
|
37
|
-
|
|
38
|
-
const newError = handler(error);
|
|
39
|
-
if (newError !== undefined) {
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
41
|
-
return err(newError);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
45
|
-
return err(error);
|
|
44
|
+
return handleError(handler, error);
|
|
46
45
|
}
|
|
47
|
-
}
|
|
46
|
+
} // }}}
|
|
48
47
|
export async function xtryAsync(func, handler) {
|
|
49
48
|
try {
|
|
50
49
|
const value = await (func instanceof Promise ? func : Promise.resolve().then(func));
|
|
@@ -52,14 +51,72 @@ export async function xtryAsync(func, handler) {
|
|
|
52
51
|
return ok(value);
|
|
53
52
|
}
|
|
54
53
|
catch (error) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
return handleError(handler, error);
|
|
55
|
+
}
|
|
56
|
+
} // }}}
|
|
57
|
+
export function xtrySyncIterable(iterable, handler) {
|
|
58
|
+
const generator = iterable instanceof Function ? iterable : () => iterable;
|
|
59
|
+
function* iterate() {
|
|
60
|
+
let source;
|
|
61
|
+
try {
|
|
62
|
+
source = generator();
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
yield handleError(handler, error);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!source || typeof source[Symbol.iterator] !== 'function') {
|
|
69
|
+
yield handleError(handler, new TypeError('xtryIterable expects an Iterable'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const iterator = source[Symbol.iterator]();
|
|
73
|
+
while (true) {
|
|
74
|
+
let step;
|
|
75
|
+
try {
|
|
76
|
+
step = iterator.next();
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
yield handleError(handler, error);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (step.done) {
|
|
83
|
+
return;
|
|
60
84
|
}
|
|
85
|
+
yield ok(step.value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return iterate();
|
|
89
|
+
} // }}}
|
|
90
|
+
export function xtryAsyncIterable(iterable, handler) {
|
|
91
|
+
const generator = iterable instanceof Function ? iterable : async () => iterable;
|
|
92
|
+
async function* iterate() {
|
|
93
|
+
let source;
|
|
94
|
+
try {
|
|
95
|
+
source = await Promise.resolve(generator());
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
yield handleError(handler, error);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (!source || typeof source[Symbol.asyncIterator] !== 'function') {
|
|
102
|
+
yield handleError(handler, new TypeError('xtryAsyncIterable expects an AsyncIterable'));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
106
|
+
while (true) {
|
|
107
|
+
let step;
|
|
108
|
+
try {
|
|
109
|
+
step = await iterator.next();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
yield handleError(handler, error);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (step.done) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
yield ok(step.value);
|
|
61
119
|
}
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
63
|
-
return err(error);
|
|
64
120
|
}
|
|
65
|
-
|
|
121
|
+
return iterate();
|
|
122
|
+
} // }}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isAsyncIterable<T>(item: unknown): item is AsyncIterableIterator<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isSyncIterable<T>(item: unknown): item is IterableIterator<T>;
|