Buckets:
| import type { Key } from "~/i18n" | |
| export const formError = { | |
| invalidPlan: "error.invalidPlan", | |
| workspaceRequired: "error.workspaceRequired", | |
| alreadySubscribed: "error.alreadySubscribed", | |
| limitRequired: "error.limitRequired", | |
| monthlyLimitInvalid: "error.monthlyLimitInvalid", | |
| workspaceNameRequired: "error.workspaceNameRequired", | |
| nameTooLong: "error.nameTooLong", | |
| emailRequired: "error.emailRequired", | |
| roleRequired: "error.roleRequired", | |
| idRequired: "error.idRequired", | |
| nameRequired: "error.nameRequired", | |
| providerRequired: "error.providerRequired", | |
| apiKeyRequired: "error.apiKeyRequired", | |
| modelRequired: "error.modelRequired", | |
| } as const | |
| const map = { | |
| [formError.invalidPlan]: "error.invalidPlan", | |
| [formError.workspaceRequired]: "error.workspaceRequired", | |
| [formError.alreadySubscribed]: "error.alreadySubscribed", | |
| [formError.limitRequired]: "error.limitRequired", | |
| [formError.monthlyLimitInvalid]: "error.monthlyLimitInvalid", | |
| [formError.workspaceNameRequired]: "error.workspaceNameRequired", | |
| [formError.nameTooLong]: "error.nameTooLong", | |
| [formError.emailRequired]: "error.emailRequired", | |
| [formError.roleRequired]: "error.roleRequired", | |
| [formError.idRequired]: "error.idRequired", | |
| [formError.nameRequired]: "error.nameRequired", | |
| [formError.providerRequired]: "error.providerRequired", | |
| [formError.apiKeyRequired]: "error.apiKeyRequired", | |
| [formError.modelRequired]: "error.modelRequired", | |
| "Invalid plan": "error.invalidPlan", | |
| "Workspace ID is required": "error.workspaceRequired", | |
| "Workspace ID is required.": "error.workspaceRequired", | |
| "This workspace already has a subscription": "error.alreadySubscribed", | |
| "Limit is required.": "error.limitRequired", | |
| "Set a valid monthly limit": "error.monthlyLimitInvalid", | |
| "Set a valid monthly limit.": "error.monthlyLimitInvalid", | |
| "Workspace name is required.": "error.workspaceNameRequired", | |
| "Name must be 255 characters or less.": "error.nameTooLong", | |
| "Email is required": "error.emailRequired", | |
| "Role is required": "error.roleRequired", | |
| "ID is required": "error.idRequired", | |
| "Name is required": "error.nameRequired", | |
| "Provider is required": "error.providerRequired", | |
| "API key is required": "error.apiKeyRequired", | |
| "Model is required": "error.modelRequired", | |
| "workspace.reload.error.paymentFailed": "workspace.reload.error.paymentFailed", | |
| "Payment failed": "workspace.reload.error.paymentFailed", | |
| "Payment failed.": "workspace.reload.error.paymentFailed", | |
| } as const satisfies Record<string, Key> | |
| export function formErrorReloadAmountMin(amount: number) { | |
| return `error.reloadAmountMin:${amount}` | |
| } | |
| export function formErrorReloadTriggerMin(amount: number) { | |
| return `error.reloadTriggerMin:${amount}` | |
| } | |
| export function localizeError(t: (key: Key, params?: Record<string, string | number>) => string, error?: string) { | |
| if (!error) return "" | |
| if (error.startsWith("error.reloadAmountMin:")) { | |
| const amount = Number(error.split(":")[1] ?? 0) | |
| return t("error.reloadAmountMin", { amount }) | |
| } | |
| if (error.startsWith("error.reloadTriggerMin:")) { | |
| const amount = Number(error.split(":")[1] ?? 0) | |
| return t("error.reloadTriggerMin", { amount }) | |
| } | |
| const amount = error.match(/^Reload amount must be at least \$(\d+)$/) | |
| if (amount) return t("error.reloadAmountMin", { amount: Number(amount[1]) }) | |
| const trigger = error.match(/^Balance trigger must be at least \$(\d+)$/) | |
| if (trigger) return t("error.reloadTriggerMin", { amount: Number(trigger[1]) }) | |
| const key = map[error as keyof typeof map] | |
| if (key) return t(key) | |
| return error | |
| } | |
Xet Storage Details
- Size:
- 3.6 kB
- Xet hash:
- 2467a8bf2dcb105d27b97768f117f48209baf0ff5f88e2ed1b620f8afc57796d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.