this repo has no description

Compare changes

Choose any two refs to compare.

Changed files
+2613 -2075
.github
nix
packages
scripts
+4 -8
.github/workflows/browser.yml
···
name: Browser extension builds
runs-on: ubuntu-latest
steps:
-
- uses: actions/checkout@v3
-
-
- uses: pnpm/action-setup@v2
-
with:
-
version: 9
-
run_install: false
-
- uses: actions/setup-node@v3
+
- uses: actions/checkout@v4
+
- uses: pnpm/action-setup@v4
+
- uses: actions/setup-node@v4
with:
-
node-version: 18
+
node-version: 22
cache: pnpm
- name: Install dependencies
+4 -8
.github/workflows/lint.yml
···
name: Lint commits
runs-on: ubuntu-latest
steps:
-
- uses: actions/checkout@v3
-
-
- uses: pnpm/action-setup@v2
-
with:
-
version: 9
-
run_install: false
-
- uses: actions/setup-node@v3
+
- uses: actions/checkout@v4
+
- uses: pnpm/action-setup@v4
+
- uses: actions/setup-node@v4
with:
-
node-version: 18
+
node-version: 22
cache: pnpm
- name: Install dependencies
+4 -8
.github/workflows/nightly.yml
···
name: Nightly builds on GitHub Pages
runs-on: ubuntu-latest
steps:
-
- uses: actions/checkout@v3
-
-
- uses: pnpm/action-setup@v2
-
with:
-
version: 9
-
run_install: false
-
- uses: actions/setup-node@v3
+
- uses: actions/checkout@v4
+
- uses: pnpm/action-setup@v4
+
- uses: actions/setup-node@v4
with:
-
node-version: 18
+
node-version: 22
cache: pnpm
- name: Install dependencies
+16
.github/workflows/nix.yml
···
+
name: Check Nix flake
+
on: [push, pull_request]
+
+
permissions:
+
checks: write
+
+
jobs:
+
nix:
+
name: Check Nix flake
+
runs-on: ubuntu-latest
+
steps:
+
- uses: actions/checkout@v4
+
- uses: DeterminateSystems/nix-installer-action@main
+
+
- name: Build default flake output
+
run: nix build
+4 -8
.github/workflows/release.yml
···
name: Release builds to GitHub Releases
runs-on: ubuntu-latest
steps:
-
- uses: actions/checkout@v3
-
-
- uses: pnpm/action-setup@v2
-
with:
-
version: 9
-
run_install: false
-
- uses: actions/setup-node@v3
+
- uses: actions/checkout@v4
+
- uses: pnpm/action-setup@v4
+
- uses: actions/setup-node@v4
with:
-
node-version: 18
+
node-version: 22
cache: pnpm
- name: Install dependencies
+5 -11
.github/workflows/types.yml
···
name: Publish types on npm
runs-on: ubuntu-latest
steps:
-
- uses: actions/checkout@v3
-
-
- uses: pnpm/action-setup@v2
-
with:
-
version: 9
-
run_install: false
-
- uses: actions/setup-node@v3
+
- uses: actions/checkout@v4
+
- uses: pnpm/action-setup@v4
+
- uses: actions/setup-node@v4
with:
-
node-version: 18
+
node-version: 22
cache: pnpm
registry-url: https://registry.npmjs.org
···
run: pnpm run build
- name: Publish types
-
run: |
-
cd packages/types
-
pnpm publish --access public --no-git-checks
+
run: pnpm publish --filter=./packages/types --access public --no-git-checks
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+1 -1
.gitignore
···
dist.tar.gz
.DS_Store
eslint_report.json
-
+
.eslintcache
# Nix
/result
*.drv
+4 -4
.prettierrc
···
{
-
"printWidth": 120,
-
"trailingComma": "none",
-
"tabWidth": 2,
-
"singleQuote": false
+
"printWidth": 120,
+
"trailingComma": "none",
+
"tabWidth": 2,
+
"singleQuote": false
}
+4 -1
CHANGELOG.md
···
-
- Fixed some bugs in patching logic
+
## Core
+
+
- Updated mappings
+
- Fixed using remapped paths as patch finds not working
+4 -73
flake.lock
···
"type": "github"
}
},
-
"flake-utils_2": {
-
"inputs": {
-
"systems": "systems_2"
-
},
-
"locked": {
-
"lastModified": 1701680307,
-
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
-
"owner": "numtide",
-
"repo": "flake-utils",
-
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
-
"type": "github"
-
},
-
"original": {
-
"owner": "numtide",
-
"repo": "flake-utils",
-
"type": "github"
-
}
-
},
"nixpkgs": {
"locked": {
-
"lastModified": 1728067476,
-
"narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=",
+
"lastModified": 1744232761,
+
"narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030",
+
"rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "nixos-24.05",
-
"repo": "nixpkgs",
-
"type": "github"
-
}
-
},
-
"nixpkgs_2": {
-
"locked": {
-
"lastModified": 1736344531,
-
"narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=",
-
"owner": "nixos",
-
"repo": "nixpkgs",
-
"rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912",
-
"type": "github"
-
},
-
"original": {
-
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
-
"pnpm2nix": {
-
"inputs": {
-
"flake-utils": "flake-utils_2",
-
"nixpkgs": "nixpkgs_2"
-
},
-
"locked": {
-
"lastModified": 1736457458,
-
"narHash": "sha256-eiw+hAsxavEgBfhwrktNI2hwvgeVDzBDYClx/yqka78=",
-
"owner": "NotNite",
-
"repo": "pnpm2nix-nzbr",
-
"rev": "4ac61c6a50623da937dca005e3dbcb8862aafb83",
-
"type": "github"
-
},
-
"original": {
-
"owner": "NotNite",
-
"repo": "pnpm2nix-nzbr",
-
"type": "github"
-
}
-
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
-
"nixpkgs": "nixpkgs",
-
"pnpm2nix": "pnpm2nix"
+
"nixpkgs": "nixpkgs"
}
},
"systems": {
-
"locked": {
-
"lastModified": 1681028828,
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-
"owner": "nix-systems",
-
"repo": "default",
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-
"type": "github"
-
},
-
"original": {
-
"owner": "nix-systems",
-
"repo": "default",
-
"type": "github"
-
}
-
},
-
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+3 -4
flake.nix
···
description = "Yet another Discord mod";
inputs = {
-
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
-
pnpm2nix.url = "github:NotNite/pnpm2nix-nzbr";
};
-
outputs = { self, nixpkgs, flake-utils, pnpm2nix }:
-
let overlay = import ./nix/overlay.nix { inherit pnpm2nix; };
+
outputs = { self, nixpkgs, flake-utils }:
+
let overlay = import ./nix/overlay.nix { };
in flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
+46 -17
nix/default.nix
···
-
{ pkgs, mkPnpmPackage }:
+
{
+
lib,
+
stdenv,
+
nodejs_22,
+
pnpm_10,
+
}:
-
mkPnpmPackage rec {
-
workspace = ./..;
+
stdenv.mkDerivation (finalAttrs: {
+
pname = "moonlight";
+
version = (builtins.fromJSON (builtins.readFile ./../package.json)).version;
+
src = ./..;
-
# Work around a bug with how it expects dist
-
components = [
-
"packages/core"
-
"packages/core-extensions"
-
"packages/injector"
-
"packages/node-preload"
-
"packages/types"
-
"packages/web-preload"
+
outputs = [ "out" "firefox" ];
+
+
nativeBuildInputs = [
+
nodejs_22
+
pnpm_10.configHook
];
-
distDirs = [ "dist" ];
+
+
pnpmDeps = pnpm_10.fetchDeps {
+
inherit (finalAttrs) pname version src;
+
hash = "sha256-I+zRCUqJabpGJRFBGW0NrM9xzyzeCjioF54zlCpynBU=";
+
};
+
+
env = {
+
NODE_ENV = "production";
+
MOONLIGHT_VERSION = "v${finalAttrs.version}";
+
};
+
+
buildPhase = ''
+
runHook preBuild
+
+
pnpm run build
+
pnpm run browser-mv2
+
+
runHook postBuild
+
'';
+
+
installPhase = ''
+
runHook preInstall
-
copyNodeModules = true;
-
buildPhase = "pnpm run build";
-
installPhase = "cp -r dist $out";
+
cp -r dist $out
+
+
mkdir -p $firefox/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+
mv $out/browser-mv2 $firefox/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/{0fb6d66f-f22d-4555-a87b-34ef4bea5e2a}
+
+
runHook postInstall
+
'';
-
meta = with pkgs.lib; {
+
meta = with lib; {
description = "Yet another Discord mod";
homepage = "https://moonlight-mod.github.io/";
license = licenses.lgpl3;
maintainers = with maintainers; [ notnite ];
};
-
}
+
})
+3 -6
nix/overlay.nix
···
-
{ pnpm2nix }:
+
{ ... }:
let
nameTable = {
···
'';
packageJson = ''
-
{"name":"discord","main":"./injector.js","private":true}
+
{"name":"${name}","main":"./injector.js","private":true}
'';
in old.installPhase + "\n" + ''
···
'';
});
in final: prev: rec {
-
moonlight-mod = final.callPackage ./default.nix {
-
pkgs = final;
-
mkPnpmPackage = pnpm2nix.packages.${final.system}.mkPnpmPackage;
-
};
+
moonlight-mod = final.callPackage ./default.nix { };
discord = mkOverride prev moonlight-mod "discord";
discord-ptb = mkOverride prev moonlight-mod "discord-ptb";
discord-canary = mkOverride prev moonlight-mod "discord-canary";
+23 -12
package.json
···
{
"name": "moonlight",
-
"version": "1.3.5",
+
"version": "1.3.14",
+
"packageManager": "pnpm@10.7.1",
"description": "Yet another Discord mod",
-
"homepage": "https://moonlight-mod.github.io/",
"license": "LGPL-3.0-or-later",
+
"homepage": "https://moonlight-mod.github.io/",
"repository": {
"type": "git",
"url": "git+https://github.com/moonlight-mod/moonlight.git"
···
"bugs": {
"url": "https://github.com/moonlight-mod/moonlight/issues"
},
+
"engineStrict": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"scripts": {
"build": "node build.mjs",
"dev": "node build.mjs --watch",
···
"browser": "node build.mjs --browser",
"browser-mv2": "node build.mjs --browser --mv2",
"lint": "eslint packages",
-
"lint:fix": "eslint packages --fix",
-
"lint:report": "eslint --output-file eslint_report.json --format json packages",
+
"lint:fix": "pnpm lint --fix",
+
"lint:report": "pnpm lint --output-file eslint_report.json --format json",
"typecheck": "tsc --noEmit",
"check": "pnpm run lint && pnpm run typecheck",
-
"prepare": "husky install"
+
"prepare": "husky install",
+
"updates": "pnpm taze -r"
},
"devDependencies": {
-
"esbuild": "^0.19.3",
-
"esbuild-copy-static-files": "^0.1.0",
-
"eslint": "^9.12.0",
-
"@moonlight-mod/eslint-config": "github:moonlight-mod/eslint-config",
-
"husky": "^8.0.3",
-
"prettier": "^3.1.0",
-
"typescript": "^5.3.2"
+
"@moonlight-mod/eslint-config": "catalog:dev",
+
"@types/node": "catalog:dev",
+
"esbuild": "catalog:dev",
+
"esbuild-copy-static-files": "catalog:dev",
+
"eslint": "catalog:dev",
+
"husky": "catalog:dev",
+
"prettier": "catalog:dev",
+
"taze": "catalog:dev",
+
"typescript": "catalog:dev"
}
}
+2 -1
packages/browser/blockLoading.json
···
"type": "block"
},
"condition": {
-
"urlFilter": "*://discord.com/assets/*.js",
+
"requestDomains": ["discord.com", "discordapp.com"],
+
"urlFilter": "*/assets/*.js",
"resourceTypes": ["script"]
}
}
+10 -4
packages/browser/manifest.json
···
{
+
"$schema": "https://json.schemastore.org/chrome-manifest",
"manifest_version": 3,
"name": "moonlight",
"description": "Yet another Discord mod",
-
"version": "1.3.5",
+
"version": "1.3.14",
"permissions": ["declarativeNetRequestWithHostAccess", "webRequest", "scripting", "webNavigation"],
-
"host_permissions": ["https://moonlight-mod.github.io/*", "https://api.github.com/*", "https://*.discord.com/*"],
+
"host_permissions": [
+
"https://moonlight-mod.github.io/*",
+
"https://api.github.com/*",
+
"https://*.discord.com/*",
+
"https://*.discordapp.com/*"
+
],
"content_scripts": [
{
"js": ["index.js"],
-
"matches": ["https://*.discord.com/*"],
+
"matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"],
"run_at": "document_start",
"world": "MAIN"
}
···
"web_accessible_resources": [
{
"resources": ["index.js"],
-
"matches": ["https://*.discord.com/*"]
+
"matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"]
}
]
}
+12 -6
packages/browser/manifestv2.json
···
{
+
"$schema": "https://json.schemastore.org/chrome-manifest",
"manifest_version": 2,
"name": "moonlight",
"description": "Yet another Discord mod",
-
"version": "1.3.5",
+
"version": "1.3.14",
"permissions": [
"webRequest",
"webRequestBlocking",
"scripting",
"webNavigation",
-
"https://*.discord.com/assets/*.js",
+
"https://*.discord.com/*",
+
"https://*.discordapp.com/*",
"https://moonlight-mod.github.io/*",
-
"https://api.github.com/*",
-
"https://*.discord.com/*"
+
"https://api.github.com/*"
],
"background": {
"scripts": ["background.js"]
···
"content_scripts": [
{
"js": ["index.js"],
-
"matches": ["https://*.discord.com/*"],
+
"matches": ["https://*.discord.com/*", "https://*.discordapp.com/*"],
"run_at": "document_start",
"world": "MAIN"
}
-
]
+
],
+
"browser_specific_settings": {
+
"gecko": {
+
"id": "{0fb6d66f-f22d-4555-a87b-34ef4bea5e2a}"
+
}
+
}
}
+12 -2
packages/browser/package.json
···
{
"name": "@moonlight-mod/browser",
"private": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
"@moonlight-mod/core": "workspace:*",
"@moonlight-mod/types": "workspace:*",
"@moonlight-mod/web-preload": "workspace:*",
-
"@zenfs/core": "^1.0.2",
-
"@zenfs/dom": "^0.2.16"
+
"@zenfs/core": "catalog:prod",
+
"@zenfs/dom": "catalog:prod"
+
},
+
"engineStrict": true,
+
"devDependencies": {
+
"@types/chrome": "catalog:dev"
}
}
+55 -70
packages/browser/src/background-mv2.js
···
/* eslint-disable no-console */
/* eslint-disable no-undef */
-
const starterUrls = ["web.", "sentry."];
-
let blockLoading = true;
-
let doing = false;
-
let collectedUrls = new Set();
+
const scriptUrls = ["web.", "sentry."];
+
let blockedScripts = new Set();
-
chrome.webNavigation.onBeforeNavigate.addListener(async (details) => {
-
const url = new URL(details.url);
-
if (!blockLoading && url.hostname.endsWith("discord.com")) {
-
console.log("Blocking", details.url);
-
blockLoading = true;
-
collectedUrls.clear();
-
}
-
});
+
chrome.webRequest.onBeforeRequest.addListener(
+
async (details) => {
+
if (details.tabId === -1) return;
-
async function doTheThing(urls, tabId) {
-
console.log("Doing", urls, tabId);
+
const url = new URL(details.url);
+
const hasUrl = scriptUrls.some((scriptUrl) => {
+
return (
+
details.url.includes(scriptUrl) &&
+
!url.searchParams.has("inj") &&
+
(url.host.endsWith("discord.com") || url.host.endsWith("discordapp.com"))
+
);
+
});
+
if (hasUrl) blockedScripts.add(details.url);
-
blockLoading = false;
+
if (blockedScripts.size === scriptUrls.length) {
+
const blockedScriptsCopy = Array.from(blockedScripts);
+
blockedScripts.clear();
-
try {
-
await chrome.scripting.executeScript({
-
target: { tabId },
-
world: "MAIN",
-
args: [urls],
-
func: async (urls) => {
-
try {
-
await window._moonlightBrowserInit();
-
} catch (e) {
-
console.log(e);
-
}
+
setTimeout(async () => {
+
console.log("Starting moonlight");
+
await chrome.scripting.executeScript({
+
target: { tabId: details.tabId },
+
world: "MAIN",
+
args: [blockedScriptsCopy],
+
func: async (blockedScripts) => {
+
console.log("Initializing moonlight");
+
try {
+
await window._moonlightBrowserInit();
+
} catch (e) {
+
console.error(e);
+
}
-
const scripts = [...document.querySelectorAll("script")].filter(
-
(script) => script.src && urls.some((url) => url.includes(script.src))
-
);
+
console.log("Readding scripts");
+
try {
+
const scripts = [...document.querySelectorAll("script")].filter(
+
(script) => script.src && blockedScripts.some((url) => url.includes(script.src))
+
);
-
// backwards
-
urls.reverse();
-
for (const url of urls) {
-
const script = scripts.find((script) => url.includes(script.src));
-
console.log("adding new script", script);
+
blockedScripts.reverse();
+
for (const url of blockedScripts) {
+
if (url.includes("/sentry.")) continue;
-
const newScript = document.createElement("script");
-
for (const { name, value } of script.attributes) {
-
newScript.setAttribute(name, value);
+
const script = scripts.find((script) => url.includes(script.src));
+
const newScript = document.createElement("script");
+
for (const attr of script.attributes) {
+
if (attr.name === "src") attr.value += "?inj";
+
newScript.setAttribute(attr.name, attr.value);
+
}
+
script.remove();
+
document.documentElement.appendChild(newScript);
+
}
+
} catch (e) {
+
console.error(e);
+
}
}
-
-
script.remove();
-
document.documentElement.appendChild(newScript);
-
}
-
}
-
});
-
} catch (e) {
-
console.log(e);
-
}
-
-
doing = false;
-
collectedUrls.clear();
-
}
-
-
chrome.webRequest.onBeforeRequest.addListener(
-
async (details) => {
-
if (starterUrls.some((url) => details.url.includes(url))) {
-
console.log("Adding", details.url);
-
collectedUrls.add(details.url);
+
});
+
}, 0);
}
-
if (collectedUrls.size === starterUrls.length) {
-
if (doing) return;
-
if (!blockLoading) return;
-
doing = true;
-
const urls = [...collectedUrls];
-
const tabId = details.tabId;
-
-
// yes this is a load-bearing sleep
-
setTimeout(() => doTheThing(urls, tabId), 0);
-
}
-
-
if (blockLoading) return { cancel: true };
+
if (hasUrl) return { cancel: true };
},
{
-
urls: ["https://*.discord.com/assets/*.js"]
+
urls: ["https://*.discord.com/assets/*.js", "https://*.discordapp.com/assets/*.js"]
},
["blocking"]
);
···
)
};
},
-
{ urls: ["https://*.discord.com/*"] },
+
{ urls: ["https://*.discord.com/*", "https://*.discordapp.com/*"] },
["blocking", "responseHeaders"]
);
+37 -39
packages/browser/src/background.js
···
/* eslint-disable no-console */
/* eslint-disable no-undef */
-
const starterUrls = ["web.", "sentry."];
-
let blockLoading = true;
-
let doing = false;
-
let collectedUrls = new Set();
+
const scriptUrls = ["web.", "sentry."];
+
let blockedScripts = new Set();
chrome.webNavigation.onBeforeNavigate.addListener(async (details) => {
const url = new URL(details.url);
-
if (!blockLoading && url.hostname.endsWith("discord.com")) {
+
if (
+
!url.searchParams.has("inj") &&
+
(url.hostname.endsWith("discord.com") || url.hostname.endsWith("discordapp.com"))
+
) {
+
console.log("Enabling block ruleset");
await chrome.declarativeNetRequest.updateEnabledRulesets({
enableRulesetIds: ["modifyResponseHeaders", "blockLoading"]
});
-
blockLoading = true;
-
collectedUrls.clear();
}
});
chrome.webRequest.onBeforeRequest.addListener(
async (details) => {
if (details.tabId === -1) return;
-
if (starterUrls.some((url) => details.url.includes(url))) {
-
console.log("Adding", details.url);
-
collectedUrls.add(details.url);
-
}
-
if (collectedUrls.size === starterUrls.length) {
-
if (doing) return;
-
if (!blockLoading) return;
-
doing = true;
-
const urls = [...collectedUrls];
-
console.log("Doing", urls);
+
const url = new URL(details.url);
+
const hasUrl = scriptUrls.some((scriptUrl) => {
+
return (
+
details.url.includes(scriptUrl) &&
+
!url.searchParams.has("inj") &&
+
(url.hostname.endsWith("discord.com") || url.hostname.endsWith("discordapp.com"))
+
);
+
});
+
+
if (hasUrl) blockedScripts.add(details.url);
+
+
if (blockedScripts.size === scriptUrls.length) {
+
const blockedScriptsCopy = Array.from(blockedScripts);
+
blockedScripts.clear();
console.log("Running moonlight script");
try {
···
files: ["index.js"]
});
} catch (e) {
-
console.log(e);
+
console.error(e);
}
console.log("Initializing moonlight");
···
try {
await window._moonlightBrowserInit();
} catch (e) {
-
console.log(e);
+
console.error(e);
}
}
});
···
console.log(e);
}
-
console.log("Updating rulesets");
+
console.log("Disabling block ruleset");
try {
-
blockLoading = false;
await chrome.declarativeNetRequest.updateEnabledRulesets({
disableRulesetIds: ["blockLoading"],
enableRulesetIds: ["modifyResponseHeaders"]
});
} catch (e) {
-
console.log(e);
+
console.error(e);
}
console.log("Readding scripts");
···
await chrome.scripting.executeScript({
target: { tabId: details.tabId },
world: "MAIN",
-
args: [urls],
-
func: async (urls) => {
+
args: [blockedScriptsCopy],
+
func: async (blockedScripts) => {
const scripts = [...document.querySelectorAll("script")].filter(
-
(script) => script.src && urls.some((url) => url.includes(script.src))
+
(script) => script.src && blockedScripts.some((url) => url.includes(script.src))
);
-
// backwards
-
urls.reverse();
-
for (const url of urls) {
-
const script = scripts.find((script) => url.includes(script.src));
-
console.log("adding new script", script);
+
blockedScripts.reverse();
+
for (const url of blockedScripts) {
+
if (url.includes("/sentry.")) continue;
+
const script = scripts.find((script) => url.includes(script.src));
const newScript = document.createElement("script");
-
for (const { name, value } of script.attributes) {
-
newScript.setAttribute(name, value);
+
for (const attr of script.attributes) {
+
if (attr.name === "src") attr.value += "?inj";
+
newScript.setAttribute(attr.name, attr.value);
}
-
script.remove();
document.documentElement.appendChild(newScript);
}
}
});
} catch (e) {
-
console.log(e);
+
console.error(e);
}
-
-
console.log("Done");
-
doing = false;
-
collectedUrls.clear();
}
},
{
-
urls: ["*://*.discord.com/assets/*.js"]
+
urls: ["*://*.discord.com/assets/*.js", "*://*.discordapp.com/assets/*.js"]
}
);
+12 -10
packages/browser/src/index.ts
···
import { MoonlightBranch, MoonlightNode } from "@moonlight-mod/types";
import { getConfig, getConfigOption, getManifest, setConfigOption } from "@moonlight-mod/core/util/config";
import { IndexedDB } from "@zenfs/dom";
-
import { configure } from "@zenfs/core";
+
import { configureSingle } from "@zenfs/core";
import * as fs from "@zenfs/core/promises";
+
import { NodeEventPayloads, NodeEventType } from "@moonlight-mod/types/core/event";
+
import { createEventEmitter } from "@moonlight-mod/core/util/event";
function getParts(path: string) {
if (path.startsWith("/")) path = path.substring(1);
···
delete window._moonlightBrowserInit;
// Set up a virtual filesystem with IndexedDB
-
await configure({
-
mounts: {
-
"/": {
-
backend: IndexedDB,
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-
// @ts-ignore tsc tweaking
-
storeName: "moonlight-fs"
-
}
-
}
+
await configureSingle({
+
backend: IndexedDB,
+
storeName: "moonlight-fs"
});
window.moonlightNodeSandboxed = {
···
dirname(path) {
const parts = getParts(path);
return "/" + parts.slice(0, parts.length - 1).join("/");
+
},
+
basename(path) {
+
const parts = getParts(path);
+
return parts[parts.length - 1];
}
},
// TODO
···
processedExtensions,
nativesCache: {},
isBrowser: true,
+
events: createEventEmitter<NodeEventType, NodeEventPayloads>(),
version: MOONLIGHT_VERSION,
branch: MOONLIGHT_BRANCH as MoonlightBranch,
···
async writeConfig(newConfig) {
await writeConfig(newConfig);
config = newConfig;
+
this.events.dispatchEvent(NodeEventType.ConfigSaved, newConfig);
}
};
+1
packages/browser/tsconfig.json
···
{
"extends": "../../tsconfig.json",
"compilerOptions": {
+
"lib": ["DOM", "ESNext", "ESNext.AsyncIterable"],
"module": "ES2022"
}
}
+7
packages/core/package.json
···
"exports": {
"./*": "./src/*.ts"
},
+
"engineStrict": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
"@moonlight-mod/types": "workspace:*"
}
+5 -5
packages/core/src/extension/loader.ts
···
import calculateDependencies from "../util/dependency";
import { createEventEmitter } from "../util/event";
import { registerStyles } from "../styles";
-
import { EventPayloads, EventType } from "@moonlight-mod/types/core/event";
+
import { WebEventPayloads, WebEventType } from "@moonlight-mod/types/core/event";
const logger = new Logger("core/extension/loader");
···
}
export async function loadProcessedExtensions({ extensions, dependencyGraph }: ProcessedExtensions) {
-
const eventEmitter = createEventEmitter<EventType, EventPayloads>();
+
const eventEmitter = createEventEmitter<WebEventType, WebEventPayloads>();
const finished: Set<string> = new Set();
logger.trace(
···
}
function done() {
-
eventEmitter.removeEventListener(EventType.ExtensionLoad, cb);
+
eventEmitter.removeEventListener(WebEventType.ExtensionLoad, cb);
r();
}
-
eventEmitter.addEventListener(EventType.ExtensionLoad, cb);
+
eventEmitter.addEventListener(WebEventType.ExtensionLoad, cb);
if (finished.has(dep)) done();
})
);
···
await loadExt(ext);
finished.add(ext.id);
-
eventEmitter.dispatchEvent(EventType.ExtensionLoad, ext.id);
+
eventEmitter.dispatchEvent(WebEventType.ExtensionLoad, ext.id);
logger.debug(`Loaded "${ext.id}"`);
}
+1 -4
packages/core/src/extension.ts
···
const ret: DetectedExtension[] = [];
const seen = new Set<string>();
-
const coreExtensionsFs: Record<string, string> = JSON.parse(
-
// @ts-expect-error shut up
-
_moonlight_coreExtensionsStr
-
);
+
const coreExtensionsFs: Record<string, string> = JSON.parse(_moonlight_coreExtensionsStr);
const coreExtensions = Array.from(new Set(Object.keys(coreExtensionsFs).map((x) => x.split("/")[0])));
for (const ext of coreExtensions) {
+3
packages/core/src/fs.ts
···
},
dirname(dir) {
return path.dirname(dir);
+
},
+
basename(dir) {
+
return path.basename(dir);
}
};
}
+46 -32
packages/core/src/patch.ts
···
} from "@moonlight-mod/types";
import Logger from "./util/logger";
import calculateDependencies, { Dependency } from "./util/dependency";
-
import { EventType } from "@moonlight-mod/types/core/event";
+
import { WebEventType } from "@moonlight-mod/types/core/event";
import { processFind, processReplace, testFind } from "./util/patch";
const logger = new Logger("core/patch");
···
const moduleCache: Record<string, string> = {};
const patched: Record<string, Array<string>> = {};
-
function patchModules(entry: WebpackJsonpEntry[1]) {
-
function patchModule(id: string, patchId: string, replaced: string) {
-
// Store what extensions patched what modules for easier debugging
-
patched[id] = patched[id] || [];
-
patched[id].push(patchId);
+
function createSourceURL(id: string) {
+
const remapped = Object.entries(moonlight.moonmap.modules).find((m) => m[1] === id)?.[0];
+
+
if (remapped) {
+
return `// Webpack Module: ${id}\n//# sourceURL=${remapped}`;
+
}
-
// Webpack module arguments are minified, so we replace them with consistent names
-
// We have to wrap it so things don't break, though
-
const patchedStr = patched[id].sort().join(", ");
+
return `//# sourceURL=Webpack-Module/${id.slice(0, 3)}/${id}`;
+
}
-
const wrapped =
-
`(${replaced}).apply(this, arguments)\n` +
-
`// Patched by moonlight: ${patchedStr}\n` +
-
`//# sourceURL=Webpack-Module-${id}`;
+
function patchModule(id: string, patchId: string, replaced: string, entry: WebpackJsonpEntry[1]) {
+
// Store what extensions patched what modules for easier debugging
+
patched[id] = patched[id] ?? [];
+
patched[id].push(patchId);
-
try {
-
const func = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc;
-
entry[id] = func;
-
entry[id].__moonlight = true;
-
return true;
-
} catch (e) {
-
logger.warn("Error constructing function for patch", patchId, e);
-
patched[id].pop();
-
return false;
-
}
+
// Webpack module arguments are minified, so we replace them with consistent names
+
// We have to wrap it so things don't break, though
+
const patchedStr = patched[id].sort().join(", ");
+
+
const wrapped =
+
`(${replaced}).apply(this, arguments)\n` + `// Patched by moonlight: ${patchedStr}\n` + createSourceURL(id);
+
+
try {
+
const func = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc;
+
entry[id] = func;
+
entry[id].__moonlight = true;
+
return true;
+
} catch (e) {
+
logger.warn("Error constructing function for patch", patchId, e);
+
patched[id].pop();
+
return false;
}
+
}
+
function patchModules(entry: WebpackJsonpEntry[1]) {
// Populate the module cache
for (const [id, func] of Object.entries(entry)) {
if (!Object.hasOwn(moduleCache, id) && func.__moonlight !== true) {
···
const origModuleString = moduleCache[id];
let moduleString = origModuleString;
const patchedStr = [];
-
const mappedName = moonlight.moonmap.modules[id];
+
const mappedName = Object.entries(moonlight.moonmap.modules).find((m) => m[1] === id)?.[0];
let modified = false;
let swappedModule = false;
···
for (let i = 0; i < patches.length; i++) {
const patch = patches[i];
if (patch.prerequisite != null && !patch.prerequisite()) {
+
moonlight.unpatched.delete(patch);
continue;
}
···
// We ensured normal PatchReplace objects get turned into arrays on register
const replaces = patch.replace as PatchReplace[];
+
let isPatched = true;
for (let i = 0; i < replaces.length; i++) {
const replace = replaces[i];
let patchId = `${patch.ext}#${patch.id}`;
···
}
if (replaced === moduleString) {
-
logger.warn("Patch replacement failed", id, patch);
+
logger.warn("Patch replacement failed", id, patchId, patch);
+
isPatched = false;
if (patch.hardFail) {
hardFailed = true;
break;
···
exts.add(patch.ext);
}
-
moonlight.unpatched.delete(patch);
+
if (isPatched) moonlight.unpatched.delete(patch);
if (shouldRemove) patches.splice(i--, 1);
}
}
if (modified) {
-
if (!swappedModule) patchModule(id, patchedStr.join(", "), moduleString);
-
moduleCache[id] = moduleString;
+
let shouldCache = true;
+
if (!swappedModule) shouldCache = patchModule(id, patchedStr.join(", "), moduleString, entry);
+
if (shouldCache) moduleCache[id] = moduleString;
moonlight.patched.set(id, exts);
}
···
const parsed = moonlight.lunast.parseScript(id, moduleString);
if (parsed != null) {
for (const [parsedId, parsedScript] of Object.entries(parsed)) {
-
if (patchModule(parsedId, "lunast", parsedScript)) {
+
if (patchModule(parsedId, "lunast", parsedScript, entry)) {
moduleCache[parsedId] = parsedScript;
}
}
···
if (moonlightNode.config.patchAll === true) {
if ((typeof id !== "string" || !id.includes("_")) && !entry[id].__moonlight) {
-
const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${id}`;
+
const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + createSourceURL(id);
entry[id] = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc;
entry[id].__moonlight = true;
}
···
}
for (const [name, func] of Object.entries(moonlight.moonmap.getWebpackModules("window.moonlight.moonmap"))) {
+
// @ts-expect-error probably should fix the type on this idk
+
func.__moonlight = true;
injectedWpModules.push({ id: name, run: func });
modules[name] = func;
inject = true;
···
const realPush = jsonp.push;
if (jsonp.push.__moonlight !== true) {
jsonp.push = (items) => {
-
moonlight.events.dispatchEvent(EventType.ChunkLoad, {
+
moonlight.events.dispatchEvent(WebEventType.ChunkLoad, {
chunkId: items[0],
modules: items[1],
require: items[2]
···
set(modules: any) {
const { stack } = new Error();
if (stack!.includes("/assets/") && !Array.isArray(modules)) {
-
moonlight.events.dispatchEvent(EventType.ChunkLoad, {
+
moonlight.events.dispatchEvent(WebEventType.ChunkLoad, {
modules: modules
});
patchModules(modules);
+4 -1
packages/core/tsconfig.json
···
{
-
"extends": "../../tsconfig.json"
+
"extends": "../../tsconfig.json",
+
"compilerOptions": {
+
"lib": ["ESNext", "DOM"]
+
}
}
+9 -2
packages/core-extensions/package.json
···
{
"name": "@moonlight-mod/core-extensions",
"private": true,
+
"engineStrict": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
"@moonlight-mod/core": "workspace:*",
"@moonlight-mod/types": "workspace:*",
-
"microdiff": "^1.5.0",
-
"nanotar": "^0.1.1"
+
"microdiff": "catalog:prod",
+
"nanotar": "catalog:prod"
}
}
+14 -5
packages/core-extensions/src/commands/index.ts
···
replace: [
// inject commands
{
-
match: /return (\i)=\i/,
+
match: /return (\i)\.filter/,
replacement: (orig, commands) =>
-
`${commands}=[...${commands},...require("commands_commands").default._getCommands()];${orig}`
+
`return [...${commands},...require("commands_commands").default._getCommands()].filter`
},
// section
···
}
},
{
-
find: ".icon,bot:null===",
+
find: ".icon,bot:null==",
replace: {
-
match: /(\.useMemo\(\(\)=>{)(if\((\i)\.type)/,
-
replacement: (_, before, after, section) => `${before}
+
match: /(\.useMemo\(\(\)=>{(var \i;)?)((return |if\()(\i)\.type)/,
+
replacement: (_, before, beforeVar, after, afterIf, section) => `${before}
if (${section}.id==="${APPLICATION_ID}") return "https://moonlight-mod.github.io/favicon.png";
${after}`
}
···
replace: {
match: /(\i)\.type===\i\.\i\.BUILT_IN/,
replacement: (orig, section) => `${section}.id!=="${APPLICATION_ID}"&&${orig}`
+
}
+
},
+
+
// tell it this app id is authorized
+
{
+
find: /let{customInstallUrl:\i,installParams:\i,integrationTypesConfig:\i}/,
+
replace: {
+
match: /\|\|(\i)===\i\.\i\.BUILT_IN/,
+
replacement: (orig, id) => `${orig}||${id}==="${APPLICATION_ID}"`
}
}
];
+17 -1
packages/core-extensions/src/commands/webpackModules/commands.ts
···
applicationId: APPLICATION_ID,
untranslatedDescription: command.description,
displayDescription: command.description,
-
options: command.options.map((o) => ({
+
options: command.options?.map((o) => ({
...o,
displayName: o.name,
displayDescription: o.description
···
},
registerLegacyCommand(id, command) {
+
if (command.match) {
+
if (command.match instanceof RegExp) {
+
command.match = this.anyScopeRegex(command.match);
+
} else if (command.match.regex && typeof command.match !== "function") {
+
command.match = this.anyScopeRegex(command.match.regex);
+
}
+
}
+
if (!legacyCommands) {
queuedLegacyCommands![id] = command;
} else {
legacyCommands[id] = command;
}
+
},
+
+
anyScopeRegex(regex) {
+
const out = function (str: string) {
+
return regex.exec(str);
+
};
+
out.regex = regex;
+
return out;
},
_getCommands() {
+7 -5
packages/core-extensions/src/common/index.ts
···
export const webpackModules: ExtensionWebExports["webpackModules"] = {
stores: {
-
dependencies: [
-
{
-
id: "discord/packages/flux"
-
}
-
]
+
dependencies: [{ id: "discord/packages/flux" }]
+
},
+
ErrorBoundary: {
+
dependencies: [{ id: "react" }]
+
},
+
icons: {
+
dependencies: [{ id: "react" }, { id: "discord/components/common/index" }]
}
};
+1 -1
packages/core-extensions/src/common/manifest.json
···
"apiLevel": 2,
"meta": {
"name": "Common",
-
"tagline": "A *lot* of common clientmodding utilities from the Discord client",
+
"tagline": "Common client modding utilities for the Discord client",
"authors": ["Cynosphere", "NotNite"],
"tags": ["library"]
},
+27
packages/core-extensions/src/common/style.css
···
+
.moonlight-error-boundary {
+
margin: 0 0 15px;
+
padding: 10px;
+
border-radius: 5px;
+
font-size: 1rem;
+
font-weight: 300;
+
line-height: 22px;
+
color: var(--text-normal, white);
+
background: hsl(var(--red-400-hsl) / 0.1);
+
border: 2px solid hsl(var(--red-400-hsl) / 0.5);
+
+
.theme-light & {
+
color: var(--text-normal, black) !important;
+
}
+
+
& > h3 {
+
margin-bottom: 0.25rem;
+
}
+
+
& > .hljs {
+
background: var(--background-secondary);
+
border: 1px solid var(--background-tertiary);
+
white-space: pre-wrap;
+
font-family: var(--font-code);
+
user-select: text;
+
}
+
}
+47
packages/core-extensions/src/common/webpackModules/ErrorBoundary.tsx
···
+
import React from "@moonlight-mod/wp/react";
+
import { ErrorBoundaryProps, ErrorBoundaryState } from "@moonlight-mod/types/coreExtensions/common";
+
+
const logger = moonlight.getLogger("ErrorBoundary");
+
+
class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
+
constructor(props: ErrorBoundaryProps) {
+
super(props);
+
this.state = {
+
errored: false,
+
error: undefined,
+
componentStack: undefined
+
};
+
}
+
+
static getDerivedStateFromError(error: Error) {
+
return {
+
errored: true,
+
error
+
};
+
}
+
+
componentDidCatch(error: Error, { componentStack }: { componentStack: string }) {
+
logger.error(`${error}\n\nComponent stack:\n${componentStack}`);
+
this.setState({ error, componentStack });
+
}
+
+
render() {
+
const { noop, fallback: FallbackComponent, children, message } = this.props;
+
const { errored, error, componentStack } = this.state;
+
+
if (FallbackComponent) return <FallbackComponent children={children} {...this.state} />;
+
+
if (errored) {
+
return noop ? null : (
+
<div className={`moonlight-error-boundary`}>
+
<h3>{message ?? "An error occurred rendering this component:"}</h3>
+
<code className="hljs">{`${error}\n\nComponent stack:\n${componentStack}`}</code>
+
</div>
+
);
+
}
+
+
return children;
+
}
+
}
+
+
export default ErrorBoundary;
+31
packages/core-extensions/src/common/webpackModules/icons.ts
···
+
import { Icons, IconSize } from "@moonlight-mod/types/coreExtensions/common";
+
import { tokens } from "@moonlight-mod/wp/discord/components/common/index";
+
+
// This is defined in a Webpack module but we copy it here to be less breakage-prone
+
const sizes: Partial<Record<IconSize, number>> = {
+
xxs: 12,
+
xs: 16,
+
sm: 18,
+
md: 24,
+
lg: 32,
+
refresh_sm: 20
+
};
+
+
export const icons: Icons = {
+
parseProps(props) {
+
// NOTE: var() fallback is non-standard behavior, just for safety reasons
+
const color = props?.color ?? tokens?.colors?.["INTERACTIVE_NORMAL"] ?? "var(--interactive-normal)";
+
+
const size = sizes[props?.size ?? "md"];
+
+
return {
+
// note: this default size is also non-standard behavior, just for safety
+
width: size ?? props?.width ?? sizes.md!,
+
height: size ?? props?.width ?? sizes.md!,
+
+
fill: typeof color === "string" ? color : color.css,
+
className: props?.colorClass ?? ""
+
};
+
}
+
};
+
export default icons;
+16 -7
packages/core-extensions/src/componentEditor/index.ts
···
replacement: 'children:require("componentEditor_dmList").default._patchItems(['
},
{
-
match: /(?<=onMouseDown:\i}\))]/,
+
match: /(?<=(onMouseDown|nameplate):\i}\))]/,
replacement: "],arguments[0])"
}
],
···
find: ".lostPermission",
replace: [
{
-
match: /(?<=\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[\i\(\),.+?\i\(\)])/,
+
match:
+
/(?<=\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[\(0,\i\.jsx\)\(\i,{user:\i}\),.+?onClickPremiumGuildIcon:\i}\)])/,
replacement: (_, decorators) =>
`children:require("componentEditor_memberList").default._patchDecorators(${decorators},arguments[0])`
},
···
find: '},"new-member")),',
replace: [
{
-
match: /(?<=\.BADGES]=)(\i);/,
-
replacement: (_, badges) =>
-
`require("componentEditor_messages").default._patchUsernameBadges(${badges},arguments[0]);`
+
match: /(?<=\.BADGES](=|:))(\i)(;|})/,
+
replacement: (_, leading, badges, trailing) =>
+
`require("componentEditor_messages").default._patchUsernameBadges(${badges},arguments[0])${trailing}`
},
{
match: /(?<=className:\i,)badges:(\i)/,
···
`badges:require("componentEditor_messages").default._patchBadges(${badges},arguments[0])`
},
{
-
match: /(?<=username:\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[.+?,\i])/,
+
match: /(?<=username:\(0,\i\.jsxs\)\(\i\.Fragment,{)children:(\[.+?])}\),usernameSpanId:/,
replacement: (_, elements) =>
-
`children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])`
+
`children:require("componentEditor_messages").default._patchUsername(${elements},arguments[0])}),usernameSpanId:`
}
]
+
},
+
{
+
find: '.provider&&"Discord"===',
+
replace: {
+
match: /(?<=\.container\),)children:(\[.+?this\.renderSuppressConfirmModal\(\),.+?\])}\)/,
+
replacement: (_, elements) =>
+
`children:require("componentEditor_messages").default._patchAccessories(${elements},this.props)})`
+
}
}
];
+15
packages/core-extensions/src/componentEditor/webpackModules/messages.tsx
···
const username: Record<string, MessageUsername> = {};
const usernameBadges: Record<string, MessageUsernameBadge> = {};
const badges: Record<string, MessageBadge> = {};
+
const accessories: Record<string, React.FC<any>> = {};
function addEntries(
elements: React.ReactNode[],
···
const index = elements.indexOf(originalElements[indicies[entry.anchor]!]);
elements.splice(index! + (entry.before ? 0 : 1), 0, component);
}
+
}
+
}
+
+
function addComponents(elements: React.ReactNode[], components: Record<string, React.FC<any>>, props: any) {
+
for (const [id, Component] of Object.entries(components)) {
+
const component = <Component {...props} key={id} />;
+
elements.push(component);
}
}
···
before
};
},
+
addAccessory(id, component) {
+
accessories[id] = component;
+
},
_patchUsername(elements, props) {
addEntries(elements, username, MessageUsernameIndicies, props);
return elements;
···
},
_patchBadges(elements, props) {
addEntries(elements, badges, MessageBadgeIndicies, props);
+
return elements;
+
},
+
_patchAccessories(elements, props) {
+
addComponents(elements, accessories, props);
return elements;
}
};
+1 -1
packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts
···
const parserSym = code.match(/(?<=_patchMenu\(.,).+?(?=\()/)![0];
-
code = code.replace(/(?<=function\(\){return ).(?=})/, parserSym);
+
code = code.replace(/{(.):\(\)=>./, (orig, e) => `{${e}:()=>${parserSym}`);
const mod = new Function("module", "exports", "require", `(${code}).apply(this, arguments)`);
const exp: any = {};
+2 -2
packages/core-extensions/src/disableSentry/index.ts
···
find: "profiledRootComponent:",
replace: {
type: PatchReplaceType.Normal,
-
match: /(?<=\.Z=){.+?}}/,
-
replacement: 'require("disableSentry_stub").proxy()'
+
match: /Z:\(\)=>\i/,
+
replacement: 'Z:()=>require("disableSentry_stub").proxy()'
}
},
{
+23 -6
packages/core-extensions/src/experiments/index.ts
···
{
find: '"scientist:triggered"', // Scientist? Triggered.
replace: {
-
match: /(?<=personal_connection_id\|\|)!1/,
-
replacement: "!0"
+
match: ".personal_connection_id",
+
replacement: ".personal_connection_id || true"
}
},
···
{
find: ".HEADER_BAR)",
replace: {
-
match: /&&\((.)\?\(0,/,
+
match: /&&\((\i)\?\(0,/,
replacement: (_, isStaff) =>
`&&(((moonlight.getConfigOption("experiments","devtools")??false)?true:${isStaff})?(0,`
}
},
+
// staff help menu - visual refresh
+
{
+
find: '("AppTitleBar")',
+
replace: {
+
match: /{hasBugReporterAccess:(\i)}=\i\.\i\.useExperiment\({location:"HeaderBar"},{autoTrackExposure:!1}\);/,
+
replacement: (orig, isStaff) =>
+
`${orig}if(moonlight.getConfigOption("experiments","devtools")??false)${isStaff}=true;`
+
}
+
},
+
{
+
find: 'navId:"staff-help-popout",',
+
replace: {
+
match: /isDiscordDeveloper:(\i)}\),/,
+
replacement: (_, isStaff) =>
+
`isDiscordDeveloper:(moonlight.getConfigOption("experiments","devtools")??false)||${isStaff}}),`
+
}
+
},
// Enable further staff-locked options
{
find: "shouldShowLurkerModeUpsellPopout:",
replace: {
-
match: /\.useReducedMotion,isStaff:(.),/,
-
replacement: (_, isStaff) =>
-
`.useReducedMotion,isStaff:(moonlight.getConfigOption("experiments","staffSettings")??false)?true:${isStaff},`
+
match: /\.useReducedMotion,isStaff:(\i)(,|})/,
+
replacement: (_, isStaff, trail) =>
+
`.useReducedMotion,isStaff:(moonlight.getConfigOption("experiments","staffSettings")??false)?true:${isStaff}${trail}`
}
}
];
+12 -3
packages/core-extensions/src/moonbase/index.tsx
···
{
// CvQlAA mapped to ERRORS_ACTION_TO_TAKE
// FIXME: Better patch find?
-
match: /,(\(0,(.)\.jsx\))\("p",{children:.\.intl\.string\(.\..\.CvQlAA\)}\)/,
+
match: /,(\(0,(\i)\.jsx\))\("p",{children:\i\.\i\.string\(\i\.\i\.CvQlAA\)}\)/,
replacement: (_, createElement, ReactJSX) =>
`,${createElement}(require("moonbase_crashScreen")?.UpdateText??${ReactJSX}.Fragment,{state:this.state,setState:this.setState.bind(this)})`
},
// wrap actions field to display error details
{
-
match: /(?<=return(\(0,(.)\.jsx\))\(.+?,)action:(.),className:/,
+
match: /(?<=return(\(0,(\i)\.jsx\))\(.+?,)action:(\i),className:/,
replacement: (_, createElement, ReactJSX, action) =>
`action:require("moonbase_crashScreen")?.wrapAction?${createElement}(require("moonbase_crashScreen").wrapAction,{action:${action},state:this.state}):${action},className:`
},
···
// add update button
// +hivLS -> ERRORS_RELOAD
{
-
match: /(?<=\["\+hivLS"\]\)}\),(\(0,(.)\.jsx\))\(.,{}\))/,
+
match: /(?<=\["\+hivLS"\]\)}\),(\(0,(\i)\.jsx\))\(\i,{}\))/,
replacement: (_, createElement, ReactJSX) =>
`,${createElement}(require("moonbase_crashScreen")?.UpdateButton??${ReactJSX}.Fragment,{state:this.state,setState:this.setState.bind(this)})`
}
···
{ id: "react" },
{ id: "discord/components/common/index" },
{ ext: "moonbase", id: "stores" },
+
{ ext: "moonbase", id: "ThemeDarkIcon" },
{ id: "discord/modules/guild_settings/web/AppCard.css" },
+
{ ext: "contextMenu", id: "contextMenu" },
+
{ id: "discord/modules/modals/Modals" },
"Masks.PANEL_BUTTON",
'"Missing channel in Channel.openChannelContextMenu"',
".forumOrHome]:"
]
},
+
ThemeDarkIcon: {
+
dependencies: [{ ext: "common", id: "icons" }, { id: "react" }]
+
},
+
settings: {
dependencies: [
{ ext: "spacepack", id: "spacepack" },
{ ext: "settings", id: "settings" },
{ id: "react" },
{ ext: "moonbase", id: "ui" },
+
{ ext: "contextMenu", id: "contextMenu" },
':"USER_SETTINGS_MODAL_SET_SECTION"'
],
entrypoint: true
···
dependencies: [
{ id: "react" },
{ ext: "moonbase", id: "stores" },
+
{ ext: "moonbase", id: "ThemeDarkIcon" },
{ ext: "notices", id: "notices" },
{
ext: "spacepack",
+1 -1
packages/core-extensions/src/moonbase/manifest.json
···
"tagline": "The official settings UI for moonlight",
"authors": ["Cynosphere", "NotNite", "redstonekasi"]
},
-
"dependencies": ["spacepack", "settings", "common", "notices"],
+
"dependencies": ["spacepack", "settings", "common", "notices", "contextMenu"],
"settings": {
"sections": {
"advice": "reload",
+12 -21
packages/core-extensions/src/moonbase/native.ts
···
export const userAgent = `moonlight/${moonlightGlobal.version} (https://github.com/moonlight-mod/moonlight)`;
+
// User-Agent header causes trouble on Firefox
+
const isBrowser = globalThis.moonlightNode != null && globalThis.moonlightNode.isBrowser;
+
const sharedHeaders: Record<string, string> = {};
+
if (!isBrowser) sharedHeaders["User-Agent"] = userAgent;
+
async function getStableRelease(): Promise<{
name: string;
assets: {
···
}> {
const req = await fetch(githubApiUrl, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
return await req.json();
}
···
} else if (moonlightGlobal.branch === MoonlightBranch.NIGHTLY) {
const req = await fetch(nightlyRefUrl, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
const ref = (await req.text()).split("\n")[0];
return ref !== moonlightGlobal.version ? ref : null;
···
logger.debug(`Downloading ${asset.browser_download_url}`);
const req = await fetch(asset.browser_download_url, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
return [await req.arrayBuffer(), json.name];
···
logger.debug(`Downloading ${nightlyZipUrl}`);
const zipReq = await fetch(nightlyZipUrl, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
const refReq = await fetch(nightlyRefUrl, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
const ref = (await refReq.text()).split("\n")[0];
···
try {
const req = await fetch(repo, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
const json = await req.json();
ret[repo] = json;
···
async installExtension(manifest, url, repo) {
const req = await fetch(url, {
cache: "no-store",
-
headers: {
-
"User-Agent": userAgent
-
}
+
headers: sharedHeaders
});
const dir = moonlightGlobal.getExtensionDir(manifest.id);
+6 -2
packages/core-extensions/src/moonbase/style.css
···
padding-top: 0.5rem;
}
+
.moonbase-dev {
+
height: 4rem;
+
}
+
.moonbase-dev-avatar {
width: 2rem;
border-radius: 50%;
···
gap: 0.5rem;
}
-
.moonbase-about-text {
-
padding-top: 0.5rem;
+
.moonbase-about-page {
+
gap: 1rem;
}
+36
packages/core-extensions/src/moonbase/webpackModules/ThemeDarkIcon.tsx
···
+
// RIP to ThemeDarkIcon ????-2025
+
// <Cynthia> Failed to remap "ThemeDarkIcon" in "discord/components/common/index"
+
// <NotNite> bro are you fucking kidding me
+
// <NotNite> that's literally the icon we use for the update banner
+
+
import React from "@moonlight-mod/wp/react";
+
import icons from "@moonlight-mod/wp/common_icons";
+
import type { IconProps } from "@moonlight-mod/types/coreExtensions/common";
+
+
export default function ThemeDarkIcon(props?: IconProps) {
+
const parsed = icons.parseProps(props);
+
+
return (
+
<svg
+
aria-hidden="true"
+
role="img"
+
xmlns="http://www.w3.org/2000/svg"
+
width={parsed.width}
+
height={parsed.height}
+
fill="none"
+
viewBox="0 0 24 24"
+
>
+
<path
+
fill={parsed.fill}
+
className={parsed.className}
+
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"
+
/>
+
+
<path
+
fill={parsed.fill}
+
className={parsed.className}
+
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"
+
/>
+
</svg>
+
);
+
}
+21 -5
packages/core-extensions/src/moonbase/webpackModules/crashScreen.tsx
···
import { ConfigExtension, DetectedExtension } from "@moonlight-mod/types";
import DiscoveryClasses from "@moonlight-mod/wp/discord/modules/discovery/web/Discovery.css";
-
const MODULE_REGEX = /Webpack-Module-(\d+)/g;
+
const MODULE_REGEX = /Webpack-Module\/(\d+)\/(\d+)/g;
const logger = moonlight.getLogger("moonbase/crashScreen");
···
}
function ExtensionDisableCard({ ext }: { ext: DetectedExtension }) {
-
function disableWithDependents() {
+
async function disableWithDependents() {
const disable = new Set<string>();
disable.add(ext.id);
for (const [id, dependencies] of moonlightNode.processedExtensions.dependencyGraph) {
···
msg += "?";
if (confirm(msg)) {
-
moonlightNode.writeConfig(config);
+
await moonlightNode.writeConfig(config);
window.location.reload();
}
}
···
const causes = React.useMemo(() => {
const causes = new Set<string>();
if (state.error.stack) {
-
for (const [, id] of state.error.stack.matchAll(MODULE_REGEX))
+
for (const [, , id] of state.error.stack.matchAll(MODULE_REGEX))
for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
}
-
for (const [, id] of state.info.componentStack.matchAll(MODULE_REGEX))
+
for (const [, , id] of state.info.componentStack.matchAll(MODULE_REGEX))
for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
+
+
for (const [path, id] of Object.entries(moonlight.moonmap.modules)) {
+
const MAPPING_REGEX = new RegExp(
+
// @ts-expect-error Only Firefox has RegExp.escape
+
`(${RegExp.escape ? RegExp.escape(path) : path.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`,
+
"g"
+
);
+
+
if (state.error.stack) {
+
for (const match of state.error.stack.matchAll(MAPPING_REGEX))
+
if (match) for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
+
}
+
for (const match of state.info.componentStack.matchAll(MAPPING_REGEX))
+
if (match) for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
+
}
+
return [...causes];
}, []);
+4 -3
packages/core-extensions/src/moonbase/webpackModules/settings.tsx
···
import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators";
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
-
import { MenuItem, Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index";
+
import { Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index";
+
import { MenuItem } from "@moonlight-mod/wp/contextMenu_contextMenu";
const notice = {
stores: [MoonbaseSettingsStore],
···
onReset={() => {
MoonbaseSettingsStore.reset();
}}
-
onSave={() => {
-
MoonbaseSettingsStore.writeConfig();
+
onSave={async () => {
+
await MoonbaseSettingsStore.writeConfig();
}}
/>
);
+30 -10
packages/core-extensions/src/moonbase/webpackModules/stores.ts
···
import { mainRepo } from "@moonlight-mod/types/constants";
import { checkExtensionCompat, ExtensionCompat } from "@moonlight-mod/core/extension/loader";
import { CustomComponent } from "@moonlight-mod/types/coreExtensions/moonbase";
+
import { NodeEventType } from "@moonlight-mod/types/core/event";
import { getConfigOption, setConfigOption } from "@moonlight-mod/core/util/config";
import diff from "microdiff";
···
};
}
+
// This is async but we're calling it without
this.checkUpdates();
+
+
// Update our state if another extension edited the config programatically
+
moonlightNode.events.addEventListener(NodeEventType.ConfigSaved, (config) => {
+
if (!this.submitting) {
+
this.config = this.clone(config);
+
// NOTE: This is also async but we're calling it without
+
this.processConfigChanged();
+
}
+
});
}
async checkUpdates() {
···
let val = this.config.extensions[ext.id];
if (val == null) {
-
this.config.extensions[ext.id] = { enabled };
+
this.config.extensions[ext.id] = enabled;
this.modified = this.isModified();
this.emitChange();
return;
···
return returnedAdvice;
}
-
writeConfig() {
-
this.submitting = true;
-
this.restartAdvice = this.#computeRestartAdvice();
-
const modifiedRepos = diff(this.savedConfig.repositories, this.config.repositories);
+
async writeConfig() {
+
try {
+
this.submitting = true;
+
this.emitChange();
-
moonlightNode.writeConfig(this.config);
-
this.savedConfig = this.clone(this.config);
+
await moonlightNode.writeConfig(this.config);
+
await this.processConfigChanged();
+
} finally {
+
this.submitting = false;
+
this.emitChange();
+
}
+
}
-
this.submitting = false;
+
private async processConfigChanged() {
+
this.savedConfig = this.clone(this.config);
+
this.restartAdvice = this.#computeRestartAdvice();
this.modified = false;
-
this.emitChange();
-
if (modifiedRepos.length !== 0) this.checkUpdates();
+
const modifiedRepos = diff(this.savedConfig.repositories, this.config.repositories);
+
if (modifiedRepos.length !== 0) await this.checkUpdates();
+
+
this.emitChange();
}
reset() {
+23 -41
packages/core-extensions/src/moonbase/webpackModules/ui/about.tsx
···
import {
-
Card,
Text,
useThemeContext,
Button,
···
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import React from "@moonlight-mod/wp/react";
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
-
import AppCardClasses from "@moonlight-mod/wp/discord/modules/guild_settings/web/AppCard.css";
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
const wordmark = "https://raw.githubusercontent.com/moonlight-mod/moonlight/refs/heads/main/img/wordmark.png";
···
function Dev({ name, picture, link }: { name: string; picture: string; link: string }) {
return (
-
<Card editable={true} className={AppCardClasses.card}>
-
<div className={AppCardClasses.cardHeader + " moonbase-dev"}>
-
<Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER}>
-
<img src={picture} alt={name} className="moonbase-dev-avatar" />
+
<Button onClick={() => window.open(link)} color={Button.Colors.PRIMARY} className="moonbase-dev">
+
<Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap">
+
<img src={picture} alt={name} className="moonbase-dev-avatar" />
-
<Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER}>
-
<a href={link} rel="noreferrer noopener" target="_blank" tabIndex={-1}>
-
<Text variant="text-md/semibold">{name}</Text>
-
</a>
-
</Flex>
-
</Flex>
-
</div>
-
</Card>
+
<Text variant="text-md/semibold">{name}</Text>
+
</Flex>
+
</Button>
);
}
···
}
export default function AboutPage() {
-
const darkTheme = useThemeContext()?.theme === "dark";
+
const darkTheme = useThemeContext()?.theme !== "light";
return (
-
<div>
-
<Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER}>
-
<img src={darkTheme ? wordmarkLight : wordmark} alt="moonlight wordmark" className="moonbase-wordmark" />
-
<Text variant="heading-lg/medium">created by:</Text>
-
<div className="moonbase-devs">
-
<Dev name="Cynosphere" picture="https://github.com/Cynosphere.png" link="https://github.com/Cynosphere" />
-
<Dev name="NotNite" picture="https://github.com/NotNite.png" link="https://github.com/NotNite" />
-
<Dev name="adryd" picture="https://github.com/adryd325.png" link="https://github.com/adryd325" />
-
<Dev
-
name="redstonekasi"
-
picture="https://github.com/redstonekasi.png"
-
link="https://github.com/redstonekasi"
-
/>
-
</div>
+
<Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.CENTER} className="moonbase-about-page">
+
<img src={darkTheme ? wordmarkLight : wordmark} alt="moonlight wordmark" className="moonbase-wordmark" />
-
<Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap">
-
<IconButton text="View source" icon={AngleBracketsIcon} link="https://github.com/moonlight-mod/moonlight" />
-
<IconButton text="Open the docs" icon={BookCheckIcon} link="https://moonlight-mod.github.io/" />
-
<IconButton
-
text="Join the server"
-
icon={ClydeIcon}
-
link="https://discord.gg/FdZBTFCP6F"
-
openInClient={true}
-
/>
-
</Flex>
+
<Text variant="heading-lg/medium">created by:</Text>
+
<div className="moonbase-devs">
+
<Dev name="Cynosphere" picture="https://github.com/Cynosphere.png" link="https://github.com/Cynosphere" />
+
<Dev name="NotNite" picture="https://github.com/NotNite.png" link="https://github.com/NotNite" />
+
<Dev name="adryd" picture="https://github.com/adryd325.png" link="https://github.com/adryd325" />
+
<Dev name="redstonekasi" picture="https://github.com/redstonekasi.png" link="https://github.com/redstonekasi" />
+
</div>
+
+
<Flex direction={Flex.Direction.HORIZONTAL} align={Flex.Align.CENTER} className="moonbase-gap">
+
<IconButton text="View source" icon={AngleBracketsIcon} link="https://github.com/moonlight-mod/moonlight" />
+
<IconButton text="Open the docs" icon={BookCheckIcon} link="https://moonlight-mod.github.io/" />
+
<IconButton text="Join the server" icon={ClydeIcon} link="https://discord.gg/FdZBTFCP6F" openInClient={true} />
</Flex>
-
<Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.START} className="moonbase-about-text">
+
<Flex direction={Flex.Direction.VERTICAL} align={Flex.Align.START}>
<Text variant="text-sm/normal">
{parse(`moonlight \`${window.moonlight.version}\` on \`${window.moonlight.branch}\``)}
</Text>
···
)}
</Text>
</Flex>
-
</div>
+
</Flex>
);
}
+8 -3
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
···
import { ExtensionCompat } from "@moonlight-mod/core/extension/loader";
import {
-
BeakerIcon,
+
ScienceIcon,
DownloadIcon,
TrashIcon,
AngleBracketsIcon,
···
import MarkupClasses from "@moonlight-mod/wp/discord/modules/messages/web/Markup.css";
import BuildOverrideClasses from "@moonlight-mod/wp/discord/modules/build_overrides/web/BuildOverride.css";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
+
import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary";
import ExtensionInfo from "./info";
import Settings from "./settings";
import { doGenericExtensionPopup, doMissingExtensionPopup } from "./popup";
···
<Text variant="text-md/semibold">{ext.manifest?.meta?.name ?? ext.id}</Text>
{ext.source.type === ExtensionLoadSource.Developer && (
<Tooltip text="This is a local extension" position="top">
-
{(props: any) => <BeakerIcon {...props} class={BuildOverrideClasses.infoIcon} size="xs" />}
+
{(props: any) => <ScienceIcon {...props} class={BuildOverrideClasses.infoIcon} size="xs" />}
</Tooltip>
)}
···
})}
</Text>
)}
-
{tab === ExtensionPage.Settings && <Settings ext={ext} />}
+
{tab === ExtensionPage.Settings && (
+
<ErrorBoundary>
+
<Settings ext={ext} />
+
</ErrorBoundary>
+
)}
</Flex>
</div>
</Card>
+3 -5
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx
···
Popout,
Dialog,
Menu,
-
MenuGroup,
-
MenuCheckboxItem,
-
MenuItem,
ChevronSmallDownIcon,
ChevronSmallUpIcon,
ArrowsUpDownIcon,
RetryIcon,
Tooltip
} from "@moonlight-mod/wp/discord/components/common/index";
+
import { MenuGroup, MenuCheckboxItem, MenuItem } from "@moonlight-mod/wp/contextMenu_contextMenu";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
import TagItem from "@moonlight-mod/wp/discord/modules/forums/web/Tag";
···
{...props}
size={Button.Sizes.MIN}
color={Button.Colors.CUSTOM}
-
className={`${ForumsClasses.sortDropdown} moonbase-retry-button ${checkingUpdates ? "moonbase-speen" : ""}`}
+
className={`${ForumsClasses.sortDropdown} moonbase-retry-button`}
innerClassName={ForumsClasses.sortDropdownInner}
onClick={() => {
(async () => {
···
})();
}}
>
-
<RetryIcon size={"custom"} width={16} />
+
<RetryIcon size={"custom"} width={16} className={checkingUpdates ? "moonbase-speen" : ""} />
</Button>
)}
</Tooltip>
+7 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx
···
import PanelButton from "@moonlight-mod/wp/discord/components/common/PanelButton";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
+
import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary";
import { ExtensionCompat } from "@moonlight-mod/core/extension/loader";
import HelpMessage from "../HelpMessage";
···
)}
{filteredWithUpdates.map((ext) => (
-
<ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} />
+
<ErrorBoundary>
+
<ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} />
+
</ErrorBoundary>
))}
{filteredWithUpdates.length > 0 && filteredWithoutUpdates.length > 0 && (
<FormDivider className="moonbase-update-divider" />
)}
{filteredWithoutUpdates.map((ext) => (
-
<ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} />
+
<ErrorBoundary>
+
<ExtensionCard uniqueId={ext.uniqueId} key={ext.uniqueId} selectTag={selectTag} />
+
</ErrorBoundary>
))}
</>
);
+2 -7
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/popup.tsx
···
// TODO: clean up the styling here
import React from "@moonlight-mod/wp/react";
import { MoonbaseExtension } from "core-extensions/src/moonbase/types";
-
import {
-
openModalLazy,
-
useModalsStore,
-
closeModal,
-
SingleSelect,
-
Text
-
} from "@moonlight-mod/wp/discord/components/common/index";
+
import { openModalLazy, useModalsStore, closeModal } from "@moonlight-mod/wp/discord/modules/modals/Modals";
+
import { SingleSelect, Text } from "@moonlight-mod/wp/discord/components/common/index";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
import { ExtensionLoadSource } from "@moonlight-mod/types";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
+31 -15
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx
···
Button,
useVariableSelect,
multiSelect,
-
Select as DiscordSelect
+
Select as DiscordSelect,
+
NumberInputStepper
} from "@moonlight-mod/wp/discord/components/common/index";
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
+
import ErrorBoundary from "@moonlight-mod/wp/common_ErrorBoundary";
let GuildSettingsRoleEditClasses: any;
spacepack
···
const { value, displayName, description } = useConfigEntry<number>(ext.uniqueId, name);
const castedSetting = setting as NumberSettingType;
-
const min = castedSetting.min ?? 0;
-
const max = castedSetting.max ?? 100;
+
const min = castedSetting.min;
+
const max = castedSetting.max;
+
+
const onChange = (value: number) => {
+
const rounded = min == null || max == null ? Math.round(value) : Math.max(min, Math.min(max, Math.round(value)));
+
MoonbaseSettingsStore.setExtensionConfig(ext.id, name, rounded);
+
};
return (
<FormItem className={Margins.marginTop20} title={displayName}>
-
{description && <FormText>{markdownify(description)}</FormText>}
-
<Slider
-
initialValue={value ?? 0}
-
disabled={disabled}
-
minValue={castedSetting.min ?? 0}
-
maxValue={castedSetting.max ?? 100}
-
onValueChange={(value: number) => {
-
const rounded = Math.max(min, Math.min(max, Math.round(value)));
-
MoonbaseSettingsStore.setExtensionConfig(ext.id, name, rounded);
-
}}
-
/>
+
{min == null || max == null ? (
+
<Flex justify={Flex.Justify.BETWEEN} direction={Flex.Direction.HORIZONTAL}>
+
{description && <FormText>{markdownify(description)}</FormText>}
+
<NumberInputStepper value={value ?? 0} onChange={onChange} />
+
</Flex>
+
) : (
+
<>
+
{description && <FormText>{markdownify(description)}</FormText>}
+
<Slider
+
initialValue={value ?? 0}
+
disabled={disabled}
+
minValue={min}
+
maxValue={max}
+
onValueChange={onChange}
+
onValueRender={(value: number) => `${Math.round(value)}`}
+
/>
+
</>
+
)}
</FormItem>
);
}
···
}
return (
-
<Component value={value} setValue={(value) => MoonbaseSettingsStore.setExtensionConfig(ext.id, name, value)} />
+
<ErrorBoundary>
+
<Component value={value} setValue={(value) => MoonbaseSettingsStore.setExtensionConfig(ext.id, name, value)} />
+
</ErrorBoundary>
);
}
+1 -1
packages/core-extensions/src/moonbase/webpackModules/ui/update.tsx
···
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import {
-
ThemeDarkIcon,
Button,
Text,
ModalRoot,
···
openModal
} from "@moonlight-mod/wp/discord/components/common/index";
import MarkupClasses from "@moonlight-mod/wp/discord/modules/messages/web/Markup.css";
+
import ThemeDarkIcon from "@moonlight-mod/wp/moonbase_ThemeDarkIcon";
const strings: Record<UpdateState, string> = {
[UpdateState.Ready]: "A new version of moonlight is available.",
+1 -1
packages/core-extensions/src/moonbase/webpackModules/updates.tsx
···
import Notices from "@moonlight-mod/wp/notices_notices";
import { MoonlightBranch } from "@moonlight-mod/types";
import React from "@moonlight-mod/wp/react";
-
import { ThemeDarkIcon } from "@moonlight-mod/wp/discord/components/common/index";
+
import ThemeDarkIcon from "@moonlight-mod/wp/moonbase_ThemeDarkIcon";
function plural(str: string, num: number) {
return `${str}${num > 1 ? "s" : ""}`;
+5
packages/core-extensions/src/moonbase/wp.d.ts
···
declare module "@moonlight-mod/wp/moonbase_stores" {
export * from "core-extensions/src/moonbase/webpackModules/stores";
}
+
+
declare module "@moonlight-mod/wp/moonbase_ThemeDarkIcon" {
+
import ThemeDarkIcon from "core-extensions/src/moonbase/webpackModules/ThemeDarkIcon";
+
export = ThemeDarkIcon;
+
}
+14 -2
packages/core-extensions/src/nativeFixes/host.ts
···
app.commandLine.appendSwitch("disable-background-timer-throttling");
}
+
if (moonlightHost.getConfigOption<boolean>("nativeFixes", "vulkan") ?? false) {
+
enabledFeatures.push("Vulkan", "DefaultANGLEVulkan", "VulkanFromANGLE");
+
}
+
if (process.platform === "linux") {
if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxAutoscroll") ?? false) {
app.commandLine.appendSwitch("enable-blink-features", "MiddleClickAutoscroll");
···
if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxSpeechDispatcher") ?? true) {
app.commandLine.appendSwitch("enable-speech-dispatcher");
}
+
+
if (moonlightHost.getConfigOption<boolean>("nativeFixes", "linuxHevcSupport") ?? true) {
+
enabledFeatures.push("PlatformHEVCDecoderSupport");
+
}
}
// NOTE: Only tested if this appears on Windows, it should appear on all when
// hardware acceleration is disabled
const noAccel = app.commandLine.hasSwitch("disable-gpu-compositing");
if ((moonlightHost.getConfigOption<boolean>("nativeFixes", "vaapi") ?? true) && !noAccel) {
-
if (process.platform === "linux")
+
if (process.platform === "linux") {
// These will eventually be renamed https://source.chromium.org/chromium/chromium/src/+/5482210941a94d70406b8da962426e4faca7fce4
enabledFeatures.push("VaapiVideoEncoder", "VaapiVideoDecoder", "VaapiVideoDecodeLinuxGL");
+
+
if (moonlightHost.getConfigOption<boolean>("nativeFixes", "vaapiIgnoreDriverChecks") ?? false)
+
enabledFeatures.push("VaapiIgnoreDriverChecks");
+
}
}
app.commandLine.appendSwitch("enable-features", [...new Set(enabledFeatures)].join(","));
···
if (filePath === "resources/app.asar") {
// You tried
targetFilePath = path.join(targetDir, "resources", "_app.asar");
-
} else if (filePath === appName) {
+
} else if (filePath === appName || filePath === "chrome_crashpad_handler") {
// Can't write over the executable? Just move it! 4head
if (await exists(targetFilePath)) {
await fs.rename(targetFilePath, targetFilePath + ".bak");
+21
packages/core-extensions/src/nativeFixes/manifest.json
···
"type": "boolean",
"default": true
},
+
"vulkan": {
+
"advice": "restart",
+
"displayName": "Enable Vulkan renderer",
+
"description": "Uses the Vulkan backend for rendering",
+
"type": "boolean",
+
"default": false
+
},
"linuxAutoscroll": {
"advice": "restart",
"displayName": "Enable middle click autoscroll on Linux",
···
"type": "boolean",
"default": true
},
+
"vaapiIgnoreDriverChecks": {
+
"advice": "restart",
+
"displayName": "Ignore VAAPI driver checks on Linux",
+
"description": "Forces hardware video acceleration on some graphics drivers at the cost of stability. Has no effect on other operating systems",
+
"type": "boolean",
+
"default": false
+
},
"linuxUpdater": {
"advice": "restart",
"displayName": "Linux Updater",
"description": "Actually implements updating Discord on Linux. Has no effect on other operating systems",
"type": "boolean",
"default": false
+
},
+
"linuxHevcSupport": {
+
"advice": "restart",
+
"displayName": "HEVC support on Linux",
+
"description": "You might also need to enable Vulkan renderer. Has no effect on other operating systems",
+
"type": "boolean",
+
"default": true
}
},
"apiLevel": 2
+3 -3
packages/core-extensions/src/noHideToken/index.ts
···
export const patches: Patch[] = [
{
-
find: "hideToken:function",
+
find: "hideToken:()=>",
replace: {
-
match: /(?<=hideToken:function\(\){)/,
-
replacement: `return()=>{};`
+
match: /hideToken:\(\)=>.+?,/,
+
replacement: `hideToken:()=>{},`
}
}
];
+3 -3
packages/core-extensions/src/noTrack/index.ts
···
export const patches: Patch[] = [
{
-
find: "analyticsTrackingStoreMaker:function",
+
find: "analyticsTrackingStoreMaker:()=>",
replace: {
-
match: /analyticsTrackingStoreMaker:function\(\){return .+?}/,
-
replacement: "analyticsTrackingStoreMaker:function(){return ()=>{}}"
+
match: /analyticsTrackingStoreMaker:\(\)=>.+?,/,
+
replacement: "analyticsTrackingStoreMaker:()=>()=>{},"
}
},
{
+83 -15
packages/core-extensions/src/quietLoggers/index.ts
···
{
find: '("GatewaySocket")',
replace: {
-
match: /.\.(info|log)(\(.+?\))(;|,)/g,
-
replacement: (_, type, body, trail) => `(()=>{})${body}${trail}`
+
match: /\i\.(log|info)\(/g,
+
replacement: "(()=>{})("
+
}
+
},
+
{
+
find: '"_connect called with already existing websocket"',
+
replace: {
+
match: /\i\.(log|info|verbose)\(/g,
+
replacement: "(()=>{})("
}
}
];
···
// Patches to simply remove a logger call
const stubPatches = [
// "sh" is not a valid locale.
-
["is not a valid locale", /(.)\.error\(""\.concat\((.)," is not a valid locale\."\)\)/g],
-
['"[BUILD INFO] Release Channel: "', /new .{1,2}\.Z\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?\)\),/],
-
['.APP_NATIVE_CRASH,"Storage"', /console\.log\("AppCrashedFatalReport lastCrash:",.,.\);/],
-
['.APP_NATIVE_CRASH,"Storage"', 'console.log("AppCrashedFatalReport: getLastCrash not supported.");'],
-
['"[NATIVE INFO] ', /new .{1,2}\.Z\(\)\.log\("\[NATIVE INFO] .+?\)\);/],
-
['"Spellchecker"', /.\.info\("Switching to ".+?"\(unavailable\)"\);?/g],
-
['throw Error("Messages are still loading.");', /console\.warn\("Unsupported Locale",.\),/],
-
["}_dispatchWithDevtools(", /.\.totalTime>.{1,2}&&.\.verbose\(.+?\);/],
-
['"NativeDispatchUtils"', /null==.&&.\.warn\("Tried getting Dispatch instance before instantiated"\),/],
-
['("DatabaseManager")', /.\.log\("removing database \(user: ".+?\)\),/],
+
["is not a valid locale", /void \i\.error\(""\.concat\(\i," is not a valid locale\."\)\)/g],
+
['"[BUILD INFO] Release Channel: "', /new \i\.Z\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?\)\),/],
+
['.APP_NATIVE_CRASH,"Storage"', /console\.log\("AppCrashedFatalReport lastCrash:",\i,\i\);/],
+
['.APP_NATIVE_CRASH,"Storage"', 'void console.log("AppCrashedFatalReport: getLastCrash not supported.")'],
+
['"[NATIVE INFO] ', /new \i\.Z\(\)\.log\("\[NATIVE INFO] .+?\)\);/],
+
['"Spellchecker"', /\i\.info\("Switching to ".+?"\(unavailable\)"\);?/g],
+
['throw Error("Messages are still loading.");', /console\.warn\("Unsupported Locale",\i\),/],
+
["}_dispatchWithDevtools(", /\i\.totalTime>\i&&\i\.verbose\(.+?\);/],
+
['"NativeDispatchUtils"', /null==\i&&\i\.warn\("Tried getting Dispatch instance before instantiated"\),/],
[
'"Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch. Action: "',
-
/.\.has\(.\.type\)&&.\.log\(.+?\.type\)\),/
+
/\i\.has\(\i\.type\)&&\i\.log\(.+?\.type\)\),/
],
-
['console.warn("Window state not initialized"', /console\.warn\("Window state not initialized",.\),/]
+
['console.warn("Window state not initialized"', /console\.warn\("Window state not initialized",\i\),/],
+
['.name="MaxListenersExceededWarning",', /(?<=\.length),\i\(\i\)/],
+
[
+
'"The answer for life the universe and everything is:"',
+
/\i\.info\("The answer for life the universe and everything is:",\i\),/
+
],
+
[
+
'"isLibdiscoreBlockedDomainsEnabled called but libdiscore is not loaded"',
+
/,\i\.verbose\("isLibdiscoreBlockedDomainsEnabledThisSession: ".concat\(\i\)\)/
+
],
+
[
+
'"Unable to determine render window for element"',
+
/console\.warn\("Unable to determine render window for element",\i\),/
+
],
+
[
+
'"Unable to determine render window for element"',
+
/console\.warn\('Unable to find element constructor "'\.concat\(\i,'" in'\),\i\),/
+
],
+
[
+
'"[PostMessageTransport] Protocol error: event data should be an Array!"',
+
/void console\.warn\("\[PostMessageTransport] Protocol error: event data should be an Array!"\)/
+
],
+
[
+
'("ComponentDispatchUtils")',
+
/new \i\.Z\("ComponentDispatchUtils"\)\.warn\("ComponentDispatch\.resubscribe: Resubscribe without existing subscription",\i\),/
+
]
+
];
+
+
const stripLoggers = [
+
'("OverlayRenderStore")',
+
'("FetchBlockedDomain")',
+
'="UserSettingsProtoLastWriteTimes",',
+
'("MessageActionCreators")',
+
'("Routing/Utils")',
+
'("DatabaseManager")',
+
'("KeyboardLayoutMapUtils")',
+
'("ChannelMessages")',
+
'("MessageQueue")',
+
'("RTCLatencyTestManager")',
+
'("OverlayStoreV3")',
+
'("OverlayBridgeStore")',
+
'("AuthenticationStore")',
+
'("ConnectionStore")',
+
'"Dispatched INITIAL_GUILD "',
+
'"handleIdentify called"',
+
'("Spotify")'
];
const simplePatches = [
···
{
find: ".Messages.SELF_XSS_HEADER",
replace: {
-
match: /\(null!=.{1,2}&&"0\.0\.0"===.{1,2}\.remoteApp\.getVersion\(\)\)/,
+
match: /\(null!=\i&&"0\.0\.0"===\i\.remoteApp\.getVersion\(\)\)/,
replacement: "(true)"
}
},
+
{
+
find: '("ComponentDispatchUtils")',
+
replace: {
+
match:
+
/new \i\.Z\("ComponentDispatchUtils"\)\.warn\("ComponentDispatch\.subscribe: Attempting to add a duplicate listener",\i\)/,
+
replacement: "void 0"
+
},
+
prerequisite: notXssDefensesOnly
+
},
// Highlight.js deprecation warnings
{
find: "Deprecated as of",
···
replace: {
match: patch[0],
replacement: patch[1]
+
},
+
prerequisite: notXssDefensesOnly
+
})),
+
...stripLoggers.map((find) => ({
+
find,
+
replace: {
+
match: /(\i|this\.logger)\.(log|warn|error|info|verbose)\(/g,
+
replacement: "(()=>{})("
},
prerequisite: notXssDefensesOnly
}))
+2 -1
packages/core-extensions/src/rocketship/manifest.json
···
"name": "Rocketship",
"tagline": "Adds new features when using rocketship",
"description": "**This extension only works on Linux when using rocketship:**\nhttps://github.com/moonlight-mod/rocketship\n\nAdds new features to the Discord Linux client with rocketship, such as a better screensharing experience.",
-
"authors": ["NotNite", "Cynosphere", "adryd"]
+
"authors": ["NotNite", "Cynosphere", "adryd"],
+
"deprecated": true
}
}
+1 -1
packages/core-extensions/src/settings/index.ts
···
{
find: 'navId:"user-settings-cog",',
replace: {
-
match: /children:\[(.)\.map\(.+?\),children:.\((.)\)/,
+
match: /children:\[(\i)\.map\(.+?\),.*?children:\i\((\i)\)/,
replacement: (orig, sections, section) =>
`${orig.replace(
/Object\.values\(.\..+?\)/,
+8 -2
packages/core-extensions/src/settings/webpackModules/settings.ts
···
import { SettingsSection, Settings as SettingsType } from "@moonlight-mod/types/coreExtensions/settings";
+
import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators";
export const Settings: SettingsType = {
ourSections: [],
sectionNames: [],
sectionMenuItems: {},
-
addSection: (section, label, element, color = null, pos, notice) => {
+
addSection: (section, label, element, color = null, pos, notice, onClick) => {
const data: SettingsSection = {
section,
label,
color,
element,
pos: pos ?? -4,
-
notice: notice
+
notice: notice,
+
onClick: onClick ?? (() => UserSettingsModalActionCreators.open(section))
};
Settings.ourSections.push(data);
···
_mutateSections: (sections) => {
for (const section of Settings.ourSections) {
+
// Discord's `pos` only supports numbers, so lets call the function to get the position.
+
if (typeof section.pos === "function") {
+
section.pos = section.pos(sections);
+
}
sections.splice(section.pos < 0 ? sections.length + section.pos : section.pos, 0, section);
}
+29 -10
packages/core-extensions/src/spacepack/webpackModules/spacepack.ts
···
"module",
"exports",
"require",
-
`(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${module}`
+
`(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module/${module.slice(0, 3)}/${module}`
) as WebpackModuleFunc;
},
···
try {
exports = require(id);
} catch (e) {
-
logger.error(`Error requiring module "${id}": `, e);
+
logger.error(`findByCode: Error requiring module "${id}": `, args, e);
}
return {
···
.filter((item) => item !== null);
if (ret.length === 0) {
-
logger.warn("Got zero results for", args, new Error().stack!.substring(5));
+
logger.warn("findByCode: Got zero results for", args, new Error().stack!.substring(5));
}
return ret;
···
}
if (ret == null) {
-
logger.warn("Failed to get object by key", key, "in", exports, new Error().stack!.substring(5));
+
logger.warn("Failed to find object by key", key, "in", exports, new Error().stack!.substring(5));
}
return ret;
···
}
if (ret == null) {
-
logger.warn("Failed to get object by value", value, "in", exports, new Error().stack!.substring(5));
+
logger.warn("Failed to find object by value", value, "in", exports, new Error().stack!.substring(5));
}
return ret;
···
}
if (ret == null) {
-
logger.warn("Failed to get object by key value pair", key, value, "in", exports, new Error().stack!.substring(5));
+
logger.warn(
+
"Failed to find object by key value pair",
+
key,
+
value,
+
"in",
+
exports,
+
new Error().stack!.substring(5)
+
);
}
return null;
···
)?.[0]?.[1] ?? null;
if (ret == null) {
-
logger.warn("Failed to get function by strings", strings, "in", exports, new Error().stack!.substring(5));
+
logger.warn("Failed to find function by strings", strings, "in", exports, new Error().stack!.substring(5));
}
return ret;
},
lazyLoad: (find: string | RegExp | (string | RegExp)[], chunk: RegExp, module: RegExp) => {
+
chunk = processFind(chunk);
+
module = processFind(module);
+
const mod = Array.isArray(find) ? spacepack.findByCode(...find) : spacepack.findByCode(find);
-
if (mod.length < 1) return Promise.reject("Module find failed");
+
if (mod.length < 1) {
+
logger.warn("lazyLoad: Module find failed", find, chunk, module, new Error().stack!.substring(5));
+
return Promise.reject("Module find failed");
+
}
const findId = mod[0].id;
const findCode = webpackRequire.m[findId].toString().replace(/\n/g, "");
···
if (match) chunkIds = [...match[0].matchAll(/"(\d+)"/g)].map(([, id]) => id);
}
-
if (!chunkIds || chunkIds.length === 0) return Promise.reject("Chunk ID match failed");
+
if (!chunkIds || chunkIds.length === 0) {
+
logger.warn("lazyLoad: Chunk ID match failed", find, chunk, module, new Error().stack!.substring(5));
+
return Promise.reject("Chunk ID match failed");
+
}
const moduleId = findCode.match(module)?.[1];
-
if (!moduleId) return Promise.reject("Module ID match failed");
+
if (!moduleId) {
+
logger.warn("lazyLoad: Module ID match failed", find, chunk, module, new Error().stack!.substring(5));
+
return Promise.reject("Module ID match failed");
+
}
return Promise.all(chunkIds.map((c) => webpackRequire.e(c))).then(() => webpackRequire(moduleId));
},
+4 -1
packages/core-extensions/tsconfig.json
···
{
-
"extends": "../../tsconfig.json"
+
"extends": "../../tsconfig.json",
+
"compilerOptions": {
+
"lib": ["ESNext", "DOM", "DOM.Iterable"]
+
}
}
+10 -3
packages/injector/package.json
···
{
"name": "@moonlight-mod/injector",
"private": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
-
"@moonlight-mod/types": "workspace:*",
-
"@moonlight-mod/core": "workspace:*"
-
}
+
"@moonlight-mod/core": "workspace:*",
+
"@moonlight-mod/types": "workspace:*"
+
},
+
"engineStrict": true
}
+28 -3
packages/injector/src/index.ts
···
blockedUrls = compiled;
});
-
function patchCsp(headers: Record<string, string[]>) {
+
function patchCsp(headers: Record<string, string[]>, extensionCspOverrides: Record<string, string[]>) {
const directives = ["script-src", "style-src", "connect-src", "img-src", "font-src", "media-src", "worker-src"];
const values = ["*", "blob:", "data:", "'unsafe-inline'", "'unsafe-eval'", "disclip:"];
···
for (const directive of directives) {
parts[directive] = values;
+
}
+
+
for (const [directive, urls] of Object.entries(extensionCspOverrides)) {
+
parts[directive] ??= [];
+
parts[directive].push(...urls);
}
const stringified = Object.entries<string[]>(parts)
···
// Event for when a window is created
moonlightHost.events.emit("window-created", this, isMainWindow);
+
const extensionCspOverrides: Record<string, string[]> = {};
+
+
{
+
const extCsps = moonlightHost.processedExtensions.extensions.map((x) => x.manifest.csp ?? {});
+
for (const csp of extCsps) {
+
for (const [directive, urls] of Object.entries(csp)) {
+
extensionCspOverrides[directive] ??= [];
+
extensionCspOverrides[directive].push(...urls);
+
}
+
}
+
}
+
this.webContents.session.webRequest.onHeadersReceived((details, cb) => {
if (details.responseHeaders != null) {
// Patch CSP so things can use externally hosted assets
if (details.resourceType === "mainFrame") {
-
patchCsp(details.responseHeaders);
+
patchCsp(details.responseHeaders, extensionCspOverrides);
}
// Allow plugins to bypass CORS for specific URLs
if (corsAllow.some((x) => details.url.startsWith(x))) {
-
details.responseHeaders["access-control-allow-origin"] = ["*"];
+
if (!details.responseHeaders) details.responseHeaders = {};
+
+
// Work around HTTP header case sensitivity by reusing the header name if it exists
+
// https://github.com/moonlight-mod/moonlight/issues/201
+
const fallback = "access-control-allow-origin";
+
const key = Object.keys(details.responseHeaders).find((h) => h.toLowerCase() === fallback) ?? fallback;
+
details.responseHeaders[key] = ["*"];
}
+
+
moonlightHost.events.emit("headers-received", details, isMainWindow);
cb({ cancel: false, responseHeaders: details.responseHeaders });
}
+8 -1
packages/node-preload/package.json
···
{
"name": "@moonlight-mod/node-preload",
"private": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
"@moonlight-mod/core": "workspace:*",
"@moonlight-mod/types": "workspace:*"
-
}
+
},
+
"engineStrict": true
}
+4
packages/node-preload/src/index.ts
···
import createFS from "@moonlight-mod/core/fs";
import { registerCors, registerBlocked, getDynamicCors } from "@moonlight-mod/core/cors";
import { getConfig, getConfigOption, getManifest, setConfigOption } from "@moonlight-mod/core/util/config";
+
import { NodeEventPayloads, NodeEventType } from "@moonlight-mod/types/core/event";
+
import { createEventEmitter } from "@moonlight-mod/core/util/event";
let initialized = false;
let logger: Logger;
···
processedExtensions,
nativesCache: {},
isBrowser: false,
+
events: createEventEmitter<NodeEventType, NodeEventPayloads>(),
version: MOONLIGHT_VERSION,
branch: MOONLIGHT_BRANCH as MoonlightBranch,
···
async writeConfig(newConfig) {
await writeConfig(newConfig);
config = newConfig;
+
this.events.dispatchEvent(NodeEventType.ConfigSaved, newConfig);
},
getNatives: (ext: string) => global.moonlightNode.nativesCache[ext],
+4 -1
packages/node-preload/tsconfig.json
···
{
-
"extends": "../../tsconfig.json"
+
"extends": "../../tsconfig.json",
+
"compilerOptions": {
+
"lib": ["DOM", "ESNext", "DOM.Iterable"]
+
}
}
+14 -7
packages/types/package.json
···
{
"name": "@moonlight-mod/types",
-
"version": "1.3.8",
-
"main": "./src/index.ts",
-
"types": "./src/index.ts",
+
"version": "1.3.17",
"exports": {
".": "./src/index.ts",
"./import": "./src/import.d.ts",
"./*": "./src/*.ts"
},
+
"main": "./src/index.ts",
+
"types": "./src/index.ts",
+
"engineStrict": false,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
-
"@moonlight-mod/lunast": "^1.0.0",
-
"@moonlight-mod/mappings": "^1.1.8",
-
"@moonlight-mod/moonmap": "^1.0.3",
+
"@moonlight-mod/lunast": "^1.0.1",
+
"@moonlight-mod/mappings": "^1.1.25",
+
"@moonlight-mod/moonmap": "^1.0.5",
"@types/react": "^18.3.10",
-
"csstype": "^3.1.2",
+
"csstype": "^3.1.3",
"standalone-electron-types": "^1.0.0"
}
}
+13 -4
packages/types/src/core/event.ts
···
+
import { Config } from "../config";
import { WebpackModuleFunc, WebpackRequireType } from "../discord";
export interface MoonlightEventEmitter<EventId extends string = string, EventData = Record<EventId, any>> {
···
removeEventListener: <Id extends keyof EventData>(id: Id, cb: (data: EventData[Id]) => void) => void;
}
-
export enum EventType {
+
export enum WebEventType {
ChunkLoad = "chunkLoad",
ExtensionLoad = "extensionLoad"
}
-
export type EventPayloads = {
-
[EventType.ChunkLoad]: {
+
export type WebEventPayloads = {
+
[WebEventType.ChunkLoad]: {
chunkId?: number[];
modules: { [id: string]: WebpackModuleFunc };
require?: (require: WebpackRequireType) => any;
};
-
[EventType.ExtensionLoad]: string;
+
[WebEventType.ExtensionLoad]: string;
+
};
+
+
export enum NodeEventType {
+
ConfigSaved = "configSaved"
+
}
+
+
export type NodeEventPayloads = {
+
[NodeEventType.ConfigSaved]: Config;
};
+94 -16
packages/types/src/coreExtensions/commands.ts
···
}
export enum OptionType {
-
ATTACHMENT = 11,
+
SUB_COMMAND = 1,
+
SUB_COMMAND_GROUP = 2,
+
STRING = 3,
+
INTEGER = 4,
BOOLEAN = 5,
+
USER = 6,
CHANNEL = 7,
-
INTEGER = 4,
+
ROLE = 8,
MENTIONABLE = 9,
NUMBER = 10,
-
ROLE = 8,
-
STRING = 3,
-
SUB_COMMAND = 1,
-
SUB_COMMAND_GROUP = 2,
-
USER = 6
+
ATTACHMENT = 11
+
}
+
+
export enum ChannelType {
+
GUILD_TEXT = 0,
+
DM = 1,
+
GUILD_VOICE = 2,
+
GROUP_DM = 3,
+
GUILD_CATEGORY = 4,
+
GUILD_ANNOUNCEMENT = 5,
+
GUILD_STORE = 6,
+
ANNOUNCEMENT_THREAD = 10,
+
PUBLIC_THREAD = 11,
+
PRIVATE_THREAD = 12,
+
GUILD_STAGE_VOICE = 13,
+
GUILD_DIRECTORY = 14,
+
GUILD_FORUM = 15,
+
GUILD_MEDIA = 16,
+
LOBBY = 17,
+
DM_SDK = 18
}
-
export type RegisteredCommandOption = {
-
name: string;
+
export type RegisteredCommandOption = MoonlightCommandOption & {
displayName: string;
-
type: OptionType;
-
description: string;
displayDescription: string;
};
-
export type MoonlightCommandOption = {
+
export type CommandOptionChoice<T> = {
+
name: string;
+
value: T;
+
};
+
+
type CommandOptionBase<T> = {
+
type: T;
name: string;
-
type: OptionType;
description: string;
+
required?: T extends OptionType.SUB_COMMAND
+
? never
+
: T extends OptionType.SUB_COMMAND_GROUP
+
? never
+
: boolean | undefined;
+
choices?: T extends OptionType.STRING
+
? CommandOptionChoice<string>[]
+
: T extends OptionType.INTEGER
+
? CommandOptionChoice<number>[]
+
: T extends OptionType.NUMBER
+
? CommandOptionChoice<number>[]
+
: never;
+
options?: T extends OptionType.SUB_COMMAND
+
? MoonlightCommandOption[]
+
: T extends OptionType.SUB_COMMAND_GROUP
+
? MoonlightCommandOption[]
+
: never;
+
channelTypes?: T extends OptionType.CHANNEL ? ChannelType[] : never;
+
minValue?: T extends OptionType.INTEGER ? number : T extends OptionType.NUMBER ? number : never;
+
maxValue?: T extends OptionType.INTEGER ? number : T extends OptionType.NUMBER ? number : never;
+
minLength?: T extends OptionType.STRING ? number : never;
+
maxLength?: T extends OptionType.STRING ? number : never;
};
+
+
// This is bad lol
+
export type MoonlightCommandOption =
+
| CommandOptionBase<OptionType.SUB_COMMAND>
+
| CommandOptionBase<OptionType.SUB_COMMAND_GROUP>
+
| CommandOptionBase<OptionType.STRING>
+
| CommandOptionBase<OptionType.INTEGER>
+
| CommandOptionBase<OptionType.BOOLEAN>
+
| CommandOptionBase<OptionType.USER>
+
| CommandOptionBase<OptionType.CHANNEL>
+
| CommandOptionBase<OptionType.ROLE>
+
| CommandOptionBase<OptionType.MENTIONABLE>
+
| CommandOptionBase<OptionType.NUMBER>
+
| CommandOptionBase<OptionType.ATTACHMENT>;
// TODO: types
export type CommandPredicateState = {
···
applicationId: string; // set to -3!
untranslatedDescription: string;
displayDescription: string;
-
options: RegisteredCommandOption[];
+
options?: RegisteredCommandOption[];
predicate?: (state: CommandPredicateState) => boolean;
execute: (options: CommandOption[]) => void;
};
···
* You likely want BUILT_IN (or BUILT_IN_TEXT if usable with replies)
*/
inputType: InputType;
-
options: MoonlightCommandOption[];
+
options?: MoonlightCommandOption[];
predicate?: (state: CommandPredicateState) => boolean;
execute: (options: CommandOption[]) => void;
};
···
type: OptionType.STRING;
value: string;
}
+
| {
+
type: OptionType.NUMBER | OptionType.INTEGER;
+
value: number;
+
}
+
| {
+
type: OptionType.BOOLEAN;
+
value: boolean;
+
}
+
| {
+
type: OptionType.SUB_COMMAND | OptionType.SUB_COMMAND_GROUP;
+
options: CommandOption[];
+
}
);
+
+
export type AnyScopeRegex = RegExp["exec"] & {
+
regex: RegExp;
+
};
export type Commands = {
/**
···
registerLegacyCommand: (id: string, command: LegacyCommand) => void;
/**
+
* Creates a regular expression that legacy commands can understand
+
*/
+
anyScopeRegex: (regex: RegExp) => AnyScopeRegex;
+
+
/**
* @private
*/
_getCommands: () => RegisteredCommand[];
···
};
export type LegacyCommand = {
-
match?: RegExp;
+
match?: RegExp | { regex: RegExp } | AnyScopeRegex;
action: (content: string, context: LegacyContext) => LegacyReturn;
};
+33
packages/types/src/coreExtensions/common.ts
···
+
import type { IconProps, IconSize } from "@moonlight-mod/mappings/discord/components/common/index";
+
+
export type ErrorBoundaryProps = React.PropsWithChildren<{
+
noop?: boolean;
+
fallback?: React.FC<any>;
+
message?: string;
+
}>;
+
+
export type ErrorBoundaryState = {
+
errored: boolean;
+
error?: Error;
+
componentStack?: string;
+
};
+
+
export type ErrorBoundary = React.ComponentClass<ErrorBoundaryProps, ErrorBoundaryState>;
+
+
export type ParsedIconProps = {
+
width: number;
+
height: number;
+
fill: string;
+
className: string;
+
};
+
+
export interface Icons {
+
/**
+
* Parse icon props into their actual width/height.
+
* @param props The icon props
+
*/
+
parseProps(props?: IconProps): ParsedIconProps;
+
}
+
+
// Re-export so extension developers don't need to depend on mappings
+
export type { IconProps, IconSize };
+17
packages/types/src/coreExtensions/componentEditor.ts
···
}
export type Messages = {
+
/**
+
* Adds a component to the username of a message
+
*/
addToUsername: (id: string, component: React.FC<any>, anchor?: MessageUsernameAnchors, before?: boolean) => void;
+
/**
+
* Adds a component to the username badge area of a message (e.g. where role icons/new member badge is)
+
*/
addUsernameBadge: (
id: string,
component: React.FC<any>,
anchor?: MessageUsernameBadgeAnchors,
before?: boolean
) => void;
+
/**
+
* Adds a component to the end of a message header (e.g. silent indicator)
+
*/
addBadge: (id: string, component: React.FC<any>, anchor?: MessageBadgeAnchors, before?: boolean) => void;
/**
+
* Adds a component to message accessories (e.g. embeds)
+
*/
+
addAccessory: (id: string, component: React.FC<any>) => void;
+
/**
* @private
*/
_patchUsername: Patcher<any>;
···
* @private
*/
_patchBadges: Patcher<any>;
+
/**
+
* @private
+
*/
+
_patchAccessories: Patcher<any>;
};
//#endregion
+10 -7
packages/types/src/coreExtensions/settings.ts
···
};
export type SettingsSection =
-
| { section: "DIVIDER"; pos: number }
-
| { section: "HEADER"; label: string; pos: number }
+
| { section: "DIVIDER"; pos: number | ((sections: SettingsSection[]) => number) }
+
| { section: "HEADER"; label: string; pos: number | ((sections: SettingsSection[]) => number) }
| {
section: string;
label: string;
color: string | null;
element: React.FunctionComponent;
-
pos: number;
+
pos: number | ((sections: SettingsSection[]) => number);
notice?: NoticeProps;
+
onClick?: () => void;
_moonlight_submenu?: () => ReactElement | ReactElement[];
};
···
* @param color A color to use for the section
* @param pos The position in the settings menu to place the section
* @param notice A notice to display when in the section
+
* @param onClick A custom action to execute when clicked from the context menu
*/
addSection: (
section: string,
label: string,
element: React.FunctionComponent,
color?: string | null,
-
pos?: number,
-
notice?: NoticeProps
+
pos?: number | ((sections: SettingsSection[]) => number),
+
notice?: NoticeProps,
+
onClick?: () => void
) => void;
/**
···
* Places a divider in the settings menu.
* @param pos The position in the settings menu to place the divider
*/
-
addDivider: (pos: number | null) => void;
+
addDivider: (pos: number | ((sections: SettingsSection[]) => number) | null) => void;
/**
* Places a header in the settings menu.
* @param pos The position in the settings menu to place the header
*/
-
addHeader: (label: string, pos: number | null) => void;
+
addHeader: (label: string, pos: number | ((sections: SettingsSection[]) => number) | null) => void;
/**
* @private
+1
packages/types/src/coreExtensions.ts
···
export * as AppPanels from "./coreExtensions/appPanels";
export * as Commands from "./coreExtensions/commands";
export * as ComponentEditor from "./coreExtensions/componentEditor";
+
export * as Common from "./coreExtensions/common";
+4
packages/types/src/discord/require.ts
···
import { AppPanels } from "../coreExtensions/appPanels";
import { Commands } from "../coreExtensions/commands";
+
import { ErrorBoundary, Icons } from "../coreExtensions/common";
import { DMList, MemberList, Messages } from "../coreExtensions/componentEditor";
import { ContextMenu, EvilItemParser } from "../coreExtensions/contextMenu";
import { Markdown } from "../coreExtensions/markdown";
···
declare function WebpackRequire(id: "appPanels_appPanels"): AppPanels;
declare function WebpackRequire(id: "commands_commands"): Commands;
+
+
declare function WebpackRequire(id: "common_ErrorBoundary"): ErrorBoundary;
+
declare function WebpackRequire(id: "common_icons"): Icons;
declare function WebpackRequire(id: "componentEditor_dmList"): DMList;
declare function WebpackRequire(id: "componentEditor_memberList"): MemberList;
+6
packages/types/src/extension.ts
···
* @example https://moonlight-mod.github.io/
*/
blocked?: string[];
+
+
/**
+
* A mapping from CSP directives to URLs to allow.
+
* @example { "script-src": ["https://example.com"] }
+
*/
+
csp?: Record<string, string[]>;
};
export enum ExtensionEnvironment {
+1
packages/types/src/fs.ts
···
join: (...parts: string[]) => string;
dirname: (path: string) => string;
+
basename: (path: string) => string;
};
+10 -3
packages/types/src/globals.ts
···
import type EventEmitter from "events";
import type LunAST from "@moonlight-mod/lunast";
import type Moonmap from "@moonlight-mod/moonmap";
-
import type { EventPayloads, EventType, MoonlightEventEmitter } from "./core/event";
-
import { MoonlightFS } from "./fs";
+
import type {
+
WebEventPayloads,
+
WebEventType,
+
MoonlightEventEmitter,
+
NodeEventType,
+
NodeEventPayloads
+
} from "./core/event";
+
import type { MoonlightFS } from "./fs";
export type MoonlightHost = {
config: Config;
···
processedExtensions: ProcessedExtensions;
nativesCache: Record<string, any>;
isBrowser: boolean;
+
events: MoonlightEventEmitter<NodeEventType, NodeEventPayloads>;
version: string;
branch: MoonlightBranch;
···
unpatched: Set<IdentifiedPatch>;
pendingModules: Set<IdentifiedWebpackModule>;
enabledExtensions: Set<string>;
-
events: MoonlightEventEmitter<EventType, EventPayloads>;
+
events: MoonlightEventEmitter<WebEventType, WebEventPayloads>;
patchingInternals: {
onModuleLoad: (moduleId: string | string[], callback: (moduleId: string) => void) => void;
registerPatch: (patch: IdentifiedPatch) => void;
+10
packages/types/src/import.d.ts
···
export default commands;
}
+
declare module "@moonlight-mod/wp/common_ErrorBoundary" {
+
import { CoreExtensions } from "@moonlight-mod/types";
+
const ErrorBoundary: CoreExtensions.Common.ErrorBoundary;
+
export = ErrorBoundary;
+
}
+
declare module "@moonlight-mod/wp/common_icons" {
+
import { CoreExtensions } from "@moonlight-mod/types";
+
export const icons: CoreExtensions.Common.Icons;
+
export default icons;
+
}
declare module "@moonlight-mod/wp/common_stores";
declare module "@moonlight-mod/wp/componentEditor_dmList" {
+1
packages/types/src/index.ts
···
var moonlightNode: MoonlightNode;
var moonlightNodeSandboxed: MoonlightNodeSandboxed;
var moonlight: MoonlightWeb;
+
var _moonlight_coreExtensionsStr: string;
var _moonlightBrowserInit: undefined | (() => Promise<void>);
var _moonlightWebLoad: undefined | (() => Promise<void>);
+39 -641
packages/types/src/mappings.d.ts
···
export default _default;
}
+
declare module "@moonlight-mod/wp/discord/common/AppStartPerformance" {
+
import { MappedModules } from "@moonlight-mod/mappings";
+
const _default: MappedModules["discord/common/AppStartPerformance"]["default"];
+
export default _default;
+
}
+
declare module "@moonlight-mod/wp/discord/components/common/Alerts" {
import { MappedModules } from "@moonlight-mod/mappings";
const _default: MappedModules["discord/components/common/Alerts"]["default"];
···
export default _default;
}
+
declare module "@moonlight-mod/wp/discord/components/common/Card" {
+
import { MappedModules } from "@moonlight-mod/mappings";
+
const _default: MappedModules["discord/components/common/Card"]["default"];
+
export default _default;
+
export const Types: MappedModules["discord/components/common/Card"]["Types"];
+
}
+
declare module "@moonlight-mod/wp/discord/components/common/FileUpload" {
import { MappedModules } from "@moonlight-mod/mappings";
const _default: MappedModules["discord/components/common/FileUpload"]["default"];
···
export const error: MappedModules["discord/components/common/HelpMessage.css"]["error"];
}
+
declare module "@moonlight-mod/wp/discord/components/common/Image" {}
+
declare module "@moonlight-mod/wp/discord/components/common/PanelButton" {
import { MappedModules } from "@moonlight-mod/mappings";
const _default: MappedModules["discord/components/common/PanelButton"]["default"];
···
export const Popout: MappedModules["discord/components/common/index"]["Popout"];
export const Dialog: MappedModules["discord/components/common/index"]["Dialog"];
export const Menu: MappedModules["discord/components/common/index"]["Menu"];
-
export const MenuItem: MappedModules["discord/components/common/index"]["MenuItem"];
-
export const MenuGroup: MappedModules["discord/components/common/index"]["MenuGroup"];
-
export const MenuRadioItem: MappedModules["discord/components/common/index"]["MenuRadioItem"];
-
export const MenuCheckboxItem: MappedModules["discord/components/common/index"]["MenuCheckboxItem"];
-
export const MenuControlItem: MappedModules["discord/components/common/index"]["MenuControlItem"];
-
export const MenuSeparator: MappedModules["discord/components/common/index"]["MenuSeparator"];
-
export const SettingsNotice: MappedModules["discord/components/common/index"]["SettingsNotice"];
export const TabBar: MappedModules["discord/components/common/index"]["TabBar"];
export const SingleSelect: MappedModules["discord/components/common/index"]["SingleSelect"];
export const Select: MappedModules["discord/components/common/index"]["Select"];
···
export const Image: MappedModules["discord/components/common/index"]["Image"];
export const tokens: MappedModules["discord/components/common/index"]["tokens"];
export const useVariableSelect: MappedModules["discord/components/common/index"]["useVariableSelect"];
-
export const useMultiSelectState: MappedModules["discord/components/common/index"]["useMultiSelectState"];
-
export const useSingleSelectState: MappedModules["discord/components/common/index"]["useSingleSelectState"];
export const useMultiSelect: MappedModules["discord/components/common/index"]["useMultiSelect"];
-
export const useSingleSelect: MappedModules["discord/components/common/index"]["useSingleSelect"];
export const multiSelect: MappedModules["discord/components/common/index"]["multiSelect"];
export const openModal: MappedModules["discord/components/common/index"]["openModal"];
export const openModalLazy: MappedModules["discord/components/common/index"]["openModalLazy"];
export const closeModal: MappedModules["discord/components/common/index"]["closeModal"];
-
export const useModalsStore: MappedModules["discord/components/common/index"]["useModalsStore"];
-
export const AIcon: MappedModules["discord/components/common/index"]["AIcon"];
-
export const AccessibilityIcon: MappedModules["discord/components/common/index"]["AccessibilityIcon"];
-
export const AchievementsIcon: MappedModules["discord/components/common/index"]["AchievementsIcon"];
-
export const ActivitiesIcon: MappedModules["discord/components/common/index"]["ActivitiesIcon"];
-
export const ActivitiesPlusIcon: MappedModules["discord/components/common/index"]["ActivitiesPlusIcon"];
-
export const AirplayIcon: MappedModules["discord/components/common/index"]["AirplayIcon"];
-
export const AnalyticsIcon: MappedModules["discord/components/common/index"]["AnalyticsIcon"];
export const AngleBracketsIcon: MappedModules["discord/components/common/index"]["AngleBracketsIcon"];
-
export const AnnouncementsChatIcon: MappedModules["discord/components/common/index"]["AnnouncementsChatIcon"];
-
export const AnnouncementsIcon: MappedModules["discord/components/common/index"]["AnnouncementsIcon"];
-
export const AnnouncementsLockIcon: MappedModules["discord/components/common/index"]["AnnouncementsLockIcon"];
-
export const AnnouncementsWarningIcon: MappedModules["discord/components/common/index"]["AnnouncementsWarningIcon"];
-
export const AppleBrandLightIcon: MappedModules["discord/components/common/index"]["AppleBrandLightIcon"];
-
export const AppleNeutralIcon: MappedModules["discord/components/common/index"]["AppleNeutralIcon"];
-
export const AppsIcon: MappedModules["discord/components/common/index"]["AppsIcon"];
-
export const ArrowAngleDownLeftIcon: MappedModules["discord/components/common/index"]["ArrowAngleDownLeftIcon"];
-
export const ArrowAngleLeftDownIcon: MappedModules["discord/components/common/index"]["ArrowAngleLeftDownIcon"];
export const ArrowAngleLeftUpIcon: MappedModules["discord/components/common/index"]["ArrowAngleLeftUpIcon"];
-
export const ArrowAngleRightDownIcon: MappedModules["discord/components/common/index"]["ArrowAngleRightDownIcon"];
export const ArrowAngleRightUpIcon: MappedModules["discord/components/common/index"]["ArrowAngleRightUpIcon"];
-
export const ArrowAngleUpLeftIcon: MappedModules["discord/components/common/index"]["ArrowAngleUpLeftIcon"];
-
export const ArrowLargeDownIcon: MappedModules["discord/components/common/index"]["ArrowLargeDownIcon"];
-
export const ArrowLargeLeftIcon: MappedModules["discord/components/common/index"]["ArrowLargeLeftIcon"];
-
export const ArrowLargeRightIcon: MappedModules["discord/components/common/index"]["ArrowLargeRightIcon"];
-
export const ArrowLargeUpIcon: MappedModules["discord/components/common/index"]["ArrowLargeUpIcon"];
-
export const ArrowSmallDownIcon: MappedModules["discord/components/common/index"]["ArrowSmallDownIcon"];
-
export const ArrowSmallLeftIcon: MappedModules["discord/components/common/index"]["ArrowSmallLeftIcon"];
-
export const ArrowSmallRightIcon: MappedModules["discord/components/common/index"]["ArrowSmallRightIcon"];
-
export const ArrowSmallUpIcon: MappedModules["discord/components/common/index"]["ArrowSmallUpIcon"];
-
export const ArrowsLeftRightIcon: MappedModules["discord/components/common/index"]["ArrowsLeftRightIcon"];
export const ArrowsUpDownIcon: MappedModules["discord/components/common/index"]["ArrowsUpDownIcon"];
-
export const AsteriskIcon: MappedModules["discord/components/common/index"]["AsteriskIcon"];
-
export const AtIcon: MappedModules["discord/components/common/index"]["AtIcon"];
-
export const AttachmentIcon: MappedModules["discord/components/common/index"]["AttachmentIcon"];
-
export const BIcon: MappedModules["discord/components/common/index"]["BIcon"];
-
export const BackspaceIcon: MappedModules["discord/components/common/index"]["BackspaceIcon"];
-
export const BadgeIcon: MappedModules["discord/components/common/index"]["BadgeIcon"];
-
export const BeakerIcon: MappedModules["discord/components/common/index"]["BeakerIcon"];
-
export const BellIcon: MappedModules["discord/components/common/index"]["BellIcon"];
-
export const BellSlashIcon: MappedModules["discord/components/common/index"]["BellSlashIcon"];
-
export const BellZIcon: MappedModules["discord/components/common/index"]["BellZIcon"];
-
export const BergerIcon: MappedModules["discord/components/common/index"]["BergerIcon"];
-
export const BicycleIcon: MappedModules["discord/components/common/index"]["BicycleIcon"];
-
export const BillIcon: MappedModules["discord/components/common/index"]["BillIcon"];
-
export const BlueskyBrandIcon: MappedModules["discord/components/common/index"]["BlueskyBrandIcon"];
-
export const BlueskyNeutralIcon: MappedModules["discord/components/common/index"]["BlueskyNeutralIcon"];
-
export const BluetoothIcon: MappedModules["discord/components/common/index"]["BluetoothIcon"];
-
export const BlurBackgroundIcon: MappedModules["discord/components/common/index"]["BlurBackgroundIcon"];
-
export const BoldIcon: MappedModules["discord/components/common/index"]["BoldIcon"];
export const BookCheckIcon: MappedModules["discord/components/common/index"]["BookCheckIcon"];
-
export const BookmarkIcon: MappedModules["discord/components/common/index"]["BookmarkIcon"];
-
export const BookmarkOutlineIcon: MappedModules["discord/components/common/index"]["BookmarkOutlineIcon"];
-
export const BoostTier1Icon: MappedModules["discord/components/common/index"]["BoostTier1Icon"];
-
export const BoostTier1SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier1SimpleIcon"];
-
export const BoostTier2Icon: MappedModules["discord/components/common/index"]["BoostTier2Icon"];
-
export const BoostTier2SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier2SimpleIcon"];
-
export const BoostTier3Icon: MappedModules["discord/components/common/index"]["BoostTier3Icon"];
-
export const BoostTier3SimpleIcon: MappedModules["discord/components/common/index"]["BoostTier3SimpleIcon"];
-
export const BrowserCheckeredIcon: MappedModules["discord/components/common/index"]["BrowserCheckeredIcon"];
-
export const BrowserIcon: MappedModules["discord/components/common/index"]["BrowserIcon"];
-
export const BrowserLinkIcon: MappedModules["discord/components/common/index"]["BrowserLinkIcon"];
-
export const BrowserPlusIcon: MappedModules["discord/components/common/index"]["BrowserPlusIcon"];
-
export const BrowserQuestionMarkIcon: MappedModules["discord/components/common/index"]["BrowserQuestionMarkIcon"];
-
export const BugIcon: MappedModules["discord/components/common/index"]["BugIcon"];
-
export const CalendarIcon: MappedModules["discord/components/common/index"]["CalendarIcon"];
-
export const CalendarMinusIcon: MappedModules["discord/components/common/index"]["CalendarMinusIcon"];
-
export const CalendarPlusIcon: MappedModules["discord/components/common/index"]["CalendarPlusIcon"];
-
export const CalendarRetryIcon: MappedModules["discord/components/common/index"]["CalendarRetryIcon"];
-
export const CalendarXIcon: MappedModules["discord/components/common/index"]["CalendarXIcon"];
-
export const CameraIcon: MappedModules["discord/components/common/index"]["CameraIcon"];
-
export const CameraSwapIcon: MappedModules["discord/components/common/index"]["CameraSwapIcon"];
-
export const CarIcon: MappedModules["discord/components/common/index"]["CarIcon"];
export const ChannelListIcon: MappedModules["discord/components/common/index"]["ChannelListIcon"];
-
export const ChannelListMagnifyingGlassIcon: MappedModules["discord/components/common/index"]["ChannelListMagnifyingGlassIcon"];
-
export const ChannelListMinusIcon: MappedModules["discord/components/common/index"]["ChannelListMinusIcon"];
-
export const ChannelListPlusIcon: MappedModules["discord/components/common/index"]["ChannelListPlusIcon"];
-
export const ChannelListRetryIcon: MappedModules["discord/components/common/index"]["ChannelListRetryIcon"];
-
export const ChannelNotificationIcon: MappedModules["discord/components/common/index"]["ChannelNotificationIcon"];
-
export const ChannelsFollowedIcon: MappedModules["discord/components/common/index"]["ChannelsFollowedIcon"];
-
export const ChatArrowRightIcon: MappedModules["discord/components/common/index"]["ChatArrowRightIcon"];
-
export const ChatCheckIcon: MappedModules["discord/components/common/index"]["ChatCheckIcon"];
-
export const ChatDotsIcon: MappedModules["discord/components/common/index"]["ChatDotsIcon"];
-
export const ChatEyeIcon: MappedModules["discord/components/common/index"]["ChatEyeIcon"];
-
export const ChatIcon: MappedModules["discord/components/common/index"]["ChatIcon"];
-
export const ChatMarkUnreadIcon: MappedModules["discord/components/common/index"]["ChatMarkUnreadIcon"];
-
export const ChatMinusIcon: MappedModules["discord/components/common/index"]["ChatMinusIcon"];
-
export const ChatPlusIcon: MappedModules["discord/components/common/index"]["ChatPlusIcon"];
-
export const ChatRetryIcon: MappedModules["discord/components/common/index"]["ChatRetryIcon"];
-
export const ChatSlowModeIcon: MappedModules["discord/components/common/index"]["ChatSlowModeIcon"];
-
export const ChatSmileIcon: MappedModules["discord/components/common/index"]["ChatSmileIcon"];
-
export const ChatSpeakIcon: MappedModules["discord/components/common/index"]["ChatSpeakIcon"];
-
export const ChatWarningIcon: MappedModules["discord/components/common/index"]["ChatWarningIcon"];
-
export const ChatXIcon: MappedModules["discord/components/common/index"]["ChatXIcon"];
-
export const CheckmarkLargeBoldIcon: MappedModules["discord/components/common/index"]["CheckmarkLargeBoldIcon"];
-
export const CheckmarkLargeIcon: MappedModules["discord/components/common/index"]["CheckmarkLargeIcon"];
-
export const CheckmarkSmallBoldIcon: MappedModules["discord/components/common/index"]["CheckmarkSmallBoldIcon"];
-
export const CheckmarkSmallIcon: MappedModules["discord/components/common/index"]["CheckmarkSmallIcon"];
-
export const ChevronLargeDownIcon: MappedModules["discord/components/common/index"]["ChevronLargeDownIcon"];
-
export const ChevronLargeLeftIcon: MappedModules["discord/components/common/index"]["ChevronLargeLeftIcon"];
-
export const ChevronLargeRightIcon: MappedModules["discord/components/common/index"]["ChevronLargeRightIcon"];
-
export const ChevronLargeUpIcon: MappedModules["discord/components/common/index"]["ChevronLargeUpIcon"];
export const ChevronSmallDownIcon: MappedModules["discord/components/common/index"]["ChevronSmallDownIcon"];
-
export const ChevronSmallLeftIcon: MappedModules["discord/components/common/index"]["ChevronSmallLeftIcon"];
-
export const ChevronSmallRightIcon: MappedModules["discord/components/common/index"]["ChevronSmallRightIcon"];
export const ChevronSmallUpIcon: MappedModules["discord/components/common/index"]["ChevronSmallUpIcon"];
-
export const CircleCheckIcon: MappedModules["discord/components/common/index"]["CircleCheckIcon"];
export const CircleInformationIcon: MappedModules["discord/components/common/index"]["CircleInformationIcon"];
-
export const CircleMinusIcon: MappedModules["discord/components/common/index"]["CircleMinusIcon"];
-
export const CirclePlayIcon: MappedModules["discord/components/common/index"]["CirclePlayIcon"];
-
export const CirclePlusIcon: MappedModules["discord/components/common/index"]["CirclePlusIcon"];
-
export const CircleQuestionIcon: MappedModules["discord/components/common/index"]["CircleQuestionIcon"];
export const CircleWarningIcon: MappedModules["discord/components/common/index"]["CircleWarningIcon"];
export const CircleXIcon: MappedModules["discord/components/common/index"]["CircleXIcon"];
-
export const ClipboardCheckIcon: MappedModules["discord/components/common/index"]["ClipboardCheckIcon"];
-
export const ClipboardListIcon: MappedModules["discord/components/common/index"]["ClipboardListIcon"];
-
export const ClipsGalleryIcon: MappedModules["discord/components/common/index"]["ClipsGalleryIcon"];
-
export const ClipsIcon: MappedModules["discord/components/common/index"]["ClipsIcon"];
-
export const ClockIcon: MappedModules["discord/components/common/index"]["ClockIcon"];
-
export const ClockWarningIcon: MappedModules["discord/components/common/index"]["ClockWarningIcon"];
-
export const ClockXIcon: MappedModules["discord/components/common/index"]["ClockXIcon"];
-
export const CloudDownloadIcon: MappedModules["discord/components/common/index"]["CloudDownloadIcon"];
export const ClydeIcon: MappedModules["discord/components/common/index"]["ClydeIcon"];
-
export const CollapseListIcon: MappedModules["discord/components/common/index"]["CollapseListIcon"];
-
export const CompassIcon: MappedModules["discord/components/common/index"]["CompassIcon"];
-
export const ConnectionAverageIcon: MappedModules["discord/components/common/index"]["ConnectionAverageIcon"];
-
export const ConnectionBadIcon: MappedModules["discord/components/common/index"]["ConnectionBadIcon"];
-
export const ConnectionFineIcon: MappedModules["discord/components/common/index"]["ConnectionFineIcon"];
-
export const ConnectionUnknownIcon: MappedModules["discord/components/common/index"]["ConnectionUnknownIcon"];
-
export const ContactsIcon: MappedModules["discord/components/common/index"]["ContactsIcon"];
export const CopyIcon: MappedModules["discord/components/common/index"]["CopyIcon"];
-
export const CreditCardIcon: MappedModules["discord/components/common/index"]["CreditCardIcon"];
-
export const CropIcon: MappedModules["discord/components/common/index"]["CropIcon"];
-
export const CrownIcon: MappedModules["discord/components/common/index"]["CrownIcon"];
-
export const CrunchyrollBrandLightIcon: MappedModules["discord/components/common/index"]["CrunchyrollBrandLightIcon"];
-
export const CrunchyrollNeutralIcon: MappedModules["discord/components/common/index"]["CrunchyrollNeutralIcon"];
-
export const DenyIcon: MappedModules["discord/components/common/index"]["DenyIcon"];
-
export const DoorEnterIcon: MappedModules["discord/components/common/index"]["DoorEnterIcon"];
-
export const DoorExitIcon: MappedModules["discord/components/common/index"]["DoorExitIcon"];
-
export const DoubleCheckmarkIcon: MappedModules["discord/components/common/index"]["DoubleCheckmarkIcon"];
export const DownloadIcon: MappedModules["discord/components/common/index"]["DownloadIcon"];
-
export const DpadIcon: MappedModules["discord/components/common/index"]["DpadIcon"];
-
export const DragIcon: MappedModules["discord/components/common/index"]["DragIcon"];
-
export const EducationIcon: MappedModules["discord/components/common/index"]["EducationIcon"];
-
export const EmbedIcon: MappedModules["discord/components/common/index"]["EmbedIcon"];
-
export const EnvelopeIcon: MappedModules["discord/components/common/index"]["EnvelopeIcon"];
-
export const ExpandGifIcon: MappedModules["discord/components/common/index"]["ExpandGifIcon"];
-
export const ExperimentalImageBrokenIcon: MappedModules["discord/components/common/index"]["ExperimentalImageBrokenIcon"];
-
export const ExperimentalLootboxIcon: MappedModules["discord/components/common/index"]["ExperimentalLootboxIcon"];
-
export const ExperimentalMicrophoneSparkleIcon: MappedModules["discord/components/common/index"]["ExperimentalMicrophoneSparkleIcon"];
-
export const ExperimentalMicrophoneSparkleMutedIcon: MappedModules["discord/components/common/index"]["ExperimentalMicrophoneSparkleMutedIcon"];
-
export const ExperimentalPineappleHouseIcon: MappedModules["discord/components/common/index"]["ExperimentalPineappleHouseIcon"];
-
export const EyeDropperIcon: MappedModules["discord/components/common/index"]["EyeDropperIcon"];
-
export const EyeIcon: MappedModules["discord/components/common/index"]["EyeIcon"];
-
export const EyePlusIcon: MappedModules["discord/components/common/index"]["EyePlusIcon"];
-
export const EyeSlashIcon: MappedModules["discord/components/common/index"]["EyeSlashIcon"];
-
export const FacebookNeutralIcon: MappedModules["discord/components/common/index"]["FacebookNeutralIcon"];
-
export const FileDenyIcon: MappedModules["discord/components/common/index"]["FileDenyIcon"];
-
export const FileIcon: MappedModules["discord/components/common/index"]["FileIcon"];
-
export const FileUpIcon: MappedModules["discord/components/common/index"]["FileUpIcon"];
-
export const FileWarningIcon: MappedModules["discord/components/common/index"]["FileWarningIcon"];
-
export const FiltersHorizontalIcon: MappedModules["discord/components/common/index"]["FiltersHorizontalIcon"];
-
export const FireIcon: MappedModules["discord/components/common/index"]["FireIcon"];
-
export const FlagIcon: MappedModules["discord/components/common/index"]["FlagIcon"];
-
export const FlagMinusIcon: MappedModules["discord/components/common/index"]["FlagMinusIcon"];
-
export const FlagPlusIcon: MappedModules["discord/components/common/index"]["FlagPlusIcon"];
-
export const FlagRetryIcon: MappedModules["discord/components/common/index"]["FlagRetryIcon"];
-
export const FlashIcon: MappedModules["discord/components/common/index"]["FlashIcon"];
-
export const FlipHorizontalIcon: MappedModules["discord/components/common/index"]["FlipHorizontalIcon"];
-
export const FlipVerticalIcon: MappedModules["discord/components/common/index"]["FlipVerticalIcon"];
-
export const FolderIcon: MappedModules["discord/components/common/index"]["FolderIcon"];
-
export const FolderPlusIcon: MappedModules["discord/components/common/index"]["FolderPlusIcon"];
-
export const FoodIcon: MappedModules["discord/components/common/index"]["FoodIcon"];
-
export const ForumIcon: MappedModules["discord/components/common/index"]["ForumIcon"];
-
export const ForumLockIcon: MappedModules["discord/components/common/index"]["ForumLockIcon"];
-
export const ForumWarningIcon: MappedModules["discord/components/common/index"]["ForumWarningIcon"];
-
export const FriendsIcon: MappedModules["discord/components/common/index"]["FriendsIcon"];
export const FullscreenEnterIcon: MappedModules["discord/components/common/index"]["FullscreenEnterIcon"];
-
export const FullscreenExitIcon: MappedModules["discord/components/common/index"]["FullscreenExitIcon"];
export const GameControllerIcon: MappedModules["discord/components/common/index"]["GameControllerIcon"];
-
export const GifIcon: MappedModules["discord/components/common/index"]["GifIcon"];
-
export const GiftIcon: MappedModules["discord/components/common/index"]["GiftIcon"];
export const GlobeEarthIcon: MappedModules["discord/components/common/index"]["GlobeEarthIcon"];
-
export const GridHorizontalIcon: MappedModules["discord/components/common/index"]["GridHorizontalIcon"];
-
export const GridSquareIcon: MappedModules["discord/components/common/index"]["GridSquareIcon"];
-
export const GridVerticalIcon: MappedModules["discord/components/common/index"]["GridVerticalIcon"];
-
export const GroupArrowDownIcon: MappedModules["discord/components/common/index"]["GroupArrowDownIcon"];
-
export const GroupArrowRightIcon: MappedModules["discord/components/common/index"]["GroupArrowRightIcon"];
-
export const GroupIcon: MappedModules["discord/components/common/index"]["GroupIcon"];
-
export const GroupMinusIcon: MappedModules["discord/components/common/index"]["GroupMinusIcon"];
-
export const GroupPlusIcon: MappedModules["discord/components/common/index"]["GroupPlusIcon"];
-
export const GroupRetryIcon: MappedModules["discord/components/common/index"]["GroupRetryIcon"];
-
export const HammerIcon: MappedModules["discord/components/common/index"]["HammerIcon"];
-
export const HammerMinusIcon: MappedModules["discord/components/common/index"]["HammerMinusIcon"];
-
export const HammerPlusIcon: MappedModules["discord/components/common/index"]["HammerPlusIcon"];
-
export const HammerRetryIcon: MappedModules["discord/components/common/index"]["HammerRetryIcon"];
-
export const HammerXIcon: MappedModules["discord/components/common/index"]["HammerXIcon"];
-
export const HandRequestSpeakIcon: MappedModules["discord/components/common/index"]["HandRequestSpeakIcon"];
-
export const HandRequestSpeakListIcon: MappedModules["discord/components/common/index"]["HandRequestSpeakListIcon"];
-
export const HashmarkIcon: MappedModules["discord/components/common/index"]["HashmarkIcon"];
-
export const HdIcon: MappedModules["discord/components/common/index"]["HdIcon"];
-
export const HeadphonesDenyIcon: MappedModules["discord/components/common/index"]["HeadphonesDenyIcon"];
-
export const HeadphonesIcon: MappedModules["discord/components/common/index"]["HeadphonesIcon"];
-
export const HeadphonesSlashIcon: MappedModules["discord/components/common/index"]["HeadphonesSlashIcon"];
export const HeartIcon: MappedModules["discord/components/common/index"]["HeartIcon"];
-
export const HeartOutlineIcon: MappedModules["discord/components/common/index"]["HeartOutlineIcon"];
-
export const HomeIcon: MappedModules["discord/components/common/index"]["HomeIcon"];
-
export const HomeSlashIcon: MappedModules["discord/components/common/index"]["HomeSlashIcon"];
-
export const HourglassIcon: MappedModules["discord/components/common/index"]["HourglassIcon"];
-
export const HubIcon: MappedModules["discord/components/common/index"]["HubIcon"];
-
export const IdIcon: MappedModules["discord/components/common/index"]["IdIcon"];
-
export const ImageFileIcon: MappedModules["discord/components/common/index"]["ImageFileIcon"];
-
export const ImageFileUpIcon: MappedModules["discord/components/common/index"]["ImageFileUpIcon"];
-
export const ImageIcon: MappedModules["discord/components/common/index"]["ImageIcon"];
-
export const ImageLockIcon: MappedModules["discord/components/common/index"]["ImageLockIcon"];
-
export const ImagePlusIcon: MappedModules["discord/components/common/index"]["ImagePlusIcon"];
-
export const ImageSparkleIcon: MappedModules["discord/components/common/index"]["ImageSparkleIcon"];
-
export const ImageTextIcon: MappedModules["discord/components/common/index"]["ImageTextIcon"];
-
export const ImageWarningIcon: MappedModules["discord/components/common/index"]["ImageWarningIcon"];
-
export const ImagesIcon: MappedModules["discord/components/common/index"]["ImagesIcon"];
-
export const InboxIcon: MappedModules["discord/components/common/index"]["InboxIcon"];
-
export const InstagramNeutralIcon: MappedModules["discord/components/common/index"]["InstagramNeutralIcon"];
-
export const InventoryIcon: MappedModules["discord/components/common/index"]["InventoryIcon"];
-
export const ItalicIcon: MappedModules["discord/components/common/index"]["ItalicIcon"];
-
export const KeyIcon: MappedModules["discord/components/common/index"]["KeyIcon"];
-
export const KeyboardIcon: MappedModules["discord/components/common/index"]["KeyboardIcon"];
-
export const LanguageIcon: MappedModules["discord/components/common/index"]["LanguageIcon"];
-
export const LaptopPhoneIcon: MappedModules["discord/components/common/index"]["LaptopPhoneIcon"];
-
export const LeagueOfLegendsBrandIcon: MappedModules["discord/components/common/index"]["LeagueOfLegendsBrandIcon"];
-
export const LettersIcon: MappedModules["discord/components/common/index"]["LettersIcon"];
-
export const LightbulbIcon: MappedModules["discord/components/common/index"]["LightbulbIcon"];
-
export const LinkExternalMediumIcon: MappedModules["discord/components/common/index"]["LinkExternalMediumIcon"];
-
export const LinkExternalSmallIcon: MappedModules["discord/components/common/index"]["LinkExternalSmallIcon"];
export const LinkIcon: MappedModules["discord/components/common/index"]["LinkIcon"];
-
export const LinkPlusIcon: MappedModules["discord/components/common/index"]["LinkPlusIcon"];
-
export const ListBulletsIcon: MappedModules["discord/components/common/index"]["ListBulletsIcon"];
-
export const ListNumberedIcon: MappedModules["discord/components/common/index"]["ListNumberedIcon"];
-
export const ListViewIcon: MappedModules["discord/components/common/index"]["ListViewIcon"];
-
export const LocationIcon: MappedModules["discord/components/common/index"]["LocationIcon"];
-
export const LockIcon: MappedModules["discord/components/common/index"]["LockIcon"];
-
export const LockUnlockedIcon: MappedModules["discord/components/common/index"]["LockUnlockedIcon"];
-
export const MagicWandIcon: MappedModules["discord/components/common/index"]["MagicWandIcon"];
-
export const MagnifyingGlassIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassIcon"];
-
export const MagnifyingGlassMinusIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassMinusIcon"];
-
export const MagnifyingGlassPlusIcon: MappedModules["discord/components/common/index"]["MagnifyingGlassPlusIcon"];
-
export const ManaIcon: MappedModules["discord/components/common/index"]["ManaIcon"];
-
export const MastodonBrandIcon: MappedModules["discord/components/common/index"]["MastodonBrandIcon"];
-
export const MastodonNeutralIcon: MappedModules["discord/components/common/index"]["MastodonNeutralIcon"];
export const MaximizeIcon: MappedModules["discord/components/common/index"]["MaximizeIcon"];
-
export const MedalIcon: MappedModules["discord/components/common/index"]["MedalIcon"];
-
export const MenuIcon: MappedModules["discord/components/common/index"]["MenuIcon"];
-
export const MicrophoneArrowRightIcon: MappedModules["discord/components/common/index"]["MicrophoneArrowRightIcon"];
-
export const MicrophoneDenyIcon: MappedModules["discord/components/common/index"]["MicrophoneDenyIcon"];
-
export const MicrophoneIcon: MappedModules["discord/components/common/index"]["MicrophoneIcon"];
-
export const MicrophoneSlashIcon: MappedModules["discord/components/common/index"]["MicrophoneSlashIcon"];
-
export const MinimizeIcon: MappedModules["discord/components/common/index"]["MinimizeIcon"];
export const MinusIcon: MappedModules["discord/components/common/index"]["MinusIcon"];
-
export const MobilePhoneControllerIcon: MappedModules["discord/components/common/index"]["MobilePhoneControllerIcon"];
export const MobilePhoneIcon: MappedModules["discord/components/common/index"]["MobilePhoneIcon"];
-
export const MobilePhonePlusIcon: MappedModules["discord/components/common/index"]["MobilePhonePlusIcon"];
-
export const MobilePhoneSettingsIcon: MappedModules["discord/components/common/index"]["MobilePhoneSettingsIcon"];
-
export const MobilePhoneShareIcon: MappedModules["discord/components/common/index"]["MobilePhoneShareIcon"];
-
export const MobilePhoneSpeakerIcon: MappedModules["discord/components/common/index"]["MobilePhoneSpeakerIcon"];
-
export const MobilePhoneVideoIcon: MappedModules["discord/components/common/index"]["MobilePhoneVideoIcon"];
-
export const MobilePhoneXIcon: MappedModules["discord/components/common/index"]["MobilePhoneXIcon"];
-
export const ModerationIcon: MappedModules["discord/components/common/index"]["ModerationIcon"];
-
export const MoreHorizontalIcon: MappedModules["discord/components/common/index"]["MoreHorizontalIcon"];
-
export const MoreVerticalIcon: MappedModules["discord/components/common/index"]["MoreVerticalIcon"];
-
export const MusicIcon: MappedModules["discord/components/common/index"]["MusicIcon"];
-
export const MusicSlashIcon: MappedModules["discord/components/common/index"]["MusicSlashIcon"];
-
export const NatureIcon: MappedModules["discord/components/common/index"]["NatureIcon"];
-
export const NearbyScanIcon: MappedModules["discord/components/common/index"]["NearbyScanIcon"];
-
export const NewUserIcon: MappedModules["discord/components/common/index"]["NewUserIcon"];
-
export const NewUserSimpleIcon: MappedModules["discord/components/common/index"]["NewUserSimpleIcon"];
-
export const NintendoSwitchNeutralIcon: MappedModules["discord/components/common/index"]["NintendoSwitchNeutralIcon"];
-
export const NitroWheelIcon: MappedModules["discord/components/common/index"]["NitroWheelIcon"];
-
export const ObjectIcon: MappedModules["discord/components/common/index"]["ObjectIcon"];
-
export const PaintPaletteIcon: MappedModules["discord/components/common/index"]["PaintPaletteIcon"];
-
export const PaintbrushThickIcon: MappedModules["discord/components/common/index"]["PaintbrushThickIcon"];
-
export const PaintbrushThickMinusIcon: MappedModules["discord/components/common/index"]["PaintbrushThickMinusIcon"];
-
export const PaintbrushThickPlusIcon: MappedModules["discord/components/common/index"]["PaintbrushThickPlusIcon"];
-
export const PaintbrushThickRetryIcon: MappedModules["discord/components/common/index"]["PaintbrushThickRetryIcon"];
-
export const PaintbrushThinIcon: MappedModules["discord/components/common/index"]["PaintbrushThinIcon"];
-
export const PaintbrushThinMinusIcon: MappedModules["discord/components/common/index"]["PaintbrushThinMinusIcon"];
-
export const PaintbrushThinPlusIcon: MappedModules["discord/components/common/index"]["PaintbrushThinPlusIcon"];
-
export const PaintbrushThinRetryIcon: MappedModules["discord/components/common/index"]["PaintbrushThinRetryIcon"];
-
export const PaperClockIcon: MappedModules["discord/components/common/index"]["PaperClockIcon"];
-
export const PaperIcon: MappedModules["discord/components/common/index"]["PaperIcon"];
-
export const PaperPlusIcon: MappedModules["discord/components/common/index"]["PaperPlusIcon"];
export const PauseIcon: MappedModules["discord/components/common/index"]["PauseIcon"];
-
export const PencilIcon: MappedModules["discord/components/common/index"]["PencilIcon"];
-
export const PencilSparkleIcon: MappedModules["discord/components/common/index"]["PencilSparkleIcon"];
-
export const PhoneCallIcon: MappedModules["discord/components/common/index"]["PhoneCallIcon"];
-
export const PhoneHangUpIcon: MappedModules["discord/components/common/index"]["PhoneHangUpIcon"];
-
export const PhoneIcon: MappedModules["discord/components/common/index"]["PhoneIcon"];
-
export const PiggyBankIcon: MappedModules["discord/components/common/index"]["PiggyBankIcon"];
-
export const PinIcon: MappedModules["discord/components/common/index"]["PinIcon"];
-
export const PinUprightIcon: MappedModules["discord/components/common/index"]["PinUprightIcon"];
-
export const PinUprightSlashIcon: MappedModules["discord/components/common/index"]["PinUprightSlashIcon"];
export const PlayIcon: MappedModules["discord/components/common/index"]["PlayIcon"];
-
export const PlaybackOffIcon: MappedModules["discord/components/common/index"]["PlaybackOffIcon"];
-
export const PlaybackOnIcon: MappedModules["discord/components/common/index"]["PlaybackOnIcon"];
-
export const PlaystationNeutralIcon: MappedModules["discord/components/common/index"]["PlaystationNeutralIcon"];
export const PlusLargeIcon: MappedModules["discord/components/common/index"]["PlusLargeIcon"];
-
export const PlusMediumIcon: MappedModules["discord/components/common/index"]["PlusMediumIcon"];
-
export const PlusSmallIcon: MappedModules["discord/components/common/index"]["PlusSmallIcon"];
-
export const PollsIcon: MappedModules["discord/components/common/index"]["PollsIcon"];
-
export const PotionIcon: MappedModules["discord/components/common/index"]["PotionIcon"];
-
export const PremiumChannelIcon: MappedModules["discord/components/common/index"]["PremiumChannelIcon"];
-
export const PrivacyAndSafetyIcon: MappedModules["discord/components/common/index"]["PrivacyAndSafetyIcon"];
-
export const PuzzlePieceIcon: MappedModules["discord/components/common/index"]["PuzzlePieceIcon"];
-
export const PuzzlePieceMinusIcon: MappedModules["discord/components/common/index"]["PuzzlePieceMinusIcon"];
-
export const PuzzlePiecePlusIcon: MappedModules["discord/components/common/index"]["PuzzlePiecePlusIcon"];
-
export const PuzzlePieceRetryIcon: MappedModules["discord/components/common/index"]["PuzzlePieceRetryIcon"];
-
export const QrCodeIcon: MappedModules["discord/components/common/index"]["QrCodeIcon"];
-
export const QuestsIcon: MappedModules["discord/components/common/index"]["QuestsIcon"];
-
export const QuoteIcon: MappedModules["discord/components/common/index"]["QuoteIcon"];
-
export const ReactionIcon: MappedModules["discord/components/common/index"]["ReactionIcon"];
-
export const ReceiptIcon: MappedModules["discord/components/common/index"]["ReceiptIcon"];
-
export const RecordPlayerIcon: MappedModules["discord/components/common/index"]["RecordPlayerIcon"];
-
export const RedoIcon: MappedModules["discord/components/common/index"]["RedoIcon"];
-
export const RefreshIcon: MappedModules["discord/components/common/index"]["RefreshIcon"];
-
export const RemixIcon: MappedModules["discord/components/common/index"]["RemixIcon"];
export const RetryIcon: MappedModules["discord/components/common/index"]["RetryIcon"];
-
export const RibbonIcon: MappedModules["discord/components/common/index"]["RibbonIcon"];
-
export const RobotIcon: MappedModules["discord/components/common/index"]["RobotIcon"];
-
export const RotateIcon: MappedModules["discord/components/common/index"]["RotateIcon"];
export const ScienceIcon: MappedModules["discord/components/common/index"]["ScienceIcon"];
-
export const ScreenArrowIcon: MappedModules["discord/components/common/index"]["ScreenArrowIcon"];
export const ScreenIcon: MappedModules["discord/components/common/index"]["ScreenIcon"];
-
export const ScreenSlashIcon: MappedModules["discord/components/common/index"]["ScreenSlashIcon"];
-
export const ScreenStreamIcon: MappedModules["discord/components/common/index"]["ScreenStreamIcon"];
-
export const ScreenSystemRequirementsIcon: MappedModules["discord/components/common/index"]["ScreenSystemRequirementsIcon"];
-
export const ScreenXIcon: MappedModules["discord/components/common/index"]["ScreenXIcon"];
-
export const SendMessageIcon: MappedModules["discord/components/common/index"]["SendMessageIcon"];
-
export const ServerGridIcon: MappedModules["discord/components/common/index"]["ServerGridIcon"];
-
export const ServerIcon: MappedModules["discord/components/common/index"]["ServerIcon"];
-
export const SettingsArrowUpIcon: MappedModules["discord/components/common/index"]["SettingsArrowUpIcon"];
-
export const SettingsCircleIcon: MappedModules["discord/components/common/index"]["SettingsCircleIcon"];
-
export const SettingsIcon: MappedModules["discord/components/common/index"]["SettingsIcon"];
-
export const SettingsInfoIcon: MappedModules["discord/components/common/index"]["SettingsInfoIcon"];
-
export const SettingsPlusIcon: MappedModules["discord/components/common/index"]["SettingsPlusIcon"];
-
export const ShareIcon: MappedModules["discord/components/common/index"]["ShareIcon"];
-
export const ShieldAtIcon: MappedModules["discord/components/common/index"]["ShieldAtIcon"];
-
export const ShieldIcon: MappedModules["discord/components/common/index"]["ShieldIcon"];
-
export const ShieldLockIcon: MappedModules["discord/components/common/index"]["ShieldLockIcon"];
-
export const ShieldUserIcon: MappedModules["discord/components/common/index"]["ShieldUserIcon"];
-
export const ShopCircleIcon: MappedModules["discord/components/common/index"]["ShopCircleIcon"];
-
export const ShopIcon: MappedModules["discord/components/common/index"]["ShopIcon"];
-
export const ShopMinusIcon: MappedModules["discord/components/common/index"]["ShopMinusIcon"];
-
export const ShopPlusIcon: MappedModules["discord/components/common/index"]["ShopPlusIcon"];
-
export const ShopSparkleIcon: MappedModules["discord/components/common/index"]["ShopSparkleIcon"];
-
export const SignPostIcon: MappedModules["discord/components/common/index"]["SignPostIcon"];
-
export const SlashBoxIcon: MappedModules["discord/components/common/index"]["SlashBoxIcon"];
-
export const SlashIcon: MappedModules["discord/components/common/index"]["SlashIcon"];
-
export const SlashMinusIcon: MappedModules["discord/components/common/index"]["SlashMinusIcon"];
-
export const SlashPlusIcon: MappedModules["discord/components/common/index"]["SlashPlusIcon"];
-
export const SlashRetryIcon: MappedModules["discord/components/common/index"]["SlashRetryIcon"];
-
export const SoundboardIcon: MappedModules["discord/components/common/index"]["SoundboardIcon"];
-
export const SoundboardSlashIcon: MappedModules["discord/components/common/index"]["SoundboardSlashIcon"];
-
export const SparklesIcon: MappedModules["discord/components/common/index"]["SparklesIcon"];
-
export const SpeedometerIcon: MappedModules["discord/components/common/index"]["SpeedometerIcon"];
-
export const SpoilerIcon: MappedModules["discord/components/common/index"]["SpoilerIcon"];
-
export const StaffBadgeIcon: MappedModules["discord/components/common/index"]["StaffBadgeIcon"];
-
export const StageIcon: MappedModules["discord/components/common/index"]["StageIcon"];
-
export const StageListIcon: MappedModules["discord/components/common/index"]["StageListIcon"];
-
export const StageLockIcon: MappedModules["discord/components/common/index"]["StageLockIcon"];
-
export const StageMinusIcon: MappedModules["discord/components/common/index"]["StageMinusIcon"];
-
export const StageModeratorIcon: MappedModules["discord/components/common/index"]["StageModeratorIcon"];
-
export const StagePlusIcon: MappedModules["discord/components/common/index"]["StagePlusIcon"];
-
export const StageRetryIcon: MappedModules["discord/components/common/index"]["StageRetryIcon"];
-
export const StageXIcon: MappedModules["discord/components/common/index"]["StageXIcon"];
-
export const StampIcon: MappedModules["discord/components/common/index"]["StampIcon"];
export const StarIcon: MappedModules["discord/components/common/index"]["StarIcon"];
-
export const StarOutlineIcon: MappedModules["discord/components/common/index"]["StarOutlineIcon"];
-
export const StarShootingIcon: MappedModules["discord/components/common/index"]["StarShootingIcon"];
-
export const StickerDeadIcon: MappedModules["discord/components/common/index"]["StickerDeadIcon"];
-
export const StickerIcon: MappedModules["discord/components/common/index"]["StickerIcon"];
-
export const StickerMinusIcon: MappedModules["discord/components/common/index"]["StickerMinusIcon"];
-
export const StickerPlusIcon: MappedModules["discord/components/common/index"]["StickerPlusIcon"];
-
export const StickerRetryIcon: MappedModules["discord/components/common/index"]["StickerRetryIcon"];
-
export const StickerSadIcon: MappedModules["discord/components/common/index"]["StickerSadIcon"];
-
export const StickerSmallIcon: MappedModules["discord/components/common/index"]["StickerSmallIcon"];
-
export const StickerWink1Icon: MappedModules["discord/components/common/index"]["StickerWink1Icon"];
-
export const StickerWink2Icon: MappedModules["discord/components/common/index"]["StickerWink2Icon"];
-
export const StopIcon: MappedModules["discord/components/common/index"]["StopIcon"];
-
export const StrikethroughIcon: MappedModules["discord/components/common/index"]["StrikethroughIcon"];
-
export const SuperReactionIcon: MappedModules["discord/components/common/index"]["SuperReactionIcon"];
-
export const TagIcon: MappedModules["discord/components/common/index"]["TagIcon"];
-
export const TagsIcon: MappedModules["discord/components/common/index"]["TagsIcon"];
-
export const TextControllerIcon: MappedModules["discord/components/common/index"]["TextControllerIcon"];
-
export const TextIcon: MappedModules["discord/components/common/index"]["TextIcon"];
-
export const TextLockIcon: MappedModules["discord/components/common/index"]["TextLockIcon"];
-
export const TextUserIcon: MappedModules["discord/components/common/index"]["TextUserIcon"];
-
export const TextWarningIcon: MappedModules["discord/components/common/index"]["TextWarningIcon"];
-
export const ThemeDarkIcon: MappedModules["discord/components/common/index"]["ThemeDarkIcon"];
-
export const ThemeLightIcon: MappedModules["discord/components/common/index"]["ThemeLightIcon"];
-
export const ThemeMidnightIcon: MappedModules["discord/components/common/index"]["ThemeMidnightIcon"];
-
export const ThreadIcon: MappedModules["discord/components/common/index"]["ThreadIcon"];
-
export const ThreadLockIcon: MappedModules["discord/components/common/index"]["ThreadLockIcon"];
-
export const ThreadMinusIcon: MappedModules["discord/components/common/index"]["ThreadMinusIcon"];
-
export const ThreadPlusIcon: MappedModules["discord/components/common/index"]["ThreadPlusIcon"];
-
export const ThreadRetryIcon: MappedModules["discord/components/common/index"]["ThreadRetryIcon"];
-
export const ThreadWarningIcon: MappedModules["discord/components/common/index"]["ThreadWarningIcon"];
-
export const ThumbsDownIcon: MappedModules["discord/components/common/index"]["ThumbsDownIcon"];
-
export const ThumbsUpIcon: MappedModules["discord/components/common/index"]["ThumbsUpIcon"];
-
export const TicketIcon: MappedModules["discord/components/common/index"]["TicketIcon"];
-
export const TiktokNeutralIcon: MappedModules["discord/components/common/index"]["TiktokNeutralIcon"];
-
export const TimerIcon: MappedModules["discord/components/common/index"]["TimerIcon"];
-
export const TopicsIcon: MappedModules["discord/components/common/index"]["TopicsIcon"];
-
export const TrainIcon: MappedModules["discord/components/common/index"]["TrainIcon"];
export const TrashIcon: MappedModules["discord/components/common/index"]["TrashIcon"];
-
export const TreehouseIcon: MappedModules["discord/components/common/index"]["TreehouseIcon"];
-
export const TrophyIcon: MappedModules["discord/components/common/index"]["TrophyIcon"];
-
export const TvIcon: MappedModules["discord/components/common/index"]["TvIcon"];
-
export const TwitterNeutralIcon: MappedModules["discord/components/common/index"]["TwitterNeutralIcon"];
-
export const UnderlineIcon: MappedModules["discord/components/common/index"]["UnderlineIcon"];
-
export const UndoIcon: MappedModules["discord/components/common/index"]["UndoIcon"];
-
export const UnknownGameIcon: MappedModules["discord/components/common/index"]["UnknownGameIcon"];
-
export const UnsendIcon: MappedModules["discord/components/common/index"]["UnsendIcon"];
-
export const UploadIcon: MappedModules["discord/components/common/index"]["UploadIcon"];
-
export const UserArrowDiagonalBottomRightIcon: MappedModules["discord/components/common/index"]["UserArrowDiagonalBottomRightIcon"];
-
export const UserCheckIcon: MappedModules["discord/components/common/index"]["UserCheckIcon"];
-
export const UserCircleIcon: MappedModules["discord/components/common/index"]["UserCircleIcon"];
-
export const UserCircleStatusIcon: MappedModules["discord/components/common/index"]["UserCircleStatusIcon"];
-
export const UserClockIcon: MappedModules["discord/components/common/index"]["UserClockIcon"];
-
export const UserIcon: MappedModules["discord/components/common/index"]["UserIcon"];
-
export const UserMinusIcon: MappedModules["discord/components/common/index"]["UserMinusIcon"];
-
export const UserPlatformIcon: MappedModules["discord/components/common/index"]["UserPlatformIcon"];
-
export const UserPlayIcon: MappedModules["discord/components/common/index"]["UserPlayIcon"];
-
export const UserPlusIcon: MappedModules["discord/components/common/index"]["UserPlusIcon"];
-
export const UserRetryIcon: MappedModules["discord/components/common/index"]["UserRetryIcon"];
-
export const UserSquareIcon: MappedModules["discord/components/common/index"]["UserSquareIcon"];
-
export const UserStatusIcon: MappedModules["discord/components/common/index"]["UserStatusIcon"];
-
export const VideoIcon: MappedModules["discord/components/common/index"]["VideoIcon"];
-
export const VideoLockIcon: MappedModules["discord/components/common/index"]["VideoLockIcon"];
-
export const VideoSlashIcon: MappedModules["discord/components/common/index"]["VideoSlashIcon"];
-
export const VoiceBluetoothIcon: MappedModules["discord/components/common/index"]["VoiceBluetoothIcon"];
-
export const VoiceLockIcon: MappedModules["discord/components/common/index"]["VoiceLockIcon"];
-
export const VoiceLowIcon: MappedModules["discord/components/common/index"]["VoiceLowIcon"];
-
export const VoiceNormalIcon: MappedModules["discord/components/common/index"]["VoiceNormalIcon"];
-
export const VoiceWarningIcon: MappedModules["discord/components/common/index"]["VoiceWarningIcon"];
-
export const VoiceXIcon: MappedModules["discord/components/common/index"]["VoiceXIcon"];
-
export const WalletIcon: MappedModules["discord/components/common/index"]["WalletIcon"];
export const WarningIcon: MappedModules["discord/components/common/index"]["WarningIcon"];
-
export const WaveformIcon: MappedModules["discord/components/common/index"]["WaveformIcon"];
-
export const WaveformSlashIcon: MappedModules["discord/components/common/index"]["WaveformSlashIcon"];
-
export const WebhookIcon: MappedModules["discord/components/common/index"]["WebhookIcon"];
-
export const WebhookPlusIcon: MappedModules["discord/components/common/index"]["WebhookPlusIcon"];
-
export const WidgetsIcon: MappedModules["discord/components/common/index"]["WidgetsIcon"];
-
export const WidgetsMinusIcon: MappedModules["discord/components/common/index"]["WidgetsMinusIcon"];
-
export const WidgetsPlusIcon: MappedModules["discord/components/common/index"]["WidgetsPlusIcon"];
-
export const WidgetsRetryIcon: MappedModules["discord/components/common/index"]["WidgetsRetryIcon"];
export const WindowLaunchIcon: MappedModules["discord/components/common/index"]["WindowLaunchIcon"];
-
export const WindowReturnIcon: MappedModules["discord/components/common/index"]["WindowReturnIcon"];
-
export const WindowTopIcon: MappedModules["discord/components/common/index"]["WindowTopIcon"];
export const WindowTopOutlineIcon: MappedModules["discord/components/common/index"]["WindowTopOutlineIcon"];
-
export const WrenchIcon: MappedModules["discord/components/common/index"]["WrenchIcon"];
-
export const XLargeBoldIcon: MappedModules["discord/components/common/index"]["XLargeBoldIcon"];
export const XLargeIcon: MappedModules["discord/components/common/index"]["XLargeIcon"];
-
export const XNeutralIcon: MappedModules["discord/components/common/index"]["XNeutralIcon"];
-
export const XSmallBoldIcon: MappedModules["discord/components/common/index"]["XSmallBoldIcon"];
export const XSmallIcon: MappedModules["discord/components/common/index"]["XSmallIcon"];
-
export const XboxNeutralIcon: MappedModules["discord/components/common/index"]["XboxNeutralIcon"];
-
export const YoutubeNeutralIcon: MappedModules["discord/components/common/index"]["YoutubeNeutralIcon"];
-
export const AccessibilityPreferencesContext: MappedModules["discord/components/common/index"]["AccessibilityPreferencesContext"];
-
export const AdvancedScroller: MappedModules["discord/components/common/index"]["AdvancedScroller"];
-
export const AdvancedScrollerAuto: MappedModules["discord/components/common/index"]["AdvancedScrollerAuto"];
-
export const AdvancedScrollerNone: MappedModules["discord/components/common/index"]["AdvancedScrollerNone"];
-
export const AdvancedScrollerThin: MappedModules["discord/components/common/index"]["AdvancedScrollerThin"];
-
export const Anchor: MappedModules["discord/components/common/index"]["Anchor"];
-
export const AnimatedAvatar: MappedModules["discord/components/common/index"]["AnimatedAvatar"];
-
export const AnimatedDots: MappedModules["discord/components/common/index"]["AnimatedDots"];
-
export const AnimatedStatus: MappedModules["discord/components/common/index"]["AnimatedStatus"];
-
export const Backdrop: MappedModules["discord/components/common/index"]["Backdrop"];
-
export const BasePopout: MappedModules["discord/components/common/index"]["BasePopout"];
-
export const BlobMask: MappedModules["discord/components/common/index"]["BlobMask"];
-
export const BlockInteractions: MappedModules["discord/components/common/index"]["BlockInteractions"];
-
export const BlockInteractionsContext: MappedModules["discord/components/common/index"]["BlockInteractionsContext"];
-
export const ButtonGroup: MappedModules["discord/components/common/index"]["ButtonGroup"];
-
export const ButtonLink: MappedModules["discord/components/common/index"]["ButtonLink"];
-
export const CalendarPicker: MappedModules["discord/components/common/index"]["CalendarPicker"];
-
export const ChainedLottieAnimation: MappedModules["discord/components/common/index"]["ChainedLottieAnimation"];
-
export const Checkbox: MappedModules["discord/components/common/index"]["Checkbox"];
-
export const CheckboxIndicator: MappedModules["discord/components/common/index"]["CheckboxIndicator"];
-
export const CircleBadge: MappedModules["discord/components/common/index"]["CircleBadge"];
-
export const CircleIconButton: MappedModules["discord/components/common/index"]["CircleIconButton"];
-
export const ClickableContainer: MappedModules["discord/components/common/index"]["ClickableContainer"];
-
export const Collapsible: MappedModules["discord/components/common/index"]["Collapsible"];
-
export const ColorPicker: MappedModules["discord/components/common/index"]["ColorPicker"];
-
export const ColorPickerCustomButton: MappedModules["discord/components/common/index"]["ColorPickerCustomButton"];
-
export const ColorPickerDefaultButton: MappedModules["discord/components/common/index"]["ColorPickerDefaultButton"];
-
export const Combobox: MappedModules["discord/components/common/index"]["Combobox"];
-
export const ComboboxItem: MappedModules["discord/components/common/index"]["ComboboxItem"];
-
export const ComboboxPopout: MappedModules["discord/components/common/index"]["ComboboxPopout"];
export const ConfirmModal: MappedModules["discord/components/common/index"]["ConfirmModal"];
-
export const CopyInput: MappedModules["discord/components/common/index"]["CopyInput"];
-
export const CustomColorPicker: MappedModules["discord/components/common/index"]["CustomColorPicker"];
-
export const DateInput: MappedModules["discord/components/common/index"]["DateInput"];
-
export const DeclarativeConfirmModal: MappedModules["discord/components/common/index"]["DeclarativeConfirmModal"];
-
export const DisableCustomTheme: MappedModules["discord/components/common/index"]["DisableCustomTheme"];
-
export const DnDKeyboardHelpBar: MappedModules["discord/components/common/index"]["DnDKeyboardHelpBar"];
-
export const DnDProvider: MappedModules["discord/components/common/index"]["DnDProvider"];
-
export const Dots: MappedModules["discord/components/common/index"]["Dots"];
-
export const EmptyState: MappedModules["discord/components/common/index"]["EmptyState"];
-
export const EmptyStateImage: MappedModules["discord/components/common/index"]["EmptyStateImage"];
-
export const EmptyStateText: MappedModules["discord/components/common/index"]["EmptyStateText"];
-
export const FocusBlock: MappedModules["discord/components/common/index"]["FocusBlock"];
-
export const FocusJumpSection: MappedModules["discord/components/common/index"]["FocusJumpSection"];
-
export const FocusLock: MappedModules["discord/components/common/index"]["FocusLock"];
-
export const FocusRing: MappedModules["discord/components/common/index"]["FocusRing"];
-
export const FocusRingScope: MappedModules["discord/components/common/index"]["FocusRingScope"];
-
export const FormContext: MappedModules["discord/components/common/index"]["FormContext"];
-
export const FormContextProvider: MappedModules["discord/components/common/index"]["FormContextProvider"];
-
export const FormErrorBlock: MappedModules["discord/components/common/index"]["FormErrorBlock"];
-
export const FormLabel: MappedModules["discord/components/common/index"]["FormLabel"];
-
export const FormNotice: MappedModules["discord/components/common/index"]["FormNotice"];
export const H: MappedModules["discord/components/common/index"]["H"];
-
export const HeadingLevel: MappedModules["discord/components/common/index"]["HeadingLevel"];
export const HelpMessage: MappedModules["discord/components/common/index"]["HelpMessage"];
-
export const HiddenVisually: MappedModules["discord/components/common/index"]["HiddenVisually"];
-
export const HorizontalOverflowList: MappedModules["discord/components/common/index"]["HorizontalOverflowList"];
-
export const HorizontalOverflowListTooltip: MappedModules["discord/components/common/index"]["HorizontalOverflowListTooltip"];
-
export const IconBadge: MappedModules["discord/components/common/index"]["IconBadge"];
-
export const IconSelectOption: MappedModules["discord/components/common/index"]["IconSelectOption"];
-
export const InputError: MappedModules["discord/components/common/index"]["InputError"];
-
export const Interactive: MappedModules["discord/components/common/index"]["Interactive"];
-
export const KeyCombo: MappedModules["discord/components/common/index"]["KeyCombo"];
-
export const Layer: MappedModules["discord/components/common/index"]["Layer"];
-
export const LayerContainer: MappedModules["discord/components/common/index"]["LayerContainer"];
-
export const LayerProvider: MappedModules["discord/components/common/index"]["LayerProvider"];
-
export const LazyPopout: MappedModules["discord/components/common/index"]["LazyPopout"];
-
export const LinkButton: MappedModules["discord/components/common/index"]["LinkButton"];
-
export const List: MappedModules["discord/components/common/index"]["List"];
-
export const ListAuto: MappedModules["discord/components/common/index"]["ListAuto"];
-
export const ListComputer: MappedModules["discord/components/common/index"]["ListComputer"];
-
export const ListNone: MappedModules["discord/components/common/index"]["ListNone"];
-
export const ListThin: MappedModules["discord/components/common/index"]["ListThin"];
-
export const LoadingPopout: MappedModules["discord/components/common/index"]["LoadingPopout"];
-
export const LottieAnimation: MappedModules["discord/components/common/index"]["LottieAnimation"];
-
export const LottieSparkle: MappedModules["discord/components/common/index"]["LottieSparkle"];
-
export const MasonryList: MappedModules["discord/components/common/index"]["MasonryList"];
-
export const MasonryListAuto: MappedModules["discord/components/common/index"]["MasonryListAuto"];
-
export const MasonryListComputer: MappedModules["discord/components/common/index"]["MasonryListComputer"];
-
export const MasonryListThin: MappedModules["discord/components/common/index"]["MasonryListThin"];
-
export const MenuImageUploadControl: MappedModules["discord/components/common/index"]["MenuImageUploadControl"];
-
export const MenuInteractiveCompositeControl: MappedModules["discord/components/common/index"]["MenuInteractiveCompositeControl"];
-
export const MenuSearchControl: MappedModules["discord/components/common/index"]["MenuSearchControl"];
-
export const MenuSliderControl: MappedModules["discord/components/common/index"]["MenuSliderControl"];
-
export const MenuSpinner: MappedModules["discord/components/common/index"]["MenuSpinner"];
-
export const Modal: MappedModules["discord/components/common/index"]["Modal"];
export const ModalCloseButton: MappedModules["discord/components/common/index"]["ModalCloseButton"];
export const ModalContent: MappedModules["discord/components/common/index"]["ModalContent"];
export const ModalFooter: MappedModules["discord/components/common/index"]["ModalFooter"];
export const ModalHeader: MappedModules["discord/components/common/index"]["ModalHeader"];
-
export const ModalListContent: MappedModules["discord/components/common/index"]["ModalListContent"];
export const ModalRoot: MappedModules["discord/components/common/index"]["ModalRoot"];
-
export const Modals: MappedModules["discord/components/common/index"]["Modals"];
-
export const NameWithRole: MappedModules["discord/components/common/index"]["NameWithRole"];
-
export const NameWithRoleAnchor: MappedModules["discord/components/common/index"]["NameWithRoleAnchor"];
-
export const NavItem: MappedModules["discord/components/common/index"]["NavItem"];
-
export const NoticeButton: MappedModules["discord/components/common/index"]["NoticeButton"];
-
export const NoticeButtonAnchor: MappedModules["discord/components/common/index"]["NoticeButtonAnchor"];
-
export const NumberBadge: MappedModules["discord/components/common/index"]["NumberBadge"];
export const NumberInputStepper: MappedModules["discord/components/common/index"]["NumberInputStepper"];
-
export const Paginator: MappedModules["discord/components/common/index"]["Paginator"];
-
export const PinToBottomScrollerAuto: MappedModules["discord/components/common/index"]["PinToBottomScrollerAuto"];
-
export const PopoutCSSAnimator: MappedModules["discord/components/common/index"]["PopoutCSSAnimator"];
-
export const PopoutList: MappedModules["discord/components/common/index"]["PopoutList"];
-
export const PremiumBadge: MappedModules["discord/components/common/index"]["PremiumBadge"];
-
export const Progress: MappedModules["discord/components/common/index"]["Progress"];
-
export const ProgressCircle: MappedModules["discord/components/common/index"]["ProgressCircle"];
-
export const QuickSelect: MappedModules["discord/components/common/index"]["QuickSelect"];
-
export const RadioGroup: MappedModules["discord/components/common/index"]["RadioGroup"];
-
export const RadioIndicator: MappedModules["discord/components/common/index"]["RadioIndicator"];
-
export const RedesignIconContextProvider: MappedModules["discord/components/common/index"]["RedesignIconContextProvider"];
-
export const ReferencePositionLayer: MappedModules["discord/components/common/index"]["ReferencePositionLayer"];
-
export const RoleCircle: MappedModules["discord/components/common/index"]["RoleCircle"];
-
export const RoleDot: MappedModules["discord/components/common/index"]["RoleDot"];
-
export const RootThemeContextProvider: MappedModules["discord/components/common/index"]["RootThemeContextProvider"];
-
export const ScrollerAuto: MappedModules["discord/components/common/index"]["ScrollerAuto"];
-
export const ScrollerNone: MappedModules["discord/components/common/index"]["ScrollerNone"];
-
export const ScrollerThin: MappedModules["discord/components/common/index"]["ScrollerThin"];
-
export const SearchBar: MappedModules["discord/components/common/index"]["SearchBar"];
-
export const SearchBox: MappedModules["discord/components/common/index"]["SearchBox"];
-
export const SearchableQuickSelect: MappedModules["discord/components/common/index"]["SearchableQuickSelect"];
export const SearchableSelect: MappedModules["discord/components/common/index"]["SearchableSelect"];
-
export const SegmentedControl: MappedModules["discord/components/common/index"]["SegmentedControl"];
-
export const SequencedLottieAnimation: MappedModules["discord/components/common/index"]["SequencedLottieAnimation"];
-
export const Sequencer: MappedModules["discord/components/common/index"]["Sequencer"];
-
export const Shakeable: MappedModules["discord/components/common/index"]["Shakeable"];
-
export const Shaker: MappedModules["discord/components/common/index"]["Shaker"];
-
export const Shine: MappedModules["discord/components/common/index"]["Shine"];
-
export const ShinyButton: MappedModules["discord/components/common/index"]["ShinyButton"];
-
export const Slide: MappedModules["discord/components/common/index"]["Slide"];
-
export const SlideIn: MappedModules["discord/components/common/index"]["SlideIn"];
-
export const Slides: MappedModules["discord/components/common/index"]["Slides"];
-
export const Spacer: MappedModules["discord/components/common/index"]["Spacer"];
-
export const Spinner: MappedModules["discord/components/common/index"]["Spinner"];
-
export const Spring: MappedModules["discord/components/common/index"]["Spring"];
-
export const Stack: MappedModules["discord/components/common/index"]["Stack"];
-
export const StackedProgress: MappedModules["discord/components/common/index"]["StackedProgress"];
-
export const Status: MappedModules["discord/components/common/index"]["Status"];
-
export const Table: MappedModules["discord/components/common/index"]["Table"];
-
export const TableBody: MappedModules["discord/components/common/index"]["TableBody"];
-
export const TableCell: MappedModules["discord/components/common/index"]["TableCell"];
-
export const TableColumn: MappedModules["discord/components/common/index"]["TableColumn"];
-
export const TableHeader: MappedModules["discord/components/common/index"]["TableHeader"];
-
export const TableRow: MappedModules["discord/components/common/index"]["TableRow"];
-
export const TextAreaAutosize: MappedModules["discord/components/common/index"]["TextAreaAutosize"];
-
export const TextBadge: MappedModules["discord/components/common/index"]["TextBadge"];
-
export const ThemeContextProvider: MappedModules["discord/components/common/index"]["ThemeContextProvider"];
-
export const ThemeProvider: MappedModules["discord/components/common/index"]["ThemeProvider"];
-
export const TimeInput: MappedModules["discord/components/common/index"]["TimeInput"];
-
export const Toast: MappedModules["discord/components/common/index"]["Toast"];
-
export const ToastContainer: MappedModules["discord/components/common/index"]["ToastContainer"];
-
export const TooltipContainer: MappedModules["discord/components/common/index"]["TooltipContainer"];
-
export const TooltipLayer: MappedModules["discord/components/common/index"]["TooltipLayer"];
-
export const TransitionGroup: MappedModules["discord/components/common/index"]["TransitionGroup"];
-
export const UseThemeContext: MappedModules["discord/components/common/index"]["UseThemeContext"];
-
export const closeAllModals: MappedModules["discord/components/common/index"]["closeAllModals"];
-
export const closeModalInAllContexts: MappedModules["discord/components/common/index"]["closeModalInAllContexts"];
-
export const createAdvancedScroller: MappedModules["discord/components/common/index"]["createAdvancedScroller"];
-
export const createLayer: MappedModules["discord/components/common/index"]["createLayer"];
-
export const createListScroller: MappedModules["discord/components/common/index"]["createListScroller"];
-
export const createManagedReactiveScroller: MappedModules["discord/components/common/index"]["createManagedReactiveScroller"];
-
export const createMasonryListScroller: MappedModules["discord/components/common/index"]["createMasonryListScroller"];
-
export const createScroller: MappedModules["discord/components/common/index"]["createScroller"];
export const createToast: MappedModules["discord/components/common/index"]["createToast"];
-
export const getAvatarSize: MappedModules["discord/components/common/index"]["getAvatarSize"];
-
export const getAvatarSpecs: MappedModules["discord/components/common/index"]["getAvatarSpecs"];
-
export const getBadgeCountString: MappedModules["discord/components/common/index"]["getBadgeCountString"];
-
export const getBadgeWidthForValue: MappedModules["discord/components/common/index"]["getBadgeWidthForValue"];
-
export const getButtonStyle: MappedModules["discord/components/common/index"]["getButtonStyle"];
-
export const getInteractingModalContext: MappedModules["discord/components/common/index"]["getInteractingModalContext"];
-
export const getParentLayerContainer: MappedModules["discord/components/common/index"]["getParentLayerContainer"];
-
export const getStatusBackdropColor: MappedModules["discord/components/common/index"]["getStatusBackdropColor"];
-
export const getStatusBackdropOpacity: MappedModules["discord/components/common/index"]["getStatusBackdropOpacity"];
-
export const getStatusMask: MappedModules["discord/components/common/index"]["getStatusMask"];
-
export const getThemeClass: MappedModules["discord/components/common/index"]["getThemeClass"];
-
export const hasAnyModalOpen: MappedModules["discord/components/common/index"]["hasAnyModalOpen"];
-
export const hasAnyModalOpenSelector: MappedModules["discord/components/common/index"]["hasAnyModalOpenSelector"];
-
export const hasModalOpen: MappedModules["discord/components/common/index"]["hasModalOpen"];
-
export const hasModalOpenSelector: MappedModules["discord/components/common/index"]["hasModalOpenSelector"];
-
export const isInDndMode: MappedModules["discord/components/common/index"]["isInDndMode"];
-
export const isListItemRow: MappedModules["discord/components/common/index"]["isListItemRow"];
-
export const makeIconCompat: MappedModules["discord/components/common/index"]["makeIconCompat"];
-
export const modalContextFromAppContext: MappedModules["discord/components/common/index"]["modalContextFromAppContext"];
export const popToast: MappedModules["discord/components/common/index"]["popToast"];
-
export const referencePortalAwareContains: MappedModules["discord/components/common/index"]["referencePortalAwareContains"];
export const showToast: MappedModules["discord/components/common/index"]["showToast"];
-
export const singleSelect: MappedModules["discord/components/common/index"]["singleSelect"];
-
export const toggleDndMode: MappedModules["discord/components/common/index"]["toggleDndMode"];
-
export const toggleSelect: MappedModules["discord/components/common/index"]["toggleSelect"];
-
export const updateModal: MappedModules["discord/components/common/index"]["updateModal"];
-
export const useDndMode: MappedModules["discord/components/common/index"]["useDndMode"];
-
export const useDndStore: MappedModules["discord/components/common/index"]["useDndStore"];
-
export const useFocusBlock: MappedModules["discord/components/common/index"]["useFocusBlock"];
-
export const useFocusJumpSection: MappedModules["discord/components/common/index"]["useFocusJumpSection"];
-
export const useFocusJumpSectionManager: MappedModules["discord/components/common/index"]["useFocusJumpSectionManager"];
-
export const useFocusLock: MappedModules["discord/components/common/index"]["useFocusLock"];
-
export const useFormContext: MappedModules["discord/components/common/index"]["useFormContext"];
-
export const useModalContext: MappedModules["discord/components/common/index"]["useModalContext"];
-
export const usePrivateHeadingLevel: MappedModules["discord/components/common/index"]["usePrivateHeadingLevel"];
-
export const useRadioGroup: MappedModules["discord/components/common/index"]["useRadioGroup"];
-
export const useRadioItem: MappedModules["discord/components/common/index"]["useRadioItem"];
-
export const useRedesignIconContext: MappedModules["discord/components/common/index"]["useRedesignIconContext"];
-
export const useResizeObserverSubscription: MappedModules["discord/components/common/index"]["useResizeObserverSubscription"];
-
export const useSpacingValue: MappedModules["discord/components/common/index"]["useSpacingValue"];
-
export const useSpring: MappedModules["discord/components/common/index"]["useSpring"];
-
export const useSprings: MappedModules["discord/components/common/index"]["useSprings"];
-
export const useStatusFillColor: MappedModules["discord/components/common/index"]["useStatusFillColor"];
export const useThemeContext: MappedModules["discord/components/common/index"]["useThemeContext"];
-
export const useToastStore: MappedModules["discord/components/common/index"]["useToastStore"];
-
export const useToken: MappedModules["discord/components/common/index"]["useToken"];
-
export const useTransition: MappedModules["discord/components/common/index"]["useTransition"];
export const AccessibilityAnnouncer: MappedModules["discord/components/common/index"]["AccessibilityAnnouncer"];
export const BackdropStyles: MappedModules["discord/components/common/index"]["BackdropStyles"];
export const BadgeShapes: MappedModules["discord/components/common/index"]["BadgeShapes"];
export const CardTypes: MappedModules["discord/components/common/index"]["CardTypes"];
export const CircleIconButtonColors: MappedModules["discord/components/common/index"]["CircleIconButtonColors"];
export const CircleIconButtonSizes: MappedModules["discord/components/common/index"]["CircleIconButtonSizes"];
-
export const CopyInputModes: MappedModules["discord/components/common/index"]["CopyInputModes"];
-
export const FocusRingManager: MappedModules["discord/components/common/index"]["FocusRingManager"];
export const FormErrorBlockColors: MappedModules["discord/components/common/index"]["FormErrorBlockColors"];
export const FormNoticeImagePositions: MappedModules["discord/components/common/index"]["FormNoticeImagePositions"];
-
export const FormNoticeTypes: MappedModules["discord/components/common/index"]["FormNoticeTypes"];
export const FormTitleTags: MappedModules["discord/components/common/index"]["FormTitleTags"];
export const HelpMessageTypes: MappedModules["discord/components/common/index"]["HelpMessageTypes"];
export const ModalSize: MappedModules["discord/components/common/index"]["ModalSize"];
export const ModalTransitionState: MappedModules["discord/components/common/index"]["ModalTransitionState"];
export const PRETTY_KEYS: MappedModules["discord/components/common/index"]["PRETTY_KEYS"];
export const SelectLooks: MappedModules["discord/components/common/index"]["SelectLooks"];
-
export const ShineSizes: MappedModules["discord/components/common/index"]["ShineSizes"];
export const SpinnerTypes: MappedModules["discord/components/common/index"]["SpinnerTypes"];
export const StatusTypes: MappedModules["discord/components/common/index"]["StatusTypes"];
export const ToastPosition: MappedModules["discord/components/common/index"]["ToastPosition"];
···
export const badgesContainer: MappedModules["discord/modules/messages/web/Message.css"]["badgesContainer"];
}
+
declare module "@moonlight-mod/wp/discord/modules/modals/Modals" {
+
import { MappedModules } from "@moonlight-mod/mappings";
+
export const closeAllModals: MappedModules["discord/modules/modals/Modals"]["closeAllModals"];
+
export const closeAllModalsForContext: MappedModules["discord/modules/modals/Modals"]["closeAllModalsForContext"];
+
export const closeModal: MappedModules["discord/modules/modals/Modals"]["closeModal"];
+
export const getInteractingModalContext: MappedModules["discord/modules/modals/Modals"]["getInteractingModalContext"];
+
export const hasAnyModalOpen: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpen"];
+
export const hasAnyModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasAnyModalOpenSelector"];
+
export const hasModalOpen: MappedModules["discord/modules/modals/Modals"]["hasModalOpen"];
+
export const hasModalOpenSelector: MappedModules["discord/modules/modals/Modals"]["hasModalOpenSelector"];
+
export const openModal: MappedModules["discord/modules/modals/Modals"]["openModal"];
+
export const openModalLazy: MappedModules["discord/modules/modals/Modals"]["openModalLazy"];
+
export const updateModal: MappedModules["discord/modules/modals/Modals"]["updateModal"];
+
export const useHasAnyModalOpen: MappedModules["discord/modules/modals/Modals"]["useHasAnyModalOpen"];
+
export const useIsModalAtTop: MappedModules["discord/modules/modals/Modals"]["useIsModalAtTop"];
+
export const useModalsStore: MappedModules["discord/modules/modals/Modals"]["useModalsStore"];
+
}
+
declare module "@moonlight-mod/wp/discord/modules/oauth2/index" {
import { MappedModules } from "@moonlight-mod/mappings";
export const OAuth2AuthorizeModal: MappedModules["discord/modules/oauth2/index"]["OAuth2AuthorizeModal"];
···
import { MappedModules } from "@moonlight-mod/mappings";
export const SUPPORTS_COPY: MappedModules["discord/utils/ClipboardUtils"]["SUPPORTS_COPY"];
export const copy: MappedModules["discord/utils/ClipboardUtils"]["copy"];
+
}
+
+
declare module "@moonlight-mod/wp/discord/utils/ComponentDispatchUtils" {
+
import { MappedModules } from "@moonlight-mod/mappings";
+
export const ComponentDispatcher: MappedModules["discord/utils/ComponentDispatchUtils"]["ComponentDispatcher"];
+
export const ComponentDispatch: MappedModules["discord/utils/ComponentDispatchUtils"]["ComponentDispatch"];
}
declare module "@moonlight-mod/wp/discord/utils/HTTPUtils" {
+7 -7
packages/types/tsconfig.json
···
{
"compilerOptions": {
-
"target": "es2016",
-
"module": "es6",
-
"esModuleInterop": true,
-
"forceConsistentCasingInFileNames": true,
-
"strict": true,
-
"moduleResolution": "bundler",
+
"target": "ES2016",
"jsx": "react",
-
"declaration": true
+
"module": "ES6",
+
"moduleResolution": "bundler",
+
"strict": true,
+
"declaration": true,
+
"esModuleInterop": true,
+
"forceConsistentCasingInFileNames": true
},
"include": ["./src/**/*", "src/index.ts", "./src/import.d.ts"]
}
+10 -3
packages/web-preload/package.json
···
"name": "@moonlight-mod/web-preload",
"private": true,
"main": "src/index.ts",
+
"engineStrict": true,
+
"engines": {
+
"node": ">=22",
+
"pnpm": ">=10",
+
"npm": "pnpm",
+
"yarn": "pnpm"
+
},
"dependencies": {
"@moonlight-mod/core": "workspace:*",
-
"@moonlight-mod/lunast": "^1.0.0",
-
"@moonlight-mod/mappings": "^1.1.8",
-
"@moonlight-mod/moonmap": "^1.0.3",
+
"@moonlight-mod/lunast": "catalog:prod",
+
"@moonlight-mod/mappings": "catalog:prod",
+
"@moonlight-mod/moonmap": "catalog:prod",
"@moonlight-mod/types": "workspace:*"
}
}
+2 -2
packages/web-preload/src/index.ts
···
import Moonmap from "@moonlight-mod/moonmap";
import loadMappings from "@moonlight-mod/mappings";
import { createEventEmitter } from "@moonlight-mod/core/util/event";
-
import { EventPayloads, EventType } from "@moonlight-mod/types/core/event";
+
import { WebEventPayloads, WebEventType } from "@moonlight-mod/types/core/event";
async function load() {
delete window._moonlightWebLoad;
···
pendingModules: new Set(),
enabledExtensions: new Set(),
-
events: createEventEmitter<EventType, EventPayloads>(),
+
events: createEventEmitter<WebEventType, WebEventPayloads>(),
patchingInternals: {
onModuleLoad,
registerPatch,
+4 -1
packages/web-preload/tsconfig.json
···
{
-
"extends": "../../tsconfig.json"
+
"extends": "../../tsconfig.json",
+
"compilerOptions": {
+
"lib": ["ESNext", "DOM"]
+
}
}
+1219 -729
pnpm-lock.yaml
···
autoInstallPeers: true
excludeLinksFromLockfile: false
+
catalogs:
+
dev:
+
'@moonlight-mod/eslint-config':
+
specifier: github:moonlight-mod/eslint-config
+
version: 1.0.1
+
'@types/chrome':
+
specifier: ^0.0.313
+
version: 0.0.313
+
'@types/node':
+
specifier: ^22.14.0
+
version: 22.14.0
+
esbuild:
+
specifier: ^0.19.3
+
version: 0.19.3
+
esbuild-copy-static-files:
+
specifier: ^0.1.0
+
version: 0.1.0
+
eslint:
+
specifier: ^9.12.0
+
version: 9.23.0
+
husky:
+
specifier: ^8.0.3
+
version: 8.0.3
+
prettier:
+
specifier: ^3.1.0
+
version: 3.1.0
+
taze:
+
specifier: ^19.0.4
+
version: 19.0.4
+
typescript:
+
specifier: ^5.3.3
+
version: 5.8.2
+
prod:
+
'@moonlight-mod/lunast':
+
specifier: ^1.0.1
+
version: 1.0.1
+
'@moonlight-mod/mappings':
+
specifier: ^1.1.25
+
version: 1.1.25
+
'@moonlight-mod/moonmap':
+
specifier: ^1.0.5
+
version: 1.0.5
+
'@zenfs/core':
+
specifier: ^2.0.0
+
version: 2.0.0
+
'@zenfs/dom':
+
specifier: ^1.1.3
+
version: 1.1.6
+
microdiff:
+
specifier: ^1.5.0
+
version: 1.5.0
+
nanotar:
+
specifier: ^0.1.1
+
version: 0.1.1
+
importers:
.:
devDependencies:
'@moonlight-mod/eslint-config':
-
specifier: github:moonlight-mod/eslint-config
-
version: https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9(eslint@9.12.0)(prettier@3.1.0)(typescript@5.3.2)
+
specifier: catalog:dev
+
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)
+
'@types/node':
+
specifier: catalog:dev
+
version: 22.14.0
esbuild:
-
specifier: ^0.19.3
+
specifier: catalog:dev
version: 0.19.3
esbuild-copy-static-files:
-
specifier: ^0.1.0
+
specifier: catalog:dev
version: 0.1.0
eslint:
-
specifier: ^9.12.0
-
version: 9.12.0
+
specifier: catalog:dev
+
version: 9.23.0(jiti@2.4.2)
husky:
-
specifier: ^8.0.3
+
specifier: catalog:dev
version: 8.0.3
prettier:
-
specifier: ^3.1.0
+
specifier: catalog:dev
version: 3.1.0
+
taze:
+
specifier: catalog:dev
+
version: 19.0.4
typescript:
-
specifier: ^5.3.2
-
version: 5.3.2
+
specifier: catalog:dev
+
version: 5.8.2
packages/browser:
dependencies:
···
specifier: workspace:*
version: link:../web-preload
'@zenfs/core':
-
specifier: ^1.0.2
-
version: 1.0.2
+
specifier: catalog:prod
+
version: 2.0.0
'@zenfs/dom':
-
specifier: ^0.2.16
-
version: 0.2.16(@zenfs/core@1.0.2)
+
specifier: catalog:prod
+
version: 1.1.6(@zenfs/core@2.0.0)(utilium@1.10.1)
+
devDependencies:
+
'@types/chrome':
+
specifier: catalog:dev
+
version: 0.0.313
packages/core:
dependencies:
···
specifier: workspace:*
version: link:../types
microdiff:
-
specifier: ^1.5.0
+
specifier: catalog:prod
version: 1.5.0
nanotar:
-
specifier: ^0.1.1
+
specifier: catalog:prod
version: 0.1.1
packages/injector:
···
packages/types:
dependencies:
'@moonlight-mod/lunast':
-
specifier: ^1.0.0
-
version: 1.0.0
+
specifier: ^1.0.1
+
version: 1.0.1
'@moonlight-mod/mappings':
-
specifier: ^1.1.8
-
version: 1.1.8(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3)
+
specifier: ^1.1.25
+
version: 1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5)
'@moonlight-mod/moonmap':
-
specifier: ^1.0.3
-
version: 1.0.3
+
specifier: ^1.0.5
+
version: 1.0.5
'@types/react':
specifier: ^18.3.10
-
version: 18.3.10
+
version: 18.3.20
csstype:
-
specifier: ^3.1.2
-
version: 3.1.2
+
specifier: ^3.1.3
+
version: 3.1.3
standalone-electron-types:
specifier: ^1.0.0
version: 1.0.0
···
specifier: workspace:*
version: link:../core
'@moonlight-mod/lunast':
-
specifier: ^1.0.0
-
version: 1.0.0
+
specifier: catalog:prod
+
version: 1.0.1
'@moonlight-mod/mappings':
-
specifier: ^1.1.8
-
version: 1.1.8(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3)
+
specifier: catalog:prod
+
version: 1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5)
'@moonlight-mod/moonmap':
-
specifier: ^1.0.3
-
version: 1.0.3
+
specifier: catalog:prod
+
version: 1.0.5
'@moonlight-mod/types':
specifier: workspace:*
version: link:../types
···
'@aashutoshrathi/word-wrap@1.2.6':
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
+
+
'@antfu/ni@24.3.0':
+
resolution: {integrity: sha512-wBSav4mBxvHEW9RbdSo1SWLQ6MAlT0Dc423weC58yOWqW4OcMvtnNDdDrxOZeJ88fEIyPK93gDUWIelBxzSf8g==}
+
hasBin: true
'@esbuild/android-arm64@0.19.3':
resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==}
···
cpu: [x64]
os: [win32]
-
'@eslint-community/eslint-utils@4.4.0':
-
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+
'@eslint-community/eslint-utils@4.5.1':
+
resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
'@eslint-community/regexpp@4.11.1':
-
resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==}
+
'@eslint-community/regexpp@4.12.1':
+
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
'@eslint/config-array@0.18.0':
-
resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+
'@eslint/config-array@0.19.2':
+
resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/core@0.6.0':
-
resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==}
+
'@eslint/config-helpers@0.2.1':
+
resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/eslintrc@3.1.0':
-
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+
'@eslint/core@0.12.0':
+
resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/js@9.12.0':
-
resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==}
+
'@eslint/core@0.13.0':
+
resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/object-schema@2.1.4':
-
resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
+
'@eslint/eslintrc@3.3.1':
+
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/plugin-kit@0.2.0':
-
resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==}
+
'@eslint/js@9.23.0':
+
resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==}
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+
'@eslint/object-schema@2.1.6':
+
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@humanfs/core@0.19.0':
-
resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==}
+
'@eslint/plugin-kit@0.2.8':
+
resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+
'@humanfs/core@0.19.1':
+
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
-
'@humanfs/node@0.16.5':
-
resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==}
+
'@humanfs/node@0.16.6':
+
resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
engines: {node: '>=18.18.0'}
'@humanwhocodes/module-importer@1.0.1':
···
'@humanwhocodes/retry@0.3.1':
resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
+
engines: {node: '>=18.18'}
+
+
'@humanwhocodes/retry@0.4.2':
+
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
engines: {node: '>=18.18'}
'@moonlight-mod/eslint-config@https://codeload.github.com/moonlight-mod/eslint-config/tar.gz/e262ac24e1a0955a9b3e0d66da247a0a8c0446c9':
···
eslint: '>= 9'
typescript: '>= 5.3'
-
'@moonlight-mod/lunast@1.0.0':
-
resolution: {integrity: sha512-kJgf41K12i6/2LbXK97CNO+pNO7ADGh9N4bCQcOPwosocKMcwKHDEZUgPqeihNshY3c3AEW1LiyXjlsl24PdDw==}
+
'@moonlight-mod/lunast@1.0.1':
+
resolution: {integrity: sha512-K3vxzDlfFuYKjciIW2FMlcZ1qrrkAGDGpSBlNqYGtJ0sMt9bRCd2lpSpg6AX/giSljDtmAUXa/5mOfUoDQxjBA==}
-
'@moonlight-mod/mappings@1.1.8':
-
resolution: {integrity: sha512-nwdIUzkrVAeLryY3BT4QCJHngggvRJBP3uA2smIwyDQbDw5nXMAEaq+9EJn9lpZaNaO0G7zY0uRWQgYlaFLvcg==}
+
'@moonlight-mod/mappings@1.1.25':
+
resolution: {integrity: sha512-bgnSN9H/IBdMGxGev6RQKXuzhQxwo1090NhIDHnflguZnjiu2pg/usPfh76bqyhxRuX4SS7tiZSNTwBoSflCLg==}
+
engines: {node: '>=22', npm: pnpm, pnpm: '>=10', yarn: pnpm}
peerDependencies:
-
'@moonlight-mod/lunast': ^1.0.0
-
'@moonlight-mod/moonmap': ^1.0.0
+
'@moonlight-mod/lunast': ^1.0.1
+
'@moonlight-mod/moonmap': ^1.0.5
-
'@moonlight-mod/moonmap@1.0.3':
-
resolution: {integrity: sha512-G7pwvrcVDimc388IX6VZFzBXpbuyvqbJ+w9/v+MUIc8P7dADJXQ9YkBWvobtRc6eaBBl1FWUwTeU8oobbxLVag==}
+
'@moonlight-mod/moonmap@1.0.5':
+
resolution: {integrity: sha512-Fdpxj8ghdulKB6TlTnchlCPey2YUKgEf1chuO1ofOIcvlqnVPBcQwSf2S80naOUQpXCDo4dQ+LWSE2fmhdDiiw==}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
···
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
-
'@pkgr/core@0.1.1':
-
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+
'@pkgr/core@0.2.0':
+
resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
'@quansync/fs@0.1.2':
+
resolution: {integrity: sha512-ezIadUb1aFhwJLd++WVqVpi9rnlX8vnd4ju7saPhwLHJN1mJgOv0puePTGV+FbtSnWtwoHDT8lAm4kagDZmpCg==}
+
engines: {node: '>=20.0.0'}
+
'@types/chroma-js@3.1.0':
resolution: {integrity: sha512-Uwl3SOtUkbQ6Ye6ZYu4q4xdLGBzmY839sEHYtOT7i691neeyd+7fXWT5VIkcUSfNwIFrIjQutNYQn9h4q5HFvg==}
+
+
'@types/chrome@0.0.313':
+
resolution: {integrity: sha512-9R5T7gTaYZhkxlu+Ho4wk9FL+y/werWQY2yjGWSqCuiTsqS7nL/BE5UMTP6rU7J+oIG2FRKqrEycHhJATeltVA==}
+
+
'@types/eslint@9.6.1':
+
resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
···
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
'@types/estree@1.0.7':
+
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+
'@types/fbemitter@2.0.35':
resolution: {integrity: sha512-Xem6d7qUfmouCHntCrRYgDBwbf+WWRd6G+7WEFlEZFZ67LZXiYRvT2LV8wcZa6mIaAil95+ABQdKgB6hPIsnng==}
+
'@types/filesystem@0.0.36':
+
resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==}
+
+
'@types/filewriter@0.0.33':
+
resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==}
+
'@types/flux@3.1.14':
resolution: {integrity: sha512-WRXN0kQPCnqxN0/PgNgc7WBF6c8rbSHsEep3/qBLpsQ824RONdOmTs0TV7XhIW2GDNRAHO2CqCgAFLR5PChosw==}
+
+
'@types/har-format@1.2.16':
+
resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
'@types/highlightjs@9.12.6':
resolution: {integrity: sha512-Qfd1DUrwE851Hc3tExADJY4qY8yeZMt06Xw9AJm/UtpneepJS3MZY29c33BY0wP899veaaHD4gZzYiSuQm84Fg==}
···
'@types/node@18.17.17':
resolution: {integrity: sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==}
-
'@types/node@20.16.10':
-
resolution: {integrity: sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==}
+
'@types/node@22.13.6':
+
resolution: {integrity: sha512-GYmF65GI7417CpZXsEXMjT8goQQDnpRnJnDw6jIYa+le3V/lMazPZ4vZmK1B/9R17fh2VLr2zuy9d/h5xgrLAg==}
+
+
'@types/node@22.14.0':
+
resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==}
'@types/platform@1.3.6':
resolution: {integrity: sha512-ZmSaqHuvzv+jC232cFoz2QqPUkaj6EvMmCrWcx3WRr7xTPVFCMUOTcOq8m2d+Zw1iKRc1kDiaA+jtNrV0hkVew==}
···
'@types/prop-types@15.7.13':
resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
-
'@types/react@18.3.10':
-
resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==}
+
'@types/react@18.3.20':
+
resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==}
-
'@types/readable-stream@4.0.15':
-
resolution: {integrity: sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==}
-
-
'@typescript-eslint/eslint-plugin@8.8.1':
-
resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==}
+
'@typescript-eslint/eslint-plugin@8.29.0':
+
resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
typescript: '>=4.8.4 <5.9.0'
-
'@typescript-eslint/parser@8.8.1':
-
resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==}
+
'@typescript-eslint/parser@8.29.0':
+
resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
typescript: '>=4.8.4 <5.9.0'
-
'@typescript-eslint/scope-manager@8.8.1':
-
resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==}
+
'@typescript-eslint/scope-manager@8.29.0':
+
resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/type-utils@8.8.1':
-
resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==}
+
'@typescript-eslint/type-utils@8.29.0':
+
resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
eslint: ^8.57.0 || ^9.0.0
+
typescript: '>=4.8.4 <5.9.0'
-
'@typescript-eslint/types@8.8.1':
-
resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==}
+
'@typescript-eslint/types@8.29.0':
+
resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/typescript-estree@8.8.1':
-
resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==}
+
'@typescript-eslint/typescript-estree@8.29.0':
+
resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
typescript: '>=4.8.4 <5.9.0'
-
'@typescript-eslint/utils@8.8.1':
-
resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==}
+
'@typescript-eslint/utils@8.29.0':
+
resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
+
typescript: '>=4.8.4 <5.9.0'
-
'@typescript-eslint/visitor-keys@8.8.1':
-
resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==}
+
'@typescript-eslint/visitor-keys@8.29.0':
+
resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@zenfs/core@1.0.2':
-
resolution: {integrity: sha512-LMTD4ntn6Ag1y+IeOSVykDDvYC12dsGFtsX8M/54OQrLs7v+YnX4bpo0o2osbm8XFmU2MTNMX/G3PLsvzgWzrg==}
-
engines: {node: '>= 16'}
+
'@xterm/xterm@5.5.0':
+
resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==}
+
+
'@zenfs/core@2.0.0':
+
resolution: {integrity: sha512-wOKNFTY1DJ1vdLqKdU7M8cRh0nVYZcDVu7WHuk/3u49hrSwTZVm4PzGxJUjFd8O9Wi3U5nYTbZoN7RX5mS2ldA==}
+
engines: {node: '>= 18'}
hasBin: true
-
'@zenfs/dom@0.2.16':
-
resolution: {integrity: sha512-6Ev+ol9hZIgQECNZR+xxjQ/a99EhhrWeiQttm/+U7YJK3HdTjiKfU39DsfGeH64vSqhpa5Vj+LWRx75SHkjw0Q==}
+
'@zenfs/dom@1.1.6':
+
resolution: {integrity: sha512-7SBTWgA0esuEv/TE+N/xk6W/XJf8uBF+LhlPNHQdXds0H7aOy/UYsWv/8glvARe+meDMMidoeWFLzUWoMXfjlA==}
engines: {node: '>= 18'}
peerDependencies:
-
'@zenfs/core': ^1.0.0
+
'@zenfs/core': ^2.0.0
+
utilium: ^1.9.0
abort-controller@3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
···
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
acorn@8.12.1:
-
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+
acorn@8.14.1:
+
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
engines: {node: '>=0.4.0'}
hasBin: true
···
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
+
ansis@3.17.0:
+
resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==}
+
engines: {node: '>=14'}
+
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
array-buffer-byte-length@1.0.1:
-
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+
array-buffer-byte-length@1.0.2:
+
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
array-includes@3.1.8:
···
resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
engines: {node: '>= 0.4'}
-
array.prototype.flat@1.3.2:
-
resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+
array.prototype.flat@1.3.3:
+
resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
engines: {node: '>= 0.4'}
-
array.prototype.flatmap@1.3.2:
-
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+
array.prototype.flatmap@1.3.3:
+
resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
engines: {node: '>= 0.4'}
array.prototype.tosorted@1.1.4:
resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
engines: {node: '>= 0.4'}
-
arraybuffer.prototype.slice@1.0.3:
-
resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+
arraybuffer.prototype.slice@1.0.4:
+
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
astring@1.9.0:
resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
hasBin: true
+
async-function@1.0.0:
+
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+
engines: {node: '>= 0.4'}
+
available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
···
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
call-bind@1.0.7:
-
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+
cac@6.7.14:
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+
engines: {node: '>=8'}
+
+
call-bind-apply-helpers@1.0.2:
+
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+
engines: {node: '>= 0.4'}
+
+
call-bind@1.0.8:
+
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+
engines: {node: '>= 0.4'}
+
+
call-bound@1.0.4:
+
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
callsites@3.1.0:
···
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
cross-spawn@7.0.3:
-
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+
cross-spawn@7.0.6:
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
-
csstype@3.1.2:
-
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
-
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
data-view-buffer@1.0.1:
-
resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+
data-view-buffer@1.0.2:
+
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
-
data-view-byte-length@1.0.1:
-
resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+
data-view-byte-length@1.0.2:
+
resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
engines: {node: '>= 0.4'}
-
data-view-byte-offset@1.0.0:
-
resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+
data-view-byte-offset@1.0.1:
+
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
engines: {node: '>= 0.4'}
-
debug@4.3.4:
-
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+
debug@4.4.0:
+
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
···
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
+
defu@6.1.4:
+
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+
+
destr@2.0.4:
+
resolution: {integrity: sha512-FCAorltMy7QwX0QU38jOkhrv20LBpsHA8ogzvMhhPHCCKVCaN6GxrB0GGaWEWBUYI4eEjjfJ95RdP6dk9IdMQA==}
+
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
-
es-abstract@1.23.3:
-
resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+
dunder-proto@1.0.1:
+
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+
engines: {node: '>= 0.4'}
+
+
es-abstract@1.23.9:
+
resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
engines: {node: '>= 0.4'}
-
es-define-property@1.0.0:
-
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+
es-define-property@1.0.1:
+
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
-
es-iterator-helpers@1.1.0:
-
resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==}
+
es-iterator-helpers@1.2.1:
+
resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
engines: {node: '>= 0.4'}
-
es-object-atoms@1.0.0:
-
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+
es-object-atoms@1.1.1:
+
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
-
es-set-tostringtag@2.0.3:
-
resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+
es-set-tostringtag@2.1.0:
+
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
-
es-shim-unscopables@1.0.2:
-
resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+
es-shim-unscopables@1.1.0:
+
resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
+
engines: {node: '>= 0.4'}
-
es-to-primitive@1.2.1:
-
resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+
es-to-primitive@1.3.0:
+
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
esbuild-copy-static-files@0.1.0:
···
peerDependencies:
eslint: '>=7.0.0'
-
eslint-plugin-prettier@5.2.1:
-
resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
+
eslint-plugin-prettier@5.2.6:
+
resolution: {integrity: sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
'@types/eslint': '>=8.0.0'
eslint: '>=8.0.0'
-
eslint-config-prettier: '*'
+
eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0'
prettier: '>=3.0.0'
peerDependenciesMeta:
'@types/eslint':
···
eslint-config-prettier:
optional: true
-
eslint-plugin-react@7.37.1:
-
resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==}
+
eslint-plugin-react@7.37.5:
+
resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
-
eslint-scope@8.1.0:
-
resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==}
+
eslint-scope@8.3.0:
+
resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
eslint-visitor-keys@4.1.0:
-
resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
+
eslint-visitor-keys@4.2.0:
+
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
eslint@9.12.0:
-
resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==}
+
eslint@9.23.0:
+
resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
···
jiti:
optional: true
-
espree@10.2.0:
-
resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==}
+
espree@10.3.0:
+
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
esquery@1.5.0:
-
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+
esquery@1.6.0:
+
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
esrecurse@4.3.0:
···
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
fdir@6.4.3:
+
resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
+
peerDependencies:
+
picomatch: ^3 || ^4
+
peerDependenciesMeta:
+
picomatch:
+
optional: true
+
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
···
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+
find-up-simple@1.0.1:
+
resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==}
+
engines: {node: '>=18'}
+
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
···
flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
-
for-each@0.3.3:
-
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+
for-each@0.3.5:
+
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+
engines: {node: '>= 0.4'}
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
function.prototype.name@1.1.6:
-
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+
function.prototype.name@1.1.8:
+
resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
engines: {node: '>= 0.4'}
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
get-intrinsic@1.2.4:
-
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+
fzf@0.5.2:
+
resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==}
+
+
get-intrinsic@1.3.0:
+
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
-
get-symbol-description@1.0.2:
-
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+
get-proto@1.0.1:
+
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+
engines: {node: '>= 0.4'}
+
+
get-symbol-description@1.1.0:
+
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
glob-parent@5.1.2:
···
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
-
gopd@1.0.1:
-
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
gopd@1.2.0:
+
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+
engines: {node: '>= 0.4'}
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
has-bigints@1.0.2:
-
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+
has-bigints@1.1.0:
+
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+
engines: {node: '>= 0.4'}
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
···
has-property-descriptors@1.0.2:
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
has-proto@1.0.3:
-
resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+
has-proto@1.2.0:
+
resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
engines: {node: '>= 0.4'}
-
has-symbols@1.0.3:
-
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+
has-symbols@1.1.0:
+
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
has-tostringtag@1.0.2:
···
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
ignore@5.3.0:
-
resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
-
engines: {node: '>= 4'}
-
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
···
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
-
internal-slot@1.0.7:
-
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+
internal-slot@1.1.0:
+
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
-
is-array-buffer@3.0.4:
-
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+
is-array-buffer@3.0.5:
+
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
engines: {node: '>= 0.4'}
-
is-async-function@2.0.0:
-
resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+
is-async-function@2.1.1:
+
resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
engines: {node: '>= 0.4'}
-
is-bigint@1.0.4:
-
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+
is-bigint@1.1.0:
+
resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+
engines: {node: '>= 0.4'}
-
is-boolean-object@1.1.2:
-
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+
is-boolean-object@1.2.2:
+
resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
engines: {node: '>= 0.4'}
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
-
is-core-module@2.15.1:
-
resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+
is-core-module@2.16.1:
+
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
-
is-data-view@1.0.1:
-
resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+
is-data-view@1.0.2:
+
resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
engines: {node: '>= 0.4'}
-
is-date-object@1.0.5:
-
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+
is-date-object@1.1.0:
+
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
-
is-finalizationregistry@1.0.2:
-
resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+
is-finalizationregistry@1.1.1:
+
resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+
engines: {node: '>= 0.4'}
-
is-generator-function@1.0.10:
-
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+
is-generator-function@1.1.0:
+
resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
engines: {node: '>= 0.4'}
is-glob@4.0.3:
···
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
-
is-negative-zero@2.0.3:
-
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
-
engines: {node: '>= 0.4'}
-
-
is-number-object@1.0.7:
-
resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+
is-number-object@1.1.1:
+
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
engines: {node: '>= 0.4'}
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
-
is-regex@1.1.4:
-
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+
is-regex@1.2.1:
+
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
is-set@2.0.3:
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
engines: {node: '>= 0.4'}
-
is-shared-array-buffer@1.0.3:
-
resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+
is-shared-array-buffer@1.0.4:
+
resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
engines: {node: '>= 0.4'}
-
is-string@1.0.7:
-
resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+
is-string@1.1.1:
+
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
engines: {node: '>= 0.4'}
-
is-symbol@1.0.4:
-
resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+
is-symbol@1.1.1:
+
resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
engines: {node: '>= 0.4'}
-
is-typed-array@1.1.13:
-
resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+
is-typed-array@1.1.15:
+
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
engines: {node: '>= 0.4'}
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
-
is-weakref@1.0.2:
-
resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+
is-weakref@1.1.1:
+
resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+
engines: {node: '>= 0.4'}
-
is-weakset@2.0.3:
-
resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+
is-weakset@2.0.4:
+
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
engines: {node: '>= 0.4'}
isarray@2.0.5:
···
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
iterator.prototype@1.1.3:
-
resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==}
+
iterator.prototype@1.1.5:
+
resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
engines: {node: '>= 0.4'}
+
+
jiti@2.4.2:
+
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
+
hasBin: true
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
···
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
+
math-intrinsics@1.1.0:
+
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+
engines: {node: '>= 0.4'}
+
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
···
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
+
mimic-function@5.0.1:
+
resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
+
engines: {node: '>=18'}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
···
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
-
ms@2.1.2:
-
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
ms@2.1.3:
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
nanotar@0.1.1:
resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==}
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+
node-fetch-native@1.6.6:
+
resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
-
object-inspect@1.13.2:
-
resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+
object-inspect@1.13.4:
+
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
-
object.assign@4.1.5:
-
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+
object.assign@4.1.7:
+
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
engines: {node: '>= 0.4'}
-
object.entries@1.1.8:
-
resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
+
object.entries@1.1.9:
+
resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
engines: {node: '>= 0.4'}
object.fromentries@2.0.8:
resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
engines: {node: '>= 0.4'}
-
object.values@1.2.0:
-
resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+
object.values@1.2.1:
+
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
+
ofetch@1.4.1:
+
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
+
+
onetime@7.0.0:
+
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
+
engines: {node: '>=18'}
+
optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
+
+
own-keys@1.0.1:
+
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+
engines: {node: '>= 0.4'}
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
···
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
+
package-manager-detector@1.1.0:
+
resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
···
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
pathe@2.0.3:
+
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
-
possible-typed-array-names@1.0.0:
-
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+
picomatch@4.0.2:
+
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+
engines: {node: '>=12'}
+
+
pnpm-workspace-yaml@0.3.1:
+
resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==}
+
+
possible-typed-array-names@1.1.0:
+
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
prelude-ls@1.2.1:
···
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+
quansync@0.2.10:
+
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
···
resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
reflect.getprototypeof@1.0.6:
-
resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+
reflect.getprototypeof@1.0.10:
+
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
-
regexp.prototype.flags@1.5.3:
-
resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
+
regexp.prototype.flags@1.5.4:
+
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
engines: {node: '>= 0.4'}
resolve-from@4.0.0:
···
resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
hasBin: true
+
restore-cursor@5.1.0:
+
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
+
engines: {node: '>=18'}
+
reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
···
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
safe-array-concat@1.1.2:
-
resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+
safe-array-concat@1.1.3:
+
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
-
safe-buffer@5.1.2:
-
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
-
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
safe-regex-test@1.0.3:
-
resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+
safe-push-apply@1.0.0:
+
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+
engines: {node: '>= 0.4'}
+
+
safe-regex-test@1.1.0:
+
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
-
semver@7.6.3:
-
resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+
semver@7.7.1:
+
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
hasBin: true
···
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
engines: {node: '>= 0.4'}
+
set-proto@1.0.0:
+
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+
engines: {node: '>= 0.4'}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
···
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
-
side-channel@1.0.6:
-
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+
side-channel-list@1.0.0:
+
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+
engines: {node: '>= 0.4'}
+
+
side-channel-map@1.0.1:
+
resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+
engines: {node: '>= 0.4'}
+
+
side-channel-weakmap@1.0.2:
+
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+
engines: {node: '>= 0.4'}
+
+
side-channel@1.1.0:
+
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+
signal-exit@4.1.0:
+
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+
engines: {node: '>=14'}
+
standalone-electron-types@1.0.0:
resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==}
-
string.prototype.matchall@4.0.11:
-
resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
+
string.prototype.matchall@4.0.12:
+
resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
engines: {node: '>= 0.4'}
string.prototype.repeat@1.0.0:
resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
-
string.prototype.trim@1.2.9:
-
resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+
string.prototype.trim@1.2.10:
+
resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
engines: {node: '>= 0.4'}
-
string.prototype.trimend@1.0.8:
-
resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+
string.prototype.trimend@1.0.9:
+
resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+
engines: {node: '>= 0.4'}
string.prototype.trimstart@1.0.8:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
···
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
-
synckit@0.9.2:
-
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
+
synckit@0.11.1:
+
resolution: {integrity: sha512-fWZqNBZNNFp/7mTUy1fSsydhKsAKJ+u90Nk7kOK5Gcq9vObaqLBLjWFDBkyVU9Vvc6Y71VbOevMuGhqv02bT+Q==}
engines: {node: ^14.18.0 || >=16.0.0}
-
text-table@0.2.0:
-
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
taze@19.0.4:
+
resolution: {integrity: sha512-bviyNotzqcIWpVBCC4QYVb2yupzKyUDGQi2m/8GERdiPaudVMtgAqaE98+x0cDDaByYRMJCyhQWM04ikUL6+kQ==}
+
hasBin: true
+
+
tinyexec@1.0.1:
+
resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+
+
tinyglobby@0.2.12:
+
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
+
engines: {node: '>=12.0.0'}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
-
ts-api-utils@1.3.0:
-
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
-
engines: {node: '>=16'}
+
ts-api-utils@2.1.0:
+
resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
+
engines: {node: '>=18.12'}
peerDependencies:
-
typescript: '>=4.2.0'
+
typescript: '>=4.8.4'
-
tslib@2.7.0:
-
resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
+
tslib@2.8.1:
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
-
typed-array-buffer@1.0.2:
-
resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+
typed-array-buffer@1.0.3:
+
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
-
typed-array-byte-length@1.0.1:
-
resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+
typed-array-byte-length@1.0.3:
+
resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
engines: {node: '>= 0.4'}
-
typed-array-byte-offset@1.0.2:
-
resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+
typed-array-byte-offset@1.0.4:
+
resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
engines: {node: '>= 0.4'}
-
typed-array-length@1.0.6:
-
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+
typed-array-length@1.0.7:
+
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
-
typescript-eslint@8.8.1:
-
resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==}
+
typescript-eslint@8.29.0:
+
resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
eslint: ^8.57.0 || ^9.0.0
+
typescript: '>=4.8.4 <5.9.0'
-
typescript@5.3.2:
-
resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==}
+
typescript@5.8.2:
+
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
hasBin: true
-
unbox-primitive@1.0.2:
-
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+
ufo@1.5.4:
+
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
+
unbox-primitive@1.1.0:
+
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+
engines: {node: '>= 0.4'}
-
undici-types@6.19.8:
-
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
unconfig@7.3.1:
+
resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==}
+
+
undici-types@6.20.0:
+
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
+
+
undici-types@6.21.0:
+
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
utilium@0.7.1:
-
resolution: {integrity: sha512-2ocvTkI7U8LERmwxL0LhFUvEfN66UqcjF6tMiURvUwSyU7U1QC9gST+3iSUSiGccFfnP3f2EXwHNXOnOzx+lAg==}
+
utilium@1.10.1:
+
resolution: {integrity: sha512-GQINDTb/ocyz4acQj3GXAe0wipYxws6L+9ouqaq10KlInTk9DGvW9TJd0pYa/Xu3cppNnZuB4T/sBuSXpcN2ng==}
-
which-boxed-primitive@1.0.2:
-
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+
which-boxed-primitive@1.1.1:
+
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+
engines: {node: '>= 0.4'}
-
which-builtin-type@1.1.4:
-
resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
+
which-builtin-type@1.2.1:
+
resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
engines: {node: '>= 0.4'}
which-collection@1.0.2:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
-
which-typed-array@1.1.15:
-
resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+
which-typed-array@1.1.19:
+
resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
engines: {node: '>= 0.4'}
which@2.0.2:
···
engines: {node: '>= 8'}
hasBin: true
+
yaml@2.7.1:
+
resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
+
engines: {node: '>= 14'}
+
hasBin: true
+
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+
zustand@5.0.3:
+
resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==}
+
engines: {node: '>=12.20.0'}
+
peerDependencies:
+
'@types/react': '>=18.0.0'
+
immer: '>=9.0.6'
+
react: '>=18.0.0'
+
use-sync-external-store: '>=1.2.0'
+
peerDependenciesMeta:
+
'@types/react':
+
optional: true
+
immer:
+
optional: true
+
react:
+
optional: true
+
use-sync-external-store:
+
optional: true
+
snapshots:
'@aashutoshrathi/word-wrap@1.2.6': {}
+
+
'@antfu/ni@24.3.0':
+
dependencies:
+
ansis: 3.17.0
+
fzf: 0.5.2
+
package-manager-detector: 1.1.0
+
tinyexec: 1.0.1
'@esbuild/android-arm64@0.19.3':
optional: true
···
'@esbuild/win32-x64@0.19.3':
optional: true
-
'@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)':
+
'@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))':
dependencies:
-
eslint: 9.12.0
+
eslint: 9.23.0(jiti@2.4.2)
eslint-visitor-keys: 3.4.3
-
'@eslint-community/regexpp@4.11.1': {}
+
'@eslint-community/regexpp@4.12.1': {}
-
'@eslint/config-array@0.18.0':
+
'@eslint/config-array@0.19.2':
dependencies:
-
'@eslint/object-schema': 2.1.4
-
debug: 4.3.4
+
'@eslint/object-schema': 2.1.6
+
debug: 4.4.0
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
-
'@eslint/core@0.6.0': {}
+
'@eslint/config-helpers@0.2.1': {}
-
'@eslint/eslintrc@3.1.0':
+
'@eslint/core@0.12.0':
+
dependencies:
+
'@types/json-schema': 7.0.15
+
+
'@eslint/core@0.13.0':
+
dependencies:
+
'@types/json-schema': 7.0.15
+
+
'@eslint/eslintrc@3.3.1':
dependencies:
ajv: 6.12.6
-
debug: 4.3.4
-
espree: 10.2.0
+
debug: 4.4.0
+
espree: 10.3.0
globals: 14.0.0
-
ignore: 5.3.0
+
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
···
transitivePeerDependencies:
- supports-color
-
'@eslint/js@9.12.0': {}
+
'@eslint/js@9.23.0': {}
-
'@eslint/object-schema@2.1.4': {}
+
'@eslint/object-schema@2.1.6': {}
-
'@eslint/plugin-kit@0.2.0':
+
'@eslint/plugin-kit@0.2.8':
dependencies:
+
'@eslint/core': 0.13.0
levn: 0.4.1
-
'@humanfs/core@0.19.0': {}
+
'@humanfs/core@0.19.1': {}
-
'@humanfs/node@0.16.5':
+
'@humanfs/node@0.16.6':
dependencies:
-
'@humanfs/core': 0.19.0
+
'@humanfs/core': 0.19.1
'@humanwhocodes/retry': 0.3.1
'@humanwhocodes/module-importer@1.0.1': {}
'@humanwhocodes/retry@0.3.1': {}
-
'@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)':
+
'@humanwhocodes/retry@0.4.2': {}
+
+
'@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)':
dependencies:
-
'@eslint/js': 9.12.0
-
eslint: 9.12.0
-
eslint-config-prettier: 9.1.0(eslint@9.12.0)
-
eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.1.0)
-
eslint-plugin-react: 7.37.1(eslint@9.12.0)
-
typescript: 5.3.2
-
typescript-eslint: 8.8.1(eslint@9.12.0)(typescript@5.3.2)
+
'@eslint/js': 9.23.0
+
eslint: 9.23.0(jiti@2.4.2)
+
eslint-config-prettier: 9.1.0(eslint@9.23.0(jiti@2.4.2))
+
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)
+
eslint-plugin-react: 7.37.5(eslint@9.23.0(jiti@2.4.2))
+
typescript: 5.8.2
+
typescript-eslint: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
transitivePeerDependencies:
- '@types/eslint'
- prettier
- supports-color
-
'@moonlight-mod/lunast@1.0.0':
+
'@moonlight-mod/lunast@1.0.1':
dependencies:
astring: 1.9.0
estree-toolkit: 1.7.8
meriyah: 6.0.1
-
'@moonlight-mod/mappings@1.1.8(@moonlight-mod/lunast@1.0.0)(@moonlight-mod/moonmap@1.0.3)':
+
'@moonlight-mod/mappings@1.1.25(@moonlight-mod/lunast@1.0.1)(@moonlight-mod/moonmap@1.0.5)':
dependencies:
-
'@moonlight-mod/lunast': 1.0.0
-
'@moonlight-mod/moonmap': 1.0.3
+
'@moonlight-mod/lunast': 1.0.1
+
'@moonlight-mod/moonmap': 1.0.5
'@types/chroma-js': 3.1.0
'@types/flux': 3.1.14
'@types/highlightjs': 9.12.6
'@types/lodash': 4.17.14
'@types/platform': 1.3.6
-
'@types/react': 18.3.10
+
'@types/react': 18.3.20
csstype: 3.1.3
+
zustand: 5.0.3(@types/react@18.3.20)
+
transitivePeerDependencies:
+
- immer
+
- react
+
- use-sync-external-store
-
'@moonlight-mod/moonmap@1.0.3': {}
+
'@moonlight-mod/moonmap@1.0.5': {}
'@nodelib/fs.scandir@2.1.5':
dependencies:
···
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
-
'@pkgr/core@0.1.1': {}
+
'@pkgr/core@0.2.0': {}
+
+
'@quansync/fs@0.1.2':
+
dependencies:
+
quansync: 0.2.10
'@types/chroma-js@3.1.0': {}
+
'@types/chrome@0.0.313':
+
dependencies:
+
'@types/filesystem': 0.0.36
+
'@types/har-format': 1.2.16
+
+
'@types/eslint@9.6.1':
+
dependencies:
+
'@types/estree': 1.0.7
+
'@types/json-schema': 7.0.15
+
optional: true
+
'@types/estree-jsx@1.0.5':
dependencies:
'@types/estree': 1.0.6
'@types/estree@1.0.6': {}
+
'@types/estree@1.0.7':
+
optional: true
+
'@types/fbemitter@2.0.35': {}
+
'@types/filesystem@0.0.36':
+
dependencies:
+
'@types/filewriter': 0.0.33
+
+
'@types/filewriter@0.0.33': {}
+
'@types/flux@3.1.14':
dependencies:
'@types/fbemitter': 2.0.35
-
'@types/react': 18.3.10
+
'@types/react': 18.3.20
+
+
'@types/har-format@1.2.16': {}
'@types/highlightjs@9.12.6': {}
···
'@types/node@18.17.17': {}
-
'@types/node@20.16.10':
+
'@types/node@22.13.6':
dependencies:
-
undici-types: 6.19.8
+
undici-types: 6.20.0
+
+
'@types/node@22.14.0':
+
dependencies:
+
undici-types: 6.21.0
'@types/platform@1.3.6': {}
'@types/prop-types@15.7.13': {}
-
'@types/react@18.3.10':
+
'@types/react@18.3.20':
dependencies:
'@types/prop-types': 15.7.13
csstype: 3.1.3
-
'@types/readable-stream@4.0.15':
+
'@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)':
dependencies:
-
'@types/node': 20.16.10
-
safe-buffer: 5.1.2
-
-
'@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)':
-
dependencies:
-
'@eslint-community/regexpp': 4.11.1
-
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
'@typescript-eslint/scope-manager': 8.8.1
-
'@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
'@typescript-eslint/visitor-keys': 8.8.1
-
eslint: 9.12.0
+
'@eslint-community/regexpp': 4.12.1
+
'@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
+
'@typescript-eslint/scope-manager': 8.29.0
+
'@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
+
'@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
+
'@typescript-eslint/visitor-keys': 8.29.0
+
eslint: 9.23.0(jiti@2.4.2)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
-
ts-api-utils: 1.3.0(typescript@5.3.2)
-
optionalDependencies:
-
typescript: 5.3.2
+
ts-api-utils: 2.1.0(typescript@5.8.2)
+
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
-
'@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.3.2)':
+
'@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
-
'@typescript-eslint/scope-manager': 8.8.1
-
'@typescript-eslint/types': 8.8.1
-
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2)
-
'@typescript-eslint/visitor-keys': 8.8.1
-
debug: 4.3.4
-
eslint: 9.12.0
-
optionalDependencies:
-
typescript: 5.3.2
+
'@typescript-eslint/scope-manager': 8.29.0
+
'@typescript-eslint/types': 8.29.0
+
'@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
+
'@typescript-eslint/visitor-keys': 8.29.0
+
debug: 4.4.0
+
eslint: 9.23.0(jiti@2.4.2)
+
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
-
'@typescript-eslint/scope-manager@8.8.1':
+
'@typescript-eslint/scope-manager@8.29.0':
dependencies:
-
'@typescript-eslint/types': 8.8.1
-
'@typescript-eslint/visitor-keys': 8.8.1
+
'@typescript-eslint/types': 8.29.0
+
'@typescript-eslint/visitor-keys': 8.29.0
-
'@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.3.2)':
+
'@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
-
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2)
-
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
debug: 4.3.4
-
ts-api-utils: 1.3.0(typescript@5.3.2)
-
optionalDependencies:
-
typescript: 5.3.2
+
'@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
+
'@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
+
debug: 4.4.0
+
eslint: 9.23.0(jiti@2.4.2)
+
ts-api-utils: 2.1.0(typescript@5.8.2)
+
typescript: 5.8.2
transitivePeerDependencies:
-
- eslint
- supports-color
-
'@typescript-eslint/types@8.8.1': {}
+
'@typescript-eslint/types@8.29.0': {}
-
'@typescript-eslint/typescript-estree@8.8.1(typescript@5.3.2)':
+
'@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)':
dependencies:
-
'@typescript-eslint/types': 8.8.1
-
'@typescript-eslint/visitor-keys': 8.8.1
-
debug: 4.3.4
+
'@typescript-eslint/types': 8.29.0
+
'@typescript-eslint/visitor-keys': 8.29.0
+
debug: 4.4.0
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
-
semver: 7.6.3
-
ts-api-utils: 1.3.0(typescript@5.3.2)
-
optionalDependencies:
-
typescript: 5.3.2
+
semver: 7.7.1
+
ts-api-utils: 2.1.0(typescript@5.8.2)
+
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
-
'@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.3.2)':
+
'@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
-
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
-
'@typescript-eslint/scope-manager': 8.8.1
-
'@typescript-eslint/types': 8.8.1
-
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.3.2)
-
eslint: 9.12.0
+
'@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2))
+
'@typescript-eslint/scope-manager': 8.29.0
+
'@typescript-eslint/types': 8.29.0
+
'@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
+
eslint: 9.23.0(jiti@2.4.2)
+
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
-
- typescript
-
'@typescript-eslint/visitor-keys@8.8.1':
+
'@typescript-eslint/visitor-keys@8.29.0':
dependencies:
-
'@typescript-eslint/types': 8.8.1
-
eslint-visitor-keys: 3.4.3
+
'@typescript-eslint/types': 8.29.0
+
eslint-visitor-keys: 4.2.0
+
+
'@xterm/xterm@5.5.0':
+
optional: true
-
'@zenfs/core@1.0.2':
+
'@zenfs/core@2.0.0':
dependencies:
-
'@types/node': 20.16.10
-
'@types/readable-stream': 4.0.15
+
'@types/node': 22.13.6
buffer: 6.0.3
eventemitter3: 5.0.1
-
minimatch: 9.0.5
readable-stream: 4.5.2
-
utilium: 0.7.1
+
utilium: 1.10.1
-
'@zenfs/dom@0.2.16(@zenfs/core@1.0.2)':
+
'@zenfs/dom@1.1.6(@zenfs/core@2.0.0)(utilium@1.10.1)':
dependencies:
-
'@zenfs/core': 1.0.2
+
'@zenfs/core': 2.0.0
+
utilium: 1.10.1
abort-controller@3.0.0:
dependencies:
event-target-shim: 5.0.1
-
acorn-jsx@5.3.2(acorn@8.12.1):
+
acorn-jsx@5.3.2(acorn@8.14.1):
dependencies:
-
acorn: 8.12.1
+
acorn: 8.14.1
-
acorn@8.12.1: {}
+
acorn@8.14.1: {}
ajv@6.12.6:
dependencies:
···
dependencies:
color-convert: 2.0.1
+
ansis@3.17.0: {}
+
argparse@2.0.1: {}
-
array-buffer-byte-length@1.0.1:
+
array-buffer-byte-length@1.0.2:
dependencies:
-
call-bind: 1.0.7
-
is-array-buffer: 3.0.4
+
call-bound: 1.0.4
+
is-array-buffer: 3.0.5
array-includes@3.1.8:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
-
es-object-atoms: 1.0.0
-
get-intrinsic: 1.2.4
-
is-string: 1.0.7
+
es-abstract: 1.23.9
+
es-object-atoms: 1.1.1
+
get-intrinsic: 1.3.0
+
is-string: 1.1.1
array.prototype.findlast@1.2.5:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
es-object-atoms: 1.0.0
-
es-shim-unscopables: 1.0.2
+
es-object-atoms: 1.1.1
+
es-shim-unscopables: 1.1.0
-
array.prototype.flat@1.3.2:
+
array.prototype.flat@1.3.3:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
-
es-shim-unscopables: 1.0.2
+
es-abstract: 1.23.9
+
es-shim-unscopables: 1.1.0
-
array.prototype.flatmap@1.3.2:
+
array.prototype.flatmap@1.3.3:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
-
es-shim-unscopables: 1.0.2
+
es-abstract: 1.23.9
+
es-shim-unscopables: 1.1.0
array.prototype.tosorted@1.1.4:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
es-shim-unscopables: 1.0.2
+
es-shim-unscopables: 1.1.0
-
arraybuffer.prototype.slice@1.0.3:
+
arraybuffer.prototype.slice@1.0.4:
dependencies:
-
array-buffer-byte-length: 1.0.1
-
call-bind: 1.0.7
+
array-buffer-byte-length: 1.0.2
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
get-intrinsic: 1.2.4
-
is-array-buffer: 3.0.4
-
is-shared-array-buffer: 1.0.3
+
get-intrinsic: 1.3.0
+
is-array-buffer: 3.0.5
astring@1.9.0: {}
+
async-function@1.0.0: {}
+
available-typed-arrays@1.0.7:
dependencies:
-
possible-typed-array-names: 1.0.0
+
possible-typed-array-names: 1.1.0
balanced-match@1.0.2: {}
···
base64-js: 1.5.1
ieee754: 1.2.1
-
call-bind@1.0.7:
+
cac@6.7.14: {}
+
+
call-bind-apply-helpers@1.0.2:
dependencies:
-
es-define-property: 1.0.0
es-errors: 1.3.0
function-bind: 1.1.2
-
get-intrinsic: 1.2.4
+
+
call-bind@1.0.8:
+
dependencies:
+
call-bind-apply-helpers: 1.0.2
+
es-define-property: 1.0.1
+
get-intrinsic: 1.3.0
set-function-length: 1.2.2
+
call-bound@1.0.4:
+
dependencies:
+
call-bind-apply-helpers: 1.0.2
+
get-intrinsic: 1.3.0
+
callsites@3.1.0: {}
chalk@4.1.2:
···
concat-map@0.0.1: {}
-
cross-spawn@7.0.3:
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
-
csstype@3.1.2: {}
-
csstype@3.1.3: {}
-
data-view-buffer@1.0.1:
+
data-view-buffer@1.0.2:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
es-errors: 1.3.0
-
is-data-view: 1.0.1
+
is-data-view: 1.0.2
-
data-view-byte-length@1.0.1:
+
data-view-byte-length@1.0.2:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
es-errors: 1.3.0
-
is-data-view: 1.0.1
+
is-data-view: 1.0.2
-
data-view-byte-offset@1.0.0:
+
data-view-byte-offset@1.0.1:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
es-errors: 1.3.0
-
is-data-view: 1.0.1
+
is-data-view: 1.0.2
-
debug@4.3.4:
+
debug@4.4.0:
dependencies:
-
ms: 2.1.2
+
ms: 2.1.3
deep-is@0.1.4: {}
define-data-property@1.1.4:
dependencies:
-
es-define-property: 1.0.0
+
es-define-property: 1.0.1
es-errors: 1.3.0
-
gopd: 1.0.1
+
gopd: 1.2.0
define-properties@1.2.1:
dependencies:
···
has-property-descriptors: 1.0.2
object-keys: 1.1.1
+
defu@6.1.4: {}
+
+
destr@2.0.4: {}
+
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
-
es-abstract@1.23.3:
+
dunder-proto@1.0.1:
dependencies:
-
array-buffer-byte-length: 1.0.1
-
arraybuffer.prototype.slice: 1.0.3
+
call-bind-apply-helpers: 1.0.2
+
es-errors: 1.3.0
+
gopd: 1.2.0
+
+
es-abstract@1.23.9:
+
dependencies:
+
array-buffer-byte-length: 1.0.2
+
arraybuffer.prototype.slice: 1.0.4
available-typed-arrays: 1.0.7
-
call-bind: 1.0.7
-
data-view-buffer: 1.0.1
-
data-view-byte-length: 1.0.1
-
data-view-byte-offset: 1.0.0
-
es-define-property: 1.0.0
+
call-bind: 1.0.8
+
call-bound: 1.0.4
+
data-view-buffer: 1.0.2
+
data-view-byte-length: 1.0.2
+
data-view-byte-offset: 1.0.1
+
es-define-property: 1.0.1
es-errors: 1.3.0
-
es-object-atoms: 1.0.0
-
es-set-tostringtag: 2.0.3
-
es-to-primitive: 1.2.1
-
function.prototype.name: 1.1.6
-
get-intrinsic: 1.2.4
-
get-symbol-description: 1.0.2
+
es-object-atoms: 1.1.1
+
es-set-tostringtag: 2.1.0
+
es-to-primitive: 1.3.0
+
function.prototype.name: 1.1.8
+
get-intrinsic: 1.3.0
+
get-proto: 1.0.1
+
get-symbol-description: 1.1.0
globalthis: 1.0.4
-
gopd: 1.0.1
+
gopd: 1.2.0
has-property-descriptors: 1.0.2
-
has-proto: 1.0.3
-
has-symbols: 1.0.3
+
has-proto: 1.2.0
+
has-symbols: 1.1.0
hasown: 2.0.2
-
internal-slot: 1.0.7
-
is-array-buffer: 3.0.4
+
internal-slot: 1.1.0
+
is-array-buffer: 3.0.5
is-callable: 1.2.7
-
is-data-view: 1.0.1
-
is-negative-zero: 2.0.3
-
is-regex: 1.1.4
-
is-shared-array-buffer: 1.0.3
-
is-string: 1.0.7
-
is-typed-array: 1.1.13
-
is-weakref: 1.0.2
-
object-inspect: 1.13.2
+
is-data-view: 1.0.2
+
is-regex: 1.2.1
+
is-shared-array-buffer: 1.0.4
+
is-string: 1.1.1
+
is-typed-array: 1.1.15
+
is-weakref: 1.1.1
+
math-intrinsics: 1.1.0
+
object-inspect: 1.13.4
object-keys: 1.1.1
-
object.assign: 4.1.5
-
regexp.prototype.flags: 1.5.3
-
safe-array-concat: 1.1.2
-
safe-regex-test: 1.0.3
-
string.prototype.trim: 1.2.9
-
string.prototype.trimend: 1.0.8
+
object.assign: 4.1.7
+
own-keys: 1.0.1
+
regexp.prototype.flags: 1.5.4
+
safe-array-concat: 1.1.3
+
safe-push-apply: 1.0.0
+
safe-regex-test: 1.1.0
+
set-proto: 1.0.0
+
string.prototype.trim: 1.2.10
+
string.prototype.trimend: 1.0.9
string.prototype.trimstart: 1.0.8
-
typed-array-buffer: 1.0.2
-
typed-array-byte-length: 1.0.1
-
typed-array-byte-offset: 1.0.2
-
typed-array-length: 1.0.6
-
unbox-primitive: 1.0.2
-
which-typed-array: 1.1.15
+
typed-array-buffer: 1.0.3
+
typed-array-byte-length: 1.0.3
+
typed-array-byte-offset: 1.0.4
+
typed-array-length: 1.0.7
+
unbox-primitive: 1.1.0
+
which-typed-array: 1.1.19
-
es-define-property@1.0.0:
-
dependencies:
-
get-intrinsic: 1.2.4
+
es-define-property@1.0.1: {}
es-errors@1.3.0: {}
-
es-iterator-helpers@1.1.0:
+
es-iterator-helpers@1.2.1:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
es-set-tostringtag: 2.0.3
+
es-set-tostringtag: 2.1.0
function-bind: 1.1.2
-
get-intrinsic: 1.2.4
+
get-intrinsic: 1.3.0
globalthis: 1.0.4
+
gopd: 1.2.0
has-property-descriptors: 1.0.2
-
has-proto: 1.0.3
-
has-symbols: 1.0.3
-
internal-slot: 1.0.7
-
iterator.prototype: 1.1.3
-
safe-array-concat: 1.1.2
+
has-proto: 1.2.0
+
has-symbols: 1.1.0
+
internal-slot: 1.1.0
+
iterator.prototype: 1.1.5
+
safe-array-concat: 1.1.3
-
es-object-atoms@1.0.0:
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
-
es-set-tostringtag@2.0.3:
+
es-set-tostringtag@2.1.0:
dependencies:
-
get-intrinsic: 1.2.4
+
es-errors: 1.3.0
+
get-intrinsic: 1.3.0
has-tostringtag: 1.0.2
hasown: 2.0.2
-
es-shim-unscopables@1.0.2:
+
es-shim-unscopables@1.1.0:
dependencies:
hasown: 2.0.2
-
es-to-primitive@1.2.1:
+
es-to-primitive@1.3.0:
dependencies:
is-callable: 1.2.7
-
is-date-object: 1.0.5
-
is-symbol: 1.0.4
+
is-date-object: 1.1.0
+
is-symbol: 1.1.1
esbuild-copy-static-files@0.1.0: {}
···
escape-string-regexp@4.0.0: {}
-
eslint-config-prettier@9.1.0(eslint@9.12.0):
+
eslint-config-prettier@9.1.0(eslint@9.23.0(jiti@2.4.2)):
dependencies:
-
eslint: 9.12.0
+
eslint: 9.23.0(jiti@2.4.2)
-
eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.12.0))(eslint@9.12.0)(prettier@3.1.0):
+
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):
dependencies:
-
eslint: 9.12.0
+
eslint: 9.23.0(jiti@2.4.2)
prettier: 3.1.0
prettier-linter-helpers: 1.0.0
-
synckit: 0.9.2
+
synckit: 0.11.1
optionalDependencies:
-
eslint-config-prettier: 9.1.0(eslint@9.12.0)
+
'@types/eslint': 9.6.1
+
eslint-config-prettier: 9.1.0(eslint@9.23.0(jiti@2.4.2))
-
eslint-plugin-react@7.37.1(eslint@9.12.0):
+
eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.4.2)):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
-
array.prototype.flatmap: 1.3.2
+
array.prototype.flatmap: 1.3.3
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
-
es-iterator-helpers: 1.1.0
-
eslint: 9.12.0
+
es-iterator-helpers: 1.2.1
+
eslint: 9.23.0(jiti@2.4.2)
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
minimatch: 3.1.2
-
object.entries: 1.1.8
+
object.entries: 1.1.9
object.fromentries: 2.0.8
-
object.values: 1.2.0
+
object.values: 1.2.1
prop-types: 15.8.1
resolve: 2.0.0-next.5
semver: 6.3.1
-
string.prototype.matchall: 4.0.11
+
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
-
eslint-scope@8.1.0:
+
eslint-scope@8.3.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {}
-
eslint-visitor-keys@4.1.0: {}
+
eslint-visitor-keys@4.2.0: {}
-
eslint@9.12.0:
+
eslint@9.23.0(jiti@2.4.2):
dependencies:
-
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0)
-
'@eslint-community/regexpp': 4.11.1
-
'@eslint/config-array': 0.18.0
-
'@eslint/core': 0.6.0
-
'@eslint/eslintrc': 3.1.0
-
'@eslint/js': 9.12.0
-
'@eslint/plugin-kit': 0.2.0
-
'@humanfs/node': 0.16.5
+
'@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2))
+
'@eslint-community/regexpp': 4.12.1
+
'@eslint/config-array': 0.19.2
+
'@eslint/config-helpers': 0.2.1
+
'@eslint/core': 0.12.0
+
'@eslint/eslintrc': 3.3.1
+
'@eslint/js': 9.23.0
+
'@eslint/plugin-kit': 0.2.8
+
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
-
'@humanwhocodes/retry': 0.3.1
+
'@humanwhocodes/retry': 0.4.2
'@types/estree': 1.0.6
'@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
-
cross-spawn: 7.0.3
-
debug: 4.3.4
+
cross-spawn: 7.0.6
+
debug: 4.4.0
escape-string-regexp: 4.0.0
-
eslint-scope: 8.1.0
-
eslint-visitor-keys: 4.1.0
-
espree: 10.2.0
-
esquery: 1.5.0
+
eslint-scope: 8.3.0
+
eslint-visitor-keys: 4.2.0
+
espree: 10.3.0
+
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
-
ignore: 5.3.0
+
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
···
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
-
text-table: 0.2.0
+
optionalDependencies:
+
jiti: 2.4.2
transitivePeerDependencies:
- supports-color
-
espree@10.2.0:
+
espree@10.3.0:
dependencies:
-
acorn: 8.12.1
-
acorn-jsx: 5.3.2(acorn@8.12.1)
-
eslint-visitor-keys: 4.1.0
+
acorn: 8.14.1
+
acorn-jsx: 5.3.2(acorn@8.14.1)
+
eslint-visitor-keys: 4.2.0
-
esquery@1.5.0:
+
esquery@1.6.0:
dependencies:
estraverse: 5.3.0
···
dependencies:
reusify: 1.0.4
+
fdir@6.4.3(picomatch@4.0.2):
+
optionalDependencies:
+
picomatch: 4.0.2
+
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
···
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
+
+
find-up-simple@1.0.1: {}
find-up@5.0.0:
dependencies:
···
flatted@3.2.9: {}
-
for-each@0.3.3:
+
for-each@0.3.5:
dependencies:
is-callable: 1.2.7
function-bind@1.1.2: {}
-
function.prototype.name@1.1.6:
+
function.prototype.name@1.1.8:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-abstract: 1.23.3
functions-have-names: 1.2.3
+
hasown: 2.0.2
+
is-callable: 1.2.7
functions-have-names@1.2.3: {}
-
get-intrinsic@1.2.4:
+
fzf@0.5.2: {}
+
+
get-intrinsic@1.3.0:
dependencies:
+
call-bind-apply-helpers: 1.0.2
+
es-define-property: 1.0.1
es-errors: 1.3.0
+
es-object-atoms: 1.1.1
function-bind: 1.1.2
-
has-proto: 1.0.3
-
has-symbols: 1.0.3
+
get-proto: 1.0.1
+
gopd: 1.2.0
+
has-symbols: 1.1.0
hasown: 2.0.2
+
math-intrinsics: 1.1.0
-
get-symbol-description@1.0.2:
+
get-proto@1.0.1:
dependencies:
-
call-bind: 1.0.7
+
dunder-proto: 1.0.1
+
es-object-atoms: 1.1.1
+
+
get-symbol-description@1.1.0:
+
dependencies:
+
call-bound: 1.0.4
es-errors: 1.3.0
-
get-intrinsic: 1.2.4
+
get-intrinsic: 1.3.0
glob-parent@5.1.2:
dependencies:
···
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
-
gopd: 1.0.1
+
gopd: 1.2.0
-
gopd@1.0.1:
-
dependencies:
-
get-intrinsic: 1.2.4
+
gopd@1.2.0: {}
graphemer@1.4.0: {}
-
has-bigints@1.0.2: {}
+
has-bigints@1.1.0: {}
has-flag@4.0.0: {}
has-property-descriptors@1.0.2:
dependencies:
-
es-define-property: 1.0.0
+
es-define-property: 1.0.1
-
has-proto@1.0.3: {}
+
has-proto@1.2.0:
+
dependencies:
+
dunder-proto: 1.0.1
-
has-symbols@1.0.3: {}
+
has-symbols@1.1.0: {}
has-tostringtag@1.0.2:
dependencies:
-
has-symbols: 1.0.3
+
has-symbols: 1.1.0
hasown@2.0.2:
dependencies:
···
ieee754@1.2.1: {}
-
ignore@5.3.0: {}
-
ignore@5.3.2: {}
import-fresh@3.3.0:
···
imurmurhash@0.1.4: {}
-
internal-slot@1.0.7:
+
internal-slot@1.1.0:
dependencies:
es-errors: 1.3.0
hasown: 2.0.2
-
side-channel: 1.0.6
+
side-channel: 1.1.0
-
is-array-buffer@3.0.4:
+
is-array-buffer@3.0.5:
dependencies:
-
call-bind: 1.0.7
-
get-intrinsic: 1.2.4
+
call-bind: 1.0.8
+
call-bound: 1.0.4
+
get-intrinsic: 1.3.0
-
is-async-function@2.0.0:
+
is-async-function@2.1.1:
dependencies:
+
async-function: 1.0.0
+
call-bound: 1.0.4
+
get-proto: 1.0.1
has-tostringtag: 1.0.2
+
safe-regex-test: 1.1.0
-
is-bigint@1.0.4:
+
is-bigint@1.1.0:
dependencies:
-
has-bigints: 1.0.2
+
has-bigints: 1.1.0
-
is-boolean-object@1.1.2:
+
is-boolean-object@1.2.2:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
has-tostringtag: 1.0.2
is-callable@1.2.7: {}
-
is-core-module@2.15.1:
+
is-core-module@2.16.1:
dependencies:
hasown: 2.0.2
-
is-data-view@1.0.1:
+
is-data-view@1.0.2:
dependencies:
-
is-typed-array: 1.1.13
+
call-bound: 1.0.4
+
get-intrinsic: 1.3.0
+
is-typed-array: 1.1.15
-
is-date-object@1.0.5:
+
is-date-object@1.1.0:
dependencies:
+
call-bound: 1.0.4
has-tostringtag: 1.0.2
is-extglob@2.1.1: {}
-
is-finalizationregistry@1.0.2:
+
is-finalizationregistry@1.1.1:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
-
is-generator-function@1.0.10:
+
is-generator-function@1.1.0:
dependencies:
+
call-bound: 1.0.4
+
get-proto: 1.0.1
has-tostringtag: 1.0.2
+
safe-regex-test: 1.1.0
is-glob@4.0.3:
dependencies:
···
is-map@2.0.3: {}
-
is-negative-zero@2.0.3: {}
-
-
is-number-object@1.0.7:
+
is-number-object@1.1.1:
dependencies:
+
call-bound: 1.0.4
has-tostringtag: 1.0.2
is-number@7.0.0: {}
-
is-regex@1.1.4:
+
is-regex@1.2.1:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
+
gopd: 1.2.0
has-tostringtag: 1.0.2
+
hasown: 2.0.2
is-set@2.0.3: {}
-
is-shared-array-buffer@1.0.3:
+
is-shared-array-buffer@1.0.4:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
-
is-string@1.0.7:
+
is-string@1.1.1:
dependencies:
+
call-bound: 1.0.4
has-tostringtag: 1.0.2
-
is-symbol@1.0.4:
+
is-symbol@1.1.1:
dependencies:
-
has-symbols: 1.0.3
+
call-bound: 1.0.4
+
has-symbols: 1.1.0
+
safe-regex-test: 1.1.0
-
is-typed-array@1.1.13:
+
is-typed-array@1.1.15:
dependencies:
-
which-typed-array: 1.1.15
+
which-typed-array: 1.1.19
is-weakmap@2.0.2: {}
-
is-weakref@1.0.2:
+
is-weakref@1.1.1:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
-
is-weakset@2.0.3:
+
is-weakset@2.0.4:
dependencies:
-
call-bind: 1.0.7
-
get-intrinsic: 1.2.4
+
call-bound: 1.0.4
+
get-intrinsic: 1.3.0
isarray@2.0.5: {}
isexe@2.0.0: {}
-
iterator.prototype@1.1.3:
+
iterator.prototype@1.1.5:
dependencies:
-
define-properties: 1.2.1
-
get-intrinsic: 1.2.4
-
has-symbols: 1.0.3
-
reflect.getprototypeof: 1.0.6
+
define-data-property: 1.1.4
+
es-object-atoms: 1.1.1
+
get-intrinsic: 1.3.0
+
get-proto: 1.0.1
+
has-symbols: 1.1.0
set-function-name: 2.0.2
+
+
jiti@2.4.2: {}
js-tokens@4.0.0: {}
···
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.8
-
array.prototype.flat: 1.3.2
-
object.assign: 4.1.5
-
object.values: 1.2.0
+
array.prototype.flat: 1.3.3
+
object.assign: 4.1.7
+
object.values: 1.2.1
keyv@4.5.4:
dependencies:
···
dependencies:
js-tokens: 4.0.0
+
math-intrinsics@1.1.0: {}
+
merge2@1.4.1: {}
meriyah@6.0.1: {}
···
dependencies:
braces: 3.0.3
picomatch: 2.3.1
+
+
mimic-function@5.0.1: {}
minimatch@3.1.2:
dependencies:
···
dependencies:
brace-expansion: 2.0.1
-
ms@2.1.2: {}
+
ms@2.1.3: {}
nanotar@0.1.1: {}
natural-compare@1.4.0: {}
+
+
node-fetch-native@1.6.6: {}
object-assign@4.1.1: {}
-
object-inspect@1.13.2: {}
+
object-inspect@1.13.4: {}
object-keys@1.1.1: {}
-
object.assign@4.1.5:
+
object.assign@4.1.7:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
has-symbols: 1.0.3
+
es-object-atoms: 1.1.1
+
has-symbols: 1.1.0
object-keys: 1.1.1
-
object.entries@1.1.8:
+
object.entries@1.1.9:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-object-atoms: 1.0.0
+
es-object-atoms: 1.1.1
object.fromentries@2.0.8:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
-
es-object-atoms: 1.0.0
+
es-abstract: 1.23.9
+
es-object-atoms: 1.1.1
-
object.values@1.2.0:
+
object.values@1.2.1:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-object-atoms: 1.0.0
+
es-object-atoms: 1.1.1
+
+
ofetch@1.4.1:
+
dependencies:
+
destr: 2.0.4
+
node-fetch-native: 1.6.6
+
ufo: 1.5.4
+
+
onetime@7.0.0:
+
dependencies:
+
mimic-function: 5.0.1
optionator@0.9.3:
dependencies:
···
prelude-ls: 1.2.1
type-check: 0.4.0
+
own-keys@1.0.1:
+
dependencies:
+
get-intrinsic: 1.3.0
+
object-keys: 1.1.1
+
safe-push-apply: 1.0.0
+
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
···
dependencies:
p-limit: 3.1.0
+
package-manager-detector@1.1.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
···
path-parse@1.0.7: {}
+
pathe@2.0.3: {}
+
picomatch@2.3.1: {}
-
possible-typed-array-names@1.0.0: {}
+
picomatch@4.0.2: {}
+
+
pnpm-workspace-yaml@0.3.1:
+
dependencies:
+
yaml: 2.7.1
+
+
possible-typed-array-names@1.1.0: {}
prelude-ls@1.2.1: {}
···
punycode@2.3.1: {}
+
quansync@0.2.10: {}
+
queue-microtask@1.2.3: {}
react-is@16.13.1: {}
···
process: 0.11.10
string_decoder: 1.3.0
-
reflect.getprototypeof@1.0.6:
+
reflect.getprototypeof@1.0.10:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
get-intrinsic: 1.2.4
-
globalthis: 1.0.4
-
which-builtin-type: 1.1.4
+
es-object-atoms: 1.1.1
+
get-intrinsic: 1.3.0
+
get-proto: 1.0.1
+
which-builtin-type: 1.2.1
-
regexp.prototype.flags@1.5.3:
+
regexp.prototype.flags@1.5.4:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
es-errors: 1.3.0
+
get-proto: 1.0.1
+
gopd: 1.2.0
set-function-name: 2.0.2
resolve-from@4.0.0: {}
resolve@2.0.0-next.5:
dependencies:
-
is-core-module: 2.15.1
+
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+
restore-cursor@5.1.0:
+
dependencies:
+
onetime: 7.0.0
+
signal-exit: 4.1.0
+
reusify@1.0.4: {}
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
-
safe-array-concat@1.1.2:
+
safe-array-concat@1.1.3:
dependencies:
-
call-bind: 1.0.7
-
get-intrinsic: 1.2.4
-
has-symbols: 1.0.3
+
call-bind: 1.0.8
+
call-bound: 1.0.4
+
get-intrinsic: 1.3.0
+
has-symbols: 1.1.0
isarray: 2.0.5
-
safe-buffer@5.1.2: {}
-
safe-buffer@5.2.1: {}
-
safe-regex-test@1.0.3:
+
safe-push-apply@1.0.0:
+
dependencies:
+
es-errors: 1.3.0
+
isarray: 2.0.5
+
+
safe-regex-test@1.1.0:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
es-errors: 1.3.0
-
is-regex: 1.1.4
+
is-regex: 1.2.1
semver@6.3.1: {}
-
semver@7.6.3: {}
+
semver@7.7.1: {}
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
es-errors: 1.3.0
function-bind: 1.1.2
-
get-intrinsic: 1.2.4
-
gopd: 1.0.1
+
get-intrinsic: 1.3.0
+
gopd: 1.2.0
has-property-descriptors: 1.0.2
set-function-name@2.0.2:
···
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
+
set-proto@1.0.0:
+
dependencies:
+
dunder-proto: 1.0.1
+
es-errors: 1.3.0
+
es-object-atoms: 1.1.1
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
-
side-channel@1.0.6:
+
side-channel-list@1.0.0:
+
dependencies:
+
es-errors: 1.3.0
+
object-inspect: 1.13.4
+
+
side-channel-map@1.0.1:
+
dependencies:
+
call-bound: 1.0.4
+
es-errors: 1.3.0
+
get-intrinsic: 1.3.0
+
object-inspect: 1.13.4
+
+
side-channel-weakmap@1.0.2:
+
dependencies:
+
call-bound: 1.0.4
+
es-errors: 1.3.0
+
get-intrinsic: 1.3.0
+
object-inspect: 1.13.4
+
side-channel-map: 1.0.1
+
+
side-channel@1.1.0:
dependencies:
-
call-bind: 1.0.7
es-errors: 1.3.0
-
get-intrinsic: 1.2.4
-
object-inspect: 1.13.2
+
object-inspect: 1.13.4
+
side-channel-list: 1.0.0
+
side-channel-map: 1.0.1
+
side-channel-weakmap: 1.0.2
+
+
signal-exit@4.1.0: {}
standalone-electron-types@1.0.0:
dependencies:
'@types/node': 18.17.17
-
string.prototype.matchall@4.0.11:
+
string.prototype.matchall@4.0.12:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
es-errors: 1.3.0
-
es-object-atoms: 1.0.0
-
get-intrinsic: 1.2.4
-
gopd: 1.0.1
-
has-symbols: 1.0.3
-
internal-slot: 1.0.7
-
regexp.prototype.flags: 1.5.3
+
es-object-atoms: 1.1.1
+
get-intrinsic: 1.3.0
+
gopd: 1.2.0
+
has-symbols: 1.1.0
+
internal-slot: 1.1.0
+
regexp.prototype.flags: 1.5.4
set-function-name: 2.0.2
-
side-channel: 1.0.6
+
side-channel: 1.1.0
string.prototype.repeat@1.0.0:
dependencies:
define-properties: 1.2.1
-
es-abstract: 1.23.3
+
es-abstract: 1.23.9
-
string.prototype.trim@1.2.9:
+
string.prototype.trim@1.2.10:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
+
define-data-property: 1.1.4
define-properties: 1.2.1
-
es-abstract: 1.23.3
-
es-object-atoms: 1.0.0
+
es-abstract: 1.23.9
+
es-object-atoms: 1.1.1
+
has-property-descriptors: 1.0.2
-
string.prototype.trimend@1.0.8:
+
string.prototype.trimend@1.0.9:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
+
call-bound: 1.0.4
define-properties: 1.2.1
-
es-object-atoms: 1.0.0
+
es-object-atoms: 1.1.1
string.prototype.trimstart@1.0.8:
dependencies:
-
call-bind: 1.0.7
+
call-bind: 1.0.8
define-properties: 1.2.1
-
es-object-atoms: 1.0.0
+
es-object-atoms: 1.1.1
string_decoder@1.3.0:
dependencies:
···
supports-preserve-symlinks-flag@1.0.0: {}
-
synckit@0.9.2:
+
synckit@0.11.1:
+
dependencies:
+
'@pkgr/core': 0.2.0
+
tslib: 2.8.1
+
+
taze@19.0.4:
dependencies:
-
'@pkgr/core': 0.1.1
-
tslib: 2.7.0
+
'@antfu/ni': 24.3.0
+
cac: 6.7.14
+
find-up-simple: 1.0.1
+
ofetch: 1.4.1
+
package-manager-detector: 1.1.0
+
pathe: 2.0.3
+
pnpm-workspace-yaml: 0.3.1
+
restore-cursor: 5.1.0
+
tinyexec: 1.0.1
+
tinyglobby: 0.2.12
+
unconfig: 7.3.1
+
yaml: 2.7.1
+
+
tinyexec@1.0.1: {}
-
text-table@0.2.0: {}
+
tinyglobby@0.2.12:
+
dependencies:
+
fdir: 6.4.3(picomatch@4.0.2)
+
picomatch: 4.0.2
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
-
ts-api-utils@1.3.0(typescript@5.3.2):
+
ts-api-utils@2.1.0(typescript@5.8.2):
dependencies:
-
typescript: 5.3.2
+
typescript: 5.8.2
-
tslib@2.7.0: {}
+
tslib@2.8.1: {}
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
-
typed-array-buffer@1.0.2:
+
typed-array-buffer@1.0.3:
dependencies:
-
call-bind: 1.0.7
+
call-bound: 1.0.4
es-errors: 1.3.0
-
is-typed-array: 1.1.13
+
is-typed-array: 1.1.15
-
typed-array-byte-length@1.0.1:
+
typed-array-byte-length@1.0.3:
dependencies:
-
call-bind: 1.0.7
-
for-each: 0.3.3
-
gopd: 1.0.1
-
has-proto: 1.0.3
-
is-typed-array: 1.1.13
+
call-bind: 1.0.8
+
for-each: 0.3.5
+
gopd: 1.2.0
+
has-proto: 1.2.0
+
is-typed-array: 1.1.15
-
typed-array-byte-offset@1.0.2:
+
typed-array-byte-offset@1.0.4:
dependencies:
available-typed-arrays: 1.0.7
-
call-bind: 1.0.7
-
for-each: 0.3.3
-
gopd: 1.0.1
-
has-proto: 1.0.3
-
is-typed-array: 1.1.13
+
call-bind: 1.0.8
+
for-each: 0.3.5
+
gopd: 1.2.0
+
has-proto: 1.2.0
+
is-typed-array: 1.1.15
+
reflect.getprototypeof: 1.0.10
-
typed-array-length@1.0.6:
+
typed-array-length@1.0.7:
dependencies:
-
call-bind: 1.0.7
-
for-each: 0.3.3
-
gopd: 1.0.1
-
has-proto: 1.0.3
-
is-typed-array: 1.1.13
-
possible-typed-array-names: 1.0.0
+
call-bind: 1.0.8
+
for-each: 0.3.5
+
gopd: 1.2.0
+
is-typed-array: 1.1.15
+
possible-typed-array-names: 1.1.0
+
reflect.getprototypeof: 1.0.10
-
typescript-eslint@8.8.1(eslint@9.12.0)(typescript@5.3.2):
+
typescript-eslint@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
-
'@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)
-
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.3.2)
-
optionalDependencies:
-
typescript: 5.3.2
+
'@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)
+
'@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)
+
'@typescript-eslint/utils': 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
transitivePeerDependencies:
-
- eslint
- supports-color
-
typescript@5.3.2: {}
+
typescript@5.8.2: {}
+
+
ufo@1.5.4: {}
-
unbox-primitive@1.0.2:
+
unbox-primitive@1.1.0:
+
dependencies:
+
call-bound: 1.0.4
+
has-bigints: 1.1.0
+
has-symbols: 1.1.0
+
which-boxed-primitive: 1.1.1
+
+
unconfig@7.3.1:
dependencies:
-
call-bind: 1.0.7
-
has-bigints: 1.0.2
-
has-symbols: 1.0.3
-
which-boxed-primitive: 1.0.2
+
'@quansync/fs': 0.1.2
+
defu: 6.1.4
+
jiti: 2.4.2
+
quansync: 0.2.10
+
+
undici-types@6.20.0: {}
-
undici-types@6.19.8: {}
+
undici-types@6.21.0: {}
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
-
utilium@0.7.1:
+
utilium@1.10.1:
dependencies:
eventemitter3: 5.0.1
+
optionalDependencies:
+
'@xterm/xterm': 5.5.0
-
which-boxed-primitive@1.0.2:
+
which-boxed-primitive@1.1.1:
dependencies:
-
is-bigint: 1.0.4
-
is-boolean-object: 1.1.2
-
is-number-object: 1.0.7
-
is-string: 1.0.7
-
is-symbol: 1.0.4
+
is-bigint: 1.1.0
+
is-boolean-object: 1.2.2
+
is-number-object: 1.1.1
+
is-string: 1.1.1
+
is-symbol: 1.1.1
-
which-builtin-type@1.1.4:
+
which-builtin-type@1.2.1:
dependencies:
-
function.prototype.name: 1.1.6
+
call-bound: 1.0.4
+
function.prototype.name: 1.1.8
has-tostringtag: 1.0.2
-
is-async-function: 2.0.0
-
is-date-object: 1.0.5
-
is-finalizationregistry: 1.0.2
-
is-generator-function: 1.0.10
-
is-regex: 1.1.4
-
is-weakref: 1.0.2
+
is-async-function: 2.1.1
+
is-date-object: 1.1.0
+
is-finalizationregistry: 1.1.1
+
is-generator-function: 1.1.0
+
is-regex: 1.2.1
+
is-weakref: 1.1.1
isarray: 2.0.5
-
which-boxed-primitive: 1.0.2
+
which-boxed-primitive: 1.1.1
which-collection: 1.0.2
-
which-typed-array: 1.1.15
+
which-typed-array: 1.1.19
which-collection@1.0.2:
dependencies:
is-map: 2.0.3
is-set: 2.0.3
is-weakmap: 2.0.2
-
is-weakset: 2.0.3
+
is-weakset: 2.0.4
-
which-typed-array@1.1.15:
+
which-typed-array@1.1.19:
dependencies:
available-typed-arrays: 1.0.7
-
call-bind: 1.0.7
-
for-each: 0.3.3
-
gopd: 1.0.1
+
call-bind: 1.0.8
+
call-bound: 1.0.4
+
for-each: 0.3.5
+
get-proto: 1.0.1
+
gopd: 1.2.0
has-tostringtag: 1.0.2
which@2.0.2:
dependencies:
isexe: 2.0.0
+
yaml@2.7.1: {}
+
yocto-queue@0.1.0: {}
+
+
zustand@5.0.3(@types/react@18.3.20):
+
optionalDependencies:
+
'@types/react': 18.3.20
+31 -1
pnpm-workspace.yaml
···
packages:
-
- "packages/*"
+
- packages/*
+
+
catalogs:
+
dev:
+
esbuild: ^0.19.3
+
esbuild-copy-static-files: ^0.1.0
+
"@types/node": ^22.14.0
+
"@moonlight-mod/eslint-config": "github:moonlight-mod/eslint-config"
+
eslint: ^9.12.0
+
"@types/chrome": ^0.0.313
+
husky: ^8.0.3
+
prettier: ^3.1.0
+
typescript: ^5.3.3
+
taze: ^19.0.4
+
prod:
+
"@moonlight-mod/lunast": ^1.0.1
+
"@moonlight-mod/mappings": ^1.1.25
+
"@moonlight-mod/moonmap": ^1.0.5
+
microdiff: ^1.5.0
+
nanotar: ^0.1.1
+
"@zenfs/core": ^2.0.0
+
"@zenfs/dom": ^1.1.3
+
+
onlyBuiltDependencies:
+
- esbuild
+
+
engineStrict: true
+
strictSsl: true
+
strictDepBuilds: true
+
packageManagerStrict: true
+
registry: https://registry.npmjs.org/
-78
scripts/link.js
···
-
// Janky script to get around pnpm link issues
-
// Probably don't use this. Probably
-
/* eslint-disable no-console */
-
const fs = require("fs");
-
const path = require("path");
-
const child_process = require("child_process");
-
-
const cwd = process.cwd();
-
const onDisk = {
-
"@moonlight-mod/lunast": "../lunast",
-
"@moonlight-mod/moonmap": "../moonmap",
-
"@moonlight-mod/mappings": "../mappings"
-
};
-
-
function exec(cmd, dir) {
-
child_process.execSync(cmd, { cwd: dir, stdio: "inherit" });
-
}
-
-
function getDeps(packageJSON) {
-
const ret = {};
-
Object.assign(ret, packageJSON.dependencies || {});
-
Object.assign(ret, packageJSON.devDependencies || {});
-
Object.assign(ret, packageJSON.peerDependencies || {});
-
return ret;
-
}
-
-
function link(dir) {
-
const packageJSONPath = path.join(dir, "package.json");
-
if (!fs.existsSync(packageJSONPath)) return;
-
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf8"));
-
const deps = getDeps(packageJSON);
-
-
for (const [dep, relativePath] of Object.entries(onDisk)) {
-
const fullPath = path.join(cwd, relativePath);
-
if (deps[dep]) {
-
exec(`pnpm link ${fullPath}`, dir);
-
}
-
}
-
}
-
-
function undo(dir) {
-
exec("pnpm unlink", dir);
-
try {
-
if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) {
-
exec("git restore pnpm-lock.yaml", dir);
-
}
-
} catch {
-
// ignored
-
}
-
}
-
-
const shouldUndo = process.argv.includes("--undo");
-
const packages = fs.readdirSync("./packages");
-
-
for (const path of Object.values(onDisk)) {
-
console.log(path);
-
if (shouldUndo) {
-
undo(path);
-
} else {
-
link(path);
-
}
-
}
-
-
if (shouldUndo) {
-
console.log(cwd);
-
undo(cwd);
-
for (const pkg of packages) {
-
const dir = path.join(cwd, "packages", pkg);
-
console.log(dir);
-
undo(dir);
-
}
-
} else {
-
for (const pkg of packages) {
-
const dir = path.join(cwd, "packages", pkg);
-
console.log(dir);
-
link(dir);
-
}
-
}
+78
scripts/link.mjs
···
+
// Janky script to get around pnpm link issues
+
// Probably don't use this. Probably
+
/* eslint-disable no-console */
+
const fs = require("fs");
+
const path = require("path");
+
const child_process = require("child_process");
+
+
const cwd = process.cwd();
+
const onDisk = {
+
//"@moonlight-mod/lunast": "../lunast",
+
//"@moonlight-mod/moonmap": "../moonmap",
+
"@moonlight-mod/mappings": "../mappings"
+
};
+
+
function exec(cmd, dir) {
+
child_process.execSync(cmd, { cwd: dir, stdio: "inherit" });
+
}
+
+
function getDeps(packageJSON) {
+
const ret = {};
+
Object.assign(ret, packageJSON.dependencies || {});
+
Object.assign(ret, packageJSON.devDependencies || {});
+
Object.assign(ret, packageJSON.peerDependencies || {});
+
return ret;
+
}
+
+
function link(dir) {
+
const packageJSONPath = path.join(dir, "package.json");
+
if (!fs.existsSync(packageJSONPath)) return;
+
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf8"));
+
const deps = getDeps(packageJSON);
+
+
for (const [dep, relativePath] of Object.entries(onDisk)) {
+
const fullPath = path.join(cwd, relativePath);
+
if (deps[dep]) {
+
exec(`pnpm link ${fullPath}`, dir);
+
}
+
}
+
}
+
+
function undo(dir) {
+
exec("pnpm unlink", dir);
+
try {
+
if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) {
+
exec("git restore pnpm-lock.yaml", dir);
+
}
+
} catch {
+
// ignored
+
}
+
}
+
+
const shouldUndo = process.argv.includes("--undo");
+
const packages = fs.readdirSync("./packages");
+
+
for (const path of Object.values(onDisk)) {
+
console.log(path);
+
if (shouldUndo) {
+
undo(path);
+
} else {
+
link(path);
+
}
+
}
+
+
if (shouldUndo) {
+
console.log(cwd);
+
undo(cwd);
+
for (const pkg of packages) {
+
const dir = path.join(cwd, "packages", pkg);
+
console.log(dir);
+
undo(dir);
+
}
+
} else {
+
for (const pkg of packages) {
+
const dir = path.join(cwd, "packages", pkg);
+
console.log(dir);
+
link(dir);
+
}
+
}
-29
scripts/update.js
···
-
// Update dependencies in all packages
-
/* eslint-disable no-console */
-
const fs = require("fs");
-
const path = require("path");
-
const child_process = require("child_process");
-
-
const packageToUpdate = process.argv[2];
-
-
function getDeps(packageJSON) {
-
const ret = {};
-
Object.assign(ret, packageJSON.dependencies || {});
-
Object.assign(ret, packageJSON.devDependencies || {});
-
Object.assign(ret, packageJSON.peerDependencies || {});
-
return ret;
-
}
-
-
function exec(cmd, dir) {
-
child_process.execSync(cmd, { cwd: dir, stdio: "inherit" });
-
}
-
-
for (const package of fs.readdirSync("./packages")) {
-
const packageJSON = JSON.parse(fs.readFileSync(path.join("./packages", package, "package.json"), "utf8"));
-
-
const deps = getDeps(packageJSON);
-
if (Object.keys(deps).includes(packageToUpdate)) {
-
console.log(`Updating ${packageToUpdate} in ${package}`);
-
exec(`pnpm update ${packageToUpdate}`, path.join("./packages", package));
-
}
-
}
+35
tsconfig.base.json
···
+
{
+
"$schema": "https://json.schemastore.org/tsconfig.json",
+
"display": "Base",
+
"_version": "1.0.0",
+
"compilerOptions": {
+
"incremental": true,
+
"target": "ES2022",
+
"jsx": "react",
+
"lib": ["ESNext", "ESNext.Disposable", "DOM", "DOM.Iterable"],
+
"module": "ES2020",
+
"moduleResolution": "Bundler",
+
"resolveJsonModule": true,
+
"allowArbitraryExtensions": false,
+
"allowImportingTsExtensions": true,
+
"allowJs": true,
+
"strict": true,
+
"strictNullChecks": true,
+
+
// disable unreachable code detection because it breaks with esbuild labels
+
"allowUnreachableCode": true,
+
"noFallthroughCasesInSwitch": true,
+
"noImplicitReturns": true,
+
"declaration": true,
+
"declarationMap": true,
+
"outDir": "dist",
+
"sourceMap": true,
+
"stripInternal": true,
+
"esModuleInterop": true,
+
"forceConsistentCasingInFileNames": true,
+
"noErrorTruncation": true,
+
"verbatimModuleSyntax": false,
+
// meriyah has a broken import lol
+
"skipLibCheck": true
+
}
+
}
+7 -16
tsconfig.json
···
{
+
"extends": ["./tsconfig.base.json"],
"compilerOptions": {
-
"target": "es2022",
-
"module": "es2020",
-
"esModuleInterop": true,
-
"forceConsistentCasingInFileNames": true,
-
"strict": true,
-
"moduleResolution": "bundler",
"baseUrl": "./packages/",
-
"jsx": "react",
-
"noEmit": true,
-
-
// meriyah has a broken import lol
-
"skipLibCheck": true,
-
-
// disable unreachable code detection because it breaks with esbuild labels
-
"allowUnreachableCode": true
+
"noEmit": true
},
-
"include": ["./packages/**/*", "./env.d.ts"],
-
"exclude": ["node_modules"]
+
"exclude": [
+
"**/node_modules/**",
+
"**/dist/**",
+
"**/build/**"
+
]
}