文件
hyb-oa/client/src/lib/resolveErrorMessage.ts
T

36 行
1011 B
TypeScript
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
import { isApiError } from "../api/types";
import { mapApiErrorMessage } from "../api/errorMessages";
function toUserSafeMessage(message: string | undefined, fallback: string) {
const normalized = (message ?? "")
.trim()
.replace(/^(?:[A-Z][A-Z0-9_]{2,}|\d{3})[::]\s*/, "");
if (!normalized) {
return fallback;
}
const exposesTechnicalDetail =
!/[\u3400-\u9fff]/.test(normalized) ||
/https?:\/\/|\/api\/|(?:^|\s)\/[A-Za-z0-9._-]+(?:\/[^\s]*)?|[A-Za-z]:\\|(?:^|\n)\s*at\s|\b(?:GET|POST|PUT|PATCH|DELETE)\s+\/|^(?:\{|\[)/.test(normalized);
return exposesTechnicalDetail ? fallback : normalized;
}
export function resolveErrorMessage(
error: unknown,
fallback = "操作失败,请稍后重试",
): string {
if (isApiError(error)) {
return toUserSafeMessage(
mapApiErrorMessage(error.code, error.details, error.message),
fallback,
);
}
if (error instanceof Error) {
return toUserSafeMessage(error.message, fallback);
}
return fallback;
}