summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/utils/server-errors.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app/src/utils/server-errors.ts')
-rw-r--r--packages/app/src/utils/server-errors.ts27
1 files changed, 22 insertions, 5 deletions
diff --git a/packages/app/src/utils/server-errors.ts b/packages/app/src/utils/server-errors.ts
index 4b9727e61..85ebca132 100644
--- a/packages/app/src/utils/server-errors.ts
+++ b/packages/app/src/utils/server-errors.ts
@@ -7,11 +7,28 @@ export type ConfigInvalidError = {
}
}
-export function formatServerError(error: unknown) {
- if (isConfigInvalidErrorLike(error)) return parseReabaleConfigInvalidError(error)
+type Label = {
+ unknown: string
+ invalidConfiguration: string
+}
+
+const fallback: Label = {
+ unknown: "Unknown error",
+ invalidConfiguration: "Invalid configuration",
+}
+
+function resolveLabel(labels: Partial<Label> | undefined): Label {
+ return {
+ unknown: labels?.unknown ?? fallback.unknown,
+ invalidConfiguration: labels?.invalidConfiguration ?? fallback.invalidConfiguration,
+ }
+}
+
+export function formatServerError(error: unknown, labels?: Partial<Label>) {
+ if (isConfigInvalidErrorLike(error)) return parseReabaleConfigInvalidError(error, labels)
if (error instanceof Error && error.message) return error.message
if (typeof error === "string" && error) return error
- return "Unknown error"
+ return resolveLabel(labels).unknown
}
function isConfigInvalidErrorLike(error: unknown): error is ConfigInvalidError {
@@ -20,8 +37,8 @@ function isConfigInvalidErrorLike(error: unknown): error is ConfigInvalidError {
return o.name === "ConfigInvalidError" && typeof o.data === "object" && o.data !== null
}
-export function parseReabaleConfigInvalidError(errorInput: ConfigInvalidError) {
- const head = "Invalid configuration"
+export function parseReabaleConfigInvalidError(errorInput: ConfigInvalidError, labels?: Partial<Label>) {
+ const head = resolveLabel(labels).invalidConfiguration
const file = errorInput.data.path && errorInput.data.path !== "config" ? errorInput.data.path : ""
const detail = errorInput.data.message?.trim() ?? ""
const issues = (errorInput.data.issues ?? []).map((issue) => {