@zokugun/xtry 0.11.0 → 0.11.1
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/lib/cjs/try.cjs +7 -10
- package/lib/esm/try.mjs +7 -10
- package/package.json +2 -1
package/lib/cjs/try.cjs
CHANGED
|
@@ -19,10 +19,8 @@ function handleError(handler, error) {
|
|
|
19
19
|
return (0, result_js_1.err)(error);
|
|
20
20
|
} // }}}
|
|
21
21
|
function xtry(func, handler) {
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
23
|
-
const run = func instanceof Function ? func : () => func;
|
|
24
22
|
try {
|
|
25
|
-
const value =
|
|
23
|
+
const value = typeof func === 'function' ? func() : func;
|
|
26
24
|
if ((0, is_promise_like_js_1.isPromiseLike)(value)) {
|
|
27
25
|
return Promise.resolve(value).then(
|
|
28
26
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
@@ -53,7 +51,7 @@ function xtrySync(func, handler) {
|
|
|
53
51
|
} // }}}
|
|
54
52
|
async function xtryAsync(func, handler) {
|
|
55
53
|
try {
|
|
56
|
-
const value = await (func instanceof Promise ? func : Promise.resolve().then(func));
|
|
54
|
+
const value = await (func instanceof Promise || (0, is_async_iterable_js_1.isAsyncIterable)(func) ? func : Promise.resolve().then(func));
|
|
57
55
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
58
56
|
return (0, result_js_1.ok)(value);
|
|
59
57
|
}
|
|
@@ -62,21 +60,20 @@ async function xtryAsync(func, handler) {
|
|
|
62
60
|
}
|
|
63
61
|
} // }}}
|
|
64
62
|
function xtrySyncIterable(iterable, handler) {
|
|
65
|
-
const generator = iterable instanceof Function ? iterable : () => iterable;
|
|
66
63
|
function* iterate() {
|
|
67
|
-
let
|
|
64
|
+
let generator;
|
|
68
65
|
try {
|
|
69
|
-
|
|
66
|
+
generator = typeof iterable === 'function' ? iterable() : iterable;
|
|
70
67
|
}
|
|
71
68
|
catch (error) {
|
|
72
69
|
yield handleError(handler, error);
|
|
73
70
|
return;
|
|
74
71
|
}
|
|
75
|
-
if (!
|
|
72
|
+
if (!generator || typeof generator[Symbol.iterator] !== 'function') {
|
|
76
73
|
yield handleError(handler, new TypeError('xtryIterable expects an Iterable'));
|
|
77
74
|
return;
|
|
78
75
|
}
|
|
79
|
-
const iterator =
|
|
76
|
+
const iterator = generator[Symbol.iterator]();
|
|
80
77
|
while (true) {
|
|
81
78
|
let step;
|
|
82
79
|
try {
|
|
@@ -95,7 +92,7 @@ function xtrySyncIterable(iterable, handler) {
|
|
|
95
92
|
return iterate();
|
|
96
93
|
} // }}}
|
|
97
94
|
function xtryAsyncIterable(iterable, handler) {
|
|
98
|
-
const generator = iterable
|
|
95
|
+
const generator = typeof iterable === 'function' ? iterable : async () => iterable;
|
|
99
96
|
async function* iterate() {
|
|
100
97
|
let source;
|
|
101
98
|
try {
|
package/lib/esm/try.mjs
CHANGED
|
@@ -12,10 +12,8 @@ function handleError(handler, error) {
|
|
|
12
12
|
return err(error);
|
|
13
13
|
} // }}}
|
|
14
14
|
export function xtry(func, handler) {
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
16
|
-
const run = func instanceof Function ? func : () => func;
|
|
17
15
|
try {
|
|
18
|
-
const value =
|
|
16
|
+
const value = typeof func === 'function' ? func() : func;
|
|
19
17
|
if (isPromiseLike(value)) {
|
|
20
18
|
return Promise.resolve(value).then(
|
|
21
19
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
@@ -46,7 +44,7 @@ export function xtrySync(func, handler) {
|
|
|
46
44
|
} // }}}
|
|
47
45
|
export async function xtryAsync(func, handler) {
|
|
48
46
|
try {
|
|
49
|
-
const value = await (func instanceof Promise ? func : Promise.resolve().then(func));
|
|
47
|
+
const value = await (func instanceof Promise || isAsyncIterable(func) ? func : Promise.resolve().then(func));
|
|
50
48
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
51
49
|
return ok(value);
|
|
52
50
|
}
|
|
@@ -55,21 +53,20 @@ export async function xtryAsync(func, handler) {
|
|
|
55
53
|
}
|
|
56
54
|
} // }}}
|
|
57
55
|
export function xtrySyncIterable(iterable, handler) {
|
|
58
|
-
const generator = iterable instanceof Function ? iterable : () => iterable;
|
|
59
56
|
function* iterate() {
|
|
60
|
-
let
|
|
57
|
+
let generator;
|
|
61
58
|
try {
|
|
62
|
-
|
|
59
|
+
generator = typeof iterable === 'function' ? iterable() : iterable;
|
|
63
60
|
}
|
|
64
61
|
catch (error) {
|
|
65
62
|
yield handleError(handler, error);
|
|
66
63
|
return;
|
|
67
64
|
}
|
|
68
|
-
if (!
|
|
65
|
+
if (!generator || typeof generator[Symbol.iterator] !== 'function') {
|
|
69
66
|
yield handleError(handler, new TypeError('xtryIterable expects an Iterable'));
|
|
70
67
|
return;
|
|
71
68
|
}
|
|
72
|
-
const iterator =
|
|
69
|
+
const iterator = generator[Symbol.iterator]();
|
|
73
70
|
while (true) {
|
|
74
71
|
let step;
|
|
75
72
|
try {
|
|
@@ -88,7 +85,7 @@ export function xtrySyncIterable(iterable, handler) {
|
|
|
88
85
|
return iterate();
|
|
89
86
|
} // }}}
|
|
90
87
|
export function xtryAsyncIterable(iterable, handler) {
|
|
91
|
-
const generator = iterable
|
|
88
|
+
const generator = typeof iterable === 'function' ? iterable : async () => iterable;
|
|
92
89
|
async function* iterate() {
|
|
93
90
|
let source;
|
|
94
91
|
try {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zokugun/xtry",
|
|
3
3
|
"description": "simple try/catch wrapper returning Result",
|
|
4
|
-
"version": "0.11.
|
|
4
|
+
"version": "0.11.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Baptiste Augrain",
|
|
7
7
|
"email": "daiyam@zokugun.org"
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"test:coverage": "vitest run --reporter tree --coverage --coverage.reporter text",
|
|
76
76
|
"test:ui": "vitest --ui --coverage",
|
|
77
77
|
"test:watch": "vitest",
|
|
78
|
+
"watch:build": "tsc-watch -p src --onSuccess 'npm run build'",
|
|
78
79
|
"watch:src": "tsc-watch -p src",
|
|
79
80
|
"watch:test": "tsc-watch -p test"
|
|
80
81
|
},
|