Skip to content

Commit 4729069

Browse files
committed
feat: add utility for extracting error message
1 parent 1b9ea3c commit 4729069

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

site/src/util/error.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { errorString, Language } from "./error"
2+
3+
describe("error", () => {
4+
describe("errorStr", () => {
5+
it("returns message if error", () => {
6+
expect(errorString(new Error("foobar"))).toBe("foobar")
7+
})
8+
it("returns message if string", () => {
9+
expect(errorString("bazzle")).toBe("bazzle")
10+
})
11+
it("returns message if undefined or empty", () => {
12+
expect(errorString(undefined)).toBe(Language.noError)
13+
expect(errorString("")).toBe(Language.noError)
14+
})
15+
it("returns message if anything else", () => {
16+
expect(errorString({ qux: "fred" })).toBe(Language.unexpectedError)
17+
expect(errorString({ qux: 1 })).toBe(Language.unexpectedError)
18+
})
19+
})
20+
})

site/src/util/error.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export const Language = {
2+
unexpectedError: "Unexpected error: see console for details",
3+
noError: "No error provided",
4+
}
5+
6+
/**
7+
* Best effort to get a string from what could be an error or anything else.
8+
*/
9+
export const errorString = (error: Error | unknown): string | undefined => {
10+
if (error instanceof Error) {
11+
return error.message
12+
} else if (typeof error === "string") {
13+
return error || Language.noError
14+
} else if (typeof error !== "undefined") {
15+
console.warn(error)
16+
return Language.unexpectedError
17+
} else {
18+
return Language.noError
19+
}
20+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy