Skip to content

Commit 8dcdd30

Browse files
committed
📝 Deprecate packages on deno.land or npm
1 parent 6a6ac25 commit 8dcdd30

File tree

10 files changed

+137
-109
lines changed

10 files changed

+137
-109
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
}

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
* ```

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+
});

try_or_test.ts

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
import {
2-
assertEquals,
3-
assertRejects,
4-
assertThrows,
5-
} from "jsr:@std/[email protected]";
1+
import { assertEquals } from "jsr:@std/[email protected]";
62
import { raise } from "./raise.ts";
7-
import { tryOr, tryOrElse } from "./try_or.ts";
3+
import { tryOr } from "./try_or.ts";
84

95
Deno.test("tryOr", async (t) => {
106
const err = new Error("error");
@@ -27,58 +23,3 @@ Deno.test("tryOr", async (t) => {
2723
assertEquals(await tryOr((): T => raise(err), resolve(2)), 2);
2824
});
2925
});
30-
31-
Deno.test("tryOrElse", async (t) => {
32-
const err = new Error("error");
33-
const resolve = Promise.resolve.bind(Promise);
34-
const reject = Promise.reject.bind(Promise);
35-
36-
await t.step("sync", () => {
37-
type T = number;
38-
assertEquals(tryOrElse((): T => 1, () => 2), 1);
39-
assertEquals(tryOrElse((): T => raise(err), () => 2), 2);
40-
});
41-
42-
await t.step("sync (error)", () => {
43-
type T = number;
44-
assertThrows(
45-
() => tryOrElse((): T => raise(err), () => raise(err)),
46-
Error,
47-
"error",
48-
);
49-
});
50-
51-
await t.step("async", async () => {
52-
type T = Promise<number>;
53-
assertEquals(await tryOrElse((): T => resolve(1), () => 2), 1);
54-
assertEquals(await tryOrElse((): T => resolve(1), () => resolve(2)), 1);
55-
assertEquals(await tryOrElse((): T => reject(err), () => 2), 2);
56-
assertEquals(await tryOrElse((): T => reject(err), () => resolve(2)), 2);
57-
assertEquals(await tryOrElse((): T => raise(err), () => 2), 2);
58-
assertEquals(await tryOrElse((): T => raise(err), () => resolve(2)), 2);
59-
});
60-
61-
await t.step("async (error)", async () => {
62-
type T = Promise<number>;
63-
await assertRejects(
64-
() => tryOrElse((): T => reject(err), () => reject(err)),
65-
Error,
66-
"error",
67-
);
68-
await assertRejects(
69-
() => tryOrElse((): T => reject(err), () => raise(err)),
70-
Error,
71-
"error",
72-
);
73-
await assertRejects(
74-
() => tryOrElse((): T => raise(err), () => reject(err)),
75-
Error,
76-
"error",
77-
);
78-
assertThrows(
79-
() => tryOrElse((): T => raise(err), () => raise(err)),
80-
Error,
81-
"error",
82-
);
83-
});
84-
});

unimplemented.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class UnimplementedError extends Error {
1616
* For example, defining a mock object with `unimplemented` function should look like this:
1717
*
1818
* ```ts
19-
* import { unimplemented } from "https://deno.land/x/errorutil@$MODULE_VERSION/unimplemented.ts";
19+
* import { unimplemented } from "@lambdalisue/errorutil/unimplemented";
2020
*
2121
* type Service = {
2222
* get(id: string): Promise<string>;

unreachable.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class UnreachableError extends Error {
1919
* For example, the following code passed type checking.
2020
*
2121
* ```ts
22-
* import { unreachable } from "https://deno.land/x/errorutil@$MODULE_VERSION/unreachable.ts";
22+
* import { unreachable } from "@lambdalisue/errorutil/unreachable";
2323
*
2424
* type Animal = "dog" | "cat";
2525
*
@@ -41,7 +41,7 @@ export class UnreachableError extends Error {
4141
* But the following code because a case for "bird" is missing.
4242
*
4343
* ```ts
44-
* import { unreachable } from "https://deno.land/x/errorutil@$MODULE_VERSION/unreachable.ts";
44+
* import { unreachable } from "@lambdalisue/errorutil/unreachable";
4545
*
4646
* type Animal = "dog" | "cat" | "bird";
4747
*

0 commit comments

Comments
 (0)