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)