SYMBOL INDEX (878 symbols across 133 files) FILE: scripts/prepare.ts constant TEMP_DIR (line 9) | const TEMP_DIR = path.join(cwd, 'node_modules/.temp') function getErrorMessage (line 21) | function getErrorMessage(error: unknown) { constant MIHOMO_ALPHA_VERSION_URL (line 26) | const MIHOMO_ALPHA_VERSION_URL = constant MIHOMO_ALPHA_URL_PREFIX (line 28) | const MIHOMO_ALPHA_URL_PREFIX = `https://github.com/MetaCubeX/mihomo/rel... constant MIHOMO_ALPHA_VERSION (line 29) | let MIHOMO_ALPHA_VERSION: string constant MIHOMO_ALPHA_MAP (line 31) | const MIHOMO_ALPHA_MAP = { function getLatestAlphaVersion (line 43) | async function getLatestAlphaVersion() { constant MIHOMO_VERSION_URL (line 58) | const MIHOMO_VERSION_URL = constant MIHOMO_URL_PREFIX (line 60) | const MIHOMO_URL_PREFIX = `https://github.com/MetaCubeX/mihomo/releases/... constant MIHOMO_VERSION (line 61) | let MIHOMO_VERSION: string constant MIHOMO_MAP (line 63) | const MIHOMO_MAP = { function getLatestReleaseVersion (line 75) | async function getLatestReleaseVersion() { function MihomoAlpha (line 103) | function MihomoAlpha() { function mihomo (line 120) | function mihomo() { function resolveSidecar (line 139) | async function resolveSidecar(binInfo) { function resolveResource (line 219) | async function resolveResource(binInfo) { function downloadFile (line 243) | async function downloadFile(url, path) { type Task (line 404) | type Task = { function runTask (line 475) | async function runTask() { FILE: src/main/config/app.ts constant ENCRYPTED_FIELDS (line 12) | const ENCRYPTED_FIELDS = ['systemCorePath', 'serviceAuthKey'] as const constant PLAINTEXT_FALLBACK_FIELDS (line 13) | const PLAINTEXT_FALLBACK_FIELDS = ['systemCorePath'] as const function isValidConfig (line 15) | function isValidConfig(config: unknown): config is AppConfig { function safeWriteConfig (line 21) | async function safeWriteConfig(content: string): Promise { function decryptConfig (line 49) | function decryptConfig(config: AppConfig): AppConfig { function encryptConfig (line 67) | function encryptConfig(config: AppConfig): AppConfig { function getAppConfig (line 80) | async function getAppConfig(force = false): Promise { function patchAppConfig (line 99) | async function patchAppConfig(patch: Partial): Promise { function getAppConfigSync (line 109) | function getAppConfigSync(): AppConfig { FILE: src/main/config/controledMihomo.ts function getControledMihomoConfig (line 11) | async function getControledMihomoConfig(force = false): Promise):... FILE: src/main/config/override.ts function getOverrideConfig (line 14) | async function getOverrideConfig(force = false): Promise { function setOverrideConfig (line 23) | async function setOverrideConfig(config: OverrideConfig): Promise { function getOverrideItem (line 28) | async function getOverrideItem(id: string | undefined): Promise { function addOverrideItem (line 43) | async function addOverrideItem(item: Partial): Promise { function createOverride (line 62) | async function createOverride(item: Partial): Promise { function recoverDNS (line 82) | async function recoverDNS(): Promise { function startNetworkDetection (line 96) | async function startNetworkDetection(controller: NetworkCoreController):... function stopNetworkDetection (line 129) | async function stopNetworkDetection(): Promise { function isAnyNetworkInterfaceUp (line 136) | function isAnyNetworkInterfaceUp(excludedKeywords: string[] = []): boole... FILE: src/main/core/permission-check.ts function hasSetuidPermission (line 3) | function hasSetuidPermission(permissions: string): boolean { function checkCorePermissionPathSync (line 7) | function checkCorePermissionPathSync(corePath: string): boolean { FILE: src/main/core/permission.ts type CoreName (line 7) | type CoreName = 'mihomo' | 'mihomo-alpha' class UserCancelledError (line 9) | class UserCancelledError extends Error { method constructor (line 10) | constructor(message = '用户取消操作') { function isUserCancelledError (line 16) | function isUserCancelledError(error: unknown): boolean { function manualGrantCorePermition (line 30) | async function manualGrantCorePermition(cores?: CoreName[]): Promise { FILE: src/main/core/process-control.ts function stopChildProcess (line 4) | async function stopChildProcess(process: ChildProcess): Promise { FILE: src/main/core/profile-check.ts function checkProfile (line 7) | async function checkProfile(): Promise { FILE: src/main/core/profileUpdater.ts function calculateUpdateDelay (line 5) | function calculateUpdateDelay(item: ProfileItem): number { function initProfileUpdater (line 22) | async function initProfileUpdater(): Promise { function addProfileUpdater (line 78) | async function addProfileUpdater(item: ProfileItem): Promise { function delProfileUpdater (line 111) | async function delProfileUpdater(id: string): Promise { FILE: src/main/core/startup-chain.ts type RuntimeConfigProviders (line 5) | interface RuntimeConfigProviders { type CoreEnvironmentOptions (line 10) | interface CoreEnvironmentOptions { type CoreSpawnArgsOptions (line 18) | interface CoreSpawnArgsOptions { type ProviderInitializationTracker (line 25) | interface ProviderInitializationTracker { function createCoreEnvironment (line 31) | function createCoreEnvironment( function createCoreSpawnArgs (line 44) | function createCoreSpawnArgs(options: CoreSpawnArgsOptions): string[] { function createProviderInitializationTracker (line 64) | function createProviderInitializationTracker( function isControllerListenError (line 93) | function isControllerListenError(logLine: string): boolean { function isControllerReadyLog (line 100) | function isControllerReadyLog(logLine: string): boolean { function isTunPermissionError (line 107) | function isTunPermissionError(logLine: string): boolean { function isUpdaterFinishedLog (line 113) | function isUpdaterFinishedLog(logLine: string): boolean { function normalizeProviderName (line 117) | function normalizeProviderName(value: string): string { FILE: src/main/core/startupHook.ts type CoreStartupHook (line 11) | interface CoreStartupHook { type CoreHookWaiter (line 19) | interface CoreHookWaiter { function shellQuote (line 24) | function shellQuote(value: string): string { function hookTouchCommand (line 28) | function hookTouchCommand(file: string): string { function coreHookDir (line 32) | function coreHookDir(): string { function createCoreStartupHook (line 39) | async function createCoreStartupHook(): Promise { function createCoreHookWaiter (line 60) | function createCoreHookWaiter(hook: CoreStartupHook): CoreHookWaiter { FILE: src/main/core/subStoreApi.ts function subStoreSubs (line 5) | async function subStoreSubs(): Promise { function subStoreCollections (line 12) | async function subStoreCollections(): Promise { FILE: src/main/index.ts function scheduleLightweightMode (line 42) | async function scheduleLightweightMode(): Promise { function exitApp (line 73) | function exitApp(): void { function customRelaunch (line 125) | function customRelaunch(): void { function setNotQuitDialog (line 175) | function setNotQuitDialog(): void { function showWindow (line 179) | function showWindow(): number { function showQuitConfirmDialog (line 198) | function showQuitConfirmDialog(): Promise { function handleDeepLink (line 354) | async function handleDeepLink(url: string): Promise { function showProfileInstallConfirm (line 414) | async function showProfileInstallConfirm(url: string, name?: string | nu... function parseFilename (line 454) | function parseFilename(str: string): string { function showOverrideInstallConfirm (line 464) | async function showOverrideInstallConfirm(url: string, name?: string | n... function createWindow (line 491) | async function createWindow(appConfig?: AppConfig): Promise { function triggerMainWindow (line 611) | async function triggerMainWindow(): Promise { function showMainWindow (line 619) | async function showMainWindow(): Promise { function closeMainWindow (line 643) | function closeMainWindow(): void { FILE: src/main/resolve/autoUpdater.ts function checkUpdate (line 19) | async function checkUpdate(): Promise { function stopServiceForPortableUpdate (line 46) | async function stopServiceForPortableUpdate(): Promise { function downloadAndInstallUpdate (line 60) | async function downloadAndInstallUpdate(version: string): Promise { function cancelUpdate (line 209) | async function cancelUpdate(): Promise { FILE: src/main/resolve/backup.ts function webdavBackup (line 16) | async function webdavBackup(): Promise { function webdavRestore (line 50) | async function webdavRestore(filename: string): Promise { function listWebdavBackups (line 68) | async function listWebdavBackups(): Promise { function webdavDelete (line 85) | async function webdavDelete(filename: string): Promise { FILE: src/main/resolve/floatingWindow.ts function preallocateGpuResources (line 12) | async function preallocateGpuResources(): Promise { function createFloatingWindow (line 32) | async function createFloatingWindow(): Promise { function showFloatingWindow (line 85) | async function showFloatingWindow(): Promise { function triggerFloatingWindow (line 93) | async function triggerFloatingWindow(): Promise { function closeFloatingWindow (line 111) | async function closeFloatingWindow(): Promise { function showContextMenu (line 121) | 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 31) | async function createGist(token: string, content: string): Promise { function updateGist (line 57) | async function updateGist(token: string, id: string, content: string): P... function getGistUrl (line 82) | async function getGistUrl(): Promise { function uploadRuntimeConfig (line 98) | async function uploadRuntimeConfig(): Promise { FILE: src/main/resolve/menu.ts function createApplicationMenu (line 7) | async function createApplicationMenu(): Promise { function updateApplicationMenu (line 204) | async function updateApplicationMenu(): 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 89) | async function stopSubStoreFrontendServer(): Promise { function startSubStoreBackendServer (line 95) | async function startSubStoreBackendServer(): Promise { function stopSubStoreBackendServer (line 141) | async function stopSubStoreBackendServer(): Promise { function downloadSubStore (line 147) | async function downloadSubStore(): Promise { FILE: src/main/resolve/shortcut.ts function registerShortcut (line 14) | async function registerShortcut( function initShortcut (line 130) | async function initShortcut(): Promise { FILE: src/main/resolve/theme.ts function normalizeThemeCss (line 14) | function normalizeThemeCss(css: string): string { function resolveThemes (line 43) | async function resolveThemes(): Promise<{ key: string; label: string }[]> { function fetchThemes (line 64) | async function fetchThemes(): Promise { function importThemes (line 82) | async function importThemes(files: string[]): Promise { function readTheme (line 92) | async function readTheme(theme: string): Promise { function writeTheme (line 97) | async function writeTheme(theme: string, css: string): Promise { function applyTheme (line 101) | 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 formatDelayText (line 45) | function formatDelayText(delay: number): string { function createDarwinTrayIcon (line 54) | function createDarwinTrayIcon(): Electron.NativeImage { function positionCustomTrayWindow (line 60) | function positionCustomTrayWindow(win: BrowserWindow): void { function hideCustomTray (line 76) | function hideCustomTray(): void { function showCustomTray (line 82) | async function showCustomTray(): Promise { function handleTrayClick (line 133) | async function handleTrayClick(): Promise { function createTray (line 452) | async function createTray(): Promise { function updateTrayMenu (line 517) | async function updateTrayMenu(): Promise { function copyEnv (line 530) | async function copyEnv( function showTrayIcon (line 570) | async function showTrayIcon(): Promise { function closeTrayIcon (line 576) | async function closeTrayIcon(): Promise { function setDockVisible (line 588) | function setDockVisible(visible: boolean): void { FILE: src/main/service/api.ts class ServiceAPIError (line 15) | class ServiceAPIError extends Error { method constructor (line 19) | constructor(message: string, options?: { status?: number; responseData... function getHeaderValue (line 27) | function getHeaderValue(config: AxiosRequestConfig, name: string): string { function shouldUseJsonEncoding (line 44) | function shouldUseJsonEncoding(config: AxiosRequestConfig): boolean { function getRequestBodyBytes (line 49) | function getRequestBodyBytes(config: AxiosRequestConfig): Buffer { function canonicalizeQuery (line 83) | function canonicalizeQuery(urlObj: URL): string { function resolveRequestUrl (line 98) | function resolveRequestUrl(instance: AxiosInstance, config: AxiosRequest... function buildCanonicalRequest (line 102) | function buildCanonicalRequest( function signServiceRequest (line 126) | function signServiceRequest( function attachServiceAuth (line 150) | function attachServiceAuth(instance: AxiosInstance): void { function setServiceUnavailableFallbackHandler (line 154) | function setServiceUnavailableFallbackHandler( function isServiceConnectionError (line 160) | function isServiceConnectionError(error: unknown): boolean { function scheduleServiceUnavailableFallback (line 174) | function scheduleServiceUnavailableFallback(reason: unknown): void { function runServiceUnavailableFallback (line 185) | async function runServiceUnavailableFallback(reason: unknown): Promise { function getResponseErrorMessage (line 212) | function getResponseErrorMessage(responseData: unknown, fallback: string... function createServiceAPIError (line 221) | function createServiceAPIError(error: unknown): unknown { function handleServiceAxiosError (line 246) | function handleServiceAxiosError(error: unknown): Promise { type ServiceCoreLaunchProfile (line 359) | interface ServiceCoreLaunchProfile { type ServiceCoreEventType (line 370) | type ServiceCoreEventType = type ServiceCoreEvent (line 382) | interface ServiceCoreEvent { type ServiceSysproxyEventType (line 393) | type ServiceSysproxyEventType = type ServiceSysproxyEvent (line 402) | interface ServiceSysproxyEvent { type ServiceCoreEventHandler (line 426) | type ServiceCoreEventHandler = (event: ServiceCoreEvent) => void | Promi... type ServiceCoreEventStreamState (line 427) | type ServiceCoreEventStreamState = 'connected' | 'disconnected' type ServiceCoreEventStreamHandler (line 428) | type ServiceCoreEventStreamHandler = (state: ServiceCoreEventStreamState... type ServiceSysproxyEventHandler (line 429) | type ServiceSysproxyEventHandler = (event: ServiceSysproxyEvent) => void... function subscribeServiceCoreEvents (line 442) | function subscribeServiceCoreEvents(handler: ServiceCoreEventHandler): (... function subscribeServiceCoreEventStream (line 449) | function subscribeServiceCoreEventStream( function subscribeServiceSysproxyEvents (line 458) | function subscribeServiceSysproxyEvents(handler: ServiceSysproxyEventHan... function startServiceCoreEventStream (line 465) | async function startServiceCoreEventStream(): Promise { function stopServiceCoreEventStream (line 523) | function stopServiceCoreEventStream(): void { function startServiceSysproxyEventStream (line 536) | async function startServiceSysproxyEventStream(): Promise { function stopServiceSysproxyEventStream (line 586) | function stopServiceSysproxyEventStream(): void { function scheduleServiceCoreEventReconnect (line 599) | function scheduleServiceCoreEventReconnect(): void { function scheduleServiceSysproxyEventReconnect (line 609) | function scheduleServiceSysproxyEventReconnect(): void { function waitForServiceCoreEventsSocket (line 619) | async function waitForServiceCoreEventsSocket(ws: WebSocket): Promise { function saveServiceAuthSecret (line 92) | async function saveServiceAuthSecret(secret: ServiceAuthSecret): Promise... function deleteServiceAuthSecret (line 130) | async function deleteServiceAuthSecret(): Promise { FILE: src/main/service/key.ts type KeyPair (line 3) | interface KeyPair { class KeyManager (line 9) | class KeyManager { method generateKeyPair (line 14) | generateKeyPair(): KeyPair { method setKeyPair (line 43) | setKeyPair(publicKey: string, privateKey: string, keyId?: string): void { method getKeyID (line 57) | getKeyID(): string { method getPublicKey (line 64) | getPublicKey(): string { method getPrivateKey (line 71) | getPrivateKey(): string { method signData (line 78) | signData(data: string): string { method isInitialized (line 92) | isInitialized(): boolean { method clear (line 102) | clear(): void { function computeKeyId (line 109) | function computeKeyId(publicKey: string): string { function generateKeyPair (line 123) | function generateKeyPair(): KeyPair { function signData (line 128) | function signData(privateKey: string, data: string): string { FILE: src/main/service/manager.ts function parseLegacyServiceAuth (line 18) | function parseLegacyServiceAuth(value: string): ServiceAuthSecret | null { function clearLegacyServiceAuth (line 35) | async function clearLegacyServiceAuth(): Promise { function loadServiceAuthFromLegacyConfig (line 41) | async function loadServiceAuthFromLegacyConfig(): Promise { function getKeyManager (line 129) | function getKeyManager(): KeyManager { function getPublicKey (line 136) | function getPublicKey(): string { class UserCancelledError (line 140) | class UserCancelledError extends Error { method constructor (line 141) | constructor(message = '用户取消操作') { function isUserCancelledError (line 147) | function isUserCancelledError(error: unknown): boolean { type ServiceLogEntry (line 161) | interface ServiceLogEntry { function parseServiceLog (line 171) | function parseServiceLog(output: string): ServiceLogEntry | null { function serviceCommandOutput (line 196) | function serviceCommandOutput(value: unknown): string { function serviceCommandErrorMessage (line 206) | function serviceCommandErrorMessage(error: unknown): string { function getAuthorizedPrincipalArgs (line 216) | async function getAuthorizedPrincipalArgs(): Promise { function exportPublicKey (line 244) | function exportPublicKey(): string { function getAxios (line 248) | function getAxios() { function waitForServiceReady (line 252) | async function waitForServiceReady(timeoutMs = 15000): Promise { function initService (line 273) | async function initService(): Promise { function installService (line 297) | async function installService(): Promise { function uninstallService (line 310) | async function uninstallService(): Promise { function startService (line 323) | async function startService(): Promise { function stopService (line 336) | async function stopService(): Promise { function restartService (line 349) | async function restartService(): Promise { function serviceStatus (line 362) | async function serviceStatus(): Promise< function testServiceConnection (line 406) | async function testServiceConnection(): Promise { FILE: src/main/sys/autoRun.ts function checkAutoRun (line 53) | async function checkAutoRun(): Promise { function enableAutoRun (line 79) | async function enableAutoRun(): Promise { function disableAutoRun (line 124) | 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 19) | function getFilePath(ext: string[]): string[] | undefined { function readTextFile (line 27) | async function readTextFile(filePath: string): Promise { function openFile (line 31) | function openFile(type: 'profile' | 'override', id: string, ext?: 'yaml'... function openUWPTool (line 40) | async function openUWPTool(): Promise { function setupFirewall (line 46) | async function setupFirewall(): Promise { function setNativeTheme (line 68) | function setNativeTheme(theme: 'system' | 'light' | 'dark'): void { function prepareElevateTaskFile (line 109) | function prepareElevateTaskFile(): string { function createElevateTaskSync (line 119) | function createElevateTaskSync(): void { function createElevateTask (line 126) | async function createElevateTask(): Promise { function deleteElevateTask (line 138) | async function deleteElevateTask(): Promise { function checkElevateTask (line 146) | async function checkElevateTask(): Promise { function resetAppConfig (line 155) | function resetAppConfig(): void { FILE: src/main/sys/ssid.ts function getCurrentSSID (line 9) | async function getCurrentSSID(): Promise { function checkSSID (line 35) | async function checkSSID(): Promise { function startSSIDCheck (line 58) | async function startSSIDCheck(): Promise { function getSSIDByAirport (line 63) | async function getSSIDByAirport(): Promise { function getSSIDByNetworksetup (line 79) | async function getSSIDByNetworksetup(): Promise { function getSSIDByNetsh (line 93) | async function getSSIDByNetsh(): Promise { function getSSIDByIwconfig (line 104) | async function getSSIDByIwconfig(): Promise { FILE: src/main/sys/sysproxy.ts function registryArgs (line 24) | function registryArgs(useRegistry: boolean): string[] { function triggerSysProxy (line 28) | async function triggerSysProxy( function setSysProxy (line 48) | async function setSysProxy(onlyActiveDevice: boolean, useRegistry = fals... function disableSysProxy (line 164) | async function disableSysProxy(onlyActiveDevice: boolean, useRegistry = ... function updateSysproxyGuardEventStream (line 182) | function updateSysproxyGuardEventStream(enabled: boolean): void { function handleSysproxyGuardEvent (line 201) | async function handleSysproxyGuardEvent(event: ServiceSysproxyEvent): Pr... function shouldNotifySysproxyGuardEvent (line 215) | async function shouldNotifySysproxyGuardEvent(event: ServiceSysproxyEven... function disableSysProxySync (line 230) | function disableSysProxySync(useRegistry = false): void { 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/devicePathResolver.ts type DosDeviceMapping (line 4) | type DosDeviceMapping = { constant DOS_DEVICE_BUFFER_CHARS (line 9) | const DOS_DEVICE_BUFFER_CHARS = 4096 constant DRIVE_LETTERS (line 10) | const DRIVE_LETTERS = Array.from({ length: 26 }, (_, i) => `${String.fro... constant IS_WINDOWS (line 11) | const IS_WINDOWS = process.platform === 'win32' function queryDosDevice (line 20) | function queryDosDevice(deviceName: string): string | null { function resolveWithDosDeviceMappings (line 34) | function resolveWithDosDeviceMappings(targetPath: string): string | null { FILE: src/main/utils/dirs.ts function isPortable (line 11) | function isPortable(): boolean { function dataDir (line 15) | function dataDir(): string { function taskDir (line 23) | function taskDir(): string { function subStoreDir (line 31) | function subStoreDir(): string { function exeDir (line 35) | function exeDir(): string { function exePath (line 39) | function exePath(): string { function resourcesDir (line 43) | function resourcesDir(): string { function resourcesFilesDir (line 55) | function resourcesFilesDir(): string { function themesDir (line 59) | function themesDir(): string { function mihomoIpcPath (line 63) | function mihomoIpcPath(): string { function serviceIpcPath (line 77) | function serviceIpcPath(): string { function mihomoCoreDir (line 84) | function mihomoCoreDir(): string { function mihomoCorePath (line 88) | function mihomoCorePath(core: string): string { function systemCorePath (line 104) | function systemCorePath(): string { function servicePath (line 109) | function servicePath(): string { function serviceAuthStorePath (line 114) | function serviceAuthStorePath(): string { function appConfigPath (line 118) | function appConfigPath(): string { function controledMihomoConfigPath (line 122) | function controledMihomoConfigPath(): string { function profileConfigPath (line 126) | function profileConfigPath(): string { function profilesDir (line 130) | function profilesDir(): string { function profilePath (line 134) | function profilePath(id: string): string { function overrideDir (line 138) | function overrideDir(): string { function overrideConfigPath (line 142) | function overrideConfigPath(): string { function overridePath (line 146) | function overridePath(id: string, ext: 'js' | 'yaml' | 'log'): string { function mihomoWorkDir (line 150) | function mihomoWorkDir(): string { function mihomoProfileWorkDir (line 154) | function mihomoProfileWorkDir(id: string | undefined): string { function mihomoTestDir (line 158) | function mihomoTestDir(): string { function mihomoWorkConfigPath (line 162) | function mihomoWorkConfigPath(id: string | undefined): string { function logDir (line 170) | function logDir(): string { function datedLogPath (line 174) | function datedLogPath(prefix?: string): string { function logPath (line 180) | function logPath(): string { function appLogPath (line 184) | function appLogPath(): string { function coreLogPath (line 188) | function coreLogPath(): string { function substoreLogPath (line 192) | function substoreLogPath(): string { function hasCommand (line 196) | function hasCommand(command: string): boolean { function findSystemMihomo (line 207) | function findSystemMihomo(): string[] { FILE: src/main/utils/elevation.ts function isRunningAsAdmin (line 8) | async function isRunningAsAdmin(): Promise { function shellQuote (line 23) | function shellQuote(arg: string): string { function appleScriptQuote (line 27) | function appleScriptQuote(value: string): string { function execWithElevation (line 31) | async function execWithElevation(command: string, args: string[]): Promi... FILE: src/main/utils/encrypt.ts constant ENCRYPTED_PREFIX (line 3) | const ENCRYPTED_PREFIX = 'enc:' function isSecureStorageAvailable (line 5) | function isSecureStorageAvailable(): boolean { function encryptString (line 21) | function encryptString(plainText: string): string { function decryptString (line 40) | function decryptString(encryptedText: string): string { function isEncrypted (line 60) | function isEncrypted(text: string): boolean { function encryptStringStrict (line 65) | function encryptStringStrict(plainText: string): string { function decryptStringStrict (line 80) | function decryptStringStrict(encryptedText: string): string { FILE: src/main/utils/icon.ts function isIOSApp (line 13) | function isIOSApp(appPath: string): boolean { function hasIOSAppIcon (line 23) | function hasIOSAppIcon(appPath: string): boolean { function hasMacOSAppIcon (line 36) | function hasMacOSAppIcon(appPath: string): boolean { function findBestAppPath (line 50) | function findBestAppPath(appPath: string): string | null { function normalizeLinuxAppId (line 85) | function normalizeLinuxAppId(value: string): string { function tokenizeLinuxAppId (line 92) | function tokenizeLinuxAppId(value: string): string[] { function getLinuxDesktopDirs (line 98) | function getLinuxDesktopDirs(): string[] { function collectDesktopFiles (line 108) | function collectDesktopFiles(dir: string, files: string[] = []): string[] { function getDesktopEntryValue (line 129) | function getDesktopEntryValue(content: string, key: string): string | nu... function parseShellWords (line 139) | function parseShellWords(command: string): string[] { function parseDesktopExecCommand (line 188) | function parseDesktopExecCommand(command: string): string { function isDesktopEntryDisabled (line 192) | function isDesktopEntryDisabled(content: string): boolean { function resolveExistingLinuxPath (line 196) | function resolveExistingLinuxPath(filePath: string): string | null { function resolveLinuxCommandPath (line 208) | function resolveLinuxCommandPath(command: string): string | null { function readLinuxScript (line 233) | function readLinuxScript(filePath: string): string | null { function expandLinuxScriptCommand (line 251) | function expandLinuxScriptCommand(command: string, scriptPath: string): ... function extractExecCommandFromScriptLine (line 258) | function extractExecCommandFromScriptLine(line: string, scriptPath: stri... function collectLinuxExecTargets (line 295) | function collectLinuxExecTargets(entry: string, seen = new Set()... function getLinuxPathCandidates (line 333) | function getLinuxPathCandidates(value: string): string[] { function getLinuxAppIds (line 337) | function getLinuxAppIds(appPath: string, execTargets: Iterable =... function matchLinuxAppId (line 358) | function matchLinuxAppId(entryValue: string, appIds: Set): number { function getExecTargetMatchRank (line 392) | function getExecTargetMatchRank(entry: string | null, appExecTargets: Se... function getDesktopFileRank (line 411) | function getDesktopFileRank( function findDesktopFile (line 463) | async function findDesktopFile(appPath: string): Promise { function parseIconNameFromDesktopFile (line 521) | function parseIconNameFromDesktopFile(content: string): string | null { function resolveIconPath (line 526) | function resolveIconPath(iconName: string): string | null { function getIconMimeType (line 560) | function getIconMimeType(iconPath: string): string { function getWindowsFileIconDataURL (line 573) | async function getWindowsFileIconDataURL(appPath: string): Promise { function getImageDataURL (line 686) | async function getImageDataURL(url: string): Promise { FILE: src/main/utils/init.ts function initDirs (line 45) | async function initDirs(): Promise { function initConfig (line 67) | async function initConfig(): Promise { function initFiles (line 93) | async function initFiles(): Promise { function cleanup (line 116) | async function cleanup(): Promise { function migration (line 149) | async function migration(): Promise { function initDeeplink (line 196) | function initDeeplink(): void { function init (line 210) | async function init(): Promise { FILE: src/main/utils/ipc.ts function ipcErrorWrapper (line 137) | function ipcErrorWrapper( // eslint-disable-next-line @typescript-esl... function patchAppConfigWithServiceSync (line 160) | async function patchAppConfigWithServiceSync(patch: Partial):... function registerIpcMainHandlers (line 185) | function registerIpcMainHandlers(): void { FILE: src/main/utils/log.ts type LogTarget (line 8) | type LogTarget = 'app' | 'core' | 'substore' type MihomoLogSource (line 9) | type MihomoLogSource = 'out' | 'ws' type LogContent (line 10) | type LogContent = string | Buffer type CachedControllerLog (line 11) | interface CachedControllerLog extends ControllerLog { function resolveLogPath (line 31) | function resolveLogPath(target: LogTarget): string { function shouldSaveLogs (line 46) | async function shouldSaveLogs(): Promise { function getMaxLogFileSizeBytes (line 51) | async function getMaxLogFileSizeBytes(): Promise { function getWriteStream (line 56) | function getWriteStream(target: LogTarget): WriteStream { function closeWriteStream (line 79) | async function closeWriteStream(target: LogTarget): Promise { function retainTarget (line 109) | function retainTarget(target: LogTarget): void { function releaseTarget (line 113) | function releaseTarget(target: LogTarget): void { function trimCachedLogs (line 124) | function trimCachedLogs(): void { function isEmptyLogContent (line 129) | function isEmptyLogContent(content: LogContent): boolean { function getLogContentSize (line 133) | function getLogContentSize(content: LogContent): number { function normalizeLogContent (line 137) | function normalizeLogContent(content: string): string[] { function parseFileLines (line 144) | function parseFileLines(content: string): { lines: string[]; hasTrailing... function getLogFileSize (line 159) | async function getLogFileSize(target: LogTarget, path: string): Promise<... function trimLogFileToSize (line 175) | async function trimLogFileToSize( function enforceLogFileSizeLimit (line 208) | async function enforceLogFileSizeLimit( function unquoteLogfmtValue (line 223) | function unquoteLogfmtValue(value: string): string { function parseLogfmtLine (line 235) | function parseLogfmtLine(line: string): Record { function normalizeOutLogTime (line 246) | function normalizeOutLogTime(value?: string): string | undefined { function normalizeOutLogLevel (line 259) | function normalizeOutLogLevel(level: string | undefined, fallbackType: L... function createControllerLogFromOutLine (line 275) | function createControllerLogFromOutLine(line: string, fallbackType: LogL... function pushCachedLog (line 293) | function pushCachedLog(log: ControllerLog): CachedControllerLog { function broadcastLog (line 304) | function broadcastLog(log: CachedControllerLog): void { function cacheAndBroadcastLog (line 312) | function cacheAndBroadcastLog(log: ControllerLog): void { function publishTargetLogLines (line 316) | function publishTargetLogLines(content: string, type: LogLevel): void { function flushCoreLogLines (line 322) | function flushCoreLogLines(lineBuffer: string, content: string, type: Lo... function normalizeWriteChunk (line 330) | function normalizeWriteChunk(chunk: string | Buffer): Buffer { function appendLog (line 334) | async function appendLog(target: LogTarget, content: LogContent): Promis... function setMihomoLogSource (line 364) | function setMihomoLogSource(source: MihomoLogSource): void { function appendAppLog (line 368) | async function appendAppLog(content: string): Promise { function publishMihomoLog (line 372) | function publishMihomoLog(log: ControllerLog): void { function getCachedMihomoLogs (line 377) | function getCachedMihomoLogs(): CachedControllerLog[] { function clearCachedMihomoLogs (line 381) | function clearCachedMihomoLogs(): void { function createLogWritable (line 385) | function createLogWritable(target: LogTarget, type: LogLevel = 'info'): ... 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, isOve... FILE: src/main/utils/userAgent.ts constant TIMEOUT_MS (line 4) | const TIMEOUT_MS = 300 constant DEFAULT_USER_AGENT (line 5) | const DEFAULT_USER_AGENT = 'clash.meta/alpha-e89af72' function getUserAgent (line 7) | async function getUserAgent(): Promise { FILE: src/main/utils/yaml.ts function parseYaml (line 3) | function parseYaml(content: string): T { function stringifyYaml (line 13) | function stringifyYaml(data: unknown): string { function addYamlTagsToProxiesShortId (line 17) | function addYamlTagsToProxiesShortId(yamlContent: string, includeNestedP... FILE: src/preload/index.d.ts type Window (line 5) | interface Window { FILE: src/renderer/src/TrayMenuApp.tsx type TrafficData (line 9) | interface TrafficData { FILE: src/renderer/src/components/base/base-confirm.tsx type ConfirmButton (line 5) | interface ConfirmButton { function mapButtonVariant (line 13) | function mapButtonVariant( type Props (line 25) | interface Props { FILE: src/renderer/src/components/base/base-editor-lazy.tsx type Language (line 8) | type Language = 'yaml' | 'javascript' | 'css' | 'json' | 'text' type Props (line 10) | interface Props { FILE: src/renderer/src/components/base/base-editor.tsx type Language (line 11) | type Language = 'yaml' | 'javascript' | 'css' | 'json' | 'text' type Props (line 13) | interface Props { FILE: src/renderer/src/components/base/base-error-boundary.tsx type Props (line 66) | interface Props { FILE: src/renderer/src/components/base/base-list-editor.tsx type EditableListProps (line 6) | interface EditableListProps { FILE: src/renderer/src/components/base/base-page.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/base/base-qrcode-modal.tsx type Props (line 5) | interface Props { FILE: src/renderer/src/components/base/base-setting-card.tsx type Props (line 4) | interface Props { FILE: src/renderer/src/components/base/base-setting-item.tsx type Props (line 5) | interface Props { FILE: src/renderer/src/components/base/border-swtich.tsx type SiderSwitchProps (line 5) | interface SiderSwitchProps extends SwitchProps { FILE: src/renderer/src/components/base/collapse-input.tsx type CollapseInputProps (line 5) | interface CollapseInputProps extends InputProps { FILE: src/renderer/src/components/base/mihomo-icon.tsx function MihomoIcon (line 3) | function MihomoIcon(props: IconBaseProps): JSX.Element { FILE: src/renderer/src/components/base/substore-icon.tsx function SubStoreIcon (line 3) | function SubStoreIcon(props: IconBaseProps): JSX.Element { FILE: src/renderer/src/components/connections/connection-detail-modal.tsx type Props (line 18) | interface Props { type CopyProps (line 23) | interface CopyProps { type StaticRow (line 30) | interface StaticRow { type CopyRow (line 36) | interface CopyRow extends CopyProps { function buildCopyMenuItems (line 40) | function buildCopyMenuItems(value: string | string[], displayName?: stri... FILE: src/renderer/src/components/connections/connection-item.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/connections/connection-setting-modal.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/dns/advanced-dns-setting.tsx type AdvancedDnsSettingProps (line 8) | interface AdvancedDnsSettingProps { FILE: src/renderer/src/components/logs/log-item.tsx type Props (line 12) | interface Props extends ControllerLog { FILE: src/renderer/src/components/mihomo/interface-modal.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/mihomo/permission-modal.tsx type Props (line 13) | interface Props { FILE: src/renderer/src/components/mihomo/service-modal.tsx type Props (line 6) | interface Props { type ServiceStatusType (line 15) | type ServiceStatusType = Awaited> type ConnectionStatusType (line 16) | type ConnectionStatusType = 'connected' | 'disconnected' | 'checking' | ... function isUserCancelledError (line 18) | function isUserCancelledError(error: unknown): boolean { function delay (line 23) | function delay(ms: number): Promise { function readServiceStatus (line 27) | async function readServiceStatus(): Promise { FILE: src/renderer/src/components/override/edit-file-modal.tsx type Props (line 9) | interface Props { FILE: src/renderer/src/components/override/edit-info-modal.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/override/exec-log-modal.tsx type Props (line 7) | 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 10) | interface Props { FILE: src/renderer/src/components/profiles/edit-info-modal.tsx type Props (line 11) | interface Props { FILE: src/renderer/src/components/profiles/profile-item.tsx type Props (line 27) | interface Props { type MenuItem (line 38) | interface MenuItem { FILE: src/renderer/src/components/profiles/profile-setting-modal.tsx type Props (line 11) | interface Props { FILE: src/renderer/src/components/proxies/proxy-item.tsx type Props (line 6) | interface Props { function delayColor (line 28) | function delayColor(delay: number): 'primary' | 'success' | 'warning' | ... function delayText (line 35) | function delayText(delay: number): string { FILE: src/renderer/src/components/proxies/proxy-setting-modal.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/resources/viewer.tsx type Language (line 7) | type Language = 'yaml' | 'javascript' | 'css' | 'json' | 'text' constant FILE_PERMISSION_ELEVATION_REQUIRED (line 8) | const FILE_PERMISSION_ELEVATION_REQUIRED = 'FILE_PERMISSION_ELEVATION_RE... type Props (line 10) | interface Props { function getDefaultLanguage (line 19) | function getDefaultLanguage(format?: string): Language { function getViewerContent (line 23) | function getViewerContent(fileContent: string, privderType: string, titl... FILE: src/renderer/src/components/rules/rule-item.tsx type Props (line 12) | interface Props { FILE: src/renderer/src/components/settings/css-editor-modal.tsx type Props (line 6) | interface Props { FILE: src/renderer/src/components/settings/webdav-restore-modal.tsx type Props (line 6) | interface Props { FILE: src/renderer/src/components/sider/config-viewer.tsx type Props (line 13) | interface Props { type CompareTarget (line 17) | type CompareTarget = 'profile' | 'raw' | 'override' FILE: src/renderer/src/components/sider/conn-card.tsx type Props (line 18) | interface Props { FILE: src/renderer/src/components/sider/dns-card.tsx type Props (line 12) | interface Props { FILE: src/renderer/src/components/sider/log-card.tsx type Props (line 9) | interface Props { FILE: src/renderer/src/components/sider/mihomo-core-card.tsx type Props (line 14) | interface Props { FILE: src/renderer/src/components/sider/outbound-mode-switcher.tsx type Props (line 8) | interface Props { FILE: src/renderer/src/components/sider/override-card.tsx type Props (line 9) | 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 10) | interface Props { FILE: src/renderer/src/components/sider/resource-card.tsx type Props (line 9) | interface Props { FILE: src/renderer/src/components/sider/rule-card.tsx type Props (line 10) | interface Props { FILE: src/renderer/src/components/sider/sniff-card.tsx type Props (line 12) | interface Props { FILE: src/renderer/src/components/sider/substore-card.tsx type Props (line 9) | interface Props { FILE: src/renderer/src/components/sider/sysproxy-switcher.tsx type Props (line 12) | interface Props { FILE: src/renderer/src/components/sider/traffic-chart.tsx type TrafficChartProps (line 4) | interface TrafficChartProps { FILE: src/renderer/src/components/sider/tun-switcher.tsx type Props (line 12) | interface Props { FILE: src/renderer/src/components/sysproxy/bypass-editor-modal.tsx type Props (line 8) | interface Props { type ParsedYaml (line 14) | interface ParsedYaml { FILE: src/renderer/src/components/sysproxy/pac-editor-modal.tsx type Props (line 5) | interface Props { FILE: src/renderer/src/components/updater/updater-button.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/components/updater/updater-modal.tsx type Props (line 7) | interface Props { FILE: src/renderer/src/hooks/use-app-config.tsx type AppConfigContextType (line 5) | interface AppConfigContextType { FILE: src/renderer/src/hooks/use-card-dnd-sensors.ts function shouldHandleEvent (line 13) | function shouldHandleEvent(event: Event): boolean { class CardMouseSensor (line 20) | class CardMouseSensor extends MouseSensor { class CardTouchSensor (line 33) | class CardTouchSensor extends TouchSensor { type CardDndSensorOptions (line 46) | interface CardDndSensorOptions { function useCardDndSensors (line 52) | function useCardDndSensors(options: CardDndSensorOptions = {}) { FILE: src/renderer/src/hooks/use-controled-mihomo-config.tsx type ControledMihomoConfigContextType (line 5) | 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 11) | interface OverrideConfigContextType { FILE: src/renderer/src/hooks/use-profile-config.tsx type ProfileConfigContextType (line 12) | interface ProfileConfigContextType { FILE: src/renderer/src/hooks/use-rules.tsx type RulesContextType (line 5) | interface RulesContextType { FILE: src/renderer/src/pages/logs.tsx function isSameLogEntry (line 30) | function isSameLogEntry(left: MihomoLogEntry, right: MihomoLogEntry): bo... function areSameLogEntries (line 40) | function areSameLogEntries(left: MihomoLogEntry[], right: MihomoLogEntry... function areSameIds (line 46) | function areSameIds(left: string[], right: string[]): boolean { FILE: src/renderer/src/pages/proxies.tsx type ProxyLike (line 25) | type ProxyLike = ControllerProxiesDetail | ControllerGroupDetail constant EMPTY_PROXIES (line 27) | const EMPTY_PROXIES: ProxyLike[] = [] function getProxyDelay (line 29) | function getProxyDelay(proxy: ProxyLike): number { function compareProxyDelay (line 33) | function compareProxyDelay(a: ProxyLike, b: ProxyLike): number { FILE: src/renderer/src/utils/advanced-filter.ts type FilterExpression (line 1) | type FilterExpression = type FilterToken (line 12) | type FilterToken = type CompiledAdvancedFilter (line 37) | interface CompiledAdvancedFilter { class FilterSyntaxError (line 43) | class FilterSyntaxError extends Error { method constructor (line 44) | constructor( class FilterParser (line 53) | class FilterParser { method constructor (line 56) | constructor(private readonly tokens: FilterToken[]) {} method parse (line 58) | parse(): FilterExpression { method parseOr (line 68) | private parseOr(): FilterExpression { method parseAnd (line 84) | private parseAnd(): FilterExpression { method parseComparison (line 100) | private parseComparison(): FilterExpression { method parseUnary (line 116) | private parseUnary(): FilterExpression { method parsePrimary (line 128) | private parsePrimary(): FilterExpression { method parsePath (line 160) | private parsePath(): FilterExpression { method matchComparisonOperator (line 201) | private matchComparisonOperator(): '==' | '!=' | '>=' | '<=' | '>' | '... method current (line 231) | private current(): FilterToken { method match (line 235) | private match(type: FilterToken['type']): boolean { method expect (line 241) | private expect( method consume (line 254) | private consume(type: T): Extract unknown type Predicate (line 552) | type Predicate = (root: unknown) => boolean function compileValue (line 554) | function compileValue(expression: FilterExpression): ValueFn { function compilePredicate (line 585) | function compilePredicate(expression: FilterExpression): Predicate { function looksLikeAdvancedFilter (line 712) | function looksLikeAdvancedFilter(input: string): boolean { function formatFilterError (line 720) | function formatFilterError(error: unknown): string { function compileAdvancedFilter (line 728) | function compileAdvancedFilter( 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/connection-filter-autocomplete.ts type ConnectionFilterSuggestion (line 1) | interface ConnectionFilterSuggestion { type ConnectionFilterCompletionSession (line 10) | interface ConnectionFilterCompletionSession { function isPathChar (line 76) | function isPathChar(char: string | undefined): boolean { function getPathTokenAtCursor (line 82) | function getPathTokenAtCursor(input: string, cursor: number) { function rankByPrefix (line 103) | function rankByPrefix(value: string, prefix: string): number { function findPathSeparatorIndex (line 114) | function findPathSeparatorIndex(value: string): number { function getNextPathSuggestionTarget (line 124) | function getNextPathSuggestionTarget(prefix: string, fullPath: string): ... function withLeadingSpace (line 141) | function withLeadingSpace(input: string, index: number, text: string) { function endsWithValueOperand (line 148) | function endsWithValueOperand(input: string): boolean { function endsWithComparisonClause (line 154) | function endsWithComparisonClause(input: string): boolean { function getCurrentClause (line 160) | function getCurrentClause(input: string): string { function hasComparisonOperator (line 204) | function hasComparisonOperator(input: string): boolean { function normalizeClauseForCompletion (line 208) | function normalizeClauseForCompletion(input: string): string { function collectPathSuggestionTargets (line 216) | function collectPathSuggestionTargets(prefix: string) { function getPathSuggestions (line 257) | function getPathSuggestions( function getConnectionFilterSuggestions (line 274) | function getConnectionFilterSuggestions( function getEnhancedConnectionFilterSuggestions (line 387) | function getEnhancedConnectionFilterSuggestions( function buildConnectionFilterSuggestionResult (line 410) | function buildConnectionFilterSuggestionResult( function isConnectionFilterCompletionSessionActive (line 425) | function isConnectionFilterCompletionSessionActive( FILE: src/renderer/src/utils/debounce.ts function debounce (line 2) | function debounce void>(func: T, wait: num... FILE: src/renderer/src/utils/delay-test.ts constant DEFAULT_DELAY_TEST_CONCURRENCY (line 1) | const DEFAULT_DELAY_TEST_CONCURRENCY = 50 constant MIN_DELAY_TEST_CONCURRENCY (line 2) | const MIN_DELAY_TEST_CONCURRENCY = 1 constant MAX_DELAY_TEST_CONCURRENCY (line 3) | const MAX_DELAY_TEST_CONCURRENCY = 512 function normalizeDelayTestConcurrency (line 5) | function normalizeDelayTestConcurrency(value?: number): number { function runDelayTestsWithConcurrency (line 15) | async function runDelayTestsWithConcurrency( FILE: src/renderer/src/utils/driver.ts type Driver (line 3) | type Driver = { function loadDriverModule (line 12) | async function loadDriverModule(): Promise { function createDriver (line 20) | async function createDriver(navigate: NavigateFunction): Promise { function startTour (line 215) | async function startTour(navigate: NavigateFunction): Promise { function getDriver (line 220) | function getDriver(): Driver | null { 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/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 ipcErrorWrapper (line 4) | function ipcErrorWrapper(response: any): any { function mihomoVersion (line 12) | async function mihomoVersion(): Promise { function mihomoConfig (line 16) | async function mihomoConfig(): Promise { function mihomoCloseConnection (line 20) | async function mihomoCloseConnection(id: string): Promise { function mihomoCloseConnections (line 24) | async function mihomoCloseConnections(name?: string): Promise { function mihomoRules (line 28) | async function mihomoRules(): Promise { function mihomoProxies (line 32) | async function mihomoProxies(): Promise { function mihomoGroups (line 36) | async function mihomoGroups(): Promise { function mihomoProxyProviders (line 40) | async function mihomoProxyProviders(): Promise { function mihomoUpdateProxyProviders (line 44) | async function mihomoUpdateProxyProviders(name: string): Promise { function mihomoRuleProviders (line 50) | async function mihomoRuleProviders(): Promise { function mihomoUpdateRuleProviders (line 54) | async function mihomoUpdateRuleProviders(name: string): Promise { function mihomoChangeProxy (line 60) | async function mihomoChangeProxy( function mihomoUnfixedProxy (line 69) | async function mihomoUnfixedProxy(group: string): Promise { function mihomoUpgradeUI (line 77) | async function mihomoUpgradeUI(): Promise { function mihomoUpgrade (line 81) | async function mihomoUpgrade(channel: string): Promise { function mihomoProxyDelay (line 85) | async function mihomoProxyDelay( function mihomoGroupDelay (line 92) | async function mihomoGroupDelay(group: string, url?: string): Promise): Promi... function patchMihomoConfig (line 100) | async function patchMihomoConfig(patch: Partial): Promise<... function restartMihomoLogs (line 104) | async function restartMihomoLogs(): Promise { function checkAutoRun (line 108) | async function checkAutoRun(): Promise { function enableAutoRun (line 112) | async function enableAutoRun(): Promise { function disableAutoRun (line 116) | async function disableAutoRun(): Promise { function getAppConfig (line 120) | async function getAppConfig(force = false): Promise { function getCachedMihomoLogs (line 124) | async function getCachedMihomoLogs(): Promise< function clearCachedMihomoLogs (line 130) | async function clearCachedMihomoLogs(): Promise { function patchAppConfig (line 134) | async function patchAppConfig(patch: Partial): Promise { function getControledMihomoConfig (line 138) | async function getControledMihomoConfig(force = false): Promise):... function getProfileConfig (line 150) | async function getProfileConfig(force = false): Promise { function setProfileConfig (line 154) | async function setProfileConfig(config: ProfileConfig): Promise { function getCurrentProfileItem (line 158) | async function getCurrentProfileItem(): Promise { function getProfileItem (line 162) | async function getProfileItem(id: string | undefined): Promise { function addProfileItem (line 170) | async function addProfileItem(item: Partial): Promise { function removeProfileItem (line 174) | async function removeProfileItem(id: string): Promise { function updateProfileItem (line 178) | async function updateProfileItem(item: ProfileItem): Promise { function getProfileStr (line 182) | async function getProfileStr(id: string): Promise { function getFileStr (line 186) | async function getFileStr(id: string): Promise { function setFileStr (line 190) | async function setFileStr(id: string, str: string): Promise { function saveFileStrWithElevation (line 194) | async function saveFileStrWithElevation(id: string, str: string): Promis... function setProfileStr (line 200) | async function setProfileStr(id: string, str: string): Promise { function getOverrideConfig (line 204) | async function getOverrideConfig(force = false): Promise { function setOverrideConfig (line 208) | async function setOverrideConfig(config: OverrideConfig): Promise { function getOverrideItem (line 212) | async function getOverrideItem(id: string): Promise): Promise { function updateOverrideItem (line 224) | async function updateOverrideItem(item: OverrideItem): Promise { function getOverride (line 228) | async function getOverride(id: string, ext: 'js' | 'yaml' | 'log'): Prom... function setOverride (line 232) | async function setOverride(id: string, ext: 'js' | 'yaml', str: string):... function restartCore (line 236) | async function restartCore(): Promise { function stopCore (line 240) | async function stopCore(): Promise { function restartMihomoConnections (line 244) | async function restartMihomoConnections(): Promise { function startMonitor (line 248) | async function startMonitor(): Promise { function triggerSysProxy (line 252) | async function triggerSysProxy( function manualGrantCorePermition (line 267) | async function manualGrantCorePermition( function checkCorePermission (line 275) | async function checkCorePermission(): Promise<{ mihomo: boolean; 'mihomo... function checkElevateTask (line 279) | async function checkElevateTask(): Promise { function deleteElevateTask (line 283) | async function deleteElevateTask(): Promise { function revokeCorePermission (line 287) | async function revokeCorePermission(cores?: ('mihomo' | 'mihomo-alpha')[... function serviceStatus (line 291) | async function serviceStatus(): Promise< function testServiceConnection (line 297) | async function testServiceConnection(): Promise { function initService (line 301) | async function initService(): Promise { function installService (line 305) | async function installService(): Promise { function uninstallService (line 309) | async function uninstallService(): Promise { function startService (line 313) | async function startService(): Promise { function restartService (line 317) | async function restartService(): Promise { function stopService (line 321) | async function stopService(): Promise { function findSystemMihomo (line 325) | async function findSystemMihomo(): Promise { function getFilePath (line 329) | async function getFilePath(ext: string[]): Promise { function readTextFile (line 333) | async function readTextFile(filePath: string): Promise { function getRuntimeConfigStr (line 337) | async function getRuntimeConfigStr(): Promise { function getRawProfileStr (line 341) | async function getRawProfileStr(): Promise { function getCurrentProfileStr (line 345) | async function getCurrentProfileStr(): Promise { function getOverrideProfileStr (line 349) | async function getOverrideProfileStr(): Promise { function getRuntimeConfig (line 353) | async function getRuntimeConfig(): Promise { function checkUpdate (line 357) | async function checkUpdate(): Promise { function downloadAndInstallUpdate (line 361) | async function downloadAndInstallUpdate(version: string): Promise { function cancelUpdate (line 367) | async function cancelUpdate(): Promise { function getVersion (line 371) | async function getVersion(): Promise { function getPlatform (line 375) | async function getPlatform(): Promise { function openUWPTool (line 379) | async function openUWPTool(): Promise { function setupFirewall (line 383) | async function setupFirewall(): Promise { function getInterfaces (line 387) | async function getInterfaces(): Promise { function webdavRestore (line 395) | async function webdavRestore(filename: string): Promise { function listWebdavBackups (line 399) | async function listWebdavBackups(): Promise { function webdavDelete (line 403) | async function webdavDelete(filename: string): Promise { function setTitleBarOverlay (line 407) | async function setTitleBarOverlay(overlay: TitleBarOverlayOptions): Prom... function setAlwaysOnTop (line 411) | async function setAlwaysOnTop(alwaysOnTop: boolean): Promise { function isAlwaysOnTop (line 415) | async function isAlwaysOnTop(): Promise { function relaunchApp (line 419) | async function relaunchApp(): Promise { function quitWithoutCore (line 423) | async function quitWithoutCore(): Promise { function quitApp (line 427) | async function quitApp(): Promise { function notDialogQuit (line 431) | async function notDialogQuit(): Promise { function setNativeTheme (line 435) | async function setNativeTheme(theme: 'system' | 'light' | 'dark'): Promi... function getGistUrl (line 439) | async function getGistUrl(): Promise { function startSubStoreFrontendServer (line 443) | async function startSubStoreFrontendServer(): Promise { function stopSubStoreFrontendServer (line 447) | async function stopSubStoreFrontendServer(): Promise { function startSubStoreBackendServer (line 451) | async function startSubStoreBackendServer(): Promise { function stopSubStoreBackendServer (line 455) | async function stopSubStoreBackendServer(): Promise { function downloadSubStore (line 458) | async function downloadSubStore(): Promise { function subStorePort (line 462) | async function subStorePort(): Promise { function subStoreFrontendPort (line 466) | async function subStoreFrontendPort(): Promise { function subStoreSubs (line 470) | async function subStoreSubs(): Promise { function subStoreCollections (line 474) | async function subStoreCollections(): Promise { function showTrayIcon (line 478) | async function showTrayIcon(): Promise { function closeTrayIcon (line 482) | async function closeTrayIcon(): Promise { function setDockVisible (line 486) | async function setDockVisible(visible: boolean): Promise { function showMainWindow (line 490) | async function showMainWindow(): Promise { function closeMainWindow (line 494) | async function closeMainWindow(): Promise { function triggerMainWindow (line 498) | async function triggerMainWindow(): Promise { function showFloatingWindow (line 502) | async function showFloatingWindow(): Promise { function closeFloatingWindow (line 506) | async function closeFloatingWindow(): Promise { function showContextMenu (line 510) | async function showContextMenu(): Promise { function openFile (line 514) | async function openFile( function openDevTools (line 522) | async function openDevTools(): Promise { function resetAppConfig (line 526) | async function resetAppConfig(): Promise { function createHeapSnapshot (line 530) | async function createHeapSnapshot(): Promise { function getUserAgent (line 534) | async function getUserAgent(): Promise { function getAppName (line 538) | async function getAppName(appPath: string): Promise { function getImageDataURL (line 542) | async function getImageDataURL(url: string): Promise { function getIconDataURL (line 546) | async function getIconDataURL(appPath: string): Promise { function resolveThemes (line 550) | async function resolveThemes(): Promise<{ key: string; label: string; co... function fetchThemes (line 554) | async function fetchThemes(): Promise { function importThemes (line 558) | async function importThemes(files: string[]): Promise { function readTheme (line 562) | async function readTheme(theme: string): Promise { function writeTheme (line 566) | async function writeTheme(theme: string, css: string): Promise { function startNetworkDetection (line 570) | async function startNetworkDetection(): Promise { function stopNetworkDetection (line 574) | async function stopNetworkDetection(): Promise { function applyTheme (line 580) | async function applyTheme(theme: string): Promise { function registerShortcut (line 596) | async function registerShortcut( function copyEnv (line 606) | async function copyEnv( function alert (line 612) | async function alert(msg: T): Promise { FILE: src/renderer/src/utils/mihomo-log-store.ts type MihomoLogEntry (line 3) | type MihomoLogEntry = ControllerLog & { id: string; seq?: number } type MihomoIncomingLog (line 5) | type MihomoIncomingLog = ControllerLog & { id?: string; seq?: number } type MihomoLogListener (line 6) | type MihomoLogListener = (logs: MihomoLogEntry[]) => void function trimLogs (line 18) | function trimLogs(nextLogs: MihomoLogEntry[]): MihomoLogEntry[] { function notify (line 23) | function notify(): void { function flushPendingLogs (line 28) | function flushPendingLogs(): void { function scheduleFlush (line 37) | function scheduleFlush(): void { function createLogId (line 44) | function createLogId(log: MihomoIncomingLog): string { function normalizeLog (line 52) | function normalizeLog(log: MihomoIncomingLog): MihomoLogEntry { function isSameLog (line 62) | function isSameLog(left: MihomoLogEntry, right: MihomoLogEntry): boolean { function mergeLogs (line 72) | function mergeLogs(current: MihomoLogEntry[], incoming: MihomoIncomingLo... function initLogStore (line 108) | function initLogStore(): void { function getMihomoLogs (line 127) | function getMihomoLogs(): MihomoLogEntry[] { function subscribeMihomoLogs (line 132) | function subscribeMihomoLogs(listener: MihomoLogListener): () => void { function clearMihomoLogs (line 142) | function clearMihomoLogs(): void { function setMihomoLogMaxEntries (line 153) | function setMihomoLogMaxEntries(value: number): void { FILE: src/renderer/src/utils/validate.ts type ValidationResult (line 4) | type ValidationResult = { ok: boolean; error?: string } FILE: src/shared/types/app.d.ts type AppVersion (line 1) | interface AppVersion { type ISysProxyConfig (line 6) | interface ISysProxyConfig { type IHost (line 17) | interface IHost { type AppConfig (line 22) | interface AppConfig { type ProfileConfig (line 129) | interface ProfileConfig { type ProfileItem (line 134) | interface ProfileItem { type SubscriptionUserInfo (line 154) | interface SubscriptionUserInfo { type OverrideConfig (line 161) | interface OverrideConfig { type OverrideItem (line 165) | interface OverrideItem { type SubStoreSub (line 177) | interface SubStoreSub { FILE: src/shared/types/controller.d.ts type ControllerConfigs (line 2) | interface ControllerConfigs { type ControllerTunDetail (line 45) | interface ControllerTunDetail { type ControllerConnections (line 60) | interface ControllerConnections { type ControllerConnectionDetail (line 68) | interface ControllerConnectionDetail { type ControllerLog (line 109) | interface ControllerLog { type ControllerMemory (line 116) | interface ControllerMemory { type ControllerProxies (line 122) | interface ControllerProxies { type ControllerProxiesHistory (line 126) | interface ControllerProxiesHistory { type ControllerProxiesDetail (line 131) | interface ControllerProxiesDetail { type ControllerGroupDetail (line 149) | interface ControllerGroupDetail { type ControllerMixedGroup (line 172) | interface ControllerMixedGroup extends ControllerGroupDetail { type ControllerProxiesDelay (line 177) | interface ControllerProxiesDelay { type ControllerGroupDelay (line 183) | interface ControllerGroupDelay { type ControllerTraffic (line 187) | interface ControllerTraffic { type ControllerRules (line 193) | interface ControllerRules { type ControllerRulesDetail (line 197) | interface ControllerRulesDetail { type ControllerVersion (line 213) | interface ControllerVersion { type ControllerProxyProviders (line 219) | interface ControllerProxyProviders { type ControllerProxyProviderDetail (line 223) | interface ControllerProxyProviderDetail { type ControllerSubscriptionUserInfoUpper (line 234) | interface ControllerSubscriptionUserInfoUpper { type ControllerRuleProviders (line 242) | interface ControllerRuleProviders { type ControllerRuleProviderDetail (line 246) | interface ControllerRuleProviderDetail { FILE: src/shared/types/mihomo.d.ts type MihomoConfig (line 1) | interface MihomoConfig { type MihomoTunConfig (line 55) | interface MihomoTunConfig { type MihomoDNSConfig (line 87) | interface MihomoDNSConfig { type MihomoSnifferConfig (line 113) | interface MihomoSnifferConfig { type MihomoProfileConfig (line 136) | interface MihomoProfileConfig { type ProxyProviderConfig (line 141) | interface ProxyProviderConfig { FILE: src/shared/types/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 Priority (line 6) | type Priority = type MihomoGroupType (line 14) | type MihomoGroupType = 'Selector' | 'Fallback' | 'URLTest' | 'LoadBalanc... type MihomoProxyType (line 15) | type MihomoProxyType = type TunStack (line 44) | type TunStack = 'gvisor' | 'mixed' | 'system' type FindProcessMode (line 45) | type FindProcessMode = 'off' | 'strict' | 'always' type DnsMode (line 46) | type DnsMode = 'normal' | 'fake-ip' | 'redir-host' type FilterMode (line 47) | type FilterMode = 'blacklist' | 'whitelist' type NetworkInterfaceInfo (line 48) | type NetworkInterfaceInfo = os.NetworkInterfaceInfo type Fingerprints (line 49) | type Fingerprints =