diff --git a/barrelsby.json b/barrelsby.json index fbb6d7e1..75abdc0b 100644 --- a/barrelsby.json +++ b/barrelsby.json @@ -1,19 +1,16 @@ { "directory": [ "./src/data/repositories", - "./src/data/services", "./src/data/services/api", "./src/data/services/auth", - "./src/data/services/dto", - "./src/data/services/dto/auth", - "./src/data/services/dto/chat", - "./src/data/services/dto/metrics", - "./src/data/services/dto/user", - "./src/data/services/schemas", - "./src/data/services/schemas/auth", - "./src/data/services/schemas/chat", - "./src/data/services/schemas/metrics", - "./src/data/services/schemas/user", + "./src/data/dto/auth", + "./src/data/dto/chat", + "./src/data/dto/metrics", + "./src/data/dto/user", + "./src/data/schemas/auth", + "./src/data/schemas/chat", + "./src/data/schemas/metrics", + "./src/data/schemas/user", "./src/data/storage/app", "./src/data/storage/auth", "./src/data/storage/chat", diff --git a/src/app/_components/core/index.ts b/src/app/_components/core/index.ts new file mode 100644 index 00000000..9f81a588 --- /dev/null +++ b/src/app/_components/core/index.ts @@ -0,0 +1,9 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./auth-back-button"; +export * from "./dialog"; +export * from "./loading-indicator"; +export * from "./mobile-shell"; +export * from "./settings-section"; diff --git a/src/app/auth/components/index.ts b/src/app/auth/components/index.ts new file mode 100644 index 00000000..782a9982 --- /dev/null +++ b/src/app/auth/components/index.ts @@ -0,0 +1,21 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./auth-divider"; +export * from "./auth-email-panel"; +export * from "./auth-error-message"; +export * from "./auth-facebook-panel"; +export * from "./auth-legal-text"; +export * from "./auth-other-options-dialog"; +export * from "./auth-panel"; +export * from "./auth-primary-button"; +export * from "./auth-screen"; +export * from "./auth-social-button"; +export * from "./auth-social-buttons"; +export * from "./auth-text-field"; +export * from "./auth-validators"; +export * from "./email-login-form"; +export * from "./email-register-form"; +export * from "./google-sign-in-button"; +export * from "./__tests__/auth-validators.test"; diff --git a/src/app/chat/components/index.ts b/src/app/chat/components/index.ts new file mode 100644 index 00000000..b9306907 --- /dev/null +++ b/src/app/chat/components/index.ts @@ -0,0 +1,5 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./chat-screen"; diff --git a/src/app/sidebar/components/index.ts b/src/app/sidebar/components/index.ts new file mode 100644 index 00000000..16945812 --- /dev/null +++ b/src/app/sidebar/components/index.ts @@ -0,0 +1,5 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./sidebar-screen"; diff --git a/src/app/splash/components/index.ts b/src/app/splash/components/index.ts new file mode 100644 index 00000000..f371dc28 --- /dev/null +++ b/src/app/splash/components/index.ts @@ -0,0 +1,11 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./splash-background"; +export * from "./splash-button"; +export * from "./splash-content"; +export * from "./splash-loading"; +export * from "./splash-logo"; +export * from "./splash-progress"; +export * from "./splash-screen"; diff --git a/src/data/services/dto/auth/apple_login_request.ts b/src/data/dto/auth/apple_login_request.ts similarity index 92% rename from src/data/services/dto/auth/apple_login_request.ts rename to src/data/dto/auth/apple_login_request.ts index 20be4d55..218a38ad 100644 --- a/src/data/services/dto/auth/apple_login_request.ts +++ b/src/data/dto/auth/apple_login_request.ts @@ -5,7 +5,7 @@ import { AppleLoginRequestSchema, type AppleLoginRequestInput, type AppleLoginRequestData, -} from "@/data/services/schemas/auth/apple_login_request"; +} from "@/data/schemas/auth/apple_login_request"; export class AppleLoginRequest { declare readonly identityToken: string; diff --git a/src/data/services/dto/auth/facebook_login_request.ts b/src/data/dto/auth/facebook_login_request.ts similarity index 92% rename from src/data/services/dto/auth/facebook_login_request.ts rename to src/data/dto/auth/facebook_login_request.ts index ad2f8af1..2a96eb59 100644 --- a/src/data/services/dto/auth/facebook_login_request.ts +++ b/src/data/dto/auth/facebook_login_request.ts @@ -5,7 +5,7 @@ import { FacebookLoginRequestSchema, type FacebookLoginRequestInput, type FacebookLoginRequestData, -} from "@/data/services/schemas/auth/facebook_login_request"; +} from "@/data/schemas/auth/facebook_login_request"; export class FacebookLoginRequest { declare readonly accessToken: string; diff --git a/src/data/services/dto/auth/facebook_user_data.ts b/src/data/dto/auth/facebook_user_data.ts similarity index 93% rename from src/data/services/dto/auth/facebook_user_data.ts rename to src/data/dto/auth/facebook_user_data.ts index 91431901..29361bc9 100644 --- a/src/data/services/dto/auth/facebook_user_data.ts +++ b/src/data/dto/auth/facebook_user_data.ts @@ -7,7 +7,7 @@ import { FacebookUserDataSchema, type FacebookUserDataInput, type FacebookUserDataData, -} from "@/data/services/schemas/auth/facebook_user_data"; +} from "@/data/schemas/auth/facebook_user_data"; export class FacebookUserData { declare readonly id: string | null; diff --git a/src/data/services/dto/auth/fb_id_login_request.ts b/src/data/dto/auth/fb_id_login_request.ts similarity index 92% rename from src/data/services/dto/auth/fb_id_login_request.ts rename to src/data/dto/auth/fb_id_login_request.ts index f06afed5..f0f26430 100644 --- a/src/data/services/dto/auth/fb_id_login_request.ts +++ b/src/data/dto/auth/fb_id_login_request.ts @@ -5,7 +5,7 @@ import { FbIdLoginRequestSchema, type FbIdLoginRequestInput, type FbIdLoginRequestData, -} from "@/data/services/schemas/auth/fb_id_login_request"; +} from "@/data/schemas/auth/fb_id_login_request"; export class FbIdLoginRequest { declare readonly fbId: string; diff --git a/src/data/services/dto/auth/google_login_request.ts b/src/data/dto/auth/google_login_request.ts similarity index 92% rename from src/data/services/dto/auth/google_login_request.ts rename to src/data/dto/auth/google_login_request.ts index 4a853b1f..0dbcba5b 100644 --- a/src/data/services/dto/auth/google_login_request.ts +++ b/src/data/dto/auth/google_login_request.ts @@ -5,7 +5,7 @@ import { GoogleLoginRequestSchema, type GoogleLoginRequestInput, type GoogleLoginRequestData, -} from "@/data/services/schemas/auth/google_login_request"; +} from "@/data/schemas/auth/google_login_request"; export class GoogleLoginRequest { declare readonly idToken: string; diff --git a/src/data/services/dto/auth/guest_login_request.ts b/src/data/dto/auth/guest_login_request.ts similarity index 92% rename from src/data/services/dto/auth/guest_login_request.ts rename to src/data/dto/auth/guest_login_request.ts index 2a522c2d..d01274cd 100644 --- a/src/data/services/dto/auth/guest_login_request.ts +++ b/src/data/dto/auth/guest_login_request.ts @@ -5,7 +5,7 @@ import { GuestLoginRequestSchema, type GuestLoginRequestInput, type GuestLoginRequestData, -} from "@/data/services/schemas/auth/guest_login_request"; +} from "@/data/schemas/auth/guest_login_request"; export class GuestLoginRequest { declare readonly deviceId: string; diff --git a/src/data/services/dto/auth/guest_login_response.ts b/src/data/dto/auth/guest_login_response.ts similarity index 94% rename from src/data/services/dto/auth/guest_login_response.ts rename to src/data/dto/auth/guest_login_response.ts index 6a46c2f5..ea9cb903 100644 --- a/src/data/services/dto/auth/guest_login_response.ts +++ b/src/data/dto/auth/guest_login_response.ts @@ -5,7 +5,7 @@ import { GuestLoginResponseSchema, type GuestLoginResponseInput, type GuestLoginResponseData, -} from "@/data/services/schemas/auth/guest_login_response"; +} from "@/data/schemas/auth/guest_login_response"; import { User } from "@/data/dto/user/user"; export class GuestLoginResponse { diff --git a/src/data/dto/auth/index.ts b/src/data/dto/auth/index.ts new file mode 100644 index 00000000..5fc5ae40 --- /dev/null +++ b/src/data/dto/auth/index.ts @@ -0,0 +1,18 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./apple_login_request"; +export * from "./facebook_login_request"; +export * from "./facebook_user_data"; +export * from "./fb_id_login_request"; +export * from "./google_login_request"; +export * from "./guest_login_request"; +export * from "./guest_login_response"; +export * from "./login_request"; +export * from "./login_response"; +export * from "./logout_response"; +export * from "./refresh_token_request"; +export * from "./refresh_token_response"; +export * from "./register_request"; +export * from "./send_code_request"; diff --git a/src/data/services/dto/auth/login_request.ts b/src/data/dto/auth/login_request.ts similarity index 93% rename from src/data/services/dto/auth/login_request.ts rename to src/data/dto/auth/login_request.ts index 3555c6ee..4c69cba4 100644 --- a/src/data/services/dto/auth/login_request.ts +++ b/src/data/dto/auth/login_request.ts @@ -5,7 +5,7 @@ import { LoginRequestSchema, type LoginRequestInput, type LoginRequestData, -} from "@/data/services/schemas/auth/login_request"; +} from "@/data/schemas/auth/login_request"; export class LoginRequest { declare readonly email: string; diff --git a/src/data/services/dto/auth/login_response.ts b/src/data/dto/auth/login_response.ts similarity index 93% rename from src/data/services/dto/auth/login_response.ts rename to src/data/dto/auth/login_response.ts index 554fda67..1cbe9fea 100644 --- a/src/data/services/dto/auth/login_response.ts +++ b/src/data/dto/auth/login_response.ts @@ -5,7 +5,7 @@ import { LoginResponseSchema, type LoginResponseInput, type LoginResponseData, -} from "@/data/services/schemas/auth/login_response"; +} from "@/data/schemas/auth/login_response"; import { User } from "@/data/dto/user/user"; export class LoginResponse { diff --git a/src/data/services/dto/auth/logout_response.ts b/src/data/dto/auth/logout_response.ts similarity index 92% rename from src/data/services/dto/auth/logout_response.ts rename to src/data/dto/auth/logout_response.ts index 1e8eb7b0..53a922de 100644 --- a/src/data/services/dto/auth/logout_response.ts +++ b/src/data/dto/auth/logout_response.ts @@ -5,7 +5,7 @@ import { LogoutResponseSchema, type LogoutResponseInput, type LogoutResponseData, -} from "@/data/services/schemas/auth/logout_response"; +} from "@/data/schemas/auth/logout_response"; export class LogoutResponse { declare readonly success: boolean; diff --git a/src/data/services/dto/auth/refresh_token_request.ts b/src/data/dto/auth/refresh_token_request.ts similarity index 92% rename from src/data/services/dto/auth/refresh_token_request.ts rename to src/data/dto/auth/refresh_token_request.ts index 1c071325..96cd1d47 100644 --- a/src/data/services/dto/auth/refresh_token_request.ts +++ b/src/data/dto/auth/refresh_token_request.ts @@ -5,7 +5,7 @@ import { RefreshTokenRequestSchema, type RefreshTokenRequestInput, type RefreshTokenRequestData, -} from "@/data/services/schemas/auth/refresh_token_request"; +} from "@/data/schemas/auth/refresh_token_request"; export class RefreshTokenRequest { declare readonly refreshToken: string; diff --git a/src/data/services/dto/auth/refresh_token_response.ts b/src/data/dto/auth/refresh_token_response.ts similarity index 92% rename from src/data/services/dto/auth/refresh_token_response.ts rename to src/data/dto/auth/refresh_token_response.ts index 7dd94c46..0508a305 100644 --- a/src/data/services/dto/auth/refresh_token_response.ts +++ b/src/data/dto/auth/refresh_token_response.ts @@ -5,7 +5,7 @@ import { RefreshTokenResponseSchema, type RefreshTokenResponseInput, type RefreshTokenResponseData, -} from "@/data/services/schemas/auth/refresh_token_response"; +} from "@/data/schemas/auth/refresh_token_response"; export class RefreshTokenResponse { declare readonly token: string; diff --git a/src/data/services/dto/auth/register_request.ts b/src/data/dto/auth/register_request.ts similarity index 93% rename from src/data/services/dto/auth/register_request.ts rename to src/data/dto/auth/register_request.ts index 6ece7dae..856ed5a3 100644 --- a/src/data/services/dto/auth/register_request.ts +++ b/src/data/dto/auth/register_request.ts @@ -5,7 +5,7 @@ import { RegisterRequestSchema, type RegisterRequestInput, type RegisterRequestData, -} from "@/data/services/schemas/auth/register_request"; +} from "@/data/schemas/auth/register_request"; export class RegisterRequest { declare readonly username: string; diff --git a/src/data/services/dto/auth/send_code_request.ts b/src/data/dto/auth/send_code_request.ts similarity index 92% rename from src/data/services/dto/auth/send_code_request.ts rename to src/data/dto/auth/send_code_request.ts index 89db300d..cbd0e54a 100644 --- a/src/data/services/dto/auth/send_code_request.ts +++ b/src/data/dto/auth/send_code_request.ts @@ -5,7 +5,7 @@ import { SendCodeRequestSchema, type SendCodeRequestInput, type SendCodeRequestData, -} from "@/data/services/schemas/auth/send_code_request"; +} from "@/data/schemas/auth/send_code_request"; export class SendCodeRequest { declare readonly email: string; diff --git a/src/data/services/dto/chat/chat_history_response.ts b/src/data/dto/chat/chat_history_response.ts similarity index 94% rename from src/data/services/dto/chat/chat_history_response.ts rename to src/data/dto/chat/chat_history_response.ts index 2b9e03a3..6b4abee6 100644 --- a/src/data/services/dto/chat/chat_history_response.ts +++ b/src/data/dto/chat/chat_history_response.ts @@ -5,7 +5,7 @@ import { ChatHistoryResponseSchema, type ChatHistoryResponseInput, type ChatHistoryResponseData, -} from "@/data/services/schemas/chat/chat_history_response"; +} from "@/data/schemas/chat/chat_history_response"; import { ChatMessage } from "./chat_message"; export class ChatHistoryResponse { diff --git a/src/data/services/dto/chat/chat_message.ts b/src/data/dto/chat/chat_message.ts similarity index 93% rename from src/data/services/dto/chat/chat_message.ts rename to src/data/dto/chat/chat_message.ts index 8504d1b3..87dbc0e6 100644 --- a/src/data/services/dto/chat/chat_message.ts +++ b/src/data/dto/chat/chat_message.ts @@ -5,7 +5,7 @@ import { ChatMessageSchema, type ChatMessageInput, type ChatMessageData, -} from "@/data/services/schemas/chat/chat_message"; +} from "@/data/schemas/chat/chat_message"; export class ChatMessage { declare readonly role: string; diff --git a/src/data/services/dto/chat/chat_send_response.ts b/src/data/dto/chat/chat_send_response.ts similarity index 94% rename from src/data/services/dto/chat/chat_send_response.ts rename to src/data/dto/chat/chat_send_response.ts index 03a627cb..a1523c4f 100644 --- a/src/data/services/dto/chat/chat_send_response.ts +++ b/src/data/dto/chat/chat_send_response.ts @@ -5,7 +5,7 @@ import { ChatSendResponseSchema, type ChatSendResponseInput, type ChatSendResponseData, -} from "@/data/services/schemas/chat/chat_send_response"; +} from "@/data/schemas/chat/chat_send_response"; export class ChatSendResponse { declare readonly mode: string; diff --git a/src/data/services/dto/chat/chat_sync_data.ts b/src/data/dto/chat/chat_sync_data.ts similarity index 92% rename from src/data/services/dto/chat/chat_sync_data.ts rename to src/data/dto/chat/chat_sync_data.ts index 6201368f..24b3effc 100644 --- a/src/data/services/dto/chat/chat_sync_data.ts +++ b/src/data/dto/chat/chat_sync_data.ts @@ -5,7 +5,7 @@ import { ChatSyncDataSchema, type ChatSyncDataInput, type ChatSyncDataData, -} from "@/data/services/schemas/chat/chat_sync_data"; +} from "@/data/schemas/chat/chat_sync_data"; export class ChatSyncData { declare readonly syncedCount: number; diff --git a/src/data/services/dto/chat/chat_sync_request.ts b/src/data/dto/chat/chat_sync_request.ts similarity index 93% rename from src/data/services/dto/chat/chat_sync_request.ts rename to src/data/dto/chat/chat_sync_request.ts index 7328d0c0..9427170f 100644 --- a/src/data/services/dto/chat/chat_sync_request.ts +++ b/src/data/dto/chat/chat_sync_request.ts @@ -5,7 +5,7 @@ import { ChatSyncRequestSchema, type ChatSyncRequestInput, type ChatSyncRequestData, -} from "@/data/services/schemas/chat/chat_sync_request"; +} from "@/data/schemas/chat/chat_sync_request"; import { SyncMessage } from "./sync_message"; export class ChatSyncRequest { diff --git a/src/data/services/dto/chat/guest_chat_quota.ts b/src/data/dto/chat/guest_chat_quota.ts similarity index 97% rename from src/data/services/dto/chat/guest_chat_quota.ts rename to src/data/dto/chat/guest_chat_quota.ts index 9b0e4e35..ebbed3de 100644 --- a/src/data/services/dto/chat/guest_chat_quota.ts +++ b/src/data/dto/chat/guest_chat_quota.ts @@ -5,7 +5,7 @@ import { GuestChatQuotaSchema, type GuestChatQuotaInput, type GuestChatQuotaData, -} from "@/data/services/schemas/chat/guest_chat_quota"; +} from "@/data/schemas/chat/guest_chat_quota"; export class GuestChatQuota { // 静态常量 diff --git a/src/data/services/dto/chat/image_upload_response.ts b/src/data/dto/chat/image_upload_response.ts similarity index 94% rename from src/data/services/dto/chat/image_upload_response.ts rename to src/data/dto/chat/image_upload_response.ts index ea207c0b..edbebbef 100644 --- a/src/data/services/dto/chat/image_upload_response.ts +++ b/src/data/dto/chat/image_upload_response.ts @@ -5,7 +5,7 @@ import { ImageUploadResponseSchema, type ImageUploadResponseInput, type ImageUploadResponseData, -} from "@/data/services/schemas/chat/image_upload_response"; +} from "@/data/schemas/chat/image_upload_response"; export class ImageUploadResponse { declare readonly success: boolean; diff --git a/src/data/dto/chat/index.ts b/src/data/dto/chat/index.ts new file mode 100644 index 00000000..b11282a1 --- /dev/null +++ b/src/data/dto/chat/index.ts @@ -0,0 +1,14 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./chat_history_response"; +export * from "./chat_message"; +export * from "./chat_send_response"; +export * from "./chat_sync_data"; +export * from "./chat_sync_request"; +export * from "./guest_chat_quota"; +export * from "./image_upload_response"; +export * from "./send_message_request"; +export * from "./stt_data"; +export * from "./sync_message"; diff --git a/src/data/services/dto/chat/send_message_request.ts b/src/data/dto/chat/send_message_request.ts similarity index 94% rename from src/data/services/dto/chat/send_message_request.ts rename to src/data/dto/chat/send_message_request.ts index c4d2769c..41ad8f04 100644 --- a/src/data/services/dto/chat/send_message_request.ts +++ b/src/data/dto/chat/send_message_request.ts @@ -5,7 +5,7 @@ import { SendMessageRequestSchema, type SendMessageRequestInput, type SendMessageRequestData, -} from "@/data/services/schemas/chat/send_message_request"; +} from "@/data/schemas/chat/send_message_request"; export class SendMessageRequest { declare readonly message: string; diff --git a/src/data/services/dto/chat/stt_data.ts b/src/data/dto/chat/stt_data.ts similarity index 92% rename from src/data/services/dto/chat/stt_data.ts rename to src/data/dto/chat/stt_data.ts index 63d1b791..a54d47e5 100644 --- a/src/data/services/dto/chat/stt_data.ts +++ b/src/data/dto/chat/stt_data.ts @@ -5,7 +5,7 @@ import { SttDataSchema, type SttDataInput, type SttDataData, -} from "@/data/services/schemas/chat/stt_data"; +} from "@/data/schemas/chat/stt_data"; export class SttData { declare readonly text: string; diff --git a/src/data/services/dto/chat/sync_message.ts b/src/data/dto/chat/sync_message.ts similarity index 93% rename from src/data/services/dto/chat/sync_message.ts rename to src/data/dto/chat/sync_message.ts index f82be0bf..e037a5a8 100644 --- a/src/data/services/dto/chat/sync_message.ts +++ b/src/data/dto/chat/sync_message.ts @@ -5,7 +5,7 @@ import { SyncMessageSchema, type SyncMessageInput, type SyncMessageData, -} from "@/data/services/schemas/chat/sync_message"; +} from "@/data/schemas/chat/sync_message"; export class SyncMessage { declare readonly role: string; diff --git a/src/data/services/dto/metrics/app_event.ts b/src/data/dto/metrics/app_event.ts similarity index 92% rename from src/data/services/dto/metrics/app_event.ts rename to src/data/dto/metrics/app_event.ts index 18329a41..daacdd83 100644 --- a/src/data/services/dto/metrics/app_event.ts +++ b/src/data/dto/metrics/app_event.ts @@ -5,7 +5,7 @@ import { AppEventSchema, type AppEventInput, type AppEventData, -} from "@/data/services/schemas/metrics/app_event"; +} from "@/data/schemas/metrics/app_event"; export class AppEvent { declare readonly userId: string; diff --git a/src/data/dto/metrics/index.ts b/src/data/dto/metrics/index.ts new file mode 100644 index 00000000..5213df40 --- /dev/null +++ b/src/data/dto/metrics/index.ts @@ -0,0 +1,6 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./app_event"; +export * from "./pwa_event"; diff --git a/src/data/services/dto/metrics/pwa_event.ts b/src/data/dto/metrics/pwa_event.ts similarity index 93% rename from src/data/services/dto/metrics/pwa_event.ts rename to src/data/dto/metrics/pwa_event.ts index 8674ed74..95e33720 100644 --- a/src/data/services/dto/metrics/pwa_event.ts +++ b/src/data/dto/metrics/pwa_event.ts @@ -5,7 +5,7 @@ import { PwaEventSchema, type PwaEventInput, type PwaEventData, -} from "@/data/services/schemas/metrics/pwa_event"; +} from "@/data/schemas/metrics/pwa_event"; export class PwaEvent { declare readonly deviceId: string; diff --git a/src/data/services/dto/user/avatar_data.ts b/src/data/dto/user/avatar_data.ts similarity index 92% rename from src/data/services/dto/user/avatar_data.ts rename to src/data/dto/user/avatar_data.ts index a06bce50..edb2dcc8 100644 --- a/src/data/services/dto/user/avatar_data.ts +++ b/src/data/dto/user/avatar_data.ts @@ -5,7 +5,7 @@ import { AvatarDataSchema, type AvatarDataInput, type AvatarDataData, -} from "@/data/services/schemas/user/avatar_data"; +} from "@/data/schemas/user/avatar_data"; export class AvatarData { declare readonly avatarUrl: string; diff --git a/src/data/services/dto/user/credits_data.ts b/src/data/dto/user/credits_data.ts similarity index 92% rename from src/data/services/dto/user/credits_data.ts rename to src/data/dto/user/credits_data.ts index db1fe01a..095c3dfd 100644 --- a/src/data/services/dto/user/credits_data.ts +++ b/src/data/dto/user/credits_data.ts @@ -5,7 +5,7 @@ import { CreditsDataSchema, type CreditsDataInput, type CreditsDataData, -} from "@/data/services/schemas/user/credits_data"; +} from "@/data/schemas/user/credits_data"; export class CreditsData { declare readonly userId: string; diff --git a/src/data/services/dto/user/credits_history_data.ts b/src/data/dto/user/credits_history_data.ts similarity index 93% rename from src/data/services/dto/user/credits_history_data.ts rename to src/data/dto/user/credits_history_data.ts index 639a3b5b..6fcec0bb 100644 --- a/src/data/services/dto/user/credits_history_data.ts +++ b/src/data/dto/user/credits_history_data.ts @@ -5,7 +5,7 @@ import { CreditsHistoryDataSchema, type CreditsHistoryDataInput, type CreditsHistoryDataData, -} from "@/data/services/schemas/user/credits_history_data"; +} from "@/data/schemas/user/credits_history_data"; export class CreditsHistoryData { declare readonly records: Record[]; diff --git a/src/data/dto/user/index.ts b/src/data/dto/user/index.ts new file mode 100644 index 00000000..287d1254 --- /dev/null +++ b/src/data/dto/user/index.ts @@ -0,0 +1,12 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./avatar_data"; +export * from "./credits_data"; +export * from "./credits_history_data"; +export * from "./personality_traits"; +export * from "./recent_memory"; +export * from "./update_profile_request"; +export * from "./user"; +export * from "./user_stats_response"; diff --git a/src/data/services/dto/user/personality_traits.ts b/src/data/dto/user/personality_traits.ts similarity index 93% rename from src/data/services/dto/user/personality_traits.ts rename to src/data/dto/user/personality_traits.ts index 481184e4..8802a2c7 100644 --- a/src/data/services/dto/user/personality_traits.ts +++ b/src/data/dto/user/personality_traits.ts @@ -5,7 +5,7 @@ import { PersonalityTraitsSchema, type PersonalityTraitsInput, type PersonalityTraitsData, -} from "@/data/services/schemas/user/personality_traits"; +} from "@/data/schemas/user/personality_traits"; export class PersonalityTraits { declare readonly cheerful: number; diff --git a/src/data/services/dto/user/recent_memory.ts b/src/data/dto/user/recent_memory.ts similarity index 93% rename from src/data/services/dto/user/recent_memory.ts rename to src/data/dto/user/recent_memory.ts index be9d9083..8d363810 100644 --- a/src/data/services/dto/user/recent_memory.ts +++ b/src/data/dto/user/recent_memory.ts @@ -5,7 +5,7 @@ import { RecentMemorySchema, type RecentMemoryInput, type RecentMemoryData, -} from "@/data/services/schemas/user/recent_memory"; +} from "@/data/schemas/user/recent_memory"; export class RecentMemory { declare readonly type: string; diff --git a/src/data/services/dto/user/update_profile_request.ts b/src/data/dto/user/update_profile_request.ts similarity index 93% rename from src/data/services/dto/user/update_profile_request.ts rename to src/data/dto/user/update_profile_request.ts index ed96826a..deb3f0df 100644 --- a/src/data/services/dto/user/update_profile_request.ts +++ b/src/data/dto/user/update_profile_request.ts @@ -5,7 +5,7 @@ import { UpdateProfileRequestSchema, type UpdateProfileRequestInput, type UpdateProfileRequestData, -} from "@/data/services/schemas/user/update_profile_request"; +} from "@/data/schemas/user/update_profile_request"; export class UpdateProfileRequest { declare readonly username: string; diff --git a/src/data/services/dto/user/user.ts b/src/data/dto/user/user.ts similarity index 97% rename from src/data/services/dto/user/user.ts rename to src/data/dto/user/user.ts index 462988dd..b3c13e90 100644 --- a/src/data/services/dto/user/user.ts +++ b/src/data/dto/user/user.ts @@ -5,7 +5,7 @@ import { UserSchema, type UserInput, type UserData, -} from "@/data/services/schemas/user/user"; +} from "@/data/schemas/user/user"; import { PersonalityTraits } from "./personality_traits"; export class User { diff --git a/src/data/services/dto/user/user_stats_response.ts b/src/data/dto/user/user_stats_response.ts similarity index 96% rename from src/data/services/dto/user/user_stats_response.ts rename to src/data/dto/user/user_stats_response.ts index a95d3074..fa25ebe4 100644 --- a/src/data/services/dto/user/user_stats_response.ts +++ b/src/data/dto/user/user_stats_response.ts @@ -5,7 +5,7 @@ import { UserStatsResponseSchema, type UserStatsResponseInput, type UserStatsResponseData, -} from "@/data/services/schemas/user/user_stats_response"; +} from "@/data/schemas/user/user_stats_response"; import { PersonalityTraits } from "./personality_traits"; import { RecentMemory } from "./recent_memory"; diff --git a/src/data/services/schemas/auth/apple_login_request.ts b/src/data/schemas/auth/apple_login_request.ts similarity index 100% rename from src/data/services/schemas/auth/apple_login_request.ts rename to src/data/schemas/auth/apple_login_request.ts diff --git a/src/data/services/schemas/auth/facebook_login_request.ts b/src/data/schemas/auth/facebook_login_request.ts similarity index 100% rename from src/data/services/schemas/auth/facebook_login_request.ts rename to src/data/schemas/auth/facebook_login_request.ts diff --git a/src/data/services/schemas/auth/facebook_user_data.ts b/src/data/schemas/auth/facebook_user_data.ts similarity index 100% rename from src/data/services/schemas/auth/facebook_user_data.ts rename to src/data/schemas/auth/facebook_user_data.ts diff --git a/src/data/services/schemas/auth/fb_id_login_request.ts b/src/data/schemas/auth/fb_id_login_request.ts similarity index 100% rename from src/data/services/schemas/auth/fb_id_login_request.ts rename to src/data/schemas/auth/fb_id_login_request.ts diff --git a/src/data/services/schemas/auth/google_login_request.ts b/src/data/schemas/auth/google_login_request.ts similarity index 100% rename from src/data/services/schemas/auth/google_login_request.ts rename to src/data/schemas/auth/google_login_request.ts diff --git a/src/data/services/schemas/auth/guest_login_request.ts b/src/data/schemas/auth/guest_login_request.ts similarity index 100% rename from src/data/services/schemas/auth/guest_login_request.ts rename to src/data/schemas/auth/guest_login_request.ts diff --git a/src/data/services/schemas/auth/guest_login_response.ts b/src/data/schemas/auth/guest_login_response.ts similarity index 100% rename from src/data/services/schemas/auth/guest_login_response.ts rename to src/data/schemas/auth/guest_login_response.ts diff --git a/src/data/schemas/auth/index.ts b/src/data/schemas/auth/index.ts new file mode 100644 index 00000000..5fc5ae40 --- /dev/null +++ b/src/data/schemas/auth/index.ts @@ -0,0 +1,18 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./apple_login_request"; +export * from "./facebook_login_request"; +export * from "./facebook_user_data"; +export * from "./fb_id_login_request"; +export * from "./google_login_request"; +export * from "./guest_login_request"; +export * from "./guest_login_response"; +export * from "./login_request"; +export * from "./login_response"; +export * from "./logout_response"; +export * from "./refresh_token_request"; +export * from "./refresh_token_response"; +export * from "./register_request"; +export * from "./send_code_request"; diff --git a/src/data/services/schemas/auth/login_request.ts b/src/data/schemas/auth/login_request.ts similarity index 100% rename from src/data/services/schemas/auth/login_request.ts rename to src/data/schemas/auth/login_request.ts diff --git a/src/data/services/schemas/auth/login_response.ts b/src/data/schemas/auth/login_response.ts similarity index 100% rename from src/data/services/schemas/auth/login_response.ts rename to src/data/schemas/auth/login_response.ts diff --git a/src/data/services/schemas/auth/logout_response.ts b/src/data/schemas/auth/logout_response.ts similarity index 100% rename from src/data/services/schemas/auth/logout_response.ts rename to src/data/schemas/auth/logout_response.ts diff --git a/src/data/services/schemas/auth/refresh_token_request.ts b/src/data/schemas/auth/refresh_token_request.ts similarity index 100% rename from src/data/services/schemas/auth/refresh_token_request.ts rename to src/data/schemas/auth/refresh_token_request.ts diff --git a/src/data/services/schemas/auth/refresh_token_response.ts b/src/data/schemas/auth/refresh_token_response.ts similarity index 100% rename from src/data/services/schemas/auth/refresh_token_response.ts rename to src/data/schemas/auth/refresh_token_response.ts diff --git a/src/data/services/schemas/auth/register_request.ts b/src/data/schemas/auth/register_request.ts similarity index 100% rename from src/data/services/schemas/auth/register_request.ts rename to src/data/schemas/auth/register_request.ts diff --git a/src/data/services/schemas/auth/send_code_request.ts b/src/data/schemas/auth/send_code_request.ts similarity index 100% rename from src/data/services/schemas/auth/send_code_request.ts rename to src/data/schemas/auth/send_code_request.ts diff --git a/src/data/services/schemas/chat/chat_history_response.ts b/src/data/schemas/chat/chat_history_response.ts similarity index 100% rename from src/data/services/schemas/chat/chat_history_response.ts rename to src/data/schemas/chat/chat_history_response.ts diff --git a/src/data/services/schemas/chat/chat_message.ts b/src/data/schemas/chat/chat_message.ts similarity index 100% rename from src/data/services/schemas/chat/chat_message.ts rename to src/data/schemas/chat/chat_message.ts diff --git a/src/data/services/schemas/chat/chat_send_response.ts b/src/data/schemas/chat/chat_send_response.ts similarity index 100% rename from src/data/services/schemas/chat/chat_send_response.ts rename to src/data/schemas/chat/chat_send_response.ts diff --git a/src/data/services/schemas/chat/chat_sync_data.ts b/src/data/schemas/chat/chat_sync_data.ts similarity index 100% rename from src/data/services/schemas/chat/chat_sync_data.ts rename to src/data/schemas/chat/chat_sync_data.ts diff --git a/src/data/services/schemas/chat/chat_sync_request.ts b/src/data/schemas/chat/chat_sync_request.ts similarity index 100% rename from src/data/services/schemas/chat/chat_sync_request.ts rename to src/data/schemas/chat/chat_sync_request.ts diff --git a/src/data/services/schemas/chat/guest_chat_quota.ts b/src/data/schemas/chat/guest_chat_quota.ts similarity index 100% rename from src/data/services/schemas/chat/guest_chat_quota.ts rename to src/data/schemas/chat/guest_chat_quota.ts diff --git a/src/data/services/schemas/chat/image_upload_response.ts b/src/data/schemas/chat/image_upload_response.ts similarity index 100% rename from src/data/services/schemas/chat/image_upload_response.ts rename to src/data/schemas/chat/image_upload_response.ts diff --git a/src/data/schemas/chat/index.ts b/src/data/schemas/chat/index.ts new file mode 100644 index 00000000..b11282a1 --- /dev/null +++ b/src/data/schemas/chat/index.ts @@ -0,0 +1,14 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./chat_history_response"; +export * from "./chat_message"; +export * from "./chat_send_response"; +export * from "./chat_sync_data"; +export * from "./chat_sync_request"; +export * from "./guest_chat_quota"; +export * from "./image_upload_response"; +export * from "./send_message_request"; +export * from "./stt_data"; +export * from "./sync_message"; diff --git a/src/data/services/schemas/chat/send_message_request.ts b/src/data/schemas/chat/send_message_request.ts similarity index 100% rename from src/data/services/schemas/chat/send_message_request.ts rename to src/data/schemas/chat/send_message_request.ts diff --git a/src/data/services/schemas/chat/stt_data.ts b/src/data/schemas/chat/stt_data.ts similarity index 100% rename from src/data/services/schemas/chat/stt_data.ts rename to src/data/schemas/chat/stt_data.ts diff --git a/src/data/services/schemas/chat/sync_message.ts b/src/data/schemas/chat/sync_message.ts similarity index 100% rename from src/data/services/schemas/chat/sync_message.ts rename to src/data/schemas/chat/sync_message.ts diff --git a/src/data/services/schemas/metrics/app_event.ts b/src/data/schemas/metrics/app_event.ts similarity index 100% rename from src/data/services/schemas/metrics/app_event.ts rename to src/data/schemas/metrics/app_event.ts diff --git a/src/data/schemas/metrics/index.ts b/src/data/schemas/metrics/index.ts new file mode 100644 index 00000000..5213df40 --- /dev/null +++ b/src/data/schemas/metrics/index.ts @@ -0,0 +1,6 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./app_event"; +export * from "./pwa_event"; diff --git a/src/data/services/schemas/metrics/pwa_event.ts b/src/data/schemas/metrics/pwa_event.ts similarity index 100% rename from src/data/services/schemas/metrics/pwa_event.ts rename to src/data/schemas/metrics/pwa_event.ts diff --git a/src/data/services/schemas/user/avatar_data.ts b/src/data/schemas/user/avatar_data.ts similarity index 100% rename from src/data/services/schemas/user/avatar_data.ts rename to src/data/schemas/user/avatar_data.ts diff --git a/src/data/services/schemas/user/credits_data.ts b/src/data/schemas/user/credits_data.ts similarity index 100% rename from src/data/services/schemas/user/credits_data.ts rename to src/data/schemas/user/credits_data.ts diff --git a/src/data/services/schemas/user/credits_history_data.ts b/src/data/schemas/user/credits_history_data.ts similarity index 100% rename from src/data/services/schemas/user/credits_history_data.ts rename to src/data/schemas/user/credits_history_data.ts diff --git a/src/data/schemas/user/index.ts b/src/data/schemas/user/index.ts new file mode 100644 index 00000000..287d1254 --- /dev/null +++ b/src/data/schemas/user/index.ts @@ -0,0 +1,12 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./avatar_data"; +export * from "./credits_data"; +export * from "./credits_history_data"; +export * from "./personality_traits"; +export * from "./recent_memory"; +export * from "./update_profile_request"; +export * from "./user"; +export * from "./user_stats_response"; diff --git a/src/data/services/schemas/user/personality_traits.ts b/src/data/schemas/user/personality_traits.ts similarity index 100% rename from src/data/services/schemas/user/personality_traits.ts rename to src/data/schemas/user/personality_traits.ts diff --git a/src/data/services/schemas/user/recent_memory.ts b/src/data/schemas/user/recent_memory.ts similarity index 100% rename from src/data/services/schemas/user/recent_memory.ts rename to src/data/schemas/user/recent_memory.ts diff --git a/src/data/services/schemas/user/update_profile_request.ts b/src/data/schemas/user/update_profile_request.ts similarity index 100% rename from src/data/services/schemas/user/update_profile_request.ts rename to src/data/schemas/user/update_profile_request.ts diff --git a/src/data/services/schemas/user/user.ts b/src/data/schemas/user/user.ts similarity index 100% rename from src/data/services/schemas/user/user.ts rename to src/data/schemas/user/user.ts diff --git a/src/data/services/schemas/user/user_stats_response.ts b/src/data/schemas/user/user_stats_response.ts similarity index 100% rename from src/data/services/schemas/user/user_stats_response.ts rename to src/data/schemas/user/user_stats_response.ts diff --git a/src/data/services/api/auth_api.ts b/src/data/services/api/auth_api.ts index 0c9468fb..7ceb3fb6 100644 --- a/src/data/services/api/auth_api.ts +++ b/src/data/services/api/auth_api.ts @@ -21,7 +21,7 @@ import { RefreshTokenResponse } from "@/data/dto/auth/refresh_token_response"; import { RegisterRequest } from "@/data/dto/auth/register_request"; import { SendCodeRequest } from "@/data/dto/auth/send_code_request"; import { User } from "@/data/dto/user/user"; -import type { UserData } from "@/data/services/schemas/user/user"; +import type { UserData } from "@/data/schemas/user/user"; export class AuthApi { /** diff --git a/src/data/services/api/index.ts b/src/data/services/api/index.ts new file mode 100644 index 00000000..9888954a --- /dev/null +++ b/src/data/services/api/index.ts @@ -0,0 +1,16 @@ +/** + * @file Automatically generated by barrelsby. + */ + +export * from "./api_path"; +export * from "./api_result"; +export * from "./auth_api"; +export * from "./chat_api"; +export * from "./http_client"; +export * from "./metrics_api"; +export * from "./response_helper"; +export * from "./user_api"; +export * from "./config/api_config"; +export * from "./interceptor/auth_refresh_interceptor"; +export * from "./interceptor/logging_interceptor"; +export * from "./interceptor/token_interceptor"; diff --git a/src/data/services/api/user_api.ts b/src/data/services/api/user_api.ts index e7b43f82..e3ec5e45 100644 --- a/src/data/services/api/user_api.ts +++ b/src/data/services/api/user_api.ts @@ -12,7 +12,7 @@ import { CreditsHistoryData } from "@/data/dto/user/credits_history_data"; import { UpdateProfileRequest } from "@/data/dto/user/update_profile_request"; import { User } from "@/data/dto/user/user"; import { UserStatsResponse } from "@/data/dto/user/user_stats_response"; -import type { UserData } from "@/data/services/schemas/user/user"; +import type { UserData } from "@/data/schemas/user/user"; export class UserApi { /** diff --git a/src/data/services/index.ts b/src/data/services/index.ts index 038e31aa..bae46852 100644 --- a/src/data/services/index.ts +++ b/src/data/services/index.ts @@ -22,71 +22,71 @@ export * from "./auth/initialize_facebook_auth"; export * from "./auth/initialize_google_auth"; export * from "./auth/mock_auth_platform"; export * from "./auth/web_auth_platform"; -export * from "./dto/auth/apple_login_request"; -export * from "./dto/auth/facebook_login_request"; -export * from "./dto/auth/facebook_user_data"; -export * from "./dto/auth/fb_id_login_request"; -export * from "./dto/auth/google_login_request"; -export * from "./dto/auth/guest_login_request"; -export * from "./dto/auth/guest_login_response"; -export * from "./dto/auth/login_request"; -export * from "./dto/auth/login_response"; -export * from "./dto/auth/logout_response"; -export * from "./dto/auth/refresh_token_request"; -export * from "./dto/auth/refresh_token_response"; -export * from "./dto/auth/register_request"; -export * from "./dto/auth/send_code_request"; -export * from "./dto/chat/chat_history_response"; -export * from "./dto/chat/chat_message"; -export * from "./dto/chat/chat_send_response"; -export * from "./dto/chat/chat_sync_data"; -export * from "./dto/chat/chat_sync_request"; -export * from "./dto/chat/guest_chat_quota"; -export * from "./dto/chat/image_upload_response"; -export * from "./dto/chat/send_message_request"; -export * from "./dto/chat/stt_data"; -export * from "./dto/chat/sync_message"; -export * from "./dto/metrics/app_event"; -export * from "./dto/metrics/pwa_event"; -export * from "./dto/user/avatar_data"; -export * from "./dto/user/credits_data"; -export * from "./dto/user/credits_history_data"; -export * from "./dto/user/personality_traits"; -export * from "./dto/user/recent_memory"; -export * from "./dto/user/update_profile_request"; -export * from "./dto/user/user"; -export * from "./dto/user/user_stats_response"; -export * from "./schemas/auth/apple_login_request"; -export * from "./schemas/auth/facebook_login_request"; -export * from "./schemas/auth/facebook_user_data"; -export * from "./schemas/auth/fb_id_login_request"; -export * from "./schemas/auth/google_login_request"; -export * from "./schemas/auth/guest_login_request"; -export * from "./schemas/auth/guest_login_response"; -export * from "./schemas/auth/login_request"; -export * from "./schemas/auth/login_response"; -export * from "./schemas/auth/logout_response"; -export * from "./schemas/auth/refresh_token_request"; -export * from "./schemas/auth/refresh_token_response"; -export * from "./schemas/auth/register_request"; -export * from "./schemas/auth/send_code_request"; -export * from "./schemas/chat/chat_history_response"; -export * from "./schemas/chat/chat_message"; -export * from "./schemas/chat/chat_send_response"; -export * from "./schemas/chat/chat_sync_data"; -export * from "./schemas/chat/chat_sync_request"; -export * from "./schemas/chat/guest_chat_quota"; -export * from "./schemas/chat/image_upload_response"; -export * from "./schemas/chat/send_message_request"; -export * from "./schemas/chat/stt_data"; -export * from "./schemas/chat/sync_message"; -export * from "./schemas/metrics/app_event"; -export * from "./schemas/metrics/pwa_event"; -export * from "./schemas/user/avatar_data"; -export * from "./schemas/user/credits_data"; -export * from "./schemas/user/credits_history_data"; -export * from "./schemas/user/personality_traits"; -export * from "./schemas/user/recent_memory"; -export * from "./schemas/user/update_profile_request"; -export * from "./schemas/user/user"; -export * from "./schemas/user/user_stats_response"; +export * from "../dto/auth/apple_login_request"; +export * from "../dto/auth/facebook_login_request"; +export * from "../dto/auth/facebook_user_data"; +export * from "../dto/auth/fb_id_login_request"; +export * from "../dto/auth/google_login_request"; +export * from "../dto/auth/guest_login_request"; +export * from "../dto/auth/guest_login_response"; +export * from "../dto/auth/login_request"; +export * from "../dto/auth/login_response"; +export * from "../dto/auth/logout_response"; +export * from "../dto/auth/refresh_token_request"; +export * from "../dto/auth/refresh_token_response"; +export * from "../dto/auth/register_request"; +export * from "../dto/auth/send_code_request"; +export * from "../dto/chat/chat_history_response"; +export * from "../dto/chat/chat_message"; +export * from "../dto/chat/chat_send_response"; +export * from "../dto/chat/chat_sync_data"; +export * from "../dto/chat/chat_sync_request"; +export * from "../dto/chat/guest_chat_quota"; +export * from "../dto/chat/image_upload_response"; +export * from "../dto/chat/send_message_request"; +export * from "../dto/chat/stt_data"; +export * from "../dto/chat/sync_message"; +export * from "../dto/metrics/app_event"; +export * from "../dto/metrics/pwa_event"; +export * from "../dto/user/avatar_data"; +export * from "../dto/user/credits_data"; +export * from "../dto/user/credits_history_data"; +export * from "../dto/user/personality_traits"; +export * from "../dto/user/recent_memory"; +export * from "../dto/user/update_profile_request"; +export * from "../dto/user/user"; +export * from "../dto/user/user_stats_response"; +export * from "../schemas/auth/apple_login_request"; +export * from "../schemas/auth/facebook_login_request"; +export * from "../schemas/auth/facebook_user_data"; +export * from "../schemas/auth/fb_id_login_request"; +export * from "../schemas/auth/google_login_request"; +export * from "../schemas/auth/guest_login_request"; +export * from "../schemas/auth/guest_login_response"; +export * from "../schemas/auth/login_request"; +export * from "../schemas/auth/login_response"; +export * from "../schemas/auth/logout_response"; +export * from "../schemas/auth/refresh_token_request"; +export * from "../schemas/auth/refresh_token_response"; +export * from "../schemas/auth/register_request"; +export * from "../schemas/auth/send_code_request"; +export * from "../schemas/chat/chat_history_response"; +export * from "../schemas/chat/chat_message"; +export * from "../schemas/chat/chat_send_response"; +export * from "../schemas/chat/chat_sync_data"; +export * from "../schemas/chat/chat_sync_request"; +export * from "../schemas/chat/guest_chat_quota"; +export * from "../schemas/chat/image_upload_response"; +export * from "../schemas/chat/send_message_request"; +export * from "../schemas/chat/stt_data"; +export * from "../schemas/chat/sync_message"; +export * from "../schemas/metrics/app_event"; +export * from "../schemas/metrics/pwa_event"; +export * from "../schemas/user/avatar_data"; +export * from "../schemas/user/credits_data"; +export * from "../schemas/user/credits_history_data"; +export * from "../schemas/user/personality_traits"; +export * from "../schemas/user/recent_memory"; +export * from "../schemas/user/update_profile_request"; +export * from "../schemas/user/user"; +export * from "../schemas/user/user_stats_response"; diff --git a/src/data/storage/auth_storage.ts b/src/data/storage/auth_storage.ts deleted file mode 100644 index 4af47a72..00000000 --- a/src/data/storage/auth_storage.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Auth 存储 - localStorage 包装 - * - * 存储登录 token、刷新 token、游客 token、设备 ID。 - * 原始 Dart: lib/data/services/storage/auth_storage.dart - * - * 注:localStorage 仅在浏览器环境可用; - * 在 Server Components 中调用会抛错,应仅在 Client Components 或拦截器中使用。 - */ - -const STORAGE_KEYS = { - loginToken: "cozsweet.loginToken", - refreshToken: "cozsweet.refreshToken", - guestToken: "cozsweet.guestToken", - deviceId: "cozsweet.deviceId", -} as const; - -function getStorage(): Storage | null { - if (typeof window === "undefined") return null; - try { - return window.localStorage; - } catch { - return null; - } -} - -export class AuthStorage { - // ============ 登录 Token ============ - - getLoginToken(): string | null { - return getStorage()?.getItem(STORAGE_KEYS.loginToken) ?? null; - } - - setLoginToken(token: string): void { - getStorage()?.setItem(STORAGE_KEYS.loginToken, token); - } - - removeLoginToken(): void { - getStorage()?.removeItem(STORAGE_KEYS.loginToken); - } - - // ============ 刷新 Token ============ - - getRefreshToken(): string | null { - return getStorage()?.getItem(STORAGE_KEYS.refreshToken) ?? null; - } - - setRefreshToken(token: string): void { - getStorage()?.setItem(STORAGE_KEYS.refreshToken, token); - } - - removeRefreshToken(): void { - getStorage()?.removeItem(STORAGE_KEYS.refreshToken); - } - - // ============ 游客 Token ============ - - getGuestToken(): string | null { - return getStorage()?.getItem(STORAGE_KEYS.guestToken) ?? null; - } - - setGuestToken(token: string): void { - getStorage()?.setItem(STORAGE_KEYS.guestToken, token); - } - - removeGuestToken(): void { - getStorage()?.removeItem(STORAGE_KEYS.guestToken); - } - - // ============ 设备 ID ============ - - getDeviceId(): string | null { - return getStorage()?.getItem(STORAGE_KEYS.deviceId) ?? null; - } - - setDeviceId(deviceId: string): void { - getStorage()?.setItem(STORAGE_KEYS.deviceId, deviceId); - } - - removeDeviceId(): void { - getStorage()?.removeItem(STORAGE_KEYS.deviceId); - } - - // ============ 复合操作 ============ - - /** - * 是否有登录 token - */ - hasLoginToken(): boolean { - const token = this.getLoginToken(); - return token !== null && token.length > 0; - } - - /** - * 获取认证 token(优先登录 token,其次游客 token) - */ - getAuthToken(): string | null { - const loginToken = this.getLoginToken(); - if (loginToken !== null && loginToken.length > 0) return loginToken; - const guestToken = this.getGuestToken(); - if (guestToken !== null && guestToken.length > 0) return guestToken; - return null; - } - - /** - * 清除所有 auth 数据(登录/刷新/游客 token) - */ - clearAuthData(): void { - this.removeLoginToken(); - this.removeRefreshToken(); - this.removeGuestToken(); - } -} - -/** - * 全局单例 - */ -export const authStorage = new AuthStorage(); diff --git a/src/data/storage/local_storage.ts b/src/data/storage/local_storage.ts deleted file mode 100644 index ab0d400a..00000000 --- a/src/data/storage/local_storage.ts +++ /dev/null @@ -1,123 +0,0 @@ -"use client"; - -/** - * localStorage 通用包装 - * - * 设计要点: - * 1. 全部方法返回 `Promise>`,与 `LocalChatStorage`(Dexie/异步)保持签名一致, - * 调用方可以统一 `await` 而不必关心底层是同步还是异步。 - * 2. 三重 SSR 保护: - * - 文件顶 `"use client"` 指令 - * - 构造时探测 `typeof window`,服务端拿不到 `window.localStorage` 时存 `null` - * - 每次调用入口再做可用性检查,避免运行时炸 - * 3. 测试友好:构造函数接受可选 `Storage` 注入,单例可通过 `_resetForTests` 重置。 - * 4. `getString` 把空串视作 `null`(对齐 Dart `SpAsyncUtil.getString` 行为)。 - * 5. `getJson` / `setJson` 在边界做 Zod 校验,读写都走 schema。 - */ - -import { type ZodType } from "zod"; -import { Result, type Result as ResultT } from "@/utils/result"; - -const SSR_ERROR_MSG = - "localStorage is not available in this environment (SSR or non-browser)"; - -export class LocalStorage { - private readonly storage: Storage | null; - private static _instance: LocalStorage | null = null; - - constructor(storage?: Storage | null) { - this.storage = - storage !== undefined - ? storage - : typeof window !== "undefined" - ? window.localStorage - : null; - } - - /** 全局单例(仅在浏览器环境有效)。 */ - static getInstance(): LocalStorage { - if (!LocalStorage._instance) { - LocalStorage._instance = new LocalStorage(); - } - return LocalStorage._instance; - } - - /** @internal 测试用:重置单例以便每个测试用例拿到独立实例。 */ - static _resetForTests(): void { - LocalStorage._instance = null; - } - - private isAvailable(): boolean { - return this.storage !== null; - } - - async getString(key: string): Promise> { - if (!this.isAvailable()) return Result.err(new Error(SSR_ERROR_MSG)); - try { - const v = this.storage!.getItem(key); - if (v === null || v === "") return Result.ok(null); - return Result.ok(v); - } catch (e) { - return Result.err(e); - } - } - - async setString(key: string, value: string): Promise> { - if (!this.isAvailable()) return Result.err(new Error(SSR_ERROR_MSG)); - try { - this.storage!.setItem(key, value); - return Result.ok(undefined); - } catch (e) { - return Result.err(e); - } - } - - async getJson(key: string, schema: ZodType): Promise> { - const r = await this.getString(key); - if (!r.success) return Result.err(r.error); - if (r.data === null) { - const value: T | null = null; - return Result.ok(value); - } - try { - const parsed = schema.parse(JSON.parse(r.data)); - return Result.ok(parsed); - } catch (e) { - return Result.err(e); - } - } - - async setJson( - key: string, - value: T, - schema?: ZodType, - ): Promise> { - if (!this.isAvailable()) return Result.err(new Error(SSR_ERROR_MSG)); - try { - const validated = schema ? schema.parse(value) : value; - this.storage!.setItem(key, JSON.stringify(validated)); - return Result.ok(undefined); - } catch (e) { - return Result.err(e); - } - } - - async remove(key: string): Promise> { - if (!this.isAvailable()) return Result.err(new Error(SSR_ERROR_MSG)); - try { - this.storage!.removeItem(key); - return Result.ok(undefined); - } catch (e) { - return Result.err(e); - } - } - - async has(key: string): Promise> { - if (!this.isAvailable()) return Result.err(new Error(SSR_ERROR_MSG)); - try { - return Result.ok(this.storage!.getItem(key) !== null); - } catch (e) { - return Result.err(e); - } - } -}