this repo has no description

Compare changes

Choose any two refs to compare.

+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 }
+3 -7
CHANGELOG.md
··· 1 - # Core 2 - - Updated mappings 1 + ## Core 3 2 4 - # Libraries 5 - - Support for message accessories in Component Editor 6 - - Settings sections now allow for a function to compute position (thanks @MeguminSama!) 7 - - Error boundary component in Common 8 - - `spacepack.lazyLoad` now supports `\i` in regular expressions 3 + - Updated mappings 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.9", 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.9", 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.9", 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 );
+4
packages/browser/src/index.ts
··· 90 90 dirname(path) { 91 91 const parts = getParts(path); 92 92 return "/" + parts.slice(0, parts.length - 1).join("/"); 93 + }, 94 + basename(path) { 95 + const parts = getParts(path); 96 + return parts[parts.length - 1]; 93 97 } 94 98 }, 95 99 // TODO
+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 }
+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 }
+39 -28
packages/core/src/patch.ts
··· 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]; 74 71 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(", "); 72 + if (remapped) { 73 + return `// Webpack Module: ${id}\n//# sourceURL=${remapped}`; 74 + } 78 75 79 - const wrapped = 80 - `(${replaced}).apply(this, arguments)\n` + 81 - `// Patched by moonlight: ${patchedStr}\n` + 82 - `//# sourceURL=Webpack-Module-${id}`; 76 + return `//# sourceURL=Webpack-Module/${id.slice(0, 3)}/${id}`; 77 + } 83 78 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 - } 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 + 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 ··· 154 162 } 155 163 156 164 if (replaced === moduleString) { 157 - logger.warn("Patch replacement failed", id, patch); 165 + logger.warn("Patch replacement failed", id, patchId, patch); 158 166 isPatched = false; 159 167 if (patch.hardFail) { 160 168 hardFailed = true; ··· 185 193 } 186 194 187 195 if (modified) { 188 - if (!swappedModule) patchModule(id, patchedStr.join(", "), moduleString); 189 - moduleCache[id] = moduleString; 196 + let shouldCache = true; 197 + if (!swappedModule) shouldCache = patchModule(id, patchedStr.join(", "), moduleString, entry); 198 + if (shouldCache) moduleCache[id] = moduleString; 190 199 moonlight.patched.set(id, exts); 191 200 } 192 201 ··· 194 203 const parsed = moonlight.lunast.parseScript(id, moduleString); 195 204 if (parsed != null) { 196 205 for (const [parsedId, parsedScript] of Object.entries(parsed)) { 197 - if (patchModule(parsedId, "lunast", parsedScript)) { 206 + if (patchModule(parsedId, "lunast", parsedScript, entry)) { 198 207 moduleCache[parsedId] = parsedScript; 199 208 } 200 209 } ··· 205 214 206 215 if (moonlightNode.config.patchAll === true) { 207 216 if ((typeof id !== "string" || !id.includes("_")) && !entry[id].__moonlight) { 208 - const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${id}`; 217 + const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + createSourceURL(id); 209 218 entry[id] = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc; 210 219 entry[id].__moonlight = true; 211 220 } ··· 328 337 } 329 338 330 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; 331 342 injectedWpModules.push({ id: name, run: func }); 332 343 modules[name] = func; 333 344 inject = true;
+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 }
+12 -3
packages/core-extensions/src/commands/index.ts
··· 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 ];
+3
packages/core-extensions/src/common/index.ts
··· 6 6 }, 7 7 ErrorBoundary: { 8 8 dependencies: [{ id: "react" }] 9 + }, 10 + icons: { 11 + dependencies: [{ id: "react" }, { id: "discord/components/common/index" }] 9 12 } 10 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 },
+1 -2
packages/core-extensions/src/common/webpackModules/ErrorBoundary.tsx
··· 29 29 const { noop, fallback: FallbackComponent, children, message } = this.props; 30 30 const { errored, error, componentStack } = this.state; 31 31 32 - if (noop) return null; 33 32 if (FallbackComponent) return <FallbackComponent children={children} {...this.state} />; 34 33 35 34 if (errored) { 36 - return ( 35 + return noop ? null : ( 37 36 <div className={`moonlight-error-boundary`}> 38 37 <h3>{message ?? "An error occurred rendering this component:"}</h3> 39 38 <code className="hljs">{`${error}\n\nComponent stack:\n${componentStack}`}</code>
+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;
+8 -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 ] 62 63 },
+21 -4
packages/core-extensions/src/experiments/index.ts
··· 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 ];
+9 -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" }, 46 47 { ext: "contextMenu", id: "contextMenu" }, 47 48 { id: "discord/modules/modals/Modals" }, ··· 49 50 '"Missing channel in Channel.openChannelContextMenu"', 50 51 ".forumOrHome]:" 51 52 ] 53 + }, 54 + 55 + ThemeDarkIcon: { 56 + dependencies: [{ ext: "common", id: "icons" }, { id: "react" }] 52 57 }, 53 58 54 59 settings: { ··· 67 72 dependencies: [ 68 73 { id: "react" }, 69 74 { ext: "moonbase", id: "stores" }, 75 + { ext: "moonbase", id: "ThemeDarkIcon" }, 70 76 { ext: "notices", id: "notices" }, 71 77 { 72 78 ext: "spacepack",
+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
+2 -2
packages/core-extensions/src/moonbase/webpackModules/settings.tsx
··· 19 19 onReset={() => { 20 20 MoonbaseSettingsStore.reset(); 21 21 }} 22 - onSave={() => { 23 - MoonbaseSettingsStore.writeConfig(); 22 + onSave={async () => { 23 + await MoonbaseSettingsStore.writeConfig(); 24 24 }} 25 25 /> 26 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 }
+6 -1
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
··· 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"; ··· 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>
+2 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx
··· 234 234 {...props} 235 235 size={Button.Sizes.MIN} 236 236 color={Button.Colors.CUSTOM} 237 - className={`${ForumsClasses.sortDropdown} moonbase-retry-button ${checkingUpdates ? "moonbase-speen" : ""}`} 237 + className={`${ForumsClasses.sortDropdown} moonbase-retry-button`} 238 238 innerClassName={ForumsClasses.sortDropdownInner} 239 239 onClick={() => { 240 240 (async () => { ··· 249 249 })(); 250 250 }} 251 251 > 252 - <RetryIcon size={"custom"} width={16} /> 252 + <RetryIcon size={"custom"} width={16} className={checkingUpdates ? "moonbase-speen" : ""} /> 253 253 </Button> 254 254 )} 255 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 );
+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 + }
+13 -1
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(","));
+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
+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\(.\..+?\)/,
+4 -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);
+1 -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
+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 }
+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 -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.12", 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.18", 14 - "@moonlight-mod/moonmap": "^1.0.4", 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 }
+22
packages/types/src/coreExtensions/common.ts
··· 1 + import type { IconProps, IconSize } from "@moonlight-mod/mappings/discord/components/common/index"; 2 + 1 3 export type ErrorBoundaryProps = React.PropsWithChildren<{ 2 4 noop?: boolean; 3 5 fallback?: React.FC<any>; ··· 9 11 error?: Error; 10 12 componentStack?: string; 11 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 };
+4 -1
packages/types/src/coreExtensions/settings.ts
··· 16 16 element: React.FunctionComponent; 17 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, ··· 39 41 element: React.FunctionComponent, 40 42 color?: string | null, 41 43 pos?: number | ((sections: SettingsSection[]) => number), 42 - notice?: NoticeProps 44 + notice?: NoticeProps, 45 + onClick?: () => void 43 46 ) => void; 44 47 45 48 /**
+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 -1
packages/types/src/import.d.ts
··· 10 10 export default commands; 11 11 } 12 12 13 - declare module "@moonlight-mod/wp/common_ErrorBoundary"; 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 + } 14 23 declare module "@moonlight-mod/wp/common_stores"; 15 24 16 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>);
+9 -6
packages/types/src/mappings.d.ts
··· 75 75 export default _default; 76 76 } 77 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 + 78 85 declare module "@moonlight-mod/wp/discord/components/common/FileUpload" { 79 86 import { MappedModules } from "@moonlight-mod/mappings"; 80 87 const _default: MappedModules["discord/components/common/FileUpload"]["default"]; ··· 130 137 export const error: MappedModules["discord/components/common/HelpMessage.css"]["error"]; 131 138 } 132 139 140 + declare module "@moonlight-mod/wp/discord/components/common/Image" {} 141 + 133 142 declare module "@moonlight-mod/wp/discord/components/common/PanelButton" { 134 143 import { MappedModules } from "@moonlight-mod/mappings"; 135 144 const _default: MappedModules["discord/components/common/PanelButton"]["default"]; ··· 186 195 export const Image: MappedModules["discord/components/common/index"]["Image"]; 187 196 export const tokens: MappedModules["discord/components/common/index"]["tokens"]; 188 197 export const useVariableSelect: MappedModules["discord/components/common/index"]["useVariableSelect"]; 189 - export const useMultiSelectState: MappedModules["discord/components/common/index"]["useMultiSelectState"]; 190 - export const useSingleSelectState: MappedModules["discord/components/common/index"]["useSingleSelectState"]; 191 198 export const useMultiSelect: MappedModules["discord/components/common/index"]["useMultiSelect"]; 192 - export const useSingleSelect: MappedModules["discord/components/common/index"]["useSingleSelect"]; 193 199 export const multiSelect: MappedModules["discord/components/common/index"]["multiSelect"]; 194 200 export const openModal: MappedModules["discord/components/common/index"]["openModal"]; 195 201 export const openModalLazy: MappedModules["discord/components/common/index"]["openModalLazy"]; ··· 223 229 export const ScienceIcon: MappedModules["discord/components/common/index"]["ScienceIcon"]; 224 230 export const ScreenIcon: MappedModules["discord/components/common/index"]["ScreenIcon"]; 225 231 export const StarIcon: MappedModules["discord/components/common/index"]["StarIcon"]; 226 - export const ThemeDarkIcon: MappedModules["discord/components/common/index"]["ThemeDarkIcon"]; 227 232 export const TrashIcon: MappedModules["discord/components/common/index"]["TrashIcon"]; 228 233 export const WarningIcon: MappedModules["discord/components/common/index"]["WarningIcon"]; 229 234 export const WindowLaunchIcon: MappedModules["discord/components/common/index"]["WindowLaunchIcon"]; ··· 612 617 export const closeAllModals: MappedModules["discord/modules/modals/Modals"]["closeAllModals"]; 613 618 export const closeAllModalsForContext: MappedModules["discord/modules/modals/Modals"]["closeAllModalsForContext"]; 614 619 export const closeModal: MappedModules["discord/modules/modals/Modals"]["closeModal"]; 615 - export const closeModalInAllContexts: MappedModules["discord/modules/modals/Modals"]["closeModalInAllContexts"]; 616 620 export const getInteractingModalContext: MappedModules["discord/modules/modals/Modals"]["getInteractingModalContext"]; 617 621 export const hasAnyModalOpen: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpen"]; 618 622 export const hasAnyModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpenSelector"]; 619 623 export const hasModalOpen: MappedModules["discord/modules/modals/Modals"]["hasModalOpen"]; 620 624 export const hasModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasModalOpenSelector"]; 621 - export const modalContextFromAppContext: MappedModules["discord/modules/modals/Modals"]["modalContextFromAppContext"]; 622 625 export const openModal: MappedModules["discord/modules/modals/Modals"]["openModal"]; 623 626 export const openModalLazy: MappedModules["discord/modules/modals/Modals"]["openModalLazy"]; 624 627 export const updateModal: MappedModules["discord/modules/modals/Modals"]["updateModal"];
+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.18", 9 - "@moonlight-mod/moonmap": "^1.0.4", 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 }
+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 }
+1183 -727
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.18 97 - version: 1.1.18(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.4) 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.4 100 - version: 1.0.4 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.18 121 - version: 1.1.18(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.4) 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.4 124 - version: 1.0.4 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==} 348 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 349 + 350 + '@eslint/config-helpers@0.2.1': 351 + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} 279 352 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 280 353 281 - '@eslint/core@0.6.0': 282 - resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} 354 + '@eslint/core@0.12.0': 355 + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 283 356 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 284 357 285 - '@eslint/eslintrc@3.1.0': 286 - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 358 + '@eslint/core@0.13.0': 359 + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 360 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 361 + 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.18': 328 - resolution: {integrity: sha512-aPh080zi2xEBKhBEnXUuPkIjVVhX0RrXFZ5lvMHLuaEOl4vTvaC8PG56558ArfbUof1VMy3j2wduT4cubn3w2A==} 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.4 412 + '@moonlight-mod/lunast': ^1.0.1 413 + '@moonlight-mod/moonmap': ^1.0.5 332 414 333 - '@moonlight-mod/moonmap@1.0.4': 334 - resolution: {integrity: sha512-NES5a+ZSfgyRBZ7pBL8PZL40Au5vTDskvC/Gqx0bs3woikkkdjbZiW9RPypwUQqzdBDIP//ga+xF9UhKSADdLw==} 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==} 366 467 468 + '@types/har-format@1.2.16': 469 + resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} 470 + 367 471 '@types/highlightjs@9.12.6': 368 472 resolution: {integrity: sha512-Qfd1DUrwE851Hc3tExADJY4qY8yeZMt06Xw9AJm/UtpneepJS3MZY29c33BY0wP899veaaHD4gZzYiSuQm84Fg==} 369 473 ··· 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==} 390 - 391 - '@types/readable-stream@4.0.15': 392 - resolution: {integrity: sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==} 495 + '@types/react@18.3.20': 496 + resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} 393 497 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 619 + 620 + async-function@1.0.0: 621 + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 622 + engines: {node: '>= 0.4'} 520 623 521 624 available-typed-arrays@1.0.7: 522 625 resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} ··· 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==} 614 732 engines: {node: '>= 0.4'} 615 733 616 - es-define-property@1.0.0: 617 - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 734 + es-abstract@1.23.9: 735 + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} 736 + engines: {node: '>= 0.4'} 737 + 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: ··· 848 993 849 994 ieee754@1.2.1: 850 995 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 851 - 852 - ignore@5.3.0: 853 - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 854 - engines: {node: '>= 4'} 855 996 856 997 ignore@5.3.2: 857 998 resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} ··· 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==} ··· 1099 1268 1100 1269 path-parse@1.0.7: 1101 1270 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1271 + 1272 + pathe@2.0.3: 1273 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1102 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: ··· 1132 1311 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1133 1312 engines: {node: '>=6'} 1134 1313 1314 + quansync@0.2.10: 1315 + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} 1316 + 1135 1317 queue-microtask@1.2.3: 1136 1318 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1137 1319 ··· 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 1357 1172 - safe-buffer@5.1.2: 1173 - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1174 - 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==} 1404 + engines: {node: '>= 0.4'} 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==} 1209 1412 engines: {node: '>= 0.4'} 1210 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==} 1306 1527 1528 + undici-types@6.21.0: 1529 + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 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'} ··· 1355 1585 snapshots: 1356 1586 1357 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 1358 1595 1359 1596 '@esbuild/android-arm64@0.19.3': 1360 1597 optional: true ··· 1422 1659 '@esbuild/win32-x64@0.19.3': 1423 1660 optional: true 1424 1661 1425 - '@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))': 1426 1663 dependencies: 1427 - eslint: 9.12.0 1664 + eslint: 9.23.0(jiti@2.4.2) 1428 1665 eslint-visitor-keys: 3.4.3 1429 1666 1430 - '@eslint-community/regexpp@4.11.1': {} 1667 + '@eslint-community/regexpp@4.12.1': {} 1431 1668 1432 - '@eslint/config-array@0.18.0': 1669 + '@eslint/config-array@0.19.2': 1433 1670 dependencies: 1434 - '@eslint/object-schema': 2.1.4 1435 - debug: 4.3.4 1671 + '@eslint/object-schema': 2.1.6 1672 + debug: 4.4.0 1436 1673 minimatch: 3.1.2 1437 1674 transitivePeerDependencies: 1438 1675 - supports-color 1439 1676 1440 - '@eslint/core@0.6.0': {} 1677 + '@eslint/config-helpers@0.2.1': {} 1441 1678 1442 - '@eslint/eslintrc@3.1.0': 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 1686 + 1687 + '@eslint/eslintrc@3.3.1': 1443 1688 dependencies: 1444 1689 ajv: 6.12.6 1445 - debug: 4.3.4 1446 - espree: 10.2.0 1690 + debug: 4.4.0 1691 + espree: 10.3.0 1447 1692 globals: 14.0.0 1448 - ignore: 5.3.0 1693 + ignore: 5.3.2 1449 1694 import-fresh: 3.3.0 1450 1695 js-yaml: 4.1.0 1451 1696 minimatch: 3.1.2 ··· 1453 1698 transitivePeerDependencies: 1454 1699 - supports-color 1455 1700 1456 - '@eslint/js@9.12.0': {} 1701 + '@eslint/js@9.23.0': {} 1457 1702 1458 - '@eslint/object-schema@2.1.4': {} 1703 + '@eslint/object-schema@2.1.6': {} 1459 1704 1460 - '@eslint/plugin-kit@0.2.0': 1705 + '@eslint/plugin-kit@0.2.8': 1461 1706 dependencies: 1707 + '@eslint/core': 0.13.0 1462 1708 levn: 0.4.1 1463 1709 1464 - '@humanfs/core@0.19.0': {} 1710 + '@humanfs/core@0.19.1': {} 1465 1711 1466 - '@humanfs/node@0.16.5': 1712 + '@humanfs/node@0.16.6': 1467 1713 dependencies: 1468 - '@humanfs/core': 0.19.0 1714 + '@humanfs/core': 0.19.1 1469 1715 '@humanwhocodes/retry': 0.3.1 1470 1716 1471 1717 '@humanwhocodes/module-importer@1.0.1': {} 1472 1718 1473 1719 '@humanwhocodes/retry@0.3.1': {} 1474 1720 1475 - '@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)': 1476 1724 dependencies: 1477 - '@eslint/js': 9.12.0 1478 - eslint: 9.12.0 1479 - eslint-config-prettier: 9.1.0(eslint@9.12.0) 1480 - eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.1.0) 1481 - eslint-plugin-react: 7.37.1(eslint@9.12.0) 1482 - typescript: 5.3.2 1483 - 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) 1484 1732 transitivePeerDependencies: 1485 1733 - '@types/eslint' 1486 1734 - prettier 1487 1735 - supports-color 1488 1736 1489 - '@moonlight-mod/lunast@1.0.0': 1737 + '@moonlight-mod/lunast@1.0.1': 1490 1738 dependencies: 1491 1739 astring: 1.9.0 1492 1740 estree-toolkit: 1.7.8 1493 1741 meriyah: 6.0.1 1494 1742 1495 - '@moonlight-mod/mappings@1.1.18(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.4)': 1743 + '@moonlight-mod/mappings@1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5)': 1496 1744 dependencies: 1497 - '@moonlight-mod/lunast': 1.0.0 1498 - '@moonlight-mod/moonmap': 1.0.4 1745 + '@moonlight-mod/lunast': 1.0.1 1746 + '@moonlight-mod/moonmap': 1.0.5 1499 1747 '@types/chroma-js': 3.1.0 1500 1748 '@types/flux': 3.1.14 1501 1749 '@types/highlightjs': 9.12.6 1502 1750 '@types/lodash': 4.17.14 1503 1751 '@types/platform': 1.3.6 1504 - '@types/react': 18.3.10 1752 + '@types/react': 18.3.20 1505 1753 csstype: 3.1.3 1506 - zustand: 5.0.3(@types/react@18.3.10) 1754 + zustand: 5.0.3(@types/react@18.3.20) 1507 1755 transitivePeerDependencies: 1508 1756 - immer 1509 1757 - react 1510 1758 - use-sync-external-store 1511 1759 1512 - '@moonlight-mod/moonmap@1.0.4': {} 1760 + '@moonlight-mod/moonmap@1.0.5': {} 1513 1761 1514 1762 '@nodelib/fs.scandir@2.1.5': 1515 1763 dependencies: ··· 1523 1771 '@nodelib/fs.scandir': 2.1.5 1524 1772 fastq: 1.17.1 1525 1773 1526 - '@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 1527 1779 1528 1780 '@types/chroma-js@3.1.0': {} 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 1529 1792 1530 1793 '@types/estree-jsx@1.0.5': 1531 1794 dependencies: ··· 1533 1796 1534 1797 '@types/estree@1.0.6': {} 1535 1798 1799 + '@types/estree@1.0.7': 1800 + optional: true 1801 + 1536 1802 '@types/fbemitter@2.0.35': {} 1537 1803 1804 + '@types/filesystem@0.0.36': 1805 + dependencies: 1806 + '@types/filewriter': 0.0.33 1807 + 1808 + '@types/filewriter@0.0.33': {} 1809 + 1538 1810 '@types/flux@3.1.14': 1539 1811 dependencies: 1540 1812 '@types/fbemitter': 2.0.35 1541 - '@types/react': 18.3.10 1813 + '@types/react': 18.3.20 1814 + 1815 + '@types/har-format@1.2.16': {} 1542 1816 1543 1817 '@types/highlightjs@9.12.6': {} 1544 1818 ··· 1548 1822 1549 1823 '@types/node@18.17.17': {} 1550 1824 1551 - '@types/node@22.10.7': 1825 + '@types/node@22.13.6': 1552 1826 dependencies: 1553 1827 undici-types: 6.20.0 1554 1828 1829 + '@types/node@22.14.0': 1830 + dependencies: 1831 + undici-types: 6.21.0 1832 + 1555 1833 '@types/platform@1.3.6': {} 1556 1834 1557 1835 '@types/prop-types@15.7.13': {} 1558 1836 1559 - '@types/react@18.3.10': 1837 + '@types/react@18.3.20': 1560 1838 dependencies: 1561 1839 '@types/prop-types': 15.7.13 1562 1840 csstype: 3.1.3 1563 1841 1564 - '@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)': 1565 1843 dependencies: 1566 - '@types/node': 22.10.7 1567 - safe-buffer: 5.1.2 1568 - 1569 - '@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)': 1570 - dependencies: 1571 - '@eslint-community/regexpp': 4.11.1 1572 - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1573 - '@typescript-eslint/scope-manager': 8.8.1 1574 - '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1575 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1576 - '@typescript-eslint/visitor-keys': 8.8.1 1577 - 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) 1578 1851 graphemer: 1.4.0 1579 1852 ignore: 5.3.2 1580 1853 natural-compare: 1.4.0 1581 - ts-api-utils: 1.3.0(typescript@5.3.2) 1582 - optionalDependencies: 1583 - typescript: 5.3.2 1854 + ts-api-utils: 2.1.0(typescript@5.8.2) 1855 + typescript: 5.8.2 1584 1856 transitivePeerDependencies: 1585 1857 - supports-color 1586 1858 1587 - '@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)': 1588 1860 dependencies: 1589 - '@typescript-eslint/scope-manager': 8.8.1 1590 - '@typescript-eslint/types': 8.8.1 1591 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1592 - '@typescript-eslint/visitor-keys': 8.8.1 1593 - debug: 4.3.4 1594 - eslint: 9.12.0 1595 - optionalDependencies: 1596 - 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 1597 1868 transitivePeerDependencies: 1598 1869 - supports-color 1599 1870 1600 - '@typescript-eslint/scope-manager@8.8.1': 1871 + '@typescript-eslint/scope-manager@8.29.0': 1601 1872 dependencies: 1602 - '@typescript-eslint/types': 8.8.1 1603 - '@typescript-eslint/visitor-keys': 8.8.1 1873 + '@typescript-eslint/types': 8.29.0 1874 + '@typescript-eslint/visitor-keys': 8.29.0 1604 1875 1605 - '@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)': 1606 1877 dependencies: 1607 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1608 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 1609 - debug: 4.3.4 1610 - ts-api-utils: 1.3.0(typescript@5.3.2) 1611 - optionalDependencies: 1612 - 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 1613 1884 transitivePeerDependencies: 1614 - - eslint 1615 1885 - supports-color 1616 1886 1617 - '@typescript-eslint/types@8.8.1': {} 1887 + '@typescript-eslint/types@8.29.0': {} 1618 1888 1619 - '@typescript-eslint/typescript-estree@8.8.1(typescript@5.3.2)': 1889 + '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)': 1620 1890 dependencies: 1621 - '@typescript-eslint/types': 8.8.1 1622 - '@typescript-eslint/visitor-keys': 8.8.1 1623 - debug: 4.3.4 1891 + '@typescript-eslint/types': 8.29.0 1892 + '@typescript-eslint/visitor-keys': 8.29.0 1893 + debug: 4.4.0 1624 1894 fast-glob: 3.3.2 1625 1895 is-glob: 4.0.3 1626 1896 minimatch: 9.0.5 1627 - semver: 7.6.3 1628 - ts-api-utils: 1.3.0(typescript@5.3.2) 1629 - optionalDependencies: 1630 - 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 1631 1900 transitivePeerDependencies: 1632 1901 - supports-color 1633 1902 1634 - '@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)': 1635 1904 dependencies: 1636 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 1637 - '@typescript-eslint/scope-manager': 8.8.1 1638 - '@typescript-eslint/types': 8.8.1 1639 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2) 1640 - 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 1641 1911 transitivePeerDependencies: 1642 1912 - supports-color 1643 - - typescript 1644 1913 1645 - '@typescript-eslint/visitor-keys@8.8.1': 1914 + '@typescript-eslint/visitor-keys@8.29.0': 1646 1915 dependencies: 1647 - '@typescript-eslint/types': 8.8.1 1648 - eslint-visitor-keys: 3.4.3 1916 + '@typescript-eslint/types': 8.29.0 1917 + eslint-visitor-keys: 4.2.0 1649 1918 1650 1919 '@xterm/xterm@5.5.0': 1651 1920 optional: true 1652 1921 1653 - '@zenfs/core@1.8.8': 1922 + '@zenfs/core@2.0.0': 1654 1923 dependencies: 1655 - '@types/node': 22.10.7 1656 - '@types/readable-stream': 4.0.15 1924 + '@types/node': 22.13.6 1657 1925 buffer: 6.0.3 1658 1926 eventemitter3: 5.0.1 1659 1927 readable-stream: 4.5.2 1660 - utilium: 1.1.3 1928 + utilium: 1.10.1 1661 1929 1662 - '@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)': 1663 1931 dependencies: 1664 - '@zenfs/core': 1.8.8 1932 + '@zenfs/core': 2.0.0 1933 + utilium: 1.10.1 1665 1934 1666 1935 abort-controller@3.0.0: 1667 1936 dependencies: 1668 1937 event-target-shim: 5.0.1 1669 1938 1670 - acorn-jsx@5.3.2(acorn@8.12.1): 1939 + acorn-jsx@5.3.2(acorn@8.14.1): 1671 1940 dependencies: 1672 - acorn: 8.12.1 1941 + acorn: 8.14.1 1673 1942 1674 - acorn@8.12.1: {} 1943 + acorn@8.14.1: {} 1675 1944 1676 1945 ajv@6.12.6: 1677 1946 dependencies: ··· 1683 1952 ansi-styles@4.3.0: 1684 1953 dependencies: 1685 1954 color-convert: 2.0.1 1955 + 1956 + ansis@3.17.0: {} 1686 1957 1687 1958 argparse@2.0.1: {} 1688 1959 1689 - array-buffer-byte-length@1.0.1: 1960 + array-buffer-byte-length@1.0.2: 1690 1961 dependencies: 1691 - call-bind: 1.0.7 1692 - is-array-buffer: 3.0.4 1962 + call-bound: 1.0.4 1963 + is-array-buffer: 3.0.5 1693 1964 1694 1965 array-includes@3.1.8: 1695 1966 dependencies: 1696 - call-bind: 1.0.7 1967 + call-bind: 1.0.8 1697 1968 define-properties: 1.2.1 1698 - es-abstract: 1.23.3 1699 - es-object-atoms: 1.0.0 1700 - get-intrinsic: 1.2.4 1701 - 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 1702 1973 1703 1974 array.prototype.findlast@1.2.5: 1704 1975 dependencies: 1705 - call-bind: 1.0.7 1976 + call-bind: 1.0.8 1706 1977 define-properties: 1.2.1 1707 - es-abstract: 1.23.3 1978 + es-abstract: 1.23.9 1708 1979 es-errors: 1.3.0 1709 - es-object-atoms: 1.0.0 1710 - es-shim-unscopables: 1.0.2 1980 + es-object-atoms: 1.1.1 1981 + es-shim-unscopables: 1.1.0 1711 1982 1712 - array.prototype.flat@1.3.2: 1983 + array.prototype.flat@1.3.3: 1713 1984 dependencies: 1714 - call-bind: 1.0.7 1985 + call-bind: 1.0.8 1715 1986 define-properties: 1.2.1 1716 - es-abstract: 1.23.3 1717 - es-shim-unscopables: 1.0.2 1987 + es-abstract: 1.23.9 1988 + es-shim-unscopables: 1.1.0 1718 1989 1719 - array.prototype.flatmap@1.3.2: 1990 + array.prototype.flatmap@1.3.3: 1720 1991 dependencies: 1721 - call-bind: 1.0.7 1992 + call-bind: 1.0.8 1722 1993 define-properties: 1.2.1 1723 - es-abstract: 1.23.3 1724 - es-shim-unscopables: 1.0.2 1994 + es-abstract: 1.23.9 1995 + es-shim-unscopables: 1.1.0 1725 1996 1726 1997 array.prototype.tosorted@1.1.4: 1727 1998 dependencies: 1728 - call-bind: 1.0.7 1999 + call-bind: 1.0.8 1729 2000 define-properties: 1.2.1 1730 - es-abstract: 1.23.3 2001 + es-abstract: 1.23.9 1731 2002 es-errors: 1.3.0 1732 - es-shim-unscopables: 1.0.2 2003 + es-shim-unscopables: 1.1.0 1733 2004 1734 - arraybuffer.prototype.slice@1.0.3: 2005 + arraybuffer.prototype.slice@1.0.4: 1735 2006 dependencies: 1736 - array-buffer-byte-length: 1.0.1 1737 - call-bind: 1.0.7 2007 + array-buffer-byte-length: 1.0.2 2008 + call-bind: 1.0.8 1738 2009 define-properties: 1.2.1 1739 - es-abstract: 1.23.3 2010 + es-abstract: 1.23.9 1740 2011 es-errors: 1.3.0 1741 - get-intrinsic: 1.2.4 1742 - is-array-buffer: 3.0.4 1743 - is-shared-array-buffer: 1.0.3 2012 + get-intrinsic: 1.3.0 2013 + is-array-buffer: 3.0.5 1744 2014 1745 2015 astring@1.9.0: {} 2016 + 2017 + async-function@1.0.0: {} 1746 2018 1747 2019 available-typed-arrays@1.0.7: 1748 2020 dependencies: 1749 - possible-typed-array-names: 1.0.0 2021 + possible-typed-array-names: 1.1.0 1750 2022 1751 2023 balanced-match@1.0.2: {} 1752 2024 ··· 1770 2042 base64-js: 1.5.1 1771 2043 ieee754: 1.2.1 1772 2044 1773 - call-bind@1.0.7: 2045 + cac@6.7.14: {} 2046 + 2047 + call-bind-apply-helpers@1.0.2: 1774 2048 dependencies: 1775 - es-define-property: 1.0.0 1776 2049 es-errors: 1.3.0 1777 2050 function-bind: 1.1.2 1778 - 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 1779 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 1780 2063 1781 2064 callsites@3.1.0: {} 1782 2065 ··· 1793 2076 1794 2077 concat-map@0.0.1: {} 1795 2078 1796 - cross-spawn@7.0.3: 2079 + cross-spawn@7.0.6: 1797 2080 dependencies: 1798 2081 path-key: 3.1.1 1799 2082 shebang-command: 2.0.0 1800 2083 which: 2.0.2 1801 2084 1802 - csstype@3.1.2: {} 1803 - 1804 2085 csstype@3.1.3: {} 1805 2086 1806 - data-view-buffer@1.0.1: 2087 + data-view-buffer@1.0.2: 1807 2088 dependencies: 1808 - call-bind: 1.0.7 2089 + call-bound: 1.0.4 1809 2090 es-errors: 1.3.0 1810 - is-data-view: 1.0.1 2091 + is-data-view: 1.0.2 1811 2092 1812 - data-view-byte-length@1.0.1: 2093 + data-view-byte-length@1.0.2: 1813 2094 dependencies: 1814 - call-bind: 1.0.7 2095 + call-bound: 1.0.4 1815 2096 es-errors: 1.3.0 1816 - is-data-view: 1.0.1 2097 + is-data-view: 1.0.2 1817 2098 1818 - data-view-byte-offset@1.0.0: 2099 + data-view-byte-offset@1.0.1: 1819 2100 dependencies: 1820 - call-bind: 1.0.7 2101 + call-bound: 1.0.4 1821 2102 es-errors: 1.3.0 1822 - is-data-view: 1.0.1 2103 + is-data-view: 1.0.2 1823 2104 1824 - debug@4.3.4: 2105 + debug@4.4.0: 1825 2106 dependencies: 1826 - ms: 2.1.2 2107 + ms: 2.1.3 1827 2108 1828 2109 deep-is@0.1.4: {} 1829 2110 1830 2111 define-data-property@1.1.4: 1831 2112 dependencies: 1832 - es-define-property: 1.0.0 2113 + es-define-property: 1.0.1 1833 2114 es-errors: 1.3.0 1834 - gopd: 1.0.1 2115 + gopd: 1.2.0 1835 2116 1836 2117 define-properties@1.2.1: 1837 2118 dependencies: ··· 1839 2120 has-property-descriptors: 1.0.2 1840 2121 object-keys: 1.1.1 1841 2122 2123 + defu@6.1.4: {} 2124 + 2125 + destr@2.0.4: {} 2126 + 1842 2127 doctrine@2.1.0: 1843 2128 dependencies: 1844 2129 esutils: 2.0.3 1845 2130 1846 - es-abstract@1.23.3: 2131 + dunder-proto@1.0.1: 2132 + dependencies: 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: 1847 2138 dependencies: 1848 - array-buffer-byte-length: 1.0.1 1849 - arraybuffer.prototype.slice: 1.0.3 2139 + array-buffer-byte-length: 1.0.2 2140 + arraybuffer.prototype.slice: 1.0.4 1850 2141 available-typed-arrays: 1.0.7 1851 - call-bind: 1.0.7 1852 - data-view-buffer: 1.0.1 1853 - data-view-byte-length: 1.0.1 1854 - data-view-byte-offset: 1.0.0 1855 - 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 1856 2148 es-errors: 1.3.0 1857 - es-object-atoms: 1.0.0 1858 - es-set-tostringtag: 2.0.3 1859 - es-to-primitive: 1.2.1 1860 - function.prototype.name: 1.1.6 1861 - get-intrinsic: 1.2.4 1862 - 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 1863 2156 globalthis: 1.0.4 1864 - gopd: 1.0.1 2157 + gopd: 1.2.0 1865 2158 has-property-descriptors: 1.0.2 1866 - has-proto: 1.0.3 1867 - has-symbols: 1.0.3 2159 + has-proto: 1.2.0 2160 + has-symbols: 1.1.0 1868 2161 hasown: 2.0.2 1869 - internal-slot: 1.0.7 1870 - is-array-buffer: 3.0.4 2162 + internal-slot: 1.1.0 2163 + is-array-buffer: 3.0.5 1871 2164 is-callable: 1.2.7 1872 - is-data-view: 1.0.1 1873 - is-negative-zero: 2.0.3 1874 - is-regex: 1.1.4 1875 - is-shared-array-buffer: 1.0.3 1876 - is-string: 1.0.7 1877 - is-typed-array: 1.1.13 1878 - is-weakref: 1.0.2 1879 - 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 1880 2173 object-keys: 1.1.1 1881 - object.assign: 4.1.5 1882 - regexp.prototype.flags: 1.5.3 1883 - safe-array-concat: 1.1.2 1884 - safe-regex-test: 1.0.3 1885 - string.prototype.trim: 1.2.9 1886 - 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 1887 2183 string.prototype.trimstart: 1.0.8 1888 - typed-array-buffer: 1.0.2 1889 - typed-array-byte-length: 1.0.1 1890 - typed-array-byte-offset: 1.0.2 1891 - typed-array-length: 1.0.6 1892 - unbox-primitive: 1.0.2 1893 - 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 1894 2190 1895 - es-define-property@1.0.0: 1896 - dependencies: 1897 - get-intrinsic: 1.2.4 2191 + es-define-property@1.0.1: {} 1898 2192 1899 2193 es-errors@1.3.0: {} 1900 2194 1901 - es-iterator-helpers@1.1.0: 2195 + es-iterator-helpers@1.2.1: 1902 2196 dependencies: 1903 - call-bind: 1.0.7 2197 + call-bind: 1.0.8 2198 + call-bound: 1.0.4 1904 2199 define-properties: 1.2.1 1905 - es-abstract: 1.23.3 2200 + es-abstract: 1.23.9 1906 2201 es-errors: 1.3.0 1907 - es-set-tostringtag: 2.0.3 2202 + es-set-tostringtag: 2.1.0 1908 2203 function-bind: 1.1.2 1909 - get-intrinsic: 1.2.4 2204 + get-intrinsic: 1.3.0 1910 2205 globalthis: 1.0.4 2206 + gopd: 1.2.0 1911 2207 has-property-descriptors: 1.0.2 1912 - has-proto: 1.0.3 1913 - has-symbols: 1.0.3 1914 - internal-slot: 1.0.7 1915 - iterator.prototype: 1.1.3 1916 - 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 1917 2213 1918 - es-object-atoms@1.0.0: 2214 + es-object-atoms@1.1.1: 1919 2215 dependencies: 1920 2216 es-errors: 1.3.0 1921 2217 1922 - es-set-tostringtag@2.0.3: 2218 + es-set-tostringtag@2.1.0: 1923 2219 dependencies: 1924 - get-intrinsic: 1.2.4 2220 + es-errors: 1.3.0 2221 + get-intrinsic: 1.3.0 1925 2222 has-tostringtag: 1.0.2 1926 2223 hasown: 2.0.2 1927 2224 1928 - es-shim-unscopables@1.0.2: 2225 + es-shim-unscopables@1.1.0: 1929 2226 dependencies: 1930 2227 hasown: 2.0.2 1931 2228 1932 - es-to-primitive@1.2.1: 2229 + es-to-primitive@1.3.0: 1933 2230 dependencies: 1934 2231 is-callable: 1.2.7 1935 - is-date-object: 1.0.5 1936 - is-symbol: 1.0.4 2232 + is-date-object: 1.1.0 2233 + is-symbol: 1.1.1 1937 2234 1938 2235 esbuild-copy-static-files@0.1.0: {} 1939 2236 ··· 1964 2261 1965 2262 escape-string-regexp@4.0.0: {} 1966 2263 1967 - 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)): 1968 2265 dependencies: 1969 - eslint: 9.12.0 2266 + eslint: 9.23.0(jiti@2.4.2) 1970 2267 1971 - 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): 1972 2269 dependencies: 1973 - eslint: 9.12.0 2270 + eslint: 9.23.0(jiti@2.4.2) 1974 2271 prettier: 3.1.0 1975 2272 prettier-linter-helpers: 1.0.0 1976 - synckit: 0.9.2 2273 + synckit: 0.11.1 1977 2274 optionalDependencies: 1978 - 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)) 1979 2277 1980 - 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)): 1981 2279 dependencies: 1982 2280 array-includes: 3.1.8 1983 2281 array.prototype.findlast: 1.2.5 1984 - array.prototype.flatmap: 1.3.2 2282 + array.prototype.flatmap: 1.3.3 1985 2283 array.prototype.tosorted: 1.1.4 1986 2284 doctrine: 2.1.0 1987 - es-iterator-helpers: 1.1.0 1988 - eslint: 9.12.0 2285 + es-iterator-helpers: 1.2.1 2286 + eslint: 9.23.0(jiti@2.4.2) 1989 2287 estraverse: 5.3.0 1990 2288 hasown: 2.0.2 1991 2289 jsx-ast-utils: 3.3.5 1992 2290 minimatch: 3.1.2 1993 - object.entries: 1.1.8 2291 + object.entries: 1.1.9 1994 2292 object.fromentries: 2.0.8 1995 - object.values: 1.2.0 2293 + object.values: 1.2.1 1996 2294 prop-types: 15.8.1 1997 2295 resolve: 2.0.0-next.5 1998 2296 semver: 6.3.1 1999 - string.prototype.matchall: 4.0.11 2297 + string.prototype.matchall: 4.0.12 2000 2298 string.prototype.repeat: 1.0.0 2001 2299 2002 - eslint-scope@8.1.0: 2300 + eslint-scope@8.3.0: 2003 2301 dependencies: 2004 2302 esrecurse: 4.3.0 2005 2303 estraverse: 5.3.0 2006 2304 2007 2305 eslint-visitor-keys@3.4.3: {} 2008 2306 2009 - eslint-visitor-keys@4.1.0: {} 2307 + eslint-visitor-keys@4.2.0: {} 2010 2308 2011 - eslint@9.12.0: 2309 + eslint@9.23.0(jiti@2.4.2): 2012 2310 dependencies: 2013 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 2014 - '@eslint-community/regexpp': 4.11.1 2015 - '@eslint/config-array': 0.18.0 2016 - '@eslint/core': 0.6.0 2017 - '@eslint/eslintrc': 3.1.0 2018 - '@eslint/js': 9.12.0 2019 - '@eslint/plugin-kit': 0.2.0 2020 - '@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 2021 2320 '@humanwhocodes/module-importer': 1.0.1 2022 - '@humanwhocodes/retry': 0.3.1 2321 + '@humanwhocodes/retry': 0.4.2 2023 2322 '@types/estree': 1.0.6 2024 2323 '@types/json-schema': 7.0.15 2025 2324 ajv: 6.12.6 2026 2325 chalk: 4.1.2 2027 - cross-spawn: 7.0.3 2028 - debug: 4.3.4 2326 + cross-spawn: 7.0.6 2327 + debug: 4.4.0 2029 2328 escape-string-regexp: 4.0.0 2030 - eslint-scope: 8.1.0 2031 - eslint-visitor-keys: 4.1.0 2032 - espree: 10.2.0 2033 - 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 2034 2333 esutils: 2.0.3 2035 2334 fast-deep-equal: 3.1.3 2036 2335 file-entry-cache: 8.0.0 2037 2336 find-up: 5.0.0 2038 2337 glob-parent: 6.0.2 2039 - ignore: 5.3.0 2338 + ignore: 5.3.2 2040 2339 imurmurhash: 0.1.4 2041 2340 is-glob: 4.0.3 2042 2341 json-stable-stringify-without-jsonify: 1.0.1 ··· 2044 2343 minimatch: 3.1.2 2045 2344 natural-compare: 1.4.0 2046 2345 optionator: 0.9.3 2047 - text-table: 0.2.0 2346 + optionalDependencies: 2347 + jiti: 2.4.2 2048 2348 transitivePeerDependencies: 2049 2349 - supports-color 2050 2350 2051 - espree@10.2.0: 2351 + espree@10.3.0: 2052 2352 dependencies: 2053 - acorn: 8.12.1 2054 - acorn-jsx: 5.3.2(acorn@8.12.1) 2055 - 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 2056 2356 2057 - esquery@1.5.0: 2357 + esquery@1.6.0: 2058 2358 dependencies: 2059 2359 estraverse: 5.3.0 2060 2360 ··· 2097 2397 dependencies: 2098 2398 reusify: 1.0.4 2099 2399 2400 + fdir@6.4.3(picomatch@4.0.2): 2401 + optionalDependencies: 2402 + picomatch: 4.0.2 2403 + 2100 2404 file-entry-cache@8.0.0: 2101 2405 dependencies: 2102 2406 flat-cache: 4.0.1 ··· 2105 2409 dependencies: 2106 2410 to-regex-range: 5.0.1 2107 2411 2412 + find-up-simple@1.0.1: {} 2413 + 2108 2414 find-up@5.0.0: 2109 2415 dependencies: 2110 2416 locate-path: 6.0.0 ··· 2117 2423 2118 2424 flatted@3.2.9: {} 2119 2425 2120 - for-each@0.3.3: 2426 + for-each@0.3.5: 2121 2427 dependencies: 2122 2428 is-callable: 1.2.7 2123 2429 2124 2430 function-bind@1.1.2: {} 2125 2431 2126 - function.prototype.name@1.1.6: 2432 + function.prototype.name@1.1.8: 2127 2433 dependencies: 2128 - call-bind: 1.0.7 2434 + call-bind: 1.0.8 2435 + call-bound: 1.0.4 2129 2436 define-properties: 1.2.1 2130 - es-abstract: 1.23.3 2131 2437 functions-have-names: 1.2.3 2438 + hasown: 2.0.2 2439 + is-callable: 1.2.7 2132 2440 2133 2441 functions-have-names@1.2.3: {} 2134 2442 2135 - get-intrinsic@1.2.4: 2443 + fzf@0.5.2: {} 2444 + 2445 + get-intrinsic@1.3.0: 2136 2446 dependencies: 2447 + call-bind-apply-helpers: 1.0.2 2448 + es-define-property: 1.0.1 2137 2449 es-errors: 1.3.0 2450 + es-object-atoms: 1.1.1 2138 2451 function-bind: 1.1.2 2139 - has-proto: 1.0.3 2140 - has-symbols: 1.0.3 2452 + get-proto: 1.0.1 2453 + gopd: 1.2.0 2454 + has-symbols: 1.1.0 2141 2455 hasown: 2.0.2 2456 + math-intrinsics: 1.1.0 2142 2457 2143 - 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: 2144 2464 dependencies: 2145 - call-bind: 1.0.7 2465 + call-bound: 1.0.4 2146 2466 es-errors: 1.3.0 2147 - get-intrinsic: 1.2.4 2467 + get-intrinsic: 1.3.0 2148 2468 2149 2469 glob-parent@5.1.2: 2150 2470 dependencies: ··· 2159 2479 globalthis@1.0.4: 2160 2480 dependencies: 2161 2481 define-properties: 1.2.1 2162 - gopd: 1.0.1 2482 + gopd: 1.2.0 2163 2483 2164 - gopd@1.0.1: 2165 - dependencies: 2166 - get-intrinsic: 1.2.4 2484 + gopd@1.2.0: {} 2167 2485 2168 2486 graphemer@1.4.0: {} 2169 2487 2170 - has-bigints@1.0.2: {} 2488 + has-bigints@1.1.0: {} 2171 2489 2172 2490 has-flag@4.0.0: {} 2173 2491 2174 2492 has-property-descriptors@1.0.2: 2175 2493 dependencies: 2176 - es-define-property: 1.0.0 2494 + es-define-property: 1.0.1 2177 2495 2178 - has-proto@1.0.3: {} 2496 + has-proto@1.2.0: 2497 + dependencies: 2498 + dunder-proto: 1.0.1 2179 2499 2180 - has-symbols@1.0.3: {} 2500 + has-symbols@1.1.0: {} 2181 2501 2182 2502 has-tostringtag@1.0.2: 2183 2503 dependencies: 2184 - has-symbols: 1.0.3 2504 + has-symbols: 1.1.0 2185 2505 2186 2506 hasown@2.0.2: 2187 2507 dependencies: ··· 2191 2511 2192 2512 ieee754@1.2.1: {} 2193 2513 2194 - ignore@5.3.0: {} 2195 - 2196 2514 ignore@5.3.2: {} 2197 2515 2198 2516 import-fresh@3.3.0: ··· 2202 2520 2203 2521 imurmurhash@0.1.4: {} 2204 2522 2205 - internal-slot@1.0.7: 2523 + internal-slot@1.1.0: 2206 2524 dependencies: 2207 2525 es-errors: 1.3.0 2208 2526 hasown: 2.0.2 2209 - side-channel: 1.0.6 2527 + side-channel: 1.1.0 2210 2528 2211 - is-array-buffer@3.0.4: 2529 + is-array-buffer@3.0.5: 2212 2530 dependencies: 2213 - call-bind: 1.0.7 2214 - get-intrinsic: 1.2.4 2531 + call-bind: 1.0.8 2532 + call-bound: 1.0.4 2533 + get-intrinsic: 1.3.0 2215 2534 2216 - is-async-function@2.0.0: 2535 + is-async-function@2.1.1: 2217 2536 dependencies: 2537 + async-function: 1.0.0 2538 + call-bound: 1.0.4 2539 + get-proto: 1.0.1 2218 2540 has-tostringtag: 1.0.2 2541 + safe-regex-test: 1.1.0 2219 2542 2220 - is-bigint@1.0.4: 2543 + is-bigint@1.1.0: 2221 2544 dependencies: 2222 - has-bigints: 1.0.2 2545 + has-bigints: 1.1.0 2223 2546 2224 - is-boolean-object@1.1.2: 2547 + is-boolean-object@1.2.2: 2225 2548 dependencies: 2226 - call-bind: 1.0.7 2549 + call-bound: 1.0.4 2227 2550 has-tostringtag: 1.0.2 2228 2551 2229 2552 is-callable@1.2.7: {} 2230 2553 2231 - is-core-module@2.15.1: 2554 + is-core-module@2.16.1: 2232 2555 dependencies: 2233 2556 hasown: 2.0.2 2234 2557 2235 - is-data-view@1.0.1: 2558 + is-data-view@1.0.2: 2236 2559 dependencies: 2237 - 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 2238 2563 2239 - is-date-object@1.0.5: 2564 + is-date-object@1.1.0: 2240 2565 dependencies: 2566 + call-bound: 1.0.4 2241 2567 has-tostringtag: 1.0.2 2242 2568 2243 2569 is-extglob@2.1.1: {} 2244 2570 2245 - is-finalizationregistry@1.0.2: 2571 + is-finalizationregistry@1.1.1: 2246 2572 dependencies: 2247 - call-bind: 1.0.7 2573 + call-bound: 1.0.4 2248 2574 2249 - is-generator-function@1.0.10: 2575 + is-generator-function@1.1.0: 2250 2576 dependencies: 2577 + call-bound: 1.0.4 2578 + get-proto: 1.0.1 2251 2579 has-tostringtag: 1.0.2 2580 + safe-regex-test: 1.1.0 2252 2581 2253 2582 is-glob@4.0.3: 2254 2583 dependencies: ··· 2256 2585 2257 2586 is-map@2.0.3: {} 2258 2587 2259 - is-negative-zero@2.0.3: {} 2260 - 2261 - is-number-object@1.0.7: 2588 + is-number-object@1.1.1: 2262 2589 dependencies: 2590 + call-bound: 1.0.4 2263 2591 has-tostringtag: 1.0.2 2264 2592 2265 2593 is-number@7.0.0: {} 2266 2594 2267 - is-regex@1.1.4: 2595 + is-regex@1.2.1: 2268 2596 dependencies: 2269 - call-bind: 1.0.7 2597 + call-bound: 1.0.4 2598 + gopd: 1.2.0 2270 2599 has-tostringtag: 1.0.2 2600 + hasown: 2.0.2 2271 2601 2272 2602 is-set@2.0.3: {} 2273 2603 2274 - is-shared-array-buffer@1.0.3: 2604 + is-shared-array-buffer@1.0.4: 2275 2605 dependencies: 2276 - call-bind: 1.0.7 2606 + call-bound: 1.0.4 2277 2607 2278 - is-string@1.0.7: 2608 + is-string@1.1.1: 2279 2609 dependencies: 2610 + call-bound: 1.0.4 2280 2611 has-tostringtag: 1.0.2 2281 2612 2282 - is-symbol@1.0.4: 2613 + is-symbol@1.1.1: 2283 2614 dependencies: 2284 - has-symbols: 1.0.3 2615 + call-bound: 1.0.4 2616 + has-symbols: 1.1.0 2617 + safe-regex-test: 1.1.0 2285 2618 2286 - is-typed-array@1.1.13: 2619 + is-typed-array@1.1.15: 2287 2620 dependencies: 2288 - which-typed-array: 1.1.15 2621 + which-typed-array: 1.1.19 2289 2622 2290 2623 is-weakmap@2.0.2: {} 2291 2624 2292 - is-weakref@1.0.2: 2625 + is-weakref@1.1.1: 2293 2626 dependencies: 2294 - call-bind: 1.0.7 2627 + call-bound: 1.0.4 2295 2628 2296 - is-weakset@2.0.3: 2629 + is-weakset@2.0.4: 2297 2630 dependencies: 2298 - call-bind: 1.0.7 2299 - get-intrinsic: 1.2.4 2631 + call-bound: 1.0.4 2632 + get-intrinsic: 1.3.0 2300 2633 2301 2634 isarray@2.0.5: {} 2302 2635 2303 2636 isexe@2.0.0: {} 2304 2637 2305 - iterator.prototype@1.1.3: 2638 + iterator.prototype@1.1.5: 2306 2639 dependencies: 2307 - define-properties: 1.2.1 2308 - get-intrinsic: 1.2.4 2309 - has-symbols: 1.0.3 2310 - 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 2311 2645 set-function-name: 2.0.2 2646 + 2647 + jiti@2.4.2: {} 2312 2648 2313 2649 js-tokens@4.0.0: {} 2314 2650 ··· 2325 2661 jsx-ast-utils@3.3.5: 2326 2662 dependencies: 2327 2663 array-includes: 3.1.8 2328 - array.prototype.flat: 1.3.2 2329 - object.assign: 4.1.5 2330 - object.values: 1.2.0 2664 + array.prototype.flat: 1.3.3 2665 + object.assign: 4.1.7 2666 + object.values: 1.2.1 2331 2667 2332 2668 keyv@4.5.4: 2333 2669 dependencies: ··· 2348 2684 dependencies: 2349 2685 js-tokens: 4.0.0 2350 2686 2687 + math-intrinsics@1.1.0: {} 2688 + 2351 2689 merge2@1.4.1: {} 2352 2690 2353 2691 meriyah@6.0.1: {} ··· 2358 2696 dependencies: 2359 2697 braces: 3.0.3 2360 2698 picomatch: 2.3.1 2699 + 2700 + mimic-function@5.0.1: {} 2361 2701 2362 2702 minimatch@3.1.2: 2363 2703 dependencies: ··· 2367 2707 dependencies: 2368 2708 brace-expansion: 2.0.1 2369 2709 2370 - ms@2.1.2: {} 2710 + ms@2.1.3: {} 2371 2711 2372 2712 nanotar@0.1.1: {} 2373 2713 2374 2714 natural-compare@1.4.0: {} 2715 + 2716 + node-fetch-native@1.6.6: {} 2375 2717 2376 2718 object-assign@4.1.1: {} 2377 2719 2378 - object-inspect@1.13.2: {} 2720 + object-inspect@1.13.4: {} 2379 2721 2380 2722 object-keys@1.1.1: {} 2381 2723 2382 - object.assign@4.1.5: 2724 + object.assign@4.1.7: 2383 2725 dependencies: 2384 - call-bind: 1.0.7 2726 + call-bind: 1.0.8 2727 + call-bound: 1.0.4 2385 2728 define-properties: 1.2.1 2386 - has-symbols: 1.0.3 2729 + es-object-atoms: 1.1.1 2730 + has-symbols: 1.1.0 2387 2731 object-keys: 1.1.1 2388 2732 2389 - object.entries@1.1.8: 2733 + object.entries@1.1.9: 2390 2734 dependencies: 2391 - call-bind: 1.0.7 2735 + call-bind: 1.0.8 2736 + call-bound: 1.0.4 2392 2737 define-properties: 1.2.1 2393 - es-object-atoms: 1.0.0 2738 + es-object-atoms: 1.1.1 2394 2739 2395 2740 object.fromentries@2.0.8: 2396 2741 dependencies: 2397 - call-bind: 1.0.7 2742 + call-bind: 1.0.8 2398 2743 define-properties: 1.2.1 2399 - es-abstract: 1.23.3 2400 - es-object-atoms: 1.0.0 2744 + es-abstract: 1.23.9 2745 + es-object-atoms: 1.1.1 2401 2746 2402 - object.values@1.2.0: 2747 + object.values@1.2.1: 2403 2748 dependencies: 2404 - call-bind: 1.0.7 2749 + call-bind: 1.0.8 2750 + call-bound: 1.0.4 2405 2751 define-properties: 1.2.1 2406 - 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 2407 2763 2408 2764 optionator@0.9.3: 2409 2765 dependencies: ··· 2414 2770 prelude-ls: 1.2.1 2415 2771 type-check: 0.4.0 2416 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 + 2417 2779 p-limit@3.1.0: 2418 2780 dependencies: 2419 2781 yocto-queue: 0.1.0 ··· 2421 2783 p-locate@5.0.0: 2422 2784 dependencies: 2423 2785 p-limit: 3.1.0 2786 + 2787 + package-manager-detector@1.1.0: {} 2424 2788 2425 2789 parent-module@1.0.1: 2426 2790 dependencies: ··· 2432 2796 2433 2797 path-parse@1.0.7: {} 2434 2798 2799 + pathe@2.0.3: {} 2800 + 2435 2801 picomatch@2.3.1: {} 2436 2802 2437 - 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: {} 2438 2810 2439 2811 prelude-ls@1.2.1: {} 2440 2812 ··· 2453 2825 react-is: 16.13.1 2454 2826 2455 2827 punycode@2.3.1: {} 2828 + 2829 + quansync@0.2.10: {} 2456 2830 2457 2831 queue-microtask@1.2.3: {} 2458 2832 ··· 2466 2840 process: 0.11.10 2467 2841 string_decoder: 1.3.0 2468 2842 2469 - reflect.getprototypeof@1.0.6: 2843 + reflect.getprototypeof@1.0.10: 2470 2844 dependencies: 2471 - call-bind: 1.0.7 2845 + call-bind: 1.0.8 2472 2846 define-properties: 1.2.1 2473 - es-abstract: 1.23.3 2847 + es-abstract: 1.23.9 2474 2848 es-errors: 1.3.0 2475 - get-intrinsic: 1.2.4 2476 - globalthis: 1.0.4 2477 - 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 2478 2853 2479 - regexp.prototype.flags@1.5.3: 2854 + regexp.prototype.flags@1.5.4: 2480 2855 dependencies: 2481 - call-bind: 1.0.7 2856 + call-bind: 1.0.8 2482 2857 define-properties: 1.2.1 2483 2858 es-errors: 1.3.0 2859 + get-proto: 1.0.1 2860 + gopd: 1.2.0 2484 2861 set-function-name: 2.0.2 2485 2862 2486 2863 resolve-from@4.0.0: {} 2487 2864 2488 2865 resolve@2.0.0-next.5: 2489 2866 dependencies: 2490 - is-core-module: 2.15.1 2867 + is-core-module: 2.16.1 2491 2868 path-parse: 1.0.7 2492 2869 supports-preserve-symlinks-flag: 1.0.0 2493 2870 2871 + restore-cursor@5.1.0: 2872 + dependencies: 2873 + onetime: 7.0.0 2874 + signal-exit: 4.1.0 2875 + 2494 2876 reusify@1.0.4: {} 2495 2877 2496 2878 run-parallel@1.2.0: 2497 2879 dependencies: 2498 2880 queue-microtask: 1.2.3 2499 2881 2500 - safe-array-concat@1.1.2: 2882 + safe-array-concat@1.1.3: 2501 2883 dependencies: 2502 - call-bind: 1.0.7 2503 - get-intrinsic: 1.2.4 2504 - 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 2505 2888 isarray: 2.0.5 2506 2889 2507 - safe-buffer@5.1.2: {} 2890 + safe-buffer@5.2.1: {} 2508 2891 2509 - 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 2510 2896 2511 - safe-regex-test@1.0.3: 2897 + safe-regex-test@1.1.0: 2512 2898 dependencies: 2513 - call-bind: 1.0.7 2899 + call-bound: 1.0.4 2514 2900 es-errors: 1.3.0 2515 - is-regex: 1.1.4 2901 + is-regex: 1.2.1 2516 2902 2517 2903 semver@6.3.1: {} 2518 2904 2519 - semver@7.6.3: {} 2905 + semver@7.7.1: {} 2520 2906 2521 2907 set-function-length@1.2.2: 2522 2908 dependencies: 2523 2909 define-data-property: 1.1.4 2524 2910 es-errors: 1.3.0 2525 2911 function-bind: 1.1.2 2526 - get-intrinsic: 1.2.4 2527 - gopd: 1.0.1 2912 + get-intrinsic: 1.3.0 2913 + gopd: 1.2.0 2528 2914 has-property-descriptors: 1.0.2 2529 2915 2530 2916 set-function-name@2.0.2: ··· 2534 2920 functions-have-names: 1.2.3 2535 2921 has-property-descriptors: 1.0.2 2536 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 + 2537 2929 shebang-command@2.0.0: 2538 2930 dependencies: 2539 2931 shebang-regex: 3.0.0 2540 2932 2541 2933 shebang-regex@3.0.0: {} 2542 2934 2543 - side-channel@1.0.6: 2935 + side-channel-list@1.0.0: 2936 + dependencies: 2937 + es-errors: 1.3.0 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: 2544 2948 dependencies: 2545 - call-bind: 1.0.7 2949 + call-bound: 1.0.4 2546 2950 es-errors: 1.3.0 2547 - get-intrinsic: 1.2.4 2548 - object-inspect: 1.13.2 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: {} 2549 2964 2550 2965 standalone-electron-types@1.0.0: 2551 2966 dependencies: 2552 2967 '@types/node': 18.17.17 2553 2968 2554 - string.prototype.matchall@4.0.11: 2969 + string.prototype.matchall@4.0.12: 2555 2970 dependencies: 2556 - call-bind: 1.0.7 2971 + call-bind: 1.0.8 2972 + call-bound: 1.0.4 2557 2973 define-properties: 1.2.1 2558 - es-abstract: 1.23.3 2974 + es-abstract: 1.23.9 2559 2975 es-errors: 1.3.0 2560 - es-object-atoms: 1.0.0 2561 - get-intrinsic: 1.2.4 2562 - gopd: 1.0.1 2563 - has-symbols: 1.0.3 2564 - internal-slot: 1.0.7 2565 - 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 2566 2982 set-function-name: 2.0.2 2567 - side-channel: 1.0.6 2983 + side-channel: 1.1.0 2568 2984 2569 2985 string.prototype.repeat@1.0.0: 2570 2986 dependencies: 2571 2987 define-properties: 1.2.1 2572 - es-abstract: 1.23.3 2988 + es-abstract: 1.23.9 2573 2989 2574 - string.prototype.trim@1.2.9: 2990 + string.prototype.trim@1.2.10: 2575 2991 dependencies: 2576 - call-bind: 1.0.7 2992 + call-bind: 1.0.8 2993 + call-bound: 1.0.4 2994 + define-data-property: 1.1.4 2577 2995 define-properties: 1.2.1 2578 - es-abstract: 1.23.3 2579 - 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 2580 2999 2581 - string.prototype.trimend@1.0.8: 3000 + string.prototype.trimend@1.0.9: 2582 3001 dependencies: 2583 - call-bind: 1.0.7 3002 + call-bind: 1.0.8 3003 + call-bound: 1.0.4 2584 3004 define-properties: 1.2.1 2585 - es-object-atoms: 1.0.0 3005 + es-object-atoms: 1.1.1 2586 3006 2587 3007 string.prototype.trimstart@1.0.8: 2588 3008 dependencies: 2589 - call-bind: 1.0.7 3009 + call-bind: 1.0.8 2590 3010 define-properties: 1.2.1 2591 - es-object-atoms: 1.0.0 3011 + es-object-atoms: 1.1.1 2592 3012 2593 3013 string_decoder@1.3.0: 2594 3014 dependencies: ··· 2602 3022 2603 3023 supports-preserve-symlinks-flag@1.0.0: {} 2604 3024 2605 - synckit@0.9.2: 3025 + synckit@0.11.1: 2606 3026 dependencies: 2607 - '@pkgr/core': 0.1.1 2608 - tslib: 2.7.0 3027 + '@pkgr/core': 0.2.0 3028 + tslib: 2.8.1 3029 + 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: {} 2609 3046 2610 - text-table@0.2.0: {} 3047 + tinyglobby@0.2.12: 3048 + dependencies: 3049 + fdir: 6.4.3(picomatch@4.0.2) 3050 + picomatch: 4.0.2 2611 3051 2612 3052 to-regex-range@5.0.1: 2613 3053 dependencies: 2614 3054 is-number: 7.0.0 2615 3055 2616 - ts-api-utils@1.3.0(typescript@5.3.2): 3056 + ts-api-utils@2.1.0(typescript@5.8.2): 2617 3057 dependencies: 2618 - typescript: 5.3.2 3058 + typescript: 5.8.2 2619 3059 2620 - tslib@2.7.0: {} 3060 + tslib@2.8.1: {} 2621 3061 2622 3062 type-check@0.4.0: 2623 3063 dependencies: 2624 3064 prelude-ls: 1.2.1 2625 3065 2626 - typed-array-buffer@1.0.2: 3066 + typed-array-buffer@1.0.3: 2627 3067 dependencies: 2628 - call-bind: 1.0.7 3068 + call-bound: 1.0.4 2629 3069 es-errors: 1.3.0 2630 - is-typed-array: 1.1.13 3070 + is-typed-array: 1.1.15 2631 3071 2632 - typed-array-byte-length@1.0.1: 3072 + typed-array-byte-length@1.0.3: 2633 3073 dependencies: 2634 - call-bind: 1.0.7 2635 - for-each: 0.3.3 2636 - gopd: 1.0.1 2637 - has-proto: 1.0.3 2638 - 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 2639 3079 2640 - typed-array-byte-offset@1.0.2: 3080 + typed-array-byte-offset@1.0.4: 2641 3081 dependencies: 2642 3082 available-typed-arrays: 1.0.7 2643 - call-bind: 1.0.7 2644 - for-each: 0.3.3 2645 - gopd: 1.0.1 2646 - has-proto: 1.0.3 2647 - 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 2648 3089 2649 - typed-array-length@1.0.6: 3090 + typed-array-length@1.0.7: 2650 3091 dependencies: 2651 - call-bind: 1.0.7 2652 - for-each: 0.3.3 2653 - gopd: 1.0.1 2654 - has-proto: 1.0.3 2655 - is-typed-array: 1.1.13 2656 - 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 2657 3098 2658 - 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): 2659 3100 dependencies: 2660 - '@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) 2661 - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 2662 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2) 2663 - optionalDependencies: 2664 - 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 2665 3106 transitivePeerDependencies: 2666 - - eslint 2667 3107 - supports-color 2668 3108 2669 - typescript@5.3.2: {} 3109 + typescript@5.8.2: {} 2670 3110 2671 - unbox-primitive@1.0.2: 3111 + ufo@1.5.4: {} 3112 + 3113 + unbox-primitive@1.1.0: 3114 + dependencies: 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: 2672 3121 dependencies: 2673 - call-bind: 1.0.7 2674 - has-bigints: 1.0.2 2675 - has-symbols: 1.0.3 2676 - which-boxed-primitive: 1.0.2 3122 + '@quansync/fs': 0.1.2 3123 + defu: 6.1.4 3124 + jiti: 2.4.2 3125 + quansync: 0.2.10 2677 3126 2678 3127 undici-types@6.20.0: {} 2679 3128 3129 + undici-types@6.21.0: {} 3130 + 2680 3131 uri-js@4.4.1: 2681 3132 dependencies: 2682 3133 punycode: 2.3.1 2683 3134 2684 - utilium@1.1.3: 3135 + utilium@1.10.1: 2685 3136 dependencies: 2686 3137 eventemitter3: 5.0.1 2687 3138 optionalDependencies: 2688 3139 '@xterm/xterm': 5.5.0 2689 3140 2690 - which-boxed-primitive@1.0.2: 3141 + which-boxed-primitive@1.1.1: 2691 3142 dependencies: 2692 - is-bigint: 1.0.4 2693 - is-boolean-object: 1.1.2 2694 - is-number-object: 1.0.7 2695 - is-string: 1.0.7 2696 - 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 2697 3148 2698 - which-builtin-type@1.1.4: 3149 + which-builtin-type@1.2.1: 2699 3150 dependencies: 2700 - function.prototype.name: 1.1.6 3151 + call-bound: 1.0.4 3152 + function.prototype.name: 1.1.8 2701 3153 has-tostringtag: 1.0.2 2702 - is-async-function: 2.0.0 2703 - is-date-object: 1.0.5 2704 - is-finalizationregistry: 1.0.2 2705 - is-generator-function: 1.0.10 2706 - is-regex: 1.1.4 2707 - 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 2708 3160 isarray: 2.0.5 2709 - which-boxed-primitive: 1.0.2 3161 + which-boxed-primitive: 1.1.1 2710 3162 which-collection: 1.0.2 2711 - which-typed-array: 1.1.15 3163 + which-typed-array: 1.1.19 2712 3164 2713 3165 which-collection@1.0.2: 2714 3166 dependencies: 2715 3167 is-map: 2.0.3 2716 3168 is-set: 2.0.3 2717 3169 is-weakmap: 2.0.2 2718 - is-weakset: 2.0.3 3170 + is-weakset: 2.0.4 2719 3171 2720 - which-typed-array@1.1.15: 3172 + which-typed-array@1.1.19: 2721 3173 dependencies: 2722 3174 available-typed-arrays: 1.0.7 2723 - call-bind: 1.0.7 2724 - for-each: 0.3.3 2725 - 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 2726 3180 has-tostringtag: 1.0.2 2727 3181 2728 3182 which@2.0.2: 2729 3183 dependencies: 2730 3184 isexe: 2.0.0 2731 3185 3186 + yaml@2.7.1: {} 3187 + 2732 3188 yocto-queue@0.1.0: {} 2733 3189 2734 - zustand@5.0.3(@types/react@18.3.10): 3190 + zustand@5.0.3(@types/react@18.3.20): 2735 3191 optionalDependencies: 2736 - '@types/react': 18.3.10 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 }