From 48e9aea47e23f1e4df2aeb09f15ed47053dfacb4 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 20:56:28 +0200 Subject: [PATCH 01/30] add hardware video acceleration switch & improve settings ui --- src/main/index.ts | 12 ++-- .../components/settings/AutoStartToggle.tsx | 7 +- .../settings/NotificationBadgeToggle.tsx | 6 +- src/renderer/components/settings/Settings.tsx | 67 +++++++++++-------- .../settings/VesktopSettingsSwitch.tsx | 16 +++++ .../settings/WindowsTransparencyControls.tsx | 8 +-- src/renderer/components/settings/settings.css | 28 ++++++-- src/shared/settings.d.ts | 1 + 8 files changed, 98 insertions(+), 47 deletions(-) create mode 100644 src/renderer/components/settings/VesktopSettingsSwitch.tsx diff --git a/src/main/index.ts b/src/main/index.ts index 5a55f40..c8bd462 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -39,12 +39,14 @@ function init() { if (hardwareAcceleration === false) { app.disableHardwareAcceleration(); } else { - enabledFeatures.add("AcceleratedVideoEncoder"); - enabledFeatures.add("AcceleratedVideoDecoder"); + if (Settings.store.hardwareVideoAcceleration) { + enabledFeatures.add("AcceleratedVideoEncoder"); + enabledFeatures.add("AcceleratedVideoDecoder"); - if (isLinux) { - enabledFeatures.add("AcceleratedVideoDecodeLinuxGL"); - enabledFeatures.add("AcceleratedVideoDecodeLinuxZeroCopyGL"); + if (isLinux) { + enabledFeatures.add("AcceleratedVideoDecodeLinuxGL"); + enabledFeatures.add("AcceleratedVideoDecodeLinuxZeroCopyGL"); + } } } diff --git a/src/renderer/components/settings/AutoStartToggle.tsx b/src/renderer/components/settings/AutoStartToggle.tsx index 2fec7a6..3499170 100644 --- a/src/renderer/components/settings/AutoStartToggle.tsx +++ b/src/renderer/components/settings/AutoStartToggle.tsx @@ -4,15 +4,16 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { Switch, useState } from "@vencord/types/webpack/common"; +import { useState } from "@vencord/types/webpack/common"; import { SettingsComponent } from "./Settings"; +import { VesktopSettingsSwitch } from "./VesktopSettingsSwitch"; export const AutoStartToggle: SettingsComponent = () => { const [autoStartEnabled, setAutoStartEnabled] = useState(VesktopNative.autostart.isEnabled()); return ( - { await VesktopNative.autostart[v ? "enable" : "disable"](); @@ -21,6 +22,6 @@ export const AutoStartToggle: SettingsComponent = () => { note="Automatically start Vesktop on computer start-up" > Start With System - + ); }; diff --git a/src/renderer/components/settings/NotificationBadgeToggle.tsx b/src/renderer/components/settings/NotificationBadgeToggle.tsx index 598bfa7..efc5353 100644 --- a/src/renderer/components/settings/NotificationBadgeToggle.tsx +++ b/src/renderer/components/settings/NotificationBadgeToggle.tsx @@ -4,14 +4,14 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { Switch } from "@vencord/types/webpack/common"; import { setBadge } from "renderer/appBadge"; import { SettingsComponent } from "./Settings"; +import { VesktopSettingsSwitch } from "./VesktopSettingsSwitch"; export const NotificationBadgeToggle: SettingsComponent = ({ settings }) => { return ( - { settings.appBadge = v; @@ -21,6 +21,6 @@ export const NotificationBadgeToggle: SettingsComponent = ({ settings }) => { note="Show mention badge on the app icon" > Notification Badge - + ); }; diff --git a/src/renderer/components/settings/Settings.tsx b/src/renderer/components/settings/Settings.tsx index 7baae7c..24edb4f 100644 --- a/src/renderer/components/settings/Settings.tsx +++ b/src/renderer/components/settings/Settings.tsx @@ -7,7 +7,7 @@ import "./settings.css"; import { ErrorBoundary } from "@vencord/types/components"; -import { Forms, Switch, Text } from "@vencord/types/webpack/common"; +import { Forms, Text } from "@vencord/types/webpack/common"; import { ComponentType } from "react"; import { Settings, useSettings } from "renderer/settings"; import { isMac, isWindows } from "renderer/utils"; @@ -16,6 +16,7 @@ import { AutoStartToggle } from "./AutoStartToggle"; import { DeveloperOptionsButton } from "./DeveloperOptions"; import { DiscordBranchPicker } from "./DiscordBranchPicker"; import { NotificationBadgeToggle } from "./NotificationBadgeToggle"; +import { VesktopSettingsSwitch } from "./VesktopSettingsSwitch"; import { WindowsTransparencyControls } from "./WindowsTransparencyControls"; interface BooleanSetting { @@ -38,6 +39,14 @@ const SettingsOptions: Record> title: "Hardware Acceleration", description: "Enable hardware acceleration", defaultValue: true + }, + { + key: "hardwareVideoAcceleration", + title: "Video Hardware Acceleration", + description: + "Enable hardware video acceleration. This can improve performance of screenshare and video playback, but may cause graphical glitches and infinitely loading streams.", + defaultValue: false, + disabled: () => !Settings.store.hardwareAcceleration } ], "User Interface": [ @@ -132,32 +141,35 @@ const SettingsOptions: Record> function SettingsSections() { const Settings = useSettings(); - const sections = Object.entries(SettingsOptions).map(([title, settings]) => ( - - {settings.map(Setting => { - if (typeof Setting === "function") return ; + const sections = Object.entries(SettingsOptions).map(([title, settings], i, arr) => ( +
+ + {title} + - const { defaultValue, title, description, key, disabled, invisible } = Setting; - if (invisible?.()) return null; +
+ {settings.map(Setting => { + if (typeof Setting === "function") return ; - return ( - (Settings[key as any] = v)} - note={description} - disabled={disabled?.()} - key={key} - > - {title} - - ); - })} - + const { defaultValue, title, description, key, disabled, invisible } = Setting; + if (invisible?.()) return null; + + return ( + (Settings[key as any] = v)} + note={description} + disabled={disabled?.()} + key={key} + > + {title} + + ); + })} +
+ + {i < arr.length - 1 && } +
)); return <>{sections}; @@ -167,10 +179,11 @@ export default ErrorBoundary.wrap( function SettingsUI() { return ( - + {/* FIXME: Outdated type */} + {/* @ts-expect-error Outdated type */} + Vesktop Settings - ); diff --git a/src/renderer/components/settings/VesktopSettingsSwitch.tsx b/src/renderer/components/settings/VesktopSettingsSwitch.tsx new file mode 100644 index 0000000..bd1c2fb --- /dev/null +++ b/src/renderer/components/settings/VesktopSettingsSwitch.tsx @@ -0,0 +1,16 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { Switch } from "@vencord/types/webpack/common"; +import { ComponentProps } from "react"; + +export function VesktopSettingsSwitch(props: ComponentProps) { + return ( + + {props.children} + + ); +} diff --git a/src/renderer/components/settings/WindowsTransparencyControls.tsx b/src/renderer/components/settings/WindowsTransparencyControls.tsx index 14d3f8e..3e864a7 100644 --- a/src/renderer/components/settings/WindowsTransparencyControls.tsx +++ b/src/renderer/components/settings/WindowsTransparencyControls.tsx @@ -13,8 +13,8 @@ export const WindowsTransparencyControls: SettingsComponent = ({ settings }) => if (!VesktopNative.app.supportsWindowsTransparency()) return null; return ( - <> - Transparency Options +
+ Transparency Options Requires a full restart. You will need a theme that supports transparency for this to work. @@ -42,8 +42,6 @@ export const WindowsTransparencyControls: SettingsComponent = ({ settings }) => isSelected={v => v === settings.transparencyOption} serialize={s => s} /> - - - +
); }; diff --git a/src/renderer/components/settings/settings.css b/src/renderer/components/settings/settings.css index 294ecec..5ae9887 100644 --- a/src/renderer/components/settings/settings.css +++ b/src/renderer/components/settings/settings.css @@ -5,10 +5,30 @@ margin-top: 0.5em; } -.vcd-settings-section { - margin-top: 1.5rem; +.vcd-settings-title { + margin-bottom: 32px; } -.vcd-settings-title { - margin-bottom: 0.5rem; +.vcd-settings-category { + display: flex; + flex-direction: column; +} + +.vcd-settings-category-title { + margin-bottom: 16px; +} + +.vcd-settings-category-content { + display: flex; + flex-direction: column; + gap: 24px; +} + +.vcd-settings-category-divider { + margin-top: 32px; + margin-bottom: 32px; +} + +.vcd-settings-switch { + margin-bottom: 0; } \ No newline at end of file diff --git a/src/shared/settings.d.ts b/src/shared/settings.d.ts index 0279aeb..01c26e5 100644 --- a/src/shared/settings.d.ts +++ b/src/shared/settings.d.ts @@ -16,6 +16,7 @@ export interface Settings { enableMenu?: boolean; disableSmoothScroll?: boolean; hardwareAcceleration?: boolean; + hardwareVideoAcceleration?: boolean; arRPC?: boolean; appBadge?: boolean; disableMinSize?: boolean; From fcb61c8f42e97f5ae33e2f7253235a7aeff6f80f Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 21:21:57 +0200 Subject: [PATCH 02/30] improve handling of no hardware acceleration --- src/main/index.ts | 25 ++++++++++++++++++++----- src/main/ipc.ts | 2 ++ src/preload/VesktopNative.ts | 3 ++- src/renderer/patches/windowMethods.tsx | 4 ++++ src/shared/IpcEvents.ts | 1 + 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index c8bd462..37fd471 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -28,18 +28,23 @@ process.env.VENCORD_USER_DATA_DIR = DATA_DIR; const isLinux = process.platform === "linux"; +export let enableHardwareAcceleration = true; + function init() { app.setAsDefaultProtocolClient("discord"); - const { disableSmoothScroll, hardwareAcceleration } = Settings.store; + const { disableSmoothScroll, hardwareAcceleration, hardwareVideoAcceleration } = Settings.store; const enabledFeatures = new Set(app.commandLine.getSwitchValue("enable-features").split(",")); const disabledFeatures = new Set(app.commandLine.getSwitchValue("disable-features").split(",")); + app.commandLine.removeSwitch("enable-features"); + app.commandLine.removeSwitch("disable-features"); - if (hardwareAcceleration === false) { + if (hardwareAcceleration === false || process.argv.includes("--disable-gpu")) { + enableHardwareAcceleration = false; app.disableHardwareAcceleration(); } else { - if (Settings.store.hardwareVideoAcceleration) { + if (hardwareVideoAcceleration) { enabledFeatures.add("AcceleratedVideoEncoder"); enabledFeatures.add("AcceleratedVideoDecoder"); @@ -85,8 +90,18 @@ function init() { disabledFeatures.forEach(feat => enabledFeatures.delete(feat)); - app.commandLine.appendSwitch("enable-features", [...enabledFeatures].filter(Boolean).join(",")); - app.commandLine.appendSwitch("disable-features", [...disabledFeatures].filter(Boolean).join(",")); + const enabledFeaturesArray = enabledFeatures.values().filter(Boolean).toArray(); + const disabledFeaturesArray = disabledFeatures.values().filter(Boolean).toArray(); + + if (enabledFeaturesArray.length) { + app.commandLine.appendSwitch("enable-features", enabledFeaturesArray.join(",")); + console.log("Enabled Chromium features:", enabledFeaturesArray.join(", ")); + } + + if (disabledFeaturesArray.length) { + app.commandLine.appendSwitch("disable-features", disabledFeaturesArray.join(",")); + console.log("Disabled Chromium features:", disabledFeaturesArray.join(", ")); + } // In the Flatpak on SteamOS the theme is detected as light, but SteamOS only has a dark mode, so we just override it if (isDeckGameMode) nativeTheme.themeSource = "dark"; diff --git a/src/main/ipc.ts b/src/main/ipc.ts index fa0fe33..94eb671 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -20,6 +20,7 @@ import { } from "electron"; import { mkdirSync, readFileSync, watch } from "fs"; import { open, readFile } from "fs/promises"; +import { enableHardwareAcceleration } from "main"; import { release } from "os"; import { join } from "path"; import { debounce } from "shared/utils/debounce"; @@ -45,6 +46,7 @@ handleSync(IpcEvents.GET_RENDERER_CSS_FILE, () => join(__dirname, "renderer.css" handleSync(IpcEvents.GET_SETTINGS, () => Settings.plain); handleSync(IpcEvents.GET_VERSION, () => app.getVersion()); +handleSync(IpcEvents.GET_ENABLE_HARDWARE_ACCELERATION, () => enableHardwareAcceleration); handleSync( IpcEvents.SUPPORTS_WINDOWS_TRANSPARENCY, diff --git a/src/preload/VesktopNative.ts b/src/preload/VesktopNative.ts index ec993c1..8aee1e7 100644 --- a/src/preload/VesktopNative.ts +++ b/src/preload/VesktopNative.ts @@ -25,7 +25,8 @@ export const VesktopNative = { relaunch: () => invoke(IpcEvents.RELAUNCH), getVersion: () => sendSync(IpcEvents.GET_VERSION), setBadgeCount: (count: number) => invoke(IpcEvents.SET_BADGE_COUNT, count), - supportsWindowsTransparency: () => sendSync(IpcEvents.SUPPORTS_WINDOWS_TRANSPARENCY) + supportsWindowsTransparency: () => sendSync(IpcEvents.SUPPORTS_WINDOWS_TRANSPARENCY), + getEnableHardwareAcceleration: () => sendSync(IpcEvents.GET_ENABLE_HARDWARE_ACCELERATION) }, autostart: { isEnabled: () => sendSync(IpcEvents.AUTOSTART_ENABLED), diff --git a/src/renderer/patches/windowMethods.tsx b/src/renderer/patches/windowMethods.tsx index f58996f..5d67934 100644 --- a/src/renderer/patches/windowMethods.tsx +++ b/src/renderer/patches/windowMethods.tsx @@ -21,6 +21,10 @@ addPatch({ // eslint-disable-next-line no-useless-escape match: /(focus(\(\i\)){).{0,150}?\.focus\(\i,\i\)/, replace: "$1VesktopNative.win.focus$2" + }, + { + match: /,getEnableHardwareAcceleration/, + replace: "$&:VesktopNative.app.getEnableHardwareAcceleration,_oldGetEnableHardwareAcceleration" } ] } diff --git a/src/shared/IpcEvents.ts b/src/shared/IpcEvents.ts index e2da5db..faae369 100644 --- a/src/shared/IpcEvents.ts +++ b/src/shared/IpcEvents.ts @@ -12,6 +12,7 @@ export const enum IpcEvents { GET_VERSION = "VCD_GET_VERSION", SUPPORTS_WINDOWS_TRANSPARENCY = "VCD_SUPPORTS_WINDOWS_TRANSPARENCY", + GET_ENABLE_HARDWARE_ACCELERATION = "VCD_GET_ENABLE_HARDWARE_ACCELERATION", RELAUNCH = "VCD_RELAUNCH", CLOSE = "VCD_CLOSE", From 83104e3625c2243c0b48b307462ba4dbdede9e7b Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 21:34:31 +0200 Subject: [PATCH 03/30] fix discord titlebar buttons missing --- src/renderer/patches/windowsTitleBar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/patches/windowsTitleBar.tsx b/src/renderer/patches/windowsTitleBar.tsx index 1b9e180..6156a73 100644 --- a/src/renderer/patches/windowsTitleBar.tsx +++ b/src/renderer/patches/windowsTitleBar.tsx @@ -24,7 +24,7 @@ if (Settings.store.customTitleBar) }, // Visual Refresh { - find: '"data-windows":', + find: ".systemBar,", replacement: [ { // TODO: Fix eslint rule From 524f8ff2776fa70c721c960cad3ece28b84c5ef2 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 21:39:56 +0200 Subject: [PATCH 04/30] ipcCommands: check if mainWin is alive --- src/main/ipcCommands.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/ipcCommands.ts b/src/main/ipcCommands.ts index 51332b4..8731b8d 100644 --- a/src/main/ipcCommands.ts +++ b/src/main/ipcCommands.ts @@ -31,6 +31,11 @@ export interface IpcResponse { * You must add a handler for the message in the renderer process. */ export function sendRendererCommand(message: string, data?: any) { + if (mainWin.isDestroyed()) { + console.warn("Main window is destroyed, cannot send IPC command:", message); + return Promise.reject(new Error("Main window is destroyed")); + } + const nonce = randomUUID(); const promise = new Promise((resolve, reject) => { From a52ee1dbb6d8c29b59f2c65bfa212756bf99e5ac Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 21:45:17 +0200 Subject: [PATCH 05/30] bump dependencies --- package.json | 14 +- pnpm-lock.yaml | 692 ++++++++++++++++++++++++------------------------- 2 files changed, 343 insertions(+), 363 deletions(-) diff --git a/package.json b/package.json index 314c1ad..d06b363 100644 --- a/package.json +++ b/package.json @@ -34,18 +34,18 @@ }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@stylistic/eslint-plugin": "^4.2.0", - "@types/node": "^22.15.18", + "@stylistic/eslint-plugin": "^4.4.1", + "@types/node": "^22.15.30", "@types/react": "18.3.1", "@vencord/types": "^1.11.5", "dotenv": "^16.5.0", - "electron": "^36.2.1", + "electron": "^36.4.0", "electron-builder": "^26.0.12", - "esbuild": "^0.25.4", - "eslint": "^9.27.0", + "esbuild": "^0.25.5", + "eslint": "^9.28.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-path-alias": "^2.1.0", - "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-prettier": "^5.4.1", "eslint-plugin-simple-header": "^1.2.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^4.1.4", @@ -54,7 +54,7 @@ "tsx": "^4.19.4", "type-fest": "^4.41.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.32.1", + "typescript-eslint": "^8.33.1", "xml-formatter": "^3.6.6" }, "packageManager": "pnpm@10.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44880d3..2c5ffe1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,11 +24,11 @@ importers: specifier: ^2.1.2 version: 2.1.2 '@stylistic/eslint-plugin': - specifier: ^4.2.0 - version: 4.2.0(eslint@9.27.0)(typescript@5.8.3) + specifier: ^4.4.1 + version: 4.4.1(eslint@9.28.0)(typescript@5.8.3) '@types/node': - specifier: ^22.15.18 - version: 22.15.18 + specifier: ^22.15.30 + version: 22.15.30 '@types/react': specifier: 18.3.1 version: 18.3.1 @@ -39,35 +39,35 @@ importers: specifier: ^16.5.0 version: 16.5.0 electron: - specifier: ^36.2.1 - version: 36.2.1 + specifier: ^36.4.0 + version: 36.4.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) esbuild: - specifier: ^0.25.4 - version: 0.25.4 + specifier: ^0.25.5 + version: 0.25.5 eslint: - specifier: ^9.27.0 - version: 9.27.0 + specifier: ^9.28.0 + version: 9.28.0 eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)) eslint-plugin-path-alias: specifier: ^2.1.0 - version: 2.1.0(eslint@9.27.0) + version: 2.1.0(eslint@9.28.0) eslint-plugin-prettier: - specifier: ^5.4.0 - version: 5.4.0(eslint@9.27.0)(prettier@3.5.3) + specifier: ^5.4.1 + version: 5.4.1(eslint@9.28.0)(prettier@3.5.3) eslint-plugin-simple-header: specifier: ^1.2.2 - version: 1.2.2(eslint@9.27.0) + version: 1.2.2(eslint@9.28.0) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.27.0) + version: 12.1.1(eslint@9.28.0) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -84,8 +84,8 @@ importers: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: - specifier: ^8.32.1 - version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) + specifier: ^8.33.1 + version: 8.33.1(eslint@9.28.0)(typescript@5.8.3) xml-formatter: specifier: ^3.6.6 version: 3.6.6 @@ -145,162 +145,156 @@ packages: resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} engines: {node: '>=16.4'} - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.6.1': - resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -327,8 +321,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.27.0': - resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + '@eslint/js@9.28.0': + resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -402,8 +396,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.4': - resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + '@pkgr/core@0.2.7': + resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@rtsao/scc@1.1.0': @@ -413,8 +407,8 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@stylistic/eslint-plugin@4.2.0': - resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} + '@stylistic/eslint-plugin@4.4.1': + resolution: {integrity: sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -433,8 +427,8 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/fs-extra@9.0.13': resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} @@ -457,8 +451,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.18': - resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} + '@types/node@22.15.30': + resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -484,76 +478,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.32.1': - resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + '@typescript-eslint/eslint-plugin@8.33.1': + resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.33.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.32.1': - resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + '@typescript-eslint/parser@8.33.1': + resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.29.0': - resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + '@typescript-eslint/project-service@8.33.1': + resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.33.1': + resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.32.1': - resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + '@typescript-eslint/tsconfig-utils@8.33.1': + resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.32.1': - resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + '@typescript-eslint/type-utils@8.33.1': + resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.29.0': - resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + '@typescript-eslint/types@8.33.1': + resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.32.1': - resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.29.0': - resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + '@typescript-eslint/typescript-estree@8.33.1': + resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.32.1': - resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@8.29.0': - resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + '@typescript-eslint/utils@8.33.1': + resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.32.1': - resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/visitor-keys@8.29.0': - resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.32.1': - resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + '@typescript-eslint/visitor-keys@8.33.1': + resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vencord/types@1.11.5': @@ -576,8 +557,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -676,8 +657,8 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-unique@0.3.2: @@ -1120,8 +1101,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.2.1: - resolution: {integrity: sha512-mm1Y+Ms46xcOTA69h8hpqfX392HfV4lga9aEkYkd/Syx1JBStvcACOIouCgGrnZpxNZPVS1jM8NTcMkNjuK6BQ==} + electron@36.4.0: + resolution: {integrity: sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1144,8 +1125,8 @@ packages: err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -1175,8 +1156,8 @@ packages: es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} engines: {node: '>=18'} hasBin: true @@ -1233,8 +1214,8 @@ packages: peerDependencies: eslint: ^8.0.0 - eslint-plugin-prettier@5.4.0: - resolution: {integrity: sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==} + eslint-plugin-prettier@5.4.1: + resolution: {integrity: sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1278,8 +1259,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.27.0: - resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + eslint@9.28.0: + resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1409,6 +1390,10 @@ packages: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} + form-data@4.0.3: + resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + engines: {node: '>= 6'} + fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} @@ -1637,8 +1622,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.4: - resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} import-fresh@3.3.1: @@ -1768,6 +1753,10 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -2603,6 +2592,10 @@ packages: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2661,8 +2654,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.11.4: - resolution: {integrity: sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==} + synckit@0.11.8: + resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} engines: {node: ^14.18.0 || >=16.0.0} tar-stream@2.2.0: @@ -2713,9 +2706,6 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.19.4: resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} engines: {node: '>=18.0.0'} @@ -2749,8 +2739,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.32.1: - resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + typescript-eslint@8.33.1: + resolution: {integrity: sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2956,7 +2946,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3034,89 +3024,84 @@ snapshots: transitivePeerDependencies: - supports-color - '@esbuild/aix-ppc64@0.25.4': + '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/android-arm64@0.25.4': + '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-arm@0.25.4': + '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/android-x64@0.25.4': + '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/darwin-arm64@0.25.4': + '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/darwin-x64@0.25.4': + '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.25.4': + '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.25.4': + '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/linux-arm64@0.25.4': + '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-arm@0.25.4': + '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-ia32@0.25.4': + '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-loong64@0.25.4': + '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-mips64el@0.25.4': + '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-ppc64@0.25.4': + '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-riscv64@0.25.4': + '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-s390x@0.25.4': + '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/linux-x64@0.25.4': + '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.25.4': + '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/netbsd-x64@0.25.4': + '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.25.4': + '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.25.4': + '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/sunos-x64@0.25.4': + '@esbuild/sunos-x64@0.25.5': optional: true - '@esbuild/win32-arm64@0.25.4': + '@esbuild/win32-arm64@0.25.5': optional: true - '@esbuild/win32-ia32@0.25.4': + '@esbuild/win32-ia32@0.25.5': optional: true - '@esbuild/win32-x64@0.25.4': + '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.6.1(eslint@9.27.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': dependencies: - eslint: 9.27.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': - dependencies: - eslint: 9.27.0 + eslint: 9.28.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -3149,7 +3134,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.27.0': {} + '@eslint/js@9.28.0': {} '@eslint/object-schema@2.1.6': {} @@ -3212,7 +3197,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@npmcli/move-file@2.0.1': dependencies: @@ -3222,16 +3207,16 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.4': {} + '@pkgr/core@0.2.7': {} '@rtsao/scc@1.1.0': {} '@sindresorhus/is@4.6.0': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.27.0)(typescript@5.8.3)': + '@stylistic/eslint-plugin@4.4.1(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.29.0(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -3250,18 +3235,18 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.15.18 + '@types/node': 22.15.30 '@types/responselike': 1.0.3 '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 '@types/http-cache-semantics@4.0.4': {} @@ -3271,19 +3256,19 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 '@types/lodash@4.17.15': {} '@types/ms@2.1.0': {} - '@types/node@22.15.18': + '@types/node@22.15.30': dependencies: undici-types: 6.21.0 '@types/plist@3.0.5': dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 xmlbuilder: 15.1.1 optional: true @@ -3305,88 +3290,82 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 '@types/verror@1.10.11': optional: true '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 optional: true - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0 + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.33.1 + eslint: 9.28.0 graphemer: 1.4.0 - ignore: 7.0.4 + ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.33.1 debug: 4.4.1 - eslint: 9.27.0 + eslint: 9.28.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.29.0': + '@typescript-eslint/project-service@8.33.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 - - '@typescript-eslint/scope-manager@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 - - '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 debug: 4.4.1 - eslint: 9.27.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.33.1': + dependencies: + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/visitor-keys': 8.33.1 + + '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.28.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/types@8.33.1': {} - '@typescript-eslint/types@8.32.1': {} - - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 + '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/visitor-keys': 8.33.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3397,42 +3376,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.33.1(eslint@9.28.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.27.0) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - eslint: 9.27.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) + eslint: 9.28.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': + '@typescript-eslint/visitor-keys@8.33.1': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.27.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.29.0': - dependencies: - '@typescript-eslint/types': 8.29.0 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/types': 8.33.1 eslint-visitor-keys: 4.2.0 '@vencord/types@1.11.5': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.15.18 + '@types/node': 22.15.30 '@types/react': 18.3.1 '@types/react-dom': 18.3.1 discord-types: 1.3.26 @@ -3452,15 +3415,15 @@ snapshots: abbrev@1.1.1: {} - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn@8.14.1: {} + acorn@8.15.0: {} agent-base@6.0.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -3522,7 +3485,7 @@ snapshots: ejs: 3.1.10 electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) electron-publish: 25.1.7 - form-data: 4.0.2 + form-data: 4.0.3 fs-extra: 10.1.0 hosted-git-info: 4.1.0 is-ci: 3.0.1 @@ -3635,14 +3598,16 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.8: + array-includes@3.1.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 + math-intrinsics: 1.1.0 array-unique@0.3.2: {} @@ -3651,7 +3616,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3660,14 +3625,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: @@ -3675,7 +3640,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -4235,10 +4200,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.2.1: + electron@36.4.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.15.18 + '@types/node': 22.15.30 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -4260,7 +4225,7 @@ snapshots: err-code@2.0.3: {} - es-abstract@1.23.9: + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -4289,7 +4254,9 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 + is-negative-zero: 2.0.3 is-regex: 1.2.1 + is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 @@ -4304,6 +4271,7 @@ snapshots: safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -4342,41 +4310,41 @@ snapshots: es6-error@4.1.1: optional: true - esbuild@0.25.4: + esbuild@0.25.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -4386,28 +4354,28 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.27.0 + eslint: 9.28.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4419,41 +4387,41 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-path-alias@2.1.0(eslint@9.27.0): + eslint-plugin-path-alias@2.1.0(eslint@9.28.0): dependencies: - eslint: 9.27.0 + eslint: 9.28.0 find-pkg: 2.0.0 get-tsconfig: 4.10.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.4.0(eslint@9.27.0)(prettier@3.5.3): + eslint-plugin-prettier@5.4.1(eslint@9.28.0)(prettier@3.5.3): dependencies: - eslint: 9.27.0 + eslint: 9.28.0 prettier: 3.5.3 prettier-linter-helpers: 1.0.0 - synckit: 0.11.4 + synckit: 0.11.8 - eslint-plugin-simple-header@1.2.2(eslint@9.27.0): + eslint-plugin-simple-header@1.2.2(eslint@9.28.0): dependencies: - eslint: 9.27.0 + eslint: 9.28.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.27.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.28.0): dependencies: - eslint: 9.27.0 + eslint: 9.28.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0): dependencies: - eslint: 9.27.0 + eslint: 9.28.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) eslint-scope@8.3.0: dependencies: @@ -4464,20 +4432,20 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.27.0: + eslint@9.28.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.27.0 + '@eslint/js': 9.28.0 '@eslint/plugin-kit': 0.3.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 @@ -4506,8 +4474,8 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.0 esquery@1.6.0: @@ -4629,6 +4597,14 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 + form-data@4.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + fragment-cache@0.2.1: dependencies: map-cache: 0.2.2 @@ -4871,7 +4847,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4890,7 +4866,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4919,7 +4895,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.4: {} + ignore@7.0.5: {} import-fresh@3.3.1: dependencies: @@ -5047,6 +5023,8 @@ snapshots: is-map@2.0.3: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -5456,14 +5434,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 object.pick@1.3.0: dependencies: @@ -5642,7 +5620,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -5870,7 +5848,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -5911,7 +5889,7 @@ snapshots: standalone-electron-types@34.2.0: dependencies: - '@types/node': 22.15.18 + '@types/node': 22.15.30 stat-mode@1.0.0: {} @@ -5920,6 +5898,11 @@ snapshots: define-property: 0.2.5 object-copy: 0.1.0 + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5938,7 +5921,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -5990,10 +5973,9 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.11.4: + synckit@0.11.8: dependencies: - '@pkgr/core': 0.2.4 - tslib: 2.8.1 + '@pkgr/core': 0.2.7 tar-stream@2.2.0: dependencies: @@ -6059,11 +6041,9 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.8.1: {} - tsx@4.19.4: dependencies: - esbuild: 0.25.4 + esbuild: 0.25.5 get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -6110,12 +6090,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.32.1(eslint@9.27.0)(typescript@5.8.3): + typescript-eslint@8.33.1(eslint@9.28.0)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) - eslint: 9.27.0 + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + eslint: 9.28.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color From dad306a4b54155d22f9c9ff098023a84583a8982 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 8 Jun 2025 21:46:34 +0200 Subject: [PATCH 06/30] bump to v1.5.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d06b363..ca7cae3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vesktop", - "version": "1.5.6", + "version": "1.5.7", "private": true, "description": "Vesktop is a custom Discord desktop app", "keywords": [], From 0a856b26dafccb3c5a953c7c4adbdc09dbc0d70b Mon Sep 17 00:00:00 2001 From: Vending Machine Date: Sun, 8 Jun 2025 22:04:59 +0200 Subject: [PATCH 07/30] Update meta.yml --- .github/workflows/meta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 83d70a4..b27a864 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -37,6 +37,6 @@ jobs: git add meta/dev.vencord.Vesktop.metainfo.xml git commit -m "metainfo: add entry for ${{ github.event.release.tag_name }}" - git push + git push origin HEAD:main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f123f5fc3c855ef58ecdc2189aecec2fc3f8097a Mon Sep 17 00:00:00 2001 From: Vending Machine Date: Sun, 8 Jun 2025 22:07:07 +0200 Subject: [PATCH 08/30] Update dev.vencord.Vesktop.metainfo.xml --- meta/dev.vencord.Vesktop.metainfo.xml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml index 2141f87..996297e 100644 --- a/meta/dev.vencord.Vesktop.metainfo.xml +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -28,6 +28,23 @@ + + https://github.com/Vencord/Vesktop/releases/tag/v1.5.7 + +

What's Changed

+
    +
  • Starting a screenshare on Windows will no longer mute system audio
  • +
  • Fixed showing "Invalid URL" errors in some edge cases (spotty network)
  • +
  • Now respects your Autogain preference
  • +
  • Improved the flow for linking third party accounts
  • +
  • Fixed issue that would cause the AppImage to have no icon and be unpinnable
  • +
  • Added the ability to screenshare with stereo audio
  • +
  • Added Video Hardware Acceleration switch - Used to always be enabled. Now it is opt-in (disabled by default) to fix graphical glitches that were affecting many users
  • +
  • Fixed Discord titlebar buttons
  • +
  • Fixed "Object has been destroyed" error in some edge cases
  • +
+
+
https://github.com/Vencord/Vesktop/releases/tag/v1.5.6 @@ -278,4 +295,4 @@ Privacy Mod - \ No newline at end of file + From 83ad4970e5fbba7130efa20f660465b44500b9f1 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Mon, 9 Jun 2025 01:36:05 +0200 Subject: [PATCH 09/30] fix Video HWA wrongly being disabled if HWA setting was never changed --- src/renderer/components/settings/Settings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/settings/Settings.tsx b/src/renderer/components/settings/Settings.tsx index 24edb4f..3054e3c 100644 --- a/src/renderer/components/settings/Settings.tsx +++ b/src/renderer/components/settings/Settings.tsx @@ -46,7 +46,7 @@ const SettingsOptions: Record> description: "Enable hardware video acceleration. This can improve performance of screenshare and video playback, but may cause graphical glitches and infinitely loading streams.", defaultValue: false, - disabled: () => !Settings.store.hardwareAcceleration + disabled: () => Settings.store.hardwareAcceleration !== false } ], "User Interface": [ From a2dade914035bf33025cd30ee58016c124be5907 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Mon, 9 Jun 2025 01:36:45 +0200 Subject: [PATCH 10/30] i am very stupid --- src/renderer/components/settings/Settings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/components/settings/Settings.tsx b/src/renderer/components/settings/Settings.tsx index 3054e3c..45e0a22 100644 --- a/src/renderer/components/settings/Settings.tsx +++ b/src/renderer/components/settings/Settings.tsx @@ -46,7 +46,7 @@ const SettingsOptions: Record> description: "Enable hardware video acceleration. This can improve performance of screenshare and video playback, but may cause graphical glitches and infinitely loading streams.", defaultValue: false, - disabled: () => Settings.store.hardwareAcceleration !== false + disabled: () => Settings.store.hardwareAcceleration === false } ], "User Interface": [ From f98309c7b744ab0a6b129824eec9cc2f9f2d48e9 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Tue, 10 Jun 2025 17:16:26 +0200 Subject: [PATCH 11/30] fix random logouts (Discord shitcode moment) --- src/main/mainWindow.ts | 10 ++++++ src/preload/VesktopNative.ts | 12 ++++++- src/renderer/patches/allowDevToolsKeybind.ts | 19 ----------- src/renderer/patches/devtoolsFixes.ts | 36 ++++++++++++++++++++ src/shared/IpcEvents.ts | 5 ++- 5 files changed, 61 insertions(+), 21 deletions(-) delete mode 100644 src/renderer/patches/allowDevToolsKeybind.ts create mode 100644 src/renderer/patches/devtoolsFixes.ts diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 14f7561..762d39b 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -388,6 +388,15 @@ function initSpellCheck(win: BrowserWindow) { initSpellCheckLanguages(win, Settings.store.spellCheckLanguages); } +function initDevtoolsListeners(win: BrowserWindow) { + win.webContents.on("devtools-opened", () => { + win.webContents.send(IpcEvents.DEVTOOLS_OPENED); + }); + win.webContents.on("devtools-closed", () => { + win.webContents.send(IpcEvents.DEVTOOLS_CLOSED); + }); +} + function initStaticTitle(win: BrowserWindow) { const listener = (e: { preventDefault: Function }) => e.preventDefault(); @@ -473,6 +482,7 @@ function createMainWindow() { makeLinksOpenExternally(win); initSettingsListeners(win); initSpellCheck(win); + initDevtoolsListeners(win); initStaticTitle(win); win.webContents.setUserAgent(BrowserUserAgent); diff --git a/src/preload/VesktopNative.ts b/src/preload/VesktopNative.ts index 8aee1e7..1525965 100644 --- a/src/preload/VesktopNative.ts +++ b/src/preload/VesktopNative.ts @@ -20,6 +20,12 @@ ipcRenderer.on(IpcEvents.SPELLCHECK_RESULT, (_, w: string, s: string[]) => { spellCheckCallbacks.forEach(cb => cb(w, s)); }); +let onDevtoolsOpen = () => {}; +let onDevtoolsClose = () => {}; + +ipcRenderer.on(IpcEvents.DEVTOOLS_OPENED, () => onDevtoolsOpen()); +ipcRenderer.on(IpcEvents.DEVTOOLS_CLOSED, () => onDevtoolsClose()); + export const VesktopNative = { app: { relaunch: () => invoke(IpcEvents.RELAUNCH), @@ -57,7 +63,11 @@ export const VesktopNative = { focus: () => invoke(IpcEvents.FOCUS), close: (key?: string) => invoke(IpcEvents.CLOSE, key), minimize: (key?: string) => invoke(IpcEvents.MINIMIZE, key), - maximize: (key?: string) => invoke(IpcEvents.MAXIMIZE, key) + maximize: (key?: string) => invoke(IpcEvents.MAXIMIZE, key), + setDevtoolsCallbacks: (onOpen: () => void, onClose: () => void) => { + onDevtoolsOpen = onOpen; + onDevtoolsClose = onClose; + } }, capturer: { getLargeThumbnail: (id: string) => invoke(IpcEvents.CAPTURER_GET_LARGE_THUMBNAIL, id) diff --git a/src/renderer/patches/allowDevToolsKeybind.ts b/src/renderer/patches/allowDevToolsKeybind.ts deleted file mode 100644 index 59698e2..0000000 --- a/src/renderer/patches/allowDevToolsKeybind.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Vesktop, a desktop app aiming to give you a snappier Discord Experience - * Copyright (c) 2025 Vendicated and Vesktop contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -import { addPatch } from "./shared"; - -addPatch({ - patches: [ - { - find: '"mod+alt+i"', - replacement: { - match: /"discord\.com"===location\.host/, - replace: "false" - } - } - ] -}); diff --git a/src/renderer/patches/devtoolsFixes.ts b/src/renderer/patches/devtoolsFixes.ts new file mode 100644 index 0000000..59fb853 --- /dev/null +++ b/src/renderer/patches/devtoolsFixes.ts @@ -0,0 +1,36 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { addPatch } from "./shared"; + +addPatch({ + patches: [ + // Discord Web blocks the devtools keybin on mac specifically, disable that + { + find: '"mod+alt+i"', + replacement: { + match: /"discord\.com"===location\.host/, + replace: "false" + } + }, + { + find: ".setDevtoolsCallbacks(", + group: true, + replacement: [ + { + // eslint-disable-next-line no-useless-escape + match: /if\(null!=(\i)\)(?=.{0,50}\1\.window\.setDevtoolsCallbacks)/, + replace: "if(true)" + }, + { + // eslint-disable-next-line no-useless-escape + match: /\b\i\.window\b/g, + replace: "VesktopNative.win" + } + ] + } + ] +}); diff --git a/src/shared/IpcEvents.ts b/src/shared/IpcEvents.ts index faae369..1097989 100644 --- a/src/shared/IpcEvents.ts +++ b/src/shared/IpcEvents.ts @@ -56,7 +56,10 @@ export const enum IpcEvents { DEBUG_LAUNCH_GPU = "VCD_DEBUG_LAUNCH_GPU", DEBUG_LAUNCH_WEBRTC_INTERNALS = "VCD_DEBUG_LAUNCH_WEBRTC", - IPC_COMMAND = "VCD_IPC_COMMAND" + IPC_COMMAND = "VCD_IPC_COMMAND", + + DEVTOOLS_OPENED = "VCD_DEVTOOLS_OPENED", + DEVTOOLS_CLOSED = "VCD_DEVTOOLS_CLOSED" } export const enum IpcCommands { From 6950e0b03ac81b5d38593f5f5bb3d9c136958e7e Mon Sep 17 00:00:00 2001 From: Vendicated Date: Tue, 10 Jun 2025 17:22:30 +0200 Subject: [PATCH 12/30] add comment explaining the patch --- src/renderer/patches/devtoolsFixes.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/renderer/patches/devtoolsFixes.ts b/src/renderer/patches/devtoolsFixes.ts index 59fb853..1881329 100644 --- a/src/renderer/patches/devtoolsFixes.ts +++ b/src/renderer/patches/devtoolsFixes.ts @@ -16,6 +16,11 @@ addPatch({ replace: "false" } }, + + // Discord Web uses an incredibly broken devtools detector with false positives. + // They "hide" (aka remove from storage) your token if it "detects" open devtools. + // Due to the false positives, this leads to random logouts. + // Patch their devtools detection to use proper Electron APIs instead to fix the false positives { find: ".setDevtoolsCallbacks(", group: true, @@ -27,8 +32,8 @@ addPatch({ }, { // eslint-disable-next-line no-useless-escape - match: /\b\i\.window\b/g, - replace: "VesktopNative.win" + match: /\b\i\.window\.setDevtoolsCallbacks/g, + replace: "VesktopNative.win.setDevtoolsCallbacks" } ] } From 3cd4e94762a9c039f66ac3ab9e049e2715cc4dcf Mon Sep 17 00:00:00 2001 From: Cookie <52550063+Covkie@users.noreply.github.com> Date: Fri, 20 Jun 2025 13:29:13 -0400 Subject: [PATCH 13/30] fix spellcheck (#1163) --- src/renderer/patches/spellCheck.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/patches/spellCheck.tsx b/src/renderer/patches/spellCheck.tsx index 5396b49..89b8868 100644 --- a/src/renderer/patches/spellCheck.tsx +++ b/src/renderer/patches/spellCheck.tsx @@ -56,7 +56,7 @@ addContextMenuPatch("textarea-context", children => { const settings = useSettings(); const spellCheckLanguages = (settings.spellCheckLanguages ??= [...new Set(navigator.languages)]); - const pasteSectionIndex = children.findIndex(c => c?.props?.children?.some(c => c?.props?.id === "paste")); + const pasteSectionIndex = children.findIndex(c => c?.props?.children?.some?.(c => c?.props?.id === "paste")); children.splice( pasteSectionIndex === -1 ? children.length : pasteSectionIndex, From 36c67aa54a7b1ac73a5d218b1c8c8d335d87ebdd Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 21 Jun 2025 04:06:00 +0200 Subject: [PATCH 14/30] bump dependencies --- package.json | 12 +- pnpm-lock.yaml | 470 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 318 insertions(+), 164 deletions(-) diff --git a/package.json b/package.json index ca7cae3..7fa800b 100644 --- a/package.json +++ b/package.json @@ -35,26 +35,26 @@ "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@stylistic/eslint-plugin": "^4.4.1", - "@types/node": "^22.15.30", + "@types/node": "^24.0.3", "@types/react": "18.3.1", "@vencord/types": "^1.11.5", "dotenv": "^16.5.0", - "electron": "^36.4.0", + "electron": "^36.5.0", "electron-builder": "^26.0.12", "esbuild": "^0.25.5", - "eslint": "^9.28.0", + "eslint": "^9.29.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-path-alias": "^2.1.0", - "eslint-plugin-prettier": "^5.4.1", + "eslint-plugin-prettier": "^5.5.0", "eslint-plugin-simple-header": "^1.2.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^4.1.4", "prettier": "^3.5.3", "source-map-support": "^0.5.21", - "tsx": "^4.19.4", + "tsx": "^4.20.3", "type-fest": "^4.41.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.33.1", + "typescript-eslint": "^8.34.1", "xml-formatter": "^3.6.6" }, "packageManager": "pnpm@10.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c5ffe1..f0ea9e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 2.1.2 '@stylistic/eslint-plugin': specifier: ^4.4.1 - version: 4.4.1(eslint@9.28.0)(typescript@5.8.3) + version: 4.4.1(eslint@9.29.0)(typescript@5.8.3) '@types/node': - specifier: ^22.15.30 - version: 22.15.30 + specifier: ^24.0.3 + version: 24.0.3 '@types/react': specifier: 18.3.1 version: 18.3.1 @@ -39,8 +39,8 @@ importers: specifier: ^16.5.0 version: 16.5.0 electron: - specifier: ^36.4.0 - version: 36.4.0 + specifier: ^36.5.0 + version: 36.5.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -48,26 +48,26 @@ importers: specifier: ^0.25.5 version: 0.25.5 eslint: - specifier: ^9.28.0 - version: 9.28.0 + specifier: ^9.29.0 + version: 9.29.0 eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)) eslint-plugin-path-alias: specifier: ^2.1.0 - version: 2.1.0(eslint@9.28.0) + version: 2.1.0(eslint@9.29.0) eslint-plugin-prettier: - specifier: ^5.4.1 - version: 5.4.1(eslint@9.28.0)(prettier@3.5.3) + specifier: ^5.5.0 + version: 5.5.0(eslint@9.29.0)(prettier@3.5.3) eslint-plugin-simple-header: specifier: ^1.2.2 - version: 1.2.2(eslint@9.28.0) + version: 1.2.2(eslint@9.29.0) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.28.0) + version: 12.1.1(eslint@9.29.0) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -75,8 +75,8 @@ importers: specifier: ^0.5.21 version: 0.5.21 tsx: - specifier: ^4.19.4 - version: 4.19.4 + specifier: ^4.20.3 + version: 4.20.3 type-fest: specifier: ^4.41.0 version: 4.41.0 @@ -84,8 +84,8 @@ importers: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: - specifier: ^8.33.1 - version: 8.33.1(eslint@9.28.0)(typescript@5.8.3) + specifier: ^8.34.1 + version: 8.34.1(eslint@9.29.0)(typescript@5.8.3) xml-formatter: specifier: ^3.6.6 version: 3.6.6 @@ -305,32 +305,36 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.0': - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + '@eslint/config-array@0.20.1': + resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.2': - resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + '@eslint/config-helpers@0.2.3': + resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.14.0': resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.15.0': + resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.28.0': - resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==} + '@eslint/js@9.29.0': + resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.1': - resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + '@eslint/plugin-kit@0.3.2': + resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fal-works/esbuild-plugin-global-externals@2.1.2': @@ -359,6 +363,14 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -451,8 +463,11 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.30': - resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} + '@types/node@22.15.32': + resolution: {integrity: sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==} + + '@types/node@24.0.3': + resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -478,16 +493,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.33.1': - resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} + '@typescript-eslint/eslint-plugin@8.34.1': + resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.33.1 + '@typescript-eslint/parser': ^8.34.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.33.1': - resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} + '@typescript-eslint/parser@8.34.1': + resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -499,18 +514,34 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/project-service@8.34.1': + resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/scope-manager@8.33.1': resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.34.1': + resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.33.1': resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.33.1': - resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} + '@typescript-eslint/tsconfig-utils@8.34.1': + resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.34.1': + resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -520,12 +551,22 @@ packages: resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.34.1': + resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.33.1': resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/typescript-estree@8.34.1': + resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.33.1': resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -533,10 +574,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.34.1': + resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/visitor-keys@8.33.1': resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.34.1': + resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vencord/types@1.11.5': resolution: {integrity: sha512-1cLt48MMAi2d53PhxdmKiZnTL0JdxSkZpmhpjoC+cHN6K2kKQiVntD6JExaFclucLlzYG0pOXVu63AaeQCVXmg==} @@ -751,11 +803,11 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1101,8 +1153,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.4.0: - resolution: {integrity: sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ==} + electron@36.5.0: + resolution: {integrity: sha512-ouVtHbHDFsRBHPGx9G6RDm4ccPaSCmrrR8tbUGZuqbJhqIClVBkVMz94Spjihag2Zo1eHtYD+KevALrc/94g1g==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1115,8 +1167,8 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} @@ -1178,8 +1230,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1214,8 +1266,8 @@ packages: peerDependencies: eslint: ^8.0.0 - eslint-plugin-prettier@5.4.1: - resolution: {integrity: sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==} + eslint-plugin-prettier@5.5.0: + resolution: {integrity: sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1247,8 +1299,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-scope@8.3.0: - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: @@ -1259,8 +1311,12 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.28.0: - resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.29.0: + resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1273,6 +1329,10 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1467,6 +1527,9 @@ packages: get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -2021,6 +2084,10 @@ packages: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2316,8 +2383,8 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -2547,8 +2614,8 @@ packages: resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} engines: {node: '>= 10'} - socks@2.8.4: - resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + socks@2.8.5: + resolution: {integrity: sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} source-map-resolve@0.5.3: @@ -2706,8 +2773,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsx@4.19.4: - resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + tsx@4.20.3: + resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -2739,8 +2806,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.33.1: - resolution: {integrity: sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==} + typescript-eslint@8.34.1: + resolution: {integrity: sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2758,6 +2825,9 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} @@ -2946,7 +3016,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.2 + semver: 7.7.1 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3099,14 +3169,14 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0)': dependencies: - eslint: 9.28.0 + eslint: 9.29.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.0': + '@eslint/config-array@0.20.1': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1 @@ -3114,17 +3184,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.2': {} + '@eslint/config-helpers@0.2.3': {} '@eslint/core@0.14.0': dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.15.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 debug: 4.4.1 - espree: 10.3.0 + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 @@ -3134,13 +3208,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.28.0': {} + '@eslint/js@9.29.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.1': + '@eslint/plugin-kit@0.3.2': dependencies: - '@eslint/core': 0.14.0 + '@eslint/core': 0.15.0 levn: 0.4.1 '@fal-works/esbuild-plugin-global-externals@2.1.2': {} @@ -3160,6 +3234,12 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3197,7 +3277,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.1 '@npmcli/move-file@2.0.1': dependencies: @@ -3213,10 +3293,10 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.28.0)(typescript@5.8.3)': + '@stylistic/eslint-plugin@4.4.1(eslint@9.29.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - eslint: 9.28.0 + '@typescript-eslint/utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3) + eslint: 9.29.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -3235,7 +3315,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -3246,7 +3326,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/http-cache-semantics@4.0.4': {} @@ -3256,19 +3336,23 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/lodash@4.17.15': {} '@types/ms@2.1.0': {} - '@types/node@22.15.30': + '@types/node@22.15.32': dependencies: undici-types: 6.21.0 + '@types/node@24.0.3': + dependencies: + undici-types: 7.8.0 + '@types/plist@3.0.5': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 xmlbuilder: 15.1.1 optional: true @@ -3290,25 +3374,25 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 '@types/verror@1.10.11': optional: true '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.15.30 + '@types/node': 24.0.3 optional: true - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/type-utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.1 - eslint: 9.28.0 + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.1 + eslint: 9.29.0 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3317,14 +3401,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.1 debug: 4.4.1 - eslint: 9.28.0 + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -3338,21 +3422,39 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.34.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) + '@typescript-eslint/types': 8.34.1 + debug: 4.4.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.33.1': dependencies: '@typescript-eslint/types': 8.33.1 '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/scope-manager@8.34.1': + dependencies: + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 + '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) debug: 4.4.1 - eslint: 9.28.0 + eslint: 9.29.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -3360,6 +3462,8 @@ snapshots: '@typescript-eslint/types@8.33.1': {} + '@typescript-eslint/types@8.34.1': {} + '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': dependencies: '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) @@ -3376,13 +3480,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.28.0)(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@typescript-eslint/project-service': 8.34.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.33.1(eslint@9.29.0)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 9.28.0 + eslint: 9.29.0 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -3392,10 +3523,15 @@ snapshots: '@typescript-eslint/types': 8.33.1 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.34.1': + dependencies: + '@typescript-eslint/types': 8.34.1 + eslint-visitor-keys: 4.2.1 + '@vencord/types@1.11.5': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.15.30 + '@types/node': 22.15.32 '@types/react': 18.3.1 '@types/react-dom': 18.3.1 discord-types: 1.3.26 @@ -3423,7 +3559,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -3493,7 +3629,7 @@ snapshots: js-yaml: 4.1.0 json5: 2.2.3 lazy-val: 1.0.5 - minimatch: 10.0.1 + minimatch: 10.0.3 resedit: 1.7.2 sanitize-filename: 1.6.3 semver: 7.7.2 @@ -3714,12 +3850,12 @@ snapshots: boolean@3.2.0: optional: true - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -4200,10 +4336,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.4.0: + electron@36.5.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.15.30 + '@types/node': 22.15.32 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -4217,7 +4353,7 @@ snapshots: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -4342,9 +4478,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -4354,17 +4490,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - eslint: 9.28.0 + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + eslint: 9.29.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -4373,9 +4509,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.28.0 + eslint: 9.29.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.28.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4387,43 +4523,43 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-path-alias@2.1.0(eslint@9.28.0): + eslint-plugin-path-alias@2.1.0(eslint@9.29.0): dependencies: - eslint: 9.28.0 + eslint: 9.29.0 find-pkg: 2.0.0 get-tsconfig: 4.10.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.4.1(eslint@9.28.0)(prettier@3.5.3): + eslint-plugin-prettier@5.5.0(eslint@9.29.0)(prettier@3.5.3): dependencies: - eslint: 9.28.0 + eslint: 9.29.0 prettier: 3.5.3 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 - eslint-plugin-simple-header@1.2.2(eslint@9.28.0): + eslint-plugin-simple-header@1.2.2(eslint@9.29.0): dependencies: - eslint: 9.28.0 + eslint: 9.29.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.28.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.29.0): dependencies: - eslint: 9.28.0 + eslint: 9.29.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): dependencies: - eslint: 9.28.0 + eslint: 9.29.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) - eslint-scope@8.3.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -4432,16 +4568,18 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.28.0: + eslint-visitor-keys@4.2.1: {} + + eslint@9.29.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.2 + '@eslint/config-array': 0.20.1 + '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.28.0 - '@eslint/plugin-kit': 0.3.1 + '@eslint/js': 9.29.0 + '@eslint/plugin-kit': 0.3.2 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4452,9 +4590,9 @@ snapshots: cross-spawn: 7.0.6 debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4478,6 +4616,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.0 + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -4691,7 +4835,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 get-symbol-description@1.1.0: dependencies: @@ -4703,6 +4847,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + get-value@2.0.6: {} glob-parent@5.1.2: @@ -4847,7 +4995,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -4866,7 +5014,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5268,19 +5416,23 @@ snapshots: minimatch@10.0.1: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 + + minimatch@10.0.3: + dependencies: + '@isaacs/brace-expansion': 5.0.0 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -5571,9 +5723,9 @@ snapshots: proxy-from-env@1.1.0: optional: true - pump@3.0.2: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} @@ -5848,12 +6000,12 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1 - socks: 2.8.4 + debug: 4.4.0 + socks: 2.8.5 transitivePeerDependencies: - supports-color - socks@2.8.4: + socks@2.8.5: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 @@ -5889,7 +6041,7 @@ snapshots: standalone-electron-types@34.2.0: dependencies: - '@types/node': 22.15.30 + '@types/node': 22.15.32 stat-mode@1.0.0: {} @@ -5980,7 +6132,7 @@ snapshots: tar-stream@2.2.0: dependencies: bl: 4.1.0 - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 @@ -6041,10 +6193,10 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsx@4.19.4: + tsx@4.20.3: dependencies: esbuild: 0.25.5 - get-tsconfig: 4.10.0 + get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -6090,12 +6242,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.33.1(eslint@9.28.0)(typescript@5.8.3): + typescript-eslint@8.34.1(eslint@9.29.0)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.28.0)(typescript@5.8.3) - eslint: 9.28.0 + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6111,6 +6263,8 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.8.0: {} + union-value@1.0.1: dependencies: arr-union: 3.1.0 From 26906b9776742205dca1810114eb4a319b8dc28d Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 21 Jun 2025 04:06:13 +0200 Subject: [PATCH 15/30] patch electron-updater to fix rpm updater --- package.json | 3 ++- patches/electron-updater.patch | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 patches/electron-updater.patch diff --git a/package.json b/package.json index 7fa800b..2a824a7 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,8 @@ }, "pnpm": { "patchedDependencies": { - "arrpc@3.5.0": "patches/arrpc@3.5.0.patch" + "arrpc@3.5.0": "/home/vee/Coding/Vesktop/patches/arrpc@3.5.0.patch", + "electron-updater": "patches/electron-updater.patch" }, "onlyBuiltDependencies": [ "@vencord/venmic", diff --git a/patches/electron-updater.patch b/patches/electron-updater.patch new file mode 100644 index 0000000..1431edd --- /dev/null +++ b/patches/electron-updater.patch @@ -0,0 +1,16 @@ +diff --git a/out/RpmUpdater.js b/out/RpmUpdater.js +index 563187bb18cb0bd154dff6620cb62b8c8f534cd6..d91594026c2bac9cc78ef3b1183df3241d7d9624 100644 +--- a/out/RpmUpdater.js ++++ b/out/RpmUpdater.js +@@ -32,7 +32,10 @@ class RpmUpdater extends BaseUpdater_1.BaseUpdater { + const sudo = this.wrapSudo(); + // pkexec doesn't want the command to be wrapped in " quotes + const wrapper = /pkexec/i.test(sudo) ? "" : `"`; +- const packageManager = this.spawnSyncLog("which zypper"); ++ let packageManager; ++ try { ++ packageManager = this.spawnSyncLog("which zypper"); ++ } catch {}; + const installerPath = this.installerPath; + if (installerPath == null) { + this.dispatchError(new Error("No valid update available, can't quit and install")); From 29d1c73d811fd6fe1bbdb484e89efc5363762ef1 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 21 Jun 2025 04:10:45 +0200 Subject: [PATCH 16/30] okay pnpm --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a824a7..900337e 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,7 @@ }, "pnpm": { "patchedDependencies": { - "arrpc@3.5.0": "/home/vee/Coding/Vesktop/patches/arrpc@3.5.0.patch", + "arrpc@3.5.0": "patches/arrpc@3.5.0.patch", "electron-updater": "patches/electron-updater.patch" }, "onlyBuiltDependencies": [ From e6589eacfc9c7c7f51b1ef77e03873edd632f0b7 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 21 Jun 2025 04:12:21 +0200 Subject: [PATCH 17/30] fix lockfile --- pnpm-lock.yaml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0ea9e6..837c44e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ patchedDependencies: arrpc@3.5.0: hash: 4313fe844324a52ef0453078a86f5d1ee2d4f406331201211020d9fa243323c4 path: patches/arrpc@3.5.0.patch + electron-updater: + hash: 06562dca45cc1e944051c5244369c00c2cd1e12f262d36c2555b37a464e02b7d + path: patches/electron-updater.patch importers: @@ -18,7 +21,7 @@ importers: version: https://codeload.github.com/OpenAsar/arrpc/tar.gz/2234e9c9111f4c42ebcc3aa6a2215bfd979eef77(patch_hash=4313fe844324a52ef0453078a86f5d1ee2d4f406331201211020d9fa243323c4) electron-updater: specifier: ^6.6.2 - version: 6.6.2 + version: 6.6.2(patch_hash=06562dca45cc1e944051c5244369c00c2cd1e12f262d36c2555b37a464e02b7d) devDependencies: '@fal-works/esbuild-plugin-global-externals': specifier: ^2.1.2 @@ -3016,7 +3019,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3277,7 +3280,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@npmcli/move-file@2.0.1': dependencies: @@ -3559,7 +3562,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4323,7 +4326,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron-updater@6.6.2: + electron-updater@6.6.2(patch_hash=06562dca45cc1e944051c5244369c00c2cd1e12f262d36c2555b37a464e02b7d): dependencies: builder-util-runtime: 9.3.1 fs-extra: 10.1.0 @@ -4995,7 +4998,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -5014,7 +5017,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -6000,7 +6003,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 socks: 2.8.5 transitivePeerDependencies: - supports-color From 2dcebeca79a10df8add20d98c3ca47030a6eedd6 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Thu, 26 Jun 2025 15:08:28 +0200 Subject: [PATCH 18/30] revise issue template once again --- .github/ISSUE_TEMPLATE/dev-issue.yml | 10 ++++++++-- .github/ISSUE_TEMPLATE/developer-banner.png | Bin 31992 -> 0 bytes 2 files changed, 8 insertions(+), 2 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/developer-banner.png diff --git a/.github/ISSUE_TEMPLATE/dev-issue.yml b/.github/ISSUE_TEMPLATE/dev-issue.yml index 936e935..ed1981f 100644 --- a/.github/ISSUE_TEMPLATE/dev-issue.yml +++ b/.github/ISSUE_TEMPLATE/dev-issue.yml @@ -5,8 +5,14 @@ body: - type: markdown attributes: value: | - ![Are you a developer? No? This form is not for you!](https://github.com/Vencord/Vesktop/blob/main/.github/ISSUE_TEMPLATE/developer-banner.png?raw=true) - GitHub Issues are for developers, not support. Please use our [support server](https://vencord.dev/discord) if you are not a developer. + # This form is reserved for Vesktop Developers. Do not open an issue. + + Instead, use the [#vesktop-support channel](https://discord.com/channels/1015060230222131221/1345457031426871417) + on our [Discord server](https://vencord.dev/discord) for help and reporting issues. + + Your issue will be closed immediately with no comment and you will be blocked if you ignore this. + + This is because 99% of issues are not actually bugs, but rather user or system issues and it adds a lot of noise to our development process. - type: textarea id: content attributes: diff --git a/.github/ISSUE_TEMPLATE/developer-banner.png b/.github/ISSUE_TEMPLATE/developer-banner.png deleted file mode 100644 index 5fa12fc370750c460f8d0959d5f73828c63b6e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31992 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 Date: Thu, 26 Jun 2025 15:09:35 +0200 Subject: [PATCH 19/30] fake markdown wtf --- .github/ISSUE_TEMPLATE/dev-issue.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/dev-issue.yml b/.github/ISSUE_TEMPLATE/dev-issue.yml index ed1981f..501989b 100644 --- a/.github/ISSUE_TEMPLATE/dev-issue.yml +++ b/.github/ISSUE_TEMPLATE/dev-issue.yml @@ -7,8 +7,7 @@ body: value: | # This form is reserved for Vesktop Developers. Do not open an issue. - Instead, use the [#vesktop-support channel](https://discord.com/channels/1015060230222131221/1345457031426871417) - on our [Discord server](https://vencord.dev/discord) for help and reporting issues. + Instead, use the [#vesktop-support channel](https://discord.com/channels/1015060230222131221/1345457031426871417) on our [Discord server](https://vencord.dev/discord) for help and reporting issues. Your issue will be closed immediately with no comment and you will be blocked if you ignore this. From 8d3c9390ae235efb39bf0d75139dff2cd7ae4ab9 Mon Sep 17 00:00:00 2001 From: Cookie <52550063+Covkie@users.noreply.github.com> Date: Thu, 26 Jun 2025 21:09:33 -0400 Subject: [PATCH 20/30] update discord css variable name (#1164) --- src/renderer/themedSplash.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/themedSplash.ts b/src/renderer/themedSplash.ts index 13d762b..36ad281 100644 --- a/src/renderer/themedSplash.ts +++ b/src/renderer/themedSplash.ts @@ -59,7 +59,7 @@ function resolveColor(color: string) { const updateSplashColors = () => { const bodyStyles = document.body.computedStyleMap(); - const color = bodyStyles.get("--text-normal"); + const color = bodyStyles.get("--text-default"); const backgroundColor = bodyStyles.get("--background-primary"); if (isValidColor(color)) { From 3982e122a7f8e95d4e639ec7744393a8eebd437b Mon Sep 17 00:00:00 2001 From: Vendicated Date: Fri, 27 Jun 2025 23:08:50 +0200 Subject: [PATCH 21/30] upgrade to electron 37 --- package.json | 14 +- pnpm-lock.yaml | 467 +++++++++++++++++++------------------------------ 2 files changed, 190 insertions(+), 291 deletions(-) diff --git a/package.json b/package.json index 900337e..5cc797e 100644 --- a/package.json +++ b/package.json @@ -34,27 +34,27 @@ }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@stylistic/eslint-plugin": "^4.4.1", - "@types/node": "^24.0.3", + "@stylistic/eslint-plugin": "^5.0.0", + "@types/node": "^24.0.6", "@types/react": "18.3.1", "@vencord/types": "^1.11.5", "dotenv": "^16.5.0", - "electron": "^36.5.0", + "electron": "^37.1.0", "electron-builder": "^26.0.12", "esbuild": "^0.25.5", - "eslint": "^9.29.0", + "eslint": "^9.30.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-path-alias": "^2.1.0", - "eslint-plugin-prettier": "^5.5.0", + "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-simple-header": "^1.2.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-unused-imports": "^4.1.4", - "prettier": "^3.5.3", + "prettier": "^3.6.2", "source-map-support": "^0.5.21", "tsx": "^4.20.3", "type-fest": "^4.41.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.34.1", + "typescript-eslint": "^8.35.0", "xml-formatter": "^3.6.6" }, "packageManager": "pnpm@10.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 837c44e..3591586 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,11 +27,11 @@ importers: specifier: ^2.1.2 version: 2.1.2 '@stylistic/eslint-plugin': - specifier: ^4.4.1 - version: 4.4.1(eslint@9.29.0)(typescript@5.8.3) + specifier: ^5.0.0 + version: 5.0.0(eslint@9.30.0) '@types/node': - specifier: ^24.0.3 - version: 24.0.3 + specifier: ^24.0.6 + version: 24.0.6 '@types/react': specifier: 18.3.1 version: 18.3.1 @@ -42,8 +42,8 @@ importers: specifier: ^16.5.0 version: 16.5.0 electron: - specifier: ^36.5.0 - version: 36.5.0 + specifier: ^37.1.0 + version: 37.1.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -51,29 +51,29 @@ importers: specifier: ^0.25.5 version: 0.25.5 eslint: - specifier: ^9.29.0 - version: 9.29.0 + specifier: ^9.30.0 + version: 9.30.0 eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)) eslint-plugin-path-alias: specifier: ^2.1.0 - version: 2.1.0(eslint@9.29.0) + version: 2.1.0(eslint@9.30.0) eslint-plugin-prettier: - specifier: ^5.5.0 - version: 5.5.0(eslint@9.29.0)(prettier@3.5.3) + specifier: ^5.5.1 + version: 5.5.1(eslint@9.30.0)(prettier@3.6.2) eslint-plugin-simple-header: specifier: ^1.2.2 - version: 1.2.2(eslint@9.29.0) + version: 1.2.2(eslint@9.30.0) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.29.0) + version: 12.1.1(eslint@9.30.0) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) prettier: - specifier: ^3.5.3 - version: 3.5.3 + specifier: ^3.6.2 + version: 3.6.2 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -87,8 +87,8 @@ importers: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: - specifier: ^8.34.1 - version: 8.34.1(eslint@9.29.0)(typescript@5.8.3) + specifier: ^8.35.0 + version: 8.35.0(eslint@9.30.0)(typescript@5.8.3) xml-formatter: specifier: ^3.6.6 version: 3.6.6 @@ -308,36 +308,36 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.1': - resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.3': - resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.14.0': resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.0': - resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + '@eslint/core@0.15.1': + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.29.0': - resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} + '@eslint/js@9.30.0': + resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.2': - resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} + '@eslint/plugin-kit@0.3.3': + resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fal-works/esbuild-plugin-global-externals@2.1.2': @@ -422,8 +422,8 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@stylistic/eslint-plugin@4.4.1': - resolution: {integrity: sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==} + '@stylistic/eslint-plugin@5.0.0': + resolution: {integrity: sha512-nVV2FSzeTJ3oFKw+3t9gQYQcrgbopgCASSY27QOtkhEGgSfdQQjDmzZd41NeT1myQ8Wc6l+pZllST9qIu4NKzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -466,11 +466,11 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.32': - resolution: {integrity: sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==} + '@types/node@22.15.33': + resolution: {integrity: sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==} - '@types/node@24.0.3': - resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} + '@types/node@24.0.6': + resolution: {integrity: sha512-ZOyn+gOs749xU7ovp+Ibj0g1o3dFRqsfPnT22C2t5JzcRvgsEDpGawPbCISGKLudJk9Y0wiu9sYd6kUh0pc9TA==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -496,100 +496,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.34.1': - resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==} + '@typescript-eslint/eslint-plugin@8.35.0': + resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.34.1 + '@typescript-eslint/parser': ^8.35.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.34.1': - resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==} + '@typescript-eslint/parser@8.35.0': + resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.33.1': - resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} + '@typescript-eslint/project-service@8.35.0': + resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.34.1': - resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==} + '@typescript-eslint/scope-manager@8.35.0': + resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.35.0': + resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.33.1': - resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.34.1': - resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.33.1': - resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/tsconfig-utils@8.34.1': - resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/type-utils@8.34.1': - resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==} + '@typescript-eslint/type-utils@8.35.0': + resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.33.1': - resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} + '@typescript-eslint/types@8.35.0': + resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.34.1': - resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.33.1': - resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} + '@typescript-eslint/typescript-estree@8.35.0': + resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.34.1': - resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@8.33.1': - resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} + '@typescript-eslint/utils@8.35.0': + resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.34.1': - resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/visitor-keys@8.33.1': - resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.34.1': - resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==} + '@typescript-eslint/visitor-keys@8.35.0': + resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vencord/types@1.11.5': @@ -1127,6 +1090,10 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1156,8 +1123,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.5.0: - resolution: {integrity: sha512-ouVtHbHDFsRBHPGx9G6RDm4ccPaSCmrrR8tbUGZuqbJhqIClVBkVMz94Spjihag2Zo1eHtYD+KevALrc/94g1g==} + electron@37.1.0: + resolution: {integrity: sha512-Fcr3yfAw4oU392waVZSlrFUQx4P+h/k31+PRgkBY9tFx9E/zxzdPQQj0achZlG1HRDusw3ooQB+OXb9PvufdzA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1269,8 +1236,8 @@ packages: peerDependencies: eslint: ^8.0.0 - eslint-plugin-prettier@5.5.0: - resolution: {integrity: sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA==} + eslint-plugin-prettier@5.5.1: + resolution: {integrity: sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1310,16 +1277,12 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@4.2.1: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.29.0: - resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} + eslint@9.30.0: + resolution: {integrity: sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1328,10 +1291,6 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2355,8 +2314,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true @@ -2809,8 +2768,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.34.1: - resolution: {integrity: sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==} + typescript-eslint@8.35.0: + resolution: {integrity: sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3019,7 +2978,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.2 + semver: 7.7.1 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3172,14 +3131,14 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.30.0)': dependencies: - eslint: 9.29.0 + eslint: 9.30.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1 @@ -3187,13 +3146,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.3': {} + '@eslint/config-helpers@0.3.0': {} '@eslint/core@0.14.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.15.0': + '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -3211,13 +3170,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.29.0': {} + '@eslint/js@9.30.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.2': + '@eslint/plugin-kit@0.3.3': dependencies: - '@eslint/core': 0.15.0 + '@eslint/core': 0.15.1 levn: 0.4.1 '@fal-works/esbuild-plugin-global-externals@2.1.2': {} @@ -3280,7 +3239,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.1 '@npmcli/move-file@2.0.1': dependencies: @@ -3296,17 +3255,15 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.29.0)(typescript@5.8.3)': + '@stylistic/eslint-plugin@5.0.0(eslint@9.30.0)': dependencies: - '@typescript-eslint/utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3) - eslint: 9.29.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) + '@typescript-eslint/types': 8.35.0 + eslint: 9.30.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.2 - transitivePeerDependencies: - - supports-color - - typescript '@szmarczak/http-timer@4.0.6': dependencies: @@ -3318,7 +3275,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 24.0.3 + '@types/node': 24.0.6 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -3329,7 +3286,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.0.3 + '@types/node': 24.0.6 '@types/http-cache-semantics@4.0.4': {} @@ -3339,23 +3296,23 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 24.0.3 + '@types/node': 24.0.6 '@types/lodash@4.17.15': {} '@types/ms@2.1.0': {} - '@types/node@22.15.32': + '@types/node@22.15.33': dependencies: undici-types: 6.21.0 - '@types/node@24.0.3': + '@types/node@24.0.6': dependencies: undici-types: 7.8.0 '@types/plist@3.0.5': dependencies: - '@types/node': 24.0.3 + '@types/node': 24.0.6 xmlbuilder: 15.1.1 optional: true @@ -3377,25 +3334,25 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 24.0.3 + '@types/node': 24.0.6 '@types/verror@1.10.11': optional: true '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.0.3 + '@types/node': 24.0.6 optional: true - '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.1 - eslint: 9.29.0 + '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.0 + eslint: 9.30.0 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3404,75 +3361,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.1 + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 - eslint: 9.29.0 + eslint: 9.30.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.33.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) - '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.34.1(typescript@5.8.3)': + '@typescript-eslint/scope-manager@8.35.0': dependencies: - '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) - '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 + + '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) debug: 4.4.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.33.1': - dependencies: - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/visitor-keys': 8.33.1 - - '@typescript-eslint/scope-manager@8.34.1': - dependencies: - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/visitor-keys': 8.34.1 - - '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - - '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - - '@typescript-eslint/type-utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - debug: 4.4.1 - eslint: 9.29.0 + eslint: 9.30.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.33.1': {} + '@typescript-eslint/types@8.35.0': {} - '@typescript-eslint/types@8.34.1': {} - - '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/visitor-keys': 8.33.1 + '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3483,58 +3420,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.3)': + '@typescript-eslint/utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.34.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/visitor-keys': 8.34.1 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + eslint: 9.30.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/visitor-keys@8.35.0': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 9.29.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - eslint: 9.29.0 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.33.1': - dependencies: - '@typescript-eslint/types': 8.33.1 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.34.1': - dependencies: - '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/types': 8.35.0 eslint-visitor-keys: 4.2.1 '@vencord/types@1.11.5': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.15.32 + '@types/node': 22.15.33 '@types/react': 18.3.1 '@types/react-dom': 18.3.1 discord-types: 1.3.26 @@ -3562,7 +3467,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -3619,7 +3524,7 @@ snapshots: config-file-ts: 0.2.8-rc1 debug: 4.4.1 dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) - dotenv: 16.5.0 + dotenv: 16.6.1 dotenv-expand: 11.0.7 ejs: 3.1.10 electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) @@ -4261,6 +4166,8 @@ snapshots: dotenv@16.5.0: {} + dotenv@16.6.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4339,10 +4246,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.5.0: + electron@37.1.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.15.32 + '@types/node': 22.15.33 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -4481,9 +4388,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -4493,17 +4400,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - eslint: 9.29.0 + '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + eslint: 9.30.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -4512,9 +4419,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.29.0 + eslint: 9.30.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4526,41 +4433,41 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-path-alias@2.1.0(eslint@9.29.0): + eslint-plugin-path-alias@2.1.0(eslint@9.30.0): dependencies: - eslint: 9.29.0 + eslint: 9.30.0 find-pkg: 2.0.0 get-tsconfig: 4.10.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.5.0(eslint@9.29.0)(prettier@3.5.3): + eslint-plugin-prettier@5.5.1(eslint@9.30.0)(prettier@3.6.2): dependencies: - eslint: 9.29.0 - prettier: 3.5.3 + eslint: 9.30.0 + prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 - eslint-plugin-simple-header@1.2.2(eslint@9.29.0): + eslint-plugin-simple-header@1.2.2(eslint@9.30.0): dependencies: - eslint: 9.29.0 + eslint: 9.30.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.29.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.30.0): dependencies: - eslint: 9.29.0 + eslint: 9.30.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): dependencies: - eslint: 9.29.0 + eslint: 9.30.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) eslint-scope@8.4.0: dependencies: @@ -4569,20 +4476,18 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} - eslint-visitor-keys@4.2.1: {} - eslint@9.29.0: + eslint@9.30.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.1 - '@eslint/config-helpers': 0.2.3 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.29.0 - '@eslint/plugin-kit': 0.3.2 + '@eslint/js': 9.30.0 + '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4613,12 +4518,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.3.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.0 - espree@10.4.0: dependencies: acorn: 8.15.0 @@ -4998,7 +4897,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5017,7 +4916,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5708,7 +5607,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.5.3: {} + prettier@3.6.2: {} proc-log@2.0.1: {} @@ -6003,7 +5902,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 socks: 2.8.5 transitivePeerDependencies: - supports-color @@ -6044,7 +5943,7 @@ snapshots: standalone-electron-types@34.2.0: dependencies: - '@types/node': 22.15.32 + '@types/node': 22.15.33 stat-mode@1.0.0: {} @@ -6245,12 +6144,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.34.1(eslint@9.29.0)(typescript@5.8.3): + typescript-eslint@8.35.0(eslint@9.30.0)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) - eslint: 9.29.0 + '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + eslint: 9.30.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color From 099845deb7d98d8abfe8778af28b709bc11994c5 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 6 Jul 2025 16:27:04 +0200 Subject: [PATCH 22/30] bump electron again surely this time they fixed every bug --- package.json | 10 +- pnpm-lock.yaml | 296 ++++++++++++++++++++++++------------------------- 2 files changed, 150 insertions(+), 156 deletions(-) diff --git a/package.json b/package.json index 5cc797e..06e0045 100644 --- a/package.json +++ b/package.json @@ -34,15 +34,15 @@ }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@stylistic/eslint-plugin": "^5.0.0", - "@types/node": "^24.0.6", + "@stylistic/eslint-plugin": "^5.1.0", + "@types/node": "^24.0.10", "@types/react": "18.3.1", "@vencord/types": "^1.11.5", "dotenv": "^16.5.0", - "electron": "^37.1.0", + "electron": "^37.2.0", "electron-builder": "^26.0.12", "esbuild": "^0.25.5", - "eslint": "^9.30.0", + "eslint": "^9.30.1", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-path-alias": "^2.1.0", "eslint-plugin-prettier": "^5.5.1", @@ -54,7 +54,7 @@ "tsx": "^4.20.3", "type-fest": "^4.41.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.35.0", + "typescript-eslint": "^8.35.1", "xml-formatter": "^3.6.6" }, "packageManager": "pnpm@10.7.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3591586..61b4281 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,11 +27,11 @@ importers: specifier: ^2.1.2 version: 2.1.2 '@stylistic/eslint-plugin': - specifier: ^5.0.0 - version: 5.0.0(eslint@9.30.0) + specifier: ^5.1.0 + version: 5.1.0(eslint@9.30.1) '@types/node': - specifier: ^24.0.6 - version: 24.0.6 + specifier: ^24.0.10 + version: 24.0.10 '@types/react': specifier: 18.3.1 version: 18.3.1 @@ -40,10 +40,10 @@ importers: version: 1.11.5 dotenv: specifier: ^16.5.0 - version: 16.5.0 + version: 16.6.1 electron: - specifier: ^37.1.0 - version: 37.1.0 + specifier: ^37.2.0 + version: 37.2.0 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -51,26 +51,26 @@ importers: specifier: ^0.25.5 version: 0.25.5 eslint: - specifier: ^9.30.0 - version: 9.30.0 + specifier: ^9.30.1 + version: 9.30.1 eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)) eslint-plugin-path-alias: specifier: ^2.1.0 - version: 2.1.0(eslint@9.30.0) + version: 2.1.0(eslint@9.30.1) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.1(eslint@9.30.0)(prettier@3.6.2) + version: 5.5.1(eslint@9.30.1)(prettier@3.6.2) eslint-plugin-simple-header: specifier: ^1.2.2 - version: 1.2.2(eslint@9.30.0) + version: 1.2.2(eslint@9.30.1) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.30.0) + version: 12.1.1(eslint@9.30.1) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -87,8 +87,8 @@ importers: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: - specifier: ^8.35.0 - version: 8.35.0(eslint@9.30.0)(typescript@5.8.3) + specifier: ^8.35.1 + version: 8.35.1(eslint@9.30.1)(typescript@5.8.3) xml-formatter: specifier: ^3.6.6 version: 3.6.6 @@ -328,8 +328,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.30.0': - resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==} + '@eslint/js@9.30.1': + resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -422,8 +422,8 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@stylistic/eslint-plugin@5.0.0': - resolution: {integrity: sha512-nVV2FSzeTJ3oFKw+3t9gQYQcrgbopgCASSY27QOtkhEGgSfdQQjDmzZd41NeT1myQ8Wc6l+pZllST9qIu4NKzg==} + '@stylistic/eslint-plugin@5.1.0': + resolution: {integrity: sha512-TJRJul4u/lmry5N/kyCU+7RWWOk0wyXN+BncRlDYBqpLFnzXkd7QGVfN7KewarFIXv0IX0jSF/Ksu7aHWEDeuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -466,11 +466,11 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.33': - resolution: {integrity: sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==} + '@types/node@22.16.0': + resolution: {integrity: sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==} - '@types/node@24.0.6': - resolution: {integrity: sha512-ZOyn+gOs749xU7ovp+Ibj0g1o3dFRqsfPnT22C2t5JzcRvgsEDpGawPbCISGKLudJk9Y0wiu9sYd6kUh0pc9TA==} + '@types/node@24.0.10': + resolution: {integrity: sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -496,63 +496,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.35.0': - resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} + '@typescript-eslint/eslint-plugin@8.35.1': + resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.35.0 + '@typescript-eslint/parser': ^8.35.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.35.0': - resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==} + '@typescript-eslint/parser@8.35.1': + resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.35.0': - resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} + '@typescript-eslint/project-service@8.35.1': + resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.35.0': - resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} + '@typescript-eslint/scope-manager@8.35.1': + resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.35.0': - resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} + '@typescript-eslint/tsconfig-utils@8.35.1': + resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.35.0': - resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} + '@typescript-eslint/type-utils@8.35.1': + resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.35.0': - resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} + '@typescript-eslint/types@8.35.1': + resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.35.0': - resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} + '@typescript-eslint/typescript-estree@8.35.1': + resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.35.0': - resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} + '@typescript-eslint/utils@8.35.1': + resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.35.0': - resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} + '@typescript-eslint/visitor-keys@8.35.1': + resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vencord/types@1.11.5': @@ -1086,10 +1086,6 @@ packages: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} - engines: {node: '>=12'} - dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -1123,8 +1119,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@37.1.0: - resolution: {integrity: sha512-Fcr3yfAw4oU392waVZSlrFUQx4P+h/k31+PRgkBY9tFx9E/zxzdPQQj0achZlG1HRDusw3ooQB+OXb9PvufdzA==} + electron@37.2.0: + resolution: {integrity: sha512-dE6+qeg6SBUVd5d8CD2+GH82kh+gF1v40+hs+U+UOno681NMSGmBtgqwldQRpbvtnQDD7V2M9Cpfr3+Abw7aBg==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1281,8 +1277,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.30.0: - resolution: {integrity: sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==} + eslint@9.30.1: + resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2768,8 +2764,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.35.0: - resolution: {integrity: sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==} + typescript-eslint@8.35.1: + resolution: {integrity: sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2978,7 +2974,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3131,9 +3127,9 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.30.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1)': dependencies: - eslint: 9.30.0 + eslint: 9.30.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -3170,7 +3166,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.30.0': {} + '@eslint/js@9.30.1': {} '@eslint/object-schema@2.1.6': {} @@ -3239,7 +3235,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@npmcli/move-file@2.0.1': dependencies: @@ -3255,11 +3251,11 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@stylistic/eslint-plugin@5.0.0(eslint@9.30.0)': + '@stylistic/eslint-plugin@5.1.0(eslint@9.30.1)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) - '@typescript-eslint/types': 8.35.0 - eslint: 9.30.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1) + '@typescript-eslint/types': 8.35.1 + eslint: 9.30.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -3275,7 +3271,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 24.0.6 + '@types/node': 24.0.10 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -3286,7 +3282,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.0.6 + '@types/node': 24.0.10 '@types/http-cache-semantics@4.0.4': {} @@ -3296,23 +3292,23 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 24.0.6 + '@types/node': 24.0.10 '@types/lodash@4.17.15': {} '@types/ms@2.1.0': {} - '@types/node@22.15.33': + '@types/node@22.16.0': dependencies: undici-types: 6.21.0 - '@types/node@24.0.6': + '@types/node@24.0.10': dependencies: undici-types: 7.8.0 '@types/plist@3.0.5': dependencies: - '@types/node': 24.0.6 + '@types/node': 24.0.10 xmlbuilder: 15.1.1 optional: true @@ -3334,25 +3330,25 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 24.0.6 + '@types/node': 24.0.10 '@types/verror@1.10.11': optional: true '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.0.6 + '@types/node': 24.0.10 optional: true - '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.0 - eslint: 9.30.0 + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 + eslint: 9.30.1 graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3361,55 +3357,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 debug: 4.4.1 - eslint: 9.30.0 + eslint: 9.30.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) - '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.35.0': + '@typescript-eslint/scope-manager@8.35.1': dependencies: - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 - '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.35.1(eslint@9.30.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1)(typescript@5.8.3) debug: 4.4.1 - eslint: 9.30.0 + eslint: 9.30.1 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.35.0': {} + '@typescript-eslint/types@8.35.1': {} - '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/project-service': 8.35.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -3420,26 +3416,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.35.1(eslint@9.30.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - eslint: 9.30.0 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + eslint: 9.30.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.35.0': + '@typescript-eslint/visitor-keys@8.35.1': dependencies: - '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/types': 8.35.1 eslint-visitor-keys: 4.2.1 '@vencord/types@1.11.5': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.15.33 + '@types/node': 22.16.0 '@types/react': 18.3.1 '@types/react-dom': 18.3.1 discord-types: 1.3.26 @@ -3467,7 +3463,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -3565,7 +3561,7 @@ snapshots: config-file-ts: 0.2.8-rc1 debug: 4.4.0 dmg-builder: 26.0.12(electron-builder-squirrel-windows@25.1.8) - dotenv: 16.5.0 + dotenv: 16.6.1 dotenv-expand: 11.0.7 ejs: 3.1.10 electron-builder-squirrel-windows: 25.1.8(dmg-builder@26.0.12) @@ -4162,9 +4158,7 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.5.0 - - dotenv@16.5.0: {} + dotenv: 16.6.1 dotenv@16.6.1: {} @@ -4246,10 +4240,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@37.1.0: + electron@37.2.0: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.15.33 + '@types/node': 22.16.0 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -4388,9 +4382,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -4400,17 +4394,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - eslint: 9.30.0 + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + eslint: 9.30.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -4419,9 +4413,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.30.0 + eslint: 9.30.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4433,41 +4427,41 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-path-alias@2.1.0(eslint@9.30.0): + eslint-plugin-path-alias@2.1.0(eslint@9.30.1): dependencies: - eslint: 9.30.0 + eslint: 9.30.1 find-pkg: 2.0.0 get-tsconfig: 4.10.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.5.1(eslint@9.30.0)(prettier@3.6.2): + eslint-plugin-prettier@5.5.1(eslint@9.30.1)(prettier@3.6.2): dependencies: - eslint: 9.30.0 + eslint: 9.30.1 prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 - eslint-plugin-simple-header@1.2.2(eslint@9.30.0): + eslint-plugin-simple-header@1.2.2(eslint@9.30.1): dependencies: - eslint: 9.30.0 + eslint: 9.30.1 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.30.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.30.1): dependencies: - eslint: 9.30.0 + eslint: 9.30.1 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1): dependencies: - eslint: 9.30.0 + eslint: 9.30.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)(typescript@5.8.3) eslint-scope@8.4.0: dependencies: @@ -4478,15 +4472,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.30.0: + eslint@9.30.1: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.0 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.30.0 + '@eslint/js': 9.30.1 '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -4897,7 +4891,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4916,7 +4910,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -5902,7 +5896,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 socks: 2.8.5 transitivePeerDependencies: - supports-color @@ -5943,7 +5937,7 @@ snapshots: standalone-electron-types@34.2.0: dependencies: - '@types/node': 22.15.33 + '@types/node': 22.16.0 stat-mode@1.0.0: {} @@ -6144,12 +6138,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.35.0(eslint@9.30.0)(typescript@5.8.3): + typescript-eslint@8.35.1(eslint@9.30.1)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - eslint: 9.30.0 + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1)(typescript@5.8.3))(eslint@9.30.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1)(typescript@5.8.3) + eslint: 9.30.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color From 8aa91b4f01b39fdb7a045867ca3a7ef8178d3536 Mon Sep 17 00:00:00 2001 From: Justin Date: Sun, 6 Jul 2025 11:34:32 -0400 Subject: [PATCH 23/30] Move arrpc server into a worker thread to reduce stutters (#1053) Co-authored-by: V --- scripts/build/build.mts | 6 +++ src/main/arrpc.ts | 37 ------------------ src/main/arrpc/index.ts | 83 ++++++++++++++++++++++++++++++++++++++++ src/main/arrpc/types.ts | 37 ++++++++++++++++++ src/main/arrpc/worker.ts | 60 +++++++++++++++++++++++++++++ src/shared/IpcEvents.ts | 2 - 6 files changed, 186 insertions(+), 39 deletions(-) delete mode 100644 src/main/arrpc.ts create mode 100644 src/main/arrpc/index.ts create mode 100644 src/main/arrpc/types.ts create mode 100644 src/main/arrpc/worker.ts diff --git a/scripts/build/build.mts b/scripts/build/build.mts index 2aa98fc..ee3f7ca 100644 --- a/scripts/build/build.mts +++ b/scripts/build/build.mts @@ -58,6 +58,12 @@ await Promise.all([ outfile: "dist/js/main.js", footer: { js: "//# sourceURL=VCDMain" } }), + createContext({ + ...NodeCommonOpts, + entryPoints: ["src/main/arrpc/worker.ts"], + outfile: "dist/js/arRpcWorker.js", + footer: { js: "//# sourceURL=VCDArRpcWorker" } + }), createContext({ ...NodeCommonOpts, entryPoints: ["src/preload/index.ts"], diff --git a/src/main/arrpc.ts b/src/main/arrpc.ts deleted file mode 100644 index 9f6ee32..0000000 --- a/src/main/arrpc.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Vesktop, a desktop app aiming to give you a snappier Discord Experience - * Copyright (c) 2023 Vendicated and Vencord contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -import Server from "arrpc"; -import { IpcCommands } from "shared/IpcEvents"; - -import { sendRendererCommand } from "./ipcCommands"; -import { Settings } from "./settings"; - -let server: any; - -const inviteCodeRegex = /^(\w|-)+$/; - -export async function initArRPC() { - if (server || !Settings.store.arRPC) return; - - try { - server = await new Server(); - server.on("activity", (data: any) => sendRendererCommand(IpcCommands.RPC_ACTIVITY, JSON.stringify(data))); - server.on("invite", async (invite: string, callback: (valid: boolean) => void) => { - invite = String(invite); - if (!inviteCodeRegex.test(invite)) return callback(false); - - await sendRendererCommand(IpcCommands.RPC_INVITE, invite).then(callback); - }); - server.on("link", async (data: any, deepCallback: (valid: boolean) => void) => { - await sendRendererCommand(IpcCommands.RPC_DEEP_LINK, data).then(deepCallback); - }); - } catch (e) { - console.error("Failed to start arRPC server", e); - } -} - -Settings.addChangeListener("arRPC", initArRPC); diff --git a/src/main/arrpc/index.ts b/src/main/arrpc/index.ts new file mode 100644 index 0000000..d5dd214 --- /dev/null +++ b/src/main/arrpc/index.ts @@ -0,0 +1,83 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { resolve } from "path"; +import { IpcCommands } from "shared/IpcEvents"; +import { MessageChannel, Worker } from "worker_threads"; + +import { sendRendererCommand } from "../ipcCommands"; +import { Settings } from "../settings"; +import { ArRpcEvent, ArRpcHostEvent } from "./types"; + +let worker: Worker; + +const inviteCodeRegex = /^(\w|-)+$/; + +export async function initArRPC() { + if (worker || !Settings.store.arRPC) return; + + try { + const { port1: hostPort, port2: workerPort } = new MessageChannel(); + + worker = new Worker(resolve(__dirname, "./arRpcWorker.js"), { + workerData: { + workerPort + }, + transferList: [workerPort] + }); + + hostPort.on("message", async (e: ArRpcEvent) => { + switch (e.type) { + case "activity": { + sendRendererCommand(IpcCommands.RPC_ACTIVITY, e.data); + break; + } + + case "invite": { + const invite = String(e.data); + + const response: ArRpcHostEvent = { + type: "ack-invite", + nonce: e.nonce, + data: false + }; + + if (!inviteCodeRegex.test(invite)) { + return hostPort.postMessage(response); + } + + response.data = await sendRendererCommand(IpcCommands.RPC_INVITE, invite).catch(() => false); + + hostPort.postMessage(response); + break; + } + + case "link": { + const link = String(e.data); + + const response: ArRpcHostEvent = { + type: "ack-link", + nonce: e.nonce, + data: false + }; + + if (!inviteCodeRegex.test(link)) { + return hostPort.postMessage(response); + } + + response.data = await sendRendererCommand(IpcCommands.RPC_DEEP_LINK, link).catch(() => false); + + hostPort.postMessage(response); + break; + } + } + }); + } catch (e) { + console.error("Failed to start arRPC server", e); + } +} + +Settings.addChangeListener("arRPC", initArRPC); diff --git a/src/main/arrpc/types.ts b/src/main/arrpc/types.ts new file mode 100644 index 0000000..51492ed --- /dev/null +++ b/src/main/arrpc/types.ts @@ -0,0 +1,37 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export type ArRpcEvent = ArRpcActivityEvent | ArRpcInviteEvent | ArRpcLinkEvent; +export type ArRpcHostEvent = ArRpcHostAckInviteEvent | ArRpcHostAckLinkEvent; + +export interface ArRpcActivityEvent { + type: "activity"; + data: string; +} + +export interface ArRpcInviteEvent { + type: "invite"; + nonce: string; + data: string; +} + +export interface ArRpcLinkEvent { + type: "link"; + nonce: string; + data: string; +} + +export interface ArRpcHostAckInviteEvent { + type: "ack-invite"; + nonce: string; + data: boolean; +} + +export interface ArRpcHostAckLinkEvent { + type: "ack-link"; + nonce: string; + data: boolean; +} diff --git a/src/main/arrpc/worker.ts b/src/main/arrpc/worker.ts new file mode 100644 index 0000000..f994c43 --- /dev/null +++ b/src/main/arrpc/worker.ts @@ -0,0 +1,60 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import Server from "arrpc"; +import { randomUUID } from "crypto"; +import { MessagePort, workerData } from "worker_threads"; + +import { ArRpcEvent, ArRpcHostEvent } from "./types"; + +let server: any; + +type InviteCallback = (valid: boolean) => void; +type LinkCallback = InviteCallback; + +const inviteCallbacks = new Map(); +const linkCallbacks = new Map(); + +(async function () { + const { workerPort } = workerData as { workerPort: MessagePort }; + + server = await new Server(); + + server.on("activity", (data: any) => { + const event: ArRpcEvent = { + type: "activity", + data: JSON.stringify(data) + }; + workerPort.postMessage(event); + }); + + server.on("invite", (invite: string, callback: InviteCallback) => { + const nonce = randomUUID(); + inviteCallbacks.set(nonce, callback); + + const event: ArRpcEvent = { + type: "invite", + data: invite, + nonce + }; + workerPort.postMessage(event); + }); + + workerPort.on("message", (e: ArRpcHostEvent) => { + switch (e.type) { + case "ack-invite": { + inviteCallbacks.get(e.nonce)?.(e.data); + inviteCallbacks.delete(e.nonce); + break; + } + case "ack-link": { + linkCallbacks.get(e.nonce)?.(e.data); + linkCallbacks.delete(e.nonce); + break; + } + } + }); +})(); diff --git a/src/shared/IpcEvents.ts b/src/shared/IpcEvents.ts index 1097989..03126d2 100644 --- a/src/shared/IpcEvents.ts +++ b/src/shared/IpcEvents.ts @@ -49,8 +49,6 @@ export const enum IpcEvents { VIRT_MIC_START_SYSTEM = "VCD_VIRT_MIC_START_ALL", VIRT_MIC_STOP = "VCD_VIRT_MIC_STOP", - ARRPC_ACTIVITY = "VCD_ARRPC_ACTIVITY", - CLIPBOARD_COPY_IMAGE = "VCD_CLIPBOARD_COPY_IMAGE", DEBUG_LAUNCH_GPU = "VCD_DEBUG_LAUNCH_GPU", From 4baf6de4729c3cf389376c892068ec065931b05b Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 6 Jul 2025 17:54:23 +0200 Subject: [PATCH 24/30] arrpc: fix link handling --- src/main/arrpc/index.ts | 20 +++++++------------- src/main/arrpc/types.ts | 3 ++- src/main/arrpc/worker.ts | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/main/arrpc/index.ts b/src/main/arrpc/index.ts index d5dd214..d4d663d 100644 --- a/src/main/arrpc/index.ts +++ b/src/main/arrpc/index.ts @@ -29,19 +29,19 @@ export async function initArRPC() { transferList: [workerPort] }); - hostPort.on("message", async (e: ArRpcEvent) => { - switch (e.type) { + hostPort.on("message", async ({ type, nonce, data }: ArRpcEvent) => { + switch (type) { case "activity": { - sendRendererCommand(IpcCommands.RPC_ACTIVITY, e.data); + sendRendererCommand(IpcCommands.RPC_ACTIVITY, data); break; } case "invite": { - const invite = String(e.data); + const invite = String(data); const response: ArRpcHostEvent = { type: "ack-invite", - nonce: e.nonce, + nonce, data: false }; @@ -56,19 +56,13 @@ export async function initArRPC() { } case "link": { - const link = String(e.data); - const response: ArRpcHostEvent = { type: "ack-link", - nonce: e.nonce, + nonce: nonce, data: false }; - if (!inviteCodeRegex.test(link)) { - return hostPort.postMessage(response); - } - - response.data = await sendRendererCommand(IpcCommands.RPC_DEEP_LINK, link).catch(() => false); + response.data = await sendRendererCommand(IpcCommands.RPC_DEEP_LINK, data).catch(() => false); hostPort.postMessage(response); break; diff --git a/src/main/arrpc/types.ts b/src/main/arrpc/types.ts index 51492ed..6e2c7ee 100644 --- a/src/main/arrpc/types.ts +++ b/src/main/arrpc/types.ts @@ -9,6 +9,7 @@ export type ArRpcHostEvent = ArRpcHostAckInviteEvent | ArRpcHostAckLinkEvent; export interface ArRpcActivityEvent { type: "activity"; + nonce: string; data: string; } @@ -21,7 +22,7 @@ export interface ArRpcInviteEvent { export interface ArRpcLinkEvent { type: "link"; nonce: string; - data: string; + data: any; } export interface ArRpcHostAckInviteEvent { diff --git a/src/main/arrpc/worker.ts b/src/main/arrpc/worker.ts index f994c43..4c2c778 100644 --- a/src/main/arrpc/worker.ts +++ b/src/main/arrpc/worker.ts @@ -26,7 +26,8 @@ const linkCallbacks = new Map(); server.on("activity", (data: any) => { const event: ArRpcEvent = { type: "activity", - data: JSON.stringify(data) + data: JSON.stringify(data), + nonce: randomUUID() }; workerPort.postMessage(event); }); @@ -43,6 +44,18 @@ const linkCallbacks = new Map(); workerPort.postMessage(event); }); + server.on("link", async (data: any, callback: LinkCallback) => { + const nonce = randomUUID(); + linkCallbacks.set(nonce, callback); + + const event: ArRpcEvent = { + type: "link", + data, + nonce + }; + workerPort.postMessage(event); + }); + workerPort.on("message", (e: ArRpcHostEvent) => { switch (e.type) { case "ack-invite": { From fde447bc1d6e3f213531acc6ac961a6eb0e0cbc0 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sun, 6 Jul 2025 18:57:57 +0200 Subject: [PATCH 25/30] improve about window --- src/main/about.ts | 20 ++++++++---- static/views/about.html | 56 ++++++++++++++++++++++++++-------- static/views/first-launch.html | 2 ++ static/views/style.css | 7 +++++ 4 files changed, 67 insertions(+), 18 deletions(-) diff --git a/src/main/about.ts b/src/main/about.ts index 88c3d65..bed2f34 100644 --- a/src/main/about.ts +++ b/src/main/about.ts @@ -4,25 +4,33 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { BrowserWindow } from "electron"; +import { app, BrowserWindow } from "electron"; import { join } from "path"; import { ICON_PATH, VIEW_DIR } from "shared/paths"; import { makeLinksOpenExternally } from "./utils/makeLinksOpenExternally"; -export function createAboutWindow() { +export async function createAboutWindow() { + const height = 750; + const width = height * (4 / 3); + const about = new BrowserWindow({ center: true, autoHideMenuBar: true, icon: ICON_PATH, - webPreferences: { - preload: join(__dirname, "updaterPreload.js") - } + height, + width }); makeLinksOpenExternally(about); - about.loadFile(join(VIEW_DIR, "about.html")); + const data = new URLSearchParams({ + APP_VERSION: app.getVersion() + }); + + about.loadFile(join(VIEW_DIR, "about.html"), { + search: data.toString() + }); return about; } diff --git a/static/views/about.html b/static/views/about.html index 6e66b2f..38ea463 100644 --- a/static/views/about.html +++ b/static/views/about.html @@ -1,4 +1,6 @@ + About Vesktop + -

Vesktop

-

- Vesktop is a free/libre cross platform desktop app aiming to give you a snappier Discord experience with Vencord - pre-installed -

+

Vesktop v{{APP_VERSION}}

+

Vesktop is a cross platform Discord Desktop client, aiming to give you a better Discord experience

Links

+
+

License

+

+ Vesktop is licensed under the + GNU General Public License v3.0. +
+ This is free software, and you are welcome to redistribute it under certain conditions; see the license for + details. +

+
+

Acknowledgements

These awesome libraries empower Vesktop

@@ -53,23 +72,36 @@
  • rohrkabel - - A C++ RAII Pipewire-API Wrapper + - A C++ RAII Pipewire-API Wrapper
  • And many more awesome open source librariesmore open source libraries
  • - diff --git a/static/views/first-launch.html b/static/views/first-launch.html index 0372167..769dc77 100644 --- a/static/views/first-launch.html +++ b/static/views/first-launch.html @@ -1,4 +1,6 @@ + Vesktop Setup +