@zokugun/xtry 0.7.2 → 0.8.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 CHANGED
@@ -174,6 +174,27 @@ All helpers:
174
174
  - execute the supplied function and capture thrown values;
175
175
  - call the optional `handler` before turning that value into `err(error)`;
176
176
 
177
+ ### xtryify helpers
178
+
179
+ `xtryify*` helpers turn any function into a reusable wrapper that always yields a `Result`, saving you from retyping `xtry(…)` every time you call it.
180
+
181
+ ```typescript
182
+ import { xtryifyAsync, xtryifySync } from '@zokugun/xtry'
183
+
184
+ const fetchUserSafely = xtryifyAsync((id: string) => fetch(`/users/${id}`).then(r => r.json()));
185
+ const parseConfig = xtryifySync(() => JSON.parse(readFileSync('config.json', 'utf8')));
186
+
187
+ const userResult = await fetchUserSafely('42');
188
+ const configResult = parseConfig();
189
+ ```
190
+
191
+ Available variants mirror the regular helpers:
192
+
193
+ - `xtryifySync(fn)` and `xtryifyAsync(fn)` return new functions that forward arguments to `fn` and capture thrown/errors as `Result` objects.
194
+ - `xtryifySyncIterable(fn)` and `xtryifyAsyncIterable(fn)` wrap functions that return iterables/async iterables, yielding streams of `Result` values.
195
+
196
+ Because the returned function already encapsulates the try/catch logic, you can share it across modules (e.g., inject into DI containers or export once for common utilities) while keeping strong `Result` typing for every call site.
197
+
177
198
  ### Partial helpers
178
199
 
179
200
  ```typescript
package/lib/cjs/async.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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;
3
+ exports.xtryifySyncIterable = exports.xtryifySync = exports.xtryifyIterable = exports.xtryify = 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
5
  Object.defineProperty(exports, "xdeferUnknown", { enumerable: true, get: function () { return defer_js_1.xdefer; } });
6
6
  Object.defineProperty(exports, "xdefer", { enumerable: true, get: function () { return defer_js_1.xdeferAsync; } });
@@ -33,3 +33,8 @@ Object.defineProperty(exports, "xtry", { enumerable: true, get: function () { re
33
33
  Object.defineProperty(exports, "xtryIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
34
34
  Object.defineProperty(exports, "xtrySync", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
35
35
  Object.defineProperty(exports, "xtrySyncIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
36
+ var tryify_js_1 = require("./tryify.cjs");
37
+ Object.defineProperty(exports, "xtryify", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsync; } });
38
+ Object.defineProperty(exports, "xtryifyIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsyncIterable; } });
39
+ Object.defineProperty(exports, "xtryifySync", { enumerable: true, get: function () { return tryify_js_1.xtryifySync; } });
40
+ Object.defineProperty(exports, "xtryifySyncIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifySyncIterable; } });
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
7
7
  export { stringifyError } from './stringify-error.cjs';
8
8
  export { toStringFailure } from './to-string-failure.cjs';
9
9
  export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.cjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.cjs';
11
+ export { xtryifyAsync as xtryify, xtryifyAsyncIterable as xtryifyIterable, xtryifySync, xtryifySyncIterable } from './tryify.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.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;
3
+ exports.xtryifySyncIterable = exports.xtryifySync = exports.xtryifyAsyncIterable = exports.xtryifyAsync = 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; } });
@@ -33,3 +33,8 @@ Object.defineProperty(exports, "xtryAsync", { enumerable: true, get: function ()
33
33
  Object.defineProperty(exports, "xtryAsyncIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
34
34
  Object.defineProperty(exports, "xtrySync", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
35
35
  Object.defineProperty(exports, "xtrySyncIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
36
+ var tryify_js_1 = require("./tryify.cjs");
37
+ Object.defineProperty(exports, "xtryifyAsync", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsync; } });
38
+ Object.defineProperty(exports, "xtryifyAsyncIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsyncIterable; } });
39
+ Object.defineProperty(exports, "xtryifySync", { enumerable: true, get: function () { return tryify_js_1.xtryifySync; } });
40
+ Object.defineProperty(exports, "xtryifySyncIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifySyncIterable; } });
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
7
7
  export { stringifyError } from './stringify-error.cjs';
8
8
  export { toStringFailure } from './to-string-failure.cjs';
9
9
  export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.cjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.cjs';
11
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync, xtryifySyncIterable } from './tryify.cjs';
package/lib/cjs/sync.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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;
3
+ exports.xtryifyIterable = exports.xtryify = exports.xtryifyAsyncIterable = exports.xtryifyAsync = 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
5
  Object.defineProperty(exports, "xdeferUnknown", { enumerable: true, get: function () { return defer_js_1.xdefer; } });
6
6
  Object.defineProperty(exports, "xdeferAsync", { enumerable: true, get: function () { return defer_js_1.xdeferAsync; } });
@@ -33,3 +33,8 @@ Object.defineProperty(exports, "xtryAsync", { enumerable: true, get: function ()
33
33
  Object.defineProperty(exports, "xtryAsyncIterable", { enumerable: true, get: function () { return try_js_1.xtryAsyncIterable; } });
34
34
  Object.defineProperty(exports, "xtry", { enumerable: true, get: function () { return try_js_1.xtrySync; } });
35
35
  Object.defineProperty(exports, "xtryIterable", { enumerable: true, get: function () { return try_js_1.xtrySyncIterable; } });
36
+ var tryify_js_1 = require("./tryify.cjs");
37
+ Object.defineProperty(exports, "xtryifyAsync", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsync; } });
38
+ Object.defineProperty(exports, "xtryifyAsyncIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifyAsyncIterable; } });
39
+ Object.defineProperty(exports, "xtryify", { enumerable: true, get: function () { return tryify_js_1.xtryifySync; } });
40
+ Object.defineProperty(exports, "xtryifyIterable", { enumerable: true, get: function () { return tryify_js_1.xtryifySyncIterable; } });
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.cjs';
7
7
  export { stringifyError } from './stringify-error.cjs';
8
8
  export { toStringFailure } from './to-string-failure.cjs';
9
9
  export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.cjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.cjs';
11
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync as xtryify, xtryifySyncIterable as xtryifyIterable } from './tryify.cjs';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xtryifyAsync = xtryifyAsync;
4
+ exports.xtryifyAsyncIterable = xtryifyAsyncIterable;
5
+ exports.xtryifySync = xtryifySync;
6
+ exports.xtryifySyncIterable = xtryifySyncIterable;
7
+ const try_js_1 = require("./try.cjs");
8
+ function xtryifyAsync(fn) {
9
+ return async function (...args) {
10
+ return (0, try_js_1.xtryAsync)(fn(...args));
11
+ };
12
+ }
13
+ function xtryifyAsyncIterable(fn) {
14
+ return function (...args) {
15
+ return (0, try_js_1.xtryAsyncIterable)(fn(...args));
16
+ };
17
+ }
18
+ function xtryifySync(fn) {
19
+ return function (...args) {
20
+ return (0, try_js_1.xtrySync)(() => fn(...args));
21
+ };
22
+ }
23
+ function xtryifySyncIterable(fn) {
24
+ return function (...args) {
25
+ return (0, try_js_1.xtrySyncIterable)(fn(...args));
26
+ };
27
+ }
@@ -0,0 +1,16 @@
1
+ import { type Result } from './result.cjs';
2
+ import { type NotPromise } from './utils/types.cjs';
3
+ 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 {
4
+ [Symbol.asyncIterator]: (...args: unknown[]) => infer I;
5
+ } ? AsyncIteratorElement<I> : unknown;
6
+ export type SyncIteratorElement<T> = T extends Iterator<infer E> ? E : T extends Iterable<infer E> ? E : T extends {
7
+ [Symbol.iterator]: (...args: unknown[]) => infer I;
8
+ } ? SyncIteratorElement<I> : unknown;
9
+ export type AsyncResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Promise<Result<Awaited<ReturnType<T>>, Err>>;
10
+ export type AsyncIteratableResult<T extends (...args: unknown[]) => unknown, Err extends Error> = AsyncIterable<Result<AsyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
11
+ export type SyncResult<T extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error> = Result<ReturnType<T>, Err>;
12
+ export type SyncIteratableResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Iterable<Result<SyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
13
+ export declare function xtryifyAsync<Fn extends (...args: unknown[]) => Promise<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => AsyncResult<Fn, Err>;
14
+ export declare function xtryifyAsyncIterable<Fn extends (...args: unknown[]) => AsyncIterable<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => AsyncIteratableResult<Fn, Err>;
15
+ export declare function xtryifySync<Fn extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => SyncResult<Fn, Err>;
16
+ export declare function xtryifySyncIterable<Fn extends (...args: unknown[]) => Iterable<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => SyncIteratableResult<Fn, Err>;
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
7
7
  export { stringifyError } from './stringify-error.mjs';
8
8
  export { toStringFailure } from './to-string-failure.mjs';
9
9
  export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.mjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.mjs';
11
+ export { xtryifyAsync as xtryify, xtryifyAsyncIterable as xtryifyIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
package/lib/esm/async.mjs CHANGED
@@ -4,3 +4,4 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
4
4
  export { stringifyError } from './stringify-error.mjs';
5
5
  export { toStringFailure } from './to-string-failure.mjs';
6
6
  export { xtry as xtryUnknown, xtryAsync as xtry, xtryAsyncIterable as xtryIterable, xtrySync, xtrySyncIterable } from './try.mjs';
7
+ export { xtryifyAsync as xtryify, xtryifyAsyncIterable as xtryifyIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
7
7
  export { stringifyError } from './stringify-error.mjs';
8
8
  export { toStringFailure } from './to-string-failure.mjs';
9
9
  export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.mjs';
11
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
package/lib/esm/index.mjs CHANGED
@@ -4,3 +4,4 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
4
4
  export { stringifyError } from './stringify-error.mjs';
5
5
  export { toStringFailure } from './to-string-failure.mjs';
6
6
  export { xtry, xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
7
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync, xtryifySyncIterable } from './tryify.mjs';
@@ -7,3 +7,5 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
7
7
  export { stringifyError } from './stringify-error.mjs';
8
8
  export { toStringFailure } from './to-string-failure.mjs';
9
9
  export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.mjs';
10
+ export type { AsyncIteratableResult, AsyncIteratorElement, AsyncResult, SyncIteratableResult, SyncIteratorElement, SyncResult } from './tryify.mjs';
11
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync as xtryify, xtryifySyncIterable as xtryifyIterable } from './tryify.mjs';
package/lib/esm/sync.mjs CHANGED
@@ -4,3 +4,4 @@ export { ok, err, OK, OK_NULL, OK_TRUE, OK_FALSE } from './result.mjs';
4
4
  export { stringifyError } from './stringify-error.mjs';
5
5
  export { toStringFailure } from './to-string-failure.mjs';
6
6
  export { xtry as xtryUnknown, xtryAsync, xtryAsyncIterable, xtrySync as xtry, xtrySyncIterable as xtryIterable } from './try.mjs';
7
+ export { xtryifyAsync, xtryifyAsyncIterable, xtryifySync as xtryify, xtryifySyncIterable as xtryifyIterable } from './tryify.mjs';
@@ -0,0 +1,16 @@
1
+ import { type Result } from './result.mjs';
2
+ import { type NotPromise } from './utils/types.mjs';
3
+ 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 {
4
+ [Symbol.asyncIterator]: (...args: unknown[]) => infer I;
5
+ } ? AsyncIteratorElement<I> : unknown;
6
+ export type SyncIteratorElement<T> = T extends Iterator<infer E> ? E : T extends Iterable<infer E> ? E : T extends {
7
+ [Symbol.iterator]: (...args: unknown[]) => infer I;
8
+ } ? SyncIteratorElement<I> : unknown;
9
+ export type AsyncResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Promise<Result<Awaited<ReturnType<T>>, Err>>;
10
+ export type AsyncIteratableResult<T extends (...args: unknown[]) => unknown, Err extends Error> = AsyncIterable<Result<AsyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
11
+ export type SyncResult<T extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error> = Result<ReturnType<T>, Err>;
12
+ export type SyncIteratableResult<T extends (...args: unknown[]) => unknown, Err extends Error> = Iterable<Result<SyncIteratorElement<ReturnType<T>>, Err>, unknown, unknown>;
13
+ export declare function xtryifyAsync<Fn extends (...args: unknown[]) => Promise<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => AsyncResult<Fn, Err>;
14
+ export declare function xtryifyAsyncIterable<Fn extends (...args: unknown[]) => AsyncIterable<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => AsyncIteratableResult<Fn, Err>;
15
+ export declare function xtryifySync<Fn extends (...args: unknown[]) => NotPromise<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => SyncResult<Fn, Err>;
16
+ export declare function xtryifySyncIterable<Fn extends (...args: unknown[]) => Iterable<unknown>, Err extends Error>(fn: Fn): (...args: Parameters<Fn>) => SyncIteratableResult<Fn, Err>;
@@ -0,0 +1,21 @@
1
+ import { xtryAsync, xtryAsyncIterable, xtrySync, xtrySyncIterable } from './try.mjs';
2
+ export function xtryifyAsync(fn) {
3
+ return async function (...args) {
4
+ return xtryAsync(fn(...args));
5
+ };
6
+ }
7
+ export function xtryifyAsyncIterable(fn) {
8
+ return function (...args) {
9
+ return xtryAsyncIterable(fn(...args));
10
+ };
11
+ }
12
+ export function xtryifySync(fn) {
13
+ return function (...args) {
14
+ return xtrySync(() => fn(...args));
15
+ };
16
+ }
17
+ export function xtryifySyncIterable(fn) {
18
+ return function (...args) {
19
+ return xtrySyncIterable(fn(...args));
20
+ };
21
+ }
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.7.2",
4
+ "version": "0.8.0",
5
5
  "author": {
6
6
  "name": "Baptiste Augrain",
7
7
  "email": "daiyam@zokugun.org"