SYMBOL INDEX (516 symbols across 119 files) FILE: scripts/prepare.mjs constant TEMP_DIR (line 9) | const TEMP_DIR = path.join(cwd, 'node_modules/.temp') constant MIHOMO_ALPHA_VERSION_URL (line 17) | const MIHOMO_ALPHA_VERSION_URL = constant MIHOMO_ALPHA_URL_PREFIX (line 19) | const MIHOMO_ALPHA_URL_PREFIX = `https://github.com/MetaCubeX/mihomo/rel... constant MIHOMO_ALPHA_VERSION (line 20) | let MIHOMO_ALPHA_VERSION constant MIHOMO_ALPHA_MAP (line 22) | const MIHOMO_ALPHA_MAP = { function getLatestAlphaVersion (line 33) | async function getLatestAlphaVersion() { constant MIHOMO_SMART_VERSION_URL (line 48) | const MIHOMO_SMART_VERSION_URL = constant MIHOMO_SMART_URL_PREFIX (line 50) | const MIHOMO_SMART_URL_PREFIX = `https://github.com/vernesong/mihomo/rel... constant MIHOMO_SMART_VERSION (line 51) | let MIHOMO_SMART_VERSION constant MIHOMO_SMART_MAP (line 53) | const MIHOMO_SMART_MAP = { function getLatestSmartVersion (line 63) | async function getLatestSmartVersion() { constant MIHOMO_VERSION_URL (line 78) | const MIHOMO_VERSION_URL = constant MIHOMO_URL_PREFIX (line 80) | const MIHOMO_URL_PREFIX = `https://github.com/MetaCubeX/mihomo/releases/... constant MIHOMO_VERSION (line 81) | let MIHOMO_VERSION constant MIHOMO_MAP (line 83) | const MIHOMO_MAP = { function getLatestReleaseVersion (line 94) | async function getLatestReleaseVersion() { function MihomoAlpha (line 126) | function MihomoAlpha() { function mihomo (line 143) | function mihomo() { function mihomoSmart (line 160) | function mihomoSmart() { function resolveSidecar (line 179) | async function resolveSidecar(binInfo) { function resolveResource (line 259) | async function resolveResource(binInfo) { function downloadFile (line 278) | async function downloadFile(url, path) { constant SYSPROXY_RS_VERSION (line 320) | const SYSPROXY_RS_VERSION = 'v0.1.0' constant SYSPROXY_RS_URL_PREFIX (line 321) | const SYSPROXY_RS_URL_PREFIX = `https://github.com/mihomo-party-org/sysp... function getSysproxyNodeName (line 323) | function getSysproxyNodeName() { function runTask (line 525) | async function runTask() { FILE: scripts/telegram.mjs function convertMarkdownToTelegramHTML (line 19) | function convertMarkdownToTelegramHTML(content) { FILE: scripts/update-version.mjs function updatePackageVersion (line 5) | function updatePackageVersion() { FILE: scripts/version-utils.mjs function getGitCommitHash (line 5) | function getGitCommitHash(short = true) { function getCurrentMonthDate (line 16) | function getCurrentMonthDate() { function getBaseVersion (line 24) | function getBaseVersion() { function getDevVersion (line 37) | function getDevVersion() { function isDevBuild (line 46) | function isDevBuild() { function getProcessedVersion (line 55) | function getProcessedVersion() { function getDownloadUrl (line 64) | function getDownloadUrl(isDev, version) { function generateDownloadLinksMarkdown (line 72) | function generateDownloadLinksMarkdown(downloadUrl, version) { FILE: src/main/config/app.ts function getAppConfig (line 10) | async function getAppConfig(force = false): Promise { function patchAppConfig (line 27) | async function patchAppConfig(patch: Partial): Promise { FILE: src/main/config/controledMihomo.ts function getControledMihomoConfig (line 16) | async function getControledMihomoConfig(force = false): Promise)... FILE: src/main/config/override.ts function getOverrideConfig (line 11) | async function getOverrideConfig(force = false): Promise { function setOverrideConfig (line 21) | async function setOverrideConfig(config: IOverrideConfig): Promise { function getOverrideItem (line 29) | async function getOverrideItem(id: string | undefined): Promise { function addOverrideItem (line 44) | async function addOverrideItem(item: Partial): Promise { function createOverride (line 66) | async function createOverride(item: Partial): Promise { function setProfileConfig (line 34) | async function setProfileConfig(config: IProfileConfig): Promise { function updateProfileConfig (line 42) | async function updateProfileConfig( function getProfileItem (line 59) | async function getProfileItem(id: string | undefined): Promise { function updateProfileItem (line 96) | async function updateProfileItem(item: IProfileItem): Promise { function addProfileItem (line 107) | async function addProfileItem(item: Partial): Promise { function removeProfileItem (line 145) | async function removeProfileItem(id: string): Promise { function getCurrentProfileItem (line 169) | async function getCurrentProfileItem(): Promise { type FetchOptions (line 180) | interface FetchOptions { type FetchResult (line 190) | interface FetchResult { function fetchAndValidateSubscription (line 195) | async function fetchAndValidateSubscription(options: FetchOptions): Prom... function createProfile (line 237) | async function createProfile(item: Partial): Promise { function setProfileStr (line 322) | async function setProfileStr(id: string, content: string): Promise { function getProfile (line 347) | async function getProfile(id: string | undefined): Promise { function parseFilename (line 374) | function parseFilename(str: string): string { function parseSubinfo (line 389) | function parseSubinfo(str: string): ISubscriptionUserInfo { function isAbsolutePath (line 399) | function isAbsolutePath(path: string): boolean { function getFileStr (line 403) | async function getFileStr(path: string): Promise { function setFileStr (line 416) | async function setFileStr(path: string, content: string): Promise { function convertMrsRuleset (line 430) | async function convertMrsRuleset(filePath: string, behavior: string): Pr... FILE: src/main/config/smartOverride.ts constant SMART_OVERRIDE_ID (line 5) | const SMART_OVERRIDE_ID = 'smart-core-override' function generateSmartOverrideTemplate (line 10) | function generateSmartOverrideTemplate( function createSmartOverride (line 353) | async function createSmartOverride(): Promise { function removeSmartOverride (line 388) | async function removeSmartOverride(): Promise { function manageSmartOverride (line 403) | async function manageSmartOverride(): Promise { function isSmartOverrideExists (line 416) | async function isSmartOverrideExists(): Promise { FILE: src/main/core/dns.ts function getDefaultDevice (line 13) | async function getDefaultDevice(): Promise { function getDefaultService (line 21) | async function getDefaultService(): Promise { function getOriginDNS (line 34) | async function getOriginDNS(): Promise { function setDNS (line 44) | async function setDNS(dns: string): Promise { function setPublicDNS (line 56) | async function setPublicDNS(): Promise { function recoverDNS (line 70) | async function recoverDNS(): Promise { FILE: src/main/core/factory.ts function processRulesWithOffset (line 32) | function processRulesWithOffset(ruleStrings: string[], currentRules: str... function generateProfile (line 62) | async function generateProfile(): Promise { function prepareProfileWorkDir (line 159) | async function prepareProfileWorkDir(current: string | undefined): Promi... function overrideProfile (line 192) | async function overrideProfile( function runOverrideScript (line 217) | function runOverrideScript( function getRuntimeConfigStr (line 260) | async function getRuntimeConfigStr(): Promise { function getRuntimeConfig (line 264) | async function getRuntimeConfig(): Promise { FILE: src/main/core/manager.ts function initCoreWatcher (line 83) | function initCoreWatcher(): void { function cleanupCoreWatcher (line 100) | function cleanupCoreWatcher(): void { type CoreConfig (line 125) | interface CoreConfig { function prepareCore (line 137) | async function prepareCore(detached: boolean, skipStop = false): Promise... function spawnCoreProcess (line 203) | function spawnCoreProcess(config: CoreConfig): ChildProcess { function setupCoreListeners (line 230) | function setupCoreListeners( function startCore (line 328) | async function startCore(detached = false, skipStop = false): Promise { function restartCore (line 375) | async function restartCore(): Promise { function keepCoreAlive (line 416) | async function keepCoreAlive(): Promise { function quitWithoutCore (line 428) | async function quitWithoutCore(): Promise { function checkProfile (line 448) | async function checkProfile( function checkAdminRestartForTun (line 497) | async function checkAdminRestartForTun(): Promise { FILE: src/main/core/mihomoApi.ts constant MAX_RETRY (line 25) | const MAX_RETRY = 10 function mihomoVersion (line 63) | async function mihomoVersion(): Promise { function SysProxyStatus (line 447) | async function SysProxyStatus(): Promise { function calculateTrayIconStatus (line 457) | function calculateTrayIconStatus( function getTrayIconStatus (line 472) | async function getTrayIconStatus(): Promise<'white' | 'blue' | 'green' |... FILE: src/main/core/permissions.ts constant ALLOWED_CORES (line 16) | const ALLOWED_CORES = ['mihomo', 'mihomo-alpha', 'mihomo-smart'] as const type AllowedCore (line 17) | type AllowedCore = (typeof ALLOWED_CORES)[number] function isValidCoreName (line 19) | function isValidCoreName(core: string): core is AllowedCore { function validateCorePath (line 23) | function validateCorePath(corePath: string): void { function shellEscape (line 41) | function shellEscape(arg: string): string { function initAdminStatus (line 48) | async function initAdminStatus(): Promise { function getSessionAdminStatus (line 54) | function getSessionAdminStatus(): boolean { function checkAdminPrivileges (line 61) | async function checkAdminPrivileges(): Promise { function checkMihomoCorePermissions (line 88) | async function checkMihomoCorePermissions(): Promise { function checkHighPrivilegeCore (line 108) | async function checkHighPrivilegeCore(): Promise { function checkHighPrivilegeMihomoProcess (line 144) | async function checkHighPrivilegeMihomoProcess(): Promise { function grantTunPermissions (line 230) | async function grantTunPermissions(): Promise { function restartAsAdmin (line 256) | async function restartAsAdmin(forTun: boolean = true): Promise { function requestTunPermissions (line 296) | async function requestTunPermissions(): Promise { function showTunPermissionDialog (line 307) | async function showTunPermissionDialog(): Promise { function showErrorDialog (line 330) | async function showErrorDialog(title: string, message: string): Promise<... function validateTunPermissionsOnStartup (line 342) | async function validateTunPermissionsOnStartup( function checkAdminRestartForTun (line 371) | async function checkAdminRestartForTun(restartCore: () => Promise)... function checkTunPermissions (line 406) | function checkTunPermissions(): Promise { function manualGrantCorePermition (line 410) | function manualGrantCorePermition(): Promise { FILE: src/main/core/process.ts constant CORE_READY_MAX_RETRIES (line 11) | const CORE_READY_MAX_RETRIES = 30 constant CORE_READY_RETRY_INTERVAL_MS (line 12) | const CORE_READY_RETRY_INTERVAL_MS = 100 function cleanupSocketFile (line 14) | async function cleanupSocketFile(): Promise { function cleanupWindowsNamedPipes (line 22) | async function cleanupWindowsNamedPipes(): Promise { function terminateProcess (line 58) | async function terminateProcess(pid: number): Promise { function fallbackTextParsing (line 70) | async function fallbackTextParsing(stdout: string): Promise { function cleanupUnixSockets (line 83) | async function cleanupUnixSockets(): Promise { function validateWindowsPipeAccess (line 106) | async function validateWindowsPipeAccess(pipePath: string): Promise { function waitForCoreReady (line 115) | async function waitForCoreReady(): Promise { FILE: src/main/core/profileUpdater.ts function updateProfile (line 8) | async function updateProfile(id: string): Promise { function initProfileUpdater (line 15) | async function initProfileUpdater(): Promise { function addProfileUpdater (line 94) | async function addProfileUpdater(item: IProfileItem): Promise { function removeProfileUpdater (line 128) | async function removeProfileUpdater(id: string): Promise { FILE: src/main/core/subStoreApi.ts function subStoreSubs (line 5) | async function subStoreSubs(): Promise { function subStoreCollections (line 14) | async function subStoreCollections(): Promise { FILE: src/main/deeplink.ts function handleDeepLink (line 7) | async function handleDeepLink(url: string): Promise { FILE: src/main/index.ts function initApp (line 48) | async function initApp(): Promise { function checkHighPrivilegeCoreEarly (line 59) | async function checkHighPrivilegeCoreEarly(): Promise { function initHardwareAcceleration (line 103) | async function initHardwareAcceleration(): Promise { FILE: src/main/lifecycle.ts function customRelaunch (line 10) | function customRelaunch(): void { function fixUserDataPermissions (line 23) | async function fixUserDataPermissions(): Promise { function setupPlatformSpecifics (line 46) | function setupPlatformSpecifics(): void { function setupAppLifecycle (line 56) | function setupAppLifecycle(): void { function getSystemLanguage (line 73) | function getSystemLanguage(): 'zh-CN' | 'en-US' { FILE: src/main/resolve/autoUpdater.ts function checkUpdate (line 18) | async function checkUpdate(): Promise { function compareVersions (line 42) | function compareVersions(a: string, b: string): number { function downloadAndInstallUpdate (line 59) | async function downloadAndInstallUpdate(version: string): Promise { FILE: src/main/resolve/backup.ts type WebDAVContext (line 25) | interface WebDAVContext { function getWebDAVClient (line 31) | async function getWebDAVClient(): Promise { function createBackupZip (line 58) | function createBackupZip(): AdmZip { function webdavBackup (line 91) | async function webdavBackup(): Promise { function webdavRestore (line 140) | async function webdavRestore(filename: string): Promise { function listWebdavBackups (line 147) | async function listWebdavBackups(): Promise { function webdavDelete (line 157) | async function webdavDelete(filename: string): Promise { function initWebdavBackupScheduler (line 165) | async function initWebdavBackupScheduler(): Promise { function stopWebdavBackupScheduler (line 199) | async function stopWebdavBackupScheduler(): Promise { function reinitScheduler (line 211) | async function reinitScheduler(): Promise { function exportLocalBackup (line 221) | async function exportLocalBackup(): Promise { function importLocalBackup (line 246) | async function importLocalBackup(): Promise { FILE: src/main/resolve/floatingWindow.ts function logError (line 12) | function logError(message: string, error?: unknown): void { function createFloatingWindow (line 16) | async function createFloatingWindow(): Promise { function showFloatingWindow (line 101) | async function showFloatingWindow(): Promise { function triggerFloatingWindow (line 122) | async function triggerFloatingWindow(): Promise { function closeFloatingWindow (line 132) | async function closeFloatingWindow(): Promise { function showContextMenu (line 142) | async function showContextMenu(): Promise { FILE: src/main/resolve/gistApi.ts type GistInfo (line 5) | interface GistInfo { function listGists (line 11) | async function listGists(token: string): Promise { function createGist (line 29) | async function createGist(token: string, content: string): Promise { function updateGist (line 53) | async function updateGist(token: string, id: string, content: string): P... function getGistUrl (line 76) | async function getGistUrl(): Promise { function uploadRuntimeConfig (line 92) | async function uploadRuntimeConfig(): Promise { FILE: src/main/resolve/server.ts function findAvailablePort (line 28) | function findAvailablePort(startPort: number): Promise { function startPacServer (line 49) | async function startPacServer(): Promise { function stopPacServer (line 69) | async function stopPacServer(): Promise { function startSubStoreFrontendServer (line 75) | async function startSubStoreFrontendServer(): Promise { function stopSubStoreFrontendServer (line 85) | async function stopSubStoreFrontendServer(): Promise { function startSubStoreBackendServer (line 91) | async function startSubStoreBackendServer(): Promise { function stopSubStoreBackendServer (line 137) | async function stopSubStoreBackendServer(): Promise { function downloadSubStore (line 143) | async function downloadSubStore(): Promise { FILE: src/main/resolve/shortcut.ts function registerShortcut (line 16) | async function registerShortcut( function initShortcut (line 140) | async function initShortcut(): Promise { FILE: src/main/resolve/theme.ts function resolveThemes (line 15) | async function resolveThemes(): Promise<{ key: string; label: string }[]> { function fetchThemes (line 36) | async function fetchThemes(): Promise { function importThemes (line 52) | async function importThemes(files: string[]): Promise { function readTheme (line 62) | async function readTheme(theme: string): Promise { function writeTheme (line 67) | async function writeTheme(theme: string, css: string): Promise { function applyTheme (line 71) | async function applyTheme(theme: string): Promise { FILE: src/main/resolve/trafficMonitor.ts function startMonitor (line 10) | async function startMonitor(detached = false): Promise { function stopMonitor (line 38) | async function stopMonitor(): Promise { FILE: src/main/resolve/tray.ts function createTray (line 375) | async function createTray(): Promise { function updateTrayMenu (line 455) | async function updateTrayMenu(): Promise { function copyEnv (line 463) | async function copyEnv( function showTrayIcon (line 505) | async function showTrayIcon(): Promise { function closeTrayIcon (line 511) | async function closeTrayIcon(): Promise { function showDockIcon (line 518) | async function showDockIcon(): Promise { function hideDockIcon (line 524) | async function hideDockIcon(): Promise { function updateTrayIconImmediate (line 548) | function updateTrayIconImmediate(sysProxyEnabled: boolean, tunEnabled: b... function updateTrayIcon (line 575) | async function updateTrayIcon(): Promise { FILE: src/main/sys/autoRun.ts function getTaskXml (line 12) | function getTaskXml(asAdmin: boolean): string { function checkAutoRun (line 56) | async function checkAutoRun(): Promise { function enableAutoRun (line 95) | async function enableAutoRun(): Promise { function disableAutoRun (line 175) | async function disableAutoRun(): Promise { FILE: src/main/sys/interface.ts function getInterfaces (line 3) | function getInterfaces(): NodeJS.Dict { FILE: src/main/sys/misc.ts function getFilePath (line 16) | function getFilePath(ext: string[]): string[] | undefined { function readTextFile (line 24) | async function readTextFile(filePath: string): Promise { function openFile (line 28) | function openFile(type: 'profile' | 'override', id: string, ext?: 'yaml'... function openUWPTool (line 37) | async function openUWPTool(): Promise { function setupFirewall (line 55) | async function setupFirewall(): Promise { function setNativeTheme (line 77) | function setNativeTheme(theme: 'system' | 'light' | 'dark'): void { function resetAppConfig (line 81) | function resetAppConfig(): void { FILE: src/main/sys/ssid.ts function getCurrentSSID (line 9) | async function getCurrentSSID(): Promise { function checkSSID (line 37) | async function checkSSID(): Promise { function startSSIDCheck (line 60) | async function startSSIDCheck(): Promise { function stopSSIDCheck (line 68) | function stopSSIDCheck(): void { function getSSIDByAirport (line 75) | async function getSSIDByAirport(): Promise { function getSSIDByNetworksetup (line 91) | async function getSSIDByNetworksetup(): Promise { function getSSIDByNetsh (line 105) | async function getSSIDByNetsh(): Promise { function getSSIDByIwconfig (line 116) | async function getSSIDByIwconfig(): Promise { FILE: src/main/sys/sysproxy.ts function triggerSysProxy (line 58) | async function triggerSysProxy(enable: boolean): Promise { function enableSysProxy (line 72) | async function enableSysProxy(): Promise { function disableSysProxy (line 113) | async function disableSysProxy(): Promise { function isSocketFileExists (line 130) | function isSocketFileExists(): boolean { function isHelperRunning (line 138) | async function isHelperRunning(): Promise { function startHelperService (line 148) | async function startHelperService(): Promise { function requestSocketRecreation (line 156) | async function requestSocketRecreation(): Promise { function helperRequest (line 169) | async function helperRequest(requestFn: () => Promise, maxRetri... FILE: src/main/utils/appName.ts function getAppName (line 7) | async function getAppName(appPath: string): Promise { function getLocalizedAppName (line 43) | function getLocalizedAppName(appPath: string): string { FILE: src/main/utils/calc.ts function calcTraffic (line 1) | function calcTraffic(byte: number): string { function formatNumString (line 21) | function formatNumString(num: number): string { FILE: src/main/utils/chromeRequest.ts type RequestOptions (line 3) | interface RequestOptions { type Response (line 21) | interface Response { function getProxySession (line 34) | async function getProxySession(proxyUrl: string): Promise( FILE: src/main/utils/dirs.ts function isPortable (line 8) | function isPortable(): boolean { function dataDir (line 12) | function dataDir(): string { function taskDir (line 20) | function taskDir(): string { function subStoreDir (line 34) | function subStoreDir(): string { function exeDir (line 38) | function exeDir(): string { function exePath (line 42) | function exePath(): string { function resourcesDir (line 46) | function resourcesDir(): string { function resourcesFilesDir (line 58) | function resourcesFilesDir(): string { function themesDir (line 62) | function themesDir(): string { function mihomoCoreDir (line 66) | function mihomoCoreDir(): string { function mihomoCorePath (line 70) | function mihomoCorePath(core: string): string { function appConfigPath (line 79) | function appConfigPath(): string { function controledMihomoConfigPath (line 83) | function controledMihomoConfigPath(): string { function profileConfigPath (line 87) | function profileConfigPath(): string { function profilesDir (line 91) | function profilesDir(): string { function profilePath (line 95) | function profilePath(id: string): string { function overrideDir (line 99) | function overrideDir(): string { function overrideConfigPath (line 103) | function overrideConfigPath(): string { function overridePath (line 107) | function overridePath(id: string, ext: 'js' | 'yaml' | 'log'): string { function mihomoWorkDir (line 111) | function mihomoWorkDir(): string { function mihomoProfileWorkDir (line 115) | function mihomoProfileWorkDir(id: string | undefined): string { function mihomoTestDir (line 119) | function mihomoTestDir(): string { function mihomoWorkConfigPath (line 123) | function mihomoWorkConfigPath(id: string | undefined): string { function logDir (line 131) | function logDir(): string { function logPath (line 135) | function logPath(): string { function substoreLogPath (line 144) | function substoreLogPath(): string { function coreLogPath (line 153) | function coreLogPath(): string { function rulesDir (line 162) | function rulesDir(): string { function rulePath (line 166) | function rulePath(id: string): string { FILE: src/main/utils/github.ts type GitHubTag (line 15) | interface GitHubTag { type VersionCache (line 21) | interface VersionCache { constant CACHE_EXPIRY (line 26) | const CACHE_EXPIRY = 5 * 60 * 1000 constant GITHUB_API_CONFIG (line 28) | const GITHUB_API_CONFIG = { constant PLATFORM_MAP (line 34) | const PLATFORM_MAP: Record = { function getGitHubTags (line 53) | async function getGitHubTags( function clearVersionCache (line 105) | function clearVersionCache(owner: string, repo: string): void { function downloadGitHubAsset (line 117) | async function downloadGitHubAsset(url: string, outputPath: string): Pro... function installMihomoCore (line 140) | async function installMihomoCore(version: string): Promise { FILE: src/main/utils/icon.ts function isIOSApp (line 12) | function isIOSApp(appPath: string): boolean { function hasIOSAppIcon (line 22) | function hasIOSAppIcon(appPath: string): boolean { function hasMacOSAppIcon (line 35) | function hasMacOSAppIcon(appPath: string): boolean { function findBestAppPath (line 49) | function findBestAppPath(appPath: string): string | null { function findDesktopFile (line 84) | async function findDesktopFile(appPath: string): Promise { function parseIconNameFromDesktopFile (line 134) | function parseIconNameFromDesktopFile(content: string): string | null { function resolveIconPath (line 139) | function resolveIconPath(iconName: string): string | null { function getIconDataURL (line 173) | async function getIconDataURL(appPath: string): Promise { function getImageDataURL (line 272) | async function getImageDataURL(url: string): Promise { FILE: src/main/utils/image.ts function getImageDataURL (line 4) | async function getImageDataURL(url: string): Promise { FILE: src/main/utils/init.ts function safeShowErrorBox (line 50) | function safeShowErrorBox(titleKey: string, message: string): void { function fixDataDirPermissions (line 63) | async function fixDataDirPermissions(): Promise { function isSourceNewer (line 86) | async function isSourceNewer(sourcePath: string, targetPath: string): Pr... function initDirs (line 95) | async function initDirs(): Promise { function initConfig (line 119) | async function initConfig(): Promise { function killOldMihomoProcesses (line 141) | async function killOldMihomoProcesses(): Promise { function initFiles (line 174) | async function initFiles(): Promise { function cleanup (line 232) | async function cleanup(): Promise { function migrateSubStoreFiles (line 258) | async function migrateSubStoreFiles(): Promise { function migrateSiderOrder (line 272) | async function migrateSiderOrder(): Promise { function migrateAppTheme (line 280) | async function migrateAppTheme(): Promise { function migrateEnvType (line 288) | async function migrateEnvType(): Promise { function migrateTraySettings (line 296) | async function migrateTraySettings(): Promise { function migrateRemovePassword (line 304) | async function migrateRemovePassword(): Promise { function migrateMihomoConfig (line 312) | async function migrateMihomoConfig(): Promise { function migration (line 355) | async function migration(): Promise { function initDeeplink (line 366) | function initDeeplink(): void { function initBasic (line 378) | async function initBasic(): Promise { function init (line 391) | async function init(): Promise { FILE: src/main/utils/ipc.ts type AsyncFn (line 132) | type AsyncFn = (...args: any[]) => Promise type SyncFn (line 134) | type SyncFn = (...args: any[]) => any function wrapAsync (line 136) | function wrapAsync( function registerHandlers (line 151) | function registerHandlers(handlers: Record, as... function fetchMihomoTags (line 161) | async function fetchMihomoTags( function installSpecificMihomoCore (line 167) | async function installSpecificMihomoCore(version: string): Promise { function clearMihomoVersionCache (line 172) | async function clearMihomoVersionCache(): Promise { function getRuleStr (line 176) | async function getRuleStr(id: string): Promise { function setRuleStr (line 180) | async function setRuleStr(id: string, str: string): Promise { function getSmartOverrideContent (line 184) | async function getSmartOverrideContent(): Promise { function changeLanguage (line 193) | async function changeLanguage(lng: string): Promise { function setTitleBarOverlay (line 198) | async function setTitleBarOverlay(overlay: Electron.TitleBarOverlayOptio... function registerIpcMainHandlers (line 360) | function registerIpcMainHandlers(): void { FILE: src/main/utils/logger.ts type LogLevel (line 4) | type LogLevel = 'debug' | 'info' | 'warn' | 'error' class Logger (line 6) | class Logger { method constructor (line 9) | constructor(moduleName: string) { method formatTimestamp (line 13) | private formatTimestamp(): string { method formatLogMessage (line 17) | private formatLogMessage(level: LogLevel, message: string, error?: unk... method writeToFile (line 23) | private async writeToFile(level: LogLevel, message: string, error?: un... method logToConsole (line 38) | private logToConsole(level: LogLevel, message: string, error?: unknown... method debug (line 57) | async debug(message: string, error?: unknown): Promise { method info (line 62) | async info(message: string, error?: unknown): Promise { method warn (line 67) | async warn(message: string, error?: unknown): Promise { method error (line 72) | async error(message: string, error?: unknown): Promise { method log (line 78) | async log(message: string, error?: unknown): Promise { FILE: src/main/utils/merge.ts function isObject (line 2) | function isObject(item: any): boolean { function trimWrap (line 6) | function trimWrap(str: string): string { function deepMerge (line 13) | function deepMerge(target: T, other: Partial): T { FILE: src/main/utils/yaml.ts function stringify (line 11) | function stringify(content: unknown): string { FILE: src/main/window.ts function createWindow (line 14) | async function createWindow(): Promise { type WindowConfig (line 72) | interface WindowConfig { function setupWindowEvents (line 78) | function setupWindowEvents( function scheduleQuitWithoutCore (line 148) | function scheduleQuitWithoutCore(delaySeconds: number): void { function clearQuitTimeout (line 155) | function clearQuitTimeout(): void { function triggerMainWindow (line 162) | function triggerMainWindow(force?: boolean): void { function showMainWindow (line 180) | function showMainWindow(): void { function closeMainWindow (line 188) | function closeMainWindow(): void { FILE: src/native/sysproxy/index.d.ts type SysproxyInfo (line 1) | interface SysproxyInfo { type AutoproxyInfo (line 8) | interface AutoproxyInfo { FILE: src/native/sysproxy/index.js function isWindows7 (line 10) | function isWindows7() { function isMusl (line 17) | function isMusl() { function getBindingName (line 33) | function getBindingName() { function getResourcesPath (line 60) | function getResourcesPath() { function loadBinding (line 89) | function loadBinding() { FILE: src/preload/index.d.ts type IpcListener (line 3) | type IpcListener = (event: Electron.IpcRendererEvent, ...args: unknown[]... type SafeIpcRenderer (line 5) | interface SafeIpcRenderer { type ElectronAPI (line 13) | interface ElectronAPI { type Window (line 21) | interface Window { FILE: src/preload/index.ts type InvokeChannel (line 172) | type InvokeChannel = (typeof validInvokeChannels)[number] type ListenChannel (line 173) | type ListenChannel = (typeof validListenChannels)[number] type SendChannel (line 174) | type SendChannel = (typeof validSendChannels)[number] type IpcListener (line 176) | type IpcListener = (event: Electron.IpcRendererEvent, ...args: unknown[]... FILE: src/renderer/src/components/base/base-confirm-modal.tsx type Props (line 5) | interface Props { FILE: src/renderer/src/components/base/base-editor.tsx type Language (line 9) | type Language = 'yaml' | 'javascript' | 'css' | 'json' | 'text' type Props (line 11) | interface Props { FILE: src/renderer/src/components/base/base-error-boundary.tsx type Props (line 52) | interface Props { FILE: src/renderer/src/components/base/base-page.tsx type Props (line 9) | interface Props { FILE: src/renderer/src/components/base/base-setting-card.tsx type Props (line 5) | interface Props { FILE: src/renderer/src/components/base/base-setting-item.tsx type Props (line 4) | interface Props { FILE: src/renderer/src/components/base/border-swtich.tsx type BorderSwitchProps (line 5) | interface BorderSwitchProps extends Omit { FILE: src/renderer/src/components/base/collapse-input.tsx type CollapseInputProps (line 5) | interface CollapseInputProps extends Omit { FILE: src/renderer/src/components/base/mihomo-icon.tsx function MihomoIcon (line 4) | function MihomoIcon(props: IconBaseProps): React.JSX.Element { FILE: src/renderer/src/components/base/substore-icon.tsx function SubStoreIcon (line 4) | function SubStoreIcon(props: IconBaseProps): React.ReactElement { FILE: src/renderer/src/components/base/toast.tsx type ToastType (line 6) | type ToastType = 'success' | 'error' | 'warning' | 'info' type ToastData (line 8) | interface ToastData { type ToastListener (line 18) | type ToastListener = (toasts: ToastData[]) => void FILE: src/renderer/src/components/connections/connection-detail-modal.tsx type Props (line 20) | interface Props { FILE: src/renderer/src/components/connections/connection-item.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/connections/connection-table.tsx type Props (line 8) | interface Props { type ColumnConfig (line 21) | interface ColumnConfig { constant DEFAULT_COLUMNS (line 32) | const DEFAULT_COLUMNS: Omit[] = [ FILE: src/renderer/src/components/mihomo/interface-modal.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/override/edit-file-modal.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/override/edit-info-modal.tsx type Props (line 16) | interface Props { FILE: src/renderer/src/components/override/exec-log-modal.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/override/override-item.tsx type Props (line 23) | interface Props { type MenuItem (line 31) | interface MenuItem { FILE: src/renderer/src/components/profiles/edit-file-modal.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/profiles/edit-info-modal.tsx type Props (line 26) | interface Props { FILE: src/renderer/src/components/profiles/edit-rules-modal.tsx type Props (line 63) | interface Props { type RuleItem (line 68) | interface RuleItem { type RuleListItemProps (line 424) | interface RuleListItemProps { FILE: src/renderer/src/components/profiles/profile-item.tsx type Props (line 27) | interface Props { type MenuItem (line 37) | interface MenuItem { FILE: src/renderer/src/components/proxies/proxy-item.tsx type Props (line 7) | interface Props { function delayColor (line 18) | function delayColor(delay: number): 'primary' | 'success' | 'warning' | ... FILE: src/renderer/src/components/resources/viewer.tsx type Language (line 7) | type Language = 'yaml' | 'javascript' | 'css' | 'json' | 'text' type Props (line 9) | interface Props { FILE: src/renderer/src/components/rules/rule-item.tsx type RuleItemProps (line 6) | interface RuleItemProps extends IMihomoRulesDetail { FILE: src/renderer/src/components/settings/css-editor-modal.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/settings/webdav-restore-modal.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/sider/config-viewer.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/sider/conn-card.tsx type Props (line 27) | interface Props { FILE: src/renderer/src/components/sider/dns-card.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/sider/log-card.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/sider/mihomo-core-card.tsx type Props (line 16) | interface Props { FILE: src/renderer/src/components/sider/override-card.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/sider/profile-card.tsx type Props (line 21) | interface Props { FILE: src/renderer/src/components/sider/proxy-card.tsx type Props (line 11) | interface Props { FILE: src/renderer/src/components/sider/resource-card.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/sider/rule-card.tsx type Props (line 11) | interface Props { FILE: src/renderer/src/components/sider/sniff-card.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/sider/substore-card.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/sider/sysproxy-switcher.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/sider/tun-switcher.tsx type Props (line 13) | interface Props { FILE: src/renderer/src/components/sysproxy/pac-editor-modal.tsx type Props (line 6) | interface Props { FILE: src/renderer/src/components/updater/updater-button.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/updater/updater-modal.tsx type Props (line 16) | interface Props { FILE: src/renderer/src/hooks/create-config-context.tsx type ConfigContextValue (line 6) | interface ConfigContextValue { type CreateConfigContextOptions (line 11) | interface CreateConfigContextOptions { function createConfigContext (line 17) | function createConfigContext(options: CreateConfigContextOptions) { type ActionOptions (line 48) | interface ActionOptions { function useConfigAction (line 53) | function useConfigAction( FILE: src/renderer/src/hooks/use-app-config.tsx type AppConfigContextType (line 13) | interface AppConfigContextType { FILE: src/renderer/src/hooks/use-controled-mihomo-config.tsx type ControledMihomoConfigContextType (line 7) | interface ControledMihomoConfigContextType { FILE: src/renderer/src/hooks/use-groups.tsx type GroupsContextType (line 5) | interface GroupsContextType { FILE: src/renderer/src/hooks/use-override-config.tsx type OverrideConfigContextType (line 19) | interface OverrideConfigContextType { FILE: src/renderer/src/hooks/use-profile-config.tsx type ProfileConfigContextType (line 20) | interface ProfileConfigContextType { FILE: src/renderer/src/hooks/use-rules.tsx type RulesContextType (line 5) | interface RulesContextType { FILE: src/renderer/src/pages/connections.tsx constant MAX_QUEUE_SIZE (line 45) | const MAX_QUEUE_SIZE = 100 FILE: src/renderer/src/pages/logs.tsx constant LOGS_FILTER_KEY (line 11) | const LOGS_FILTER_KEY = 'logs-filter' method clean (line 20) | clean(): void { FILE: src/renderer/src/pages/mihomo.tsx type WebUIPanel (line 58) | interface WebUIPanel { FILE: src/renderer/src/pages/proxies.tsx constant GROUP_EXPAND_STATE_KEY (line 25) | const GROUP_EXPAND_STATE_KEY = 'proxy_group_expand_state' FILE: src/renderer/src/utils/calc.ts function calcTraffic (line 1) | function calcTraffic(byte: number): string { function formatNumString (line 21) | function formatNumString(num: number): string { function calcPercent (line 33) | function calcPercent( FILE: src/renderer/src/utils/debounce.ts function debounce (line 2) | function debounce void>(func: T, wait: num... FILE: src/renderer/src/utils/error-display.ts constant DETAILED_ERROR_KEYWORDS (line 4) | const DETAILED_ERROR_KEYWORDS = [ function shouldShowDetailedError (line 29) | function shouldShowDetailedError(message: string): boolean { function showError (line 35) | async function showError(error: unknown, title?: string): Promise { function showErrorSync (line 46) | function showErrorSync(error: unknown, title?: string): void { FILE: src/renderer/src/utils/hash.ts class HashType (line 3) | class HashType { method constructor (line 6) | constructor(hash: string) { method makeHash (line 10) | static makeHash(data: string): HashType { method equal (line 15) | equal(hash: HashType): boolean { method toString (line 19) | toString(): string { method isValid (line 23) | isValid(): boolean { function getHash (line 28) | function getHash(name: string): string { FILE: src/renderer/src/utils/icon-cache.ts constant ICON_CACHE_MAX_SIZE (line 1) | const ICON_CACHE_MAX_SIZE = 500 constant ICON_CACHE_KEY_PREFIX (line 2) | const ICON_CACHE_KEY_PREFIX = 'icon_' constant ICON_CACHE_INDEX_KEY (line 3) | const ICON_CACHE_INDEX_KEY = 'icon_cache_index' function saveIconToCache (line 5) | function saveIconToCache(path: string, dataURL: string): void { function getIconFromCache (line 43) | function getIconFromCache(path: string): string | null { function clearHalfIconCache (line 64) | function clearHalfIconCache(): void { FILE: src/renderer/src/utils/image.ts function cropAndPadTransparent (line 1) | async function cropAndPadTransparent( FILE: src/renderer/src/utils/includes.ts function includesIgnoreCase (line 1) | function includesIgnoreCase(mainStr: string = '', subStr: string = ''): ... FILE: src/renderer/src/utils/init.ts function init (line 20) | async function init(): Promise { FILE: src/renderer/src/utils/ipc.ts function checkIpcError (line 3) | function checkIpcError(response: unknown): T { function invoke (line 10) | async function invoke(channel: string, ...args: unknown[]): Promise { type IpcApi (line 16) | interface IpcApi { function applyTheme (line 323) | async function applyTheme(theme: string): Promise { function setTitleBarOverlay (line 342) | async function setTitleBarOverlay(overlay: TitleBarOverlayOptions): Prom... function updateTrayIconImmediate (line 351) | function updateTrayIconImmediate(sysProxyEnabled: boolean, tunEnabled: b... function getAppName (line 356) | async function getAppName(appPath: string): Promise { function getIconDataURL (line 361) | async function getIconDataURL(appPath: string): Promise { FILE: src/renderer/src/utils/tour.ts function getDriver (line 7) | function getDriver(): ReturnType | null { function createTourDriver (line 11) | function createTourDriver(t: TFunction, navigate: NavigateFunction): void { function startTourIfNeeded (line 189) | function startTourIfNeeded(): void { FILE: src/renderer/src/utils/validate.ts type ValidationResult (line 263) | interface ValidationResult { FILE: src/shared/types.d.ts type OutboundMode (line 1) | type OutboundMode = 'rule' | 'global' | 'direct' type LogLevel (line 2) | type LogLevel = 'info' | 'debug' | 'warning' | 'error' | 'silent' type SysProxyMode (line 3) | type SysProxyMode = 'auto' | 'manual' type CardStatus (line 4) | type CardStatus = 'col-span-2' | 'col-span-1' | 'hidden' type AppTheme (line 5) | type AppTheme = 'system' | 'light' | 'dark' type MihomoGroupType (line 6) | type MihomoGroupType = 'Selector' | 'URLTest' | 'LoadBalance' | 'Relay' type Priority (line 7) | type Priority = type MihomoProxyType (line 14) | type MihomoProxyType = type TunStack (line 34) | type TunStack = 'gvisor' | 'mixed' | 'system' type FindProcessMode (line 35) | type FindProcessMode = 'off' | 'strict' | 'always' type DnsMode (line 36) | type DnsMode = 'normal' | 'fake-ip' | 'redir-host' type FilterMode (line 37) | type FilterMode = 'blacklist' | 'whitelist' type NetworkInterfaceInfo (line 38) | type NetworkInterfaceInfo = os.NetworkInterfaceInfo type IAppVersion (line 40) | interface IAppVersion { type IMihomoVersion (line 45) | interface IMihomoVersion { type IMihomoTrafficInfo (line 50) | interface IMihomoTrafficInfo { type IMihomoMemoryInfo (line 55) | interface IMihomoMemoryInfo { type IMihomoLogInfo (line 60) | interface IMihomoLogInfo { type IMihomoRulesInfo (line 66) | interface IMihomoRulesInfo { type IMihomoRulesDetail (line 70) | interface IMihomoRulesDetail { type IMihomoConnectionsInfo (line 85) | interface IMihomoConnectionsInfo { type IMihomoConnectionDetail (line 92) | interface IMihomoConnectionDetail { type IMihomoHistory (line 131) | interface IMihomoHistory { type IMihomoGroupDelay (line 136) | type IMihomoGroupDelay = Record type IMihomoDelay (line 138) | interface IMihomoDelay { type IMihomoProxy (line 143) | interface IMihomoProxy { type IMihomoGroup (line 157) | interface IMihomoGroup { type IMihomoProxies (line 174) | interface IMihomoProxies { type IMihomoMixedGroup (line 178) | interface IMihomoMixedGroup extends IMihomoGroup { type IMihomoRuleProviders (line 182) | interface IMihomoRuleProviders { type IMihomoRuleProvider (line 186) | interface IMihomoRuleProvider { type IMihomoProxyProviders (line 196) | interface IMihomoProxyProviders { type ISubscriptionUserInfoUpper (line 200) | interface ISubscriptionUserInfoUpper { type IMihomoProxyProvider (line 207) | interface IMihomoProxyProvider { type ISysProxyConfig (line 218) | interface ISysProxyConfig { type IAppConfig (line 226) | interface IAppConfig { type IMihomoTunConfig (line 342) | interface IMihomoTunConfig { type IMihomoDNSConfig (line 372) | interface IMihomoDNSConfig { type IMihomoSnifferConfig (line 396) | interface IMihomoSnifferConfig { type IMihomoProfileConfig (line 419) | interface IMihomoProfileConfig { type IMihomoConfig (line 424) | interface IMihomoConfig { type IProfileConfig (line 465) | interface IProfileConfig { type IOverrideItem (line 470) | interface IOverrideItem { type IOverrideConfig (line 481) | interface IOverrideConfig { type ISubscriptionUserInfo (line 485) | interface ISubscriptionUserInfo { type IProfileItem (line 492) | interface IProfileItem { type ISubStoreSub (line 511) | interface ISubStoreSub {