From f4ea9a85f03b4a92c7c90a1b1e578cab55242df0 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 14 Jan 2025 00:14:07 +0800 Subject: [PATCH] code refactor --- src/consts/category.ts | 14 +++++++------- src/core/currency.ts | 4 ++-- src/core/numeral.ts | 10 +++++----- src/lib/services.ts | 10 +++++----- src/lib/session.ts | 20 ++++++++++---------- src/lib/webauthn.ts | 30 +++++++++++++++--------------- src/locales/helpers.ts | 10 +++++----- src/locales/index.ts | 10 +++++----- src/models/auth_response.ts | 12 ++++++------ src/models/transaction.ts | 22 +++++++++++----------- src/stores/exchangeRates.ts | 4 ++-- 11 files changed, 73 insertions(+), 73 deletions(-) diff --git a/src/consts/category.ts b/src/consts/category.ts index b65a29de..d9a3f3db 100644 --- a/src/consts/category.ts +++ b/src/consts/category.ts @@ -1,16 +1,16 @@ import type { ColorValue } from '@/core/color.ts'; export interface PresetCategory { - name: string; - categoryIconId: string; - color: ColorValue; - subCategories: PresetSubCategory[]; + readonly name: string; + readonly categoryIconId: string; + readonly color: ColorValue; + readonly subCategories: PresetSubCategory[]; } export interface PresetSubCategory { - name: string; - categoryIconId: string; - color: ColorValue; + readonly name: string; + readonly categoryIconId: string; + readonly color: ColorValue; } export const DEFAULT_EXPENSE_CATEGORIES: PresetCategory[] = [ diff --git a/src/core/currency.ts b/src/core/currency.ts index 95788d28..dad9a494 100644 --- a/src/core/currency.ts +++ b/src/core/currency.ts @@ -14,8 +14,8 @@ export enum CurrencyDisplayLocation { } export interface CurrencyPrependAndAppendText { - prependText?: string; - appendText?: string; + readonly prependText?: string; + readonly appendText?: string; } export class CurrencyDisplayType implements TypeAndName { diff --git a/src/core/numeral.ts b/src/core/numeral.ts index 2e3d0856..1132c291 100644 --- a/src/core/numeral.ts +++ b/src/core/numeral.ts @@ -1,11 +1,11 @@ import type { TypeAndName, TypeAndDisplayName } from '@/core/base.ts'; export interface NumberFormatOptions { - digitGrouping?: number; - digitGroupingSymbol?: string; - decimalNumberCount?: number; - decimalSeparator?: string; - trimTailZero?: boolean; + readonly digitGrouping?: number; + readonly digitGroupingSymbol?: string; + readonly decimalNumberCount?: number; + readonly decimalSeparator?: string; + readonly trimTailZero?: boolean; } export interface NumeralSymbolType { diff --git a/src/lib/services.ts b/src/lib/services.ts index 775ef165..7d632a69 100644 --- a/src/lib/services.ts +++ b/src/lib/services.ts @@ -130,11 +130,11 @@ import { getTimezoneOffsetMinutes } from './datetime.ts'; import { generateRandomUUID } from './misc.ts'; interface ApiRequestConfig extends AxiosRequestConfig { - headers: AxiosRequestHeaders; - noAuth?: boolean; - ignoreBlocked?: boolean; - ignoreError?: boolean; - timeout?: number; + readonly headers: AxiosRequestHeaders; + readonly noAuth?: boolean; + readonly ignoreBlocked?: boolean; + readonly ignoreError?: boolean; + readonly timeout?: number; } export type ApiResponsePromise = Promise>>; diff --git a/src/lib/session.ts b/src/lib/session.ts index e47e0e0f..5262c84a 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -3,18 +3,18 @@ import uaParser from 'ua-parser-js'; import { TOKEN_CLI_USER_AGENT, type TokenInfoResponse, SessionInfo } from '@/models/token.ts'; interface UserAgentInfo { - device: { - vendor?: string; - model?: string; - type?: string; + readonly device: { + readonly vendor?: string; + readonly model?: string; + readonly type?: string; }; - os: { - name?: string; - version?: string; + readonly os: { + readonly name?: string; + readonly version?: string; }; - browser: { - name?: string; - version?: string; + readonly browser: { + readonly name?: string; + readonly version?: string; }; } diff --git a/src/lib/webauthn.ts b/src/lib/webauthn.ts index a2eb6970..aa10b822 100644 --- a/src/lib/webauthn.ts +++ b/src/lib/webauthn.ts @@ -16,30 +16,30 @@ import { import logger from './logger.ts'; interface ClientData { - challenge: string; - crossOrigin: boolean; - origin: string; - type: string; + readonly challenge: string; + readonly crossOrigin: boolean; + readonly origin: string; + readonly type: string; } interface AttestationData { - authData: Uint8Array; - fmt: string; + readonly authData: Uint8Array; + readonly fmt: string; } interface WebAuthnRegisterResponse { - id: string | null; - clientData: ClientData; - publicKey: Uint8Array | null; - rawCredential: Credential; + readonly id: string | null; + readonly clientData: ClientData; + readonly publicKey: Uint8Array | null; + readonly rawCredential: Credential; } interface WebAuthnVerifyResponse { - id: string | null; - userName: string; - userSecret: string; - clientData: ClientData; - rawCredential: Credential; + readonly id: string | null; + readonly userName: string; + readonly userSecret: string; + readonly clientData: ClientData; + readonly rawCredential: Credential; } const PUBLIC_KEY_CREDENTIAL_CREATION_OPTIONS_BASE_TEMPLATE = { diff --git a/src/locales/helpers.ts b/src/locales/helpers.ts index e18b78b5..b54dbc4e 100644 --- a/src/locales/helpers.ts +++ b/src/locales/helpers.ts @@ -116,14 +116,14 @@ import { useSettingsStore } from '@/stores/setting.ts'; import { useUserStore } from '@/stores/user.ts'; export interface LocalizedErrorParameter { - key: string; - localized: boolean; - value: string; + readonly key: string; + readonly localized: boolean; + readonly value: string; } export interface LocalizedError { - message: string; - parameters?: LocalizedErrorParameter[]; + readonly message: string; + readonly parameters?: LocalizedErrorParameter[]; } export function getI18nOptions(): object { diff --git a/src/locales/index.ts b/src/locales/index.ts index 6b0fea44..8fa9d2c2 100644 --- a/src/locales/index.ts +++ b/src/locales/index.ts @@ -3,11 +3,11 @@ import vi from './vi.json'; import zhHans from './zh_Hans.json'; export interface LanguageInfo { - name: string; - displayName: string; - alternativeLanguageTag: string; - aliases?: string[]; - content: object; + readonly name: string; + readonly displayName: string; + readonly alternativeLanguageTag: string; + readonly aliases?: string[]; + readonly content: object; } export const DEFAULT_LANGUAGE: string = 'en'; diff --git a/src/models/auth_response.ts b/src/models/auth_response.ts index cb72c8ae..0d333269 100644 --- a/src/models/auth_response.ts +++ b/src/models/auth_response.ts @@ -1,13 +1,13 @@ import type { UserBasicInfo } from './user.ts'; export interface AuthResponse { - token: string; - need2FA: boolean; - user?: UserBasicInfo; - notificationContent?: string; + readonly token: string; + readonly need2FA: boolean; + readonly user?: UserBasicInfo; + readonly notificationContent?: string; } export interface RegisterResponse extends AuthResponse { - needVerifyEmail: boolean; - presetCategoriesSaved: boolean; + readonly needVerifyEmail: boolean; + readonly presetCategoriesSaved: boolean; } diff --git a/src/models/transaction.ts b/src/models/transaction.ts index 20621031..b2ce576f 100644 --- a/src/models/transaction.ts +++ b/src/models/transaction.ts @@ -227,18 +227,18 @@ export interface TransactionAmountsResponseItemAmountInfo { export type TransactionOverviewResponse = PartialRecord; export interface TransactionOverviewResponseItem { - valid: boolean; - incomeAmount: number; - expenseAmount: number; - incompleteIncomeAmount: boolean; - incompleteExpenseAmount: boolean; - amounts?: TransactionAmountsResponseItemAmountInfo[]; + readonly valid: boolean; + readonly incomeAmount: number; + readonly expenseAmount: number; + readonly incompleteIncomeAmount: boolean; + readonly incompleteExpenseAmount: boolean; + readonly amounts?: TransactionAmountsResponseItemAmountInfo[]; } export interface TransactionMonthlyIncomeAndExpenseData { - monthStartTime: number; - incomeAmount: number; - expenseAmount: number; - incompleteIncomeAmount: boolean; - incompleteExpenseAmount: boolean; + readonly monthStartTime: number; + readonly incomeAmount: number; + readonly expenseAmount: number; + readonly incompleteIncomeAmount: boolean; + readonly incompleteExpenseAmount: boolean; } diff --git a/src/stores/exchangeRates.ts b/src/stores/exchangeRates.ts index 3412c65c..7db82703 100644 --- a/src/stores/exchangeRates.ts +++ b/src/stores/exchangeRates.ts @@ -13,8 +13,8 @@ import services from '@/lib/services.ts'; const exchangeRatesLocalStorageKey = 'ebk_app_exchange_rates'; interface LatestExchangeRates { - time?: number; - data?: LatestExchangeRateResponse; + readonly time?: number; + readonly data?: LatestExchangeRateResponse; } function getExchangeRatesFromLocalStorage(): LatestExchangeRates {