@zokugun/xtry 0.11.0 → 0.11.2

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 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 = run();
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 source;
64
+ let generator;
68
65
  try {
69
- source = generator();
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 (!source || typeof source[Symbol.iterator] !== 'function') {
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 = source[Symbol.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 instanceof Function ? iterable : async () => 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 = run();
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 source;
57
+ let generator;
61
58
  try {
62
- source = generator();
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 (!source || typeof source[Symbol.iterator] !== 'function') {
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 = source[Symbol.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 instanceof Function ? iterable : async () => 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.0",
4
+ "version": "0.11.2",
5
5
  "author": {
6
6
  "name": "Baptiste Augrain",
7
7
  "email": "daiyam@zokugun.org"
@@ -13,7 +13,7 @@
13
13
  "url": "git+https://github.com/zokugun/node-xtry.git"
14
14
  },
15
15
  "bugs": {
16
- "url": "https://github.com/zokugun/node-xtry/issues"
16
+ "url": "https://github.com/zokugun/node-xtry/discussions/categories/issue-triage"
17
17
  },
18
18
  "type": "module",
19
19
  "exports": {
@@ -63,9 +63,13 @@
63
63
  "build": "npm run clean && npm run build:lib",
64
64
  "build:lib": "tsc-leda generate",
65
65
  "build:package": "tsc-leda update-package",
66
+ "ci:lint": "zizmor .",
67
+ "ci:lint:fix": "zizmor . --fix=all",
68
+ "ci:update": "PINACT_MIN_AGE=7 pinact run",
66
69
  "clean": "rimraf lib .test",
67
70
  "compile:src": "tsc -p src",
68
71
  "compile:test": "tsc -p test",
72
+ "deps:update": "taze",
69
73
  "lint": "xo",
70
74
  "lint:fix": "xo --fix",
71
75
  "prepack": "npm run build",
@@ -75,35 +79,31 @@
75
79
  "test:coverage": "vitest run --reporter tree --coverage --coverage.reporter text",
76
80
  "test:ui": "vitest --ui --coverage",
77
81
  "test:watch": "vitest",
82
+ "watch:build": "tsc-watch -p src --onSuccess 'npm run build'",
78
83
  "watch:src": "tsc-watch -p src",
79
84
  "watch:test": "tsc-watch -p test"
80
85
  },
81
- "dependencies": {},
82
86
  "devDependencies": {
83
- "@commitlint/cli": "^19.7.1",
84
- "@commitlint/config-conventional": "^19.7.1",
85
- "@types/fs-extra": "^11.0.4",
86
- "@types/node": "^20.14.8",
87
- "@vitest/coverage-v8": "^4.0.18",
88
- "@vitest/ui": "^4.0.18",
89
- "@zokugun/fs-extra-plus": "^0.3.3",
90
- "@zokugun/tsc-leda": "^0.1.1",
91
- "fixpack": "^4.0.0",
92
- "fs-extra": "^11.3.3",
93
- "globby": "^16.1.1",
94
- "husky": "^9.1.7",
95
- "lint-staged": "^16.1.4",
96
- "release-it": "^19.2.4",
97
- "tsc-watch": "^7.2.0",
98
- "typescript": "^5.7.3",
99
- "vitest": "^4.0.18",
87
+ "@commitlint/cli": "19.8.1",
88
+ "@commitlint/config-conventional": "19.8.1",
89
+ "@types/fs-extra": "11.0.4",
90
+ "@types/node": "20.19.39",
91
+ "@vitest/coverage-v8": "4.1.2",
92
+ "@vitest/ui": "4.1.2",
93
+ "@zokugun/fs-extra-plus": "0.3.6",
94
+ "@zokugun/tsc-leda": "0.1.6",
95
+ "fixpack": "4.0.0",
96
+ "fs-extra": "11.3.4",
97
+ "globby": "16.2.0",
98
+ "husky": "9.1.7",
99
+ "lint-staged": "16.4.0",
100
+ "release-it": "20.0.0-1",
101
+ "taze": "19.11.0",
102
+ "tsc-watch": "7.2.0",
103
+ "typescript": "5.9.3",
104
+ "vitest": "4.1.2",
100
105
  "xo": "0.60.0"
101
106
  },
102
- "overrides": {
103
- "terser-webpack-plugin": {
104
- "serialize-javascript": "^7.0.3"
105
- }
106
- },
107
107
  "keywords": [
108
108
  "catch",
109
109
  "error",