this repo has no description

Compare changes

Choose any two refs to compare.

Changed files
+2397 -2024
.github
nix
packages
scripts
+4 -8
.github/workflows/browser.yml
··· 10 10 name: Browser extension builds 11 11 runs-on: ubuntu-latest 12 12 steps: 13 - - uses: actions/checkout@v3 14 - 15 - - uses: pnpm/action-setup@v2 16 - with: 17 - version: 9 18 - run_install: false 19 - - uses: actions/setup-node@v3 13 + - uses: actions/checkout@v4 14 + - uses: pnpm/action-setup@v4 15 + - uses: actions/setup-node@v4 20 16 with: 21 - node-version: 18 17 + node-version: 22 22 18 cache: pnpm 23 19 24 20 - name: Install dependencies
+4 -8
.github/workflows/lint.yml
··· 9 9 name: Lint commits 10 10 runs-on: ubuntu-latest 11 11 steps: 12 - - uses: actions/checkout@v3 13 - 14 - - uses: pnpm/action-setup@v2 15 - with: 16 - version: 9 17 - run_install: false 18 - - uses: actions/setup-node@v3 12 + - uses: actions/checkout@v4 13 + - uses: pnpm/action-setup@v4 14 + - uses: actions/setup-node@v4 19 15 with: 20 - node-version: 18 16 + node-version: 22 21 17 cache: pnpm 22 18 23 19 - name: Install dependencies
+4 -8
.github/workflows/nightly.yml
··· 15 15 name: Nightly builds on GitHub Pages 16 16 runs-on: ubuntu-latest 17 17 steps: 18 - - uses: actions/checkout@v3 19 - 20 - - uses: pnpm/action-setup@v2 21 - with: 22 - version: 9 23 - run_install: false 24 - - uses: actions/setup-node@v3 18 + - uses: actions/checkout@v4 19 + - uses: pnpm/action-setup@v4 20 + - uses: actions/setup-node@v4 25 21 with: 26 - node-version: 18 22 + node-version: 22 27 23 cache: pnpm 28 24 29 25 - name: Install dependencies
+16
.github/workflows/nix.yml
··· 1 + name: Check Nix flake 2 + on: [push, pull_request] 3 + 4 + permissions: 5 + checks: write 6 + 7 + jobs: 8 + nix: 9 + name: Check Nix flake 10 + runs-on: ubuntu-latest 11 + steps: 12 + - uses: actions/checkout@v4 13 + - uses: DeterminateSystems/nix-installer-action@main 14 + 15 + - name: Build default flake output 16 + run: nix build
+4 -8
.github/workflows/release.yml
··· 13 13 name: Release builds to GitHub Releases 14 14 runs-on: ubuntu-latest 15 15 steps: 16 - - uses: actions/checkout@v3 17 - 18 - - uses: pnpm/action-setup@v2 19 - with: 20 - version: 9 21 - run_install: false 22 - - uses: actions/setup-node@v3 16 + - uses: actions/checkout@v4 17 + - uses: pnpm/action-setup@v4 18 + - uses: actions/setup-node@v4 23 19 with: 24 - node-version: 18 20 + node-version: 22 25 21 cache: pnpm 26 22 27 23 - name: Install dependencies
+5 -11
.github/workflows/types.yml
··· 11 11 name: Publish types on npm 12 12 runs-on: ubuntu-latest 13 13 steps: 14 - - uses: actions/checkout@v3 15 - 16 - - uses: pnpm/action-setup@v2 17 - with: 18 - version: 9 19 - run_install: false 20 - - uses: actions/setup-node@v3 14 + - uses: actions/checkout@v4 15 + - uses: pnpm/action-setup@v4 16 + - uses: actions/setup-node@v4 21 17 with: 22 - node-version: 18 18 + node-version: 22 23 19 cache: pnpm 24 20 registry-url: https://registry.npmjs.org 25 21 ··· 31 27 run: pnpm run build 32 28 33 29 - name: Publish types 34 - run: | 35 - cd packages/types 36 - pnpm publish --access public --no-git-checks 30 + run: pnpm publish --filter=./packages/types --access public --no-git-checks 37 31 env: 38 32 NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+1 -1
.gitignore
··· 3 3 dist.tar.gz 4 4 .DS_Store 5 5 eslint_report.json 6 - 6 + .eslintcache 7 7 # Nix 8 8 /result 9 9 *.drv
+4 -4
.prettierrc
··· 1 1 { 2 - "printWidth": 120, 3 - "trailingComma": "none", 4 - "tabWidth": 2, 5 - "singleQuote": false 2 + "printWidth": 120, 3 + "trailingComma": "none", 4 + "tabWidth": 2, 5 + "singleQuote": false 6 6 }
+1 -9
CHANGELOG.md
··· 1 1 ## Core 2 2 3 3 - Updated mappings 4 - - Fixed an issue with extensions not being able to bypass CORS in some scenarios 5 - - Added the ability for extensions to bypass CSP (thanks @uwx!) 6 - - Updated ZenFS for browser support 7 - 8 - ## Libraries 9 - 10 - - Improved typing of the Commands library 11 - - Added more logging to Spacepack 12 - - Deprecated Rocketship, as Discord has fixed screenshare on Linux 4 + - Fixed using remapped paths as patch finds not working
+4 -73
flake.lock
··· 18 18 "type": "github" 19 19 } 20 20 }, 21 - "flake-utils_2": { 22 - "inputs": { 23 - "systems": "systems_2" 24 - }, 25 - "locked": { 26 - "lastModified": 1701680307, 27 - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", 28 - "owner": "numtide", 29 - "repo": "flake-utils", 30 - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", 31 - "type": "github" 32 - }, 33 - "original": { 34 - "owner": "numtide", 35 - "repo": "flake-utils", 36 - "type": "github" 37 - } 38 - }, 39 21 "nixpkgs": { 40 22 "locked": { 41 - "lastModified": 1728067476, 42 - "narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=", 23 + "lastModified": 1744232761, 24 + "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", 43 25 "owner": "NixOS", 44 26 "repo": "nixpkgs", 45 - "rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030", 27 + "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14", 46 28 "type": "github" 47 29 }, 48 30 "original": { 49 31 "owner": "NixOS", 50 - "ref": "nixos-24.05", 51 - "repo": "nixpkgs", 52 - "type": "github" 53 - } 54 - }, 55 - "nixpkgs_2": { 56 - "locked": { 57 - "lastModified": 1736344531, 58 - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", 59 - "owner": "nixos", 60 - "repo": "nixpkgs", 61 - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", 62 - "type": "github" 63 - }, 64 - "original": { 65 - "owner": "nixos", 66 32 "ref": "nixos-unstable", 67 33 "repo": "nixpkgs", 68 34 "type": "github" 69 35 } 70 36 }, 71 - "pnpm2nix": { 72 - "inputs": { 73 - "flake-utils": "flake-utils_2", 74 - "nixpkgs": "nixpkgs_2" 75 - }, 76 - "locked": { 77 - "lastModified": 1736457458, 78 - "narHash": "sha256-eiw+hAsxavEgBfhwrktNI2hwvgeVDzBDYClx/yqka78=", 79 - "owner": "NotNite", 80 - "repo": "pnpm2nix-nzbr", 81 - "rev": "4ac61c6a50623da937dca005e3dbcb8862aafb83", 82 - "type": "github" 83 - }, 84 - "original": { 85 - "owner": "NotNite", 86 - "repo": "pnpm2nix-nzbr", 87 - "type": "github" 88 - } 89 - }, 90 37 "root": { 91 38 "inputs": { 92 39 "flake-utils": "flake-utils", 93 - "nixpkgs": "nixpkgs", 94 - "pnpm2nix": "pnpm2nix" 40 + "nixpkgs": "nixpkgs" 95 41 } 96 42 }, 97 43 "systems": { 98 - "locked": { 99 - "lastModified": 1681028828, 100 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 101 - "owner": "nix-systems", 102 - "repo": "default", 103 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 104 - "type": "github" 105 - }, 106 - "original": { 107 - "owner": "nix-systems", 108 - "repo": "default", 109 - "type": "github" 110 - } 111 - }, 112 - "systems_2": { 113 44 "locked": { 114 45 "lastModified": 1681028828, 115 46 "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+3 -4
flake.nix
··· 2 2 description = "Yet another Discord mod"; 3 3 4 4 inputs = { 5 - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 6 flake-utils.url = "github:numtide/flake-utils"; 7 - pnpm2nix.url = "github:NotNite/pnpm2nix-nzbr"; 8 7 }; 9 8 10 - outputs = { self, nixpkgs, flake-utils, pnpm2nix }: 11 - let overlay = import ./nix/overlay.nix { inherit pnpm2nix; }; 9 + outputs = { self, nixpkgs, flake-utils }: 10 + let overlay = import ./nix/overlay.nix { }; 12 11 in flake-utils.lib.eachDefaultSystem (system: 13 12 let 14 13 pkgs = import nixpkgs {
+46 -17
nix/default.nix
··· 1 - { pkgs, mkPnpmPackage }: 1 + { 2 + lib, 3 + stdenv, 4 + nodejs_22, 5 + pnpm_10, 6 + }: 2 7 3 - mkPnpmPackage rec { 4 - workspace = ./..; 8 + stdenv.mkDerivation (finalAttrs: { 9 + pname = "moonlight"; 10 + version = (builtins.fromJSON (builtins.readFile ./../package.json)).version; 11 + 5 12 src = ./..; 6 13 7 - # Work around a bug with how it expects dist 8 - components = [ 9 - "packages/core" 10 - "packages/core-extensions" 11 - "packages/injector" 12 - "packages/node-preload" 13 - "packages/types" 14 - "packages/web-preload" 14 + outputs = [ "out" "firefox" ]; 15 + 16 + nativeBuildInputs = [ 17 + nodejs_22 18 + pnpm_10.configHook 15 19 ]; 16 - distDirs = [ "dist" ]; 20 + 21 + pnpmDeps = pnpm_10.fetchDeps { 22 + inherit (finalAttrs) pname version src; 23 + hash = "sha256-I+zRCUqJabpGJRFBGW0NrM9xzyzeCjioF54zlCpynBU="; 24 + }; 25 + 26 + env = { 27 + NODE_ENV = "production"; 28 + MOONLIGHT_VERSION = "v${finalAttrs.version}"; 29 + }; 30 + 31 + buildPhase = '' 32 + runHook preBuild 33 + 34 + pnpm run build 35 + pnpm run browser-mv2 36 + 37 + runHook postBuild 38 + ''; 39 + 40 + installPhase = '' 41 + runHook preInstall 17 42 18 - copyNodeModules = true; 19 - buildPhase = "pnpm run build"; 20 - installPhase = "cp -r dist $out"; 43 + cp -r dist $out 44 + 45 + mkdir -p $firefox/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/ 46 + mv $out/browser-mv2 $firefox/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/{0fb6d66f-f22d-4555-a87b-34ef4bea5e2a} 47 + 48 + runHook postInstall 49 + ''; 21 50 22 - meta = with pkgs.lib; { 51 + meta = with lib; { 23 52 description = "Yet another Discord mod"; 24 53 homepage = "https://moonlight-mod.github.io/"; 25 54 license = licenses.lgpl3; 26 55 maintainers = with maintainers; [ notnite ]; 27 56 }; 28 - } 57 + })
+3 -6
nix/overlay.nix
··· 1 - { pnpm2nix }: 1 + { ... }: 2 2 3 3 let 4 4 nameTable = { ··· 29 29 ''; 30 30 31 31 packageJson = '' 32 - {"name":"discord","main":"./injector.js","private":true} 32 + {"name":"${name}","main":"./injector.js","private":true} 33 33 ''; 34 34 35 35 in old.installPhase + "\n" + '' ··· 49 49 ''; 50 50 }); 51 51 in final: prev: rec { 52 - moonlight-mod = final.callPackage ./default.nix { 53 - pkgs = final; 54 - mkPnpmPackage = pnpm2nix.packages.${final.system}.mkPnpmPackage; 55 - }; 52 + moonlight-mod = final.callPackage ./default.nix { }; 56 53 discord = mkOverride prev moonlight-mod "discord"; 57 54 discord-ptb = mkOverride prev moonlight-mod "discord-ptb"; 58 55 discord-canary = mkOverride prev moonlight-mod "discord-canary";
+23 -12
package.json
··· 1 1 { 2 2 "name": "moonlight", 3 - "version": "1.3.6", 3 + "version": "1.3.14", 4 + "packageManager": "pnpm@10.7.1", 4 5 "description": "Yet another Discord mod", 5 - "homepage": "https://moonlight-mod.github.io/", 6 6 "license": "LGPL-3.0-or-later", 7 + "homepage": "https://moonlight-mod.github.io/", 7 8 "repository": { 8 9 "type": "git", 9 10 "url": "git+https://github.com/moonlight-mod/moonlight.git" ··· 11 12 "bugs": { 12 13 "url": "https://github.com/moonlight-mod/moonlight/issues" 13 14 }, 15 + "engineStrict": true, 16 + "engines": { 17 + "node": ">=22", 18 + "pnpm": ">=10", 19 + "npm": "pnpm", 20 + "yarn": "pnpm" 21 + }, 14 22 "scripts": { 15 23 "build": "node build.mjs", 16 24 "dev": "node build.mjs --watch", ··· 18 26 "browser": "node build.mjs --browser", 19 27 "browser-mv2": "node build.mjs --browser --mv2", 20 28 "lint": "eslint packages", 21 - "lint:fix": "eslint packages --fix", 22 - "lint:report": "eslint --output-file eslint_report.json --format json packages", 29 + "lint:fix": "pnpm lint --fix", 30 + "lint:report": "pnpm lint --output-file eslint_report.json --format json", 23 31 "typecheck": "tsc --noEmit", 24 32 "check": "pnpm run lint && pnpm run typecheck", 25 - "prepare": "husky install" 33 + "prepare": "husky install", 34 + "updates": "pnpm taze -r" 26 35 }, 27 36 "devDependencies": { 28 - "esbuild": "^0.19.3", 29 - "esbuild-copy-static-files": "^0.1.0", 30 - "eslint": "^9.12.0", 31 - "@moonlight-mod/eslint-config": "github:moonlight-mod/eslint-config", 32 - "husky": "^8.0.3", 33 - "prettier": "^3.1.0", 34 - "typescript": "^5.3.2" 37 + "@moonlight-mod/eslint-config": "catalog:dev", 38 + "@types/node": "catalog:dev", 39 + "esbuild": "catalog:dev", 40 + "esbuild-copy-static-files": "catalog:dev", 41 + "eslint": "catalog:dev", 42 + "husky": "catalog:dev", 43 + "prettier": "catalog:dev", 44 + "taze": "catalog:dev", 45 + "typescript": "catalog:dev" 35 46 } 36 47 }
+2 -1
packages/browser/blockLoading.json
··· 6 6 "type": "block" 7 7 }, 8 8 "condition": { 9 - "urlFilter": "*://discord.com/assets/*.js", 9 + "requestDomains": ["discord.com", "discordapp.com"], 10 + "urlFilter": "*/assets/*.js", 10 11 "resourceTypes": ["script"] 11 12 } 12 13 }
+10 -4
packages/browser/manifest.json
··· 1 1 { 2 + "$schema": "https://json.schemastore.org/chrome-manifest", 2 3 "manifest_version": 3, 3 4 "name": "moonlight", 4 5 "description": "Yet another Discord mod", 5 - "version": "1.3.6", 6 + "version": "1.3.14", 6 7 "permissions": ["declarativeNetRequestWithHostAccess", "webRequest", "scripting", "webNavigation"], 7 - "host_permissions": ["https://moonlight-mod.github.io/*", "https://api.github.com/*", "https://*.discord.com/*"], 8 + "host_permissions": [ 9 + "https://moonlight-mod.github.io/*", 10 + "https://api.github.com/*", 11 + "https://*.discord.com/*", 12 + "https://*.discordapp.com/*" 13 + ], 8 14 "content_scripts": [ 9 15 { 10 16 "js": ["index.js"], 11 - "matches": ["https://*.discord.com/*"], 17 + "matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"], 12 18 "run_at": "document_start", 13 19 "world": "MAIN" 14 20 } ··· 34 40 "web_accessible_resources": [ 35 41 { 36 42 "resources": ["index.js"], 37 - "matches": ["https://*.discord.com/*"] 43 + "matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"] 38 44 } 39 45 ] 40 46 }
+12 -6
packages/browser/manifestv2.json
··· 1 1 { 2 + "$schema": "https://json.schemastore.org/chrome-manifest", 2 3 "manifest_version": 2, 3 4 "name": "moonlight", 4 5 "description": "Yet another Discord mod", 5 - "version": "1.3.6", 6 + "version": "1.3.14", 6 7 "permissions": [ 7 8 "webRequest", 8 9 "webRequestBlocking", 9 10 "scripting", 10 11 "webNavigation", 11 - "https://*.discord.com/assets/*.js", 12 + "https://*.discord.com/*", 13 + "https://*.discordapp.com/*", 12 14 "https://moonlight-mod.github.io/*", 13 - "https://api.github.com/*", 14 - "https://*.discord.com/*" 15 + "https://api.github.com/*" 15 16 ], 16 17 "background": { 17 18 "scripts": ["background.js"] ··· 19 20 "content_scripts": [ 20 21 { 21 22 "js": ["index.js"], 22 - "matches": ["https://*.discord.com/*"], 23 + "matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"], 23 24 "run_at": "document_start", 24 25 "world": "MAIN" 25 26 } 26 - ] 27 + ], 28 + "browser_specific_settings": { 29 + "gecko": { 30 + "id": "{0fb6d66f-f22d-4555-a87b-34ef4bea5e2a}" 31 + } 32 + } 27 33 }
+12 -2
packages/browser/package.json
··· 1 1 { 2 2 "name": "@moonlight-mod/browser", 3 3 "private": true, 4 + "engines": { 5 + "node": ">=22", 6 + "pnpm": ">=10", 7 + "npm": "pnpm", 8 + "yarn": "pnpm" 9 + }, 4 10 "dependencies": { 5 11 "@moonlight-mod/core": "workspace:*", 6 12 "@moonlight-mod/types": "workspace:*", 7 13 "@moonlight-mod/web-preload": "workspace:*", 8 - "@zenfs/core": "^1.8.8", 9 - "@zenfs/dom": "^1.1.3" 14 + "@zenfs/core": "catalog:prod", 15 + "@zenfs/dom": "catalog:prod" 16 + }, 17 + "engineStrict": true, 18 + "devDependencies": { 19 + "@types/chrome": "catalog:dev" 10 20 } 11 21 }
+55 -70
packages/browser/src/background-mv2.js
··· 1 1 /* eslint-disable no-console */ 2 2 /* eslint-disable no-undef */ 3 3 4 - const starterUrls = ["web.", "sentry."]; 5 - let blockLoading = true; 6 - let doing = false; 7 - let collectedUrls = new Set(); 4 + const scriptUrls = ["web.", "sentry."]; 5 + let blockedScripts = new Set(); 8 6 9 - chrome.webNavigation.onBeforeNavigate.addListener(async (details) => { 10 - const url = new URL(details.url); 11 - if (!blockLoading && url.hostname.endsWith("discord.com")) { 12 - console.log("Blocking", details.url); 13 - blockLoading = true; 14 - collectedUrls.clear(); 15 - } 16 - }); 7 + chrome.webRequest.onBeforeRequest.addListener( 8 + async (details) => { 9 + if (details.tabId === -1) return; 17 10 18 - async function doTheThing(urls, tabId) { 19 - console.log("Doing", urls, tabId); 11 + const url = new URL(details.url); 12 + const hasUrl = scriptUrls.some((scriptUrl) => { 13 + return ( 14 + details.url.includes(scriptUrl) && 15 + !url.searchParams.has("inj") && 16 + (url.host.endsWith("discord.com") || url.host.endsWith("discordapp.com")) 17 + ); 18 + }); 19 + if (hasUrl) blockedScripts.add(details.url); 20 20 21 - blockLoading = false; 21 + if (blockedScripts.size === scriptUrls.length) { 22 + const blockedScriptsCopy = Array.from(blockedScripts); 23 + blockedScripts.clear(); 22 24 23 - try { 24 - await chrome.scripting.executeScript({ 25 - target: { tabId }, 26 - world: "MAIN", 27 - args: [urls], 28 - func: async (urls) => { 29 - try { 30 - await window._moonlightBrowserInit(); 31 - } catch (e) { 32 - console.log(e); 33 - } 25 + setTimeout(async () => { 26 + console.log("Starting moonlight"); 27 + await chrome.scripting.executeScript({ 28 + target: { tabId: details.tabId }, 29 + world: "MAIN", 30 + args: [blockedScriptsCopy], 31 + func: async (blockedScripts) => { 32 + console.log("Initializing moonlight"); 33 + try { 34 + await window._moonlightBrowserInit(); 35 + } catch (e) { 36 + console.error(e); 37 + } 34 38 35 - const scripts = [...document.querySelectorAll("script")].filter( 36 - (script) => script.src && urls.some((url) => url.includes(script.src)) 37 - ); 39 + console.log("Readding scripts"); 40 + try { 41 + const scripts = [...document.querySelectorAll("script")].filter( 42 + (script) => script.src && blockedScripts.some((url) => url.includes(script.src)) 43 + ); 38 44 39 - // backwards 40 - urls.reverse(); 41 - for (const url of urls) { 42 - const script = scripts.find((script) => url.includes(script.src)); 43 - console.log("adding new script", script); 45 + blockedScripts.reverse(); 46 + for (const url of blockedScripts) { 47 + if (url.includes("/sentry.")) continue; 44 48 45 - const newScript = document.createElement("script"); 46 - for (const { name, value } of script.attributes) { 47 - newScript.setAttribute(name, value); 49 + const script = scripts.find((script) => url.includes(script.src)); 50 + const newScript = document.createElement("script"); 51 + for (const attr of script.attributes) { 52 + if (attr.name === "src") attr.value += "?inj"; 53 + newScript.setAttribute(attr.name, attr.value); 54 + } 55 + script.remove(); 56 + document.documentElement.appendChild(newScript); 57 + } 58 + } catch (e) { 59 + console.error(e); 60 + } 48 61 } 49 - 50 - script.remove(); 51 - document.documentElement.appendChild(newScript); 52 - } 53 - } 54 - }); 55 - } catch (e) { 56 - console.log(e); 57 - } 58 - 59 - doing = false; 60 - collectedUrls.clear(); 61 - } 62 - 63 - chrome.webRequest.onBeforeRequest.addListener( 64 - async (details) => { 65 - if (starterUrls.some((url) => details.url.includes(url))) { 66 - console.log("Adding", details.url); 67 - collectedUrls.add(details.url); 62 + }); 63 + }, 0); 68 64 } 69 65 70 - if (collectedUrls.size === starterUrls.length) { 71 - if (doing) return; 72 - if (!blockLoading) return; 73 - doing = true; 74 - const urls = [...collectedUrls]; 75 - const tabId = details.tabId; 76 - 77 - // yes this is a load-bearing sleep 78 - setTimeout(() => doTheThing(urls, tabId), 0); 79 - } 80 - 81 - if (blockLoading) return { cancel: true }; 66 + if (hasUrl) return { cancel: true }; 82 67 }, 83 68 { 84 - urls: ["https://*.discord.com/assets/*.js"] 69 + urls: ["https://*.discord.com/assets/*.js", "https://*.discordapp.com/assets/*.js"] 85 70 }, 86 71 ["blocking"] 87 72 ); ··· 94 79 ) 95 80 }; 96 81 }, 97 - { urls: ["https://*.discord.com/*"] }, 82 + { urls: ["https://*.discord.com/*", "https://*.discordapp.com/*"] }, 98 83 ["blocking", "responseHeaders"] 99 84 );
+37 -39
packages/browser/src/background.js
··· 1 1 /* eslint-disable no-console */ 2 2 /* eslint-disable no-undef */ 3 3 4 - const starterUrls = ["web.", "sentry."]; 5 - let blockLoading = true; 6 - let doing = false; 7 - let collectedUrls = new Set(); 4 + const scriptUrls = ["web.", "sentry."]; 5 + let blockedScripts = new Set(); 8 6 9 7 chrome.webNavigation.onBeforeNavigate.addListener(async (details) => { 10 8 const url = new URL(details.url); 11 - if (!blockLoading && url.hostname.endsWith("discord.com")) { 9 + if ( 10 + !url.searchParams.has("inj") && 11 + (url.hostname.endsWith("discord.com") || url.hostname.endsWith("discordapp.com")) 12 + ) { 13 + console.log("Enabling block ruleset"); 12 14 await chrome.declarativeNetRequest.updateEnabledRulesets({ 13 15 enableRulesetIds: ["modifyResponseHeaders", "blockLoading"] 14 16 }); 15 - blockLoading = true; 16 - collectedUrls.clear(); 17 17 } 18 18 }); 19 19 20 20 chrome.webRequest.onBeforeRequest.addListener( 21 21 async (details) => { 22 22 if (details.tabId === -1) return; 23 - if (starterUrls.some((url) => details.url.includes(url))) { 24 - console.log("Adding", details.url); 25 - collectedUrls.add(details.url); 26 - } 27 23 28 - if (collectedUrls.size === starterUrls.length) { 29 - if (doing) return; 30 - if (!blockLoading) return; 31 - doing = true; 32 - const urls = [...collectedUrls]; 33 - console.log("Doing", urls); 24 + const url = new URL(details.url); 25 + const hasUrl = scriptUrls.some((scriptUrl) => { 26 + return ( 27 + details.url.includes(scriptUrl) && 28 + !url.searchParams.has("inj") && 29 + (url.hostname.endsWith("discord.com") || url.hostname.endsWith("discordapp.com")) 30 + ); 31 + }); 32 + 33 + if (hasUrl) blockedScripts.add(details.url); 34 + 35 + if (blockedScripts.size === scriptUrls.length) { 36 + const blockedScriptsCopy = Array.from(blockedScripts); 37 + blockedScripts.clear(); 34 38 35 39 console.log("Running moonlight script"); 36 40 try { ··· 40 44 files: ["index.js"] 41 45 }); 42 46 } catch (e) { 43 - console.log(e); 47 + console.error(e); 44 48 } 45 49 46 50 console.log("Initializing moonlight"); ··· 52 56 try { 53 57 await window._moonlightBrowserInit(); 54 58 } catch (e) { 55 - console.log(e); 59 + console.error(e); 56 60 } 57 61 } 58 62 }); ··· 60 64 console.log(e); 61 65 } 62 66 63 - console.log("Updating rulesets"); 67 + console.log("Disabling block ruleset"); 64 68 try { 65 - blockLoading = false; 66 69 await chrome.declarativeNetRequest.updateEnabledRulesets({ 67 70 disableRulesetIds: ["blockLoading"], 68 71 enableRulesetIds: ["modifyResponseHeaders"] 69 72 }); 70 73 } catch (e) { 71 - console.log(e); 74 + console.error(e); 72 75 } 73 76 74 77 console.log("Readding scripts"); ··· 76 79 await chrome.scripting.executeScript({ 77 80 target: { tabId: details.tabId }, 78 81 world: "MAIN", 79 - args: [urls], 80 - func: async (urls) => { 82 + args: [blockedScriptsCopy], 83 + func: async (blockedScripts) => { 81 84 const scripts = [...document.querySelectorAll("script")].filter( 82 - (script) => script.src && urls.some((url) => url.includes(script.src)) 85 + (script) => script.src && blockedScripts.some((url) => url.includes(script.src)) 83 86 ); 84 87 85 - // backwards 86 - urls.reverse(); 87 - for (const url of urls) { 88 - const script = scripts.find((script) => url.includes(script.src)); 89 - console.log("adding new script", script); 88 + blockedScripts.reverse(); 89 + for (const url of blockedScripts) { 90 + if (url.includes("/sentry.")) continue; 90 91 92 + const script = scripts.find((script) => url.includes(script.src)); 91 93 const newScript = document.createElement("script"); 92 - for (const { name, value } of script.attributes) { 93 - newScript.setAttribute(name, value); 94 + for (const attr of script.attributes) { 95 + if (attr.name === "src") attr.value += "?inj"; 96 + newScript.setAttribute(attr.name, attr.value); 94 97 } 95 - 96 98 script.remove(); 97 99 document.documentElement.appendChild(newScript); 98 100 } 99 101 } 100 102 }); 101 103 } catch (e) { 102 - console.log(e); 104 + console.error(e); 103 105 } 104 - 105 - console.log("Done"); 106 - doing = false; 107 - collectedUrls.clear(); 108 106 } 109 107 }, 110 108 { 111 - urls: ["*://*.discord.com/assets/*.js"] 109 + urls: ["*://*.discord.com/assets/*.js", "*://*.discordapp.com/assets/*.js"] 112 110 } 113 111 );
+8
packages/browser/src/index.ts
··· 8 8 import { IndexedDB } from "@zenfs/dom"; 9 9 import { configureSingle } from "@zenfs/core"; 10 10 import * as fs from "@zenfs/core/promises"; 11 + import { NodeEventPayloads, NodeEventType } from "@moonlight-mod/types/core/event"; 12 + import { createEventEmitter } from "@moonlight-mod/core/util/event"; 11 13 12 14 function getParts(path: string) { 13 15 if (path.startsWith("/")) path = path.substring(1); ··· 88 90 dirname(path) { 89 91 const parts = getParts(path); 90 92 return "/" + parts.slice(0, parts.length - 1).join("/"); 93 + }, 94 + basename(path) { 95 + const parts = getParts(path); 96 + return parts[parts.length - 1]; 91 97 } 92 98 }, 93 99 // TODO ··· 110 116 processedExtensions, 111 117 nativesCache: {}, 112 118 isBrowser: true, 119 + events: createEventEmitter<NodeEventType, NodeEventPayloads>(), 113 120 114 121 version: MOONLIGHT_VERSION, 115 122 branch: MOONLIGHT_BRANCH as MoonlightBranch, ··· 141 148 async writeConfig(newConfig) { 142 149 await writeConfig(newConfig); 143 150 config = newConfig; 151 + this.events.dispatchEvent(NodeEventType.ConfigSaved, newConfig); 144 152 } 145 153 }; 146 154
+1
packages/browser/tsconfig.json
··· 1 1 { 2 2 "extends": "../../tsconfig.json", 3 3 "compilerOptions": { 4 + "lib": ["DOM", "ESNext", "ESNext.AsyncIterable"], 4 5 "module": "ES2022" 5 6 } 6 7 }
+7
packages/core/package.json
··· 4 4 "exports": { 5 5 "./*": "./src/*.ts" 6 6 }, 7 + "engineStrict": true, 8 + "engines": { 9 + "node": ">=22", 10 + "pnpm": ">=10", 11 + "npm": "pnpm", 12 + "yarn": "pnpm" 13 + }, 7 14 "dependencies": { 8 15 "@moonlight-mod/types": "workspace:*" 9 16 }
+5 -5
packages/core/src/extension/loader.ts
··· 13 13 import calculateDependencies from "../util/dependency"; 14 14 import { createEventEmitter } from "../util/event"; 15 15 import { registerStyles } from "../styles"; 16 - import { EventPayloads, EventType } from "@moonlight-mod/types/core/event"; 16 + import { WebEventPayloads, WebEventType } from "@moonlight-mod/types/core/event"; 17 17 18 18 const logger = new Logger("core/extension/loader"); 19 19 ··· 202 202 } 203 203 204 204 export async function loadProcessedExtensions({ extensions, dependencyGraph }: ProcessedExtensions) { 205 - const eventEmitter = createEventEmitter<EventType, EventPayloads>(); 205 + const eventEmitter = createEventEmitter<WebEventType, WebEventPayloads>(); 206 206 const finished: Set<string> = new Set(); 207 207 208 208 logger.trace( ··· 224 224 } 225 225 226 226 function done() { 227 - eventEmitter.removeEventListener(EventType.ExtensionLoad, cb); 227 + eventEmitter.removeEventListener(WebEventType.ExtensionLoad, cb); 228 228 r(); 229 229 } 230 230 231 - eventEmitter.addEventListener(EventType.ExtensionLoad, cb); 231 + eventEmitter.addEventListener(WebEventType.ExtensionLoad, cb); 232 232 if (finished.has(dep)) done(); 233 233 }) 234 234 ); ··· 242 242 await loadExt(ext); 243 243 244 244 finished.add(ext.id); 245 - eventEmitter.dispatchEvent(EventType.ExtensionLoad, ext.id); 245 + eventEmitter.dispatchEvent(WebEventType.ExtensionLoad, ext.id); 246 246 logger.debug(`Loaded "${ext.id}"`); 247 247 } 248 248
+1 -4
packages/core/src/extension.ts
··· 129 129 const ret: DetectedExtension[] = []; 130 130 const seen = new Set<string>(); 131 131 132 - const coreExtensionsFs: Record<string, string> = JSON.parse( 133 - // @ts-expect-error shut up 134 - _moonlight_coreExtensionsStr 135 - ); 132 + const coreExtensionsFs: Record<string, string> = JSON.parse(_moonlight_coreExtensionsStr); 136 133 const coreExtensions = Array.from(new Set(Object.keys(coreExtensionsFs).map((x) => x.split("/")[0]))); 137 134 138 135 for (const ext of coreExtensions) {
+3
packages/core/src/fs.ts
··· 48 48 }, 49 49 dirname(dir) { 50 50 return path.dirname(dir); 51 + }, 52 + basename(dir) { 53 + return path.basename(dir); 51 54 } 52 55 }; 53 56 }
+46 -32
packages/core/src/patch.ts
··· 11 11 } from "@moonlight-mod/types"; 12 12 import Logger from "./util/logger"; 13 13 import calculateDependencies, { Dependency } from "./util/dependency"; 14 - import { EventType } from "@moonlight-mod/types/core/event"; 14 + import { WebEventType } from "@moonlight-mod/types/core/event"; 15 15 import { processFind, processReplace, testFind } from "./util/patch"; 16 16 17 17 const logger = new Logger("core/patch"); ··· 66 66 const moduleCache: Record<string, string> = {}; 67 67 const patched: Record<string, Array<string>> = {}; 68 68 69 - function patchModules(entry: WebpackJsonpEntry[1]) { 70 - function patchModule(id: string, patchId: string, replaced: string) { 71 - // Store what extensions patched what modules for easier debugging 72 - patched[id] = patched[id] || []; 73 - patched[id].push(patchId); 69 + function createSourceURL(id: string) { 70 + const remapped = Object.entries(moonlight.moonmap.modules).find((m) => m[1] === id)?.[0]; 71 + 72 + if (remapped) { 73 + return `// Webpack Module: ${id}\n//# sourceURL=${remapped}`; 74 + } 74 75 75 - // Webpack module arguments are minified, so we replace them with consistent names 76 - // We have to wrap it so things don't break, though 77 - const patchedStr = patched[id].sort().join(", "); 76 + return `//# sourceURL=Webpack-Module/${id.slice(0, 3)}/${id}`; 77 + } 78 78 79 - const wrapped = 80 - `(${replaced}).apply(this, arguments)\n` + 81 - `// Patched by moonlight: ${patchedStr}\n` + 82 - `//# sourceURL=Webpack-Module-${id}`; 79 + function patchModule(id: string, patchId: string, replaced: string, entry: WebpackJsonpEntry[1]) { 80 + // Store what extensions patched what modules for easier debugging 81 + patched[id] = patched[id] ?? []; 82 + patched[id].push(patchId); 83 83 84 - try { 85 - const func = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc; 86 - entry[id] = func; 87 - entry[id].__moonlight = true; 88 - return true; 89 - } catch (e) { 90 - logger.warn("Error constructing function for patch", patchId, e); 91 - patched[id].pop(); 92 - return false; 93 - } 84 + // Webpack module arguments are minified, so we replace them with consistent names 85 + // We have to wrap it so things don't break, though 86 + const patchedStr = patched[id].sort().join(", "); 87 + 88 + const wrapped = 89 + `(${replaced}).apply(this, arguments)\n` + `// Patched by moonlight: ${patchedStr}\n` + createSourceURL(id); 90 + 91 + try { 92 + const func = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc; 93 + entry[id] = func; 94 + entry[id].__moonlight = true; 95 + return true; 96 + } catch (e) { 97 + logger.warn("Error constructing function for patch", patchId, e); 98 + patched[id].pop(); 99 + return false; 94 100 } 101 + } 95 102 103 + function patchModules(entry: WebpackJsonpEntry[1]) { 96 104 // Populate the module cache 97 105 for (const [id, func] of Object.entries(entry)) { 98 106 if (!Object.hasOwn(moduleCache, id) && func.__moonlight !== true) { ··· 108 116 const origModuleString = moduleCache[id]; 109 117 let moduleString = origModuleString; 110 118 const patchedStr = []; 111 - const mappedName = moonlight.moonmap.modules[id]; 119 + const mappedName = Object.entries(moonlight.moonmap.modules).find((m) => m[1] === id)?.[0]; 112 120 let modified = false; 113 121 let swappedModule = false; 114 122 ··· 117 125 for (let i = 0; i < patches.length; i++) { 118 126 const patch = patches[i]; 119 127 if (patch.prerequisite != null && !patch.prerequisite()) { 128 + moonlight.unpatched.delete(patch); 120 129 continue; 121 130 } 122 131 ··· 136 145 // We ensured normal PatchReplace objects get turned into arrays on register 137 146 const replaces = patch.replace as PatchReplace[]; 138 147 148 + let isPatched = true; 139 149 for (let i = 0; i < replaces.length; i++) { 140 150 const replace = replaces[i]; 141 151 let patchId = `${patch.ext}#${patch.id}`; ··· 152 162 } 153 163 154 164 if (replaced === moduleString) { 155 - logger.warn("Patch replacement failed", id, patch); 165 + logger.warn("Patch replacement failed", id, patchId, patch); 166 + isPatched = false; 156 167 if (patch.hardFail) { 157 168 hardFailed = true; 158 169 break; ··· 176 187 exts.add(patch.ext); 177 188 } 178 189 179 - moonlight.unpatched.delete(patch); 190 + if (isPatched) moonlight.unpatched.delete(patch); 180 191 if (shouldRemove) patches.splice(i--, 1); 181 192 } 182 193 } 183 194 184 195 if (modified) { 185 - if (!swappedModule) patchModule(id, patchedStr.join(", "), moduleString); 186 - moduleCache[id] = moduleString; 196 + let shouldCache = true; 197 + if (!swappedModule) shouldCache = patchModule(id, patchedStr.join(", "), moduleString, entry); 198 + if (shouldCache) moduleCache[id] = moduleString; 187 199 moonlight.patched.set(id, exts); 188 200 } 189 201 ··· 191 203 const parsed = moonlight.lunast.parseScript(id, moduleString); 192 204 if (parsed != null) { 193 205 for (const [parsedId, parsedScript] of Object.entries(parsed)) { 194 - if (patchModule(parsedId, "lunast", parsedScript)) { 206 + if (patchModule(parsedId, "lunast", parsedScript, entry)) { 195 207 moduleCache[parsedId] = parsedScript; 196 208 } 197 209 } ··· 202 214 203 215 if (moonlightNode.config.patchAll === true) { 204 216 if ((typeof id !== "string" || !id.includes("_")) && !entry[id].__moonlight) { 205 - const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${id}`; 217 + const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + createSourceURL(id); 206 218 entry[id] = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc; 207 219 entry[id].__moonlight = true; 208 220 } ··· 325 337 } 326 338 327 339 for (const [name, func] of Object.entries(moonlight.moonmap.getWebpackModules("window.moonlight.moonmap"))) { 340 + // @ts-expect-error probably should fix the type on this idk 341 + func.__moonlight = true; 328 342 injectedWpModules.push({ id: name, run: func }); 329 343 modules[name] = func; 330 344 inject = true; ··· 402 416 const realPush = jsonp.push; 403 417 if (jsonp.push.__moonlight !== true) { 404 418 jsonp.push = (items) => { 405 - moonlight.events.dispatchEvent(EventType.ChunkLoad, { 419 + moonlight.events.dispatchEvent(WebEventType.ChunkLoad, { 406 420 chunkId: items[0], 407 421 modules: items[1], 408 422 require: items[2] ··· 450 464 set(modules: any) { 451 465 const { stack } = new Error(); 452 466 if (stack!.includes("/assets/") && !Array.isArray(modules)) { 453 - moonlight.events.dispatchEvent(EventType.ChunkLoad, { 467 + moonlight.events.dispatchEvent(WebEventType.ChunkLoad, { 454 468 modules: modules 455 469 }); 456 470 patchModules(modules);
+4 -1
packages/core/tsconfig.json
··· 1 1 { 2 - "extends": "../../tsconfig.json" 2 + "extends": "../../tsconfig.json", 3 + "compilerOptions": { 4 + "lib": ["ESNext", "DOM"] 5 + } 3 6 }
+9 -2
packages/core-extensions/package.json
··· 1 1 { 2 2 "name": "@moonlight-mod/core-extensions", 3 3 "private": true, 4 + "engineStrict": true, 5 + "engines": { 6 + "node": ">=22", 7 + "pnpm": ">=10", 8 + "npm": "pnpm", 9 + "yarn": "pnpm" 10 + }, 4 11 "dependencies": { 5 12 "@moonlight-mod/core": "workspace:*", 6 13 "@moonlight-mod/types": "workspace:*", 7 - "microdiff": "^1.5.0", 8 - "nanotar": "^0.1.1" 14 + "microdiff": "catalog:prod", 15 + "nanotar": "catalog:prod" 9 16 } 10 17 }
+14 -5
packages/core-extensions/src/commands/index.ts
··· 7 7 replace: [ 8 8 // inject commands 9 9 { 10 - match: /return (\i)=\i/, 10 + match: /return (\i)\.filter/, 11 11 replacement: (orig, commands) => 12 - `${commands}=[...${commands},...require("commands_commands").default._getCommands()];${orig}` 12 + `return [...${commands},...require("commands_commands").default._getCommands()].filter` 13 13 }, 14 14 15 15 // section ··· 53 53 } 54 54 }, 55 55 { 56 - find: ".icon,bot:null===", 56 + find: ".icon,bot:null==", 57 57 replace: { 58 - match: /(\.useMemo\(\(\)=>{)(if\((\i)\.type)/, 59 - replacement: (_, before, after, section) => `${before} 58 + match: /(\.useMemo\(\(\)=>{(var \i;)?)((return |if\()(\i)\.type)/, 59 + replacement: (_, before, beforeVar, after, afterIf, section) => `${before} 60 60 if (${section}.id==="${APPLICATION_ID}") return "https://moonlight-mod.github.io/favicon.png"; 61 61 ${after}` 62 62 } ··· 67 67 replace: { 68 68 match: /(\i)\.type===\i\.\i\.BUILT_IN/, 69 69 replacement: (orig, section) => `${section}.id!=="${APPLICATION_ID}"&&${orig}` 70 + } 71 + }, 72 + 73 + // tell it this app id is authorized 74 + { 75 + find: /let{customInstallUrl:\i,installParams:\i,integrationTypesConfig:\i}/, 76 + replace: { 77 + match: /\|\|(\i)===\i\.\i\.BUILT_IN/, 78 + replacement: (orig, id) => `${orig}||${id}==="${APPLICATION_ID}"` 70 79 } 71 80 } 72 81 ];
+7 -5
packages/core-extensions/src/common/index.ts
··· 2 2 3 3 export const webpackModules: ExtensionWebExports["webpackModules"] = { 4 4 stores: { 5 - dependencies: [ 6 - { 7 - id: "discord/packages/flux" 8 - } 9 - ] 5 + dependencies: [{ id: "discord/packages/flux" }] 6 + }, 7 + ErrorBoundary: { 8 + dependencies: [{ id: "react" }] 9 + }, 10 + icons: { 11 + dependencies: [{ id: "react" }, { id: "discord/components/common/index" }] 10 12 } 11 13 };
+1 -1
packages/core-extensions/src/common/manifest.json
··· 4 4 "apiLevel": 2, 5 5 "meta": { 6 6 "name": "Common", 7 - "tagline": "A *lot* of common clientmodding utilities from the Discord client", 7 + "tagline": "Common client modding utilities for the Discord client", 8 8 "authors": ["Cynosphere", "NotNite"], 9 9 "tags": ["library"] 10 10 },
+27
packages/core-extensions/src/common/style.css
··· 1 + .moonlight-error-boundary { 2 + margin: 0 0 15px; 3 + padding: 10px; 4 + border-radius: 5px; 5 + font-size: 1rem; 6 + font-weight: 300; 7 + line-height: 22px; 8 + color: var(--text-normal, white); 9 + background: hsl(var(--red-400-hsl) / 0.1); 10 + border: 2px solid hsl(var(--red-400-hsl) / 0.5); 11 + 12 + .theme-light & { 13 + color: var(--text-normal, black) !important; 14 + } 15 + 16 + & > h3 { 17 + margin-bottom: 0.25rem; 18 + } 19 + 20 + & > .hljs { 21 + background: var(--background-secondary); 22 + border: 1px solid var(--background-tertiary); 23 + white-space: pre-wrap; 24 + font-family: var(--font-code); 25 + user-select: text; 26 + } 27 + }
+47
packages/core-extensions/src/common/webpackModules/ErrorBoundary.tsx
··· 1 + import React from "@moonlight-mod/wp/react"; 2 + import { ErrorBoundaryProps, ErrorBoundaryState } from "@moonlight-mod/types/coreExtensions/common"; 3 + 4 + const logger = moonlight.getLogger("ErrorBoundary"); 5 + 6 + class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> { 7 + constructor(props: ErrorBoundaryProps) { 8 + super(props); 9 + this.state = { 10 + errored: false, 11 + error: undefined, 12 + componentStack: undefined 13 + }; 14 + } 15 + 16 + static getDerivedStateFromError(error: Error) { 17 + return { 18 + errored: true, 19 + error 20 + }; 21 + } 22 + 23 + componentDidCatch(error: Error, { componentStack }: { componentStack: string }) { 24 + logger.error(`${error}\n\nComponent stack:\n${componentStack}`); 25 + this.setState({ error, componentStack }); 26 + } 27 + 28 + render() { 29 + const { noop, fallback: FallbackComponent, children, message } = this.props; 30 + const { errored, error, componentStack } = this.state; 31 + 32 + if (FallbackComponent) return <FallbackComponent children={children} {...this.state} />; 33 + 34 + if (errored) { 35 + return noop ? null : ( 36 + <div className={`moonlight-error-boundary`}> 37 + <h3>{message ?? "An error occurred rendering this component:"}</h3> 38 + <code className="hljs">{`${error}\n\nComponent stack:\n${componentStack}`}</code> 39 + </div> 40 + ); 41 + } 42 + 43 + return children; 44 + } 45 + } 46 + 47 + export default ErrorBoundary;
+31
packages/core-extensions/src/common/webpackModules/icons.ts
··· 1 + import { Icons, IconSize } from "@moonlight-mod/types/coreExtensions/common"; 2 + import { tokens } from "@moonlight-mod/wp/discord/components/common/index"; 3 + 4 + // This is defined in a Webpack module but we copy it here to be less breakage-prone 5 + const sizes: Partial<Record<IconSize, number>> = { 6 + xxs: 12, 7 + xs: 16, 8 + sm: 18, 9 + md: 24, 10 + lg: 32, 11 + refresh_sm: 20 12 + }; 13 + 14 + export const icons: Icons = { 15 + parseProps(props) { 16 + // NOTE: var() fallback is non-standard behavior, just for safety reasons 17 + const color = props?.color ?? tokens?.colors?.["INTERACTIVE_NORMAL"] ?? "var(--interactive-normal)"; 18 + 19 + const size = sizes[props?.size ?? "md"]; 20 + 21 + return { 22 + // note: this default size is also non-standard behavior, just for safety 23 + width: size ?? props?.width ?? sizes.md!, 24 + height: size ?? props?.width ?? sizes.md!, 25 + 26 + fill: typeof color === "string" ? color : color.css, 27 + className: props?.colorClass ?? "" 28 + }; 29 + } 30 + }; 31 + export default icons;
+16 -7
packages/core-extensions/src/componentEditor/index.ts
··· 15 15 replacement: 'children:require("componentEditor_dmList").default._patchItems([' 16 16 }, 17 17 { 18 - match: /(?<=onMouseDown:\i}\))]/, 18 + match: /(?<=(onMouseDown|nameplate):\i}\))]/, 19 19 replacement: "],arguments[0])" 20 20 } 21 21 ], ··· 27 27 find: ".lostPermission", 28 28 replace: [ 29 29 { 30 - match: /(?<=\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[\i\(\),.+?\i\(\)])/, 30 + match: 31 + /(?<=\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[\(0,\i\.jsx\)\(\i,{user:\i}\),.+?onClickPremiumGuildIcon:\i}\)])/, 31 32 replacement: (_, decorators) => 32 33 `children:require("componentEditor_memberList").default._patchDecorators(${decorators},arguments[0])` 33 34 }, ··· 44 45 find: '},"new-member")),', 45 46 replace: [ 46 47 { 47 - match: /(?<=\.BADGES]=)(\i);/, 48 - replacement: (_, badges) => 49 - `require("componentEditor_messages").default._patchUsernameBadges(${badges},arguments[0]);` 48 + match: /(?<=\.BADGES](=|:))(\i)(;|})/, 49 + replacement: (_, leading, badges, trailing) => 50 + `require("componentEditor_messages").default._patchUsernameBadges(${badges},arguments[0])${trailing}` 50 51 }, 51 52 { 52 53 match: /(?<=className:\i,)badges:(\i)/, ··· 54 55 `badges:require("componentEditor_messages").default._patchBadges(${badges},arguments[0])` 55 56 }, 56 57 { 57 - match: /(?<=username:\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[.+?,\i])/, 58 + match: /(?<=username:\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[.+?])}\),usernameSpanId:/, 58 59 replacement: (_, elements) => 59 - `children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])` 60 + `children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])}),usernameSpanId:` 60 61 } 61 62 ] 63 + }, 64 + { 65 + find: '.provider&&"Discord"===', 66 + replace: { 67 + match: /(?<=\.container\),)children:(\[.+?this\.renderSuppressConfirmModal\(\),.+?\])}\)/, 68 + replacement: (_, elements) => 69 + `children:require("componentEditor_messages").default._patchAccessories(${elements},this.props)})` 70 + } 62 71 } 63 72 ]; 64 73
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
··· 12 12 const username: Record<string, MessageUsername> = {}; 13 13 const usernameBadges: Record<string, MessageUsernameBadge> = {}; 14 14 const badges: Record<string, MessageBadge> = {}; 15 + const accessories: Record<string, React.FC<any>> = {}; 15 16 16 17 function addEntries( 17 18 elements: React.ReactNode[], ··· 40 41 const index = elements.indexOf(originalElements[indicies[entry.anchor]!]); 41 42 elements.splice(index! + (entry.before ? 0 : 1), 0, component); 42 43 } 44 + } 45 + } 46 + 47 + function addComponents(elements: React.ReactNode[], components: Record<string, React.FC<any>>, props: any) { 48 + for (const [id, Component] of Object.entries(components)) { 49 + const component = <Component {...props} key={id} />; 50 + elements.push(component); 43 51 } 44 52 } 45 53 ··· 65 73 before 66 74 }; 67 75 }, 76 + addAccessory(id, component) { 77 + accessories[id] = component; 78 + }, 68 79 _patchUsername(elements, props) { 69 80 addEntries(elements, username, MessageUsernameIndicies, props); 70 81 return elements; ··· 75 86 }, 76 87 _patchBadges(elements, props) { 77 88 addEntries(elements, badges, MessageBadgeIndicies, props); 89 + return elements; 90 + }, 91 + _patchAccessories(elements, props) { 92 + addComponents(elements, accessories, props); 78 93 return elements; 79 94 } 80 95 };
+1 -1
packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts
··· 8 8 9 9 const parserSym = code.match(/(?<=_patchMenu\(.,).+?(?=\()/)![0]; 10 10 11 - code = code.replace(/(?<=function\(\){return ).(?=})/, parserSym); 11 + code = code.replace(/{(.):\(\)=>./, (orig, e) => `{${e}:()=>${parserSym}`); 12 12 const mod = new Function("module", "exports", "require", `(${code}).apply(this, arguments)`); 13 13 14 14 const exp: any = {};
+2 -2
packages/core-extensions/src/disableSentry/index.ts
··· 6 6 find: "profiledRootComponent:", 7 7 replace: { 8 8 type: PatchReplaceType.Normal, 9 - match: /(?<=\.Z=){.+?}}/, 10 - replacement: 'require("disableSentry_stub").proxy()' 9 + match: /Z:\(\)=>\i/, 10 + replacement: 'Z:()=>require("disableSentry_stub").proxy()' 11 11 } 12 12 }, 13 13 {
+23 -6
packages/core-extensions/src/experiments/index.ts
··· 11 11 { 12 12 find: '"scientist:triggered"', // Scientist? Triggered. 13 13 replace: { 14 - match: /(?<=personal_connection_id\|\|)!1/, 15 - replacement: "!0" 14 + match: ".personal_connection_id", 15 + replacement: ".personal_connection_id || true" 16 16 } 17 17 }, 18 18 ··· 20 20 { 21 21 find: ".HEADER_BAR)", 22 22 replace: { 23 - match: /&&\((.)\?\(0,/, 23 + match: /&&\((\i)\?\(0,/, 24 24 replacement: (_, isStaff) => 25 25 `&&(((moonlight.getConfigOption("experiments","devtools")??false)?true:${isStaff})?(0,` 26 26 } 27 27 }, 28 + // staff help menu - visual refresh 29 + { 30 + find: '("AppTitleBar")', 31 + replace: { 32 + match: /{hasBugReporterAccess:(\i)}=\i\.\i\.useExperiment\({location:"HeaderBar"},{autoTrackExposure:!1}\);/, 33 + replacement: (orig, isStaff) => 34 + `${orig}if(moonlight.getConfigOption("experiments","devtools")??false)${isStaff}=true;` 35 + } 36 + }, 37 + { 38 + find: 'navId:"staff-help-popout",', 39 + replace: { 40 + match: /isDiscordDeveloper:(\i)}\),/, 41 + replacement: (_, isStaff) => 42 + `isDiscordDeveloper:(moonlight.getConfigOption("experiments","devtools")??false)||${isStaff}}),` 43 + } 44 + }, 28 45 29 46 // Enable further staff-locked options 30 47 { 31 48 find: "shouldShowLurkerModeUpsellPopout:", 32 49 replace: { 33 - match: /\.useReducedMotion,isStaff:(.),/, 34 - replacement: (_, isStaff) => 35 - `.useReducedMotion,isStaff:(moonlight.getConfigOption("experiments","staffSettings")??false)?true:${isStaff},` 50 + match: /\.useReducedMotion,isStaff:(\i)(,|})/, 51 + replacement: (_, isStaff, trail) => 52 + `.useReducedMotion,isStaff:(moonlight.getConfigOption("experiments","staffSettings")??false)?true:${isStaff}${trail}` 36 53 } 37 54 } 38 55 ];
+12 -3
packages/core-extensions/src/moonbase/index.tsx
··· 8 8 { 9 9 // CvQlAA mapped to ERRORS_ACTION_TO_TAKE 10 10 // FIXME: Better patch find? 11 - match: /,(\(0,(.)\.jsx\))\("p",{children:.\.intl\.string\(.\..\.CvQlAA\)}\)/, 11 + match: /,(\(0,(\i)\.jsx\))\("p",{children:\i\.\i\.string\(\i\.\i\.CvQlAA\)}\)/, 12 12 replacement: (_, createElement, ReactJSX) => 13 13 `,${createElement}(require("moonbase_crashScreen")?.UpdateText??${ReactJSX}.Fragment,{state:this.state,setState:this.setState.bind(this)})` 14 14 }, 15 15 16 16 // wrap actions field to display error details 17 17 { 18 - match: /(?<=return(\(0,(.)\.jsx\))\(.+?,)action:(.),className:/, 18 + match: /(?<=return(\(0,(\i)\.jsx\))\(.+?,)action:(\i),className:/, 19 19 replacement: (_, createElement, ReactJSX, action) => 20 20 `action:require("moonbase_crashScreen")?.wrapAction?${createElement}(require("moonbase_crashScreen").wrapAction,{action:${action},state:this.state}):${action},className:` 21 21 }, ··· 23 23 // add update button 24 24 // +hivLS -> ERRORS_RELOAD 25 25 { 26 - match: /(?<=\["\+hivLS"\]\)}\),(\(0,(.)\.jsx\))\(.,{}\))/, 26 + match: /(?<=\["\+hivLS"\]\)}\),(\(0,(\i)\.jsx\))\(\i,{}\))/, 27 27 replacement: (_, createElement, ReactJSX) => 28 28 `,${createElement}(require("moonbase_crashScreen")?.UpdateButton??${ReactJSX}.Fragment,{state:this.state,setState:this.setState.bind(this)})` 29 29 } ··· 42 42 { id: "react" }, 43 43 { id: "discord/components/common/index" }, 44 44 { ext: "moonbase", id: "stores" }, 45 + { ext: "moonbase", id: "ThemeDarkIcon" }, 45 46 { id: "discord/modules/guild_settings/web/AppCard.css" }, 47 + { ext: "contextMenu", id: "contextMenu" }, 48 + { id: "discord/modules/modals/Modals" }, 46 49 "Masks.PANEL_BUTTON", 47 50 '"Missing channel in Channel.openChannelContextMenu"', 48 51 ".forumOrHome]:" 49 52 ] 50 53 }, 51 54 55 + ThemeDarkIcon: { 56 + dependencies: [{ ext: "common", id: "icons" }, { id: "react" }] 57 + }, 58 + 52 59 settings: { 53 60 dependencies: [ 54 61 { ext: "spacepack", id: "spacepack" }, 55 62 { ext: "settings", id: "settings" }, 56 63 { id: "react" }, 57 64 { ext: "moonbase", id: "ui" }, 65 + { ext: "contextMenu", id: "contextMenu" }, 58 66 ':"USER_SETTINGS_MODAL_SET_SECTION"' 59 67 ], 60 68 entrypoint: true ··· 64 72 dependencies: [ 65 73 { id: "react" }, 66 74 { ext: "moonbase", id: "stores" }, 75 + { ext: "moonbase", id: "ThemeDarkIcon" }, 67 76 { ext: "notices", id: "notices" }, 68 77 { 69 78 ext: "spacepack",
+1 -1
packages/core-extensions/src/moonbase/manifest.json
··· 7 7 "tagline": "The official settings UI for moonlight", 8 8 "authors": ["Cynosphere", "NotNite", "redstonekasi"] 9 9 }, 10 - "dependencies": ["spacepack", "settings", "common", "notices"], 10 + "dependencies": ["spacepack", "settings", "common", "notices", "contextMenu"], 11 11 "settings": { 12 12 "sections": { 13 13 "advice": "reload",
+12 -21
packages/core-extensions/src/moonbase/native.ts
··· 15 15 16 16 export const userAgent = `moonlight/${moonlightGlobal.version} (https://github.com/moonlight-mod/moonlight)`; 17 17 18 + // User-Agent header causes trouble on Firefox 19 + const isBrowser = globalThis.moonlightNode != null && globalThis.moonlightNode.isBrowser; 20 + const sharedHeaders: Record<string, string> = {}; 21 + if (!isBrowser) sharedHeaders["User-Agent"] = userAgent; 22 + 18 23 async function getStableRelease(): Promise<{ 19 24 name: string; 20 25 assets: { ··· 24 29 }> { 25 30 const req = await fetch(githubApiUrl, { 26 31 cache: "no-store", 27 - headers: { 28 - "User-Agent": userAgent 29 - } 32 + headers: sharedHeaders 30 33 }); 31 34 return await req.json(); 32 35 } ··· 43 46 } else if (moonlightGlobal.branch === MoonlightBranch.NIGHTLY) { 44 47 const req = await fetch(nightlyRefUrl, { 45 48 cache: "no-store", 46 - headers: { 47 - "User-Agent": userAgent 48 - } 49 + headers: sharedHeaders 49 50 }); 50 51 const ref = (await req.text()).split("\n")[0]; 51 52 return ref !== moonlightGlobal.version ? ref : null; ··· 71 72 logger.debug(`Downloading ${asset.browser_download_url}`); 72 73 const req = await fetch(asset.browser_download_url, { 73 74 cache: "no-store", 74 - headers: { 75 - "User-Agent": userAgent 76 - } 75 + headers: sharedHeaders 77 76 }); 78 77 79 78 return [await req.arrayBuffer(), json.name]; ··· 83 82 logger.debug(`Downloading ${nightlyZipUrl}`); 84 83 const zipReq = await fetch(nightlyZipUrl, { 85 84 cache: "no-store", 86 - headers: { 87 - "User-Agent": userAgent 88 - } 85 + headers: sharedHeaders 89 86 }); 90 87 91 88 const refReq = await fetch(nightlyRefUrl, { 92 89 cache: "no-store", 93 - headers: { 94 - "User-Agent": userAgent 95 - } 90 + headers: sharedHeaders 96 91 }); 97 92 const ref = (await refReq.text()).split("\n")[0]; 98 93 ··· 139 134 try { 140 135 const req = await fetch(repo, { 141 136 cache: "no-store", 142 - headers: { 143 - "User-Agent": userAgent 144 - } 137 + headers: sharedHeaders 145 138 }); 146 139 const json = await req.json(); 147 140 ret[repo] = json; ··· 156 149 async installExtension(manifest, url, repo) { 157 150 const req = await fetch(url, { 158 151 cache: "no-store", 159 - headers: { 160 - "User-Agent": userAgent 161 - } 152 + headers: sharedHeaders 162 153 }); 163 154 164 155 const dir = moonlightGlobal.getExtensionDir(manifest.id);
+6 -2
packages/core-extensions/src/moonbase/style.css
··· 251 251 padding-top: 0.5rem; 252 252 } 253 253 254 + .moonbase-dev { 255 + height: 4rem; 256 + } 257 + 254 258 .moonbase-dev-avatar { 255 259 width: 2rem; 256 260 border-radius: 50%; ··· 260 264 gap: 0.5rem; 261 265 } 262 266 263 - .moonbase-about-text { 264 - padding-top: 0.5rem; 267 + .moonbase-about-page { 268 + gap: 1rem; 265 269 }
+36
packages/core-extensions/src/moonbase/webpackModules/ThemeDarkIcon.tsx
··· 1 + // RIP to ThemeDarkIcon ????-2025 2 + // <Cynthia> Failed to remap "ThemeDarkIcon" in "discord/components/common/index" 3 + // <NotNite> bro are you fucking kidding me 4 + // <NotNite> that's literally the icon we use for the update banner 5 + 6 + import React from "@moonlight-mod/wp/react"; 7 + import icons from "@moonlight-mod/wp/common_icons"; 8 + import type { IconProps } from "@moonlight-mod/types/coreExtensions/common"; 9 + 10 + export default function ThemeDarkIcon(props?: IconProps) { 11 + const parsed = icons.parseProps(props); 12 + 13 + return ( 14 + <svg 15 + aria-hidden="true" 16 + role="img" 17 + xmlns="http://www.w3.org/2000/svg" 18 + width={parsed.width} 19 + height={parsed.height} 20 + fill="none" 21 + viewBox="0 0 24 24" 22 + > 23 + <path 24 + fill={parsed.fill} 25 + className={parsed.className} 26 + d="M20.52 18.96c.32-.4-.01-.96-.52-.96A11 11 0 0 1 9.77 2.94c.31-.78-.3-1.68-1.1-1.43a11 11 0 1 0 11.85 17.45Z" 27 + /> 28 + 29 + <path 30 + fill={parsed.fill} 31 + className={parsed.className} 32 + d="m17.73 9.27-.76-2.02a.5.5 0 0 0-.94 0l-.76 2.02-2.02.76a.5.5 0 0 0 0 .94l2.02.76.76 2.02a.5.5 0 0 0 .94 0l.76-2.02 2.02-.76a.5.5 0 0 0 0-.94l-2.02-.76ZM19.73 2.62l.45 1.2 1.2.45c.21.08.21.38 0 .46l-1.2.45-.45 1.2a.25.25 0 0 1-.46 0l-.45-1.2-1.2-.45a.25.25 0 0 1 0-.46l1.2-.45.45-1.2a.25.25 0 0 1 .46 0Z" 33 + /> 34 + </svg> 35 + ); 36 + }
+21 -5
packages/core-extensions/src/moonbase/webpackModules/crashScreen.tsx
··· 6 6 import { ConfigExtension, DetectedExtension } from "@moonlight-mod/types"; 7 7 import DiscoveryClasses from "@moonlight-mod/wp/discord/modules/discovery/web/Discovery.css"; 8 8 9 - const MODULE_REGEX = /Webpack-Module-(\d+)/g; 9 + const MODULE_REGEX = /Webpack-Module\/(\d+)\/(\d+)/g; 10 10 11 11 const logger = moonlight.getLogger("moonbase/crashScreen"); 12 12 ··· 84 84 } 85 85 86 86 function ExtensionDisableCard({ ext }: { ext: DetectedExtension }) { 87 - function disableWithDependents() { 87 + async function disableWithDependents() { 88 88 const disable = new Set<string>(); 89 89 disable.add(ext.id); 90 90 for (const [id, dependencies] of moonlightNode.processedExtensions.dependencyGraph) { ··· 105 105 msg += "?"; 106 106 107 107 if (confirm(msg)) { 108 - moonlightNode.writeConfig(config); 108 + await moonlightNode.writeConfig(config); 109 109 window.location.reload(); 110 110 } 111 111 } ··· 139 139 const causes = React.useMemo(() => { 140 140 const causes = new Set<string>(); 141 141 if (state.error.stack) { 142 - for (const [, id] of state.error.stack.matchAll(MODULE_REGEX)) 142 + for (const [, , id] of state.error.stack.matchAll(MODULE_REGEX)) 143 143 for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext); 144 144 } 145 - for (const [, id] of state.info.componentStack.matchAll(MODULE_REGEX)) 145 + for (const [, , id] of state.info.componentStack.matchAll(MODULE_REGEX)) 146 146 for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext); 147 + 148 + for (const [path, id] of Object.entries(moonlight.moonmap.modules)) { 149 + const MAPPING_REGEX = new RegExp( 150 + // @ts-expect-error Only Firefox has RegExp.escape 151 + `(${RegExp.escape ? RegExp.escape(path) : path.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, 152 + "g" 153 + ); 154 + 155 + if (state.error.stack) { 156 + for (const match of state.error.stack.matchAll(MAPPING_REGEX)) 157 + if (match) for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext); 158 + } 159 + for (const match of state.info.componentStack.matchAll(MAPPING_REGEX)) 160 + if (match) for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext); 161 + } 162 + 147 163 return [...causes]; 148 164 }, []); 149 165
+4 -3
packages/core-extensions/src/moonbase/webpackModules/settings.tsx
··· 5 5 import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators"; 6 6 import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css"; 7 7 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 8 - import { MenuItem, Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index"; 8 + import { Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index"; 9 + import { MenuItem } from "@moonlight-mod/wp/contextMenu_contextMenu"; 9 10 10 11 const notice = { 11 12 stores: [MoonbaseSettingsStore], ··· 18 19 onReset={() => { 19 20 MoonbaseSettingsStore.reset(); 20 21 }} 21 - onSave={() => { 22 - MoonbaseSettingsStore.writeConfig(); 22 + onSave={async () => { 23 + await MoonbaseSettingsStore.writeConfig(); 23 24 }} 24 25 /> 25 26 );
+30 -10
packages/core-extensions/src/moonbase/webpackModules/stores.ts
··· 13 13 import { mainRepo } from "@moonlight-mod/types/constants"; 14 14 import { checkExtensionCompat, ExtensionCompat } from "@moonlight-mod/core/extension/loader"; 15 15 import { CustomComponent } from "@moonlight-mod/types/coreExtensions/moonbase"; 16 + import { NodeEventType } from "@moonlight-mod/types/core/event"; 16 17 import { getConfigOption, setConfigOption } from "@moonlight-mod/core/util/config"; 17 18 import diff from "microdiff"; 18 19 ··· 78 79 }; 79 80 } 80 81 82 + // This is async but we're calling it without 81 83 this.checkUpdates(); 84 + 85 + // Update our state if another extension edited the config programatically 86 + moonlightNode.events.addEventListener(NodeEventType.ConfigSaved, (config) => { 87 + if (!this.submitting) { 88 + this.config = this.clone(config); 89 + // NOTE: This is also async but we're calling it without 90 + this.processConfigChanged(); 91 + } 92 + }); 82 93 } 83 94 84 95 async checkUpdates() { ··· 239 250 let val = this.config.extensions[ext.id]; 240 251 241 252 if (val == null) { 242 - this.config.extensions[ext.id] = { enabled }; 253 + this.config.extensions[ext.id] = enabled; 243 254 this.modified = this.isModified(); 244 255 this.emitChange(); 245 256 return; ··· 499 510 return returnedAdvice; 500 511 } 501 512 502 - writeConfig() { 503 - this.submitting = true; 504 - this.restartAdvice = this.#computeRestartAdvice(); 505 - const modifiedRepos = diff(this.savedConfig.repositories, this.config.repositories); 513 + async writeConfig() { 514 + try { 515 + this.submitting = true; 516 + this.emitChange(); 506 517 507 - moonlightNode.writeConfig(this.config); 508 - this.savedConfig = this.clone(this.config); 518 + await moonlightNode.writeConfig(this.config); 519 + await this.processConfigChanged(); 520 + } finally { 521 + this.submitting = false; 522 + this.emitChange(); 523 + } 524 + } 509 525 510 - this.submitting = false; 526 + private async processConfigChanged() { 527 + this.savedConfig = this.clone(this.config); 528 + this.restartAdvice = this.#computeRestartAdvice(); 511 529 this.modified = false; 512 - this.emitChange(); 513 530 514 - if (modifiedRepos.length !== 0) this.checkUpdates(); 531 + const modifiedRepos = diff(this.savedConfig.repositories, this.config.repositories); 532 + if (modifiedRepos.length !== 0) await this.checkUpdates(); 533 + 534 + this.emitChange(); 515 535 } 516 536 517 537 reset() {
+23 -41
packages/core-extensions/src/moonbase/webpackModules/ui/about.tsx
··· 1 1 import { 2 - Card, 3 2 Text, 4 3 useThemeContext, 5 4 Button, ··· 10 9 import Flex from "@moonlight-mod/wp/discord/uikit/Flex"; 11 10 import React from "@moonlight-mod/wp/react"; 12 11 import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils"; 13 - import AppCardClasses from "@moonlight-mod/wp/discord/modules/guild_settings/web/AppCard.css"; 14 12 import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; 15 13 16 14 const wordmark = "https://raw.githubusercontent.com/moonlight-mod/moonlight/refs/heads/main/img/wordmark.png"; ··· 27 25 28 26 function Dev({ name, picture, link }: { name: string; picture: string; link: string }) { 29 27 return ( 30 - <Card editable={true} className={AppCardClasses.card}> 31 - <div className={AppCardClasses.cardHeader + " moonbase-dev"}> 32 - <Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER}> 33 - <img src={picture} alt={name} className="moonbase-dev-avatar" /> 28 + <Button onClick={() => window.open(link)} color={Button.Colors.PRIMARY} className="moonbase-dev"> 29 + <Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap"> 30 + <img src={picture} alt={name} className="moonbase-dev-avatar" /> 34 31 35 - <Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER}> 36 - <a href={link} rel="noreferrer noopener" target="_blank" tabIndex={-1}> 37 - <Text variant="text-md/semibold">{name}</Text> 38 - </a> 39 - </Flex> 40 - </Flex> 41 - </div> 42 - </Card> 32 + <Text variant="text-md/semibold">{name}</Text> 33 + </Flex> 34 + </Button> 43 35 ); 44 36 } 45 37 ··· 82 74 } 83 75 84 76 export default function AboutPage() { 85 - const darkTheme = useThemeContext()?.theme === "dark"; 77 + const darkTheme = useThemeContext()?.theme !== "light"; 86 78 87 79 return ( 88 - <div> 89 - <Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER}> 90 - <img src={darkTheme ? wordmarkLight : wordmark} alt="moonlight wordmark" className="moonbase-wordmark" /> 91 - <Text variant="heading-lg/medium">created by:</Text> 92 - <div className="moonbase-devs"> 93 - <Dev name="Cynosphere" picture="https://github.com/Cynosphere.png" link="https://github.com/Cynosphere" /> 94 - <Dev name="NotNite" picture="https://github.com/NotNite.png" link="https://github.com/NotNite" /> 95 - <Dev name="adryd" picture="https://github.com/adryd325.png" link="https://github.com/adryd325" /> 96 - <Dev 97 - name="redstonekasi" 98 - picture="https://github.com/redstonekasi.png" 99 - link="https://github.com/redstonekasi" 100 - /> 101 - </div> 80 + <Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER} className="moonbase-about-page"> 81 + <img src={darkTheme ? wordmarkLight : wordmark} alt="moonlight wordmark" className="moonbase-wordmark" /> 102 82 103 - <Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap"> 104 - <IconButton text="View source" icon={AngleBracketsIcon} link="https://github.com/moonlight-mod/moonlight" /> 105 - <IconButton text="Open the docs" icon={BookCheckIcon} link="https://moonlight-mod.github.io/" /> 106 - <IconButton 107 - text="Join the server" 108 - icon={ClydeIcon} 109 - link="https://discord.gg/FdZBTFCP6F" 110 - openInClient={true} 111 - /> 112 - </Flex> 83 + <Text variant="heading-lg/medium">created by:</Text> 84 + <div className="moonbase-devs"> 85 + <Dev name="Cynosphere" picture="https://github.com/Cynosphere.png" link="https://github.com/Cynosphere" /> 86 + <Dev name="NotNite" picture="https://github.com/NotNite.png" link="https://github.com/NotNite" /> 87 + <Dev name="adryd" picture="https://github.com/adryd325.png" link="https://github.com/adryd325" /> 88 + <Dev name="redstonekasi" picture="https://github.com/redstonekasi.png" link="https://github.com/redstonekasi" /> 89 + </div> 90 + 91 + <Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap"> 92 + <IconButton text="View source" icon={AngleBracketsIcon} link="https://github.com/moonlight-mod/moonlight" /> 93 + <IconButton text="Open the docs" icon={BookCheckIcon} link="https://moonlight-mod.github.io/" /> 94 + <IconButton text="Join the server" icon={ClydeIcon} link="https://discord.gg/FdZBTFCP6F" openInClient={true} /> 113 95 </Flex> 114 96 115 - <Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.START} className="moonbase-about-text"> 97 + <Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.START}> 116 98 <Text variant="text-sm/normal"> 117 99 {parse(`moonlight \`${window.moonlight.version}\` on \`${window.moonlight.branch}\``)} 118 100 </Text> ··· 123 105 )} 124 106 </Text> 125 107 </Flex> 126 - </div> 108 + </Flex> 127 109 ); 128 110 }
+8 -3
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
··· 3 3 4 4 import { ExtensionCompat } from "@moonlight-mod/core/extension/loader"; 5 5 import { 6 - BeakerIcon, 6 + ScienceIcon, 7 7 DownloadIcon, 8 8 TrashIcon, 9 9 AngleBracketsIcon, ··· 28 28 import MarkupClasses from "@moonlight-mod/wp/discord/modules/messages/web/Markup.css"; 29 29 import BuildOverrideClasses from "@moonlight-mod/wp/discord/modules/build_overrides/web/BuildOverride.css"; 30 30 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 31 + import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary"; 31 32 import ExtensionInfo from "./info"; 32 33 import Settings from "./settings"; 33 34 import { doGenericExtensionPopup, doMissingExtensionPopup } from "./popup"; ··· 118 119 <Text variant="text-md/semibold">{ext.manifest?.meta?.name ?? ext.id}</Text> 119 120 {ext.source.type === ExtensionLoadSource.Developer && ( 120 121 <Tooltip text="This is a local extension" position="top"> 121 - {(props: any) => <BeakerIcon {...props} class={BuildOverrideClasses.infoIcon} size="xs" />} 122 + {(props: any) => <ScienceIcon {...props} class={BuildOverrideClasses.infoIcon} size="xs" />} 122 123 </Tooltip> 123 124 )} 124 125 ··· 322 323 })} 323 324 </Text> 324 325 )} 325 - {tab === ExtensionPage.Settings && <Settings ext={ext} />} 326 + {tab === ExtensionPage.Settings && ( 327 + <ErrorBoundary> 328 + <Settings ext={ext} /> 329 + </ErrorBoundary> 330 + )} 326 331 </Flex> 327 332 </div> 328 333 </Card>
+3 -5
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx
··· 10 10 Popout, 11 11 Dialog, 12 12 Menu, 13 - MenuGroup, 14 - MenuCheckboxItem, 15 - MenuItem, 16 13 ChevronSmallDownIcon, 17 14 ChevronSmallUpIcon, 18 15 ArrowsUpDownIcon, 19 16 RetryIcon, 20 17 Tooltip 21 18 } from "@moonlight-mod/wp/discord/components/common/index"; 19 + import { MenuGroup, MenuCheckboxItem, MenuItem } from "@moonlight-mod/wp/contextMenu_contextMenu"; 22 20 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 23 21 import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css"; 24 22 import TagItem from "@moonlight-mod/wp/discord/modules/forums/web/Tag"; ··· 236 234 {...props} 237 235 size={Button.Sizes.MIN} 238 236 color={Button.Colors.CUSTOM} 239 - className={`${ForumsClasses.sortDropdown} moonbase-retry-button ${checkingUpdates ? "moonbase-speen" : ""}`} 237 + className={`${ForumsClasses.sortDropdown} moonbase-retry-button`} 240 238 innerClassName={ForumsClasses.sortDropdownInner} 241 239 onClick={() => { 242 240 (async () => { ··· 251 249 })(); 252 250 }} 253 251 > 254 - <RetryIcon size={"custom"} width={16} /> 252 + <RetryIcon size={"custom"} width={16} className={checkingUpdates ? "moonbase-speen" : ""} /> 255 253 </Button> 256 254 )} 257 255 </Tooltip>
+7 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx
··· 15 15 import PanelButton from "@moonlight-mod/wp/discord/components/common/PanelButton"; 16 16 17 17 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 18 + import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary"; 18 19 import { ExtensionCompat } from "@moonlight-mod/core/extension/loader"; 19 20 import HelpMessage from "../HelpMessage"; 20 21 ··· 144 145 )} 145 146 146 147 {filteredWithUpdates.map((ext) => ( 147 - <ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} /> 148 + <ErrorBoundary> 149 + <ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} /> 150 + </ErrorBoundary> 148 151 ))} 149 152 {filteredWithUpdates.length > 0 && filteredWithoutUpdates.length > 0 && ( 150 153 <FormDivider className="moonbase-update-divider" /> 151 154 )} 152 155 {filteredWithoutUpdates.map((ext) => ( 153 - <ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} /> 156 + <ErrorBoundary> 157 + <ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} /> 158 + </ErrorBoundary> 154 159 ))} 155 160 </> 156 161 );
+2 -7
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/popup.tsx
··· 1 1 // TODO: clean up the styling here 2 2 import React from "@moonlight-mod/wp/react"; 3 3 import { MoonbaseExtension } from "core-extensions/src/moonbase/types"; 4 - import { 5 - openModalLazy, 6 - useModalsStore, 7 - closeModal, 8 - SingleSelect, 9 - Text 10 - } from "@moonlight-mod/wp/discord/components/common/index"; 4 + import { openModalLazy, useModalsStore, closeModal } from "@moonlight-mod/wp/discord/modules/modals/Modals"; 5 + import { SingleSelect, Text } from "@moonlight-mod/wp/discord/components/common/index"; 11 6 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 12 7 import { ExtensionLoadSource } from "@moonlight-mod/types"; 13 8 import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
+4 -1
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx
··· 33 33 import Flex from "@moonlight-mod/wp/discord/uikit/Flex"; 34 34 import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils"; 35 35 import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 36 + import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary"; 36 37 37 38 let GuildSettingsRoleEditClasses: any; 38 39 spacepack ··· 377 378 } 378 379 379 380 return ( 380 - <Component value={value} setValue={(value) => MoonbaseSettingsStore.setExtensionConfig(ext.id, name, value)} /> 381 + <ErrorBoundary> 382 + <Component value={value} setValue={(value) => MoonbaseSettingsStore.setExtensionConfig(ext.id, name, value)} /> 383 + </ErrorBoundary> 381 384 ); 382 385 } 383 386
+1 -1
packages/core-extensions/src/moonbase/webpackModules/ui/update.tsx
··· 7 7 import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils"; 8 8 import Flex from "@moonlight-mod/wp/discord/uikit/Flex"; 9 9 import { 10 - ThemeDarkIcon, 11 10 Button, 12 11 Text, 13 12 ModalRoot, ··· 19 18 openModal 20 19 } from "@moonlight-mod/wp/discord/components/common/index"; 21 20 import MarkupClasses from "@moonlight-mod/wp/discord/modules/messages/web/Markup.css"; 21 + import ThemeDarkIcon from "@moonlight-mod/wp/moonbase_ThemeDarkIcon"; 22 22 23 23 const strings: Record<UpdateState, string> = { 24 24 [UpdateState.Ready]: "A new version of moonlight is available.",
+1 -1
packages/core-extensions/src/moonbase/webpackModules/updates.tsx
··· 3 3 import Notices from "@moonlight-mod/wp/notices_notices"; 4 4 import { MoonlightBranch } from "@moonlight-mod/types"; 5 5 import React from "@moonlight-mod/wp/react"; 6 - import { ThemeDarkIcon } from "@moonlight-mod/wp/discord/components/common/index"; 6 + import ThemeDarkIcon from "@moonlight-mod/wp/moonbase_ThemeDarkIcon"; 7 7 8 8 function plural(str: string, num: number) { 9 9 return `${str}${num > 1 ? "s" : ""}`;
+5
packages/core-extensions/src/moonbase/wp.d.ts
··· 5 5 declare module "@moonlight-mod/wp/moonbase_stores" { 6 6 export * from "core-extensions/src/moonbase/webpackModules/stores"; 7 7 } 8 + 9 + declare module "@moonlight-mod/wp/moonbase_ThemeDarkIcon" { 10 + import ThemeDarkIcon from "core-extensions/src/moonbase/webpackModules/ThemeDarkIcon"; 11 + export = ThemeDarkIcon; 12 + }
+14 -2
packages/core-extensions/src/nativeFixes/host.ts
··· 29 29 app.commandLine.appendSwitch("disable-background-timer-throttling"); 30 30 } 31 31 32 + if (moonlightHost.getConfigOption<boolean>("nativeFixes", "vulkan") ?? false) { 33 + enabledFeatures.push("Vulkan", "DefaultANGLEVulkan", "VulkanFromANGLE"); 34 + } 35 + 32 36 if (process.platform === "linux") { 33 37 if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxAutoscroll") ?? false) { 34 38 app.commandLine.appendSwitch("enable-blink-features", "MiddleClickAutoscroll"); ··· 37 41 if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxSpeechDispatcher") ?? true) { 38 42 app.commandLine.appendSwitch("enable-speech-dispatcher"); 39 43 } 44 + 45 + if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxHevcSupport") ?? true) { 46 + enabledFeatures.push("PlatformHEVCDecoderSupport"); 47 + } 40 48 } 41 49 42 50 // NOTE: Only tested if this appears on Windows, it should appear on all when 43 51 // hardware acceleration is disabled 44 52 const noAccel = app.commandLine.hasSwitch("disable-gpu-compositing"); 45 53 if ((moonlightHost.getConfigOption<boolean>("nativeFixes", "vaapi") ?? true) && !noAccel) { 46 - if (process.platform === "linux") 54 + if (process.platform === "linux") { 47 55 // These will eventually be renamed https://source.chromium.org/chromium/chromium/src/+/5482210941a94d70406b8da962426e4faca7fce4 48 56 enabledFeatures.push("VaapiVideoEncoder", "VaapiVideoDecoder", "VaapiVideoDecodeLinuxGL"); 57 + 58 + if (moonlightHost.getConfigOption<boolean>("nativeFixes", "vaapiIgnoreDriverChecks") ?? false) 59 + enabledFeatures.push("VaapiIgnoreDriverChecks"); 60 + } 49 61 } 50 62 51 63 app.commandLine.appendSwitch("enable-features", [...new Set(enabledFeatures)].join(",")); ··· 113 125 if (filePath === "resources/app.asar") { 114 126 // You tried 115 127 targetFilePath = path.join(targetDir, "resources", "_app.asar"); 116 - } else if (filePath === appName) { 128 + } else if (filePath === appName || filePath === "chrome_crashpad_handler") { 117 129 // Can't write over the executable? Just move it! 4head 118 130 if (await exists(targetFilePath)) { 119 131 await fs.rename(targetFilePath, targetFilePath + ".bak");
+21
packages/core-extensions/src/nativeFixes/manifest.json
··· 23 23 "type": "boolean", 24 24 "default": true 25 25 }, 26 + "vulkan": { 27 + "advice": "restart", 28 + "displayName": "Enable Vulkan renderer", 29 + "description": "Uses the Vulkan backend for rendering", 30 + "type": "boolean", 31 + "default": false 32 + }, 26 33 "linuxAutoscroll": { 27 34 "advice": "restart", 28 35 "displayName": "Enable middle click autoscroll on Linux", ··· 44 51 "type": "boolean", 45 52 "default": true 46 53 }, 54 + "vaapiIgnoreDriverChecks": { 55 + "advice": "restart", 56 + "displayName": "Ignore VAAPI driver checks on Linux", 57 + "description": "Forces hardware video acceleration on some graphics drivers at the cost of stability. Has no effect on other operating systems", 58 + "type": "boolean", 59 + "default": false 60 + }, 47 61 "linuxUpdater": { 48 62 "advice": "restart", 49 63 "displayName": "Linux Updater", 50 64 "description": "Actually implements updating Discord on Linux. Has no effect on other operating systems", 51 65 "type": "boolean", 52 66 "default": false 67 + }, 68 + "linuxHevcSupport": { 69 + "advice": "restart", 70 + "displayName": "HEVC support on Linux", 71 + "description": "You might also need to enable Vulkan renderer. Has no effect on other operating systems", 72 + "type": "boolean", 73 + "default": true 53 74 } 54 75 }, 55 76 "apiLevel": 2
+3 -3
packages/core-extensions/src/noHideToken/index.ts
··· 2 2 3 3 export const patches: Patch[] = [ 4 4 { 5 - find: "hideToken:function", 5 + find: "hideToken:()=>", 6 6 replace: { 7 - match: /(?<=hideToken:function\(\){)/, 8 - replacement: `return()=>{};` 7 + match: /hideToken:\(\)=>.+?,/, 8 + replacement: `hideToken:()=>{},` 9 9 } 10 10 } 11 11 ];
+3 -3
packages/core-extensions/src/noTrack/index.ts
··· 2 2 3 3 export const patches: Patch[] = [ 4 4 { 5 - find: "analyticsTrackingStoreMaker:function", 5 + find: "analyticsTrackingStoreMaker:()=>", 6 6 replace: { 7 - match: /analyticsTrackingStoreMaker:function\(\){return .+?}/, 8 - replacement: "analyticsTrackingStoreMaker:function(){return ()=>{}}" 7 + match: /analyticsTrackingStoreMaker:\(\)=>.+?,/, 8 + replacement: "analyticsTrackingStoreMaker:()=>()=>{}," 9 9 } 10 10 }, 11 11 {
+83 -15
packages/core-extensions/src/quietLoggers/index.ts
··· 18 18 { 19 19 find: '("GatewaySocket")', 20 20 replace: { 21 - match: /.\.(info|log)(\(.+?\))(;|,)/g, 22 - replacement: (_, type, body, trail) => `(()=>{})${body}${trail}` 21 + match: /\i\.(log|info)\(/g, 22 + replacement: "(()=>{})(" 23 + } 24 + }, 25 + { 26 + find: '"_connect called with already existing websocket"', 27 + replace: { 28 + match: /\i\.(log|info|verbose)\(/g, 29 + replacement: "(()=>{})(" 23 30 } 24 31 } 25 32 ]; ··· 30 37 // Patches to simply remove a logger call 31 38 const stubPatches = [ 32 39 // "sh" is not a valid locale. 33 - ["is not a valid locale", /(.)\.error\(""\.concat\((.)," is not a valid locale\."\)\)/g], 34 - ['"[BUILD INFO] Release Channel: "', /new .{1,2}\.Z\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?\)\),/], 35 - ['.APP_NATIVE_CRASH,"Storage"', /console\.log\("AppCrashedFatalReport lastCrash:",.,.\);/], 36 - ['.APP_NATIVE_CRASH,"Storage"', 'console.log("AppCrashedFatalReport: getLastCrash not supported.");'], 37 - ['"[NATIVE INFO] ', /new .{1,2}\.Z\(\)\.log\("\[NATIVE INFO] .+?\)\);/], 38 - ['"Spellchecker"', /.\.info\("Switching to ".+?"\(unavailable\)"\);?/g], 39 - ['throw Error("Messages are still loading.");', /console\.warn\("Unsupported Locale",.\),/], 40 - ["}_dispatchWithDevtools(", /.\.totalTime>.{1,2}&&.\.verbose\(.+?\);/], 41 - ['"NativeDispatchUtils"', /null==.&&.\.warn\("Tried getting Dispatch instance before instantiated"\),/], 42 - ['("DatabaseManager")', /.\.log\("removing database \(user: ".+?\)\),/], 40 + ["is not a valid locale", /void \i\.error\(""\.concat\(\i," is not a valid locale\."\)\)/g], 41 + ['"[BUILD INFO] Release Channel: "', /new \i\.Z\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?\)\),/], 42 + ['.APP_NATIVE_CRASH,"Storage"', /console\.log\("AppCrashedFatalReport lastCrash:",\i,\i\);/], 43 + ['.APP_NATIVE_CRASH,"Storage"', 'void console.log("AppCrashedFatalReport: getLastCrash not supported.")'], 44 + ['"[NATIVE INFO] ', /new \i\.Z\(\)\.log\("\[NATIVE INFO] .+?\)\);/], 45 + ['"Spellchecker"', /\i\.info\("Switching to ".+?"\(unavailable\)"\);?/g], 46 + ['throw Error("Messages are still loading.");', /console\.warn\("Unsupported Locale",\i\),/], 47 + ["}_dispatchWithDevtools(", /\i\.totalTime>\i&&\i\.verbose\(.+?\);/], 48 + ['"NativeDispatchUtils"', /null==\i&&\i\.warn\("Tried getting Dispatch instance before instantiated"\),/], 43 49 [ 44 50 '"Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch. Action: "', 45 - /.\.has\(.\.type\)&&.\.log\(.+?\.type\)\),/ 51 + /\i\.has\(\i\.type\)&&\i\.log\(.+?\.type\)\),/ 46 52 ], 47 - ['console.warn("Window state not initialized"', /console\.warn\("Window state not initialized",.\),/] 53 + ['console.warn("Window state not initialized"', /console\.warn\("Window state not initialized",\i\),/], 54 + ['.name="MaxListenersExceededWarning",', /(?<=\.length),\i\(\i\)/], 55 + [ 56 + '"The answer for life the universe and everything is:"', 57 + /\i\.info\("The answer for life the universe and everything is:",\i\),/ 58 + ], 59 + [ 60 + '"isLibdiscoreBlockedDomainsEnabled called but libdiscore is not loaded"', 61 + /,\i\.verbose\("isLibdiscoreBlockedDomainsEnabledThisSession: ".concat\(\i\)\)/ 62 + ], 63 + [ 64 + '"Unable to determine render window for element"', 65 + /console\.warn\("Unable to determine render window for element",\i\),/ 66 + ], 67 + [ 68 + '"Unable to determine render window for element"', 69 + /console\.warn\('Unable to find element constructor "'\.concat\(\i,'" in'\),\i\),/ 70 + ], 71 + [ 72 + '"[PostMessageTransport] Protocol error: event data should be an Array!"', 73 + /void console\.warn\("\[PostMessageTransport] Protocol error: event data should be an Array!"\)/ 74 + ], 75 + [ 76 + '("ComponentDispatchUtils")', 77 + /new \i\.Z\("ComponentDispatchUtils"\)\.warn\("ComponentDispatch\.resubscribe: Resubscribe without existing subscription",\i\),/ 78 + ] 79 + ]; 80 + 81 + const stripLoggers = [ 82 + '("OverlayRenderStore")', 83 + '("FetchBlockedDomain")', 84 + '="UserSettingsProtoLastWriteTimes",', 85 + '("MessageActionCreators")', 86 + '("Routing/Utils")', 87 + '("DatabaseManager")', 88 + '("KeyboardLayoutMapUtils")', 89 + '("ChannelMessages")', 90 + '("MessageQueue")', 91 + '("RTCLatencyTestManager")', 92 + '("OverlayStoreV3")', 93 + '("OverlayBridgeStore")', 94 + '("AuthenticationStore")', 95 + '("ConnectionStore")', 96 + '"Dispatched INITIAL_GUILD "', 97 + '"handleIdentify called"', 98 + '("Spotify")' 48 99 ]; 49 100 50 101 const simplePatches = [ ··· 56 107 { 57 108 find: ".Messages.SELF_XSS_HEADER", 58 109 replace: { 59 - match: /\(null!=.{1,2}&&"0\.0\.0"===.{1,2}\.remoteApp\.getVersion\(\)\)/, 110 + match: /\(null!=\i&&"0\.0\.0"===\i\.remoteApp\.getVersion\(\)\)/, 60 111 replacement: "(true)" 61 112 } 62 113 }, 114 + { 115 + find: '("ComponentDispatchUtils")', 116 + replace: { 117 + match: 118 + /new \i\.Z\("ComponentDispatchUtils"\)\.warn\("ComponentDispatch\.subscribe: Attempting to add a duplicate listener",\i\)/, 119 + replacement: "void 0" 120 + }, 121 + prerequisite: notXssDefensesOnly 122 + }, 63 123 // Highlight.js deprecation warnings 64 124 { 65 125 find: "Deprecated as of", ··· 92 152 replace: { 93 153 match: patch[0], 94 154 replacement: patch[1] 155 + }, 156 + prerequisite: notXssDefensesOnly 157 + })), 158 + ...stripLoggers.map((find) => ({ 159 + find, 160 + replace: { 161 + match: /(\i|this\.logger)\.(log|warn|error|info|verbose)\(/g, 162 + replacement: "(()=>{})(" 95 163 }, 96 164 prerequisite: notXssDefensesOnly 97 165 }))
+1 -1
packages/core-extensions/src/settings/index.ts
··· 12 12 { 13 13 find: 'navId:"user-settings-cog",', 14 14 replace: { 15 - match: /children:\[(.)\.map\(.+?\),children:.\((.)\)/, 15 + match: /children:\[(\i)\.map\(.+?\),.*?children:\i\((\i)\)/, 16 16 replacement: (orig, sections, section) => 17 17 `${orig.replace( 18 18 /Object\.values\(.\..+?\)/,
+8 -2
packages/core-extensions/src/settings/webpackModules/settings.ts
··· 1 1 import { SettingsSection, Settings as SettingsType } from "@moonlight-mod/types/coreExtensions/settings"; 2 + import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators"; 2 3 3 4 export const Settings: SettingsType = { 4 5 ourSections: [], 5 6 sectionNames: [], 6 7 sectionMenuItems: {}, 7 8 8 - addSection: (section, label, element, color = null, pos, notice) => { 9 + addSection: (section, label, element, color = null, pos, notice, onClick) => { 9 10 const data: SettingsSection = { 10 11 section, 11 12 label, 12 13 color, 13 14 element, 14 15 pos: pos ?? -4, 15 - notice: notice 16 + notice: notice, 17 + onClick: onClick ?? (() => UserSettingsModalActionCreators.open(section)) 16 18 }; 17 19 18 20 Settings.ourSections.push(data); ··· 43 45 44 46 _mutateSections: (sections) => { 45 47 for (const section of Settings.ourSections) { 48 + // Discord's `pos` only supports numbers, so lets call the function to get the position. 49 + if (typeof section.pos === "function") { 50 + section.pos = section.pos(sections); 51 + } 46 52 sections.splice(section.pos < 0 ? sections.length + section.pos : section.pos, 0, section); 47 53 } 48 54
+4 -1
packages/core-extensions/src/spacepack/webpackModules/spacepack.ts
··· 37 37 "module", 38 38 "exports", 39 39 "require", 40 - `(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${module}` 40 + `(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module/${module.slice(0, 3)}/${module}` 41 41 ) as WebpackModuleFunc; 42 42 }, 43 43 ··· 184 184 }, 185 185 186 186 lazyLoad: (find: string | RegExp | (string | RegExp)[], chunk: RegExp, module: RegExp) => { 187 + chunk = processFind(chunk); 188 + module = processFind(module); 189 + 187 190 const mod = Array.isArray(find) ? spacepack.findByCode(...find) : spacepack.findByCode(find); 188 191 if (mod.length < 1) { 189 192 logger.warn("lazyLoad: Module find failed", find, chunk, module, new Error().stack!.substring(5));
+4 -1
packages/core-extensions/tsconfig.json
··· 1 1 { 2 - "extends": "../../tsconfig.json" 2 + "extends": "../../tsconfig.json", 3 + "compilerOptions": { 4 + "lib": ["ESNext", "DOM", "DOM.Iterable"] 5 + } 3 6 }
+10 -3
packages/injector/package.json
··· 1 1 { 2 2 "name": "@moonlight-mod/injector", 3 3 "private": true, 4 + "engines": { 5 + "node": ">=22", 6 + "pnpm": ">=10", 7 + "npm": "pnpm", 8 + "yarn": "pnpm" 9 + }, 4 10 "dependencies": { 5 - "@moonlight-mod/types": "workspace:*", 6 - "@moonlight-mod/core": "workspace:*" 7 - } 11 + "@moonlight-mod/core": "workspace:*", 12 + "@moonlight-mod/types": "workspace:*" 13 + }, 14 + "engineStrict": true 8 15 }
+2
packages/injector/src/index.ts
··· 157 157 details.responseHeaders[key] = ["*"]; 158 158 } 159 159 160 + moonlightHost.events.emit("headers-received", details, isMainWindow); 161 + 160 162 cb({ cancel: false, responseHeaders: details.responseHeaders }); 161 163 } 162 164 });
+8 -1
packages/node-preload/package.json
··· 1 1 { 2 2 "name": "@moonlight-mod/node-preload", 3 3 "private": true, 4 + "engines": { 5 + "node": ">=22", 6 + "pnpm": ">=10", 7 + "npm": "pnpm", 8 + "yarn": "pnpm" 9 + }, 4 10 "dependencies": { 5 11 "@moonlight-mod/core": "workspace:*", 6 12 "@moonlight-mod/types": "workspace:*" 7 - } 13 + }, 14 + "engineStrict": true 8 15 }
+4
packages/node-preload/src/index.ts
··· 11 11 import createFS from "@moonlight-mod/core/fs"; 12 12 import { registerCors, registerBlocked, getDynamicCors } from "@moonlight-mod/core/cors"; 13 13 import { getConfig, getConfigOption, getManifest, setConfigOption } from "@moonlight-mod/core/util/config"; 14 + import { NodeEventPayloads, NodeEventType } from "@moonlight-mod/types/core/event"; 15 + import { createEventEmitter } from "@moonlight-mod/core/util/event"; 14 16 15 17 let initialized = false; 16 18 let logger: Logger; ··· 51 53 processedExtensions, 52 54 nativesCache: {}, 53 55 isBrowser: false, 56 + events: createEventEmitter<NodeEventType, NodeEventPayloads>(), 54 57 55 58 version: MOONLIGHT_VERSION, 56 59 branch: MOONLIGHT_BRANCH as MoonlightBranch, ··· 69 72 async writeConfig(newConfig) { 70 73 await writeConfig(newConfig); 71 74 config = newConfig; 75 + this.events.dispatchEvent(NodeEventType.ConfigSaved, newConfig); 72 76 }, 73 77 74 78 getNatives: (ext: string) => global.moonlightNode.nativesCache[ext],
+4 -1
packages/node-preload/tsconfig.json
··· 1 1 { 2 - "extends": "../../tsconfig.json" 2 + "extends": "../../tsconfig.json", 3 + "compilerOptions": { 4 + "lib": ["DOM", "ESNext", "DOM.Iterable"] 5 + } 3 6 }
+14 -7
packages/types/package.json
··· 1 1 { 2 2 "name": "@moonlight-mod/types", 3 - "version": "1.3.9", 4 - "main": "./src/index.ts", 5 - "types": "./src/index.ts", 3 + "version": "1.3.17", 6 4 "exports": { 7 5 ".": "./src/index.ts", 8 6 "./import": "./src/import.d.ts", 9 7 "./*": "./src/*.ts" 10 8 }, 9 + "main": "./src/index.ts", 10 + "types": "./src/index.ts", 11 + "engineStrict": false, 12 + "engines": { 13 + "node": ">=22", 14 + "pnpm": ">=10", 15 + "npm": "pnpm", 16 + "yarn": "pnpm" 17 + }, 11 18 "dependencies": { 12 - "@moonlight-mod/lunast": "^1.0.0", 13 - "@moonlight-mod/mappings": "^1.1.10", 14 - "@moonlight-mod/moonmap": "^1.0.3", 19 + "@moonlight-mod/lunast": "^1.0.1", 20 + "@moonlight-mod/mappings": "^1.1.25", 21 + "@moonlight-mod/moonmap": "^1.0.5", 15 22 "@types/react": "^18.3.10", 16 - "csstype": "^3.1.2", 23 + "csstype": "^3.1.3", 17 24 "standalone-electron-types": "^1.0.0" 18 25 } 19 26 }
+13 -4
packages/types/src/core/event.ts
··· 1 + import { Config } from "../config"; 1 2 import { WebpackModuleFunc, WebpackRequireType } from "../discord"; 2 3 3 4 export interface MoonlightEventEmitter<EventId extends string = string, EventData = Record<EventId, any>> { ··· 6 7 removeEventListener: <Id extends keyof EventData>(id: Id, cb: (data: EventData[Id]) => void) => void; 7 8 } 8 9 9 - export enum EventType { 10 + export enum WebEventType { 10 11 ChunkLoad = "chunkLoad", 11 12 ExtensionLoad = "extensionLoad" 12 13 } 13 14 14 - export type EventPayloads = { 15 - [EventType.ChunkLoad]: { 15 + export type WebEventPayloads = { 16 + [WebEventType.ChunkLoad]: { 16 17 chunkId?: number[]; 17 18 modules: { [id: string]: WebpackModuleFunc }; 18 19 require?: (require: WebpackRequireType) => any; 19 20 }; 20 - [EventType.ExtensionLoad]: string; 21 + [WebEventType.ExtensionLoad]: string; 22 + }; 23 + 24 + export enum NodeEventType { 25 + ConfigSaved = "configSaved" 26 + } 27 + 28 + export type NodeEventPayloads = { 29 + [NodeEventType.ConfigSaved]: Config; 21 30 };
+33
packages/types/src/coreExtensions/common.ts
··· 1 + import type { IconProps, IconSize } from "@moonlight-mod/mappings/discord/components/common/index"; 2 + 3 + export type ErrorBoundaryProps = React.PropsWithChildren<{ 4 + noop?: boolean; 5 + fallback?: React.FC<any>; 6 + message?: string; 7 + }>; 8 + 9 + export type ErrorBoundaryState = { 10 + errored: boolean; 11 + error?: Error; 12 + componentStack?: string; 13 + }; 14 + 15 + export type ErrorBoundary = React.ComponentClass<ErrorBoundaryProps, ErrorBoundaryState>; 16 + 17 + export type ParsedIconProps = { 18 + width: number; 19 + height: number; 20 + fill: string; 21 + className: string; 22 + }; 23 + 24 + export interface Icons { 25 + /** 26 + * Parse icon props into their actual width/height. 27 + * @param props The icon props 28 + */ 29 + parseProps(props?: IconProps): ParsedIconProps; 30 + } 31 + 32 + // Re-export so extension developers don't need to depend on mappings 33 + export type { IconProps, IconSize };
+17
packages/types/src/coreExtensions/componentEditor.ts
··· 121 121 } 122 122 123 123 export type Messages = { 124 + /** 125 + * Adds a component to the username of a message 126 + */ 124 127 addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void; 128 + /** 129 + * Adds a component to the username badge area of a message (e.g. where role icons/new member badge is) 130 + */ 125 131 addUsernameBadge: ( 126 132 id: string, 127 133 component: React.FC<any>, 128 134 anchor?: MessageUsernameBadgeAnchors, 129 135 before?: boolean 130 136 ) => void; 137 + /** 138 + * Adds a component to the end of a message header (e.g. silent indicator) 139 + */ 131 140 addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void; 132 141 /** 142 + * Adds a component to message accessories (e.g. embeds) 143 + */ 144 + addAccessory: (id: string, component: React.FC<any>) => void; 145 + /** 133 146 * @private 134 147 */ 135 148 _patchUsername: Patcher<any>; ··· 141 154 * @private 142 155 */ 143 156 _patchBadges: Patcher<any>; 157 + /** 158 + * @private 159 + */ 160 + _patchAccessories: Patcher<any>; 144 161 }; 145 162 //#endregion
+10 -7
packages/types/src/coreExtensions/settings.ts
··· 7 7 }; 8 8 9 9 export type SettingsSection = 10 - | { section: "DIVIDER"; pos: number } 11 - | { section: "HEADER"; label: string; pos: number } 10 + | { section: "DIVIDER"; pos: number | ((sections: SettingsSection[]) => number) } 11 + | { section: "HEADER"; label: string; pos: number | ((sections: SettingsSection[]) => number) } 12 12 | { 13 13 section: string; 14 14 label: string; 15 15 color: string | null; 16 16 element: React.FunctionComponent; 17 - pos: number; 17 + pos: number | ((sections: SettingsSection[]) => number); 18 18 notice?: NoticeProps; 19 + onClick?: () => void; 19 20 _moonlight_submenu?: () => ReactElement | ReactElement[]; 20 21 }; 21 22 ··· 32 33 * @param color A color to use for the section 33 34 * @param pos The position in the settings menu to place the section 34 35 * @param notice A notice to display when in the section 36 + * @param onClick A custom action to execute when clicked from the context menu 35 37 */ 36 38 addSection: ( 37 39 section: string, 38 40 label: string, 39 41 element: React.FunctionComponent, 40 42 color?: string | null, 41 - pos?: number, 42 - notice?: NoticeProps 43 + pos?: number | ((sections: SettingsSection[]) => number), 44 + notice?: NoticeProps, 45 + onClick?: () => void 43 46 ) => void; 44 47 45 48 /** ··· 53 56 * Places a divider in the settings menu. 54 57 * @param pos The position in the settings menu to place the divider 55 58 */ 56 - addDivider: (pos: number | null) => void; 59 + addDivider: (pos: number | ((sections: SettingsSection[]) => number) | null) => void; 57 60 58 61 /** 59 62 * Places a header in the settings menu. 60 63 * @param pos The position in the settings menu to place the header 61 64 */ 62 - addHeader: (label: string, pos: number | null) => void; 65 + addHeader: (label: string, pos: number | ((sections: SettingsSection[]) => number) | null) => void; 63 66 64 67 /** 65 68 * @private
+1
packages/types/src/coreExtensions.ts
··· 7 7 export * as AppPanels from "./coreExtensions/appPanels"; 8 8 export * as Commands from "./coreExtensions/commands"; 9 9 export * as ComponentEditor from "./coreExtensions/componentEditor"; 10 + export * as Common from "./coreExtensions/common";
+4
packages/types/src/discord/require.ts
··· 1 1 import { AppPanels } from "../coreExtensions/appPanels"; 2 2 import { Commands } from "../coreExtensions/commands"; 3 + import { ErrorBoundary, Icons } from "../coreExtensions/common"; 3 4 import { DMList, MemberList, Messages } from "../coreExtensions/componentEditor"; 4 5 import { ContextMenu, EvilItemParser } from "../coreExtensions/contextMenu"; 5 6 import { Markdown } from "../coreExtensions/markdown"; ··· 13 14 declare function WebpackRequire(id: "appPanels_appPanels"): AppPanels; 14 15 15 16 declare function WebpackRequire(id: "commands_commands"): Commands; 17 + 18 + declare function WebpackRequire(id: "common_ErrorBoundary"): ErrorBoundary; 19 + declare function WebpackRequire(id: "common_icons"): Icons; 16 20 17 21 declare function WebpackRequire(id: "componentEditor_dmList"): DMList; 18 22 declare function WebpackRequire(id: "componentEditor_memberList"): MemberList;
+1
packages/types/src/fs.ts
··· 15 15 16 16 join: (...parts: string[]) => string; 17 17 dirname: (path: string) => string; 18 + basename: (path: string) => string; 18 19 };
+10 -3
packages/types/src/globals.ts
··· 4 4 import type EventEmitter from "events"; 5 5 import type LunAST from "@moonlight-mod/lunast"; 6 6 import type Moonmap from "@moonlight-mod/moonmap"; 7 - import type { EventPayloads, EventType, MoonlightEventEmitter } from "./core/event"; 8 - import { MoonlightFS } from "./fs"; 7 + import type { 8 + WebEventPayloads, 9 + WebEventType, 10 + MoonlightEventEmitter, 11 + NodeEventType, 12 + NodeEventPayloads 13 + } from "./core/event"; 14 + import type { MoonlightFS } from "./fs"; 9 15 10 16 export type MoonlightHost = { 11 17 config: Config; ··· 34 40 processedExtensions: ProcessedExtensions; 35 41 nativesCache: Record<string, any>; 36 42 isBrowser: boolean; 43 + events: MoonlightEventEmitter<NodeEventType, NodeEventPayloads>; 37 44 38 45 version: string; 39 46 branch: MoonlightBranch; ··· 60 67 unpatched: Set<IdentifiedPatch>; 61 68 pendingModules: Set<IdentifiedWebpackModule>; 62 69 enabledExtensions: Set<string>; 63 - events: MoonlightEventEmitter<EventType, EventPayloads>; 70 + events: MoonlightEventEmitter<WebEventType, WebEventPayloads>; 64 71 patchingInternals: { 65 72 onModuleLoad: (moduleId: string | string[], callback: (moduleId: string) => void) => void; 66 73 registerPatch: (patch: IdentifiedPatch) => void;
+10
packages/types/src/import.d.ts
··· 10 10 export default commands; 11 11 } 12 12 13 + declare module "@moonlight-mod/wp/common_ErrorBoundary" { 14 + import { CoreExtensions } from "@moonlight-mod/types"; 15 + const ErrorBoundary: CoreExtensions.Common.ErrorBoundary; 16 + export = ErrorBoundary; 17 + } 18 + declare module "@moonlight-mod/wp/common_icons" { 19 + import { CoreExtensions } from "@moonlight-mod/types"; 20 + export const icons: CoreExtensions.Common.Icons; 21 + export default icons; 22 + } 13 23 declare module "@moonlight-mod/wp/common_stores"; 14 24 15 25 declare module "@moonlight-mod/wp/componentEditor_dmList" {
+1
packages/types/src/index.ts
··· 32 32 var moonlightNode: MoonlightNode; 33 33 var moonlightNodeSandboxed: MoonlightNodeSandboxed; 34 34 var moonlight: MoonlightWeb; 35 + var _moonlight_coreExtensionsStr: string; 35 36 36 37 var _moonlightBrowserInit: undefined | (() => Promise<void>); 37 38 var _moonlightWebLoad: undefined | (() => Promise<void>);
+39 -641
packages/types/src/mappings.d.ts
··· 55 55 export default _default; 56 56 } 57 57 58 + declare module "@moonlight-mod/wp/discord/common/AppStartPerformance" { 59 + import { MappedModules } from "@moonlight-mod/mappings"; 60 + const _default: MappedModules["discord/common/AppStartPerformance"]["default"]; 61 + export default _default; 62 + } 63 + 58 64 declare module "@moonlight-mod/wp/discord/components/common/Alerts" { 59 65 import { MappedModules } from "@moonlight-mod/mappings"; 60 66 const _default: MappedModules["discord/components/common/Alerts"]["default"]; ··· 69 75 export default _default; 70 76 } 71 77 78 + declare module "@moonlight-mod/wp/discord/components/common/Card" { 79 + import { MappedModules } from "@moonlight-mod/mappings"; 80 + const _default: MappedModules["discord/components/common/Card"]["default"]; 81 + export default _default; 82 + export const Types: MappedModules["discord/components/common/Card"]["Types"]; 83 + } 84 + 72 85 declare module "@moonlight-mod/wp/discord/components/common/FileUpload" { 73 86 import { MappedModules } from "@moonlight-mod/mappings"; 74 87 const _default: MappedModules["discord/components/common/FileUpload"]["default"]; ··· 124 137 export const error: MappedModules["discord/components/common/HelpMessage.css"]["error"]; 125 138 } 126 139 140 + declare module "@moonlight-mod/wp/discord/components/common/Image" {} 141 + 127 142 declare module "@moonlight-mod/wp/discord/components/common/PanelButton" { 128 143 import { MappedModules } from "@moonlight-mod/mappings"; 129 144 const _default: MappedModules["discord/components/common/PanelButton"]["default"]; ··· 169 184 export const Popout: MappedModules["discord/components/common/index"]["Popout"]; 170 185 export const Dialog: MappedModules["discord/components/common/index"]["Dialog"]; 171 186 export const Menu: MappedModules["discord/components/common/index"]["Menu"]; 172 - export const MenuItem: MappedModules["discord/components/common/index"]["MenuItem"]; 173 - export const MenuGroup: MappedModules["discord/components/common/index"]["MenuGroup"]; 174 - export const MenuRadioItem: MappedModules["discord/components/common/index"]["MenuRadioItem"]; 175 - export const MenuCheckboxItem: MappedModules["discord/components/common/index"]["MenuCheckboxItem"]; 176 - export const MenuControlItem: MappedModules["discord/components/common/index"]["MenuControlItem"]; 177 - export const MenuSeparator: MappedModules["discord/components/common/index"]["MenuSeparator"]; 178 - export const SettingsNotice: MappedModules["discord/components/common/index"]["SettingsNotice"]; 179 187 export const TabBar: MappedModules["discord/components/common/index"]["TabBar"]; 180 188 export const SingleSelect: MappedModules["discord/components/common/index"]["SingleSelect"]; 181 189 export const Select: MappedModules["discord/components/common/index"]["Select"]; ··· 187 195 export const Image: MappedModules["discord/components/common/index"]["Image"]; 188 196 export const tokens: MappedModules["discord/components/common/index"]["tokens"]; 189 197 export const useVariableSelect: MappedModules["discord/components/common/index"]["useVariableSelect"]; 190 - export const useMultiSelectState: MappedModules["discord/components/common/index"]["useMultiSelectState"]; 191 - export const useSingleSelectState: MappedModules["discord/components/common/index"]["useSingleSelectState"]; 192 198 export const useMultiSelect: MappedModules["discord/components/common/index"]["useMultiSelect"]; 193 - export const useSingleSelect: MappedModules["discord/components/common/index"]["useSingleSelect"]; 194 199 export const multiSelect: MappedModules["discord/components/common/index"]["multiSelect"]; 195 200 export const openModal: MappedModules["discord/components/common/index"]["openModal"]; 196 201 export const openModalLazy: MappedModules["discord/components/common/index"]["openModalLazy"]; 197 202 export const closeModal: MappedModules["discord/components/common/index"]["closeModal"]; 198 - export const useModalsStore: MappedModules["discord/components/common/index"]["useModalsStore"]; 199 - export const AIcon: MappedModules["discord/components/common/index"]["AIcon"]; 200 - export const AccessibilityIcon: MappedModules["discord/components/common/index"]["AccessibilityIcon"]; 201 - export const AchievementsIcon: MappedModules["discord/components/common/index"]["AchievementsIcon"]; 202 - export const ActivitiesIcon: MappedModules["discord/components/common/index"]["ActivitiesIcon"]; 203 - export const ActivitiesPlusIcon: MappedModules["discord/components/common/index"]["ActivitiesPlusIcon"]; 204 - export const AirplayIcon: MappedModules["discord/components/common/index"]["AirplayIcon"]; 205 - export const AnalyticsIcon: MappedModules["discord/components/common/index"]["AnalyticsIcon"]; 206 203 export const AngleBracketsIcon: MappedModules["discord/components/common/index"]["AngleBracketsIcon"]; 207 - export const AnnouncementsChatIcon: MappedModules["discord/components/common/index"]["AnnouncementsChatIcon"]; 208 - export const AnnouncementsIcon: MappedModules["discord/components/common/index"]["AnnouncementsIcon"]; 209 - export const AnnouncementsLockIcon: MappedModules["discord/components/common/index"]["AnnouncementsLockIcon"]; 210 - export const AnnouncementsWarningIcon: MappedModules["discord/components/common/index"]["AnnouncementsWarningIcon"]; 211 - export const AppleBrandLightIcon: MappedModules["discord/components/common/index"]["AppleBrandLightIcon"]; 212 - export const AppleNeutralIcon: MappedModules["discord/components/common/index"]["AppleNeutralIcon"]; 213 - export const AppsIcon: MappedModules["discord/components/common/index"]["AppsIcon"]; 214 - export const ArrowAngleDownLeftIcon: MappedModules["discord/components/common/index"]["ArrowAngleDownLeftIcon"]; 215 - export const ArrowAngleLeftDownIcon: MappedModules["discord/components/common/index"]["ArrowAngleLeftDownIcon"]; 216 204 export const ArrowAngleLeftUpIcon: MappedModules["discord/components/common/index"]["ArrowAngleLeftUpIcon"]; 217 - export const ArrowAngleRightDownIcon: MappedModules["discord/components/common/index"]["ArrowAngleRightDownIcon"]; 218 205 export const ArrowAngleRightUpIcon: MappedModules["discord/components/common/index"]["ArrowAngleRightUpIcon"]; 219 - export const ArrowAngleUpLeftIcon: MappedModules["discord/components/common/index"]["ArrowAngleUpLeftIcon"]; 220 - export const ArrowLargeDownIcon: MappedModules["discord/components/common/index"]["ArrowLargeDownIcon"]; 221 - export const ArrowLargeLeftIcon: MappedModules["discord/components/common/index"]["ArrowLargeLeftIcon"]; 222 - export const ArrowLargeRightIcon: MappedModules["discord/components/common/index"]["ArrowLargeRightIcon"]; 223 - export const ArrowLargeUpIcon: MappedModules["discord/components/common/index"]["ArrowLargeUpIcon"]; 224 - export const ArrowSmallDownIcon: MappedModules["discord/components/common/index"]["ArrowSmallDownIcon"]; 225 - export const ArrowSmallLeftIcon: MappedModules["discord/components/common/index"]["ArrowSmallLeftIcon"]; 226 - export const ArrowSmallRightIcon: MappedModules["discord/components/common/index"]["ArrowSmallRightIcon"]; 227 - export const ArrowSmallUpIcon: MappedModules["discord/components/common/index"]["ArrowSmallUpIcon"]; 228 - export const ArrowsLeftRightIcon: MappedModules["discord/components/common/index"]["ArrowsLeftRightIcon"]; 229 206 export const ArrowsUpDownIcon: MappedModules["discord/components/common/index"]["ArrowsUpDownIcon"]; 230 - export const AsteriskIcon: MappedModules["discord/components/common/index"]["AsteriskIcon"]; 231 - export const AtIcon: MappedModules["discord/components/common/index"]["AtIcon"]; 232 - export const AttachmentIcon: MappedModules["discord/components/common/index"]["AttachmentIcon"]; 233 - export const BIcon: MappedModules["discord/components/common/index"]["BIcon"]; 234 - export const BackspaceIcon: MappedModules["discord/components/common/index"]["BackspaceIcon"]; 235 - export const BadgeIcon: MappedModules["discord/components/common/index"]["BadgeIcon"]; 236 - export const BeakerIcon: MappedModules["discord/components/common/index"]["BeakerIcon"]; 237 - export const BellIcon: MappedModules["discord/components/common/index"]["BellIcon"]; 238 - export const BellSlashIcon: MappedModules["discord/components/common/index"]["BellSlashIcon"]; 239 - export const BellZIcon: MappedModules["discord/components/common/index"]["BellZIcon"]; 240 - export const BergerIcon: MappedModules["discord/components/common/index"]["BergerIcon"]; 241 - export const BicycleIcon: MappedModules["discord/components/common/index"]["BicycleIcon"]; 242 - export const BillIcon: MappedModules["discord/components/common/index"]["BillIcon"]; 243 - export const BlueskyBrandIcon: MappedModules["discord/components/common/index"]["BlueskyBrandIcon"]; 244 - export const BlueskyNeutralIcon: MappedModules["discord/components/common/index"]["BlueskyNeutralIcon"]; 245 - export const BluetoothIcon: MappedModules["discord/components/common/index"]["BluetoothIcon"]; 246 - export const BlurBackgroundIcon: MappedModules["discord/components/common/index"]["BlurBackgroundIcon"]; 247 - export const BoldIcon: MappedModules["discord/components/common/index"]["BoldIcon"]; 248 207 export const BookCheckIcon: MappedModules["discord/components/common/index"]["BookCheckIcon"]; 249 - export const BookmarkIcon: MappedModules["discord/components/common/index"]["BookmarkIcon"]; 250 - export const BookmarkOutlineIcon: MappedModules["discord/components/common/index"]["BookmarkOutlineIcon"]; 251 - export const BoostTier1Icon: MappedModules["discord/components/common/index"]["BoostTier1Icon"]; 252 - export const BoostTier1SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier1SimpleIcon"]; 253 - export const BoostTier2Icon: MappedModules["discord/components/common/index"]["BoostTier2Icon"]; 254 - export const BoostTier2SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier2SimpleIcon"]; 255 - export const BoostTier3Icon: MappedModules["discord/components/common/index"]["BoostTier3Icon"]; 256 - export const BoostTier3SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier3SimpleIcon"]; 257 - export const BrowserCheckeredIcon: MappedModules["discord/components/common/index"]["BrowserCheckeredIcon"]; 258 - export const BrowserIcon: MappedModules["discord/components/common/index"]["BrowserIcon"]; 259 - export const BrowserLinkIcon: MappedModules["discord/components/common/index"]["BrowserLinkIcon"]; 260 - export const BrowserPlusIcon: MappedModules["discord/components/common/index"]["BrowserPlusIcon"]; 261 - export const BrowserQuestionMarkIcon: MappedModules["discord/components/common/index"]["BrowserQuestionMarkIcon"]; 262 - export const BugIcon: MappedModules["discord/components/common/index"]["BugIcon"]; 263 - export const CalendarIcon: MappedModules["discord/components/common/index"]["CalendarIcon"]; 264 - export const CalendarMinusIcon: MappedModules["discord/components/common/index"]["CalendarMinusIcon"]; 265 - export const CalendarPlusIcon: MappedModules["discord/components/common/index"]["CalendarPlusIcon"]; 266 - export const CalendarRetryIcon: MappedModules["discord/components/common/index"]["CalendarRetryIcon"]; 267 - export const CalendarXIcon: MappedModules["discord/components/common/index"]["CalendarXIcon"]; 268 - export const CameraIcon: MappedModules["discord/components/common/index"]["CameraIcon"]; 269 - export const CameraSwapIcon: MappedModules["discord/components/common/index"]["CameraSwapIcon"]; 270 - export const CarIcon: MappedModules["discord/components/common/index"]["CarIcon"]; 271 208 export const ChannelListIcon: MappedModules["discord/components/common/index"]["ChannelListIcon"]; 272 - export const ChannelListMagnifyingGlassIcon: MappedModules["discord/components/common/index"]["ChannelListMagnifyingGlassIcon"]; 273 - export const ChannelListMinusIcon: MappedModules["discord/components/common/index"]["ChannelListMinusIcon"]; 274 - export const ChannelListPlusIcon: MappedModules["discord/components/common/index"]["ChannelListPlusIcon"]; 275 - export const ChannelListRetryIcon: MappedModules["discord/components/common/index"]["ChannelListRetryIcon"]; 276 - export const ChannelNotificationIcon: MappedModules["discord/components/common/index"]["ChannelNotificationIcon"]; 277 - export const ChannelsFollowedIcon: MappedModules["discord/components/common/index"]["ChannelsFollowedIcon"]; 278 - export const ChatArrowRightIcon: MappedModules["discord/components/common/index"]["ChatArrowRightIcon"]; 279 - export const ChatCheckIcon: MappedModules["discord/components/common/index"]["ChatCheckIcon"]; 280 - export const ChatDotsIcon: MappedModules["discord/components/common/index"]["ChatDotsIcon"]; 281 - export const ChatEyeIcon: MappedModules["discord/components/common/index"]["ChatEyeIcon"]; 282 - export const ChatIcon: MappedModules["discord/components/common/index"]["ChatIcon"]; 283 - export const ChatMarkUnreadIcon: MappedModules["discord/components/common/index"]["ChatMarkUnreadIcon"]; 284 - export const ChatMinusIcon: MappedModules["discord/components/common/index"]["ChatMinusIcon"]; 285 - export const ChatPlusIcon: MappedModules["discord/components/common/index"]["ChatPlusIcon"]; 286 - export const ChatRetryIcon: MappedModules["discord/components/common/index"]["ChatRetryIcon"]; 287 - export const ChatSlowModeIcon: MappedModules["discord/components/common/index"]["ChatSlowModeIcon"]; 288 - export const ChatSmileIcon: MappedModules["discord/components/common/index"]["ChatSmileIcon"]; 289 - export const ChatSpeakIcon: MappedModules["discord/components/common/index"]["ChatSpeakIcon"]; 290 - export const ChatWarningIcon: MappedModules["discord/components/common/index"]["ChatWarningIcon"]; 291 - export const ChatXIcon: MappedModules["discord/components/common/index"]["ChatXIcon"]; 292 - export const CheckmarkLargeBoldIcon: MappedModules["discord/components/common/index"]["CheckmarkLargeBoldIcon"]; 293 - export const CheckmarkLargeIcon: MappedModules["discord/components/common/index"]["CheckmarkLargeIcon"]; 294 - export const CheckmarkSmallBoldIcon: MappedModules["discord/components/common/index"]["CheckmarkSmallBoldIcon"]; 295 - export const CheckmarkSmallIcon: MappedModules["discord/components/common/index"]["CheckmarkSmallIcon"]; 296 - export const ChevronLargeDownIcon: MappedModules["discord/components/common/index"]["ChevronLargeDownIcon"]; 297 - export const ChevronLargeLeftIcon: MappedModules["discord/components/common/index"]["ChevronLargeLeftIcon"]; 298 - export const ChevronLargeRightIcon: MappedModules["discord/components/common/index"]["ChevronLargeRightIcon"]; 299 - export const ChevronLargeUpIcon: MappedModules["discord/components/common/index"]["ChevronLargeUpIcon"]; 300 209 export const ChevronSmallDownIcon: MappedModules["discord/components/common/index"]["ChevronSmallDownIcon"]; 301 - export const ChevronSmallLeftIcon: MappedModules["discord/components/common/index"]["ChevronSmallLeftIcon"]; 302 - export const ChevronSmallRightIcon: MappedModules["discord/components/common/index"]["ChevronSmallRightIcon"]; 303 210 export const ChevronSmallUpIcon: MappedModules["discord/components/common/index"]["ChevronSmallUpIcon"]; 304 - export const CircleCheckIcon: MappedModules["discord/components/common/index"]["CircleCheckIcon"]; 305 211 export const CircleInformationIcon: MappedModules["discord/components/common/index"]["CircleInformationIcon"]; 306 - export const CircleMinusIcon: MappedModules["discord/components/common/index"]["CircleMinusIcon"]; 307 - export const CirclePlayIcon: MappedModules["discord/components/common/index"]["CirclePlayIcon"]; 308 - export const CirclePlusIcon: MappedModules["discord/components/common/index"]["CirclePlusIcon"]; 309 - export const CircleQuestionIcon: MappedModules["discord/components/common/index"]["CircleQuestionIcon"]; 310 212 export const CircleWarningIcon: MappedModules["discord/components/common/index"]["CircleWarningIcon"]; 311 213 export const CircleXIcon: MappedModules["discord/components/common/index"]["CircleXIcon"]; 312 - export const ClipboardCheckIcon: MappedModules["discord/components/common/index"]["ClipboardCheckIcon"]; 313 - export const ClipboardListIcon: MappedModules["discord/components/common/index"]["ClipboardListIcon"]; 314 - export const ClipsGalleryIcon: MappedModules["discord/components/common/index"]["ClipsGalleryIcon"]; 315 - export const ClipsIcon: MappedModules["discord/components/common/index"]["ClipsIcon"]; 316 - export const ClockIcon: MappedModules["discord/components/common/index"]["ClockIcon"]; 317 - export const ClockWarningIcon: MappedModules["discord/components/common/index"]["ClockWarningIcon"]; 318 - export const ClockXIcon: MappedModules["discord/components/common/index"]["ClockXIcon"]; 319 - export const CloudDownloadIcon: MappedModules["discord/components/common/index"]["CloudDownloadIcon"]; 320 214 export const ClydeIcon: MappedModules["discord/components/common/index"]["ClydeIcon"]; 321 - export const CollapseListIcon: MappedModules["discord/components/common/index"]["CollapseListIcon"]; 322 - export const CompassIcon: MappedModules["discord/components/common/index"]["CompassIcon"]; 323 - export const ConnectionAverageIcon: MappedModules["discord/components/common/index"]["ConnectionAverageIcon"]; 324 - export const ConnectionBadIcon: MappedModules["discord/components/common/index"]["ConnectionBadIcon"]; 325 - export const ConnectionFineIcon: MappedModules["discord/components/common/index"]["ConnectionFineIcon"]; 326 - export const ConnectionUnknownIcon: MappedModules["discord/components/common/index"]["ConnectionUnknownIcon"]; 327 - export const ContactsIcon: MappedModules["discord/components/common/index"]["ContactsIcon"]; 328 215 export const CopyIcon: MappedModules["discord/components/common/index"]["CopyIcon"]; 329 - export const CreditCardIcon: MappedModules["discord/components/common/index"]["CreditCardIcon"]; 330 - export const CropIcon: MappedModules["discord/components/common/index"]["CropIcon"]; 331 - export const CrownIcon: MappedModules["discord/components/common/index"]["CrownIcon"]; 332 - export const CrunchyrollBrandLightIcon: MappedModules["discord/components/common/index"]["CrunchyrollBrandLightIcon"]; 333 - export const CrunchyrollNeutralIcon: MappedModules["discord/components/common/index"]["CrunchyrollNeutralIcon"]; 334 - export const DenyIcon: MappedModules["discord/components/common/index"]["DenyIcon"]; 335 - export const DoorEnterIcon: MappedModules["discord/components/common/index"]["DoorEnterIcon"]; 336 - export const DoorExitIcon: MappedModules["discord/components/common/index"]["DoorExitIcon"]; 337 - export const DoubleCheckmarkIcon: MappedModules["discord/components/common/index"]["DoubleCheckmarkIcon"]; 338 216 export const DownloadIcon: MappedModules["discord/components/common/index"]["DownloadIcon"]; 339 - export const DpadIcon: MappedModules["discord/components/common/index"]["DpadIcon"]; 340 - export const DragIcon: MappedModules["discord/components/common/index"]["DragIcon"]; 341 - export const EducationIcon: MappedModules["discord/components/common/index"]["EducationIcon"]; 342 - export const EmbedIcon: MappedModules["discord/components/common/index"]["EmbedIcon"]; 343 - export const EnvelopeIcon: MappedModules["discord/components/common/index"]["EnvelopeIcon"]; 344 - export const ExpandGifIcon: MappedModules["discord/components/common/index"]["ExpandGifIcon"]; 345 - export const ExperimentalImageBrokenIcon: MappedModules["discord/components/common/index"]["ExperimentalImageBrokenIcon"]; 346 - export const ExperimentalLootboxIcon: MappedModules["discord/components/common/index"]["ExperimentalLootboxIcon"]; 347 - export const ExperimentalMicrophoneSparkleIcon: MappedModules["discord/components/common/index"]["ExperimentalMicrophoneSparkleIcon"]; 348 - export const ExperimentalMicrophoneSparkleMutedIcon: MappedModules["discord/components/common/index"]["ExperimentalMicrophoneSparkleMutedIcon"]; 349 - export const ExperimentalPineappleHouseIcon: MappedModules["discord/components/common/index"]["ExperimentalPineappleHouseIcon"]; 350 - export const EyeDropperIcon: MappedModules["discord/components/common/index"]["EyeDropperIcon"]; 351 - export const EyeIcon: MappedModules["discord/components/common/index"]["EyeIcon"]; 352 - export const EyePlusIcon: MappedModules["discord/components/common/index"]["EyePlusIcon"]; 353 - export const EyeSlashIcon: MappedModules["discord/components/common/index"]["EyeSlashIcon"]; 354 - export const FacebookNeutralIcon: MappedModules["discord/components/common/index"]["FacebookNeutralIcon"]; 355 - export const FileDenyIcon: MappedModules["discord/components/common/index"]["FileDenyIcon"]; 356 - export const FileIcon: MappedModules["discord/components/common/index"]["FileIcon"]; 357 - export const FileUpIcon: MappedModules["discord/components/common/index"]["FileUpIcon"]; 358 - export const FileWarningIcon: MappedModules["discord/components/common/index"]["FileWarningIcon"]; 359 - export const FiltersHorizontalIcon: MappedModules["discord/components/common/index"]["FiltersHorizontalIcon"]; 360 - export const FireIcon: MappedModules["discord/components/common/index"]["FireIcon"]; 361 - export const FlagIcon: MappedModules["discord/components/common/index"]["FlagIcon"]; 362 - export const FlagMinusIcon: MappedModules["discord/components/common/index"]["FlagMinusIcon"]; 363 - export const FlagPlusIcon: MappedModules["discord/components/common/index"]["FlagPlusIcon"]; 364 - export const FlagRetryIcon: MappedModules["discord/components/common/index"]["FlagRetryIcon"]; 365 - export const FlashIcon: MappedModules["discord/components/common/index"]["FlashIcon"]; 366 - export const FlipHorizontalIcon: MappedModules["discord/components/common/index"]["FlipHorizontalIcon"]; 367 - export const FlipVerticalIcon: MappedModules["discord/components/common/index"]["FlipVerticalIcon"]; 368 - export const FolderIcon: MappedModules["discord/components/common/index"]["FolderIcon"]; 369 - export const FolderPlusIcon: MappedModules["discord/components/common/index"]["FolderPlusIcon"]; 370 - export const FoodIcon: MappedModules["discord/components/common/index"]["FoodIcon"]; 371 - export const ForumIcon: MappedModules["discord/components/common/index"]["ForumIcon"]; 372 - export const ForumLockIcon: MappedModules["discord/components/common/index"]["ForumLockIcon"]; 373 - export const ForumWarningIcon: MappedModules["discord/components/common/index"]["ForumWarningIcon"]; 374 - export const FriendsIcon: MappedModules["discord/components/common/index"]["FriendsIcon"]; 375 217 export const FullscreenEnterIcon: MappedModules["discord/components/common/index"]["FullscreenEnterIcon"]; 376 - export const FullscreenExitIcon: MappedModules["discord/components/common/index"]["FullscreenExitIcon"]; 377 218 export const GameControllerIcon: MappedModules["discord/components/common/index"]["GameControllerIcon"]; 378 - export const GifIcon: MappedModules["discord/components/common/index"]["GifIcon"]; 379 - export const GiftIcon: MappedModules["discord/components/common/index"]["GiftIcon"]; 380 219 export const GlobeEarthIcon: MappedModules["discord/components/common/index"]["GlobeEarthIcon"]; 381 - export const GridHorizontalIcon: MappedModules["discord/components/common/index"]["GridHorizontalIcon"]; 382 - export const GridSquareIcon: MappedModules["discord/components/common/index"]["GridSquareIcon"]; 383 - export const GridVerticalIcon: MappedModules["discord/components/common/index"]["GridVerticalIcon"]; 384 - export const GroupArrowDownIcon: MappedModules["discord/components/common/index"]["GroupArrowDownIcon"]; 385 - export const GroupArrowRightIcon: MappedModules["discord/components/common/index"]["GroupArrowRightIcon"]; 386 - export const GroupIcon: MappedModules["discord/components/common/index"]["GroupIcon"]; 387 - export const GroupMinusIcon: MappedModules["discord/components/common/index"]["GroupMinusIcon"]; 388 - export const GroupPlusIcon: MappedModules["discord/components/common/index"]["GroupPlusIcon"]; 389 - export const GroupRetryIcon: MappedModules["discord/components/common/index"]["GroupRetryIcon"]; 390 - export const HammerIcon: MappedModules["discord/components/common/index"]["HammerIcon"]; 391 - export const HammerMinusIcon: MappedModules["discord/components/common/index"]["HammerMinusIcon"]; 392 - export const HammerPlusIcon: MappedModules["discord/components/common/index"]["HammerPlusIcon"]; 393 - export const HammerRetryIcon: MappedModules["discord/components/common/index"]["HammerRetryIcon"]; 394 - export const HammerXIcon: MappedModules["discord/components/common/index"]["HammerXIcon"]; 395 - export const HandRequestSpeakIcon: MappedModules["discord/components/common/index"]["HandRequestSpeakIcon"]; 396 - export const HandRequestSpeakListIcon: MappedModules["discord/components/common/index"]["HandRequestSpeakListIcon"]; 397 - export const HashmarkIcon: MappedModules["discord/components/common/index"]["HashmarkIcon"]; 398 - export const HdIcon: MappedModules["discord/components/common/index"]["HdIcon"]; 399 - export const HeadphonesDenyIcon: MappedModules["discord/components/common/index"]["HeadphonesDenyIcon"]; 400 - export const HeadphonesIcon: MappedModules["discord/components/common/index"]["HeadphonesIcon"]; 401 - export const HeadphonesSlashIcon: MappedModules["discord/components/common/index"]["HeadphonesSlashIcon"]; 402 220 export const HeartIcon: MappedModules["discord/components/common/index"]["HeartIcon"]; 403 - export const HeartOutlineIcon: MappedModules["discord/components/common/index"]["HeartOutlineIcon"]; 404 - export const HomeIcon: MappedModules["discord/components/common/index"]["HomeIcon"]; 405 - export const HomeSlashIcon: MappedModules["discord/components/common/index"]["HomeSlashIcon"]; 406 - export const HourglassIcon: MappedModules["discord/components/common/index"]["HourglassIcon"]; 407 - export const HubIcon: MappedModules["discord/components/common/index"]["HubIcon"]; 408 - export const IdIcon: MappedModules["discord/components/common/index"]["IdIcon"]; 409 - export const ImageFileIcon: MappedModules["discord/components/common/index"]["ImageFileIcon"]; 410 - export const ImageFileUpIcon: MappedModules["discord/components/common/index"]["ImageFileUpIcon"]; 411 - export const ImageIcon: MappedModules["discord/components/common/index"]["ImageIcon"]; 412 - export const ImageLockIcon: MappedModules["discord/components/common/index"]["ImageLockIcon"]; 413 - export const ImagePlusIcon: MappedModules["discord/components/common/index"]["ImagePlusIcon"]; 414 - export const ImageSparkleIcon: MappedModules["discord/components/common/index"]["ImageSparkleIcon"]; 415 - export const ImageTextIcon: MappedModules["discord/components/common/index"]["ImageTextIcon"]; 416 - export const ImageWarningIcon: MappedModules["discord/components/common/index"]["ImageWarningIcon"]; 417 - export const ImagesIcon: MappedModules["discord/components/common/index"]["ImagesIcon"]; 418 - export const InboxIcon: MappedModules["discord/components/common/index"]["InboxIcon"]; 419 - export const InstagramNeutralIcon: MappedModules["discord/components/common/index"]["InstagramNeutralIcon"]; 420 - export const InventoryIcon: MappedModules["discord/components/common/index"]["InventoryIcon"]; 421 - export const ItalicIcon: MappedModules["discord/components/common/index"]["ItalicIcon"]; 422 - export const KeyIcon: MappedModules["discord/components/common/index"]["KeyIcon"]; 423 - export const KeyboardIcon: MappedModules["discord/components/common/index"]["KeyboardIcon"]; 424 - export const LanguageIcon: MappedModules["discord/components/common/index"]["LanguageIcon"]; 425 - export const LaptopPhoneIcon: MappedModules["discord/components/common/index"]["LaptopPhoneIcon"]; 426 - export const LeagueOfLegendsBrandIcon: MappedModules["discord/components/common/index"]["LeagueOfLegendsBrandIcon"]; 427 - export const LettersIcon: MappedModules["discord/components/common/index"]["LettersIcon"]; 428 - export const LightbulbIcon: MappedModules["discord/components/common/index"]["LightbulbIcon"]; 429 - export const LinkExternalMediumIcon: MappedModules["discord/components/common/index"]["LinkExternalMediumIcon"]; 430 - export const LinkExternalSmallIcon: MappedModules["discord/components/common/index"]["LinkExternalSmallIcon"]; 431 221 export const LinkIcon: MappedModules["discord/components/common/index"]["LinkIcon"]; 432 - export const LinkPlusIcon: MappedModules["discord/components/common/index"]["LinkPlusIcon"]; 433 - export const ListBulletsIcon: MappedModules["discord/components/common/index"]["ListBulletsIcon"]; 434 - export const ListNumberedIcon: MappedModules["discord/components/common/index"]["ListNumberedIcon"]; 435 - export const ListViewIcon: MappedModules["discord/components/common/index"]["ListViewIcon"]; 436 - export const LocationIcon: MappedModules["discord/components/common/index"]["LocationIcon"]; 437 - export const LockIcon: MappedModules["discord/components/common/index"]["LockIcon"]; 438 - export const LockUnlockedIcon: MappedModules["discord/components/common/index"]["LockUnlockedIcon"]; 439 - export const MagicWandIcon: MappedModules["discord/components/common/index"]["MagicWandIcon"]; 440 - export const MagnifyingGlassIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassIcon"]; 441 - export const MagnifyingGlassMinusIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassMinusIcon"]; 442 - export const MagnifyingGlassPlusIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassPlusIcon"]; 443 - export const ManaIcon: MappedModules["discord/components/common/index"]["ManaIcon"]; 444 - export const MastodonBrandIcon: MappedModules["discord/components/common/index"]["MastodonBrandIcon"]; 445 - export const MastodonNeutralIcon: MappedModules["discord/components/common/index"]["MastodonNeutralIcon"]; 446 222 export const MaximizeIcon: MappedModules["discord/components/common/index"]["MaximizeIcon"]; 447 - export const MedalIcon: MappedModules["discord/components/common/index"]["MedalIcon"]; 448 - export const MenuIcon: MappedModules["discord/components/common/index"]["MenuIcon"]; 449 - export const MicrophoneArrowRightIcon: MappedModules["discord/components/common/index"]["MicrophoneArrowRightIcon"]; 450 - export const MicrophoneDenyIcon: MappedModules["discord/components/common/index"]["MicrophoneDenyIcon"]; 451 - export const MicrophoneIcon: MappedModules["discord/components/common/index"]["MicrophoneIcon"]; 452 - export const MicrophoneSlashIcon: MappedModules["discord/components/common/index"]["MicrophoneSlashIcon"]; 453 - export const MinimizeIcon: MappedModules["discord/components/common/index"]["MinimizeIcon"]; 454 223 export const MinusIcon: MappedModules["discord/components/common/index"]["MinusIcon"]; 455 - export const MobilePhoneControllerIcon: MappedModules["discord/components/common/index"]["MobilePhoneControllerIcon"]; 456 224 export const MobilePhoneIcon: MappedModules["discord/components/common/index"]["MobilePhoneIcon"]; 457 - export const MobilePhonePlusIcon: MappedModules["discord/components/common/index"]["MobilePhonePlusIcon"]; 458 - export const MobilePhoneSettingsIcon: MappedModules["discord/components/common/index"]["MobilePhoneSettingsIcon"]; 459 - export const MobilePhoneShareIcon: MappedModules["discord/components/common/index"]["MobilePhoneShareIcon"]; 460 - export const MobilePhoneSpeakerIcon: MappedModules["discord/components/common/index"]["MobilePhoneSpeakerIcon"]; 461 - export const MobilePhoneVideoIcon: MappedModules["discord/components/common/index"]["MobilePhoneVideoIcon"]; 462 - export const MobilePhoneXIcon: MappedModules["discord/components/common/index"]["MobilePhoneXIcon"]; 463 - export const ModerationIcon: MappedModules["discord/components/common/index"]["ModerationIcon"]; 464 - export const MoreHorizontalIcon: MappedModules["discord/components/common/index"]["MoreHorizontalIcon"]; 465 - export const MoreVerticalIcon: MappedModules["discord/components/common/index"]["MoreVerticalIcon"]; 466 - export const MusicIcon: MappedModules["discord/components/common/index"]["MusicIcon"]; 467 - export const MusicSlashIcon: MappedModules["discord/components/common/index"]["MusicSlashIcon"]; 468 - export const NatureIcon: MappedModules["discord/components/common/index"]["NatureIcon"]; 469 - export const NearbyScanIcon: MappedModules["discord/components/common/index"]["NearbyScanIcon"]; 470 - export const NewUserIcon: MappedModules["discord/components/common/index"]["NewUserIcon"]; 471 - export const NewUserSimpleIcon: MappedModules["discord/components/common/index"]["NewUserSimpleIcon"]; 472 - export const NintendoSwitchNeutralIcon: MappedModules["discord/components/common/index"]["NintendoSwitchNeutralIcon"]; 473 - export const NitroWheelIcon: MappedModules["discord/components/common/index"]["NitroWheelIcon"]; 474 - export const ObjectIcon: MappedModules["discord/components/common/index"]["ObjectIcon"]; 475 - export const PaintPaletteIcon: MappedModules["discord/components/common/index"]["PaintPaletteIcon"]; 476 - export const PaintbrushThickIcon: MappedModules["discord/components/common/index"]["PaintbrushThickIcon"]; 477 - export const PaintbrushThickMinusIcon: MappedModules["discord/components/common/index"]["PaintbrushThickMinusIcon"]; 478 - export const PaintbrushThickPlusIcon: MappedModules["discord/components/common/index"]["PaintbrushThickPlusIcon"]; 479 - export const PaintbrushThickRetryIcon: MappedModules["discord/components/common/index"]["PaintbrushThickRetryIcon"]; 480 - export const PaintbrushThinIcon: MappedModules["discord/components/common/index"]["PaintbrushThinIcon"]; 481 - export const PaintbrushThinMinusIcon: MappedModules["discord/components/common/index"]["PaintbrushThinMinusIcon"]; 482 - export const PaintbrushThinPlusIcon: MappedModules["discord/components/common/index"]["PaintbrushThinPlusIcon"]; 483 - export const PaintbrushThinRetryIcon: MappedModules["discord/components/common/index"]["PaintbrushThinRetryIcon"]; 484 - export const PaperClockIcon: MappedModules["discord/components/common/index"]["PaperClockIcon"]; 485 - export const PaperIcon: MappedModules["discord/components/common/index"]["PaperIcon"]; 486 - export const PaperPlusIcon: MappedModules["discord/components/common/index"]["PaperPlusIcon"]; 487 225 export const PauseIcon: MappedModules["discord/components/common/index"]["PauseIcon"]; 488 - export const PencilIcon: MappedModules["discord/components/common/index"]["PencilIcon"]; 489 - export const PencilSparkleIcon: MappedModules["discord/components/common/index"]["PencilSparkleIcon"]; 490 - export const PhoneCallIcon: MappedModules["discord/components/common/index"]["PhoneCallIcon"]; 491 - export const PhoneHangUpIcon: MappedModules["discord/components/common/index"]["PhoneHangUpIcon"]; 492 - export const PhoneIcon: MappedModules["discord/components/common/index"]["PhoneIcon"]; 493 - export const PiggyBankIcon: MappedModules["discord/components/common/index"]["PiggyBankIcon"]; 494 - export const PinIcon: MappedModules["discord/components/common/index"]["PinIcon"]; 495 - export const PinUprightIcon: MappedModules["discord/components/common/index"]["PinUprightIcon"]; 496 - export const PinUprightSlashIcon: MappedModules["discord/components/common/index"]["PinUprightSlashIcon"]; 497 226 export const PlayIcon: MappedModules["discord/components/common/index"]["PlayIcon"]; 498 - export const PlaybackOffIcon: MappedModules["discord/components/common/index"]["PlaybackOffIcon"]; 499 - export const PlaybackOnIcon: MappedModules["discord/components/common/index"]["PlaybackOnIcon"]; 500 - export const PlaystationNeutralIcon: MappedModules["discord/components/common/index"]["PlaystationNeutralIcon"]; 501 227 export const PlusLargeIcon: MappedModules["discord/components/common/index"]["PlusLargeIcon"]; 502 - export const PlusMediumIcon: MappedModules["discord/components/common/index"]["PlusMediumIcon"]; 503 - export const PlusSmallIcon: MappedModules["discord/components/common/index"]["PlusSmallIcon"]; 504 - export const PollsIcon: MappedModules["discord/components/common/index"]["PollsIcon"]; 505 - export const PotionIcon: MappedModules["discord/components/common/index"]["PotionIcon"]; 506 - export const PremiumChannelIcon: MappedModules["discord/components/common/index"]["PremiumChannelIcon"]; 507 - export const PrivacyAndSafetyIcon: MappedModules["discord/components/common/index"]["PrivacyAndSafetyIcon"]; 508 - export const PuzzlePieceIcon: MappedModules["discord/components/common/index"]["PuzzlePieceIcon"]; 509 - export const PuzzlePieceMinusIcon: MappedModules["discord/components/common/index"]["PuzzlePieceMinusIcon"]; 510 - export const PuzzlePiecePlusIcon: MappedModules["discord/components/common/index"]["PuzzlePiecePlusIcon"]; 511 - export const PuzzlePieceRetryIcon: MappedModules["discord/components/common/index"]["PuzzlePieceRetryIcon"]; 512 - export const QrCodeIcon: MappedModules["discord/components/common/index"]["QrCodeIcon"]; 513 - export const QuestsIcon: MappedModules["discord/components/common/index"]["QuestsIcon"]; 514 - export const QuoteIcon: MappedModules["discord/components/common/index"]["QuoteIcon"]; 515 - export const ReactionIcon: MappedModules["discord/components/common/index"]["ReactionIcon"]; 516 - export const ReceiptIcon: MappedModules["discord/components/common/index"]["ReceiptIcon"]; 517 - export const RecordPlayerIcon: MappedModules["discord/components/common/index"]["RecordPlayerIcon"]; 518 - export const RedoIcon: MappedModules["discord/components/common/index"]["RedoIcon"]; 519 - export const RefreshIcon: MappedModules["discord/components/common/index"]["RefreshIcon"]; 520 - export const RemixIcon: MappedModules["discord/components/common/index"]["RemixIcon"]; 521 228 export const RetryIcon: MappedModules["discord/components/common/index"]["RetryIcon"]; 522 - export const RibbonIcon: MappedModules["discord/components/common/index"]["RibbonIcon"]; 523 - export const RobotIcon: MappedModules["discord/components/common/index"]["RobotIcon"]; 524 - export const RotateIcon: MappedModules["discord/components/common/index"]["RotateIcon"]; 525 229 export const ScienceIcon: MappedModules["discord/components/common/index"]["ScienceIcon"]; 526 - export const ScreenArrowIcon: MappedModules["discord/components/common/index"]["ScreenArrowIcon"]; 527 230 export const ScreenIcon: MappedModules["discord/components/common/index"]["ScreenIcon"]; 528 - export const ScreenSlashIcon: MappedModules["discord/components/common/index"]["ScreenSlashIcon"]; 529 - export const ScreenStreamIcon: MappedModules["discord/components/common/index"]["ScreenStreamIcon"]; 530 - export const ScreenSystemRequirementsIcon: MappedModules["discord/components/common/index"]["ScreenSystemRequirementsIcon"]; 531 - export const ScreenXIcon: MappedModules["discord/components/common/index"]["ScreenXIcon"]; 532 - export const SendMessageIcon: MappedModules["discord/components/common/index"]["SendMessageIcon"]; 533 - export const ServerGridIcon: MappedModules["discord/components/common/index"]["ServerGridIcon"]; 534 - export const ServerIcon: MappedModules["discord/components/common/index"]["ServerIcon"]; 535 - export const SettingsArrowUpIcon: MappedModules["discord/components/common/index"]["SettingsArrowUpIcon"]; 536 - export const SettingsCircleIcon: MappedModules["discord/components/common/index"]["SettingsCircleIcon"]; 537 - export const SettingsIcon: MappedModules["discord/components/common/index"]["SettingsIcon"]; 538 - export const SettingsInfoIcon: MappedModules["discord/components/common/index"]["SettingsInfoIcon"]; 539 - export const SettingsPlusIcon: MappedModules["discord/components/common/index"]["SettingsPlusIcon"]; 540 - export const ShareIcon: MappedModules["discord/components/common/index"]["ShareIcon"]; 541 - export const ShieldAtIcon: MappedModules["discord/components/common/index"]["ShieldAtIcon"]; 542 - export const ShieldIcon: MappedModules["discord/components/common/index"]["ShieldIcon"]; 543 - export const ShieldLockIcon: MappedModules["discord/components/common/index"]["ShieldLockIcon"]; 544 - export const ShieldUserIcon: MappedModules["discord/components/common/index"]["ShieldUserIcon"]; 545 - export const ShopCircleIcon: MappedModules["discord/components/common/index"]["ShopCircleIcon"]; 546 - export const ShopIcon: MappedModules["discord/components/common/index"]["ShopIcon"]; 547 - export const ShopMinusIcon: MappedModules["discord/components/common/index"]["ShopMinusIcon"]; 548 - export const ShopPlusIcon: MappedModules["discord/components/common/index"]["ShopPlusIcon"]; 549 - export const ShopSparkleIcon: MappedModules["discord/components/common/index"]["ShopSparkleIcon"]; 550 - export const SignPostIcon: MappedModules["discord/components/common/index"]["SignPostIcon"]; 551 - export const SlashBoxIcon: MappedModules["discord/components/common/index"]["SlashBoxIcon"]; 552 - export const SlashIcon: MappedModules["discord/components/common/index"]["SlashIcon"]; 553 - export const SlashMinusIcon: MappedModules["discord/components/common/index"]["SlashMinusIcon"]; 554 - export const SlashPlusIcon: MappedModules["discord/components/common/index"]["SlashPlusIcon"]; 555 - export const SlashRetryIcon: MappedModules["discord/components/common/index"]["SlashRetryIcon"]; 556 - export const SoundboardIcon: MappedModules["discord/components/common/index"]["SoundboardIcon"]; 557 - export const SoundboardSlashIcon: MappedModules["discord/components/common/index"]["SoundboardSlashIcon"]; 558 - export const SparklesIcon: MappedModules["discord/components/common/index"]["SparklesIcon"]; 559 - export const SpeedometerIcon: MappedModules["discord/components/common/index"]["SpeedometerIcon"]; 560 - export const SpoilerIcon: MappedModules["discord/components/common/index"]["SpoilerIcon"]; 561 - export const StaffBadgeIcon: MappedModules["discord/components/common/index"]["StaffBadgeIcon"]; 562 - export const StageIcon: MappedModules["discord/components/common/index"]["StageIcon"]; 563 - export const StageListIcon: MappedModules["discord/components/common/index"]["StageListIcon"]; 564 - export const StageLockIcon: MappedModules["discord/components/common/index"]["StageLockIcon"]; 565 - export const StageMinusIcon: MappedModules["discord/components/common/index"]["StageMinusIcon"]; 566 - export const StageModeratorIcon: MappedModules["discord/components/common/index"]["StageModeratorIcon"]; 567 - export const StagePlusIcon: MappedModules["discord/components/common/index"]["StagePlusIcon"]; 568 - export const StageRetryIcon: MappedModules["discord/components/common/index"]["StageRetryIcon"]; 569 - export const StageXIcon: MappedModules["discord/components/common/index"]["StageXIcon"]; 570 - export const StampIcon: MappedModules["discord/components/common/index"]["StampIcon"]; 571 231 export const StarIcon: MappedModules["discord/components/common/index"]["StarIcon"]; 572 - export const StarOutlineIcon: MappedModules["discord/components/common/index"]["StarOutlineIcon"]; 573 - export const StarShootingIcon: MappedModules["discord/components/common/index"]["StarShootingIcon"]; 574 - export const StickerDeadIcon: MappedModules["discord/components/common/index"]["StickerDeadIcon"]; 575 - export const StickerIcon: MappedModules["discord/components/common/index"]["StickerIcon"]; 576 - export const StickerMinusIcon: MappedModules["discord/components/common/index"]["StickerMinusIcon"]; 577 - export const StickerPlusIcon: MappedModules["discord/components/common/index"]["StickerPlusIcon"]; 578 - export const StickerRetryIcon: MappedModules["discord/components/common/index"]["StickerRetryIcon"]; 579 - export const StickerSadIcon: MappedModules["discord/components/common/index"]["StickerSadIcon"]; 580 - export const StickerSmallIcon: MappedModules["discord/components/common/index"]["StickerSmallIcon"]; 581 - export const StickerWink1Icon: MappedModules["discord/components/common/index"]["StickerWink1Icon"]; 582 - export const StickerWink2Icon: MappedModules["discord/components/common/index"]["StickerWink2Icon"]; 583 - export const StopIcon: MappedModules["discord/components/common/index"]["StopIcon"]; 584 - export const StrikethroughIcon: MappedModules["discord/components/common/index"]["StrikethroughIcon"]; 585 - export const SuperReactionIcon: MappedModules["discord/components/common/index"]["SuperReactionIcon"]; 586 - export const TagIcon: MappedModules["discord/components/common/index"]["TagIcon"]; 587 - export const TagsIcon: MappedModules["discord/components/common/index"]["TagsIcon"]; 588 - export const TextControllerIcon: MappedModules["discord/components/common/index"]["TextControllerIcon"]; 589 - export const TextIcon: MappedModules["discord/components/common/index"]["TextIcon"]; 590 - export const TextLockIcon: MappedModules["discord/components/common/index"]["TextLockIcon"]; 591 - export const TextUserIcon: MappedModules["discord/components/common/index"]["TextUserIcon"]; 592 - export const TextWarningIcon: MappedModules["discord/components/common/index"]["TextWarningIcon"]; 593 - export const ThemeDarkIcon: MappedModules["discord/components/common/index"]["ThemeDarkIcon"]; 594 - export const ThemeLightIcon: MappedModules["discord/components/common/index"]["ThemeLightIcon"]; 595 - export const ThemeMidnightIcon: MappedModules["discord/components/common/index"]["ThemeMidnightIcon"]; 596 - export const ThreadIcon: MappedModules["discord/components/common/index"]["ThreadIcon"]; 597 - export const ThreadLockIcon: MappedModules["discord/components/common/index"]["ThreadLockIcon"]; 598 - export const ThreadMinusIcon: MappedModules["discord/components/common/index"]["ThreadMinusIcon"]; 599 - export const ThreadPlusIcon: MappedModules["discord/components/common/index"]["ThreadPlusIcon"]; 600 - export const ThreadRetryIcon: MappedModules["discord/components/common/index"]["ThreadRetryIcon"]; 601 - export const ThreadWarningIcon: MappedModules["discord/components/common/index"]["ThreadWarningIcon"]; 602 - export const ThumbsDownIcon: MappedModules["discord/components/common/index"]["ThumbsDownIcon"]; 603 - export const ThumbsUpIcon: MappedModules["discord/components/common/index"]["ThumbsUpIcon"]; 604 - export const TicketIcon: MappedModules["discord/components/common/index"]["TicketIcon"]; 605 - export const TiktokNeutralIcon: MappedModules["discord/components/common/index"]["TiktokNeutralIcon"]; 606 - export const TimerIcon: MappedModules["discord/components/common/index"]["TimerIcon"]; 607 - export const TopicsIcon: MappedModules["discord/components/common/index"]["TopicsIcon"]; 608 - export const TrainIcon: MappedModules["discord/components/common/index"]["TrainIcon"]; 609 232 export const TrashIcon: MappedModules["discord/components/common/index"]["TrashIcon"]; 610 - export const TreehouseIcon: MappedModules["discord/components/common/index"]["TreehouseIcon"]; 611 - export const TrophyIcon: MappedModules["discord/components/common/index"]["TrophyIcon"]; 612 - export const TvIcon: MappedModules["discord/components/common/index"]["TvIcon"]; 613 - export const TwitterNeutralIcon: MappedModules["discord/components/common/index"]["TwitterNeutralIcon"]; 614 - export const UnderlineIcon: MappedModules["discord/components/common/index"]["UnderlineIcon"]; 615 - export const UndoIcon: MappedModules["discord/components/common/index"]["UndoIcon"]; 616 - export const UnknownGameIcon: MappedModules["discord/components/common/index"]["UnknownGameIcon"]; 617 - export const UnsendIcon: MappedModules["discord/components/common/index"]["UnsendIcon"]; 618 - export const UploadIcon: MappedModules["discord/components/common/index"]["UploadIcon"]; 619 - export const UserArrowDiagonalBottomRightIcon: MappedModules["discord/components/common/index"]["UserArrowDiagonalBottomRightIcon"]; 620 - export const UserCheckIcon: MappedModules["discord/components/common/index"]["UserCheckIcon"]; 621 - export const UserCircleIcon: MappedModules["discord/components/common/index"]["UserCircleIcon"]; 622 - export const UserCircleStatusIcon: MappedModules["discord/components/common/index"]["UserCircleStatusIcon"]; 623 - export const UserClockIcon: MappedModules["discord/components/common/index"]["UserClockIcon"]; 624 - export const UserIcon: MappedModules["discord/components/common/index"]["UserIcon"]; 625 - export const UserMinusIcon: MappedModules["discord/components/common/index"]["UserMinusIcon"]; 626 - export const UserPlatformIcon: MappedModules["discord/components/common/index"]["UserPlatformIcon"]; 627 - export const UserPlayIcon: MappedModules["discord/components/common/index"]["UserPlayIcon"]; 628 - export const UserPlusIcon: MappedModules["discord/components/common/index"]["UserPlusIcon"]; 629 - export const UserRetryIcon: MappedModules["discord/components/common/index"]["UserRetryIcon"]; 630 - export const UserSquareIcon: MappedModules["discord/components/common/index"]["UserSquareIcon"]; 631 - export const UserStatusIcon: MappedModules["discord/components/common/index"]["UserStatusIcon"]; 632 - export const VideoIcon: MappedModules["discord/components/common/index"]["VideoIcon"]; 633 - export const VideoLockIcon: MappedModules["discord/components/common/index"]["VideoLockIcon"]; 634 - export const VideoSlashIcon: MappedModules["discord/components/common/index"]["VideoSlashIcon"]; 635 - export const VoiceBluetoothIcon: MappedModules["discord/components/common/index"]["VoiceBluetoothIcon"]; 636 - export const VoiceLockIcon: MappedModules["discord/components/common/index"]["VoiceLockIcon"]; 637 - export const VoiceLowIcon: MappedModules["discord/components/common/index"]["VoiceLowIcon"]; 638 - export const VoiceNormalIcon: MappedModules["discord/components/common/index"]["VoiceNormalIcon"]; 639 - export const VoiceWarningIcon: MappedModules["discord/components/common/index"]["VoiceWarningIcon"]; 640 - export const VoiceXIcon: MappedModules["discord/components/common/index"]["VoiceXIcon"]; 641 - export const WalletIcon: MappedModules["discord/components/common/index"]["WalletIcon"]; 642 233 export const WarningIcon: MappedModules["discord/components/common/index"]["WarningIcon"]; 643 - export const WaveformIcon: MappedModules["discord/components/common/index"]["WaveformIcon"]; 644 - export const WaveformSlashIcon: MappedModules["discord/components/common/index"]["WaveformSlashIcon"]; 645 - export const WebhookIcon: MappedModules["discord/components/common/index"]["WebhookIcon"]; 646 - export const WebhookPlusIcon: MappedModules["discord/components/common/index"]["WebhookPlusIcon"]; 647 - export const WidgetsIcon: MappedModules["discord/components/common/index"]["WidgetsIcon"]; 648 - export const WidgetsMinusIcon: MappedModules["discord/components/common/index"]["WidgetsMinusIcon"]; 649 - export const WidgetsPlusIcon: MappedModules["discord/components/common/index"]["WidgetsPlusIcon"]; 650 - export const WidgetsRetryIcon: MappedModules["discord/components/common/index"]["WidgetsRetryIcon"]; 651 234 export const WindowLaunchIcon: MappedModules["discord/components/common/index"]["WindowLaunchIcon"]; 652 - export const WindowReturnIcon: MappedModules["discord/components/common/index"]["WindowReturnIcon"]; 653 - export const WindowTopIcon: MappedModules["discord/components/common/index"]["WindowTopIcon"]; 654 235 export const WindowTopOutlineIcon: MappedModules["discord/components/common/index"]["WindowTopOutlineIcon"]; 655 - export const WrenchIcon: MappedModules["discord/components/common/index"]["WrenchIcon"]; 656 - export const XLargeBoldIcon: MappedModules["discord/components/common/index"]["XLargeBoldIcon"]; 657 236 export const XLargeIcon: MappedModules["discord/components/common/index"]["XLargeIcon"]; 658 - export const XNeutralIcon: MappedModules["discord/components/common/index"]["XNeutralIcon"]; 659 - export const XSmallBoldIcon: MappedModules["discord/components/common/index"]["XSmallBoldIcon"]; 660 237 export const XSmallIcon: MappedModules["discord/components/common/index"]["XSmallIcon"]; 661 - export const XboxNeutralIcon: MappedModules["discord/components/common/index"]["XboxNeutralIcon"]; 662 - export const YoutubeNeutralIcon: MappedModules["discord/components/common/index"]["YoutubeNeutralIcon"]; 663 - export const AccessibilityPreferencesContext: MappedModules["discord/components/common/index"]["AccessibilityPreferencesContext"]; 664 - export const AdvancedScroller: MappedModules["discord/components/common/index"]["AdvancedScroller"]; 665 - export const AdvancedScrollerAuto: MappedModules["discord/components/common/index"]["AdvancedScrollerAuto"]; 666 - export const AdvancedScrollerNone: MappedModules["discord/components/common/index"]["AdvancedScrollerNone"]; 667 - export const AdvancedScrollerThin: MappedModules["discord/components/common/index"]["AdvancedScrollerThin"]; 668 - export const Anchor: MappedModules["discord/components/common/index"]["Anchor"]; 669 - export const AnimatedAvatar: MappedModules["discord/components/common/index"]["AnimatedAvatar"]; 670 - export const AnimatedDots: MappedModules["discord/components/common/index"]["AnimatedDots"]; 671 - export const AnimatedStatus: MappedModules["discord/components/common/index"]["AnimatedStatus"]; 672 - export const Backdrop: MappedModules["discord/components/common/index"]["Backdrop"]; 673 - export const BasePopout: MappedModules["discord/components/common/index"]["BasePopout"]; 674 - export const BlobMask: MappedModules["discord/components/common/index"]["BlobMask"]; 675 - export const BlockInteractions: MappedModules["discord/components/common/index"]["BlockInteractions"]; 676 - export const BlockInteractionsContext: MappedModules["discord/components/common/index"]["BlockInteractionsContext"]; 677 - export const ButtonGroup: MappedModules["discord/components/common/index"]["ButtonGroup"]; 678 - export const ButtonLink: MappedModules["discord/components/common/index"]["ButtonLink"]; 679 - export const CalendarPicker: MappedModules["discord/components/common/index"]["CalendarPicker"]; 680 - export const ChainedLottieAnimation: MappedModules["discord/components/common/index"]["ChainedLottieAnimation"]; 681 - export const Checkbox: MappedModules["discord/components/common/index"]["Checkbox"]; 682 - export const CheckboxIndicator: MappedModules["discord/components/common/index"]["CheckboxIndicator"]; 683 - export const CircleBadge: MappedModules["discord/components/common/index"]["CircleBadge"]; 684 - export const CircleIconButton: MappedModules["discord/components/common/index"]["CircleIconButton"]; 685 - export const ClickableContainer: MappedModules["discord/components/common/index"]["ClickableContainer"]; 686 - export const Collapsible: MappedModules["discord/components/common/index"]["Collapsible"]; 687 - export const ColorPicker: MappedModules["discord/components/common/index"]["ColorPicker"]; 688 - export const ColorPickerCustomButton: MappedModules["discord/components/common/index"]["ColorPickerCustomButton"]; 689 - export const ColorPickerDefaultButton: MappedModules["discord/components/common/index"]["ColorPickerDefaultButton"]; 690 - export const Combobox: MappedModules["discord/components/common/index"]["Combobox"]; 691 - export const ComboboxItem: MappedModules["discord/components/common/index"]["ComboboxItem"]; 692 - export const ComboboxPopout: MappedModules["discord/components/common/index"]["ComboboxPopout"]; 693 238 export const ConfirmModal: MappedModules["discord/components/common/index"]["ConfirmModal"]; 694 - export const CopyInput: MappedModules["discord/components/common/index"]["CopyInput"]; 695 - export const CustomColorPicker: MappedModules["discord/components/common/index"]["CustomColorPicker"]; 696 - export const DateInput: MappedModules["discord/components/common/index"]["DateInput"]; 697 - export const DeclarativeConfirmModal: MappedModules["discord/components/common/index"]["DeclarativeConfirmModal"]; 698 - export const DisableCustomTheme: MappedModules["discord/components/common/index"]["DisableCustomTheme"]; 699 - export const DnDKeyboardHelpBar: MappedModules["discord/components/common/index"]["DnDKeyboardHelpBar"]; 700 - export const DnDProvider: MappedModules["discord/components/common/index"]["DnDProvider"]; 701 - export const Dots: MappedModules["discord/components/common/index"]["Dots"]; 702 - export const EmptyState: MappedModules["discord/components/common/index"]["EmptyState"]; 703 - export const EmptyStateImage: MappedModules["discord/components/common/index"]["EmptyStateImage"]; 704 - export const EmptyStateText: MappedModules["discord/components/common/index"]["EmptyStateText"]; 705 - export const FocusBlock: MappedModules["discord/components/common/index"]["FocusBlock"]; 706 - export const FocusJumpSection: MappedModules["discord/components/common/index"]["FocusJumpSection"]; 707 - export const FocusLock: MappedModules["discord/components/common/index"]["FocusLock"]; 708 - export const FocusRing: MappedModules["discord/components/common/index"]["FocusRing"]; 709 - export const FocusRingScope: MappedModules["discord/components/common/index"]["FocusRingScope"]; 710 - export const FormContext: MappedModules["discord/components/common/index"]["FormContext"]; 711 - export const FormContextProvider: MappedModules["discord/components/common/index"]["FormContextProvider"]; 712 - export const FormErrorBlock: MappedModules["discord/components/common/index"]["FormErrorBlock"]; 713 - export const FormLabel: MappedModules["discord/components/common/index"]["FormLabel"]; 714 - export const FormNotice: MappedModules["discord/components/common/index"]["FormNotice"]; 715 239 export const H: MappedModules["discord/components/common/index"]["H"]; 716 - export const HeadingLevel: MappedModules["discord/components/common/index"]["HeadingLevel"]; 717 240 export const HelpMessage: MappedModules["discord/components/common/index"]["HelpMessage"]; 718 - export const HiddenVisually: MappedModules["discord/components/common/index"]["HiddenVisually"]; 719 - export const HorizontalOverflowList: MappedModules["discord/components/common/index"]["HorizontalOverflowList"]; 720 - export const HorizontalOverflowListTooltip: MappedModules["discord/components/common/index"]["HorizontalOverflowListTooltip"]; 721 - export const IconBadge: MappedModules["discord/components/common/index"]["IconBadge"]; 722 - export const IconSelectOption: MappedModules["discord/components/common/index"]["IconSelectOption"]; 723 - export const InputError: MappedModules["discord/components/common/index"]["InputError"]; 724 - export const Interactive: MappedModules["discord/components/common/index"]["Interactive"]; 725 - export const KeyCombo: MappedModules["discord/components/common/index"]["KeyCombo"]; 726 - export const Layer: MappedModules["discord/components/common/index"]["Layer"]; 727 - export const LayerContainer: MappedModules["discord/components/common/index"]["LayerContainer"]; 728 - export const LayerProvider: MappedModules["discord/components/common/index"]["LayerProvider"]; 729 - export const LazyPopout: MappedModules["discord/components/common/index"]["LazyPopout"]; 730 - export const LinkButton: MappedModules["discord/components/common/index"]["LinkButton"]; 731 - export const List: MappedModules["discord/components/common/index"]["List"]; 732 - export const ListAuto: MappedModules["discord/components/common/index"]["ListAuto"]; 733 - export const ListComputer: MappedModules["discord/components/common/index"]["ListComputer"]; 734 - export const ListNone: MappedModules["discord/components/common/index"]["ListNone"]; 735 - export const ListThin: MappedModules["discord/components/common/index"]["ListThin"]; 736 - export const LoadingPopout: MappedModules["discord/components/common/index"]["LoadingPopout"]; 737 - export const LottieAnimation: MappedModules["discord/components/common/index"]["LottieAnimation"]; 738 - export const LottieSparkle: MappedModules["discord/components/common/index"]["LottieSparkle"]; 739 - export const MasonryList: MappedModules["discord/components/common/index"]["MasonryList"]; 740 - export const MasonryListAuto: MappedModules["discord/components/common/index"]["MasonryListAuto"]; 741 - export const MasonryListComputer: MappedModules["discord/components/common/index"]["MasonryListComputer"]; 742 - export const MasonryListThin: MappedModules["discord/components/common/index"]["MasonryListThin"]; 743 - export const MenuImageUploadControl: MappedModules["discord/components/common/index"]["MenuImageUploadControl"]; 744 - export const MenuInteractiveCompositeControl: MappedModules["discord/components/common/index"]["MenuInteractiveCompositeControl"]; 745 - export const MenuSearchControl: MappedModules["discord/components/common/index"]["MenuSearchControl"]; 746 - export const MenuSliderControl: MappedModules["discord/components/common/index"]["MenuSliderControl"]; 747 - export const MenuSpinner: MappedModules["discord/components/common/index"]["MenuSpinner"]; 748 - export const Modal: MappedModules["discord/components/common/index"]["Modal"]; 749 241 export const ModalCloseButton: MappedModules["discord/components/common/index"]["ModalCloseButton"]; 750 242 export const ModalContent: MappedModules["discord/components/common/index"]["ModalContent"]; 751 243 export const ModalFooter: MappedModules["discord/components/common/index"]["ModalFooter"]; 752 244 export const ModalHeader: MappedModules["discord/components/common/index"]["ModalHeader"]; 753 - export const ModalListContent: MappedModules["discord/components/common/index"]["ModalListContent"]; 754 245 export const ModalRoot: MappedModules["discord/components/common/index"]["ModalRoot"]; 755 - export const Modals: MappedModules["discord/components/common/index"]["Modals"]; 756 - export const NameWithRole: MappedModules["discord/components/common/index"]["NameWithRole"]; 757 - export const NameWithRoleAnchor: MappedModules["discord/components/common/index"]["NameWithRoleAnchor"]; 758 - export const NavItem: MappedModules["discord/components/common/index"]["NavItem"]; 759 - export const NoticeButton: MappedModules["discord/components/common/index"]["NoticeButton"]; 760 - export const NoticeButtonAnchor: MappedModules["discord/components/common/index"]["NoticeButtonAnchor"]; 761 - export const NumberBadge: MappedModules["discord/components/common/index"]["NumberBadge"]; 762 246 export const NumberInputStepper: MappedModules["discord/components/common/index"]["NumberInputStepper"]; 763 - export const Paginator: MappedModules["discord/components/common/index"]["Paginator"]; 764 - export const PinToBottomScrollerAuto: MappedModules["discord/components/common/index"]["PinToBottomScrollerAuto"]; 765 - export const PopoutCSSAnimator: MappedModules["discord/components/common/index"]["PopoutCSSAnimator"]; 766 - export const PopoutList: MappedModules["discord/components/common/index"]["PopoutList"]; 767 - export const PremiumBadge: MappedModules["discord/components/common/index"]["PremiumBadge"]; 768 - export const Progress: MappedModules["discord/components/common/index"]["Progress"]; 769 - export const ProgressCircle: MappedModules["discord/components/common/index"]["ProgressCircle"]; 770 - export const QuickSelect: MappedModules["discord/components/common/index"]["QuickSelect"]; 771 - export const RadioGroup: MappedModules["discord/components/common/index"]["RadioGroup"]; 772 - export const RadioIndicator: MappedModules["discord/components/common/index"]["RadioIndicator"]; 773 - export const RedesignIconContextProvider: MappedModules["discord/components/common/index"]["RedesignIconContextProvider"]; 774 - export const ReferencePositionLayer: MappedModules["discord/components/common/index"]["ReferencePositionLayer"]; 775 - export const RoleCircle: MappedModules["discord/components/common/index"]["RoleCircle"]; 776 - export const RoleDot: MappedModules["discord/components/common/index"]["RoleDot"]; 777 - export const RootThemeContextProvider: MappedModules["discord/components/common/index"]["RootThemeContextProvider"]; 778 - export const ScrollerAuto: MappedModules["discord/components/common/index"]["ScrollerAuto"]; 779 - export const ScrollerNone: MappedModules["discord/components/common/index"]["ScrollerNone"]; 780 - export const ScrollerThin: MappedModules["discord/components/common/index"]["ScrollerThin"]; 781 - export const SearchBar: MappedModules["discord/components/common/index"]["SearchBar"]; 782 - export const SearchBox: MappedModules["discord/components/common/index"]["SearchBox"]; 783 - export const SearchableQuickSelect: MappedModules["discord/components/common/index"]["SearchableQuickSelect"]; 784 247 export const SearchableSelect: MappedModules["discord/components/common/index"]["SearchableSelect"]; 785 - export const SegmentedControl: MappedModules["discord/components/common/index"]["SegmentedControl"]; 786 - export const SequencedLottieAnimation: MappedModules["discord/components/common/index"]["SequencedLottieAnimation"]; 787 - export const Sequencer: MappedModules["discord/components/common/index"]["Sequencer"]; 788 - export const Shakeable: MappedModules["discord/components/common/index"]["Shakeable"]; 789 - export const Shaker: MappedModules["discord/components/common/index"]["Shaker"]; 790 - export const Shine: MappedModules["discord/components/common/index"]["Shine"]; 791 - export const ShinyButton: MappedModules["discord/components/common/index"]["ShinyButton"]; 792 - export const Slide: MappedModules["discord/components/common/index"]["Slide"]; 793 - export const SlideIn: MappedModules["discord/components/common/index"]["SlideIn"]; 794 - export const Slides: MappedModules["discord/components/common/index"]["Slides"]; 795 - export const Spacer: MappedModules["discord/components/common/index"]["Spacer"]; 796 - export const Spinner: MappedModules["discord/components/common/index"]["Spinner"]; 797 - export const Spring: MappedModules["discord/components/common/index"]["Spring"]; 798 - export const Stack: MappedModules["discord/components/common/index"]["Stack"]; 799 - export const StackedProgress: MappedModules["discord/components/common/index"]["StackedProgress"]; 800 - export const Status: MappedModules["discord/components/common/index"]["Status"]; 801 - export const Table: MappedModules["discord/components/common/index"]["Table"]; 802 - export const TableBody: MappedModules["discord/components/common/index"]["TableBody"]; 803 - export const TableCell: MappedModules["discord/components/common/index"]["TableCell"]; 804 - export const TableColumn: MappedModules["discord/components/common/index"]["TableColumn"]; 805 - export const TableHeader: MappedModules["discord/components/common/index"]["TableHeader"]; 806 - export const TableRow: MappedModules["discord/components/common/index"]["TableRow"]; 807 - export const TextAreaAutosize: MappedModules["discord/components/common/index"]["TextAreaAutosize"]; 808 - export const TextBadge: MappedModules["discord/components/common/index"]["TextBadge"]; 809 - export const ThemeContextProvider: MappedModules["discord/components/common/index"]["ThemeContextProvider"]; 810 - export const ThemeProvider: MappedModules["discord/components/common/index"]["ThemeProvider"]; 811 - export const TimeInput: MappedModules["discord/components/common/index"]["TimeInput"]; 812 - export const Toast: MappedModules["discord/components/common/index"]["Toast"]; 813 - export const ToastContainer: MappedModules["discord/components/common/index"]["ToastContainer"]; 814 - export const TooltipContainer: MappedModules["discord/components/common/index"]["TooltipContainer"]; 815 - export const TooltipLayer: MappedModules["discord/components/common/index"]["TooltipLayer"]; 816 - export const TransitionGroup: MappedModules["discord/components/common/index"]["TransitionGroup"]; 817 - export const UseThemeContext: MappedModules["discord/components/common/index"]["UseThemeContext"]; 818 - export const closeAllModals: MappedModules["discord/components/common/index"]["closeAllModals"]; 819 - export const closeModalInAllContexts: MappedModules["discord/components/common/index"]["closeModalInAllContexts"]; 820 - export const createAdvancedScroller: MappedModules["discord/components/common/index"]["createAdvancedScroller"]; 821 - export const createLayer: MappedModules["discord/components/common/index"]["createLayer"]; 822 - export const createListScroller: MappedModules["discord/components/common/index"]["createListScroller"]; 823 - export const createManagedReactiveScroller: MappedModules["discord/components/common/index"]["createManagedReactiveScroller"]; 824 - export const createMasonryListScroller: MappedModules["discord/components/common/index"]["createMasonryListScroller"]; 825 - export const createScroller: MappedModules["discord/components/common/index"]["createScroller"]; 826 248 export const createToast: MappedModules["discord/components/common/index"]["createToast"]; 827 - export const getAvatarSize: MappedModules["discord/components/common/index"]["getAvatarSize"]; 828 - export const getAvatarSpecs: MappedModules["discord/components/common/index"]["getAvatarSpecs"]; 829 - export const getBadgeCountString: MappedModules["discord/components/common/index"]["getBadgeCountString"]; 830 - export const getBadgeWidthForValue: MappedModules["discord/components/common/index"]["getBadgeWidthForValue"]; 831 - export const getButtonStyle: MappedModules["discord/components/common/index"]["getButtonStyle"]; 832 - export const getInteractingModalContext: MappedModules["discord/components/common/index"]["getInteractingModalContext"]; 833 - export const getParentLayerContainer: MappedModules["discord/components/common/index"]["getParentLayerContainer"]; 834 - export const getStatusBackdropColor: MappedModules["discord/components/common/index"]["getStatusBackdropColor"]; 835 - export const getStatusBackdropOpacity: MappedModules["discord/components/common/index"]["getStatusBackdropOpacity"]; 836 - export const getStatusMask: MappedModules["discord/components/common/index"]["getStatusMask"]; 837 - export const getThemeClass: MappedModules["discord/components/common/index"]["getThemeClass"]; 838 - export const hasAnyModalOpen: MappedModules["discord/components/common/index"]["hasAnyModalOpen"]; 839 - export const hasAnyModalOpenSelector: MappedModules["discord/components/common/index"]["hasAnyModalOpenSelector"]; 840 - export const hasModalOpen: MappedModules["discord/components/common/index"]["hasModalOpen"]; 841 - export const hasModalOpenSelector: MappedModules["discord/components/common/index"]["hasModalOpenSelector"]; 842 - export const isInDndMode: MappedModules["discord/components/common/index"]["isInDndMode"]; 843 - export const isListItemRow: MappedModules["discord/components/common/index"]["isListItemRow"]; 844 - export const makeIconCompat: MappedModules["discord/components/common/index"]["makeIconCompat"]; 845 - export const modalContextFromAppContext: MappedModules["discord/components/common/index"]["modalContextFromAppContext"]; 846 249 export const popToast: MappedModules["discord/components/common/index"]["popToast"]; 847 - export const referencePortalAwareContains: MappedModules["discord/components/common/index"]["referencePortalAwareContains"]; 848 250 export const showToast: MappedModules["discord/components/common/index"]["showToast"]; 849 - export const singleSelect: MappedModules["discord/components/common/index"]["singleSelect"]; 850 - export const toggleDndMode: MappedModules["discord/components/common/index"]["toggleDndMode"]; 851 - export const toggleSelect: MappedModules["discord/components/common/index"]["toggleSelect"]; 852 - export const updateModal: MappedModules["discord/components/common/index"]["updateModal"]; 853 - export const useDndMode: MappedModules["discord/components/common/index"]["useDndMode"]; 854 - export const useDndStore: MappedModules["discord/components/common/index"]["useDndStore"]; 855 - export const useFocusBlock: MappedModules["discord/components/common/index"]["useFocusBlock"]; 856 - export const useFocusJumpSection: MappedModules["discord/components/common/index"]["useFocusJumpSection"]; 857 - export const useFocusJumpSectionManager: MappedModules["discord/components/common/index"]["useFocusJumpSectionManager"]; 858 - export const useFocusLock: MappedModules["discord/components/common/index"]["useFocusLock"]; 859 - export const useFormContext: MappedModules["discord/components/common/index"]["useFormContext"]; 860 - export const useModalContext: MappedModules["discord/components/common/index"]["useModalContext"]; 861 - export const usePrivateHeadingLevel: MappedModules["discord/components/common/index"]["usePrivateHeadingLevel"]; 862 - export const useRadioGroup: MappedModules["discord/components/common/index"]["useRadioGroup"]; 863 - export const useRadioItem: MappedModules["discord/components/common/index"]["useRadioItem"]; 864 - export const useRedesignIconContext: MappedModules["discord/components/common/index"]["useRedesignIconContext"]; 865 - export const useResizeObserverSubscription: MappedModules["discord/components/common/index"]["useResizeObserverSubscription"]; 866 - export const useSpacingValue: MappedModules["discord/components/common/index"]["useSpacingValue"]; 867 - export const useSpring: MappedModules["discord/components/common/index"]["useSpring"]; 868 - export const useSprings: MappedModules["discord/components/common/index"]["useSprings"]; 869 - export const useStatusFillColor: MappedModules["discord/components/common/index"]["useStatusFillColor"]; 870 251 export const useThemeContext: MappedModules["discord/components/common/index"]["useThemeContext"]; 871 - export const useToastStore: MappedModules["discord/components/common/index"]["useToastStore"]; 872 - export const useToken: MappedModules["discord/components/common/index"]["useToken"]; 873 - export const useTransition: MappedModules["discord/components/common/index"]["useTransition"]; 874 252 export const AccessibilityAnnouncer: MappedModules["discord/components/common/index"]["AccessibilityAnnouncer"]; 875 253 export const BackdropStyles: MappedModules["discord/components/common/index"]["BackdropStyles"]; 876 254 export const BadgeShapes: MappedModules["discord/components/common/index"]["BadgeShapes"]; 877 255 export const CardTypes: MappedModules["discord/components/common/index"]["CardTypes"]; 878 256 export const CircleIconButtonColors: MappedModules["discord/components/common/index"]["CircleIconButtonColors"]; 879 257 export const CircleIconButtonSizes: MappedModules["discord/components/common/index"]["CircleIconButtonSizes"]; 880 - export const CopyInputModes: MappedModules["discord/components/common/index"]["CopyInputModes"]; 881 - export const FocusRingManager: MappedModules["discord/components/common/index"]["FocusRingManager"]; 882 258 export const FormErrorBlockColors: MappedModules["discord/components/common/index"]["FormErrorBlockColors"]; 883 259 export const FormNoticeImagePositions: MappedModules["discord/components/common/index"]["FormNoticeImagePositions"]; 884 - export const FormNoticeTypes: MappedModules["discord/components/common/index"]["FormNoticeTypes"]; 885 260 export const FormTitleTags: MappedModules["discord/components/common/index"]["FormTitleTags"]; 886 261 export const HelpMessageTypes: MappedModules["discord/components/common/index"]["HelpMessageTypes"]; 887 262 export const ModalSize: MappedModules["discord/components/common/index"]["ModalSize"]; 888 263 export const ModalTransitionState: MappedModules["discord/components/common/index"]["ModalTransitionState"]; 889 264 export const PRETTY_KEYS: MappedModules["discord/components/common/index"]["PRETTY_KEYS"]; 890 265 export const SelectLooks: MappedModules["discord/components/common/index"]["SelectLooks"]; 891 - export const ShineSizes: MappedModules["discord/components/common/index"]["ShineSizes"]; 892 266 export const SpinnerTypes: MappedModules["discord/components/common/index"]["SpinnerTypes"]; 893 267 export const StatusTypes: MappedModules["discord/components/common/index"]["StatusTypes"]; 894 268 export const ToastPosition: MappedModules["discord/components/common/index"]["ToastPosition"]; ··· 1238 612 export const badgesContainer: MappedModules["discord/modules/messages/web/Message.css"]["badgesContainer"]; 1239 613 } 1240 614 615 + declare module "@moonlight-mod/wp/discord/modules/modals/Modals" { 616 + import { MappedModules } from "@moonlight-mod/mappings"; 617 + export const closeAllModals: MappedModules["discord/modules/modals/Modals"]["closeAllModals"]; 618 + export const closeAllModalsForContext: MappedModules["discord/modules/modals/Modals"]["closeAllModalsForContext"]; 619 + export const closeModal: MappedModules["discord/modules/modals/Modals"]["closeModal"]; 620 + export const getInteractingModalContext: MappedModules["discord/modules/modals/Modals"]["getInteractingModalContext"]; 621 + export const hasAnyModalOpen: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpen"]; 622 + export const hasAnyModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpenSelector"]; 623 + export const hasModalOpen: MappedModules["discord/modules/modals/Modals"]["hasModalOpen"]; 624 + export const hasModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasModalOpenSelector"]; 625 + export const openModal: MappedModules["discord/modules/modals/Modals"]["openModal"]; 626 + export const openModalLazy: MappedModules["discord/modules/modals/Modals"]["openModalLazy"]; 627 + export const updateModal: MappedModules["discord/modules/modals/Modals"]["updateModal"]; 628 + export const useHasAnyModalOpen: MappedModules["discord/modules/modals/Modals"]["useHasAnyModalOpen"]; 629 + export const useIsModalAtTop: MappedModules["discord/modules/modals/Modals"]["useIsModalAtTop"]; 630 + export const useModalsStore: MappedModules["discord/modules/modals/Modals"]["useModalsStore"]; 631 + } 632 + 1241 633 declare module "@moonlight-mod/wp/discord/modules/oauth2/index" { 1242 634 import { MappedModules } from "@moonlight-mod/mappings"; 1243 635 export const OAuth2AuthorizeModal: MappedModules["discord/modules/oauth2/index"]["OAuth2AuthorizeModal"]; ··· 1364 756 import { MappedModules } from "@moonlight-mod/mappings"; 1365 757 export const SUPPORTS_COPY: MappedModules["discord/utils/ClipboardUtils"]["SUPPORTS_COPY"]; 1366 758 export const copy: MappedModules["discord/utils/ClipboardUtils"]["copy"]; 759 + } 760 + 761 + declare module "@moonlight-mod/wp/discord/utils/ComponentDispatchUtils" { 762 + import { MappedModules } from "@moonlight-mod/mappings"; 763 + export const ComponentDispatcher: MappedModules["discord/utils/ComponentDispatchUtils"]["ComponentDispatcher"]; 764 + export const ComponentDispatch: MappedModules["discord/utils/ComponentDispatchUtils"]["ComponentDispatch"]; 1367 765 } 1368 766 1369 767 declare module "@moonlight-mod/wp/discord/utils/HTTPUtils" {
+7 -7
packages/types/tsconfig.json
··· 1 1 { 2 2 "compilerOptions": { 3 - "target": "es2016", 4 - "module": "es6", 5 - "esModuleInterop": true, 6 - "forceConsistentCasingInFileNames": true, 7 - "strict": true, 8 - "moduleResolution": "bundler", 3 + "target": "ES2016", 9 4 "jsx": "react", 10 - "declaration": true 5 + "module": "ES6", 6 + "moduleResolution": "bundler", 7 + "strict": true, 8 + "declaration": true, 9 + "esModuleInterop": true, 10 + "forceConsistentCasingInFileNames": true 11 11 }, 12 12 "include": ["./src/**/*", "src/index.ts", "./src/import.d.ts"] 13 13 }
+10 -3
packages/web-preload/package.json
··· 2 2 "name": "@moonlight-mod/web-preload", 3 3 "private": true, 4 4 "main": "src/index.ts", 5 + "engineStrict": true, 6 + "engines": { 7 + "node": ">=22", 8 + "pnpm": ">=10", 9 + "npm": "pnpm", 10 + "yarn": "pnpm" 11 + }, 5 12 "dependencies": { 6 13 "@moonlight-mod/core": "workspace:*", 7 - "@moonlight-mod/lunast": "^1.0.0", 8 - "@moonlight-mod/mappings": "^1.1.10", 9 - "@moonlight-mod/moonmap": "^1.0.3", 14 + "@moonlight-mod/lunast": "catalog:prod", 15 + "@moonlight-mod/mappings": "catalog:prod", 16 + "@moonlight-mod/moonmap": "catalog:prod", 10 17 "@moonlight-mod/types": "workspace:*" 11 18 } 12 19 }
+2 -2
packages/web-preload/src/index.ts
··· 7 7 import Moonmap from "@moonlight-mod/moonmap"; 8 8 import loadMappings from "@moonlight-mod/mappings"; 9 9 import { createEventEmitter } from "@moonlight-mod/core/util/event"; 10 - import { EventPayloads, EventType } from "@moonlight-mod/types/core/event"; 10 + import { WebEventPayloads, WebEventType } from "@moonlight-mod/types/core/event"; 11 11 12 12 async function load() { 13 13 delete window._moonlightWebLoad; ··· 20 20 pendingModules: new Set(), 21 21 enabledExtensions: new Set(), 22 22 23 - events: createEventEmitter<EventType, EventPayloads>(), 23 + events: createEventEmitter<WebEventType, WebEventPayloads>(), 24 24 patchingInternals: { 25 25 onModuleLoad, 26 26 registerPatch,
+4 -1
packages/web-preload/tsconfig.json
··· 1 1 { 2 - "extends": "../../tsconfig.json" 2 + "extends": "../../tsconfig.json", 3 + "compilerOptions": { 4 + "lib": ["ESNext", "DOM"] 5 + } 3 6 }
+1207 -724
pnpm-lock.yaml
··· 4 4 autoInstallPeers: true 5 5 excludeLinksFromLockfile: false 6 6 7 + catalogs: 8 + dev: 9 + '@moonlight-mod/eslint-config': 10 + specifier: github:moonlight-mod/eslint-config 11 + version: 1.0.1 12 + '@types/chrome': 13 + specifier: ^0.0.313 14 + version: 0.0.313 15 + '@types/node': 16 + specifier: ^22.14.0 17 + version: 22.14.0 18 + esbuild: 19 + specifier: ^0.19.3 20 + version: 0.19.3 21 + esbuild-copy-static-files: 22 + specifier: ^0.1.0 23 + version: 0.1.0 24 + eslint: 25 + specifier: ^9.12.0 26 + version: 9.23.0 27 + husky: 28 + specifier: ^8.0.3 29 + version: 8.0.3 30 + prettier: 31 + specifier: ^3.1.0 32 + version: 3.1.0 33 + taze: 34 + specifier: ^19.0.4 35 + version: 19.0.4 36 + typescript: 37 + specifier: ^5.3.3 38 + version: 5.8.2 39 + prod: 40 + '@moonlight-mod/lunast': 41 + specifier: ^1.0.1 42 + version: 1.0.1 43 + '@moonlight-mod/mappings': 44 + specifier: ^1.1.25 45 + version: 1.1.25 46 + '@moonlight-mod/moonmap': 47 + specifier: ^1.0.5 48 + version: 1.0.5 49 + '@zenfs/core': 50 + specifier: ^2.0.0 51 + version: 2.0.0 52 + '@zenfs/dom': 53 + specifier: ^1.1.3 54 + version: 1.1.6 55 + microdiff: 56 + specifier: ^1.5.0 57 + version: 1.5.0 58 + nanotar: 59 + specifier: ^0.1.1 60 + version: 0.1.1 61 + 7 62 importers: 8 63 9 64 .: 10 65 devDependencies: 11 66 '@moonlight-mod/eslint-config': 12 - specifier: github:moonlight-mod/eslint-config 13 - version: https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9(eslint@9.12.0)(prettier@3.1.0)(typescript@5.3.2) 67 + specifier: catalog:dev 68 + version: https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9(@types/eslint@9.6.1)(eslint@9.23.0(jiti@2.4.2))(prettier@3.1.0)(typescript@5.8.2) 69 + '@types/node': 70 + specifier: catalog:dev 71 + version: 22.14.0 14 72 esbuild: 15 - specifier: ^0.19.3 73 + specifier: catalog:dev 16 74 version: 0.19.3 17 75 esbuild-copy-static-files: 18 - specifier: ^0.1.0 76 + specifier: catalog:dev 19 77 version: 0.1.0 20 78 eslint: 21 - specifier: ^9.12.0 22 - version: 9.12.0 79 + specifier: catalog:dev 80 + version: 9.23.0(jiti@2.4.2) 23 81 husky: 24 - specifier: ^8.0.3 82 + specifier: catalog:dev 25 83 version: 8.0.3 26 84 prettier: 27 - specifier: ^3.1.0 85 + specifier: catalog:dev 28 86 version: 3.1.0 87 + taze: 88 + specifier: catalog:dev 89 + version: 19.0.4 29 90 typescript: 30 - specifier: ^5.3.2 31 - version: 5.3.2 91 + specifier: catalog:dev 92 + version: 5.8.2 32 93 33 94 packages/browser: 34 95 dependencies: ··· 42 103 specifier: workspace:* 43 104 version: link:../web-preload 44 105 '@zenfs/core': 45 - specifier: ^1.8.8 46 - version: 1.8.8 106 + specifier: catalog:prod 107 + version: 2.0.0 47 108 '@zenfs/dom': 48 - specifier: ^1.1.3 49 - version: 1.1.3(@zenfs/core@1.8.8) 109 + specifier: catalog:prod 110 + version: 1.1.6(@zenfs/core@2.0.0)(utilium@1.10.1) 111 + devDependencies: 112 + '@types/chrome': 113 + specifier: catalog:dev 114 + version: 0.0.313 50 115 51 116 packages/core: 52 117 dependencies: ··· 63 128 specifier: workspace:* 64 129 version: link:../types 65 130 microdiff: 66 - specifier: ^1.5.0 131 + specifier: catalog:prod 67 132 version: 1.5.0 68 133 nanotar: 69 - specifier: ^0.1.1 134 + specifier: catalog:prod 70 135 version: 0.1.1 71 136 72 137 packages/injector: ··· 90 155 packages/types: 91 156 dependencies: 92 157 '@moonlight-mod/lunast': 93 - specifier: ^1.0.0 94 - version: 1.0.0 158 + specifier: ^1.0.1 159 + version: 1.0.1 95 160 '@moonlight-mod/mappings': 96 - specifier: ^1.1.10 97 - version: 1.1.10(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3) 161 + specifier: ^1.1.25 162 + version: 1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5) 98 163 '@moonlight-mod/moonmap': 99 - specifier: ^1.0.3 100 - version: 1.0.3 164 + specifier: ^1.0.5 165 + version: 1.0.5 101 166 '@types/react': 102 167 specifier: ^18.3.10 103 - version: 18.3.10 168 + version: 18.3.20 104 169 csstype: 105 - specifier: ^3.1.2 106 - version: 3.1.2 170 + specifier: ^3.1.3 171 + version: 3.1.3 107 172 standalone-electron-types: 108 173 specifier: ^1.0.0 109 174 version: 1.0.0 ··· 114 179 specifier: workspace:* 115 180 version: link:../core 116 181 '@moonlight-mod/lunast': 117 - specifier: ^1.0.0 118 - version: 1.0.0 182 + specifier: catalog:prod 183 + version: 1.0.1 119 184 '@moonlight-mod/mappings': 120 - specifier: ^1.1.10 121 - version: 1.1.10(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3) 185 + specifier: catalog:prod 186 + version: 1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5) 122 187 '@moonlight-mod/moonmap': 123 - specifier: ^1.0.3 124 - version: 1.0.3 188 + specifier: catalog:prod 189 + version: 1.0.5 125 190 '@moonlight-mod/types': 126 191 specifier: workspace:* 127 192 version: link:../types ··· 131 196 '@aashutoshrathi/word-wrap@1.2.6': 132 197 resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 133 198 engines: {node: '>=0.10.0'} 199 + 200 + '@antfu/ni@24.3.0': 201 + resolution: {integrity: sha512-wBSav4mBxvHEW9RbdSo1SWLQ6MAlT0Dc423weC58yOWqW4OcMvtnNDdDrxOZeJ88fEIyPK93gDUWIelBxzSf8g==} 202 + hasBin: true 134 203 135 204 '@esbuild/android-arm64@0.19.3': 136 205 resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==} ··· 264 333 cpu: [x64] 265 334 os: [win32] 266 335 267 - '@eslint-community/eslint-utils@4.4.0': 268 - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 336 + '@eslint-community/eslint-utils@4.5.1': 337 + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} 269 338 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 270 339 peerDependencies: 271 340 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 272 341 273 - '@eslint-community/regexpp@4.11.1': 274 - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} 342 + '@eslint-community/regexpp@4.12.1': 343 + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 275 344 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 276 345 277 - '@eslint/config-array@0.18.0': 278 - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 346 + '@eslint/config-array@0.19.2': 347 + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 279 348 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 280 349 281 - '@eslint/core@0.6.0': 282 - resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} 350 + '@eslint/config-helpers@0.2.1': 351 + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} 352 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 353 + 354 + '@eslint/core@0.12.0': 355 + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 356 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 357 + 358 + '@eslint/core@0.13.0': 359 + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 283 360 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 284 361 285 - '@eslint/eslintrc@3.1.0': 286 - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 362 + '@eslint/eslintrc@3.3.1': 363 + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 287 364 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 288 365 289 - '@eslint/js@9.12.0': 290 - resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} 366 + '@eslint/js@9.23.0': 367 + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} 291 368 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 292 369 293 - '@eslint/object-schema@2.1.4': 294 - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 370 + '@eslint/object-schema@2.1.6': 371 + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 295 372 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 296 373 297 - '@eslint/plugin-kit@0.2.0': 298 - resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} 374 + '@eslint/plugin-kit@0.2.8': 375 + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 299 376 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 300 377 301 - '@humanfs/core@0.19.0': 302 - resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} 378 + '@humanfs/core@0.19.1': 379 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 303 380 engines: {node: '>=18.18.0'} 304 381 305 - '@humanfs/node@0.16.5': 306 - resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} 382 + '@humanfs/node@0.16.6': 383 + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 307 384 engines: {node: '>=18.18.0'} 308 385 309 386 '@humanwhocodes/module-importer@1.0.1': ··· 314 391 resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 315 392 engines: {node: '>=18.18'} 316 393 394 + '@humanwhocodes/retry@0.4.2': 395 + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 396 + engines: {node: '>=18.18'} 397 + 317 398 '@moonlight-mod/eslint-config@https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9': 318 399 resolution: {tarball: https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9} 319 400 version: 1.0.1 ··· 321 402 eslint: '>= 9' 322 403 typescript: '>= 5.3' 323 404 324 - '@moonlight-mod/lunast@1.0.0': 325 - resolution: {integrity: sha512-kJgf41K12i6/2LbXK97CNO+pNO7ADGh9N4bCQcOPwosocKMcwKHDEZUgPqeihNshY3c3AEW1LiyXjlsl24PdDw==} 405 + '@moonlight-mod/lunast@1.0.1': 406 + resolution: {integrity: sha512-K3vxzDlfFuYKjciIW2FMlcZ1qrrkAGDGpSBlNqYGtJ0sMt9bRCd2lpSpg6AX/giSljDtmAUXa/5mOfUoDQxjBA==} 326 407 327 - '@moonlight-mod/mappings@1.1.10': 328 - resolution: {integrity: sha512-lOEwhi0+lv49EWd1BsE87ynpCfkad61wA8poKzZNEdMRwINI2FHwr6QmG86JcEfWq2flDHuUkr9fwTaKEqMm1Q==} 408 + '@moonlight-mod/mappings@1.1.25': 409 + resolution: {integrity: sha512-bgnSN9H/IBdMGxGev6RQKXuzhQxwo1090NhIDHnflguZnjiu2pg/usPfh76bqyhxRuX4SS7tiZSNTwBoSflCLg==} 410 + engines: {node: '>=22', npm: pnpm, pnpm: '>=10', yarn: pnpm} 329 411 peerDependencies: 330 - '@moonlight-mod/lunast': ^1.0.0 331 - '@moonlight-mod/moonmap': ^1.0.0 412 + '@moonlight-mod/lunast': ^1.0.1 413 + '@moonlight-mod/moonmap': ^1.0.5 332 414 333 - '@moonlight-mod/moonmap@1.0.3': 334 - resolution: {integrity: sha512-G7pwvrcVDimc388IX6VZFzBXpbuyvqbJ+w9/v+MUIc8P7dADJXQ9YkBWvobtRc6eaBBl1FWUwTeU8oobbxLVag==} 415 + '@moonlight-mod/moonmap@1.0.5': 416 + resolution: {integrity: sha512-Fdpxj8ghdulKB6TlTnchlCPey2YUKgEf1chuO1ofOIcvlqnVPBcQwSf2S80naOUQpXCDo4dQ+LWSE2fmhdDiiw==} 335 417 336 418 '@nodelib/fs.scandir@2.1.5': 337 419 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ··· 345 427 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 346 428 engines: {node: '>= 8'} 347 429 348 - '@pkgr/core@0.1.1': 349 - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 430 + '@pkgr/core@0.2.0': 431 + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} 350 432 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 351 433 434 + '@quansync/fs@0.1.2': 435 + resolution: {integrity: sha512-ezIadUb1aFhwJLd++WVqVpi9rnlX8vnd4ju7saPhwLHJN1mJgOv0puePTGV+FbtSnWtwoHDT8lAm4kagDZmpCg==} 436 + engines: {node: '>=20.0.0'} 437 + 352 438 '@types/chroma-js@3.1.0': 353 439 resolution: {integrity: sha512-Uwl3SOtUkbQ6Ye6ZYu4q4xdLGBzmY839sEHYtOT7i691neeyd+7fXWT5VIkcUSfNwIFrIjQutNYQn9h4q5HFvg==} 354 440 441 + '@types/chrome@0.0.313': 442 + resolution: {integrity: sha512-9R5T7gTaYZhkxlu+Ho4wk9FL+y/werWQY2yjGWSqCuiTsqS7nL/BE5UMTP6rU7J+oIG2FRKqrEycHhJATeltVA==} 443 + 444 + '@types/eslint@9.6.1': 445 + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 446 + 355 447 '@types/estree-jsx@1.0.5': 356 448 resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} 357 449 358 450 '@types/estree@1.0.6': 359 451 resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 360 452 453 + '@types/estree@1.0.7': 454 + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 455 + 361 456 '@types/fbemitter@2.0.35': 362 457 resolution: {integrity: sha512-Xem6d7qUfmouCHntCrRYgDBwbf+WWRd6G+7WEFlEZFZ67LZXiYRvT2LV8wcZa6mIaAil95+ABQdKgB6hPIsnng==} 363 458 459 + '@types/filesystem@0.0.36': 460 + resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} 461 + 462 + '@types/filewriter@0.0.33': 463 + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} 464 + 364 465 '@types/flux@3.1.14': 365 466 resolution: {integrity: sha512-WRXN0kQPCnqxN0/PgNgc7WBF6c8rbSHsEep3/qBLpsQ824RONdOmTs0TV7XhIW2GDNRAHO2CqCgAFLR5PChosw==} 467 + 468 + '@types/har-format@1.2.16': 469 + resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} 366 470 367 471 '@types/highlightjs@9.12.6': 368 472 resolution: {integrity: sha512-Qfd1DUrwE851Hc3tExADJY4qY8yeZMt06Xw9AJm/UtpneepJS3MZY29c33BY0wP899veaaHD4gZzYiSuQm84Fg==} ··· 376 480 '@types/node@18.17.17': 377 481 resolution: {integrity: sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==} 378 482 379 - '@types/node@22.10.7': 380 - resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} 483 + '@types/node@22.13.6': 484 + resolution: {integrity: sha512-GYmF65GI7417CpZXsEXMjT8goQQDnpRnJnDw6jIYa+le3V/lMazPZ4vZmK1B/9R17fh2VLr2zuy9d/h5xgrLAg==} 485 + 486 + '@types/node@22.14.0': 487 + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} 381 488 382 489 '@types/platform@1.3.6': 383 490 resolution: {integrity: sha512-ZmSaqHuvzv+jC232cFoz2QqPUkaj6EvMmCrWcx3WRr7xTPVFCMUOTcOq8m2d+Zw1iKRc1kDiaA+jtNrV0hkVew==} ··· 385 492 '@types/prop-types@15.7.13': 386 493 resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} 387 494 388 - '@types/react@18.3.10': 389 - resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==} 495 + '@types/react@18.3.20': 496 + resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} 390 497 391 - '@types/readable-stream@4.0.15': 392 - resolution: {integrity: sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==} 393 - 394 - '@typescript-eslint/eslint-plugin@8.8.1': 395 - resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} 498 + '@typescript-eslint/eslint-plugin@8.29.0': 499 + resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} 396 500 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 397 501 peerDependencies: 398 502 '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 399 503 eslint: ^8.57.0 || ^9.0.0 400 - typescript: '*' 401 - peerDependenciesMeta: 402 - typescript: 403 - optional: true 504 + typescript: '>=4.8.4 <5.9.0' 404 505 405 - '@typescript-eslint/parser@8.8.1': 406 - resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} 506 + '@typescript-eslint/parser@8.29.0': 507 + resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} 407 508 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 408 509 peerDependencies: 409 510 eslint: ^8.57.0 || ^9.0.0 410 - typescript: '*' 411 - peerDependenciesMeta: 412 - typescript: 413 - optional: true 511 + typescript: '>=4.8.4 <5.9.0' 414 512 415 - '@typescript-eslint/scope-manager@8.8.1': 416 - resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} 513 + '@typescript-eslint/scope-manager@8.29.0': 514 + resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} 417 515 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 418 516 419 - '@typescript-eslint/type-utils@8.8.1': 420 - resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} 517 + '@typescript-eslint/type-utils@8.29.0': 518 + resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} 421 519 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 422 520 peerDependencies: 423 - typescript: '*' 424 - peerDependenciesMeta: 425 - typescript: 426 - optional: true 521 + eslint: ^8.57.0 || ^9.0.0 522 + typescript: '>=4.8.4 <5.9.0' 427 523 428 - '@typescript-eslint/types@8.8.1': 429 - resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} 524 + '@typescript-eslint/types@8.29.0': 525 + resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} 430 526 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 431 527 432 - '@typescript-eslint/typescript-estree@8.8.1': 433 - resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} 528 + '@typescript-eslint/typescript-estree@8.29.0': 529 + resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} 434 530 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 435 531 peerDependencies: 436 - typescript: '*' 437 - peerDependenciesMeta: 438 - typescript: 439 - optional: true 532 + typescript: '>=4.8.4 <5.9.0' 440 533 441 - '@typescript-eslint/utils@8.8.1': 442 - resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} 534 + '@typescript-eslint/utils@8.29.0': 535 + resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} 443 536 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 444 537 peerDependencies: 445 538 eslint: ^8.57.0 || ^9.0.0 539 + typescript: '>=4.8.4 <5.9.0' 446 540 447 - '@typescript-eslint/visitor-keys@8.8.1': 448 - resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} 541 + '@typescript-eslint/visitor-keys@8.29.0': 542 + resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} 449 543 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 450 544 451 545 '@xterm/xterm@5.5.0': 452 546 resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==} 453 547 454 - '@zenfs/core@1.8.8': 455 - resolution: {integrity: sha512-J4w/IFJ3r1xF2/3txmqLDbomPvsmkYWRvgR5hmPqBAST3fO4YZtSc9QtE1TPf2DGetvmfPiAU9l9I0a+XE3g1g==} 456 - engines: {node: '>= 16'} 548 + '@zenfs/core@2.0.0': 549 + resolution: {integrity: sha512-wOKNFTY1DJ1vdLqKdU7M8cRh0nVYZcDVu7WHuk/3u49hrSwTZVm4PzGxJUjFd8O9Wi3U5nYTbZoN7RX5mS2ldA==} 550 + engines: {node: '>= 18'} 457 551 hasBin: true 458 552 459 - '@zenfs/dom@1.1.3': 460 - resolution: {integrity: sha512-Rv33rnwELDLTOT9BwIGyAYBryWE2VW6E9QkoIZ67FFXzwXKzmmk/yESgzUdqUM7Dq7ciKk4wfati0ViUO6Bymw==} 553 + '@zenfs/dom@1.1.6': 554 + resolution: {integrity: sha512-7SBTWgA0esuEv/TE+N/xk6W/XJf8uBF+LhlPNHQdXds0H7aOy/UYsWv/8glvARe+meDMMidoeWFLzUWoMXfjlA==} 461 555 engines: {node: '>= 18'} 462 556 peerDependencies: 463 - '@zenfs/core': ^1.7.0 557 + '@zenfs/core': ^2.0.0 558 + utilium: ^1.9.0 464 559 465 560 abort-controller@3.0.0: 466 561 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} ··· 471 566 peerDependencies: 472 567 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 473 568 474 - acorn@8.12.1: 475 - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 569 + acorn@8.14.1: 570 + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 476 571 engines: {node: '>=0.4.0'} 477 572 hasBin: true 478 573 ··· 483 578 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 484 579 engines: {node: '>=8'} 485 580 581 + ansis@3.17.0: 582 + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} 583 + engines: {node: '>=14'} 584 + 486 585 argparse@2.0.1: 487 586 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 488 587 489 - array-buffer-byte-length@1.0.1: 490 - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 588 + array-buffer-byte-length@1.0.2: 589 + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 491 590 engines: {node: '>= 0.4'} 492 591 493 592 array-includes@3.1.8: ··· 498 597 resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} 499 598 engines: {node: '>= 0.4'} 500 599 501 - array.prototype.flat@1.3.2: 502 - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 600 + array.prototype.flat@1.3.3: 601 + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 503 602 engines: {node: '>= 0.4'} 504 603 505 - array.prototype.flatmap@1.3.2: 506 - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 604 + array.prototype.flatmap@1.3.3: 605 + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} 507 606 engines: {node: '>= 0.4'} 508 607 509 608 array.prototype.tosorted@1.1.4: 510 609 resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} 511 610 engines: {node: '>= 0.4'} 512 611 513 - arraybuffer.prototype.slice@1.0.3: 514 - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 612 + arraybuffer.prototype.slice@1.0.4: 613 + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 515 614 engines: {node: '>= 0.4'} 516 615 517 616 astring@1.9.0: 518 617 resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} 519 618 hasBin: true 520 619 620 + async-function@1.0.0: 621 + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 622 + engines: {node: '>= 0.4'} 623 + 521 624 available-typed-arrays@1.0.7: 522 625 resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 523 626 engines: {node: '>= 0.4'} ··· 541 644 buffer@6.0.3: 542 645 resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 543 646 544 - call-bind@1.0.7: 545 - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 647 + cac@6.7.14: 648 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 649 + engines: {node: '>=8'} 650 + 651 + call-bind-apply-helpers@1.0.2: 652 + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 653 + engines: {node: '>= 0.4'} 654 + 655 + call-bind@1.0.8: 656 + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 657 + engines: {node: '>= 0.4'} 658 + 659 + call-bound@1.0.4: 660 + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 546 661 engines: {node: '>= 0.4'} 547 662 548 663 callsites@3.1.0: ··· 563 678 concat-map@0.0.1: 564 679 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 565 680 566 - cross-spawn@7.0.3: 567 - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 681 + cross-spawn@7.0.6: 682 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 568 683 engines: {node: '>= 8'} 569 684 570 - csstype@3.1.2: 571 - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 572 - 573 685 csstype@3.1.3: 574 686 resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 575 687 576 - data-view-buffer@1.0.1: 577 - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 688 + data-view-buffer@1.0.2: 689 + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 578 690 engines: {node: '>= 0.4'} 579 691 580 - data-view-byte-length@1.0.1: 581 - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 692 + data-view-byte-length@1.0.2: 693 + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 582 694 engines: {node: '>= 0.4'} 583 695 584 - data-view-byte-offset@1.0.0: 585 - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 696 + data-view-byte-offset@1.0.1: 697 + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 586 698 engines: {node: '>= 0.4'} 587 699 588 - debug@4.3.4: 589 - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 700 + debug@4.4.0: 701 + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 590 702 engines: {node: '>=6.0'} 591 703 peerDependencies: 592 704 supports-color: '*' ··· 605 717 resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 606 718 engines: {node: '>= 0.4'} 607 719 720 + defu@6.1.4: 721 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 722 + 723 + destr@2.0.4: 724 + resolution: {integrity: sha512-FCAorltMy7QwX0QU38jOkhrv20LBpsHA8ogzvMhhPHCCKVCaN6GxrB0GGaWEWBUYI4eEjjfJ95RdP6dk9IdMQA==} 725 + 608 726 doctrine@2.1.0: 609 727 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 610 728 engines: {node: '>=0.10.0'} 611 729 612 - es-abstract@1.23.3: 613 - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} 730 + dunder-proto@1.0.1: 731 + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 732 + engines: {node: '>= 0.4'} 733 + 734 + es-abstract@1.23.9: 735 + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} 614 736 engines: {node: '>= 0.4'} 615 737 616 - es-define-property@1.0.0: 617 - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 738 + es-define-property@1.0.1: 739 + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 618 740 engines: {node: '>= 0.4'} 619 741 620 742 es-errors@1.3.0: 621 743 resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 622 744 engines: {node: '>= 0.4'} 623 745 624 - es-iterator-helpers@1.1.0: 625 - resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} 746 + es-iterator-helpers@1.2.1: 747 + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} 626 748 engines: {node: '>= 0.4'} 627 749 628 - es-object-atoms@1.0.0: 629 - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 750 + es-object-atoms@1.1.1: 751 + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 630 752 engines: {node: '>= 0.4'} 631 753 632 - es-set-tostringtag@2.0.3: 633 - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 754 + es-set-tostringtag@2.1.0: 755 + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 634 756 engines: {node: '>= 0.4'} 635 757 636 - es-shim-unscopables@1.0.2: 637 - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 758 + es-shim-unscopables@1.1.0: 759 + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} 760 + engines: {node: '>= 0.4'} 638 761 639 - es-to-primitive@1.2.1: 640 - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 762 + es-to-primitive@1.3.0: 763 + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 641 764 engines: {node: '>= 0.4'} 642 765 643 766 esbuild-copy-static-files@0.1.0: ··· 658 781 peerDependencies: 659 782 eslint: '>=7.0.0' 660 783 661 - eslint-plugin-prettier@5.2.1: 662 - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} 784 + eslint-plugin-prettier@5.2.6: 785 + resolution: {integrity: sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==} 663 786 engines: {node: ^14.18.0 || >=16.0.0} 664 787 peerDependencies: 665 788 '@types/eslint': '>=8.0.0' 666 789 eslint: '>=8.0.0' 667 - eslint-config-prettier: '*' 790 + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' 668 791 prettier: '>=3.0.0' 669 792 peerDependenciesMeta: 670 793 '@types/eslint': ··· 672 795 eslint-config-prettier: 673 796 optional: true 674 797 675 - eslint-plugin-react@7.37.1: 676 - resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==} 798 + eslint-plugin-react@7.37.5: 799 + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} 677 800 engines: {node: '>=4'} 678 801 peerDependencies: 679 802 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 680 803 681 - eslint-scope@8.1.0: 682 - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} 804 + eslint-scope@8.3.0: 805 + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 683 806 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 684 807 685 808 eslint-visitor-keys@3.4.3: 686 809 resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 687 810 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 688 811 689 - eslint-visitor-keys@4.1.0: 690 - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} 812 + eslint-visitor-keys@4.2.0: 813 + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 691 814 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 692 815 693 - eslint@9.12.0: 694 - resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} 816 + eslint@9.23.0: 817 + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} 695 818 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 696 819 hasBin: true 697 820 peerDependencies: ··· 700 823 jiti: 701 824 optional: true 702 825 703 - espree@10.2.0: 704 - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} 826 + espree@10.3.0: 827 + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 705 828 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 706 829 707 - esquery@1.5.0: 708 - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 830 + esquery@1.6.0: 831 + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 709 832 engines: {node: '>=0.10'} 710 833 711 834 esrecurse@4.3.0: ··· 753 876 fastq@1.17.1: 754 877 resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 755 878 879 + fdir@6.4.3: 880 + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 881 + peerDependencies: 882 + picomatch: ^3 || ^4 883 + peerDependenciesMeta: 884 + picomatch: 885 + optional: true 886 + 756 887 file-entry-cache@8.0.0: 757 888 resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 758 889 engines: {node: '>=16.0.0'} ··· 761 892 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 762 893 engines: {node: '>=8'} 763 894 895 + find-up-simple@1.0.1: 896 + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 897 + engines: {node: '>=18'} 898 + 764 899 find-up@5.0.0: 765 900 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 766 901 engines: {node: '>=10'} ··· 772 907 flatted@3.2.9: 773 908 resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 774 909 775 - for-each@0.3.3: 776 - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 910 + for-each@0.3.5: 911 + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 912 + engines: {node: '>= 0.4'} 777 913 778 914 function-bind@1.1.2: 779 915 resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 780 916 781 - function.prototype.name@1.1.6: 782 - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 917 + function.prototype.name@1.1.8: 918 + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 783 919 engines: {node: '>= 0.4'} 784 920 785 921 functions-have-names@1.2.3: 786 922 resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 787 923 788 - get-intrinsic@1.2.4: 789 - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 924 + fzf@0.5.2: 925 + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} 926 + 927 + get-intrinsic@1.3.0: 928 + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 790 929 engines: {node: '>= 0.4'} 791 930 792 - get-symbol-description@1.0.2: 793 - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 931 + get-proto@1.0.1: 932 + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 933 + engines: {node: '>= 0.4'} 934 + 935 + get-symbol-description@1.1.0: 936 + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 794 937 engines: {node: '>= 0.4'} 795 938 796 939 glob-parent@5.1.2: ··· 809 952 resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 810 953 engines: {node: '>= 0.4'} 811 954 812 - gopd@1.0.1: 813 - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 955 + gopd@1.2.0: 956 + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 957 + engines: {node: '>= 0.4'} 814 958 815 959 graphemer@1.4.0: 816 960 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 817 961 818 - has-bigints@1.0.2: 819 - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 962 + has-bigints@1.1.0: 963 + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 964 + engines: {node: '>= 0.4'} 820 965 821 966 has-flag@4.0.0: 822 967 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} ··· 825 970 has-property-descriptors@1.0.2: 826 971 resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 827 972 828 - has-proto@1.0.3: 829 - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 973 + has-proto@1.2.0: 974 + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 830 975 engines: {node: '>= 0.4'} 831 976 832 - has-symbols@1.0.3: 833 - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 977 + has-symbols@1.1.0: 978 + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 834 979 engines: {node: '>= 0.4'} 835 980 836 981 has-tostringtag@1.0.2: ··· 849 994 ieee754@1.2.1: 850 995 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 851 996 852 - ignore@5.3.0: 853 - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 854 - engines: {node: '>= 4'} 855 - 856 997 ignore@5.3.2: 857 998 resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 858 999 engines: {node: '>= 4'} ··· 865 1006 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 866 1007 engines: {node: '>=0.8.19'} 867 1008 868 - internal-slot@1.0.7: 869 - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 1009 + internal-slot@1.1.0: 1010 + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 870 1011 engines: {node: '>= 0.4'} 871 1012 872 - is-array-buffer@3.0.4: 873 - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 1013 + is-array-buffer@3.0.5: 1014 + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 874 1015 engines: {node: '>= 0.4'} 875 1016 876 - is-async-function@2.0.0: 877 - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1017 + is-async-function@2.1.1: 1018 + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 878 1019 engines: {node: '>= 0.4'} 879 1020 880 - is-bigint@1.0.4: 881 - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1021 + is-bigint@1.1.0: 1022 + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 1023 + engines: {node: '>= 0.4'} 882 1024 883 - is-boolean-object@1.1.2: 884 - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1025 + is-boolean-object@1.2.2: 1026 + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} 885 1027 engines: {node: '>= 0.4'} 886 1028 887 1029 is-callable@1.2.7: 888 1030 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 889 1031 engines: {node: '>= 0.4'} 890 1032 891 - is-core-module@2.15.1: 892 - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 1033 + is-core-module@2.16.1: 1034 + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 893 1035 engines: {node: '>= 0.4'} 894 1036 895 - is-data-view@1.0.1: 896 - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} 1037 + is-data-view@1.0.2: 1038 + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 897 1039 engines: {node: '>= 0.4'} 898 1040 899 - is-date-object@1.0.5: 900 - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1041 + is-date-object@1.1.0: 1042 + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 901 1043 engines: {node: '>= 0.4'} 902 1044 903 1045 is-extglob@2.1.1: 904 1046 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 905 1047 engines: {node: '>=0.10.0'} 906 1048 907 - is-finalizationregistry@1.0.2: 908 - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1049 + is-finalizationregistry@1.1.1: 1050 + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 1051 + engines: {node: '>= 0.4'} 909 1052 910 - is-generator-function@1.0.10: 911 - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1053 + is-generator-function@1.1.0: 1054 + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} 912 1055 engines: {node: '>= 0.4'} 913 1056 914 1057 is-glob@4.0.3: ··· 919 1062 resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 920 1063 engines: {node: '>= 0.4'} 921 1064 922 - is-negative-zero@2.0.3: 923 - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 924 - engines: {node: '>= 0.4'} 925 - 926 - is-number-object@1.0.7: 927 - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1065 + is-number-object@1.1.1: 1066 + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 928 1067 engines: {node: '>= 0.4'} 929 1068 930 1069 is-number@7.0.0: 931 1070 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 932 1071 engines: {node: '>=0.12.0'} 933 1072 934 - is-regex@1.1.4: 935 - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1073 + is-regex@1.2.1: 1074 + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 936 1075 engines: {node: '>= 0.4'} 937 1076 938 1077 is-set@2.0.3: 939 1078 resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 940 1079 engines: {node: '>= 0.4'} 941 1080 942 - is-shared-array-buffer@1.0.3: 943 - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 1081 + is-shared-array-buffer@1.0.4: 1082 + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 944 1083 engines: {node: '>= 0.4'} 945 1084 946 - is-string@1.0.7: 947 - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1085 + is-string@1.1.1: 1086 + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 948 1087 engines: {node: '>= 0.4'} 949 1088 950 - is-symbol@1.0.4: 951 - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1089 + is-symbol@1.1.1: 1090 + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 952 1091 engines: {node: '>= 0.4'} 953 1092 954 - is-typed-array@1.1.13: 955 - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1093 + is-typed-array@1.1.15: 1094 + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 956 1095 engines: {node: '>= 0.4'} 957 1096 958 1097 is-weakmap@2.0.2: 959 1098 resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 960 1099 engines: {node: '>= 0.4'} 961 1100 962 - is-weakref@1.0.2: 963 - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1101 + is-weakref@1.1.1: 1102 + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} 1103 + engines: {node: '>= 0.4'} 964 1104 965 - is-weakset@2.0.3: 966 - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} 1105 + is-weakset@2.0.4: 1106 + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 967 1107 engines: {node: '>= 0.4'} 968 1108 969 1109 isarray@2.0.5: ··· 972 1112 isexe@2.0.0: 973 1113 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 974 1114 975 - iterator.prototype@1.1.3: 976 - resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} 1115 + iterator.prototype@1.1.5: 1116 + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} 977 1117 engines: {node: '>= 0.4'} 1118 + 1119 + jiti@2.4.2: 1120 + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 1121 + hasBin: true 978 1122 979 1123 js-tokens@4.0.0: 980 1124 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} ··· 1014 1158 resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1015 1159 hasBin: true 1016 1160 1161 + math-intrinsics@1.1.0: 1162 + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1163 + engines: {node: '>= 0.4'} 1164 + 1017 1165 merge2@1.4.1: 1018 1166 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1019 1167 engines: {node: '>= 8'} ··· 1029 1177 resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1030 1178 engines: {node: '>=8.6'} 1031 1179 1180 + mimic-function@5.0.1: 1181 + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 1182 + engines: {node: '>=18'} 1183 + 1032 1184 minimatch@3.1.2: 1033 1185 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1034 1186 ··· 1036 1188 resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1037 1189 engines: {node: '>=16 || 14 >=14.17'} 1038 1190 1039 - ms@2.1.2: 1040 - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1191 + ms@2.1.3: 1192 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1041 1193 1042 1194 nanotar@0.1.1: 1043 1195 resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==} ··· 1045 1197 natural-compare@1.4.0: 1046 1198 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1047 1199 1200 + node-fetch-native@1.6.6: 1201 + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} 1202 + 1048 1203 object-assign@4.1.1: 1049 1204 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1050 1205 engines: {node: '>=0.10.0'} 1051 1206 1052 - object-inspect@1.13.2: 1053 - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} 1207 + object-inspect@1.13.4: 1208 + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1054 1209 engines: {node: '>= 0.4'} 1055 1210 1056 1211 object-keys@1.1.1: 1057 1212 resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1058 1213 engines: {node: '>= 0.4'} 1059 1214 1060 - object.assign@4.1.5: 1061 - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 1215 + object.assign@4.1.7: 1216 + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 1062 1217 engines: {node: '>= 0.4'} 1063 1218 1064 - object.entries@1.1.8: 1065 - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} 1219 + object.entries@1.1.9: 1220 + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} 1066 1221 engines: {node: '>= 0.4'} 1067 1222 1068 1223 object.fromentries@2.0.8: 1069 1224 resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 1070 1225 engines: {node: '>= 0.4'} 1071 1226 1072 - object.values@1.2.0: 1073 - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 1227 + object.values@1.2.1: 1228 + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} 1074 1229 engines: {node: '>= 0.4'} 1075 1230 1231 + ofetch@1.4.1: 1232 + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} 1233 + 1234 + onetime@7.0.0: 1235 + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 1236 + engines: {node: '>=18'} 1237 + 1076 1238 optionator@0.9.3: 1077 1239 resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 1078 1240 engines: {node: '>= 0.8.0'} 1079 1241 1242 + own-keys@1.0.1: 1243 + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 1244 + engines: {node: '>= 0.4'} 1245 + 1080 1246 p-limit@3.1.0: 1081 1247 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1082 1248 engines: {node: '>=10'} ··· 1084 1250 p-locate@5.0.0: 1085 1251 resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1086 1252 engines: {node: '>=10'} 1253 + 1254 + package-manager-detector@1.1.0: 1255 + resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} 1087 1256 1088 1257 parent-module@1.0.1: 1089 1258 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} ··· 1100 1269 path-parse@1.0.7: 1101 1270 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1102 1271 1272 + pathe@2.0.3: 1273 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1274 + 1103 1275 picomatch@2.3.1: 1104 1276 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1105 1277 engines: {node: '>=8.6'} 1106 1278 1107 - possible-typed-array-names@1.0.0: 1108 - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 1279 + picomatch@4.0.2: 1280 + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1281 + engines: {node: '>=12'} 1282 + 1283 + pnpm-workspace-yaml@0.3.1: 1284 + resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==} 1285 + 1286 + possible-typed-array-names@1.1.0: 1287 + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} 1109 1288 engines: {node: '>= 0.4'} 1110 1289 1111 1290 prelude-ls@1.2.1: ··· 1131 1310 punycode@2.3.1: 1132 1311 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1133 1312 engines: {node: '>=6'} 1313 + 1314 + quansync@0.2.10: 1315 + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} 1134 1316 1135 1317 queue-microtask@1.2.3: 1136 1318 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} ··· 1142 1324 resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 1143 1325 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1144 1326 1145 - reflect.getprototypeof@1.0.6: 1146 - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} 1327 + reflect.getprototypeof@1.0.10: 1328 + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 1147 1329 engines: {node: '>= 0.4'} 1148 1330 1149 - regexp.prototype.flags@1.5.3: 1150 - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} 1331 + regexp.prototype.flags@1.5.4: 1332 + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 1151 1333 engines: {node: '>= 0.4'} 1152 1334 1153 1335 resolve-from@4.0.0: ··· 1158 1340 resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 1159 1341 hasBin: true 1160 1342 1343 + restore-cursor@5.1.0: 1344 + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 1345 + engines: {node: '>=18'} 1346 + 1161 1347 reusify@1.0.4: 1162 1348 resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1163 1349 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} ··· 1165 1351 run-parallel@1.2.0: 1166 1352 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1167 1353 1168 - safe-array-concat@1.1.2: 1169 - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} 1354 + safe-array-concat@1.1.3: 1355 + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1170 1356 engines: {node: '>=0.4'} 1171 - 1172 - safe-buffer@5.1.2: 1173 - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1174 1357 1175 1358 safe-buffer@5.2.1: 1176 1359 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1177 1360 1178 - safe-regex-test@1.0.3: 1179 - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 1361 + safe-push-apply@1.0.0: 1362 + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 1363 + engines: {node: '>= 0.4'} 1364 + 1365 + safe-regex-test@1.1.0: 1366 + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1180 1367 engines: {node: '>= 0.4'} 1181 1368 1182 1369 semver@6.3.1: 1183 1370 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1184 1371 hasBin: true 1185 1372 1186 - semver@7.6.3: 1187 - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1373 + semver@7.7.1: 1374 + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1188 1375 engines: {node: '>=10'} 1189 1376 hasBin: true 1190 1377 ··· 1196 1383 resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1197 1384 engines: {node: '>= 0.4'} 1198 1385 1386 + set-proto@1.0.0: 1387 + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 1388 + engines: {node: '>= 0.4'} 1389 + 1199 1390 shebang-command@2.0.0: 1200 1391 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1201 1392 engines: {node: '>=8'} ··· 1204 1395 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1205 1396 engines: {node: '>=8'} 1206 1397 1207 - side-channel@1.0.6: 1208 - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 1398 + side-channel-list@1.0.0: 1399 + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1400 + engines: {node: '>= 0.4'} 1401 + 1402 + side-channel-map@1.0.1: 1403 + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1209 1404 engines: {node: '>= 0.4'} 1210 1405 1406 + side-channel-weakmap@1.0.2: 1407 + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1408 + engines: {node: '>= 0.4'} 1409 + 1410 + side-channel@1.1.0: 1411 + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1412 + engines: {node: '>= 0.4'} 1413 + 1414 + signal-exit@4.1.0: 1415 + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1416 + engines: {node: '>=14'} 1417 + 1211 1418 standalone-electron-types@1.0.0: 1212 1419 resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} 1213 1420 1214 - string.prototype.matchall@4.0.11: 1215 - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} 1421 + string.prototype.matchall@4.0.12: 1422 + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} 1216 1423 engines: {node: '>= 0.4'} 1217 1424 1218 1425 string.prototype.repeat@1.0.0: 1219 1426 resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} 1220 1427 1221 - string.prototype.trim@1.2.9: 1222 - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} 1428 + string.prototype.trim@1.2.10: 1429 + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1223 1430 engines: {node: '>= 0.4'} 1224 1431 1225 - string.prototype.trimend@1.0.8: 1226 - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} 1432 + string.prototype.trimend@1.0.9: 1433 + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1434 + engines: {node: '>= 0.4'} 1227 1435 1228 1436 string.prototype.trimstart@1.0.8: 1229 1437 resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} ··· 1244 1452 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1245 1453 engines: {node: '>= 0.4'} 1246 1454 1247 - synckit@0.9.2: 1248 - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 1455 + synckit@0.11.1: 1456 + resolution: {integrity: sha512-fWZqNBZNNFp/7mTUy1fSsydhKsAKJ+u90Nk7kOK5Gcq9vObaqLBLjWFDBkyVU9Vvc6Y71VbOevMuGhqv02bT+Q==} 1249 1457 engines: {node: ^14.18.0 || >=16.0.0} 1250 1458 1251 - text-table@0.2.0: 1252 - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1459 + taze@19.0.4: 1460 + resolution: {integrity: sha512-bviyNotzqcIWpVBCC4QYVb2yupzKyUDGQi2m/8GERdiPaudVMtgAqaE98+x0cDDaByYRMJCyhQWM04ikUL6+kQ==} 1461 + hasBin: true 1462 + 1463 + tinyexec@1.0.1: 1464 + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} 1465 + 1466 + tinyglobby@0.2.12: 1467 + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} 1468 + engines: {node: '>=12.0.0'} 1253 1469 1254 1470 to-regex-range@5.0.1: 1255 1471 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1256 1472 engines: {node: '>=8.0'} 1257 1473 1258 - ts-api-utils@1.3.0: 1259 - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1260 - engines: {node: '>=16'} 1474 + ts-api-utils@2.1.0: 1475 + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1476 + engines: {node: '>=18.12'} 1261 1477 peerDependencies: 1262 - typescript: '>=4.2.0' 1478 + typescript: '>=4.8.4' 1263 1479 1264 - tslib@2.7.0: 1265 - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} 1480 + tslib@2.8.1: 1481 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1266 1482 1267 1483 type-check@0.4.0: 1268 1484 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1269 1485 engines: {node: '>= 0.8.0'} 1270 1486 1271 - typed-array-buffer@1.0.2: 1272 - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 1487 + typed-array-buffer@1.0.3: 1488 + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 1273 1489 engines: {node: '>= 0.4'} 1274 1490 1275 - typed-array-byte-length@1.0.1: 1276 - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 1491 + typed-array-byte-length@1.0.3: 1492 + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 1277 1493 engines: {node: '>= 0.4'} 1278 1494 1279 - typed-array-byte-offset@1.0.2: 1280 - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} 1495 + typed-array-byte-offset@1.0.4: 1496 + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 1281 1497 engines: {node: '>= 0.4'} 1282 1498 1283 - typed-array-length@1.0.6: 1284 - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} 1499 + typed-array-length@1.0.7: 1500 + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1285 1501 engines: {node: '>= 0.4'} 1286 1502 1287 - typescript-eslint@8.8.1: 1288 - resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==} 1503 + typescript-eslint@8.29.0: 1504 + resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} 1289 1505 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1290 1506 peerDependencies: 1291 - typescript: '*' 1292 - peerDependenciesMeta: 1293 - typescript: 1294 - optional: true 1507 + eslint: ^8.57.0 || ^9.0.0 1508 + typescript: '>=4.8.4 <5.9.0' 1295 1509 1296 - typescript@5.3.2: 1297 - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} 1510 + typescript@5.8.2: 1511 + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} 1298 1512 engines: {node: '>=14.17'} 1299 1513 hasBin: true 1300 1514 1301 - unbox-primitive@1.0.2: 1302 - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1515 + ufo@1.5.4: 1516 + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 1517 + 1518 + unbox-primitive@1.1.0: 1519 + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 1520 + engines: {node: '>= 0.4'} 1521 + 1522 + unconfig@7.3.1: 1523 + resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==} 1303 1524 1304 1525 undici-types@6.20.0: 1305 1526 resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1527 + 1528 + undici-types@6.21.0: 1529 + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1306 1530 1307 1531 uri-js@4.4.1: 1308 1532 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1309 1533 1310 - utilium@1.1.3: 1311 - resolution: {integrity: sha512-Gip5dgsVHMy+7lf6m1l/2HJkUropZ4pIBRKxBqxw0Dtz8czcuhNyXFXywqdVnNekDaTzV7/CHYsnLPrPrvzMUA==} 1534 + utilium@1.10.1: 1535 + resolution: {integrity: sha512-GQINDTb/ocyz4acQj3GXAe0wipYxws6L+9ouqaq10KlInTk9DGvW9TJd0pYa/Xu3cppNnZuB4T/sBuSXpcN2ng==} 1312 1536 1313 - which-boxed-primitive@1.0.2: 1314 - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 1537 + which-boxed-primitive@1.1.1: 1538 + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 1539 + engines: {node: '>= 0.4'} 1315 1540 1316 - which-builtin-type@1.1.4: 1317 - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} 1541 + which-builtin-type@1.2.1: 1542 + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 1318 1543 engines: {node: '>= 0.4'} 1319 1544 1320 1545 which-collection@1.0.2: 1321 1546 resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 1322 1547 engines: {node: '>= 0.4'} 1323 1548 1324 - which-typed-array@1.1.15: 1325 - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} 1549 + which-typed-array@1.1.19: 1550 + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} 1326 1551 engines: {node: '>= 0.4'} 1327 1552 1328 1553 which@2.0.2: ··· 1330 1555 engines: {node: '>= 8'} 1331 1556 hasBin: true 1332 1557 1558 + yaml@2.7.1: 1559 + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} 1560 + engines: {node: '>= 14'} 1561 + hasBin: true 1562 + 1333 1563 yocto-queue@0.1.0: 1334 1564 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1335 1565 engines: {node: '>=10'} 1336 1566 1567 + zustand@5.0.3: 1568 + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} 1569 + engines: {node: '>=12.20.0'} 1570 + peerDependencies: 1571 + '@types/react': '>=18.0.0' 1572 + immer: '>=9.0.6' 1573 + react: '>=18.0.0' 1574 + use-sync-external-store: '>=1.2.0' 1575 + peerDependenciesMeta: 1576 + '@types/react': 1577 + optional: true 1578 + immer: 1579 + optional: true 1580 + react: 1581 + optional: true 1582 + use-sync-external-store: 1583 + optional: true 1584 + 1337 1585 snapshots: 1338 1586 1339 1587 '@aashutoshrathi/word-wrap@1.2.6': {} 1588 + 1589 + '@antfu/ni@24.3.0': 1590 + dependencies: 1591 + ansis: 3.17.0 1592 + fzf: 0.5.2 1593 + package-manager-detector: 1.1.0 1594 + tinyexec: 1.0.1 1340 1595 1341 1596 '@esbuild/android-arm64@0.19.3': 1342 1597 optional: true ··· 1404 1659 '@esbuild/win32-x64@0.19.3': 1405 1660 optional: true 1406 1661 1407 - '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)': 1662 + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': 1408 1663 dependencies: 1409 - eslint: 9.12.0 1664 + eslint: 9.23.0(jiti@2.4.2) 1410 1665 eslint-visitor-keys: 3.4.3 1411 1666 1412 - '@eslint-community/regexpp@4.11.1': {} 1667 + '@eslint-community/regexpp@4.12.1': {} 1413 1668 1414 - '@eslint/config-array@0.18.0': 1669 + '@eslint/config-array@0.19.2': 1415 1670 dependencies: 1416 - '@eslint/object-schema': 2.1.4 1417 - debug: 4.3.4 1671 + '@eslint/object-schema': 2.1.6 1672 + debug: 4.4.0 1418 1673 minimatch: 3.1.2 1419 1674 transitivePeerDependencies: 1420 1675 - supports-color 1421 1676 1422 - '@eslint/core@0.6.0': {} 1677 + '@eslint/config-helpers@0.2.1': {} 1678 + 1679 + '@eslint/core@0.12.0': 1680 + dependencies: 1681 + '@types/json-schema': 7.0.15 1682 + 1683 + '@eslint/core@0.13.0': 1684 + dependencies: 1685 + '@types/json-schema': 7.0.15 1423 1686 1424 - '@eslint/eslintrc@3.1.0': 1687 + '@eslint/eslintrc@3.3.1': 1425 1688 dependencies: 1426 1689 ajv: 6.12.6 1427 - debug: 4.3.4 1428 - espree: 10.2.0 1690 + debug: 4.4.0 1691 + espree: 10.3.0 1429 1692 globals: 14.0.0 1430 - ignore: 5.3.0 1693 + ignore: 5.3.2 1431 1694 import-fresh: 3.3.0 1432 1695 js-yaml: 4.1.0 1433 1696 minimatch: 3.1.2 ··· 1435 1698 transitivePeerDependencies: 1436 1699 - supports-color 1437 1700 1438 - '@eslint/js@9.12.0': {} 1701 + '@eslint/js@9.23.0': {} 1439 1702 1440 - '@eslint/object-schema@2.1.4': {} 1703 + '@eslint/object-schema@2.1.6': {} 1441 1704 1442 - '@eslint/plugin-kit@0.2.0': 1705 + '@eslint/plugin-kit@0.2.8': 1443 1706 dependencies: 1707 + '@eslint/core': 0.13.0 1444 1708 levn: 0.4.1 1445 1709 1446 - '@humanfs/core@0.19.0': {} 1710 + '@humanfs/core@0.19.1': {} 1447 1711 1448 - '@humanfs/node@0.16.5': 1712 + '@humanfs/node@0.16.6': 1449 1713 dependencies: 1450 - '@humanfs/core': 0.19.0 1714 + '@humanfs/core': 0.19.1 1451 1715 '@humanwhocodes/retry': 0.3.1 1452 1716 1453 1717 '@humanwhocodes/module-importer@1.0.1': {} 1454 1718 1455 1719 '@humanwhocodes/retry@0.3.1': {} 1456 1720 1457 - '@moonlight-mod/eslint-config@https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9(eslint@9.12.0)(prettier@3.1.0)(typescript@5.3.2)': 1721 + '@humanwhocodes/retry@0.4.2': {} 1722 + 1723 + '@moonlight-mod/eslint-config@https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9(@types/eslint@9.6.1)(eslint@9.23.0(jiti@2.4.2))(prettier@3.1.0)(typescript@5.8.2)': 1458 1724 dependencies: 1459 - '@eslint/js': 9.12.0 1460 - eslint: 9.12.0 1461 - eslint-config-prettier: 9.1.0(eslint@9.12.0) 1462 - eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.1.0) 1463 - eslint-plugin-react: 7.37.1(eslint@9.12.0) 1464 - typescript: 5.3.2 1465 - typescript-eslint: 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1725 + '@eslint/js': 9.23.0 1726 + eslint: 9.23.0(jiti@2.4.2) 1727 + eslint-config-prettier: 9.1.0(eslint@9.23.0(jiti@2.4.2)) 1728 + eslint-plugin-prettier: 5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.1.0) 1729 + eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.4.2)) 1730 + typescript: 5.8.2 1731 + typescript-eslint: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 1466 1732 transitivePeerDependencies: 1467 1733 - '@types/eslint' 1468 1734 - prettier 1469 1735 - supports-color 1470 1736 1471 - '@moonlight-mod/lunast@1.0.0': 1737 + '@moonlight-mod/lunast@1.0.1': 1472 1738 dependencies: 1473 1739 astring: 1.9.0 1474 1740 estree-toolkit: 1.7.8 1475 1741 meriyah: 6.0.1 1476 1742 1477 - '@moonlight-mod/mappings@1.1.10(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3)': 1743 + '@moonlight-mod/mappings@1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5)': 1478 1744 dependencies: 1479 - '@moonlight-mod/lunast': 1.0.0 1480 - '@moonlight-mod/moonmap': 1.0.3 1745 + '@moonlight-mod/lunast': 1.0.1 1746 + '@moonlight-mod/moonmap': 1.0.5 1481 1747 '@types/chroma-js': 3.1.0 1482 1748 '@types/flux': 3.1.14 1483 1749 '@types/highlightjs': 9.12.6 1484 1750 '@types/lodash': 4.17.14 1485 1751 '@types/platform': 1.3.6 1486 - '@types/react': 18.3.10 1752 + '@types/react': 18.3.20 1487 1753 csstype: 3.1.3 1754 + zustand: 5.0.3(@types/react@18.3.20) 1755 + transitivePeerDependencies: 1756 + - immer 1757 + - react 1758 + - use-sync-external-store 1488 1759 1489 - '@moonlight-mod/moonmap@1.0.3': {} 1760 + '@moonlight-mod/moonmap@1.0.5': {} 1490 1761 1491 1762 '@nodelib/fs.scandir@2.1.5': 1492 1763 dependencies: ··· 1500 1771 '@nodelib/fs.scandir': 2.1.5 1501 1772 fastq: 1.17.1 1502 1773 1503 - '@pkgr/core@0.1.1': {} 1774 + '@pkgr/core@0.2.0': {} 1775 + 1776 + '@quansync/fs@0.1.2': 1777 + dependencies: 1778 + quansync: 0.2.10 1504 1779 1505 1780 '@types/chroma-js@3.1.0': {} 1506 1781 1782 + '@types/chrome@0.0.313': 1783 + dependencies: 1784 + '@types/filesystem': 0.0.36 1785 + '@types/har-format': 1.2.16 1786 + 1787 + '@types/eslint@9.6.1': 1788 + dependencies: 1789 + '@types/estree': 1.0.7 1790 + '@types/json-schema': 7.0.15 1791 + optional: true 1792 + 1507 1793 '@types/estree-jsx@1.0.5': 1508 1794 dependencies: 1509 1795 '@types/estree': 1.0.6 1510 1796 1511 1797 '@types/estree@1.0.6': {} 1512 1798 1799 + '@types/estree@1.0.7': 1800 + optional: true 1801 + 1513 1802 '@types/fbemitter@2.0.35': {} 1514 1803 1804 + '@types/filesystem@0.0.36': 1805 + dependencies: 1806 + '@types/filewriter': 0.0.33 1807 + 1808 + '@types/filewriter@0.0.33': {} 1809 + 1515 1810 '@types/flux@3.1.14': 1516 1811 dependencies: 1517 1812 '@types/fbemitter': 2.0.35 1518 - '@types/react': 18.3.10 1813 + '@types/react': 18.3.20 1814 + 1815 + '@types/har-format@1.2.16': {} 1519 1816 1520 1817 '@types/highlightjs@9.12.6': {} 1521 1818 ··· 1525 1822 1526 1823 '@types/node@18.17.17': {} 1527 1824 1528 - '@types/node@22.10.7': 1825 + '@types/node@22.13.6': 1529 1826 dependencies: 1530 1827 undici-types: 6.20.0 1828 + 1829 + '@types/node@22.14.0': 1830 + dependencies: 1831 + undici-types: 6.21.0 1531 1832 1532 1833 '@types/platform@1.3.6': {} 1533 1834 1534 1835 '@types/prop-types@15.7.13': {} 1535 1836 1536 - '@types/react@18.3.10': 1837 + '@types/react@18.3.20': 1537 1838 dependencies: 1538 1839 '@types/prop-types': 15.7.13 1539 1840 csstype: 3.1.3 1540 1841 1541 - '@types/readable-stream@4.0.15': 1842 + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': 1542 1843 dependencies: 1543 - '@types/node': 22.10.7 1544 - safe-buffer: 5.1.2 1545 - 1546 - '@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.3.2))(eslint@9.12.0)(typescript@5.3.2)': 1547 - dependencies: 1548 - '@eslint-community/regexpp': 4.11.1 1549 - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1550 - '@typescript-eslint/scope-manager': 8.8.1 1551 - '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1552 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1553 - '@typescript-eslint/visitor-keys': 8.8.1 1554 - eslint: 9.12.0 1844 + '@eslint-community/regexpp': 4.12.1 1845 + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 1846 + '@typescript-eslint/scope-manager': 8.29.0 1847 + '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 1848 + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 1849 + '@typescript-eslint/visitor-keys': 8.29.0 1850 + eslint: 9.23.0(jiti@2.4.2) 1555 1851 graphemer: 1.4.0 1556 1852 ignore: 5.3.2 1557 1853 natural-compare: 1.4.0 1558 - ts-api-utils: 1.3.0(typescript@5.3.2) 1559 - optionalDependencies: 1560 - typescript: 5.3.2 1854 + ts-api-utils: 2.1.0(typescript@5.8.2) 1855 + typescript: 5.8.2 1561 1856 transitivePeerDependencies: 1562 1857 - supports-color 1563 1858 1564 - '@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.3.2)': 1859 + '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': 1565 1860 dependencies: 1566 - '@typescript-eslint/scope-manager': 8.8.1 1567 - '@typescript-eslint/types': 8.8.1 1568 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1569 - '@typescript-eslint/visitor-keys': 8.8.1 1570 - debug: 4.3.4 1571 - eslint: 9.12.0 1572 - optionalDependencies: 1573 - typescript: 5.3.2 1861 + '@typescript-eslint/scope-manager': 8.29.0 1862 + '@typescript-eslint/types': 8.29.0 1863 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) 1864 + '@typescript-eslint/visitor-keys': 8.29.0 1865 + debug: 4.4.0 1866 + eslint: 9.23.0(jiti@2.4.2) 1867 + typescript: 5.8.2 1574 1868 transitivePeerDependencies: 1575 1869 - supports-color 1576 1870 1577 - '@typescript-eslint/scope-manager@8.8.1': 1871 + '@typescript-eslint/scope-manager@8.29.0': 1578 1872 dependencies: 1579 - '@typescript-eslint/types': 8.8.1 1580 - '@typescript-eslint/visitor-keys': 8.8.1 1873 + '@typescript-eslint/types': 8.29.0 1874 + '@typescript-eslint/visitor-keys': 8.29.0 1581 1875 1582 - '@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.3.2)': 1876 + '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': 1583 1877 dependencies: 1584 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1585 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1586 - debug: 4.3.4 1587 - ts-api-utils: 1.3.0(typescript@5.3.2) 1588 - optionalDependencies: 1589 - typescript: 5.3.2 1878 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) 1879 + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 1880 + debug: 4.4.0 1881 + eslint: 9.23.0(jiti@2.4.2) 1882 + ts-api-utils: 2.1.0(typescript@5.8.2) 1883 + typescript: 5.8.2 1590 1884 transitivePeerDependencies: 1591 - - eslint 1592 1885 - supports-color 1593 1886 1594 - '@typescript-eslint/types@8.8.1': {} 1887 + '@typescript-eslint/types@8.29.0': {} 1595 1888 1596 - '@typescript-eslint/typescript-estree@8.8.1(typescript@5.3.2)': 1889 + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)': 1597 1890 dependencies: 1598 - '@typescript-eslint/types': 8.8.1 1599 - '@typescript-eslint/visitor-keys': 8.8.1 1600 - debug: 4.3.4 1891 + '@typescript-eslint/types': 8.29.0 1892 + '@typescript-eslint/visitor-keys': 8.29.0 1893 + debug: 4.4.0 1601 1894 fast-glob: 3.3.2 1602 1895 is-glob: 4.0.3 1603 1896 minimatch: 9.0.5 1604 - semver: 7.6.3 1605 - ts-api-utils: 1.3.0(typescript@5.3.2) 1606 - optionalDependencies: 1607 - typescript: 5.3.2 1897 + semver: 7.7.1 1898 + ts-api-utils: 2.1.0(typescript@5.8.2) 1899 + typescript: 5.8.2 1608 1900 transitivePeerDependencies: 1609 1901 - supports-color 1610 1902 1611 - '@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.3.2)': 1903 + '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': 1612 1904 dependencies: 1613 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 1614 - '@typescript-eslint/scope-manager': 8.8.1 1615 - '@typescript-eslint/types': 8.8.1 1616 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1617 - eslint: 9.12.0 1905 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) 1906 + '@typescript-eslint/scope-manager': 8.29.0 1907 + '@typescript-eslint/types': 8.29.0 1908 + '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2) 1909 + eslint: 9.23.0(jiti@2.4.2) 1910 + typescript: 5.8.2 1618 1911 transitivePeerDependencies: 1619 1912 - supports-color 1620 - - typescript 1621 1913 1622 - '@typescript-eslint/visitor-keys@8.8.1': 1914 + '@typescript-eslint/visitor-keys@8.29.0': 1623 1915 dependencies: 1624 - '@typescript-eslint/types': 8.8.1 1625 - eslint-visitor-keys: 3.4.3 1916 + '@typescript-eslint/types': 8.29.0 1917 + eslint-visitor-keys: 4.2.0 1626 1918 1627 1919 '@xterm/xterm@5.5.0': 1628 1920 optional: true 1629 1921 1630 - '@zenfs/core@1.8.8': 1922 + '@zenfs/core@2.0.0': 1631 1923 dependencies: 1632 - '@types/node': 22.10.7 1633 - '@types/readable-stream': 4.0.15 1924 + '@types/node': 22.13.6 1634 1925 buffer: 6.0.3 1635 1926 eventemitter3: 5.0.1 1636 1927 readable-stream: 4.5.2 1637 - utilium: 1.1.3 1928 + utilium: 1.10.1 1638 1929 1639 - '@zenfs/dom@1.1.3(@zenfs/core@1.8.8)': 1930 + '@zenfs/dom@1.1.6(@zenfs/core@2.0.0)(utilium@1.10.1)': 1640 1931 dependencies: 1641 - '@zenfs/core': 1.8.8 1932 + '@zenfs/core': 2.0.0 1933 + utilium: 1.10.1 1642 1934 1643 1935 abort-controller@3.0.0: 1644 1936 dependencies: 1645 1937 event-target-shim: 5.0.1 1646 1938 1647 - acorn-jsx@5.3.2(acorn@8.12.1): 1939 + acorn-jsx@5.3.2(acorn@8.14.1): 1648 1940 dependencies: 1649 - acorn: 8.12.1 1941 + acorn: 8.14.1 1650 1942 1651 - acorn@8.12.1: {} 1943 + acorn@8.14.1: {} 1652 1944 1653 1945 ajv@6.12.6: 1654 1946 dependencies: ··· 1661 1953 dependencies: 1662 1954 color-convert: 2.0.1 1663 1955 1956 + ansis@3.17.0: {} 1957 + 1664 1958 argparse@2.0.1: {} 1665 1959 1666 - array-buffer-byte-length@1.0.1: 1960 + array-buffer-byte-length@1.0.2: 1667 1961 dependencies: 1668 - call-bind: 1.0.7 1669 - is-array-buffer: 3.0.4 1962 + call-bound: 1.0.4 1963 + is-array-buffer: 3.0.5 1670 1964 1671 1965 array-includes@3.1.8: 1672 1966 dependencies: 1673 - call-bind: 1.0.7 1967 + call-bind: 1.0.8 1674 1968 define-properties: 1.2.1 1675 - es-abstract: 1.23.3 1676 - es-object-atoms: 1.0.0 1677 - get-intrinsic: 1.2.4 1678 - is-string: 1.0.7 1969 + es-abstract: 1.23.9 1970 + es-object-atoms: 1.1.1 1971 + get-intrinsic: 1.3.0 1972 + is-string: 1.1.1 1679 1973 1680 1974 array.prototype.findlast@1.2.5: 1681 1975 dependencies: 1682 - call-bind: 1.0.7 1976 + call-bind: 1.0.8 1683 1977 define-properties: 1.2.1 1684 - es-abstract: 1.23.3 1978 + es-abstract: 1.23.9 1685 1979 es-errors: 1.3.0 1686 - es-object-atoms: 1.0.0 1687 - es-shim-unscopables: 1.0.2 1980 + es-object-atoms: 1.1.1 1981 + es-shim-unscopables: 1.1.0 1688 1982 1689 - array.prototype.flat@1.3.2: 1983 + array.prototype.flat@1.3.3: 1690 1984 dependencies: 1691 - call-bind: 1.0.7 1985 + call-bind: 1.0.8 1692 1986 define-properties: 1.2.1 1693 - es-abstract: 1.23.3 1694 - es-shim-unscopables: 1.0.2 1987 + es-abstract: 1.23.9 1988 + es-shim-unscopables: 1.1.0 1695 1989 1696 - array.prototype.flatmap@1.3.2: 1990 + array.prototype.flatmap@1.3.3: 1697 1991 dependencies: 1698 - call-bind: 1.0.7 1992 + call-bind: 1.0.8 1699 1993 define-properties: 1.2.1 1700 - es-abstract: 1.23.3 1701 - es-shim-unscopables: 1.0.2 1994 + es-abstract: 1.23.9 1995 + es-shim-unscopables: 1.1.0 1702 1996 1703 1997 array.prototype.tosorted@1.1.4: 1704 1998 dependencies: 1705 - call-bind: 1.0.7 1999 + call-bind: 1.0.8 1706 2000 define-properties: 1.2.1 1707 - es-abstract: 1.23.3 2001 + es-abstract: 1.23.9 1708 2002 es-errors: 1.3.0 1709 - es-shim-unscopables: 1.0.2 2003 + es-shim-unscopables: 1.1.0 1710 2004 1711 - arraybuffer.prototype.slice@1.0.3: 2005 + arraybuffer.prototype.slice@1.0.4: 1712 2006 dependencies: 1713 - array-buffer-byte-length: 1.0.1 1714 - call-bind: 1.0.7 2007 + array-buffer-byte-length: 1.0.2 2008 + call-bind: 1.0.8 1715 2009 define-properties: 1.2.1 1716 - es-abstract: 1.23.3 2010 + es-abstract: 1.23.9 1717 2011 es-errors: 1.3.0 1718 - get-intrinsic: 1.2.4 1719 - is-array-buffer: 3.0.4 1720 - is-shared-array-buffer: 1.0.3 2012 + get-intrinsic: 1.3.0 2013 + is-array-buffer: 3.0.5 1721 2014 1722 2015 astring@1.9.0: {} 1723 2016 2017 + async-function@1.0.0: {} 2018 + 1724 2019 available-typed-arrays@1.0.7: 1725 2020 dependencies: 1726 - possible-typed-array-names: 1.0.0 2021 + possible-typed-array-names: 1.1.0 1727 2022 1728 2023 balanced-match@1.0.2: {} 1729 2024 ··· 1747 2042 base64-js: 1.5.1 1748 2043 ieee754: 1.2.1 1749 2044 1750 - call-bind@1.0.7: 2045 + cac@6.7.14: {} 2046 + 2047 + call-bind-apply-helpers@1.0.2: 1751 2048 dependencies: 1752 - es-define-property: 1.0.0 1753 2049 es-errors: 1.3.0 1754 2050 function-bind: 1.1.2 1755 - get-intrinsic: 1.2.4 2051 + 2052 + call-bind@1.0.8: 2053 + dependencies: 2054 + call-bind-apply-helpers: 1.0.2 2055 + es-define-property: 1.0.1 2056 + get-intrinsic: 1.3.0 1756 2057 set-function-length: 1.2.2 2058 + 2059 + call-bound@1.0.4: 2060 + dependencies: 2061 + call-bind-apply-helpers: 1.0.2 2062 + get-intrinsic: 1.3.0 1757 2063 1758 2064 callsites@3.1.0: {} 1759 2065 ··· 1770 2076 1771 2077 concat-map@0.0.1: {} 1772 2078 1773 - cross-spawn@7.0.3: 2079 + cross-spawn@7.0.6: 1774 2080 dependencies: 1775 2081 path-key: 3.1.1 1776 2082 shebang-command: 2.0.0 1777 2083 which: 2.0.2 1778 2084 1779 - csstype@3.1.2: {} 1780 - 1781 2085 csstype@3.1.3: {} 1782 2086 1783 - data-view-buffer@1.0.1: 2087 + data-view-buffer@1.0.2: 1784 2088 dependencies: 1785 - call-bind: 1.0.7 2089 + call-bound: 1.0.4 1786 2090 es-errors: 1.3.0 1787 - is-data-view: 1.0.1 2091 + is-data-view: 1.0.2 1788 2092 1789 - data-view-byte-length@1.0.1: 2093 + data-view-byte-length@1.0.2: 1790 2094 dependencies: 1791 - call-bind: 1.0.7 2095 + call-bound: 1.0.4 1792 2096 es-errors: 1.3.0 1793 - is-data-view: 1.0.1 2097 + is-data-view: 1.0.2 1794 2098 1795 - data-view-byte-offset@1.0.0: 2099 + data-view-byte-offset@1.0.1: 1796 2100 dependencies: 1797 - call-bind: 1.0.7 2101 + call-bound: 1.0.4 1798 2102 es-errors: 1.3.0 1799 - is-data-view: 1.0.1 2103 + is-data-view: 1.0.2 1800 2104 1801 - debug@4.3.4: 2105 + debug@4.4.0: 1802 2106 dependencies: 1803 - ms: 2.1.2 2107 + ms: 2.1.3 1804 2108 1805 2109 deep-is@0.1.4: {} 1806 2110 1807 2111 define-data-property@1.1.4: 1808 2112 dependencies: 1809 - es-define-property: 1.0.0 2113 + es-define-property: 1.0.1 1810 2114 es-errors: 1.3.0 1811 - gopd: 1.0.1 2115 + gopd: 1.2.0 1812 2116 1813 2117 define-properties@1.2.1: 1814 2118 dependencies: ··· 1816 2120 has-property-descriptors: 1.0.2 1817 2121 object-keys: 1.1.1 1818 2122 2123 + defu@6.1.4: {} 2124 + 2125 + destr@2.0.4: {} 2126 + 1819 2127 doctrine@2.1.0: 1820 2128 dependencies: 1821 2129 esutils: 2.0.3 1822 2130 1823 - es-abstract@1.23.3: 2131 + dunder-proto@1.0.1: 1824 2132 dependencies: 1825 - array-buffer-byte-length: 1.0.1 1826 - arraybuffer.prototype.slice: 1.0.3 2133 + call-bind-apply-helpers: 1.0.2 2134 + es-errors: 1.3.0 2135 + gopd: 1.2.0 2136 + 2137 + es-abstract@1.23.9: 2138 + dependencies: 2139 + array-buffer-byte-length: 1.0.2 2140 + arraybuffer.prototype.slice: 1.0.4 1827 2141 available-typed-arrays: 1.0.7 1828 - call-bind: 1.0.7 1829 - data-view-buffer: 1.0.1 1830 - data-view-byte-length: 1.0.1 1831 - data-view-byte-offset: 1.0.0 1832 - es-define-property: 1.0.0 2142 + call-bind: 1.0.8 2143 + call-bound: 1.0.4 2144 + data-view-buffer: 1.0.2 2145 + data-view-byte-length: 1.0.2 2146 + data-view-byte-offset: 1.0.1 2147 + es-define-property: 1.0.1 1833 2148 es-errors: 1.3.0 1834 - es-object-atoms: 1.0.0 1835 - es-set-tostringtag: 2.0.3 1836 - es-to-primitive: 1.2.1 1837 - function.prototype.name: 1.1.6 1838 - get-intrinsic: 1.2.4 1839 - get-symbol-description: 1.0.2 2149 + es-object-atoms: 1.1.1 2150 + es-set-tostringtag: 2.1.0 2151 + es-to-primitive: 1.3.0 2152 + function.prototype.name: 1.1.8 2153 + get-intrinsic: 1.3.0 2154 + get-proto: 1.0.1 2155 + get-symbol-description: 1.1.0 1840 2156 globalthis: 1.0.4 1841 - gopd: 1.0.1 2157 + gopd: 1.2.0 1842 2158 has-property-descriptors: 1.0.2 1843 - has-proto: 1.0.3 1844 - has-symbols: 1.0.3 2159 + has-proto: 1.2.0 2160 + has-symbols: 1.1.0 1845 2161 hasown: 2.0.2 1846 - internal-slot: 1.0.7 1847 - is-array-buffer: 3.0.4 2162 + internal-slot: 1.1.0 2163 + is-array-buffer: 3.0.5 1848 2164 is-callable: 1.2.7 1849 - is-data-view: 1.0.1 1850 - is-negative-zero: 2.0.3 1851 - is-regex: 1.1.4 1852 - is-shared-array-buffer: 1.0.3 1853 - is-string: 1.0.7 1854 - is-typed-array: 1.1.13 1855 - is-weakref: 1.0.2 1856 - object-inspect: 1.13.2 2165 + is-data-view: 1.0.2 2166 + is-regex: 1.2.1 2167 + is-shared-array-buffer: 1.0.4 2168 + is-string: 1.1.1 2169 + is-typed-array: 1.1.15 2170 + is-weakref: 1.1.1 2171 + math-intrinsics: 1.1.0 2172 + object-inspect: 1.13.4 1857 2173 object-keys: 1.1.1 1858 - object.assign: 4.1.5 1859 - regexp.prototype.flags: 1.5.3 1860 - safe-array-concat: 1.1.2 1861 - safe-regex-test: 1.0.3 1862 - string.prototype.trim: 1.2.9 1863 - string.prototype.trimend: 1.0.8 2174 + object.assign: 4.1.7 2175 + own-keys: 1.0.1 2176 + regexp.prototype.flags: 1.5.4 2177 + safe-array-concat: 1.1.3 2178 + safe-push-apply: 1.0.0 2179 + safe-regex-test: 1.1.0 2180 + set-proto: 1.0.0 2181 + string.prototype.trim: 1.2.10 2182 + string.prototype.trimend: 1.0.9 1864 2183 string.prototype.trimstart: 1.0.8 1865 - typed-array-buffer: 1.0.2 1866 - typed-array-byte-length: 1.0.1 1867 - typed-array-byte-offset: 1.0.2 1868 - typed-array-length: 1.0.6 1869 - unbox-primitive: 1.0.2 1870 - which-typed-array: 1.1.15 2184 + typed-array-buffer: 1.0.3 2185 + typed-array-byte-length: 1.0.3 2186 + typed-array-byte-offset: 1.0.4 2187 + typed-array-length: 1.0.7 2188 + unbox-primitive: 1.1.0 2189 + which-typed-array: 1.1.19 1871 2190 1872 - es-define-property@1.0.0: 1873 - dependencies: 1874 - get-intrinsic: 1.2.4 2191 + es-define-property@1.0.1: {} 1875 2192 1876 2193 es-errors@1.3.0: {} 1877 2194 1878 - es-iterator-helpers@1.1.0: 2195 + es-iterator-helpers@1.2.1: 1879 2196 dependencies: 1880 - call-bind: 1.0.7 2197 + call-bind: 1.0.8 2198 + call-bound: 1.0.4 1881 2199 define-properties: 1.2.1 1882 - es-abstract: 1.23.3 2200 + es-abstract: 1.23.9 1883 2201 es-errors: 1.3.0 1884 - es-set-tostringtag: 2.0.3 2202 + es-set-tostringtag: 2.1.0 1885 2203 function-bind: 1.1.2 1886 - get-intrinsic: 1.2.4 2204 + get-intrinsic: 1.3.0 1887 2205 globalthis: 1.0.4 2206 + gopd: 1.2.0 1888 2207 has-property-descriptors: 1.0.2 1889 - has-proto: 1.0.3 1890 - has-symbols: 1.0.3 1891 - internal-slot: 1.0.7 1892 - iterator.prototype: 1.1.3 1893 - safe-array-concat: 1.1.2 2208 + has-proto: 1.2.0 2209 + has-symbols: 1.1.0 2210 + internal-slot: 1.1.0 2211 + iterator.prototype: 1.1.5 2212 + safe-array-concat: 1.1.3 1894 2213 1895 - es-object-atoms@1.0.0: 2214 + es-object-atoms@1.1.1: 1896 2215 dependencies: 1897 2216 es-errors: 1.3.0 1898 2217 1899 - es-set-tostringtag@2.0.3: 2218 + es-set-tostringtag@2.1.0: 1900 2219 dependencies: 1901 - get-intrinsic: 1.2.4 2220 + es-errors: 1.3.0 2221 + get-intrinsic: 1.3.0 1902 2222 has-tostringtag: 1.0.2 1903 2223 hasown: 2.0.2 1904 2224 1905 - es-shim-unscopables@1.0.2: 2225 + es-shim-unscopables@1.1.0: 1906 2226 dependencies: 1907 2227 hasown: 2.0.2 1908 2228 1909 - es-to-primitive@1.2.1: 2229 + es-to-primitive@1.3.0: 1910 2230 dependencies: 1911 2231 is-callable: 1.2.7 1912 - is-date-object: 1.0.5 1913 - is-symbol: 1.0.4 2232 + is-date-object: 1.1.0 2233 + is-symbol: 1.1.1 1914 2234 1915 2235 esbuild-copy-static-files@0.1.0: {} 1916 2236 ··· 1941 2261 1942 2262 escape-string-regexp@4.0.0: {} 1943 2263 1944 - eslint-config-prettier@9.1.0(eslint@9.12.0): 2264 + eslint-config-prettier@9.1.0(eslint@9.23.0(jiti@2.4.2)): 1945 2265 dependencies: 1946 - eslint: 9.12.0 2266 + eslint: 9.23.0(jiti@2.4.2) 1947 2267 1948 - eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.1.0): 2268 + eslint-plugin-prettier@5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.1.0): 1949 2269 dependencies: 1950 - eslint: 9.12.0 2270 + eslint: 9.23.0(jiti@2.4.2) 1951 2271 prettier: 3.1.0 1952 2272 prettier-linter-helpers: 1.0.0 1953 - synckit: 0.9.2 2273 + synckit: 0.11.1 1954 2274 optionalDependencies: 1955 - eslint-config-prettier: 9.1.0(eslint@9.12.0) 2275 + '@types/eslint': 9.6.1 2276 + eslint-config-prettier: 9.1.0(eslint@9.23.0(jiti@2.4.2)) 1956 2277 1957 - eslint-plugin-react@7.37.1(eslint@9.12.0): 2278 + eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.4.2)): 1958 2279 dependencies: 1959 2280 array-includes: 3.1.8 1960 2281 array.prototype.findlast: 1.2.5 1961 - array.prototype.flatmap: 1.3.2 2282 + array.prototype.flatmap: 1.3.3 1962 2283 array.prototype.tosorted: 1.1.4 1963 2284 doctrine: 2.1.0 1964 - es-iterator-helpers: 1.1.0 1965 - eslint: 9.12.0 2285 + es-iterator-helpers: 1.2.1 2286 + eslint: 9.23.0(jiti@2.4.2) 1966 2287 estraverse: 5.3.0 1967 2288 hasown: 2.0.2 1968 2289 jsx-ast-utils: 3.3.5 1969 2290 minimatch: 3.1.2 1970 - object.entries: 1.1.8 2291 + object.entries: 1.1.9 1971 2292 object.fromentries: 2.0.8 1972 - object.values: 1.2.0 2293 + object.values: 1.2.1 1973 2294 prop-types: 15.8.1 1974 2295 resolve: 2.0.0-next.5 1975 2296 semver: 6.3.1 1976 - string.prototype.matchall: 4.0.11 2297 + string.prototype.matchall: 4.0.12 1977 2298 string.prototype.repeat: 1.0.0 1978 2299 1979 - eslint-scope@8.1.0: 2300 + eslint-scope@8.3.0: 1980 2301 dependencies: 1981 2302 esrecurse: 4.3.0 1982 2303 estraverse: 5.3.0 1983 2304 1984 2305 eslint-visitor-keys@3.4.3: {} 1985 2306 1986 - eslint-visitor-keys@4.1.0: {} 2307 + eslint-visitor-keys@4.2.0: {} 1987 2308 1988 - eslint@9.12.0: 2309 + eslint@9.23.0(jiti@2.4.2): 1989 2310 dependencies: 1990 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 1991 - '@eslint-community/regexpp': 4.11.1 1992 - '@eslint/config-array': 0.18.0 1993 - '@eslint/core': 0.6.0 1994 - '@eslint/eslintrc': 3.1.0 1995 - '@eslint/js': 9.12.0 1996 - '@eslint/plugin-kit': 0.2.0 1997 - '@humanfs/node': 0.16.5 2311 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) 2312 + '@eslint-community/regexpp': 4.12.1 2313 + '@eslint/config-array': 0.19.2 2314 + '@eslint/config-helpers': 0.2.1 2315 + '@eslint/core': 0.12.0 2316 + '@eslint/eslintrc': 3.3.1 2317 + '@eslint/js': 9.23.0 2318 + '@eslint/plugin-kit': 0.2.8 2319 + '@humanfs/node': 0.16.6 1998 2320 '@humanwhocodes/module-importer': 1.0.1 1999 - '@humanwhocodes/retry': 0.3.1 2321 + '@humanwhocodes/retry': 0.4.2 2000 2322 '@types/estree': 1.0.6 2001 2323 '@types/json-schema': 7.0.15 2002 2324 ajv: 6.12.6 2003 2325 chalk: 4.1.2 2004 - cross-spawn: 7.0.3 2005 - debug: 4.3.4 2326 + cross-spawn: 7.0.6 2327 + debug: 4.4.0 2006 2328 escape-string-regexp: 4.0.0 2007 - eslint-scope: 8.1.0 2008 - eslint-visitor-keys: 4.1.0 2009 - espree: 10.2.0 2010 - esquery: 1.5.0 2329 + eslint-scope: 8.3.0 2330 + eslint-visitor-keys: 4.2.0 2331 + espree: 10.3.0 2332 + esquery: 1.6.0 2011 2333 esutils: 2.0.3 2012 2334 fast-deep-equal: 3.1.3 2013 2335 file-entry-cache: 8.0.0 2014 2336 find-up: 5.0.0 2015 2337 glob-parent: 6.0.2 2016 - ignore: 5.3.0 2338 + ignore: 5.3.2 2017 2339 imurmurhash: 0.1.4 2018 2340 is-glob: 4.0.3 2019 2341 json-stable-stringify-without-jsonify: 1.0.1 ··· 2021 2343 minimatch: 3.1.2 2022 2344 natural-compare: 1.4.0 2023 2345 optionator: 0.9.3 2024 - text-table: 0.2.0 2346 + optionalDependencies: 2347 + jiti: 2.4.2 2025 2348 transitivePeerDependencies: 2026 2349 - supports-color 2027 2350 2028 - espree@10.2.0: 2351 + espree@10.3.0: 2029 2352 dependencies: 2030 - acorn: 8.12.1 2031 - acorn-jsx: 5.3.2(acorn@8.12.1) 2032 - eslint-visitor-keys: 4.1.0 2353 + acorn: 8.14.1 2354 + acorn-jsx: 5.3.2(acorn@8.14.1) 2355 + eslint-visitor-keys: 4.2.0 2033 2356 2034 - esquery@1.5.0: 2357 + esquery@1.6.0: 2035 2358 dependencies: 2036 2359 estraverse: 5.3.0 2037 2360 ··· 2074 2397 dependencies: 2075 2398 reusify: 1.0.4 2076 2399 2400 + fdir@6.4.3(picomatch@4.0.2): 2401 + optionalDependencies: 2402 + picomatch: 4.0.2 2403 + 2077 2404 file-entry-cache@8.0.0: 2078 2405 dependencies: 2079 2406 flat-cache: 4.0.1 ··· 2081 2408 fill-range@7.1.1: 2082 2409 dependencies: 2083 2410 to-regex-range: 5.0.1 2411 + 2412 + find-up-simple@1.0.1: {} 2084 2413 2085 2414 find-up@5.0.0: 2086 2415 dependencies: ··· 2094 2423 2095 2424 flatted@3.2.9: {} 2096 2425 2097 - for-each@0.3.3: 2426 + for-each@0.3.5: 2098 2427 dependencies: 2099 2428 is-callable: 1.2.7 2100 2429 2101 2430 function-bind@1.1.2: {} 2102 2431 2103 - function.prototype.name@1.1.6: 2432 + function.prototype.name@1.1.8: 2104 2433 dependencies: 2105 - call-bind: 1.0.7 2434 + call-bind: 1.0.8 2435 + call-bound: 1.0.4 2106 2436 define-properties: 1.2.1 2107 - es-abstract: 1.23.3 2108 2437 functions-have-names: 1.2.3 2438 + hasown: 2.0.2 2439 + is-callable: 1.2.7 2109 2440 2110 2441 functions-have-names@1.2.3: {} 2111 2442 2112 - get-intrinsic@1.2.4: 2443 + fzf@0.5.2: {} 2444 + 2445 + get-intrinsic@1.3.0: 2113 2446 dependencies: 2447 + call-bind-apply-helpers: 1.0.2 2448 + es-define-property: 1.0.1 2114 2449 es-errors: 1.3.0 2450 + es-object-atoms: 1.1.1 2115 2451 function-bind: 1.1.2 2116 - has-proto: 1.0.3 2117 - has-symbols: 1.0.3 2452 + get-proto: 1.0.1 2453 + gopd: 1.2.0 2454 + has-symbols: 1.1.0 2118 2455 hasown: 2.0.2 2456 + math-intrinsics: 1.1.0 2119 2457 2120 - get-symbol-description@1.0.2: 2458 + get-proto@1.0.1: 2459 + dependencies: 2460 + dunder-proto: 1.0.1 2461 + es-object-atoms: 1.1.1 2462 + 2463 + get-symbol-description@1.1.0: 2121 2464 dependencies: 2122 - call-bind: 1.0.7 2465 + call-bound: 1.0.4 2123 2466 es-errors: 1.3.0 2124 - get-intrinsic: 1.2.4 2467 + get-intrinsic: 1.3.0 2125 2468 2126 2469 glob-parent@5.1.2: 2127 2470 dependencies: ··· 2136 2479 globalthis@1.0.4: 2137 2480 dependencies: 2138 2481 define-properties: 1.2.1 2139 - gopd: 1.0.1 2482 + gopd: 1.2.0 2140 2483 2141 - gopd@1.0.1: 2142 - dependencies: 2143 - get-intrinsic: 1.2.4 2484 + gopd@1.2.0: {} 2144 2485 2145 2486 graphemer@1.4.0: {} 2146 2487 2147 - has-bigints@1.0.2: {} 2488 + has-bigints@1.1.0: {} 2148 2489 2149 2490 has-flag@4.0.0: {} 2150 2491 2151 2492 has-property-descriptors@1.0.2: 2152 2493 dependencies: 2153 - es-define-property: 1.0.0 2494 + es-define-property: 1.0.1 2154 2495 2155 - has-proto@1.0.3: {} 2496 + has-proto@1.2.0: 2497 + dependencies: 2498 + dunder-proto: 1.0.1 2156 2499 2157 - has-symbols@1.0.3: {} 2500 + has-symbols@1.1.0: {} 2158 2501 2159 2502 has-tostringtag@1.0.2: 2160 2503 dependencies: 2161 - has-symbols: 1.0.3 2504 + has-symbols: 1.1.0 2162 2505 2163 2506 hasown@2.0.2: 2164 2507 dependencies: ··· 2167 2510 husky@8.0.3: {} 2168 2511 2169 2512 ieee754@1.2.1: {} 2170 - 2171 - ignore@5.3.0: {} 2172 2513 2173 2514 ignore@5.3.2: {} 2174 2515 ··· 2179 2520 2180 2521 imurmurhash@0.1.4: {} 2181 2522 2182 - internal-slot@1.0.7: 2523 + internal-slot@1.1.0: 2183 2524 dependencies: 2184 2525 es-errors: 1.3.0 2185 2526 hasown: 2.0.2 2186 - side-channel: 1.0.6 2527 + side-channel: 1.1.0 2187 2528 2188 - is-array-buffer@3.0.4: 2529 + is-array-buffer@3.0.5: 2189 2530 dependencies: 2190 - call-bind: 1.0.7 2191 - get-intrinsic: 1.2.4 2531 + call-bind: 1.0.8 2532 + call-bound: 1.0.4 2533 + get-intrinsic: 1.3.0 2192 2534 2193 - is-async-function@2.0.0: 2535 + is-async-function@2.1.1: 2194 2536 dependencies: 2537 + async-function: 1.0.0 2538 + call-bound: 1.0.4 2539 + get-proto: 1.0.1 2195 2540 has-tostringtag: 1.0.2 2541 + safe-regex-test: 1.1.0 2196 2542 2197 - is-bigint@1.0.4: 2543 + is-bigint@1.1.0: 2198 2544 dependencies: 2199 - has-bigints: 1.0.2 2545 + has-bigints: 1.1.0 2200 2546 2201 - is-boolean-object@1.1.2: 2547 + is-boolean-object@1.2.2: 2202 2548 dependencies: 2203 - call-bind: 1.0.7 2549 + call-bound: 1.0.4 2204 2550 has-tostringtag: 1.0.2 2205 2551 2206 2552 is-callable@1.2.7: {} 2207 2553 2208 - is-core-module@2.15.1: 2554 + is-core-module@2.16.1: 2209 2555 dependencies: 2210 2556 hasown: 2.0.2 2211 2557 2212 - is-data-view@1.0.1: 2558 + is-data-view@1.0.2: 2213 2559 dependencies: 2214 - is-typed-array: 1.1.13 2560 + call-bound: 1.0.4 2561 + get-intrinsic: 1.3.0 2562 + is-typed-array: 1.1.15 2215 2563 2216 - is-date-object@1.0.5: 2564 + is-date-object@1.1.0: 2217 2565 dependencies: 2566 + call-bound: 1.0.4 2218 2567 has-tostringtag: 1.0.2 2219 2568 2220 2569 is-extglob@2.1.1: {} 2221 2570 2222 - is-finalizationregistry@1.0.2: 2571 + is-finalizationregistry@1.1.1: 2223 2572 dependencies: 2224 - call-bind: 1.0.7 2573 + call-bound: 1.0.4 2225 2574 2226 - is-generator-function@1.0.10: 2575 + is-generator-function@1.1.0: 2227 2576 dependencies: 2577 + call-bound: 1.0.4 2578 + get-proto: 1.0.1 2228 2579 has-tostringtag: 1.0.2 2580 + safe-regex-test: 1.1.0 2229 2581 2230 2582 is-glob@4.0.3: 2231 2583 dependencies: ··· 2233 2585 2234 2586 is-map@2.0.3: {} 2235 2587 2236 - is-negative-zero@2.0.3: {} 2237 - 2238 - is-number-object@1.0.7: 2588 + is-number-object@1.1.1: 2239 2589 dependencies: 2590 + call-bound: 1.0.4 2240 2591 has-tostringtag: 1.0.2 2241 2592 2242 2593 is-number@7.0.0: {} 2243 2594 2244 - is-regex@1.1.4: 2595 + is-regex@1.2.1: 2245 2596 dependencies: 2246 - call-bind: 1.0.7 2597 + call-bound: 1.0.4 2598 + gopd: 1.2.0 2247 2599 has-tostringtag: 1.0.2 2600 + hasown: 2.0.2 2248 2601 2249 2602 is-set@2.0.3: {} 2250 2603 2251 - is-shared-array-buffer@1.0.3: 2604 + is-shared-array-buffer@1.0.4: 2252 2605 dependencies: 2253 - call-bind: 1.0.7 2606 + call-bound: 1.0.4 2254 2607 2255 - is-string@1.0.7: 2608 + is-string@1.1.1: 2256 2609 dependencies: 2610 + call-bound: 1.0.4 2257 2611 has-tostringtag: 1.0.2 2258 2612 2259 - is-symbol@1.0.4: 2613 + is-symbol@1.1.1: 2260 2614 dependencies: 2261 - has-symbols: 1.0.3 2615 + call-bound: 1.0.4 2616 + has-symbols: 1.1.0 2617 + safe-regex-test: 1.1.0 2262 2618 2263 - is-typed-array@1.1.13: 2619 + is-typed-array@1.1.15: 2264 2620 dependencies: 2265 - which-typed-array: 1.1.15 2621 + which-typed-array: 1.1.19 2266 2622 2267 2623 is-weakmap@2.0.2: {} 2268 2624 2269 - is-weakref@1.0.2: 2625 + is-weakref@1.1.1: 2270 2626 dependencies: 2271 - call-bind: 1.0.7 2627 + call-bound: 1.0.4 2272 2628 2273 - is-weakset@2.0.3: 2629 + is-weakset@2.0.4: 2274 2630 dependencies: 2275 - call-bind: 1.0.7 2276 - get-intrinsic: 1.2.4 2631 + call-bound: 1.0.4 2632 + get-intrinsic: 1.3.0 2277 2633 2278 2634 isarray@2.0.5: {} 2279 2635 2280 2636 isexe@2.0.0: {} 2281 2637 2282 - iterator.prototype@1.1.3: 2638 + iterator.prototype@1.1.5: 2283 2639 dependencies: 2284 - define-properties: 1.2.1 2285 - get-intrinsic: 1.2.4 2286 - has-symbols: 1.0.3 2287 - reflect.getprototypeof: 1.0.6 2640 + define-data-property: 1.1.4 2641 + es-object-atoms: 1.1.1 2642 + get-intrinsic: 1.3.0 2643 + get-proto: 1.0.1 2644 + has-symbols: 1.1.0 2288 2645 set-function-name: 2.0.2 2646 + 2647 + jiti@2.4.2: {} 2289 2648 2290 2649 js-tokens@4.0.0: {} 2291 2650 ··· 2302 2661 jsx-ast-utils@3.3.5: 2303 2662 dependencies: 2304 2663 array-includes: 3.1.8 2305 - array.prototype.flat: 1.3.2 2306 - object.assign: 4.1.5 2307 - object.values: 1.2.0 2664 + array.prototype.flat: 1.3.3 2665 + object.assign: 4.1.7 2666 + object.values: 1.2.1 2308 2667 2309 2668 keyv@4.5.4: 2310 2669 dependencies: ··· 2325 2684 dependencies: 2326 2685 js-tokens: 4.0.0 2327 2686 2687 + math-intrinsics@1.1.0: {} 2688 + 2328 2689 merge2@1.4.1: {} 2329 2690 2330 2691 meriyah@6.0.1: {} ··· 2335 2696 dependencies: 2336 2697 braces: 3.0.3 2337 2698 picomatch: 2.3.1 2699 + 2700 + mimic-function@5.0.1: {} 2338 2701 2339 2702 minimatch@3.1.2: 2340 2703 dependencies: ··· 2344 2707 dependencies: 2345 2708 brace-expansion: 2.0.1 2346 2709 2347 - ms@2.1.2: {} 2710 + ms@2.1.3: {} 2348 2711 2349 2712 nanotar@0.1.1: {} 2350 2713 2351 2714 natural-compare@1.4.0: {} 2715 + 2716 + node-fetch-native@1.6.6: {} 2352 2717 2353 2718 object-assign@4.1.1: {} 2354 2719 2355 - object-inspect@1.13.2: {} 2720 + object-inspect@1.13.4: {} 2356 2721 2357 2722 object-keys@1.1.1: {} 2358 2723 2359 - object.assign@4.1.5: 2724 + object.assign@4.1.7: 2360 2725 dependencies: 2361 - call-bind: 1.0.7 2726 + call-bind: 1.0.8 2727 + call-bound: 1.0.4 2362 2728 define-properties: 1.2.1 2363 - has-symbols: 1.0.3 2729 + es-object-atoms: 1.1.1 2730 + has-symbols: 1.1.0 2364 2731 object-keys: 1.1.1 2365 2732 2366 - object.entries@1.1.8: 2733 + object.entries@1.1.9: 2367 2734 dependencies: 2368 - call-bind: 1.0.7 2735 + call-bind: 1.0.8 2736 + call-bound: 1.0.4 2369 2737 define-properties: 1.2.1 2370 - es-object-atoms: 1.0.0 2738 + es-object-atoms: 1.1.1 2371 2739 2372 2740 object.fromentries@2.0.8: 2373 2741 dependencies: 2374 - call-bind: 1.0.7 2742 + call-bind: 1.0.8 2375 2743 define-properties: 1.2.1 2376 - es-abstract: 1.23.3 2377 - es-object-atoms: 1.0.0 2744 + es-abstract: 1.23.9 2745 + es-object-atoms: 1.1.1 2378 2746 2379 - object.values@1.2.0: 2747 + object.values@1.2.1: 2380 2748 dependencies: 2381 - call-bind: 1.0.7 2749 + call-bind: 1.0.8 2750 + call-bound: 1.0.4 2382 2751 define-properties: 1.2.1 2383 - es-object-atoms: 1.0.0 2752 + es-object-atoms: 1.1.1 2753 + 2754 + ofetch@1.4.1: 2755 + dependencies: 2756 + destr: 2.0.4 2757 + node-fetch-native: 1.6.6 2758 + ufo: 1.5.4 2759 + 2760 + onetime@7.0.0: 2761 + dependencies: 2762 + mimic-function: 5.0.1 2384 2763 2385 2764 optionator@0.9.3: 2386 2765 dependencies: ··· 2391 2770 prelude-ls: 1.2.1 2392 2771 type-check: 0.4.0 2393 2772 2773 + own-keys@1.0.1: 2774 + dependencies: 2775 + get-intrinsic: 1.3.0 2776 + object-keys: 1.1.1 2777 + safe-push-apply: 1.0.0 2778 + 2394 2779 p-limit@3.1.0: 2395 2780 dependencies: 2396 2781 yocto-queue: 0.1.0 ··· 2398 2783 p-locate@5.0.0: 2399 2784 dependencies: 2400 2785 p-limit: 3.1.0 2786 + 2787 + package-manager-detector@1.1.0: {} 2401 2788 2402 2789 parent-module@1.0.1: 2403 2790 dependencies: ··· 2409 2796 2410 2797 path-parse@1.0.7: {} 2411 2798 2799 + pathe@2.0.3: {} 2800 + 2412 2801 picomatch@2.3.1: {} 2413 2802 2414 - possible-typed-array-names@1.0.0: {} 2803 + picomatch@4.0.2: {} 2804 + 2805 + pnpm-workspace-yaml@0.3.1: 2806 + dependencies: 2807 + yaml: 2.7.1 2808 + 2809 + possible-typed-array-names@1.1.0: {} 2415 2810 2416 2811 prelude-ls@1.2.1: {} 2417 2812 ··· 2431 2826 2432 2827 punycode@2.3.1: {} 2433 2828 2829 + quansync@0.2.10: {} 2830 + 2434 2831 queue-microtask@1.2.3: {} 2435 2832 2436 2833 react-is@16.13.1: {} ··· 2443 2840 process: 0.11.10 2444 2841 string_decoder: 1.3.0 2445 2842 2446 - reflect.getprototypeof@1.0.6: 2843 + reflect.getprototypeof@1.0.10: 2447 2844 dependencies: 2448 - call-bind: 1.0.7 2845 + call-bind: 1.0.8 2449 2846 define-properties: 1.2.1 2450 - es-abstract: 1.23.3 2847 + es-abstract: 1.23.9 2451 2848 es-errors: 1.3.0 2452 - get-intrinsic: 1.2.4 2453 - globalthis: 1.0.4 2454 - which-builtin-type: 1.1.4 2849 + es-object-atoms: 1.1.1 2850 + get-intrinsic: 1.3.0 2851 + get-proto: 1.0.1 2852 + which-builtin-type: 1.2.1 2455 2853 2456 - regexp.prototype.flags@1.5.3: 2854 + regexp.prototype.flags@1.5.4: 2457 2855 dependencies: 2458 - call-bind: 1.0.7 2856 + call-bind: 1.0.8 2459 2857 define-properties: 1.2.1 2460 2858 es-errors: 1.3.0 2859 + get-proto: 1.0.1 2860 + gopd: 1.2.0 2461 2861 set-function-name: 2.0.2 2462 2862 2463 2863 resolve-from@4.0.0: {} 2464 2864 2465 2865 resolve@2.0.0-next.5: 2466 2866 dependencies: 2467 - is-core-module: 2.15.1 2867 + is-core-module: 2.16.1 2468 2868 path-parse: 1.0.7 2469 2869 supports-preserve-symlinks-flag: 1.0.0 2870 + 2871 + restore-cursor@5.1.0: 2872 + dependencies: 2873 + onetime: 7.0.0 2874 + signal-exit: 4.1.0 2470 2875 2471 2876 reusify@1.0.4: {} 2472 2877 ··· 2474 2879 dependencies: 2475 2880 queue-microtask: 1.2.3 2476 2881 2477 - safe-array-concat@1.1.2: 2882 + safe-array-concat@1.1.3: 2478 2883 dependencies: 2479 - call-bind: 1.0.7 2480 - get-intrinsic: 1.2.4 2481 - has-symbols: 1.0.3 2884 + call-bind: 1.0.8 2885 + call-bound: 1.0.4 2886 + get-intrinsic: 1.3.0 2887 + has-symbols: 1.1.0 2482 2888 isarray: 2.0.5 2483 2889 2484 - safe-buffer@5.1.2: {} 2890 + safe-buffer@5.2.1: {} 2485 2891 2486 - safe-buffer@5.2.1: {} 2892 + safe-push-apply@1.0.0: 2893 + dependencies: 2894 + es-errors: 1.3.0 2895 + isarray: 2.0.5 2487 2896 2488 - safe-regex-test@1.0.3: 2897 + safe-regex-test@1.1.0: 2489 2898 dependencies: 2490 - call-bind: 1.0.7 2899 + call-bound: 1.0.4 2491 2900 es-errors: 1.3.0 2492 - is-regex: 1.1.4 2901 + is-regex: 1.2.1 2493 2902 2494 2903 semver@6.3.1: {} 2495 2904 2496 - semver@7.6.3: {} 2905 + semver@7.7.1: {} 2497 2906 2498 2907 set-function-length@1.2.2: 2499 2908 dependencies: 2500 2909 define-data-property: 1.1.4 2501 2910 es-errors: 1.3.0 2502 2911 function-bind: 1.1.2 2503 - get-intrinsic: 1.2.4 2504 - gopd: 1.0.1 2912 + get-intrinsic: 1.3.0 2913 + gopd: 1.2.0 2505 2914 has-property-descriptors: 1.0.2 2506 2915 2507 2916 set-function-name@2.0.2: ··· 2511 2920 functions-have-names: 1.2.3 2512 2921 has-property-descriptors: 1.0.2 2513 2922 2923 + set-proto@1.0.0: 2924 + dependencies: 2925 + dunder-proto: 1.0.1 2926 + es-errors: 1.3.0 2927 + es-object-atoms: 1.1.1 2928 + 2514 2929 shebang-command@2.0.0: 2515 2930 dependencies: 2516 2931 shebang-regex: 3.0.0 2517 2932 2518 2933 shebang-regex@3.0.0: {} 2519 2934 2520 - side-channel@1.0.6: 2935 + side-channel-list@1.0.0: 2521 2936 dependencies: 2522 - call-bind: 1.0.7 2523 2937 es-errors: 1.3.0 2524 - get-intrinsic: 1.2.4 2525 - object-inspect: 1.13.2 2938 + object-inspect: 1.13.4 2939 + 2940 + side-channel-map@1.0.1: 2941 + dependencies: 2942 + call-bound: 1.0.4 2943 + es-errors: 1.3.0 2944 + get-intrinsic: 1.3.0 2945 + object-inspect: 1.13.4 2946 + 2947 + side-channel-weakmap@1.0.2: 2948 + dependencies: 2949 + call-bound: 1.0.4 2950 + es-errors: 1.3.0 2951 + get-intrinsic: 1.3.0 2952 + object-inspect: 1.13.4 2953 + side-channel-map: 1.0.1 2954 + 2955 + side-channel@1.1.0: 2956 + dependencies: 2957 + es-errors: 1.3.0 2958 + object-inspect: 1.13.4 2959 + side-channel-list: 1.0.0 2960 + side-channel-map: 1.0.1 2961 + side-channel-weakmap: 1.0.2 2962 + 2963 + signal-exit@4.1.0: {} 2526 2964 2527 2965 standalone-electron-types@1.0.0: 2528 2966 dependencies: 2529 2967 '@types/node': 18.17.17 2530 2968 2531 - string.prototype.matchall@4.0.11: 2969 + string.prototype.matchall@4.0.12: 2532 2970 dependencies: 2533 - call-bind: 1.0.7 2971 + call-bind: 1.0.8 2972 + call-bound: 1.0.4 2534 2973 define-properties: 1.2.1 2535 - es-abstract: 1.23.3 2974 + es-abstract: 1.23.9 2536 2975 es-errors: 1.3.0 2537 - es-object-atoms: 1.0.0 2538 - get-intrinsic: 1.2.4 2539 - gopd: 1.0.1 2540 - has-symbols: 1.0.3 2541 - internal-slot: 1.0.7 2542 - regexp.prototype.flags: 1.5.3 2976 + es-object-atoms: 1.1.1 2977 + get-intrinsic: 1.3.0 2978 + gopd: 1.2.0 2979 + has-symbols: 1.1.0 2980 + internal-slot: 1.1.0 2981 + regexp.prototype.flags: 1.5.4 2543 2982 set-function-name: 2.0.2 2544 - side-channel: 1.0.6 2983 + side-channel: 1.1.0 2545 2984 2546 2985 string.prototype.repeat@1.0.0: 2547 2986 dependencies: 2548 2987 define-properties: 1.2.1 2549 - es-abstract: 1.23.3 2988 + es-abstract: 1.23.9 2550 2989 2551 - string.prototype.trim@1.2.9: 2990 + string.prototype.trim@1.2.10: 2552 2991 dependencies: 2553 - call-bind: 1.0.7 2992 + call-bind: 1.0.8 2993 + call-bound: 1.0.4 2994 + define-data-property: 1.1.4 2554 2995 define-properties: 1.2.1 2555 - es-abstract: 1.23.3 2556 - es-object-atoms: 1.0.0 2996 + es-abstract: 1.23.9 2997 + es-object-atoms: 1.1.1 2998 + has-property-descriptors: 1.0.2 2557 2999 2558 - string.prototype.trimend@1.0.8: 3000 + string.prototype.trimend@1.0.9: 2559 3001 dependencies: 2560 - call-bind: 1.0.7 3002 + call-bind: 1.0.8 3003 + call-bound: 1.0.4 2561 3004 define-properties: 1.2.1 2562 - es-object-atoms: 1.0.0 3005 + es-object-atoms: 1.1.1 2563 3006 2564 3007 string.prototype.trimstart@1.0.8: 2565 3008 dependencies: 2566 - call-bind: 1.0.7 3009 + call-bind: 1.0.8 2567 3010 define-properties: 1.2.1 2568 - es-object-atoms: 1.0.0 3011 + es-object-atoms: 1.1.1 2569 3012 2570 3013 string_decoder@1.3.0: 2571 3014 dependencies: ··· 2579 3022 2580 3023 supports-preserve-symlinks-flag@1.0.0: {} 2581 3024 2582 - synckit@0.9.2: 3025 + synckit@0.11.1: 2583 3026 dependencies: 2584 - '@pkgr/core': 0.1.1 2585 - tslib: 2.7.0 3027 + '@pkgr/core': 0.2.0 3028 + tslib: 2.8.1 2586 3029 2587 - text-table@0.2.0: {} 3030 + taze@19.0.4: 3031 + dependencies: 3032 + '@antfu/ni': 24.3.0 3033 + cac: 6.7.14 3034 + find-up-simple: 1.0.1 3035 + ofetch: 1.4.1 3036 + package-manager-detector: 1.1.0 3037 + pathe: 2.0.3 3038 + pnpm-workspace-yaml: 0.3.1 3039 + restore-cursor: 5.1.0 3040 + tinyexec: 1.0.1 3041 + tinyglobby: 0.2.12 3042 + unconfig: 7.3.1 3043 + yaml: 2.7.1 3044 + 3045 + tinyexec@1.0.1: {} 3046 + 3047 + tinyglobby@0.2.12: 3048 + dependencies: 3049 + fdir: 6.4.3(picomatch@4.0.2) 3050 + picomatch: 4.0.2 2588 3051 2589 3052 to-regex-range@5.0.1: 2590 3053 dependencies: 2591 3054 is-number: 7.0.0 2592 3055 2593 - ts-api-utils@1.3.0(typescript@5.3.2): 3056 + ts-api-utils@2.1.0(typescript@5.8.2): 2594 3057 dependencies: 2595 - typescript: 5.3.2 3058 + typescript: 5.8.2 2596 3059 2597 - tslib@2.7.0: {} 3060 + tslib@2.8.1: {} 2598 3061 2599 3062 type-check@0.4.0: 2600 3063 dependencies: 2601 3064 prelude-ls: 1.2.1 2602 3065 2603 - typed-array-buffer@1.0.2: 3066 + typed-array-buffer@1.0.3: 2604 3067 dependencies: 2605 - call-bind: 1.0.7 3068 + call-bound: 1.0.4 2606 3069 es-errors: 1.3.0 2607 - is-typed-array: 1.1.13 3070 + is-typed-array: 1.1.15 2608 3071 2609 - typed-array-byte-length@1.0.1: 3072 + typed-array-byte-length@1.0.3: 2610 3073 dependencies: 2611 - call-bind: 1.0.7 2612 - for-each: 0.3.3 2613 - gopd: 1.0.1 2614 - has-proto: 1.0.3 2615 - is-typed-array: 1.1.13 3074 + call-bind: 1.0.8 3075 + for-each: 0.3.5 3076 + gopd: 1.2.0 3077 + has-proto: 1.2.0 3078 + is-typed-array: 1.1.15 2616 3079 2617 - typed-array-byte-offset@1.0.2: 3080 + typed-array-byte-offset@1.0.4: 2618 3081 dependencies: 2619 3082 available-typed-arrays: 1.0.7 2620 - call-bind: 1.0.7 2621 - for-each: 0.3.3 2622 - gopd: 1.0.1 2623 - has-proto: 1.0.3 2624 - is-typed-array: 1.1.13 3083 + call-bind: 1.0.8 3084 + for-each: 0.3.5 3085 + gopd: 1.2.0 3086 + has-proto: 1.2.0 3087 + is-typed-array: 1.1.15 3088 + reflect.getprototypeof: 1.0.10 2625 3089 2626 - typed-array-length@1.0.6: 3090 + typed-array-length@1.0.7: 2627 3091 dependencies: 2628 - call-bind: 1.0.7 2629 - for-each: 0.3.3 2630 - gopd: 1.0.1 2631 - has-proto: 1.0.3 2632 - is-typed-array: 1.1.13 2633 - possible-typed-array-names: 1.0.0 3092 + call-bind: 1.0.8 3093 + for-each: 0.3.5 3094 + gopd: 1.2.0 3095 + is-typed-array: 1.1.15 3096 + possible-typed-array-names: 1.1.0 3097 + reflect.getprototypeof: 1.0.10 2634 3098 2635 - typescript-eslint@8.8.1(eslint@9.12.0)(typescript@5.3.2): 3099 + typescript-eslint@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): 2636 3100 dependencies: 2637 - '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.3.2))(eslint@9.12.0)(typescript@5.3.2) 2638 - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 2639 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 2640 - optionalDependencies: 2641 - typescript: 5.3.2 3101 + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 3102 + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 3103 + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) 3104 + eslint: 9.23.0(jiti@2.4.2) 3105 + typescript: 5.8.2 2642 3106 transitivePeerDependencies: 2643 - - eslint 2644 3107 - supports-color 2645 3108 2646 - typescript@5.3.2: {} 3109 + typescript@5.8.2: {} 2647 3110 2648 - unbox-primitive@1.0.2: 3111 + ufo@1.5.4: {} 3112 + 3113 + unbox-primitive@1.1.0: 2649 3114 dependencies: 2650 - call-bind: 1.0.7 2651 - has-bigints: 1.0.2 2652 - has-symbols: 1.0.3 2653 - which-boxed-primitive: 1.0.2 3115 + call-bound: 1.0.4 3116 + has-bigints: 1.1.0 3117 + has-symbols: 1.1.0 3118 + which-boxed-primitive: 1.1.1 3119 + 3120 + unconfig@7.3.1: 3121 + dependencies: 3122 + '@quansync/fs': 0.1.2 3123 + defu: 6.1.4 3124 + jiti: 2.4.2 3125 + quansync: 0.2.10 2654 3126 2655 3127 undici-types@6.20.0: {} 3128 + 3129 + undici-types@6.21.0: {} 2656 3130 2657 3131 uri-js@4.4.1: 2658 3132 dependencies: 2659 3133 punycode: 2.3.1 2660 3134 2661 - utilium@1.1.3: 3135 + utilium@1.10.1: 2662 3136 dependencies: 2663 3137 eventemitter3: 5.0.1 2664 3138 optionalDependencies: 2665 3139 '@xterm/xterm': 5.5.0 2666 3140 2667 - which-boxed-primitive@1.0.2: 3141 + which-boxed-primitive@1.1.1: 2668 3142 dependencies: 2669 - is-bigint: 1.0.4 2670 - is-boolean-object: 1.1.2 2671 - is-number-object: 1.0.7 2672 - is-string: 1.0.7 2673 - is-symbol: 1.0.4 3143 + is-bigint: 1.1.0 3144 + is-boolean-object: 1.2.2 3145 + is-number-object: 1.1.1 3146 + is-string: 1.1.1 3147 + is-symbol: 1.1.1 2674 3148 2675 - which-builtin-type@1.1.4: 3149 + which-builtin-type@1.2.1: 2676 3150 dependencies: 2677 - function.prototype.name: 1.1.6 3151 + call-bound: 1.0.4 3152 + function.prototype.name: 1.1.8 2678 3153 has-tostringtag: 1.0.2 2679 - is-async-function: 2.0.0 2680 - is-date-object: 1.0.5 2681 - is-finalizationregistry: 1.0.2 2682 - is-generator-function: 1.0.10 2683 - is-regex: 1.1.4 2684 - is-weakref: 1.0.2 3154 + is-async-function: 2.1.1 3155 + is-date-object: 1.1.0 3156 + is-finalizationregistry: 1.1.1 3157 + is-generator-function: 1.1.0 3158 + is-regex: 1.2.1 3159 + is-weakref: 1.1.1 2685 3160 isarray: 2.0.5 2686 - which-boxed-primitive: 1.0.2 3161 + which-boxed-primitive: 1.1.1 2687 3162 which-collection: 1.0.2 2688 - which-typed-array: 1.1.15 3163 + which-typed-array: 1.1.19 2689 3164 2690 3165 which-collection@1.0.2: 2691 3166 dependencies: 2692 3167 is-map: 2.0.3 2693 3168 is-set: 2.0.3 2694 3169 is-weakmap: 2.0.2 2695 - is-weakset: 2.0.3 3170 + is-weakset: 2.0.4 2696 3171 2697 - which-typed-array@1.1.15: 3172 + which-typed-array@1.1.19: 2698 3173 dependencies: 2699 3174 available-typed-arrays: 1.0.7 2700 - call-bind: 1.0.7 2701 - for-each: 0.3.3 2702 - gopd: 1.0.1 3175 + call-bind: 1.0.8 3176 + call-bound: 1.0.4 3177 + for-each: 0.3.5 3178 + get-proto: 1.0.1 3179 + gopd: 1.2.0 2703 3180 has-tostringtag: 1.0.2 2704 3181 2705 3182 which@2.0.2: 2706 3183 dependencies: 2707 3184 isexe: 2.0.0 2708 3185 3186 + yaml@2.7.1: {} 3187 + 2709 3188 yocto-queue@0.1.0: {} 3189 + 3190 + zustand@5.0.3(@types/react@18.3.20): 3191 + optionalDependencies: 3192 + '@types/react': 18.3.20
+31 -1
pnpm-workspace.yaml
··· 1 1 packages: 2 - - "packages/*" 2 + - packages/* 3 + 4 + catalogs: 5 + dev: 6 + esbuild: ^0.19.3 7 + esbuild-copy-static-files: ^0.1.0 8 + "@types/node": ^22.14.0 9 + "@moonlight-mod/eslint-config": "github:moonlight-mod/eslint-config" 10 + eslint: ^9.12.0 11 + "@types/chrome": ^0.0.313 12 + husky: ^8.0.3 13 + prettier: ^3.1.0 14 + typescript: ^5.3.3 15 + taze: ^19.0.4 16 + prod: 17 + "@moonlight-mod/lunast": ^1.0.1 18 + "@moonlight-mod/mappings": ^1.1.25 19 + "@moonlight-mod/moonmap": ^1.0.5 20 + microdiff: ^1.5.0 21 + nanotar: ^0.1.1 22 + "@zenfs/core": ^2.0.0 23 + "@zenfs/dom": ^1.1.3 24 + 25 + onlyBuiltDependencies: 26 + - esbuild 27 + 28 + engineStrict: true 29 + strictSsl: true 30 + strictDepBuilds: true 31 + packageManagerStrict: true 32 + registry: https://registry.npmjs.org/
-78
scripts/link.js
··· 1 - // Janky script to get around pnpm link issues 2 - // Probably don't use this. Probably 3 - /* eslint-disable no-console */ 4 - const fs = require("fs"); 5 - const path = require("path"); 6 - const child_process = require("child_process"); 7 - 8 - const cwd = process.cwd(); 9 - const onDisk = { 10 - "@moonlight-mod/lunast": "../lunast", 11 - "@moonlight-mod/moonmap": "../moonmap", 12 - "@moonlight-mod/mappings": "../mappings" 13 - }; 14 - 15 - function exec(cmd, dir) { 16 - child_process.execSync(cmd, { cwd: dir, stdio: "inherit" }); 17 - } 18 - 19 - function getDeps(packageJSON) { 20 - const ret = {}; 21 - Object.assign(ret, packageJSON.dependencies || {}); 22 - Object.assign(ret, packageJSON.devDependencies || {}); 23 - Object.assign(ret, packageJSON.peerDependencies || {}); 24 - return ret; 25 - } 26 - 27 - function link(dir) { 28 - const packageJSONPath = path.join(dir, "package.json"); 29 - if (!fs.existsSync(packageJSONPath)) return; 30 - const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf8")); 31 - const deps = getDeps(packageJSON); 32 - 33 - for (const [dep, relativePath] of Object.entries(onDisk)) { 34 - const fullPath = path.join(cwd, relativePath); 35 - if (deps[dep]) { 36 - exec(`pnpm link ${fullPath}`, dir); 37 - } 38 - } 39 - } 40 - 41 - function undo(dir) { 42 - exec("pnpm unlink", dir); 43 - try { 44 - if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) { 45 - exec("git restore pnpm-lock.yaml", dir); 46 - } 47 - } catch { 48 - // ignored 49 - } 50 - } 51 - 52 - const shouldUndo = process.argv.includes("--undo"); 53 - const packages = fs.readdirSync("./packages"); 54 - 55 - for (const path of Object.values(onDisk)) { 56 - console.log(path); 57 - if (shouldUndo) { 58 - undo(path); 59 - } else { 60 - link(path); 61 - } 62 - } 63 - 64 - if (shouldUndo) { 65 - console.log(cwd); 66 - undo(cwd); 67 - for (const pkg of packages) { 68 - const dir = path.join(cwd, "packages", pkg); 69 - console.log(dir); 70 - undo(dir); 71 - } 72 - } else { 73 - for (const pkg of packages) { 74 - const dir = path.join(cwd, "packages", pkg); 75 - console.log(dir); 76 - link(dir); 77 - } 78 - }
+78
scripts/link.mjs
··· 1 + // Janky script to get around pnpm link issues 2 + // Probably don't use this. Probably 3 + /* eslint-disable no-console */ 4 + const fs = require("fs"); 5 + const path = require("path"); 6 + const child_process = require("child_process"); 7 + 8 + const cwd = process.cwd(); 9 + const onDisk = { 10 + //"@moonlight-mod/lunast": "../lunast", 11 + //"@moonlight-mod/moonmap": "../moonmap", 12 + "@moonlight-mod/mappings": "../mappings" 13 + }; 14 + 15 + function exec(cmd, dir) { 16 + child_process.execSync(cmd, { cwd: dir, stdio: "inherit" }); 17 + } 18 + 19 + function getDeps(packageJSON) { 20 + const ret = {}; 21 + Object.assign(ret, packageJSON.dependencies || {}); 22 + Object.assign(ret, packageJSON.devDependencies || {}); 23 + Object.assign(ret, packageJSON.peerDependencies || {}); 24 + return ret; 25 + } 26 + 27 + function link(dir) { 28 + const packageJSONPath = path.join(dir, "package.json"); 29 + if (!fs.existsSync(packageJSONPath)) return; 30 + const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf8")); 31 + const deps = getDeps(packageJSON); 32 + 33 + for (const [dep, relativePath] of Object.entries(onDisk)) { 34 + const fullPath = path.join(cwd, relativePath); 35 + if (deps[dep]) { 36 + exec(`pnpm link ${fullPath}`, dir); 37 + } 38 + } 39 + } 40 + 41 + function undo(dir) { 42 + exec("pnpm unlink", dir); 43 + try { 44 + if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) { 45 + exec("git restore pnpm-lock.yaml", dir); 46 + } 47 + } catch { 48 + // ignored 49 + } 50 + } 51 + 52 + const shouldUndo = process.argv.includes("--undo"); 53 + const packages = fs.readdirSync("./packages"); 54 + 55 + for (const path of Object.values(onDisk)) { 56 + console.log(path); 57 + if (shouldUndo) { 58 + undo(path); 59 + } else { 60 + link(path); 61 + } 62 + } 63 + 64 + if (shouldUndo) { 65 + console.log(cwd); 66 + undo(cwd); 67 + for (const pkg of packages) { 68 + const dir = path.join(cwd, "packages", pkg); 69 + console.log(dir); 70 + undo(dir); 71 + } 72 + } else { 73 + for (const pkg of packages) { 74 + const dir = path.join(cwd, "packages", pkg); 75 + console.log(dir); 76 + link(dir); 77 + } 78 + }
-29
scripts/update.js
··· 1 - // Update dependencies in all packages 2 - /* eslint-disable no-console */ 3 - const fs = require("fs"); 4 - const path = require("path"); 5 - const child_process = require("child_process"); 6 - 7 - const packageToUpdate = process.argv[2]; 8 - 9 - function getDeps(packageJSON) { 10 - const ret = {}; 11 - Object.assign(ret, packageJSON.dependencies || {}); 12 - Object.assign(ret, packageJSON.devDependencies || {}); 13 - Object.assign(ret, packageJSON.peerDependencies || {}); 14 - return ret; 15 - } 16 - 17 - function exec(cmd, dir) { 18 - child_process.execSync(cmd, { cwd: dir, stdio: "inherit" }); 19 - } 20 - 21 - for (const package of fs.readdirSync("./packages")) { 22 - const packageJSON = JSON.parse(fs.readFileSync(path.join("./packages", package, "package.json"), "utf8")); 23 - 24 - const deps = getDeps(packageJSON); 25 - if (Object.keys(deps).includes(packageToUpdate)) { 26 - console.log(`Updating ${packageToUpdate} in ${package}`); 27 - exec(`pnpm update ${packageToUpdate}`, path.join("./packages", package)); 28 - } 29 - }
+35
tsconfig.base.json
··· 1 + { 2 + "$schema": "https://json.schemastore.org/tsconfig.json", 3 + "display": "Base", 4 + "_version": "1.0.0", 5 + "compilerOptions": { 6 + "incremental": true, 7 + "target": "ES2022", 8 + "jsx": "react", 9 + "lib": ["ESNext", "ESNext.Disposable", "DOM", "DOM.Iterable"], 10 + "module": "ES2020", 11 + "moduleResolution": "Bundler", 12 + "resolveJsonModule": true, 13 + "allowArbitraryExtensions": false, 14 + "allowImportingTsExtensions": true, 15 + "allowJs": true, 16 + "strict": true, 17 + "strictNullChecks": true, 18 + 19 + // disable unreachable code detection because it breaks with esbuild labels 20 + "allowUnreachableCode": true, 21 + "noFallthroughCasesInSwitch": true, 22 + "noImplicitReturns": true, 23 + "declaration": true, 24 + "declarationMap": true, 25 + "outDir": "dist", 26 + "sourceMap": true, 27 + "stripInternal": true, 28 + "esModuleInterop": true, 29 + "forceConsistentCasingInFileNames": true, 30 + "noErrorTruncation": true, 31 + "verbatimModuleSyntax": false, 32 + // meriyah has a broken import lol 33 + "skipLibCheck": true 34 + } 35 + }
+7 -16
tsconfig.json
··· 1 1 { 2 + "extends": ["./tsconfig.base.json"], 2 3 "compilerOptions": { 3 - "target": "es2022", 4 - "module": "es2020", 5 - "esModuleInterop": true, 6 - "forceConsistentCasingInFileNames": true, 7 - "strict": true, 8 - "moduleResolution": "bundler", 9 4 "baseUrl": "./packages/", 10 - "jsx": "react", 11 - "noEmit": true, 12 - 13 - // meriyah has a broken import lol 14 - "skipLibCheck": true, 15 - 16 - // disable unreachable code detection because it breaks with esbuild labels 17 - "allowUnreachableCode": true 5 + "noEmit": true 18 6 }, 19 - "include": ["./packages/**/*", "./env.d.ts"], 20 - "exclude": ["node_modules"] 7 + "exclude": [ 8 + "**/node_modules/**", 9 + "**/dist/**", 10 + "**/build/**" 11 + ] 21 12 }