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