SYMBOL INDEX (519 symbols across 82 files) FILE: src/i18n/languages.ts constant LANGUAGE_DISPLAY_NAMES (line 4) | const LANGUAGE_DISPLAY_NAMES: Record = { constant DEFAULT_LANGUAGE (line 13) | const DEFAULT_LANGUAGE = 'zh-CN'; constant FALLBACK_LANGUAGE (line 16) | const FALLBACK_LANGUAGE = 'en-US'; constant LANGUAGE_PRIORITY (line 19) | const LANGUAGE_PRIORITY: Record = { FILE: src/i18n/main.ts type Language (line 7) | type Language = keyof typeof messages; method locale (line 13) | get locale() { method locale (line 16) | set locale(value: Language) { method t (line 19) | t(key: string) { FILE: src/main/index.ts function initialize (line 31) | function initialize(configStore: any) { FILE: src/main/modules/cache.ts type LyricData (line 4) | interface LyricData { type StoreSchema (line 10) | interface StoreSchema { class CacheManager (line 14) | class CacheManager { method constructor (line 17) | constructor() { method cacheLyric (line 26) | async cacheLyric(id: number, data: any) { method getCachedLyric (line 42) | async getCachedLyric(id: number) { method clearLyricCache (line 63) | async clearLyricCache() { function initializeCacheManager (line 76) | function initializeCacheManager() { FILE: src/main/modules/config.ts type SetConfig (line 7) | type SetConfig = { type StoreType (line 30) | interface StoreType { function initializeConfig (line 40) | function initializeConfig() { function getStore (line 81) | function getStore() { FILE: src/main/modules/deviceInfo.ts function getDeviceId (line 12) | function getDeviceId(): string { function getSystemInfo (line 55) | function getSystemInfo() { FILE: src/main/modules/fileManager.ts constant MAX_CONCURRENT_DOWNLOADS (line 17) | const MAX_CONCURRENT_DOWNLOADS = 3; function initializeFileManager (line 43) | function initializeFileManager() { function handleDownloadRequest (line 359) | function handleDownloadRequest( function processDownloadQueue (line 407) | async function processDownloadQueue(event: Electron.IpcMainEvent) { function sanitizeFilename (line 426) | function sanitizeFilename(filename: string): string { function downloadMusic (line 437) | async function downloadMusic( function parseLyrics (line 887) | function parseLyrics(lyricsText: string): Map { function mergeLyrics (line 910) | function mergeLyrics( FILE: src/main/modules/fonts.ts function cleanFontName (line 9) | function cleanFontName(fontName: string): string { function getSystemFonts (line 19) | async function getSystemFonts(): Promise { function initializeFonts (line 37) | function initializeFonts() { FILE: src/main/modules/loginWindow.ts function initializeLoginWindow (line 95) | function initializeLoginWindow() { FILE: src/main/modules/lxMusicHttp.ts type LxHttpRequest (line 9) | interface LxHttpRequest { type LxHttpResponse (line 22) | interface LxHttpResponse { FILE: src/main/modules/otherApi.ts function initializeOtherApi (line 7) | function initializeOtherApi() { FILE: src/main/modules/remoteControl.ts type RemoteControlConfig (line 11) | interface RemoteControlConfig { function getLocalIpAddresses (line 31) | function getLocalIpAddresses(): string[] { function initializeRemoteControl (line 50) | function initializeRemoteControl(mainWindow: Electron.BrowserWindow) { function startServer (line 102) | function startServer(config: RemoteControlConfig) { function stopServer (line 140) | function stopServer() { function setupRoutes (line 150) | function setupRoutes(app: express.Application) { FILE: src/main/modules/shortcuts.ts type ShortcutConfig (line 11) | interface ShortcutConfig { type ShortcutsConfig (line 17) | interface ShortcutsConfig { function registerShortcuts (line 35) | function registerShortcuts( function initializeShortcuts (line 100) | function initializeShortcuts(mainWindow: Electron.BrowserWindow) { FILE: src/main/modules/tray.ts type SongInfo (line 17) | interface SongInfo { constant LANGUAGES (line 37) | const LANGUAGES = getLanguageOptions(); function updatePlayState (line 40) | function updatePlayState(playing: boolean) { function getArtistString (line 50) | function getArtistString(song: SongInfo | null): string { function getSongTitle (line 56) | function getSongTitle(song: SongInfo | null): string { function getTruncatedSongTitle (line 63) | function getTruncatedSongTitle(song: SongInfo | null, maxLength: number ... function updateCurrentSong (line 70) | function updateCurrentSong(song: SongInfo | null) { function getProperIconSize (line 80) | function getProperIconSize() { function updateStatusBarTray (line 88) | function updateStatusBarTray() { function updateTrayMenu (line 141) | function updateTrayMenu(mainWindow: BrowserWindow) { function initializeStatusBarTray (line 335) | function initializeStatusBarTray(mainWindow: BrowserWindow) { function initializeTray (line 406) | function initializeTray(iconPath: string, mainWindow: BrowserWindow) { FILE: src/main/modules/update.ts function setupUpdateHandlers (line 7) | function setupUpdateHandlers(_mainWindow: BrowserWindow) { FILE: src/main/modules/window-size.ts constant DEFAULT_MAIN_WIDTH (line 7) | const DEFAULT_MAIN_WIDTH = 1200; constant DEFAULT_MAIN_HEIGHT (line 8) | const DEFAULT_MAIN_HEIGHT = 780; constant DEFAULT_MINI_WIDTH (line 9) | const DEFAULT_MINI_WIDTH = 340; constant DEFAULT_MINI_HEIGHT (line 10) | const DEFAULT_MINI_HEIGHT = 64; constant DEFAULT_MINI_EXPANDED_HEIGHT (line 11) | const DEFAULT_MINI_EXPANDED_HEIGHT = 400; constant WINDOW_STATE_KEY (line 14) | const WINDOW_STATE_KEY = 'windowState'; constant MIN_WIDTH (line 17) | let MIN_WIDTH = Math.round(DEFAULT_MAIN_WIDTH * 0.5); constant MIN_HEIGHT (line 18) | let MIN_HEIGHT = Math.round(DEFAULT_MAIN_HEIGHT * 0.5); type WindowState (line 26) | interface WindowState { class WindowSizeManager (line 38) | class WindowSizeManager { method constructor (line 44) | constructor() { method initialize (line 53) | initialize(): void { method setMainWindow (line 72) | setMainWindow(win: BrowserWindow): void { method initMinimumWindowSize (line 92) | private initMinimumWindowSize(): void { method setupEventListeners (line 120) | private setupEventListeners(win: BrowserWindow): void { method enforceCorrectSize (line 170) | private enforceCorrectSize(win: BrowserWindow): void { method getWindowOptions (line 275) | getWindowOptions(): Electron.BrowserWindowConstructorOptions { method applyInitialState (line 317) | applyInitialState(win: BrowserWindow): void { method saveWindowState (line 345) | saveWindowState(win: BrowserWindow): WindowState { method getWindowState (line 428) | getWindowState(): WindowState | null { method isPositionVisible (line 453) | isPositionVisible(x: number, y: number): boolean { method calculateContentZoomFactor (line 478) | calculateContentZoomFactor(): number { method applyContentZoom (line 528) | applyContentZoom(win: BrowserWindow): void { method setupIPCHandlers (line 548) | setupIPCHandlers(): void { FILE: src/main/modules/window.ts function setAppQuitting (line 47) | function setAppQuitting(quitting: boolean) { function initializeProxy (line 54) | function initializeProxy() { function setThumbarButtons (line 77) | function setThumbarButtons(window: BrowserWindow) { function initializeWindowManager (line 110) | function initializeWindowManager() { function createMainWindow (line 291) | function createMainWindow(icon: Electron.NativeImage): BrowserWindow { FILE: src/main/server.ts function checkPortAvailable (line 29) | function checkPortAvailable(port: number): Promise { function startMusicApi (line 44) | async function startMusicApi(): Promise { FILE: src/main/unblockMusic.ts type Platform (line 3) | type Platform = 'qq' | 'migu' | 'kugou' | 'kuwo' | 'pyncmd' | 'joox' | '... type SongData (line 5) | interface SongData { type ResponseData (line 13) | interface ResponseData { type UnblockResult (line 22) | interface UnblockResult { constant ALL_PLATFORMS (line 33) | const ALL_PLATFORMS: Platform[] = ['migu', 'kugou', 'kuwo', 'pyncmd', 'b... function ensureDataStructure (line 39) | function ensureDataStructure(data: any): any { FILE: src/preload/index.d.ts type API (line 3) | interface API { type IpcRenderer (line 34) | interface IpcRenderer { type Window (line 42) | interface Window { FILE: src/renderer/api/bilibili.ts type ISearchParams (line 6) | interface ISearchParams { type IBilibiliResponse (line 60) | interface IBilibiliResponse { FILE: src/renderer/api/donation.ts type Donor (line 3) | interface Donor { FILE: src/renderer/api/gdmusic.ts type GDMusicResponse (line 8) | interface GDMusicResponse { type ParsedMusicResult (line 17) | interface ParsedMusicResult { type GDMusicUrlResult (line 128) | interface GDMusicUrlResult { function searchAndGetUrl (line 144) | async function searchAndGetUrl( FILE: src/renderer/api/home.ts type IHotSingerParams (line 10) | interface IHotSingerParams { type IRecommendMusicParams (line 15) | interface IRecommendMusicParams { FILE: src/renderer/api/list.ts type IListByTagParams (line 5) | interface IListByTagParams { type IListByCatParams (line 11) | interface IListByCatParams { function getListByTag (line 18) | function getListByTag(params: IListByTagParams) { function getListByCat (line 23) | function getListByCat(params: IListByCatParams) { function getRecommendList (line 30) | function getRecommendList(limit: number = 30) { function getListDetail (line 35) | function getListDetail(id: number | string) { function getAlbum (line 40) | function getAlbum(id: number | string) { function getToplist (line 45) | function getToplist() { FILE: src/renderer/api/login.ts function getQrKey (line 5) | function getQrKey() { function createQr (line 11) | function createQr(key: any) { function checkQr (line 17) | function checkQr(key: any) { function getLoginStatus (line 23) | function getLoginStatus() { function getUserDetail (line 29) | function getUserDetail() { function logout (line 35) | function logout() { function loginByCellphone (line 41) | function loginByCellphone(phone: string, password: string) { function loginByUid (line 50) | function loginByUid(uid: string | number) { FILE: src/renderer/api/lxMusicStrategy.ts class LxMusicStrategy (line 140) | class LxMusicStrategy { method canHandle (line 147) | canHandle(sources: string[], settingsStore?: any): boolean { method parse (line 169) | async parse( FILE: src/renderer/api/music.ts function getMusicListByType (line 135) | function getMusicListByType(type: string, id: string) { function getAlbumDetail (line 148) | function getAlbumDetail(id: string) { function getPlaylistDetail (line 162) | function getPlaylistDetail(id: string) { function subscribePlaylist (line 172) | function subscribePlaylist(params: { t: number; id: number }) { function subscribeAlbum (line 184) | function subscribeAlbum(params: { t: number; id: number }) { function getHistoryRecommendDates (line 195) | function getHistoryRecommendDates() { function getHistoryRecommendSongs (line 206) | function getHistoryRecommendSongs(date: string) { function getIntelligenceList (line 218) | function getIntelligenceList(params: { id: number; pid: number; sid?: nu... FILE: src/renderer/api/musicParser.ts type MusicParseResult (line 21) | interface MusicParseResult { constant CACHE_CONFIG (line 35) | const CACHE_CONFIG = { class CacheManager (line 53) | class CacheManager { method getCachedMusicUrl (line 57) | static async getCachedMusicUrl( method setCachedMusicUrl (line 94) | static async setCachedMusicUrl( method isInFailedCache (line 116) | static isInFailedCache(id: number, strategyName: string): boolean { method addFailedCache (line 133) | static addFailedCache(id: number, strategyName: string): void { method clearFailedCache (line 144) | static clearFailedCache(id: number): void { method clearMusicCache (line 160) | static async clearMusicCache(id: number): Promise { class RetryHelper (line 186) | class RetryHelper { method withRetry (line 190) | static async withRetry( type MusicSourceStrategy (line 314) | interface MusicSourceStrategy { class CustomApiStrategy (line 329) | class CustomApiStrategy implements MusicSourceStrategy { method canHandle (line 333) | canHandle(sources: string[], settingsStore?: any): boolean { method parse (line 337) | async parse(id: number, data: SongResult, quality = 'higher'): Promise... class BilibiliStrategy (line 369) | class BilibiliStrategy implements MusicSourceStrategy { method canHandle (line 373) | canHandle(sources: string[]): boolean { method parse (line 377) | async parse(id: number, data: SongResult): Promise { FILE: src/renderer/hooks/MusicHook.ts constant CORRECTION_KEY (line 607) | const CORRECTION_KEY = 'lyric-correction-map'; FILE: src/renderer/hooks/PlaylistHistoryHook.ts type PlaylistHistoryItem (line 5) | interface PlaylistHistoryItem { FILE: src/renderer/hooks/usePlayMode.ts function usePlayMode (line 10) | function usePlayMode() { FILE: src/renderer/hooks/useSongItem.ts function useSongItem (line 14) | function useSongItem(props: { item: SongResult; canRemove?: boolean }) { FILE: src/renderer/hooks/useZoom.ts function useZoom (line 7) | function useZoom() { FILE: src/renderer/router/index.ts function getUserId (line 11) | function getUserId(): string | null { FILE: src/renderer/services/LxMusicSourceRunner.ts class LxMusicSourceRunner (line 79) | class LxMusicSourceRunner { method constructor (line 89) | constructor(script: string) { method getScriptInfo (line 97) | getScriptInfo(): LxScriptInfo { method getSources (line 104) | getSources(): Partial> { method initialize (line 111) | async initialize(): Promise { method executeSandboxed (line 146) | private executeSandboxed( method createSandbox (line 177) | private createSandbox( method handleHttpRequest (line 352) | private handleHttpRequest( method getMusicUrl (line 484) | async getMusicUrl( method getLyric (line 565) | async getLyric(source: LxSourceKey, musicInfo: LxMusicInfo): Promise { method addTriedSource (line 128) | static addTriedSource(songId: number | string, source: string): void { method clearTriedSources (line 138) | static clearTriedSources(songId: number | string): void { method getTriedSourceDiffs (line 148) | static getTriedSourceDiffs(songId: number | string): Map { method _performLoad (line 53) | private async _performLoad(song: SongResult): Promise { method _createSound (line 82) | private _createSound(url: string): Promise { method cancel (line 99) | public cancel(songId: string | number) { method getPreloadedSound (line 112) | public getPreloadedSound(songId: string | number): Howl | undefined { method consume (line 121) | public consume(songId: string | number): Howl | undefined { method clearAll (line 134) | public clearAll() { FILE: src/renderer/services/translation-engines/opencc.ts function init (line 6) | async function init(): Promise { function convert (line 17) | async function convert(text: string): Promise { function convertLines (line 23) | async function convertLines(lines: string[]) { function translateLines (line 44) | async function translateLines(lines: ILyricText[]) { function ensureOpenccConverter (line 78) | async function ensureOpenccConverter() { FILE: src/renderer/store/modules/music.ts type MusicState (line 3) | interface MusicState { method setCurrentMusicList (line 20) | setCurrentMusicList(list: any[], name: string, listInfo: any = null, can... method clearCurrentMusicList (line 28) | clearCurrentMusicList() { method removeSongFromList (line 36) | removeSongFromList(id: number) { FILE: src/renderer/store/modules/sleepTimer.ts type SleepTimerType (line 8) | enum SleepTimerType { type SleepTimerInfo (line 16) | interface SleepTimerInfo { FILE: src/renderer/store/modules/user.ts type UserData (line 9) | interface UserData { function getLocalStorageItem (line 14) | function getLocalStorageItem(key: string, defaultValue: T): T { FILE: src/renderer/types/album.ts type IAlbumNew (line 1) | interface IAlbumNew { type Album (line 6) | interface Album { type Artist2 (line 33) | interface Artist2 { type Artist (line 49) | interface Artist { FILE: src/renderer/types/artist.ts type IArtistDetail (line 1) | interface IArtistDetail { type User (line 14) | interface User { type AvatarDetail (line 53) | interface AvatarDetail { type SecondaryExpertIdentiy (line 59) | interface SecondaryExpertIdentiy { type IArtist (line 65) | interface IArtist { type Rank (line 81) | interface Rank { type Identify (line 86) | interface Identify { type VipRights (line 92) | interface VipRights { type RightsInfoDetailDtoList (line 100) | interface RightsInfoDetailDtoList { FILE: src/renderer/types/bilibili.ts type IBilibiliSearchResult (line 1) | interface IBilibiliSearchResult { type IBilibiliVideoDetail (line 28) | interface IBilibiliVideoDetail { type IBilibiliPage (line 54) | interface IBilibiliPage { type IBilibiliPlayUrl (line 66) | interface IBilibiliPlayUrl { type IBilibiliDashItem (line 97) | interface IBilibiliDashItem { FILE: src/renderer/types/day_recommend.ts type IDayRecommend (line 1) | interface IDayRecommend { type RecommendReason (line 8) | interface RecommendReason { type DailySong (line 15) | interface DailySong { type Privilege (line 70) | interface Privilege { type ChargeInfoList (line 103) | interface ChargeInfoList { type FreeTrialPrivilege (line 110) | interface FreeTrialPrivilege { type VideoInfo (line 118) | interface VideoInfo { type Video (line 123) | interface Video { type OriginSongSimpleDatum (line 134) | interface OriginSongSimpleDatum { type Artist (line 141) | interface Artist { type H (line 146) | interface H { type Al (line 154) | interface Al { type Ar (line 163) | interface Ar { FILE: src/renderer/types/electron.d.ts type IElectronAPI (line 1) | interface IElectronAPI { type Window (line 22) | interface Window { FILE: src/renderer/types/index.ts type IData (line 1) | interface IData { FILE: src/renderer/types/list.ts type IList (line 1) | interface IList { type Playlist (line 9) | interface Playlist { type Subscriber (line 48) | interface Subscriber { type Creator (line 82) | interface Creator { type AvatarDetail (line 116) | interface AvatarDetail { type Expert (line 122) | interface Expert { type IRecommendList (line 128) | interface IRecommendList { type IRecommendItem (line 135) | interface IRecommendItem { FILE: src/renderer/types/listDetail.ts type IListDetail (line 1) | interface IListDetail { type Privilege (line 11) | interface Privilege { type ChargeInfoList (line 37) | interface ChargeInfoList { type FreeTrialPrivilege (line 44) | interface FreeTrialPrivilege { type Playlist (line 49) | interface Playlist { type TrackId (line 96) | interface TrackId { type Track (line 106) | interface Track { type H (line 148) | interface H { type Al (line 155) | interface Al { type Ar (line 164) | interface Ar { type Subscriber (line 171) | interface Subscriber { FILE: src/renderer/types/lxMusic.ts type LxScriptInfo (line 10) | type LxScriptInfo = { type LxQuality (line 22) | type LxQuality = '128k' | '320k' | 'flac' | 'flac24bit'; type LxSourceKey (line 33) | type LxSourceKey = 'kw' | 'kg' | 'tx' | 'wy' | 'mg' | 'local'; type LxSourceConfig (line 38) | type LxSourceConfig = { type LxInitedData (line 48) | type LxInitedData = { type LxRequestData (line 56) | type LxRequestData = { type LxMusicInfo (line 69) | type LxMusicInfo = { type LxLyricResult (line 84) | type LxLyricResult = { type LxMusicScriptConfig (line 94) | type LxMusicScriptConfig = { type LxMusicApiList (line 107) | type LxMusicApiList = { constant LX_EVENT_NAMES (line 115) | const LX_EVENT_NAMES = { constant LX_SOURCE_NAMES (line 124) | const LX_SOURCE_NAMES: Record = { constant QUALITY_TO_LX (line 136) | const QUALITY_TO_LX: Record = { FILE: src/renderer/types/lyric.ts type LyricConfig (line 1) | interface LyricConfig { constant DEFAULT_LYRIC_CONFIG (line 34) | const DEFAULT_LYRIC_CONFIG: LyricConfig = { type ILyric (line 68) | interface ILyric { type Lrc (line 78) | interface Lrc { FILE: src/renderer/types/music.ts type Platform (line 2) | type Platform = constant DEFAULT_PLATFORMS (line 14) | const DEFAULT_PLATFORMS: Platform[] = [ type IRecommendMusic (line 23) | interface IRecommendMusic { type IWordData (line 29) | interface IWordData { type ILyricText (line 36) | interface ILyricText { type ILyric (line 45) | interface ILyric { type SongResult (line 52) | interface SongResult { type Song (line 88) | interface Song { type Privilege (line 140) | interface Privilege { type ChargeInfoList (line 163) | interface ChargeInfoList { type FreeTrialPrivilege (line 170) | interface FreeTrialPrivilege { type BMusic (line 175) | interface BMusic { type Album (line 187) | interface Album { type Artist (line 216) | interface Artist { type IPlayMusicUrl (line 231) | interface IPlayMusicUrl { type Datum (line 236) | interface Datum { type FreeTimeTrialPrivilege (line 259) | interface FreeTimeTrialPrivilege { type FreeTrialPrivilege (line 266) | interface FreeTrialPrivilege { type IArtists (line 271) | interface IArtists { type MusicSourceType (line 285) | type MusicSourceType = FILE: src/renderer/types/mv.ts type IMvItem (line 1) | interface IMvItem { type IMvData (line 21) | interface IMvData { type Video (line 58) | interface Video { type TagSign (line 71) | interface TagSign { type Artist (line 79) | interface Artist { type IMvUrlData (line 99) | interface IMvUrlData { FILE: src/renderer/types/playlist.ts type IPlayListSort (line 1) | interface IPlayListSort { type SortCategories (line 8) | interface SortCategories { type SortAll (line 16) | interface SortAll { FILE: src/renderer/types/search.ts type ISearchKeyword (line 1) | interface ISearchKeyword { type SearchKeywordData (line 7) | interface SearchKeywordData { type IHotSearch (line 18) | interface IHotSearch { type Datum (line 24) | interface Datum { type ISearchDetail (line 35) | interface ISearchDetail { type Result (line 40) | interface Result { type User2 (line 57) | interface User2 { type User (line 64) | interface User { type Talk2 (line 99) | interface Talk2 { type Talk (line 105) | interface Talk { type ShareCover (line 123) | interface ShareCover { type DjRadio2 (line 131) | interface DjRadio2 { type DjRadio (line 138) | interface DjRadio { type Dj (line 176) | interface Dj { type Simquery2 (line 210) | interface Simquery2 { type Simquery (line 215) | interface Simquery { type Video2 (line 220) | interface Video2 { type Video (line 227) | interface Video { type Creator2 (line 241) | interface Creator2 { type Album3 (line 246) | interface Album3 { type Album2 (line 253) | interface Album2 { type Artist5 (line 281) | interface Artist5 { type Artist4 (line 297) | interface Artist4 { type Artist3 (line 315) | interface Artist3 { type Artist2 (line 322) | interface Artist2 { type PlayList2 (line 339) | interface PlayList2 { type PlayList (line 346) | interface PlayList { type Track (line 364) | interface Track { type HMusic (line 404) | interface HMusic { type Album (line 416) | interface Album { type Artist (line 441) | interface Artist { type Creator (line 455) | interface Creator { type Mlog2 (line 465) | interface Mlog2 { type Mlog (line 472) | interface Mlog { type Resource (line 485) | interface Resource { type UserProfile (line 493) | interface UserProfile { type MlogExtVO (line 502) | interface MlogExtVO { type MlogBaseData (line 517) | interface MlogBaseData { type Song2 (line 534) | interface Song2 { type KsongInfos (line 542) | interface KsongInfos { type _347230 (line 546) | interface _347230 { type Song (line 552) | interface Song { type Privilege (line 602) | interface Privilege { type ChargeInfoList (line 625) | interface ChargeInfoList { type FreeTrialPrivilege (line 632) | interface FreeTrialPrivilege { type H (line 637) | interface H { type Al (line 644) | interface Al { type Ar (line 653) | interface Ar { FILE: src/renderer/types/singer.ts type IHotSinger (line 1) | interface IHotSinger { type Artist (line 7) | interface Artist { FILE: src/renderer/types/user.ts type IUserDetail (line 1) | interface IUserDetail { type IUserFollow (line 17) | interface IUserFollow { type ProfileVillageInfo (line 31) | interface ProfileVillageInfo { type Binding (line 37) | interface Binding { type Profile (line 49) | interface Profile { type UserPoint (line 96) | interface UserPoint { FILE: src/renderer/utils/appShortcuts.ts constant ACTION_DELAY (line 12) | const ACTION_DELAY = 300; type ShortcutConfig (line 20) | interface ShortcutConfig { type ShortcutsConfig (line 26) | interface ShortcutsConfig { function handleShortcutAction (line 39) | async function handleShortcutAction(action: string) { function matchShortcut (line 157) | function matchShortcut(e: KeyboardEvent, shortcutKey: string): boolean { function handleKeyDown (line 189) | function handleKeyDown(e: KeyboardEvent) { function updateAppShortcuts (line 207) | function updateAppShortcuts(shortcuts: ShortcutsConfig) { function initAppShortcuts (line 214) | function initAppShortcuts() { function cleanupAppShortcuts (line 240) | function cleanupAppShortcuts() { function useAppShortcuts (line 254) | function useAppShortcuts() { FILE: src/renderer/utils/auth.ts type LoginInfo (line 8) | interface LoginInfo { function checkLoginStatus (line 20) | function checkLoginStatus(): LoginInfo { function hasPermission (line 63) | function hasPermission(requireAuth: boolean = false): boolean { function clearLoginStatus (line 81) | function clearLoginStatus(): void { function setLoginStatus (line 93) | function setLoginStatus(loginType: LoginInfo['loginType'], token?: strin... function getLoginErrorMessage (line 110) | function getLoginErrorMessage(requireAuth: boolean = false): string { FILE: src/renderer/utils/linearColor.ts type IColor (line 4) | interface IColor { type ITextColors (line 9) | interface ITextColors { type LyricThemeColor (line 15) | interface LyricThemeColor { type LyricSettings (line 22) | interface LyricSettings { constant PRESET_LYRIC_COLORS (line 320) | const PRESET_LYRIC_COLORS: LyricThemeColor[] = [ FILE: src/renderer/utils/playerUtils.ts function getLocalStorageItem (line 6) | function getLocalStorageItem(key: string, defaultValue: T): T { function setLocalStorageItem (line 18) | function setLocalStorageItem(key: string, value: T): void { FILE: src/renderer/utils/request.ts type CustomAxiosRequestConfig (line 10) | interface CustomAxiosRequestConfig extends InternalAxiosRequestConfig { constant MAX_RETRIES (line 26) | const MAX_RETRIES = 1; constant RETRY_DELAY (line 28) | const RETRY_DELAY = 500; constant NO_RETRY_URLS (line 76) | const NO_RETRY_URLS = ['暂时没有']; FILE: src/renderer/utils/shortcutToast.ts type ToastOptions (line 8) | interface ToastOptions { function showShortcutToast (line 13) | function showShortcutToast(message: string, iconName = '', options: Toas... function showBottomToast (line 50) | function showBottomToast(message: string) { FILE: src/renderer/utils/theme.ts type ThemeType (line 1) | type ThemeType = 'dark' | 'light'; FILE: src/renderer/utils/update.ts type GithubReleaseInfo (line 6) | interface GithubReleaseInfo { type ProxyNode (line 18) | interface ProxyNode { type ProxyResponse (line 27) | interface ProxyResponse { type UpdateResult (line 35) | interface UpdateResult { constant CACHE_KEY (line 51) | const CACHE_KEY = 'github_proxy_nodes'; constant CACHE_EXPIRE_TIME (line 52) | const CACHE_EXPIRE_TIME = 1000 * 60 * 10; constant REQUEST_TIMEOUT (line 55) | const REQUEST_TIMEOUT = 2000; FILE: src/renderer/utils/yrcParser.ts type WordData (line 4) | interface WordData { type LyricLine (line 18) | interface LyricLine { type MetaData (line 32) | interface MetaData { type ParsedLyrics (line 42) | interface ParsedLyrics { class LyricParseError (line 52) | class LyricParseError extends Error { method constructor (line 53) | constructor( type ParseResult (line 65) | type ParseResult = constant METADATA_PATTERN (line 70) | const METADATA_PATTERN = /^\{("t":|"c":)/; constant LINE_TIME_PATTERN (line 71) | const LINE_TIME_PATTERN = /^\[(\d+),(\d+)\](.+)$/; constant LRC_TIME_PATTERN (line 72) | const LRC_TIME_PATTERN = /^\[(\d{2}):(\d{2})\.(\d{2,3})\](.*)$/; constant WORD_PATTERN (line 73) | const WORD_PATTERN = /\((\d+),(\d+),\d+\)([^(]*?)(?=\(|$)/g;