Supabase のエラーコードから、いい感じの日本語エラーメッセージを

Supabaseのエラーコードから、いい感じのエラーメッセージを作成します。
StorageとAuthを紹介します。

## ユーザーに寄り添ったエラーメッセージとは
いい感じのエラーメッセージってなんだっけ？はこちらを参照しました。

https://note.com/nagaju/n/n8f5d8545f78d

## Supabase Storageのエラーコードについて

### ドキュメント

https://supabase.com/docs/guides/storage/debugging/error-codes

### codeをメッセージに変換するためのオブジェクト

```js
export const supabaseStorageErrorCodeToJapaneseMessage: Record<string, string> = {
  "NoSuchBucket": "指定されたフォルダが見つかりません。フォルダ名を確認し、アクセス権限があることを確認してください。",
  "NoSuchKey": "指定されたファイルが見つかりません。ファイル名を確認し、アクセス権限があることを確認してください。",
  "NoSuchUpload": "アップロードが見つかりません。アップロードが完了しているか、中断されていないか確認してください。",
  "InvalidJWT": "認証情報が無効です。再度ログインしてから操作をお試しください。",
  "InvalidRequest": "リクエストに問題があります。入力内容を確認し、もう一度お試しください。",
  "TenantNotFound": "サービスの設定に問題が発生しています。カスタマーサポートにお問い合わせください。",
  "EntityTooLarge": "アップロードしようとしているファイルが大きすぎます。ファイルサイズを確認し、必要に応じて分割してアップロードしてください。",
  "InternalError": "システムエラーが発生しました。しばらく時間をおいてから再度お試しください。問題が解決しない場合はカスタマーサポートにお問い合わせください。",
  "ResourceAlreadyExists": "同じ名前のリソースが既に存在します。別の名前を使用するか、上書きする場合は適切なオプションを選択してください。",
  "InvalidBucketName": "フォルダ名が無効です。使用できない文字や形式が含まれていないか確認してください。",
  "InvalidKey": "ファイル名が無効です。使用できない文字や形式が含まれていないか確認してください。",
  "InvalidRange": "指定された範囲が無効です。ファイルサイズ内の有効な範囲を指定してください。",
  "InvalidMimeType": "ファイルタイプが無効です。サポートされているファイル形式を確認してください。",
  "InvalidUploadId": "アップロードIDが無効です。アップロードを最初からやり直してください。",
  "KeyAlreadyExists": "同じ名前のファイルが既に存在します。別の名前を使用するか、上書きする場合は適切なオプションを選択してください。",
  "BucketAlreadyExists": "同じ名前のフォルダが既に存在します。別の名前を使用してください。",
  "DatabaseTimeout": "データベースの応答に時間がかかっています。しばらく時間をおいてから再度お試しください。",
  "InvalidSignature": "認証に失敗しました。再度ログインしてから操作をお試しください。",
  "SignatureDoesNotMatch": "認証に失敗しました。ログイン情報を確認し、再度お試しください。",
  "AccessDenied": "このリソースへのアクセス権限がありません。必要な権限があることを確認してください。",
  "ResourceLocked": "リソースが現在ロックされています。しばらく時間をおいてから再度お試しください。",
  "DatabaseError": "データベースエラーが発生しました。しばらく時間をおいてから再度お試しください。問題が解決しない場合はカスタマーサポートにお問い合わせください。",
  "MissingContentLength": "ファイルサイズの情報が不足しています。アップロードを最初からやり直してください。",
  "MissingParameter": "必要な情報が不足しています。すべての必須項目を入力してください。",
  "InvalidUploadSignature": "アップロード認証に失敗しました。アップロードを最初からやり直してください。",
  "LockTimeout": "リソースのロック取得に時間がかかっています。しばらく時間をおいてから再度お試しください。",
  "S3Error": "ストレージサービスでエラーが発生しました。カスタマーサポートにお問い合わせください。",
  "S3InvalidAccessKeyId": "アクセスキーが無効です。正しいアクセスキーを使用しているか確認してください。",
  "S3MaximumCredentialsLimit": "認証情報の最大数に達しました。不要な認証情報を削除してから再度お試しください。",
  "InvalidChecksum": "ファイルの整合性チェックに失敗しました。ファイルが破損していないか確認し、再度アップロードしてください。",
  "MissingPart": "ファイルの一部が欠落しています。アップロードを最初からやり直してください。",
  "SlowDown": "リクエストが多すぎます。しばらく時間をおいてからゆっくりと操作を行ってください。"
};
```

## Supabase Authのエラーコードについて

### ドキュメント

https://supabase.com/docs/guides/auth/debugging/error-codes

### codeをメッセージに変換するためのオブジェクト

```js
export const supabaseAuthErrorCodeToJapaneseMessage: Record<string, string> = {
  "anonymous_provider_disabled": "申し訳ありませんが、匿名でのサインインは現在ご利用いただけません。",
  "bad_code_verifier": "セキュリティ上の問題が発生しました。お手数ですが、もう一度お試しください。",
  "bad_json": "送信されたデータに問題があります。入力内容をご確認ください。",
  "bad_jwt": "セキュリティトークンに問題があります。再度ログインをお願いします。",
  "bad_oauth_callback": "外部サービスでのログインに問題が発生しました。別の方法でログインをお試しください。",
  "bad_oauth_state": "外部サービスとの連携に問題が発生しました。もう一度最初からお試しください。",
  "captcha_failed": "セキュリティチェックに失敗しました。再度お試しください。",
  "conflict": "同時に複数の操作が行われました。少し時間を置いてから再度お試しください。",
  "email_address_not_authorized": "このメールアドレスは許可されていません。別のメールアドレスをお試しください。",
  "email_conflict_identity_not_deletable": "アカウントの変更ができません。カスタマーサポートにお問い合わせください。",
  "email_exists": "このメールアドレスは既に登録されています。ログインするか、別のメールアドレスをお使いください。",
  "email_not_confirmed": "メールアドレスの確認が完了していません。メールをご確認いただき、確認リンクをクリックしてください。",
  "email_provider_disabled": "メールアドレスでのサインアップは現在ご利用いただけません。",
  "flow_state_expired": "セッションの有効期限が切れました。もう一度最初からお試しください。",
  "flow_state_not_found": "セッション情報が見つかりません。もう一度最初からお試しください。",
  "hook_payload_over_size_limit": "送信されたデータが大きすぎます。データ量を減らしてお試しください。",
  "hook_timeout": "サーバーの応答に時間がかかっています。しばらく時間をおいてから再度お試しください。",
  "hook_timeout_after_retry": "サーバーとの通信に問題が発生しています。しばらく時間をおいてから再度お試しください。",
  "identity_already_exists": "このアカウントは既に別のユーザーと連携されています。",
  "identity_not_found": "アカウント情報が見つかりません。ログアウトして再度ログインをお試しください。",
  "insufficient_aal": "セキュリティレベルが不足しています。二段階認証を設定してください。",
  "invite_not_found": "招待が見つからないか、既に使用されています。新しい招待を依頼してください。",
  "invalid_credentials": "ログイン情報が正しくありません。メールアドレスとパスワードをご確認ください。",
  "manual_linking_disabled": "アカウントの手動リンクは現在ご利用いただけません。",
  "mfa_challenge_expired": "二段階認証の有効期限が切れました。もう一度最初からお試しください。",
  "mfa_factor_name_conflict": "同じ名前の二段階認証方法が既に存在します。別の名前を使用してください。",
  "mfa_factor_not_found": "指定された二段階認証方法が見つかりません。別の方法を選択してください。",
  "mfa_ip_address_mismatch": "セキュリティ上の理由により、二段階認証の設定を完了できません。同じネットワーク接続で最初から設定をやり直してください。",
  "mfa_verification_failed": "二段階認証コードが正しくありません。もう一度お試しください。",
  "mfa_verification_rejected": "二段階認証が拒否されました。カスタマーサポートにお問い合わせください。",
  "mfa_verified_factor_exists": "この電話番号は既に二段階認証に使用されています。別の電話番号を使用するか、既存の設定を解除してください。",
  "mfa_totp_enroll_disabled": "時間ベースのワンタイムパスワード（TOTP）の登録は現在ご利用いただけません。",
  "mfa_totp_verify_disabled": "時間ベースのワンタイムパスワード（TOTP）による認証は現在ご利用いただけません。",
  "mfa_phone_enroll_disabled": "電話番号による二段階認証の登録は現在ご利用いただけません。",
  "mfa_phone_verify_disabled": "電話番号による二段階認証は現在ご利用いただけません。",
  "no_authorization": "この操作を行う権限がありません。ログインしているかご確認ください。",
  "not_admin": "管理者権限が必要です。適切な権限を持つアカウントでログインしてください。",
  "oauth_provider_not_supported": "選択された外部サービスでのログインは現在ご利用いただけません。",
  "otp_disabled": "ワンタイムパスワードによるサインインは現在ご利用いただけません。",
  "otp_expired": "ワンタイムパスワードの有効期限が切れました。新しいコードを要求してください。",
  "over_email_send_rate_limit": "短時間に多くのメールが送信されました。しばらく時間をおいてから再度お試しください。",
  "over_request_rate_limit": "リクエストが多すぎます。しばらく時間をおいてから再度お試しください。",
  "over_sms_send_rate_limit": "短時間に多くのSMSが送信されました。しばらく時間をおいてから再度お試しください。",
  "phone_exists": "この電話番号は既に登録されています。別の電話番号を使用するか、ログインしてください。",
  "phone_not_confirmed": "電話番号の確認が完了していません。SMSに送信された確認コードを入力してください。",
  "phone_provider_disabled": "電話番号でのサインアップは現在ご利用いただけません。",
  "provider_disabled": "選択された認証方法は現在ご利用いただけません。別の方法をお試しください。",
  "provider_email_needs_verification": "外部サービスでのログインにはメールアドレスの確認が必要です。メールをご確認ください。",
  "reauthentication_needed": "セキュリティのため、再度ログインが必要です。",
  "reauthentication_not_valid": "再認証に失敗しました。もう一度ログインしてください。",
  "request_timeout": "リクエストがタイムアウトしました。ネットワーク接続をご確認の上、再度お試しください。",
  "same_password": "新しいパスワードは現在のパスワードと異なるものを設定してください。",
  "saml_assertion_no_email": "SAML認証でメールアドレスが取得できませんでした。システム管理者にお問い合わせください。",
  "saml_assertion_no_user_id": "SAML認証でユーザーIDが取得できませんでした。システム管理者にお問い合わせください。",
  "saml_entity_id_mismatch": "SAML設定に問題があります。システム管理者にお問い合わせください。",
  "saml_idp_already_exists": "この外部認証サービスは既に設定されています。",
  "saml_idp_not_found": "指定された外部認証サービスが見つかりません。システム管理者にお問い合わせください。",
  "saml_metadata_fetch_failed": "外部認証サービスの情報を取得できませんでした。システム管理者にお問い合わせください。",
  "saml_provider_disabled": "SAML認証は現在ご利用いただけません。",
  "saml_relay_state_expired": "SAML認証の有効期限が切れました。もう一度最初からお試しください。",
  "saml_relay_state_not_found": "SAML認証の状態が見つかりません。もう一度最初からお試しください。",
  "session_not_found": "セッションが見つかりません。再度ログインしてください。",
  "signup_disabled": "新規アカウントの作成は現在ご利用いただけません。",
  "single_identity_not_deletable": "最後の認証方法は削除できません。別の認証方法を追加してから再度お試しください。",
  "sms_send_failed": "SMSの送信に失敗しました。電話番号をご確認の上、再度お試しください。",
  "sso_domain_already_exists": "このドメインのシングルサインオンは既に設定されています。",
  "sso_provider_not_found": "指定されたシングルサインオンプロバイダーが見つかりません。システム管理者にお問い合わせください。",
  "too_many_enrolled_mfa_factors": "二段階認証の設定数が上限に達しました。不要な設定を削除してから再度お試しください。",
  "unexpected_audience": "予期せぬエラーが発生しました。カスタマーサポートにお問い合わせください。",
  "unexpected_failure": "予期せぬエラーが発生しました。しばらく時間をおいてから再度お試しください。",
  "user_already_exists": "このユーザー情報は既に登録されています。ログインするか、別の情報をお使いください。",
  "user_banned": "このアカウントは一時的に利用停止されています。カスタマーサポートにお問い合わせください。",
  "user_not_found": "ユーザーが見つかりません。正しい情報でログインしているかご確認ください。",
  "user_sso_managed": "シングルサインオンで管理されているユーザー情報は変更できません。",
  "validation_failed": "入力内容に問題があります。各項目の入力条件をご確認ください。",
  "weak_password": "パスワードが脆弱です。より強力なパスワードを設定してください。"
};
```

生成AIで作っています。
「ユーザーに寄り添ったエラーメッセージ」という記事をプロンプトに入れることで、
いい感じのメッセージを作成してもらいました。

よかったら使ってください。