Skip to content

Commit a0733d2

Browse files
authored
Merge pull request #4 from lambdalisue/prefer-jsr
Prefer jsr
2 parents 910df8a + 8dcdd30 commit a0733d2

File tree

13 files changed

+140
-108
lines changed

13 files changed

+140
-108
lines changed

README.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
# errorutil
22

33
[![JSR](https://jsr.io/badges/@lambdalisue/errorutil)](https://jsr.io/@lambdalisue/errorutil)
4-
[![denoland](https://img.shields.io/github/v/release/lambdalisue/deno-errorutil?logo=deno&label=denoland)](https://deno.land/x/errorutil)
5-
[![npm](http://img.shields.io/badge/available%20on-npm-lightgrey.svg?logo=npm&logoColor=white)](https://www.npmjs.com/package/@lambdalisue/errorutil)
6-
[![deno doc](https://doc.deno.land/badge.svg)](https://doc.deno.land/https/deno.land/x/errorutil/mod.ts)
74
[![Test](https://github.com/lambdalisue/deno-errorutil/workflows/Test/badge.svg)](https://github.com/lambdalisue/deno-errorutil/actions?query=workflow%3ATest)
8-
[![npm version](https://badge.fury.io/js/@lambdalisue%2Ferrorutil.svg)](https://badge.fury.io/js/@lambdalisue%2Ferrorutil)
95
[![codecov](https://codecov.io/gh/lambdalisue/deno-errorutil/graph/badge.svg?token=O0cA5Xj5la)](https://codecov.io/gh/lambdalisue/deno-errorutil)
106

117
A utility pack for handling error.
128

139
[deno]: https://deno.land/
1410

11+
> [!WARN]
12+
>
13+
> The package on [deno.land] and [npm] is deprecated. Use the package on
14+
> [jsr.io] instead.
15+
>
16+
> ```
17+
> $ deno add @lambdalisue/errorutil
18+
> $ npx jsr add @lambdalisue/errorutil
19+
> ```
20+
21+
[deno.land]: https://deno.land/x/errorutil
22+
[npm]: https://www.npmjs.com/package/@lambdalisue/errorutil
23+
[jsr.io]: https://jsr.io/@lambdalisue/errorutil
24+
1525
## License
1626
1727
The code follows MIT license written in [LICENSE](./LICENSE). Contributors need

deno.jsonc

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
{
22
"name": "@lambdalisue/errorutil",
33
"version": "0.0.0",
4-
"exports": "./mod.ts",
4+
"exports": {
5+
".": "./mod.ts",
6+
"./error-object": "./error_object.ts",
7+
"./raise": "./raise.ts",
8+
"./try-or": "./try_or.ts",
9+
"./try-or-else": "./try_or_else.ts",
10+
"./unimplemented": "./unimplemented.ts",
11+
"./unreachable": "./unreachable.ts"
12+
},
513
"exclude": [
614
".coverage",
715
"npm"
@@ -16,6 +24,12 @@
1624
"update:commit": "deno task -q update --commit --pre-commit=fmt,lint"
1725
},
1826
"imports": {
19-
"https://deno.land/x/errorutil@$MODULE_VERSION/": "./"
27+
"@lambdalisue/errorutil": "./mod.ts",
28+
"@lambdalisue/errorutil/error-object": "./error_object.ts",
29+
"@lambdalisue/errorutil/raise": "./raise.ts",
30+
"@lambdalisue/errorutil/try-or": "./try_or.ts",
31+
"@lambdalisue/errorutil/try-or-else": "./try_or_else.ts",
32+
"@lambdalisue/errorutil/unimplemented": "./unimplemented.ts",
33+
"@lambdalisue/errorutil/unreachable": "./unreachable.ts"
2034
}
2135
}

error_object.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { is } from "jsr:@core/unknownutil";
1+
import { is } from "jsr:@core/unknownutil@3.18.0";
22

33
export type ErrorObject = {
44
proto: string;

error_object_test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assertEquals, assertInstanceOf } from "jsr:@std/assert";
1+
import { assertEquals, assertInstanceOf } from "jsr:@std/assert@0.225.1";
22
import { fromErrorObject, toErrorObject } from "./error_object.ts";
33

44
class CustomError extends Error {

mod.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export * from "./error_object.ts";
22
export * from "./raise.ts";
33
export * from "./try_or.ts";
4+
export * from "./try_or_else.ts";
45
export * from "./unimplemented.ts";
56
export * from "./unreachable.ts";

raise.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* This is function thus can be used as an expression.
55
*
66
* ```typescript
7-
* import { raise } from "https://deno.land/x/errorutil@$MODULE_VERSION/raise.ts";
7+
* import { raise } from "@lambdalisue/errorutil/raise";
88
*
99
* const fn = () => raise(new Error("fail"));
1010
* ```

raise_test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assertThrows } from "jsr:@std/assert";
1+
import { assertThrows } from "jsr:@std/assert@0.225.1";
22
import { raise } from "./raise.ts";
33

44
Deno.test("raise", () => {

try_or.ts

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import { tryOrElse } from "./try_or_else.ts";
12
/**
23
* Try to execute a function and return the result or a default value.
34
*
45
* ```ts
5-
* import { tryOr } from "https://deno.land/x/errorutil@$MODULE_VERSION/try_or.ts";
6-
* import { raise } from "https://deno.land/x/errorutil@$MODULE_VERSION/raise.ts";
6+
* import { tryOr } from "@lambdalisue/errorutil/try-or";
7+
* import { raise } from "@lambdalisue/errorutil/raise";
78
*
89
* // Sync
910
* console.log(tryOr(() => 1, 2)); // 1
@@ -25,39 +26,3 @@ export function tryOr<T>(
2526
): T | Promise<T> {
2627
return tryOrElse(fn, () => orValue);
2728
}
28-
29-
/**
30-
* Try to execute a function and return the result or execute another function.
31-
*
32-
* ```ts
33-
* import { tryOrElse } from "https://deno.land/x/errorutil@$MODULE_VERSION/try_or.ts";
34-
* import { raise } from "https://deno.land/x/errorutil@$MODULE_VERSION/raise.ts";
35-
*
36-
* // Sync
37-
* console.log(tryOrElse(() => 1, () => 2)); // 1
38-
* console.log(tryOrElse(() => raise("err"), () => 2)); // 2
39-
*
40-
* // Async
41-
* console.log(await tryOrElse(() => Promise.resolve(1), () => 2)); // 1
42-
* console.log(await tryOrElse(() => Promise.reject("err"), () => 2)); // 2
43-
* ```
44-
*/
45-
export function tryOrElse<T>(fn: () => T, elseFn: (err: unknown) => T): T;
46-
export function tryOrElse<T>(
47-
fn: () => Promise<T>,
48-
elseFn: (err: unknown) => T | Promise<T>,
49-
): Promise<T>;
50-
export function tryOrElse<T>(
51-
fn: () => T | Promise<T>,
52-
elseFn: (err: unknown) => T | Promise<T>,
53-
): T | Promise<T> {
54-
try {
55-
const ret = fn();
56-
if (ret instanceof Promise) {
57-
return ret.catch((err) => elseFn(err));
58-
}
59-
return ret;
60-
} catch (err) {
61-
return elseFn(err);
62-
}
63-
}

try_or_else.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* Try to execute a function and return the result or execute another function.
3+
*
4+
* ```ts
5+
* import { tryOrElse } from "@lambdalisue/errorutil/try-or-else";
6+
* import { raise } from "@lambdalisue/errorutil/raise";
7+
*
8+
* // Sync
9+
* console.log(tryOrElse(() => 1, () => 2)); // 1
10+
* console.log(tryOrElse(() => raise("err"), () => 2)); // 2
11+
*
12+
* // Async
13+
* console.log(await tryOrElse(() => Promise.resolve(1), () => 2)); // 1
14+
* console.log(await tryOrElse(() => Promise.reject("err"), () => 2)); // 2
15+
* ```
16+
*/
17+
export function tryOrElse<T>(fn: () => T, elseFn: (err: unknown) => T): T;
18+
export function tryOrElse<T>(
19+
fn: () => Promise<T>,
20+
elseFn: (err: unknown) => T | Promise<T>,
21+
): Promise<T>;
22+
export function tryOrElse<T>(
23+
fn: () => T | Promise<T>,
24+
elseFn: (err: unknown) => T | Promise<T>,
25+
): T | Promise<T> {
26+
try {
27+
const ret = fn();
28+
if (ret instanceof Promise) {
29+
return ret.catch((err) => elseFn(err));
30+
}
31+
return ret;
32+
} catch (err) {
33+
return elseFn(err);
34+
}
35+
}

try_or_else_test.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import {
2+
assertEquals,
3+
assertRejects,
4+
assertThrows,
5+
} from "jsr:@std/[email protected]";
6+
import { raise } from "./raise.ts";
7+
import { tryOrElse } from "./try_or_else.ts";
8+
9+
Deno.test("tryOrElse", async (t) => {
10+
const err = new Error("error");
11+
const resolve = Promise.resolve.bind(Promise);
12+
const reject = Promise.reject.bind(Promise);
13+
14+
await t.step("sync", () => {
15+
type T = number;
16+
assertEquals(tryOrElse((): T => 1, () => 2), 1);
17+
assertEquals(tryOrElse((): T => raise(err), () => 2), 2);
18+
});
19+
20+
await t.step("sync (error)", () => {
21+
type T = number;
22+
assertThrows(
23+
() => tryOrElse((): T => raise(err), () => raise(err)),
24+
Error,
25+
"error",
26+
);
27+
});
28+
29+
await t.step("async", async () => {
30+
type T = Promise<number>;
31+
assertEquals(await tryOrElse((): T => resolve(1), () => 2), 1);
32+
assertEquals(await tryOrElse((): T => resolve(1), () => resolve(2)), 1);
33+
assertEquals(await tryOrElse((): T => reject(err), () => 2), 2);
34+
assertEquals(await tryOrElse((): T => reject(err), () => resolve(2)), 2);
35+
assertEquals(await tryOrElse((): T => raise(err), () => 2), 2);
36+
assertEquals(await tryOrElse((): T => raise(err), () => resolve(2)), 2);
37+
});
38+
39+
await t.step("async (error)", async () => {
40+
type T = Promise<number>;
41+
await assertRejects(
42+
() => tryOrElse((): T => reject(err), () => reject(err)),
43+
Error,
44+
"error",
45+
);
46+
await assertRejects(
47+
() => tryOrElse((): T => reject(err), () => raise(err)),
48+
Error,
49+
"error",
50+
);
51+
await assertRejects(
52+
() => tryOrElse((): T => raise(err), () => reject(err)),
53+
Error,
54+
"error",
55+
);
56+
assertThrows(
57+
() => tryOrElse((): T => raise(err), () => raise(err)),
58+
Error,
59+
"error",
60+
);
61+
});
62+
});

0 commit comments

Comments
 (0)